6d9ad62 added `lib/loop.js` — a subclass of the harness `AgentLoop` that moves
per-turn recall out of conversation history and into the system prompt. That
class was never instantiated by anything: the commit proved the pure
`promoteSnapshotSections` function, not that a replacement loop can actually be
mounted. This commit adds the two pieces the mount needs.
`cordis.patch.yml` is the overlay that does it, and it is the only artefact that
proves the swap is possible:
- `- id: agent-loop / disabled: true` is mandatory and is addressed by ID, not
by name. `AgentLoop`'s constructor ends with
`ctx.effect(() => ctx.agents.setFactory(this))`
(dsh-agent-loop/lib/index.js:1590) and `setFactory` throws when a factory is
already registered (dsh-agent/lib/index.js:429-437). Leaving the base row
enabled fails startup with "an agent factory is already registered".
- The inserted row reuses the package itself under the `dsh-memory/loop`
subpath, with no `config` block: `HologramAgentLoop` declares no `static
Config`, so it inherits the parent schema and the profile's own `agent-loop`
config rows keep working through the inherited constructor.
`package.json` gains that subpath export plus `lib/loop.js` in `files`. Without
the export the overlay resolves to nothing and the profile cannot boot — the
two changes only work together, which is why they land in one commit.
Measured on this machine with the overlay applied to a headless profile
(`~/.dsh/profiles/headless/cordis.patch.yml`), dsh 0.2.1-rc.2:
- `dsh --profile headless "回答两个字:收到了"` -> exit 0, stdout `收到了`;
`--dump-config` shows `- id: agent-loop` with `disabled: true` alongside
`- id: hologram-agent-loop, name: dsh-memory/loop`.
- A tool round trip returns the tool's output: asking for
`echo TOOL_OK_42` via bash yields `TOOL_OK_42`.
- SIGINT during a long task exits in 1s with code 130, stdout empty.
- The web profile's patch layer is still `[]` — untouched.
npm test: 247 pass, 0 fail.
44 lines
1.2 KiB
JSON
44 lines
1.2 KiB
JSON
{
|
|
"name": "dsh-memory",
|
|
"version": "0.1.0",
|
|
"description": "HologramAgent-style block memory (stablemem) for dsh: sqlite + FTS5 recall, no embedding.",
|
|
"type": "module",
|
|
"main": "lib/index.js",
|
|
"exports": {
|
|
".": "./lib/index.js",
|
|
"./loop": "./lib/loop.js"
|
|
},
|
|
"files": [
|
|
"lib/*.js",
|
|
"lib/loop.js",
|
|
"lib/types/*.d.ts"
|
|
],
|
|
"engines": {
|
|
"node": ">=22.5.0"
|
|
},
|
|
"scripts": {
|
|
"test": "node --test test/store.test.js test/plugin.test.js test/loader.test.js test/phase-b-a.test.js test/phase-b-g.test.js test/phase-b-g-static.test.js test/phase-b-h.test.js test/memory-log.test.js test/loop.test.js",
|
|
"check": "node scripts/checkpoints.js"
|
|
},
|
|
"peerDependencies": {
|
|
"@deepseek-ai/cordis": "^4.0.5",
|
|
"@deepseek-ai/dsh-agent-loop": "0.2.1-rc.2",
|
|
"@deepseek-ai/dsh-llm": "0.2.1-rc.2",
|
|
"@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2",
|
|
"@deepseek-ai/dsh-tools": "0.2.1-rc.2"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"@deepseek-ai/dsh-system-prompt": {
|
|
"optional": true
|
|
},
|
|
"@deepseek-ai/dsh-tools": {
|
|
"optional": true
|
|
},
|
|
"@deepseek-ai/dsh-llm": {
|
|
"optional": true
|
|
}
|
|
},
|
|
"license": "MIT",
|
|
"private": true
|
|
}
|