Commit Graph

686 Commits

Author SHA1 Message Date
imccyu
c330c1cd3e feat: dsh-session-projection-cache — durable projection checkpoints and the cold-read ladder
New package on the domain data form: one session_projcache record per
session (key → {stateVersion, observedSeq, state}), landing beside
workspace.json under the shipped json backend. Write policy: two mandatory
points (turn/end + session disposal) with count/interval throttling between
them (both Config fields required — flush cadence is a deployment choice);
every background write is fail-soft (log + stay stale, self-heal on the
next write or cold read). coldSnapshot(id) runs the read ladder — cached
rows + persistence readFrom from the registry's anchored restore floor +
registry restore + fail-soft write-back — detecting crash-repair-shrunk
logs via the one-below anchor and degrading to a single full re-read.
Mounted in apps/cli/cordis.yml (writeEveryEvents 200 / writeIntervalMs
5000).
2026-07-28 22:25:28 +08:00
imccyu
5cb3b5595a ci: close the post-merge gate debt — runtime closure, dead dep, regenerated artifacts, coverage deferrals
The master merge left the generated catalogs/module graph stale, the
python runtime closure missing dsh-session-projection (now reached
through session-title and tool-todo), and apiproxy holding a dead
session-title dependency (the bespoke title frame is retired). The four
files the merge pushed under the per-file coverage floor (commands
executor + invariant, projection registry drive tails, TUI) join the
existing TODO(gui) deferral block per the GUI-lane policy; the remaining
coverage-run failures reproduce identically on pure origin/master
(environment-bound suites: sdk process exit, TUI PTY timing, workflow
worker timing, title loader slow-boot) and are not this branch's debt.
2026-07-28 10:54:35 +08:00
imccyu
a3bdec4450 Merge remote-tracking branch 'origin/master' into worktree-guifork 2026-07-28 10:23:48 +08:00
imccyu
755ce21334 refactor: brand the command lifecycle pairing id as CommandId
commandId crosses three boundaries (session log, wire admission response,
client flow pairing), so per the branded-id rule it becomes
Branded<'CommandId'>, declared in a new pure @deepseek-ai/dsh-commands/brand
outlet (the dsh-llm/brand shape: type + constructor, no Context merges, so
wire and client programs can name it without loading the host plugin). The
event payloads, CommandExecution, and the executor mint carry the brand; the
wire schema gains commandIdSchema as the domain's single brand-cast point
(the approvals precedent); CommandNode and the fixture's fabrication cast
follow type-only.
2026-07-28 01:37:45 +08:00
Chinesezjc
ca676178b5 Merge branch 'master' into fix/worker-timer-clamp 2026-07-28 01:06:22 +08:00
imccyu
730657375f Merge branch 'master' into worktree/web-session-model-selector 2026-07-28 00:56:56 +08:00
imccyu
af70af4020 Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector 2026-07-28 00:39:24 +08:00
Tianyi Cui
20ded66ffb Merge remote-tracking branch 'origin/master' into worktree/pr703-ci-fix-20260727 2026-07-28 00:24:19 +08:00
Tianyi Cui
cc8f6a30c0 Merge remote-tracking branch 'origin/master' into worktree/pr703-ci-fix-20260727
# Conflicts:
#	docs/architecture.i18n.yaml
#	packages/core/agent-loop/src/agent.ts
2026-07-28 00:23:27 +08:00
Chinesezjc
2677fe04ad Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-28 00:22:25 +08:00
Tianyi Cui
5f49a81514 Merge remote-tracking branch 'origin/master' into worktree/pr717-merge-20260728
# Conflicts:
#	pnpm-workspace.yaml
2026-07-28 00:13:04 +08:00
Chinesezjc
0982cc4fc0 Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-28 00:08:32 +08:00
Tianyi Cui
f6a450102e Merge updated origin/master into feat/tui-master-port 2026-07-27 23:55:53 +08:00
Tianyi Cui
861b7a7b8f Merge branch 'master' into codex/bump-pi-ai-0.82.1 2026-07-27 23:49:33 +08:00
Chinesezjc
7111675b01 Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-27 23:45:05 +08:00
imccyu
2b2840a6e1 fix: mount the session-projection registry in the shipped web composition 2026-07-27 23:38:31 +08:00
Tianyi Cui
f843d2b238 Merge origin/master into feat/tui-master-port 2026-07-27 23:34:56 +08:00
imccyu
63e91dcab0 chore: lockfile entries for the projection client-outlet workspace deps 2026-07-27 23:07:46 +08:00
imccyu
1097330df2 feat: title projection unit in dsh-session-title (key 'title', last-wins over session/title) 2026-07-27 23:07:40 +08:00
imccyu
708d3132cf feat: reshape dsh-session-projection to state-driven units with eager drive 2026-07-27 23:07:16 +08:00
Tianyi Cui
676fd97319 Merge branch 'master' into codex/bump-pi-ai-0.82.1 2026-07-27 23:01:27 +08:00
imccyu
e900ebd4c6 feat: todos session-projection provider in tool-todo (knife-4 domain probe) 2026-07-27 22:58:58 +08:00
imccyu
65e41f1cb0 feat: projections block on the session.history tail page 2026-07-27 22:58:56 +08:00
imccyu
fa331c6399 feat: dsh-session-projection seam package (ctx.sessionProjections registry) 2026-07-27 22:58:56 +08:00
Tianyi Cui
8a952ab433 Merge remote-tracking branch 'origin/master' into worktree/pr628-merge-20260727
# Conflicts:
#	.agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.md
#	docs/architecture.i18n.yaml
#	docs/config-catalog.md
#	docs/cordis-catalog/events.md
#	docs/cordis-catalog/services.md
#	docs/core-data-structures/llm-streaming.i18n.yaml
#	docs/core-data-structures/llm-streaming.md
#	docs/core-data-structures/llm-streaming.zh.md
#	docs/event-producer-consumer.md
#	docs/module-graph.md
#	examples/headless-agent/tests/headless.snapshot.ts
#	packages/compact/compact-basic/tests/compact-loop-repro.spec.ts
#	packages/cordis/tool-cordis/src/api-catalog.ts
#	packages/core/agent-loop/README.md
#	packages/core/agent-loop/src/loop.ts
#	packages/examples/agent-spine-demo/README.md
#	packages/llm/README.md
#	packages/llm/llm-deepseek/src/adapter.ts
#	packages/llm/llm-pi-ai/src/adapter.ts
#	packages/llm/llm-retry/README.md
#	packages/llm/llm/README.md
#	packages/llm/llm/src/index.ts
#	packages/llm/llm/tests/service.spec.ts
#	packages/support/llm-replay/src/index.ts
#	packages/support/llm-replay/tests/llm-replay.spec.ts
2026-07-27 22:44:43 +08:00
Tianyi Cui
55247b80b2 Merge origin/master (tsx lint lanes, session-telemetry-otel example dep) 2026-07-27 22:35:43 +08:00
Tianyi Cui
ed8f9c2808 refactor: rename the backend to dsh-subagent-dsh-sdk
The group's convention is package suffix == provider default
(subagent-acp/'acp', subagent-spawn/'spawn', subagent-fork/'fork'), and the
provider default became dsh-sdk in the last review round — so the package
follows: @deepseek-ai/dsh-subagent-dsh-sdk at
packages/subagent/subagent-dsh-sdk, plugin name subagent-dsh-sdk,
diagnostics prefixed subagent-dsh-sdk:. The dsh echo has precedent
(dsh-llm-deepseek). Directory, fixture path, knip/tsconfig/examples
registrations, catalogs, READMEs (en+zh), and the Agent Note follow; the
sdk-client dispose ladder moves to its own module (src/dispose.ts) with the
deterministic FakeChild tier tests restored alongside it.
2026-07-27 22:17:10 +08:00
Tianyi Cui
87a249106f Merge origin/master: port the SDK stack onto the subprocess seam
Master's #660 replaced dsh-subagent-subprocess with the dsh-subprocess
capability seam (ctx.subprocess + scrubbedParentEnv, tree-scoped teardown)
and moved subagent-acp onto it. Convergence for this branch's packages:

- The shared out-of-process provider vocabulary this branch had grown in
  the deleted library (NO_START_CAPABILITIES, assertPositiveFinite, cwd
  resolution, settleRunResult, subprocessRunHandle) moves into the subagent
  seam package as out-of-process.ts — it enforces subagent-seam contracts,
  not process mechanics, and both out-of-process backends now import it
  from there (subagent-acp keeps master's shape otherwise).
- subagent-sdk spawns THROUGH the SDK client (the subprocess README's
  documented exception for SDK-managed transports) and now applies the
  seam's scrubbedParentEnv() + explicit-env merge in place of the deleted
  buildChildEnv.
- sdk-client inlines the EOF→SIGTERM→SIGKILL ladder as private helpers (it
  runs outside any harness context, so it cannot ride ctx.subprocess).
- The child harness fixture gains the now-required dsh-subprocess-local
  entry for bash-local; the fixture cordis.yml keeps exercising the
  shipped provider default.
2026-07-27 21:52:40 +08:00
Chinesezjc
e5ea0efdfb Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-27 21:45:01 +08:00
kingwl
7d4b984037 Merge remote-tracking branch 'origin/master' into feat/telemetry-otel-plugin
Resolutions: regenerate the conflicted generated docs (cordis services
catalog, event-producer-consumer, module-graph); take master's
packages/README pair and re-insert the telemetry row on both sides;
re-record the README and session-doc translation pairs.
2026-07-27 20:26:21 +08:00
Tianyi Cui
a843c37749 Merge branch 'master' into codex/bump-pi-ai-0.82.1 2026-07-27 19:55:54 +08:00
Chinesezjc
63623a87e3 Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp
# Conflicts:
#	docs/module-graph.md
2026-07-27 19:54:23 +08:00
imccyu
6d8e5fb3a2 Merge branch 'master' into worktree/web-session-model-selector 2026-07-27 19:36:19 +08:00
Tianyi Cui
dd03c88083 Merge commit 'refs/codex-unblock/20260727/pr660-master' into worktree/pr660-merge-20260727
# Conflicts:
#	scripts/doc-budgets.manifest.json
2026-07-27 19:34:55 +08:00
Chinesezjc
e2a20ff8fa Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-27 19:06:26 +08:00
Turtle
4c5f92e0fd feat(tui): personal TUI rework, integrating upstream model reasoning-effort selection
Consolidates the personal dsh-tui customizations (module split into
components/session/extension, prompt template + running-glyph indicator,
copyable transcript, tool-card headers, timing placement, XML tool output,
status/footer rework) and ports upstream's model reasoning-effort selector
(Shift+Tab effort cycling, effort-aware /model, footer, and /status) onto
the personal module layout.
2026-07-27 18:55:13 +08:00
Tianyi Cui
1665ab9884 ci: preserve stores across pnpm action setup
Keep restore-only and self-hosted stores outside pnpm/action-setup's replaceable install directory, resolving the configured path for every paired cache. Pin Yarn 4 for the generated-project e2e so runner images without Corepack do not fall back to Yarn Classic, and update the bilingual decision record.
2026-07-27 18:39:20 +08:00
Chinesezjc
68f325ac48 Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-27 18:29:34 +08:00
Chinesezjc
e6fe489485 Merge remote-tracking branch 'origin/master' into fix/worker-timer-clamp 2026-07-27 18:12:39 +08:00
Tianyi Cui
d897dcc7ea Merge remote-tracking branch 'origin/master' into worktree/pr682-retarget-20260727
# Conflicts:
#	.agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.i18n.yaml
2026-07-27 17:55:56 +08:00
Tianyi Cui
1ee8029bc6 Merge remote-tracking branch 'origin/master' into worktree-process-service-seam 2026-07-27 17:24:20 +08:00
Tianyi Cui
24d2384294 Merge branch 'master' into sdk/ts-client-and-subagent 2026-07-27 17:01:20 +08:00
imccyu
f3ce520317 Merge branch 'master' into worktree/web-session-model-selector 2026-07-27 16:58:35 +08:00
Tianyi Cui
21fe97d19d Merge remote-tracking branch 'origin/master' into worktree-process-service-seam
# Conflicts:
#	docs/architecture.i18n.yaml
#	docs/core-data-structures/core.i18n.yaml
2026-07-27 16:40:07 +08:00
imccyu
9249c5504e Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector 2026-07-27 16:16:17 +08:00
Tianyi Cui
ae18216199 Merge remote-tracking branch 'origin/master' into worktree/pr683-retarget-20260727 2026-07-27 16:03:33 +08:00
Chinesezjc
d3d66926fb fix(code-runtime): reject a maxWallMs above Node's maximum timer delay
`config.maxWallMs` is only checked for positivity, and it is handed to
`setTimeout`, which clamps any delay above 2^31-1 ms to 1 ms. A deployment
configuring a 25-day wall ceiling therefore gets the opposite of what it asked
for: every run times out on the first tick. The runtime now range-checks the
field at load against MAX_TIMER_DELAY_MS from dsh-timeout and throws, so the
misconfiguration fails loud where it is self-contained instead of silently
inverting the budget.

`computeMs` needs no matching bound: it is compared against measured event-loop
utilization rather than fed to a timer.

The test asserts both the rejection and that the boundary value itself loads.
2026-07-27 14:01:15 +08:00
Turtle
a7a369a7be chore(llm): bump pi-ai to 0.82.1 2026-07-27 13:25:45 +08:00
Tianyi Cui
73d2a787a7 Merge branch 'master' into nih-imp-sse 2026-07-27 13:13:57 +08:00
Tianyi Cui
38a05724f4 Merge remote-tracking branch 'origin/master' into worktree-process-service-seam
# Conflicts:
#	apps/cli/package.json
2026-07-27 11:36:03 +08:00