deepseek-harness/packages
Yichen Jiang 9757224349 fix(subprocess): fence each signal against current process state
Review found the shared observation defeated the very fence it fed:
it carries the original PID-to-start-time pairing forward, so a
recycled PID still matches it and takes a signal meant for the process
that exited. Capturing it outside the per-member try also let one
failed read abort a whole teardown round, breaking the synchronous
host-exit contract, and an empty round paid a read for no members.

signalProcess now reads ProcessInspector.isAlive immediately before
delivering, from the narrowest per-identity source each platform
offers; signalMembers and waitForMembers return before capturing when
a round has no members. snapshot() keeps serving the readiness poll,
whose per-poll table read stays at one.

Windows enumerates Toolhelp32 lazily on the first tree question, so a
snapshot asked only for liveness — the 25 ms teardown poll — performs
no table walk at all.
2026-08-27 15:19:43 +08:00
..
acp Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
api docs(api): refresh configuration type records 2026-08-27 03:28:30 +08:00
attachment docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
boot fix(profile): deduplicate fallback manifest traversal 2026-08-26 00:15:18 +08:00
bundle feat(api): serve settings through Remote controllers 2026-08-27 03:00:49 +08:00
client Merge pull request #3155 from deepseek-harness/feat/web-input-trigger-menu-polish 2026-08-27 10:12:39 +08:00
code-runtime docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
compaction Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
context Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 11:40:56 +08:00
core feat(session): reduce persistence storage size (#3048) 2026-08-26 08:01:07 +00:00
credentials feat(api): serve settings through Remote controllers 2026-08-27 03:00:49 +08:00
e2b docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
examples Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
experimental fix(webworker): scope createRequire dependency discovery 2026-08-26 15:09:49 +08:00
extensions refactor(apiproxy)!: remove settings and credentials RPCs 2026-08-27 03:01:29 +08:00
feedback docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
fs Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
goal Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
guard Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
hooks Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
host style(apiproxy): remove stale spacing 2026-08-27 03:08:53 +08:00
identity docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
interaction Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
jobs Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
llm fix(llm-pi-ai): store the JSON image of a grant payload 2026-08-26 16:37:49 +08:00
lsp docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
mcp Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
plan Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
preset fix(agent-presets): answer health from the walk alone, and keep the reason reachable 2026-08-26 14:42:39 +08:00
runtime-diagnostics docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
sandbox Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
schedule Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
sdk docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
session Merge pull request #3110 from deepseek-harness/worktree/fix-question-drafts-session-switch 2026-08-26 16:10:37 +08:00
session-query Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
settings feat(api): serve settings through Remote controllers 2026-08-27 03:00:49 +08:00
shell Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
skill Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
spill Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
storage docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
subagent docs(subagent): regenerate Remote references 2026-08-26 14:52:53 +08:00
subprocess fix(subprocess): fence each signal against current process state 2026-08-27 15:19:43 +08:00
terminal fix(subprocess): fence each signal against current process state 2026-08-27 15:19:43 +08:00
test-support refactor(client): use settings Remote namespaces 2026-08-27 03:01:02 +08:00
todo Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
typert perf(typert): skip re-verified diagnostics and share analyzer caches in the tsdown plugin 2026-08-26 12:35:04 +08:00
util Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
web Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2731 2026-08-26 10:35:38 +08:00
webhook docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
workflow test(workflow-worker-thread): budget startup waits for the contended Windows pool 2026-08-26 13:28:44 +08:00
workspace docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
AGENTS.md Merge origin/master into worktree/gate-package-subsystem-pages 2026-08-23 15:47:32 +08:00
CLAUDE.md
README.i18n.yaml docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
README.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
README.zh.md docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00

description kind
The DeepSeek Harness package workspace: how the npm packages under packages/ are grouped, what each group owns, and the conventions that bind them. package-group

Packages

English | 中文

Summary

The harness is assembled from npm packages under packages/, grouped by capability family: sessions and the agent loop, model-facing tools, shell and filesystem execution, web access, subagents, and the rest. Use this page as the top-level map: find the owning group, then open its README for the package list. Every package is scoped @deepseek-ai/dsh-* and lives in exactly one group; each group README is the authoritative package map for its family.

Table of Contents


Package groups

Every package lives in exactly one group; new packages join existing groups, and a new group updates its own README and this table.

Group Role
core/ Product API spine: sessions, prompts, tools, agent services, and the concrete loop
api/ Remote BFF assembly and Typert RPC gateway
typert/ Type graph generation, artifact loading, and runtime registry
goal/ Same-session goal persistence and lifecycle
schedule/ Session-local scheduled follow-ups
feedback/ Human feedback capture and command
identity/ Shared anonymous identity
llm/ LLM capability family: abstract service + provider adapters
e2b/ E2B remote-runtime providers
subprocess/ Subprocess capability family: Service Definition + local process-tree provider
shell/ Bash capability family: executor seam, local impl, model-facing tools
terminal/ Persistent PTY capability family: owner-scoped sessions, local implementation, model-facing tools
code-runtime/ Code-execution capability family: Service Definition + worker-thread provider + Code Mode Consumer
sandbox/ Process-confinement seam; bwrap/Landlock/Seatbelt backends
fs/ Filesystem capability family: seam, local impl, model-facing file tools, discovery tools
lsp/ LSP capability family: seam, generic stdio provider, and the lsp tool
skill/ Skill capability family: provider registry, local provider, model-facing catalog/loader
compaction/ Compaction capability family: Service Definition + basic provider + command Consumer
context/ Model-visible request context: workspace instructions, time context, references
subagent/ Subagent capability family: provider-registry contract and model-facing delegation tools
jobs/ Generic background-job runtime and model-facing job control tools
experimental/ Private prototypes and internal-only plugins
workflow/ Workflow seam, worker-thread engine, and model-facing workflow/ralph tools
webhook/ Verified external events, trusted rules, and fire-and-forget Workspace Sessions
web/ Web capability family: seam, search/fetch providers, model-facing web tools
attachment/ Durable attachment identity, validation, local content-addressed storage
spill/ Spill capability family: storage seam, local impl, tool-result spill policy
todo/ The model-facing todo_write tool
plan/ Plan collaboration state with a direct entry command and reviewed exit
preset/ Per-session agent composition from preset cordis.yml files
guard/ Loop-hygiene guards: advisory repeat-call reminders + the tools/execute deadline enforcer
bundle/ Installable dsh --profile patch layers
extensions/ Agent runtime self-modification: live plugin/service inspection and model-written mount/unmount
hooks/ Hook bridges + the shared Claude Code / Codex wire-protocol library
session/ Durable session data plane: persistence seam + backends, projection seam, log-backed titles, session reporting
session-query/ Session retrieval family: logical corpus, bounded reads, lineage, semantic filtering, SQLite full-text search
settings/ User-settings seam + file-backed provider
credentials/ Credential-reference and credential-record seam + env-over-.env provider + authorization flows that ask a human
storage/ Non-session storage hub + backends + domain form
workspace/ Workspace entity
sdk/ Out-of-process SDK: JSON-RPC protocol and TypeScript client/server
acp/ Automation-only Agent Client Protocol server
interaction/ Human-collaboration plane: approval/interaction seams, permission preset, commands, ask-user tool
boot/ Shared app-bin boot glue
host/ Web-GUI host half: API gateway + HTTP route server
client/ Web-GUI browser half: shell, wire, object services, slots, ui-* plugins
examples/ Reusable composition bundles for tests and custom deployments
test-support/ Support infrastructure (testkits, invariants, replay, Loader smokes)
runtime-diagnostics/ Runtime diagnostics: package-owned invariant checks and reports
util/ Low-level zero-dependency utilities shared across groups (Branded<B>, home/path helpers, timeout, retention)

Release expectations

Most groups are product — stable API. The exceptions: e2b/ is a POC, experimental/ is unreleased, and examples/, test-support/, runtime-diagnostics/, and util/ are support with lower compatibility expectations.


Dependencies

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

Extension plugins depend on Service Definitions, never concrete providers. 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 separate Service Definition / Service Provider / Consumer roles when they evolve independently; see capability seams.


Package README contracts

Every package README covers purpose, configuration, extension points, and Model Experience unless the model-agnostic omission allowlist exempts it. It also carries ## Known Limitations and Deferred Work or uses its allowlist. Package conventions — exports, service access, invariants, tests — live in packages/AGENTS.md.


Dev Note

Working context for maintainers — click to expand

None.