2nd dokployH
Find a file
Tianyi Cui 06cebf1bf4 fix(scope): make the dispatch carrier method-transparent for native-private subjects
ds-review-bot delta-round finding, verified: cordis hands the carrier to
listeners as `this`, and the event declarations type it Scoped<Agent> — so
driving the subject through it (this.send(...) in an agent/* listener) is a
SUPPORTED shape. The withProps-based carrier delegated gets with the PROXY
as receiver, so ReactLoopAgent's send/steer/cancel — which read the
native-private #carrier through a getter — threw TypeError when called that
way (private members do not exist on proxy receivers).

scopeTarget now builds its own proxy: overlay props (the composed filter and
the carrier mark) answer from a null-shadowed literal via hasOwn (`in` would
let Object.prototype's toString/constructor shadow the subject's), every
other get delegates with the BASE as receiver (getters see the real object)
and returns functions bound to the base (method calls execute on the real
receiver), sets land on the base. A proxy-invariant guard reports frozen own
function props unchanged (binding them would violate the get invariant).
This kills the class at the seam — any subject with native privates works,
today's agents and whatever carries them next — instead of patching the one
#carrier field.

Pinned both ways: a scope.spec matrix (native-#private method/getter through
the carrier mutates the real object; set delegation; frozen-own-prop
invariant; overlay non-shadowing) and the bot's exact end-to-end scenario
(an agent/session-start listener calling this.send drives a real turn) —
both fail with TypeError against the withProps carrier.
2026-07-09 14:21:58 +08:00
.agents/skills simplify pre-push skill guidance 2026-07-07 19:17:16 +08:00
.claude docs: accuracy sweep, architecture restructure, two ADRs, review skill 2026-06-13 22:05:34 +08:00
.github/workflows ci: add all-checks-passed aggregate job for branch protection 2026-07-08 10:57:25 +08:00
docs refactor(core): every registry register-method returns the exact effect disposer 2026-07-09 13:05:44 +08:00
examples feat(acp-snapshot): extract the ACP snapshot suite into a support package 2026-07-08 02:38:25 +08:00
packages fix(scope): make the dispatch carrier method-transparent for native-private subjects 2026-07-09 14:21:58 +08:00
scripts docs: fail the event matrix on a zero-dispatcher row; attribute provider-removed 2026-07-09 12:36:18 +08:00
vendor Use explicit ts specifiers for declarations 2026-06-22 06:11:00 +08:00
.gitignore ci: cache eslint lane 2026-07-06 03:07:35 +08:00
AGENTS.md Merge branch 'master' into worktree-node-22-18-compat 2026-07-07 22:46:02 +08:00
CLAUDE.md Initialize repo with README, AGENTS.md, and CLAUDE.md symlink 2026-06-10 22:58:56 +08:00
CONTEXT.md docs: agent-scope RFC, CONTEXT.md glossary, architecture scope section, README sync 2026-07-09 03:01:11 +08:00
eslint.config.mjs ci: ignore doc-typecheck temp dirs during lint 2026-07-06 02:04:32 +08:00
knip.json test(acp-snapshot): fake ACP bin + unit specs to per-file 100% coverage 2026-07-08 02:38:25 +08:00
lefthook.yml Merge parallel pre-push gates into CI scheduler 2026-07-06 01:47:13 +08:00
LICENSE Initialize repo with README, AGENTS.md, and CLAUDE.md symlink 2026-06-10 22:58:56 +08:00
package.json feat(dx): scopeHost, agent-aware ACP presentation, and the scoped-dispatch drift gate 2026-07-09 02:38:54 +08:00
pnpm-lock.yaml fix(subagent): declare the dsh-scope dependency; make the re-assert REPLACE conflicting entries 2026-07-09 05:21:06 +08:00
pnpm-workspace.yaml Reorganize packages into a modular hierarchy 2026-06-20 22:55:20 +08:00
README.i18n.yaml docs: revise graph docs from review 2026-07-05 01:25:58 +08:00
README.md docs: revise graph docs from review 2026-07-05 01:25:58 +08:00
README.zh.md docs: revise graph docs from review 2026-07-05 01:25:58 +08:00
tsconfig.base.json feat: add the code-execution capability seam (ctx.codeRuntime) 2026-07-08 02:17:24 +08:00
tsconfig.build.json feat(scope): dsh-scope scoped-context registration primitive 2026-07-09 00:03:22 +08:00
tsconfig.json feat(scope): dsh-scope scoped-context registration primitive 2026-07-09 00:03:22 +08:00
tsdown.config.ts Merge remote-tracking branch 'origin/master' into feat/adr0016-type-build-check 2026-06-22 00:35:51 +08:00
vitest.config.ts Merge parallel pre-push gates into CI scheduler 2026-07-06 01:47:13 +08:00
vitest.e2e.config.ts Merge parallel pre-push gates into CI scheduler 2026-07-06 01:47:13 +08:00
vitest.snapshot.config.ts feat: one tsconfig.json and different rules 2026-06-19 23:35:47 +08:00

DeepSeek Harness

English | 中文

The DeepSeek Harness SDK is a plugin-based SDK for building agent harnesses.

Development

This monorepo is built on the Cordis framework (vendored as source under vendor/), microkernel-style: everything is a plugin.

pnpm install
pnpm run test          # vitest
pnpm run demo:repl     # REPL agent demo (needs DEEPSEEK_API_KEY)
pnpm run demo:acp      # ACP server agent demo (needs DEEPSEEK_API_KEY)

For humans, start with the development guide for local setup, hooks, environment variables, and quality gates, then read the architecture design and documentation graph index before package work. Local context lives in packages/ and vendor/.

For agents, follow AGENTS.md.