Commit Graph

985 Commits

Author SHA1 Message Date
Dudu-0223
3bed1a644f Merge origin/master into parallel-tool-call 2026-07-16 14:56:02 +08:00
Dudu-0223
91da66e715 refactor(agent-loop): simplify parallel tool-call cap config 2026-07-16 14:36:16 +08:00
Dudu-0223
d0029d8d60 feat(lsp): LSP capability seam, generic stdio provider, and lsp tool
Implements the LSP capability seam RFC as three packages: dsh-lsp (the
ctx.lsp interface — provider registry by branded id + exclusive extension
mapping, per-query order-independent selection, closed request/result
vocabulary, LspError taxonomy), dsh-lsp-local (a generic stdio language-server
provider — Content-Length JSON-RPC framing, per-(provider, workspace) process
single-flight, transient didOpen/query/didClose, an abortable per-instance
queue, UTF-16 negotiation, host-namespace source reads outside ctx.fs, and
bounded shutdown/kill teardown), and dsh-tool-lsp (the model-facing lsp tool —
four operations, one-based UTF-16 cursor conversion, workspace-grouped location
rendering, hover capping, a required session workspace, and a timeout budget).

Why: an agent had text search and file reads but no way to identify a program
symbol — follow an alias, connect an interface to implementations, or read an
inferred type — before changing code. Splitting model contract, seam, and local
subprocess behavior keeps the four semantic queries stable across future remote
or sandbox-native providers without leaking a JSON-RPC escape hatch.
2026-07-16 12:05:35 +08:00
Dudu-0223
3b1d1bfa12 refactor(agent-loop): unify tool-call scheduling on one rolling pool + factory cap default
Run every ordered group through the same rolling pool: an exclusive call is a
pool of one (a barrier), dropping the separate runExclusive path and the
redundant post-grouping executionMode re-query. Behavior is unchanged — the
parallel-tool-calls snapshot and the full scheduler unit suite (barriers, cap,
abort, model-order results) stay green.

Add AgentLoop.Config.maxParallelToolCalls as a factory-wide default applied to
every agent create/createAgent/resume mints (per-agent option overrides it),
forwarded through agent-core so it reaches front doors that expose no cap field
of their own. Trim the isConcurrencySafe JSDoc to the local contract and link
the parallel-tool-call RFC for the full rationale; document the field on the
canonical core-data-structures page.
2026-07-16 11:36:16 +08:00
Tianyi Cui
a5ac5b0ad2 Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop 2026-07-16 11:21:58 +08:00
Tianyi Cui
6a516693a3 Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue 2026-07-16 11:21:57 +08:00
Tianyi Cui
c0c0f8b3a4 Merge branch 'codex/simp-agent-entry-state' into codex/simp-unify-agent-session-id 2026-07-16 11:21:57 +08:00
Tianyi Cui
28641fdc46 Merge branch 'codex/simp-compaction-surface' into codex/simp-agent-entry-state 2026-07-16 11:21:57 +08:00
Tianyi Cui
6825918ead docs: finish session simplification prose cleanup 2026-07-16 11:15:58 +08:00
Hypatia May
a6c8775f12 fix(session): reject sparse provenance arrays 2026-07-16 11:08:59 +08:00
Hypatia May
da48435e8c Merge remote-tracking branch 'origin/token-meter-service' into compact-post-step-overflow-recovery
# Conflicts:
#	docs/architecture.md
2026-07-16 10:14:33 +08:00
Hypatia May
8d0d9bdd1d Merge remote-tracking branch 'origin/compact-tool-pairing' into token-meter-service
# Conflicts:
#	docs/capability-seams.md
#	docs/config-catalog.md
#	docs/cordis-catalog/services.md
#	packages/cordis/tool-cordis/src/api-catalog.ts
2026-07-16 10:04:17 +08:00
Hypatia May
3cccecee0a Merge remote-tracking branch 'origin/master' into compact-tool-pairing
# Conflicts:
#	docs/event-producer-consumer.md
2026-07-16 09:55:02 +08:00
Hypatia May
8184332918 Merge remote-tracking branch 'origin/master' into session-query-trace
# Conflicts:
#	packages/README.md
#	packages/support/invariants/src/index.ts
2026-07-16 09:55:02 +08:00
Yichen Jiang
a621d2f9a6 Merge branch 'master' into codex/project-instruction-files 2026-07-16 09:52:52 +08:00
hypatiamay
5dd37a4f99 Merge branch 'master' into debug-pangwenjie 2026-07-16 09:49:28 +08:00
Tianyi Cui
9da038de7d Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
# Conflicts:
#	docs/cordis-catalog/services.md
#	packages/core/agent-loop/src/index.ts
2026-07-16 02:35:16 +08:00
Tianyi Cui
0decadd5e4 Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue 2026-07-16 02:30:59 +08:00
Tianyi Cui
b2064cba10 fix(agent-loop): reject duplicate configured identities 2026-07-16 02:26:57 +08:00
Tianyi Cui
c2cf2cbbd8 test(agent-loop): name regression contracts 2026-07-16 02:05:44 +08:00
Tianyi Cui
90220b235f docs(core): describe the public loop contract 2026-07-16 01:17:46 +08:00
Tianyi Cui
283b9070e3 Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop 2026-07-16 01:17:36 +08:00
Tianyi Cui
e74399ef04 Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue 2026-07-16 01:16:59 +08:00
Tianyi Cui
a6e406a778 docs(agent-loop): correct identity limitations 2026-07-16 01:16:52 +08:00
Tianyi Cui
60c4d523d1 docs(tools): align schema default contract 2026-07-16 00:59:24 +08:00
Tianyi Cui
2a6fef66ef test(agent-loop): remove review bookkeeping 2026-07-16 00:52:49 +08:00
Tianyi Cui
680395e7f4 Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop 2026-07-16 00:03:13 +08:00
Tianyi Cui
a83847f987 Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue 2026-07-16 00:02:55 +08:00
Tianyi Cui
a48a95edde Merge branch 'codex/simp-compaction-surface' into codex/simp-agent-entry-state 2026-07-16 00:02:54 +08:00
Tianyi Cui
3765abf731 Merge branch 'codex/simp-agent-entry-state' into codex/simp-unify-agent-session-id 2026-07-16 00:02:54 +08:00
Tianyi Cui
70be6c7944 Merge remote-tracking branch 'origin/master' into codex/simp-session-log-representation 2026-07-16 00:02:44 +08:00
Tianyi Cui
c0d6258281 Merge remote-tracking branch 'origin/master' into codex/simp-drop-unused-schema-default 2026-07-16 00:02:38 +08:00
Tianyi Cui
c3c4197040 Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
# Conflicts:
#	packages/bash/tool-bash/src/index.ts
#	packages/bash/tool-bash/tests/integration.spec.ts
#	packages/ui/acp/README.md
2026-07-15 23:34:17 +08:00
Tianyi Cui
694e323403 Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue
# Conflicts:
#	docs/event-producer-consumer.md
#	docs/module-graph.md
#	examples/acp-agent/tests/snapshots/escalation-approved/session.jsonl
#	examples/acp-agent/tests/snapshots/escalation-rejected/session.jsonl
#	examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
#	packages/ui/acp/README.md
2026-07-15 23:32:16 +08:00
Tianyi Cui
6143537d4e Merge branch 'codex/simp-agent-entry-state' into codex/simp-unify-agent-session-id
# Conflicts:
#	docs/cordis-catalog/events.md
#	docs/cordis-catalog/services.md
#	docs/core-data-structures/bash.md
#	docs/core-data-structures/core.md
#	docs/event-producer-consumer.md
#	docs/module-graph.md
#	packages/bash/bash/src/types.ts
#	packages/bash/tool-bash/README.md
#	packages/bash/tool-bash/src/index.ts
#	packages/bash/tool-bash/tests/tools.spec.ts
#	packages/examples/agent-spine-demo/README.md
#	packages/examples/agent-spine-demo/tests/agent-core.spec.ts
#	packages/subagent/tool-subagent/tests/tool-subagent.spec.ts
#	packages/util/brand/README.md
#	packages/util/brand/src/index.ts
2026-07-15 23:29:47 +08:00
Tianyi Cui
c5284205d0 Merge branch 'codex/simp-compaction-surface' into codex/simp-agent-entry-state 2026-07-15 23:21:02 +08:00
Tianyi Cui
08dbb74ce1 Merge remote-tracking branch 'origin/master' into codex/simp-session-log-representation
# Conflicts:
#	docs/tool-catalog.md
#	examples/acp-agent/tests/snapshots/escalation-approved/session.jsonl
#	examples/acp-agent/tests/snapshots/escalation-rejected/session.jsonl
#	examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
#	examples/acp-agent/tests/snapshots/permission-switching/session.jsonl
#	examples/acp-agent/tests/snapshots/permission-switching/system-prompt.golden.md
2026-07-15 23:18:26 +08:00
imccyu
42b07a7022 feat(sdk): add developer project tooling
docs(rfc): propose SDK developer project tooling

feat: rename / docs

ci: fix windows gates

docs: revert
2026-07-15 23:17:29 +08:00
kingwl
1f38b211be Merge origin/master (generic task runtime #219, single-exe closure, package renames)
Semantic resolutions beyond line merges:
- The bash seam keeps resolveMode + the bash/resolve-mode waterfall on
  master's task-free BashExecutor (run/start/resolve only; BashProcess
  handles); tool-bash consults it at its stamping site and escalation
  baseline on master's render/background split, with a waterfall test on
  the recording executor.
- dsh-mode's BASH_FAMILY narrows to ['bash']: bash_output/bash_kill are
  replaced by the kind-generic task_output/task_kill, which span every
  task kind and only observe or stop work, so the access cap withholds
  only the starter it can reason about.
- The plan-mode snapshot suite adopts master's pin grammar (tool-schema
  sidecars; the expectedHeaderSnapshots extension is gone — the exit
  transition deltas, and entering-before-turn-1 needs no second
  snapshot); modes-advertise joins the plan header class (no-model, so
  membership is vacuous). Fixtures re-recorded on the acp-demo bin;
  the replay overlay gains the passthrough sandbox runner.
- examples/plan-acp-agent rewires to @deepseek-ai/dsh-acp-demo and drops
  its tool-bash entry (the spine bundle now composes it); dsh-stdio (the
  renamed stdio-chat home) keeps its /mode command and gains the dsh-mode
  peer edge; the acp bridge keeps the modes surface beside master's
  permission presets.
- mode README gains the Model Experience / Known Limitations sections the
  new README gates require; AGENTS.md ceiling 1370 → 1440 for the kept
  mode/ layout line and Agent efficiency section.
2026-07-15 23:17:18 +08:00
Tianyi Cui
b01647bf95 Merge remote-tracking branch 'origin/master' into codex/simp-drop-unused-schema-default 2026-07-15 23:13:50 +08:00
Tianyi Cui
6c846531e7 Merge current master into PR #106 2026-07-15 22:44:47 +08:00
kingwl
8f5c592b9f fix(session): break chunk runs on time gaps that cannot subtract exactly
Two safe-integer timestamps can differ by more than 2^53-1 (e.g.
MIN_SAFE_INTEGER to MAX_SAFE_INTEGER-1), so the dt subtraction rounds
and the packed row decodes to a timestamp one off the original --
violating the codec's lossless contract. Unreachable from a real clock
(the gap needs ~285k years) but reachable from hand-written fixtures,
and the decoder accepts hand-written rows.

continues() now refuses to extend a run across such a gap (the check is
exact both ways: an in-range true gap subtracts without rounding and
passes; an out-of-range one rounds to an out-of-range value and fails),
splitting the run instead -- whitelist philosophy, compression lost,
data never. The decoder tightens to match the encoder's image: time0
and dt must be safe integers, and reconstructed member seqs/times must
stay in safe range, so float reconstruction is exact wherever
validation passes.

The round-trip property now draws times from the full safe-integer
range (it previously generated only small gaps, which is how this
escaped); the bot's counterexample is pinned as an example test.

Found by ds-review-bot on #338.
2026-07-15 22:44:32 +08:00
kingwl
f408d420da Merge remote-tracking branch 'origin/master' into jsonl-packed-chunk-rows
# Conflicts:
#	docs/event-producer-consumer.md
2026-07-15 22:14:42 +08:00
kingwl
7ef21239ca feat(session): opt-in packed chunk rows in the JSONL log
Providers stream token-sized deltas, so a session log stores hundreds of
near-identical assistant/chunk lines whose JSON envelopes dwarf their
payloads (~56x measured on a real DeepSeek session, 73% of file bytes).

Add a lossless storage codec to dsh-session: packChunkRuns() folds each
run of >=3 consecutive same-block delta chunks into one storage row --
text-chunks / reasoning-chunks / tool-call-chunks, bare slash-less tags
like the header line's 'session' so rows cannot be confused with session
events -- and decodeStorageRecord() expands rows back to the exact
original events (seq0/time0 + dt gap array reconstruct every member's
seq/time; tool-call rows carry the run-constant id/name). The encoder
whitelists exact shapes and stores anything unrecognized verbatim; the
decoder validates row-tagged values and fails loud on malformation.

The JSONL backend gains a packChunks config (default false). Writing
packs only when enabled -- default-off output stays byte-identical to
the previous layout, so snapshot goldens are untouched. Reading is
layout-blind: scanLog always decodes rows and now checks seq contiguity
with a cursor instead of the line index, so packed, unpacked, and mixed
files all load identically. Fixture readers (llm-replay parseSessionLog,
acp-snapshot normalizeSessionLog) share the codec; the normalizer zeroes
a row's time0/dt exactly like an event's time. The two demo bundles
plumb packChunks from cordis.yml to the backend.

Measured on a real coding session: 105 KB -> 42 KB (-60%), 475 lines ->
74, with reasoning/tool-call heavy sessions saving the most. Covered by
example + fast-check round-trip codec tests, backend packed/mixed/torn-
tail specs, and an end-to-end demo run loading a packed log through a
default-config backend.
2026-07-15 21:26:36 +08:00
Yichen Jiang
f47a87fcf5 Merge remote-tracking branch 'origin/master' into worktree/provider-routed-llm-adapters
# Conflicts:
#	docs/config-catalog.md
#	packages/examples/acp-demo/tests/acp-agent.spec.ts
#	packages/examples/stdio-demo/README.md
#	packages/examples/stdio-demo/src/index.ts
#	packages/examples/stdio-demo/tests/stdio-agent.spec.ts
2026-07-15 20:14:09 +08:00
Hypatia May
d66c926d7a fix(agent): preserve lifecycle recovery boundaries (PR3 round 2) 2026-07-15 17:43:33 +08:00
Tianyi Cui
5b814652b3 Merge remote-tracking branch 'origin/master' into codex/simp-drop-unused-schema-default 2026-07-15 17:07:50 +08:00
Tianyi Cui
92bf506fb0 Merge branch 'codex/simp-ui-identity-residue' into codex/simp-hide-concrete-agent-loop
# Conflicts:
#	docs/config-catalog.md
#	packages/core/README.md
2026-07-15 17:06:39 +08:00
Tianyi Cui
3d26e83930 Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue
# Conflicts:
#	AGENTS.md
#	knip.json
#	packages/ui/jsonrpc/README.md
#	scripts/run-gates.ts
2026-07-15 17:06:13 +08:00
Yichen Jiang
ff3d893f74 Merge remote-tracking branch 'origin/master' into codex/project-instruction-files
# Conflicts:
#	AGENTS.md
#	docs/config-catalog.md
#	docs/module-graph.md
#	examples/echo-agent/composition.md
#	packages/README.md
#	packages/core/README.md
#	packages/examples/acp-demo/package.json
#	packages/examples/acp-demo/src/index.ts
#	packages/examples/acp-demo/tests/acp-agent.spec.ts
#	packages/examples/acp-demo/tests/built-bin.e2e.ts
#	packages/examples/acp-demo/tsconfig.json
#	packages/examples/agent-spine-demo/README.md
#	packages/examples/agent-spine-demo/package.json
#	packages/examples/agent-spine-demo/tests/agent-core.spec.ts
#	packages/examples/stdio-demo/package.json
#	packages/examples/stdio-demo/src/index.ts
#	packages/examples/stdio-demo/tests/built-bin.e2e.ts
#	packages/examples/stdio-demo/tests/stdio-agent.spec.ts
#	packages/examples/stdio-demo/tsconfig.json
#	pnpm-lock.yaml
#	python/sdk-runtime/README.i18n.yaml
#	python/sdk-runtime/src/deepseek_harness_runtime/runtime/cordis.yml
#	python/sdk/tests/test_bundled_runtime.py
2026-07-15 17:04:16 +08:00