deepseek-harness/packages
Chinesezjc 4145cd7075 test(web): cover the cursor replay's remaining branches
CI's coverage gate caught `ansi.ts` at 95.31% branches. My local check had
scoped coverage to that one file, which measures a different test set than
the gate does — the gate is the authority and it was right.

Three branches. Two are now pinned, each verified in a real terminal first:

`ab\r` + U+0301 + `x` shows `xb` — the redraw leaves the cursor at column 0,
so a combining mark has no cell to attach to and the terminal shows nothing
for it. It also revealed that the mark was kept when `cursor` was 0, which is
fixed.

`ab\rX\x1b[31m` then a plain line shows `Xb` unstyled and the next line RED:
the mirror of the reset case, where the scan ends styled while the last cell
is not, so the convergence has to OPEN the run at the line end for it to
reach the following line.

The third was `?? ''` on a `String.split` result, which always yields at
least one element — removed rather than tested, since no input can reach it.
2026-07-29 16:20:01 +08:00
..
acp subagent: seed inherited policy events at creation 2026-07-28 21:31:17 +08:00
bash feat(tui)!: consolidate terminal UI improvements 2026-07-29 10:00:29 +08:00
client test(web): cover the cursor replay's remaining branches 2026-07-29 16:20:01 +08:00
code-runtime docs(code-runtime): state the maxWallMs upper bound in the public Config contract 2026-07-27 19:53:57 +08:00
compact Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages 2026-07-28 15:45:53 +08:00
context fix: complete immutable message migration 2026-07-28 14:15:23 +08:00
cordis Merge remote-tracking branch 'origin/master' into web-permission-sandbox-merge-master 2026-07-29 11:16:49 +08:00
core Merge latest master into subagent policy inheritance 2026-07-29 00:40:25 +08:00
examples fix: complete immutable message migration 2026-07-28 14:15:23 +08:00
fs refactor: identify and freeze messages at creation 2026-07-28 13:55:59 +08:00
goal test(goal): close the per-file coverage gaps for the goal surface 2026-07-28 23:48:24 +08:00
guard refactor: identify and freeze messages at creation 2026-07-28 13:55:59 +08:00
hooks Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages 2026-07-28 15:45:53 +08:00
host Merge remote-tracking branch 'origin/master' into feat/web-terminal-card 2026-07-29 14:45:23 +08:00
llm Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages 2026-07-28 15:45:53 +08:00
lsp Merge commit 'refs/codex-unblock/20260727/pr660-master' into worktree/pr660-merge-20260727 2026-07-27 19:34:55 +08:00
mcp Merge branch 'worktree-process-service-seam' into worktree-subprocess-consumers 2026-07-26 22:04:14 +08:00
plan fix(deps): declare dsh-llm as a peer of plan-mode and tool-tasks 2026-07-29 13:14:36 +08:00
pty subagent: seed inherited policy events at creation 2026-07-28 21:31:17 +08:00
sandbox subagent: seed inherited policy events at creation 2026-07-28 21:31:17 +08:00
sdk Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages 2026-07-28 18:49:23 +08:00
session-persistence Merge latest master into subagent policy inheritance 2026-07-29 00:40:25 +08:00
session-projection refactor(session-projection): compact checkpoint row fields to ver/seq/val 2026-07-28 22:45:35 +08:00
session-query Merge latest master into subagent policy inheritance 2026-07-29 00:40:25 +08:00
session-title Merge remote-tracking branch 'origin/master' into xtr/identified-immutable-messages 2026-07-28 18:11:13 +08:00
skill fix: complete immutable message migration 2026-07-28 14:15:23 +08:00
spill refactor: identify and freeze messages at creation 2026-07-28 13:55:59 +08:00
storage docs: translate remaining READMEs 2026-07-26 05:06:39 +08:00
subagent fix(subagent): publish inherited policy facts to telemetry 2026-07-29 00:39:56 +08:00
subprocess Merge remote-tracking branch 'origin/worktree-process-service-seam' into subprocess-simpl/d-one-env-channel 2026-07-27 11:31:38 +08:00
support Merge branch 'master' into worktree/fix-test-mock-server-bin 2026-07-29 01:08:07 +08:00
tasks fix(deps): declare dsh-llm as a peer of plan-mode and tool-tasks 2026-07-29 13:14:36 +08:00
telemetry fix(subagent): publish inherited policy facts to telemetry 2026-07-29 00:39:56 +08:00
timeout docs: translate remaining READMEs 2026-07-26 05:06:39 +08:00
todo Merge branch 'master' into feat/close-todo 2026-07-28 19:45:36 +08:00
ui Merge remote-tracking branch 'origin/master' into web-permission-sandbox-merge-master 2026-07-29 11:16:49 +08:00
util feat(host,client): compose directory picking through slots — dual-face -native, no wire advertisement 2026-07-28 21:51:01 +08:00
web fix(tool-web): bound HTML conversion work 2026-07-27 16:40:02 +08:00
workflow refactor: identify and freeze messages at creation 2026-07-28 13:55:59 +08:00
workspace fix(workspace): make deletion recoverable 2026-07-27 14:37:04 +08:00
AGENTS.md refactor(tools): shapeDispatchLog off the public registry surface 2026-07-26 22:52:15 +08:00
CLAUDE.md Document the codebase thoroughly and tighten type safety 2026-06-11 13:01:00 +08:00
README.i18n.yaml doc(packages): keep the groups table inside its word ceiling after the master merge 2026-07-28 21:52:05 +08:00
README.md doc(packages): keep the groups table inside its word ceiling after the master merge 2026-07-28 21:52:05 +08:00
README.zh.md doc(packages): keep the groups table inside its word ceiling after the master merge 2026-07-28 21:52:05 +08:00

Packages

English | 中文

Packages use the @deepseek-ai/dsh-* scope. Each is a Cordis Service subclass or function plugin; contributions use ctx.effect(), ctx.on(), or ctx.waterfall(). Authoring rules: package and root.

Hierarchy

Packages live at packages/<group>/<pkg>/; groups are containers, while names remain @deepseek-ai/dsh-<pkg>. Each group README is the canonical package/ctx-key map.

Group Role Release expectation
core/ Product API spine: sessions, prompts, tools, agent services, and the concrete loop Product — stable surface
goal/ Persisted same-session goal state and lifecycle Product — stable surface
llm/ LLM capability family: the abstract service + provider adapters Product — stable surface
subprocess/ Subprocess capability family: spawn seam + local process-tree implementation Product — stable surface
bash/ Bash capability family: executor seam, local impl, model-facing tool Product — stable surface
pty/ Persistent PTY capability family: owner-scoped sessions, local implementation, and model-facing tools Product — stable surface
code-runtime/ Code-execution capability family: the runtime seam for model-written programs + a worker-thread backend Product — stable surface
sandbox/ Process-confinement seam; bwrap/Landlock/Seatbelt backends Product — stable surface
fs/ Filesystem capability family: seam, local impl, model-facing file tools, bash-backed discovery tools Product — stable surface
lsp/ LSP capability family: seam, generic stdio provider, and the lsp tool Product — stable surface
skill/ Skill capability family: the provider registry, local provider, and model-facing catalog/loader Product — stable surface
compact/ Compaction capability family: the abstract seam + a basic backend (tool deferred) Product — stable surface
context/ Model-visible request context, including workspace instructions and time context Product — stable surface
subagent/ Subagent capability family: the provider-registry seam and the model-facing delegation tool Product — stable surface
tasks/ Generic background-task runtime and model-facing task_* control tools Product — stable surface
workflow/ Workflow capability family: the script-engine seam, worker-thread engine, and model-facing workflow and fresh-agent ralph tools Product — stable surface
web/ Web capability family: seam, search/fetch provider impls, and the model-facing web tools Product — stable surface
spill/ Spill capability family: storage seam, local impl, tool-result spill policy Product — stable surface
todo/ The model-facing todo_write tool Product — stable surface
plan/ Plan collaboration state with a direct entry command and reviewed exit Product — stable surface
timeout/ Tool-call timeout policy: the tools/execute deadline enforcer Product — stable surface
guard/ Loop-hygiene guards: advisory repeat-call reminders Product — stable surface
cordis/ Self-referential runtime toolset: inspect the live runtime's plugins and services, mount/unmount model-written plugins (design) Product — stable surface
hooks/ Hook bridges + the shared Claude Code / Codex wire-protocol library Product — stable surface
session-persistence/ Persistence seam + JSONL/SQLite backends Product — stable surface
session-projection/ Projection seam: domain fold units serve whole values Product — stable surface
session-query/ Session retrieval family: logical corpus, bounded reads, lineage, event relationships, semantic filtering, and SQLite full-text search Product — stable surface
session-title/ Log-backed session titles: fallback service and opt-in LLM providers Product — stable surface
telemetry/ Session reporting: capture/redact seam, OTel backend Product — stable surface
storage/ Non-session storage hub + backends + domain form Product — stable surface
workspace/ Workspace entity Product — stable surface
sdk/ Project SDK tooling Product — stable surface
acp/ Automation-only Agent Client Protocol server Product — stable surface
ui/ TUI and JSON-RPC integrations, approval/interaction seams, ask-user tool Product — stable surface
host/ Web-GUI host half: API gateway + HTTP route server Product — stable surface
client/ Web-GUI browser half: shell, wire, object services, slots, ui-* plugins Product — stable surface
examples/ Demo bundles (agent-spine + TUI/CLI/ACP/JSON-RPC bins) leaves load Support — example infra
support/ Support infrastructure (testkits, invariants, replay, Loader smokes) Support — lower compatibility expectations
util/ Low-level zero-dependency utilities shared across groups (Branded<B>, Harness home/path helpers, timeout, retention) Support — small, stable, harness-dep-free

Groups distinguish product API from support infrastructure. New packages join an existing group; a new group updates its README and this table.

Dependencies

The dependency graph is generated: docs/module-graph.md (pnpm run gen-module-graph, freshness-gated in CI).

Extension plugins depend on interfaces, never the concrete loop. dsh-agent-loop is swappable; UI, hook, and tool plugins use dsh-agent. Composition bundles, including dsh-agent-spine-demo, may depend on spine plugins. Capabilities split into interface / implementation / consumer packages; see capability seams.

Package READMEs cover purpose, APIs, extension points, and Model Experience unless on the model-agnostic omission allowlist. They also carry ## Known Limitations and Deferred Work or use its allowlist.