š¤ refactor: put the artifacts modules that agent-loop files import behind Effect services
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
Research direction
Start with the Phase 5 planās claim 3.5 and the referenced Effect services, then inspect the five listed modules under src/node/services/ and their agent-loop import sites. Move each moduleās host access behind the named services, with Node and test layers, while preserving behavior and persisted files. Check the Phase 5 end check: reach.mjs --phase2 should list only the specified follow-up modules and log.
Written by the indexing model from the issue text.
Description
Summary
Agent-loop files import these modules, and the modules still reach the host directly (fs, os, child_process, writeFileAtomic, a runtime class or a runtime builder). The local/no-host-imports rule checks only the agent-loop files themselves, so it does not see this host access. Phase 5 of the agent-loop refactor does not move these modules: its plan (claim 3.5, decision "reach") keeps one follow-up issue per group. This issue is the artifacts group: the artifact stores.
Modules
| Module | Host refs | Host imports | Imported by agent-loop files at |
|---|---|---|---|
src/node/services/artifactStore.ts |
43 | fs/promises:2 fs:3 | tools/artifact_list.ts:10 |
src/node/services/artifactShelf.ts |
23 | fs/promises:2 utils/writeFileAtomic:17 | tools/artifact.ts:8 tools/artifact_read.ts:6 turnRequestBuilder.ts:2 |
src/node/services/artifactVersionStore.ts |
12 | fs/promises:2 utils/writeFileAtomic:17 | tools/artifact_list.ts:16 |
src/node/services/artifactInteractions.ts |
7 | utils/writeFileAtomic:28 fs/promises:29 | tools/artifact_list.ts:21 |
src/node/services/artifactsOperations.ts |
2 | runtime/runtimeHelpers:17 | tools/artifact.ts:7 tools/artifact_list.ts:9 |
Total: 5 module(s), 87 uses of host bindings. Counts and lines come from reach.mjs --phase2 and reachRefs.mjs of the phase 5 plan, at ba9e451cab (phase 1 changed no file under src/).
Work
Move the host access of each module behind the Effect services that phase 5 adds (HostFiles, HostPaths, HostProcesses, RuntimeFactory, SessionFiles, SessionLocks), with a Node layer and a test layer, and no change in behavior or persisted files.
Trigger
After phase 5 ends (stacks 5a and 5b merged). Phase 5 end check 7 expects reach.mjs --phase2 to list only the 30 follow-up modules of these 8 issues and log.
Refs
- Phase 5 plan v4 ("Host I/O Services for the Xum Agent Loop", artifact
phase5-plan.html), claim 3.5. - Refs #7207 (the
local/no-host-importsrule and its frozen pairs).
Generated with xum ⢠Model: anthropic:claude-opus-5-5 ⢠Thinking: high ⢠Cost: $31.10
- Dominant language
- TypeScript
- Stars
- 2.1k
- Forks
- 140
- Avg merge
- 5h 8m
- Merged PRs (30d)
- 952
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up ā it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from coder/xum
-
š¤ fix: Daytona startAndWait can start a sandbox after its deadline and then report a timeoutOpen
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
coder/xum#7358 Ā· 3 comments Ā·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
coder/xum#7283 Ā· 1 comment Ā·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 70/100
microsoft/playwright#43640 Ā·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
grasshopper-protocol/grsshppr#172 Ā·
Maintainers usually reply within 1 day
-
bug help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Tencent/teamai-cli#1397 Ā·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
DouyinFE/semi-design#3641 Ā·
Maintainers usually reply within 3 days
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 1 day