Implement the agent loop plugin
@deepseek-ai/dsh-agent-loop: LoopAgent (inbox with queued + steering
FIFOs, per-step AbortController) and the streaming-first
session/turn/step loop. Extension seams: agent/request,
agent/step-result, agent/turn-continuation waterfalls; raw chunks
logged for replay while BlockAssembler builds the assembled message;
steering drains between steps; session/flush awaited at turn end.
16 tests with a scripted mock adapter cover turn lifecycle ordering,
tool round-trips, steering, inject(), continuation override/veto,
mid-stream abort, queued turn chaining, replay equivalence, and
mid-turn fiber disposal (HMR safety).
2026-06-11 10:54:31 +08:00
|
|
|
{
|
|
|
|
|
"name": "@deepseek-ai/dsh-agent-loop",
|
|
|
|
|
"description": "The concrete agent loop plugin for the DeepSeek Harness",
|
2026-09-02 15:48:33 +08:00
|
|
|
"version": "0.1.2-alpha.5",
|
2026-08-11 00:02:53 +08:00
|
|
|
"publishConfig": {
|
2026-08-13 18:05:10 +08:00
|
|
|
"access": "public"
|
2026-08-11 00:02:53 +08:00
|
|
|
},
|
|
|
|
|
"repository": {
|
|
|
|
|
"type": "git",
|
|
|
|
|
"url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
|
|
|
|
|
"directory": "packages/core/agent-loop"
|
|
|
|
|
},
|
Implement the agent loop plugin
@deepseek-ai/dsh-agent-loop: LoopAgent (inbox with queued + steering
FIFOs, per-step AbortController) and the streaming-first
session/turn/step loop. Extension seams: agent/request,
agent/step-result, agent/turn-continuation waterfalls; raw chunks
logged for replay while BlockAssembler builds the assembled message;
steering drains between steps; session/flush awaited at turn end.
16 tests with a scripted mock adapter cover turn lifecycle ordering,
tool round-trips, steering, inject(), continuation override/veto,
mid-stream abort, queued turn chaining, replay equivalence, and
mid-turn fiber disposal (HMR safety).
2026-06-11 10:54:31 +08:00
|
|
|
"type": "module",
|
|
|
|
|
"main": "lib/index.js",
|
2026-06-20 00:26:02 +08:00
|
|
|
"types": "lib/types/index.d.ts",
|
Implement the agent loop plugin
@deepseek-ai/dsh-agent-loop: LoopAgent (inbox with queued + steering
FIFOs, per-step AbortController) and the streaming-first
session/turn/step loop. Extension seams: agent/request,
agent/step-result, agent/turn-continuation waterfalls; raw chunks
logged for replay while BlockAssembler builds the assembled message;
steering drains between steps; session/flush awaited at turn end.
16 tests with a scripted mock adapter cover turn lifecycle ordering,
tool round-trips, steering, inject(), continuation override/veto,
mid-stream abort, queued turn chaining, replay equivalence, and
mid-turn fiber disposal (HMR safety).
2026-06-11 10:54:31 +08:00
|
|
|
"exports": {
|
|
|
|
|
".": {
|
2026-06-20 00:26:02 +08:00
|
|
|
"types": "./lib/types/index.d.ts",
|
Implement the agent loop plugin
@deepseek-ai/dsh-agent-loop: LoopAgent (inbox with queued + steering
FIFOs, per-step AbortController) and the streaming-first
session/turn/step loop. Extension seams: agent/request,
agent/step-result, agent/turn-continuation waterfalls; raw chunks
logged for replay while BlockAssembler builds the assembled message;
steering drains between steps; session/flush awaited at turn end.
16 tests with a scripted mock adapter cover turn lifecycle ordering,
tool round-trips, steering, inject(), continuation override/veto,
mid-stream abort, queued turn chaining, replay equivalence, and
mid-turn fiber disposal (HMR safety).
2026-06-11 10:54:31 +08:00
|
|
|
"default": "./lib/index.js"
|
|
|
|
|
},
|
2026-07-19 19:19:57 +08:00
|
|
|
"./invariant": {
|
|
|
|
|
"types": "./lib/types/invariant.d.ts",
|
|
|
|
|
"default": "./lib/invariant.js"
|
|
|
|
|
},
|
Implement the agent loop plugin
@deepseek-ai/dsh-agent-loop: LoopAgent (inbox with queued + steering
FIFOs, per-step AbortController) and the streaming-first
session/turn/step loop. Extension seams: agent/request,
agent/step-result, agent/turn-continuation waterfalls; raw chunks
logged for replay while BlockAssembler builds the assembled message;
steering drains between steps; session/flush awaited at turn end.
16 tests with a scripted mock adapter cover turn lifecycle ordering,
tool round-trips, steering, inject(), continuation override/veto,
mid-stream abort, queued turn chaining, replay equivalence, and
mid-turn fiber disposal (HMR safety).
2026-06-11 10:54:31 +08:00
|
|
|
"./package.json": "./package.json"
|
|
|
|
|
},
|
|
|
|
|
"files": [
|
2026-06-17 23:20:04 +08:00
|
|
|
"lib/index.js",
|
2026-07-19 19:19:57 +08:00
|
|
|
"lib/invariant.js",
|
2026-08-04 22:06:32 +08:00
|
|
|
"lib/types/**/*.d.ts"
|
Implement the agent loop plugin
@deepseek-ai/dsh-agent-loop: LoopAgent (inbox with queued + steering
FIFOs, per-step AbortController) and the streaming-first
session/turn/step loop. Extension seams: agent/request,
agent/step-result, agent/turn-continuation waterfalls; raw chunks
logged for replay while BlockAssembler builds the assembled message;
steering drains between steps; session/flush awaited at turn end.
16 tests with a scripted mock adapter cover turn lifecycle ordering,
tool round-trips, steering, inject(), continuation override/veto,
mid-stream abort, queued turn chaining, replay equivalence, and
mid-turn fiber disposal (HMR safety).
2026-06-11 10:54:31 +08:00
|
|
|
],
|
2026-08-13 01:46:57 +08:00
|
|
|
"license": "MIT",
|
Implement the agent loop plugin
@deepseek-ai/dsh-agent-loop: LoopAgent (inbox with queued + steering
FIFOs, per-step AbortController) and the streaming-first
session/turn/step loop. Extension seams: agent/request,
agent/step-result, agent/turn-continuation waterfalls; raw chunks
logged for replay while BlockAssembler builds the assembled message;
steering drains between steps; session/flush awaited at turn end.
16 tests with a scripted mock adapter cover turn lifecycle ordering,
tool round-trips, steering, inject(), continuation override/veto,
mid-stream abort, queued turn chaining, replay equivalence, and
mid-turn fiber disposal (HMR safety).
2026-06-11 10:54:31 +08:00
|
|
|
"peerDependencies": {
|
2026-08-30 02:29:53 +08:00
|
|
|
"@deepseek-ai/cordis": "workspace:^",
|
2026-08-11 00:16:45 +08:00
|
|
|
"@deepseek-ai/dsh-agent": "workspace:^",
|
|
|
|
|
"@deepseek-ai/dsh-invariants": "workspace:^",
|
|
|
|
|
"@deepseek-ai/dsh-llm": "workspace:^",
|
|
|
|
|
"@deepseek-ai/dsh-scope": "workspace:^",
|
|
|
|
|
"@deepseek-ai/dsh-session": "workspace:^",
|
|
|
|
|
"@deepseek-ai/dsh-session-persistence": "workspace:^",
|
2026-08-19 13:57:58 +08:00
|
|
|
"@deepseek-ai/dsh-session-projection": "workspace:^",
|
|
|
|
|
"@deepseek-ai/dsh-settings": "workspace:^",
|
2026-08-11 00:16:45 +08:00
|
|
|
"@deepseek-ai/dsh-system-prompt": "workspace:^",
|
2026-08-30 02:29:53 +08:00
|
|
|
"@deepseek-ai/dsh-tools": "workspace:^"
|
Implement the agent loop plugin
@deepseek-ai/dsh-agent-loop: LoopAgent (inbox with queued + steering
FIFOs, per-step AbortController) and the streaming-first
session/turn/step loop. Extension seams: agent/request,
agent/step-result, agent/turn-continuation waterfalls; raw chunks
logged for replay while BlockAssembler builds the assembled message;
steering drains between steps; session/flush awaited at turn end.
16 tests with a scripted mock adapter cover turn lifecycle ordering,
tool round-trips, steering, inject(), continuation override/veto,
mid-stream abort, queued turn chaining, replay equivalence, and
mid-turn fiber disposal (HMR safety).
2026-06-11 10:54:31 +08:00
|
|
|
},
|
|
|
|
|
"dependencies": {
|
2026-08-30 02:29:53 +08:00
|
|
|
"@deepseek-ai/dsh-brand": "workspace:^",
|
|
|
|
|
"@deepseek-ai/dsh-util-values": "workspace:^",
|
2026-08-19 13:57:58 +08:00
|
|
|
"@deepseek-ai/schemastery": "workspace:^",
|
|
|
|
|
"zod": "^4.4.3"
|
Implement the agent loop plugin
@deepseek-ai/dsh-agent-loop: LoopAgent (inbox with queued + steering
FIFOs, per-step AbortController) and the streaming-first
session/turn/step loop. Extension seams: agent/request,
agent/step-result, agent/turn-continuation waterfalls; raw chunks
logged for replay while BlockAssembler builds the assembled message;
steering drains between steps; session/flush awaited at turn end.
16 tests with a scripted mock adapter cover turn lifecycle ordering,
tool round-trips, steering, inject(), continuation override/veto,
mid-stream abort, queued turn chaining, replay equivalence, and
mid-turn fiber disposal (HMR safety).
2026-06-11 10:54:31 +08:00
|
|
|
},
|
|
|
|
|
"devDependencies": {
|
2026-08-30 02:29:53 +08:00
|
|
|
"@deepseek-ai/cordis": "workspace:^",
|
2026-06-16 14:55:37 +08:00
|
|
|
"@deepseek-ai/dsh-agent": "workspace:^",
|
|
|
|
|
"@deepseek-ai/dsh-invariants": "workspace:^",
|
|
|
|
|
"@deepseek-ai/dsh-llm": "workspace:^",
|
feat(agent): the agent is a registration scope — Agent.ctx, setup slot, fused scoped dispatch
Every live agent owns a dsh-scope context (Agent.ctx, key = the agent),
minted inside the loop's composite lifecycle effect: registrations through
it are agent-visible and agent-lifetime, and agent.ctx listeners hear only
that agent's dispatches. The composite yields the scope's raw disposer
first (identity-nested, no un-nested window), then session entry (scoped
enter captures the session carrier), then registration; teardown runs
stop/drain -> unregister -> detach session -> unwind scope, keeping
store/registry rollback synchronous on every failure path.
CreateAgentOptions.setup(agentCtx) runs after the scope is minted and the
agent registered, before agent/session-start and the loop start — the slot
where a creator composes the agent's scoped world (persona sections,
restrict(), scoped tools); a throwing setup unwinds inside the rollback
boundary. Setup registers, it never drives.
agentEvents(ctx, agent) fuses the scope carrier with the injected subject
argument for every agent/* dispatch (the correct dispatch is the shortest
spelling); assembleContextFor(agent) pairs the agent DX field with the
scope layer selector. All loop/agent/registry dispatch sites converted;
agent/* event declarations carry this: Scoped<Agent>; ctx.agent is a safe
root accessor defaulting undefined, shadowed by each agent context.
2026-07-09 01:17:47 +08:00
|
|
|
"@deepseek-ai/dsh-scope": "workspace:^",
|
2026-06-16 14:55:37 +08:00
|
|
|
"@deepseek-ai/dsh-session": "workspace:^",
|
2026-06-16 17:04:54 +08:00
|
|
|
"@deepseek-ai/dsh-session-persistence": "workspace:^",
|
2026-06-16 17:01:36 +08:00
|
|
|
"@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^",
|
2026-08-19 13:57:58 +08:00
|
|
|
"@deepseek-ai/dsh-session-projection": "workspace:^",
|
|
|
|
|
"@deepseek-ai/dsh-settings": "workspace:^",
|
2026-06-16 14:55:37 +08:00
|
|
|
"@deepseek-ai/dsh-system-prompt": "workspace:^",
|
2026-08-30 02:29:53 +08:00
|
|
|
"@deepseek-ai/dsh-tools": "workspace:^"
|
Implement the agent loop plugin
@deepseek-ai/dsh-agent-loop: LoopAgent (inbox with queued + steering
FIFOs, per-step AbortController) and the streaming-first
session/turn/step loop. Extension seams: agent/request,
agent/step-result, agent/turn-continuation waterfalls; raw chunks
logged for replay while BlockAssembler builds the assembled message;
steering drains between steps; session/flush awaited at turn end.
16 tests with a scripted mock adapter cover turn lifecycle ordering,
tool round-trips, steering, inject(), continuation override/veto,
mid-stream abort, queued turn chaining, replay equivalence, and
mid-turn fiber disposal (HMR safety).
2026-06-11 10:54:31 +08:00
|
|
|
}
|
|
|
|
|
}
|