Commit Graph

3998 Commits

Author SHA1 Message Date
Yichen Jiang
527eac6ca5 chore(docs): re-record the pairings after the wire merge 2026-08-08 22:52:08 +08:00
Yichen Jiang
64c992238a Merge branch 'stack/agent-profiles-3-wire' into stack/agent-profiles-5-web-ui 2026-08-08 22:51:17 +08:00
Yichen Jiang
d43329d178 chore(docs): re-record the pairings after the seam merge 2026-08-08 22:48:29 +08:00
Yichen Jiang
bcfab57318 Merge branch 'stack/agent-profiles-1-seam' into stack/agent-profiles-3-wire 2026-08-08 22:47:15 +08:00
Yichen Jiang
6ab2d40473 Merge remote-tracking branch 'origin/master' into stack/agent-profiles-1-seam 2026-08-08 22:43:36 +08:00
Hypatia May
ddea7b398e docs: refresh tool catalog after stack merge 2026-08-08 20:02:37 +08:00
Hypatia May
d769d3cbb7 feat(subagent): let ancestors interrupt descendants
interrupt_agent(agent_id) passes the calling agent as the ancestor
authority for ctx.subagents.interrupt(); the service verifies live
registry identity and recorded lineage, so a direct child or deeper
descendant stops with the same generic parameter while send_message keeps
its exact-direct-parent authority.

Discovery: list_agents gains an optional scope. descendants walks the new
SubagentService.listDescendants() — one lineage trace flattened in stable
pre-order across ordinary and one-shot intermediates, each entry carrying
its verified parentId and depth — and every status now comes from the
live Agent registry (running/idle/complete).

Refs #1535
2026-08-08 20:02:37 +08:00
Hypatia May
336c84baf0 docs(subagent): clarify interrupt edge cases 2026-08-08 20:02:36 +08:00
Hypatia May
57e9e6977c docs(subagent): record the public interrupt in the continuation contract docs
The continuable-subagent core-data page and the continuation lifecycle
Agent Note claimed no public subagent cancellation existed; interrupt()
is now that one public stop. Both pages and their Chinese counterparts
state the shipped contract and link the owning interrupt note.

Refs #1535
2026-08-08 20:02:36 +08:00
Hypatia May
66a21a38b1 feat(subagent): add current-turn interrupt RPC
ctx.subagents.interrupt() stops one live continuable child's current turn
via Agent.cancel(cause, { keepInbox: true }) under either a human durable
parent address or an exact live ancestor Agent. Fire-and-return: admission
is synchronous, quiescence is not awaited. Pending inbox work, the
Activation, and published descendants are preserved; only a later waking
send resumes the parked FIFO queue. Absent, one-shot, and disposing
targets are accepted no-ops.

The new Host RPC subagent.interrupt calls only that primitive with user
authority — no catalog, history, persistence, or parent-registry lookup —
so a live child stays stoppable while its parent Agent is offline.

Refs #1535
2026-08-08 20:02:36 +08:00
_Kerman
df30c62e2b fix(agent-loop): latch wakes landing in the cancel-convergence window 2026-08-08 19:42:42 +08:00
Yichen Jiang
01bd8ecefe Merge branch 'stack/agent-profiles-3-wire' into stack/agent-profiles-5-web-ui
recompose becomes a parent re-link: the new preset's standing mount is
ensured BEFORE the link moves, so a failed switch leaves the agent exactly as
it was — the unmount-then-restore dance (and unmountPresetFor with it) is
gone, and the restore-failure test now asserts the agent KEEPS its tools with
the source directory deleted, because the standing mount is not the file.
2026-08-08 18:52:45 +08:00
Yichen Jiang
46649858f6 Merge branch 'stack/agent-profiles-1-seam' into stack/agent-profiles-3-wire
Rewires this layer onto the standing-mount model:

- serviceForAgent roots its search at the agent's standing mount (parent
  scope key → live mount fiber) — the composition no longer lives under the
  agent's own fiber, and two agents on one preset now address ONE instance,
  which the sharing test asserts instead of distinctness.
- viewFor/historyPage take a registry view SCOPE. A live agent is that scope;
  a cold read uses the recorded preset's standing key via standingKeyFor —
  composing plugins but starting no agent, session, or turn. A header without
  a preset (a pre-roster log) renders through the DEFAULT preset's standing
  layer; an unusable preset degrades the read to generic cards, never fails
  it. This turns produced-files and chat-scroll green structurally, with the
  token counts untouched (no resume, so the projections fold stays detached).
- The detached projections baseline now includes every standing unit's key at
  its empty fold (todos: null): the standing mount registers units
  deterministically, which is what makes the client's "omitted key =
  capability absence → clear" rule safe again. seeded-history's contract test
  asserts the new shape.
- The standard preset's realm preamble no longer claims a shared label pools
  instances — provide() throws on the second registration under one realm
  symbol; labels join REALMS.
2026-08-08 18:41:07 +08:00
Yichen Jiang
d770fb21cc docs(scope,agent-presets): standing-mount model, parent chain, and the Agent Note 2026-08-08 18:08:20 +08:00
imccyu
61f3982348 fix: gen docs 2026-08-08 16:53:24 +08:00
Tianyi Cui
a44e35793c Merge pull request #2048 from deepseek-harness/worktree/batch-session-persistence
Batch durable session writes with a bounded delay
2026-08-08 16:51:15 +08:00
Tianyi Cui
41b2fd7a70 Merge pull request #1145 from deepseek-harness/fix/f4-ask-user-child-guard
fix(user-interaction): guard human interaction by runtime ownership
2026-08-08 16:47:24 +08:00
Turtle
bd518cb684 Merge pull request #1696 from deepseek-harness/codex/dsh-badge-plugin
feat: add optional dsh badge skill provider
2026-08-08 16:33:00 +08:00
Yichen Jiang
d174edf9eb Merge pull request #2034 from deepseek-harness/worktree/merge-compact-card
feat(web): merge compact status and summary cards
2026-08-08 16:23:00 +08:00
Tianyi Cui
9614bce6c6 docs(graph): refresh session persistence dependency 2026-08-08 16:08:03 +08:00
Tianyi Cui
8dcbabc3a4 docs: refresh module graph 2026-08-08 16:04:24 +08:00
Tianyi Cui
2268f0ecec Merge origin/master into codex/dsh-badge-plugin 2026-08-08 16:03:30 +08:00
Tianyi Cui
74a8e2e776 Merge remote-tracking branch 'origin/master' into worktree/fix-pr1145-revised-guard-20260808 2026-08-08 16:00:25 +08:00
Tianyi Cui
724a0fb16c Merge remote-tracking branch 'origin/master' into worktree/batch-session-persistence 2026-08-08 15:54:48 +08:00
Tianyi Cui
e3162f3ba6 Merge origin/master into worktree/batch-session-persistence 2026-08-08 15:44:12 +08:00
Tianyi Cui
924c954469 feat(session): bound persistence write batching 2026-08-08 15:43:52 +08:00
Tianyi Cui
6d0a14d428 Merge origin/master into codex/dsh-badge-plugin 2026-08-08 15:42:47 +08:00
Tianyi Cui
e0f113f55b Merge origin/master into codex/dsh-badge-plugin 2026-08-08 15:33:41 +08:00
Tianyi Cui
ed808adef3 Merge remote-tracking branch 'refs/remotes/origin/master' into worktree/fix-pr1145-revised-guard-20260808 2026-08-08 15:30:59 +08:00
Tianyi Cui
dc64c5f1c2 fix: guard human interaction by runtime ownership 2026-08-08 15:30:08 +08:00
Tianyi Cui
ec556b7ced docs: refresh replay config source link 2026-08-08 15:29:36 +08:00
Tianyi Cui
49dff10abd fix(workspace-context): commit projections after tool steps 2026-08-08 15:29:36 +08:00
Tianyi Cui
37e4e1585b fix(compact): enforce replay provenance 2026-08-08 15:28:35 +08:00
Tianyi Cui
8dcfe5c406 fix(replay): mark local compaction calls 2026-08-08 15:28:35 +08:00
Tianyi Cui
d301dbdc7d Merge pull request #1995 from deepseek-harness/worktree/remove-dsh-cli-demo
cleanup(cli): remove separate dsh-cli-demo app
2026-08-08 15:26:56 +08:00
Tianyi Cui
90f9038061 docs(graph): refresh loader-smoke dependencies 2026-08-08 15:14:59 +08:00
Tianyi Cui
be3e4ac455 fix(test): address cli demo cleanup review feedback 2026-08-08 15:08:07 +08:00
Tianyi Cui
dc57f7d854 cleanup(cli): remove dsh-cli-demo 2026-08-08 15:08:07 +08:00
Tianyi Cui
65e5513a28 Merge remote-tracking branch 'origin/master' into worktree/fix-pr1145-revised-guard-20260808
# Conflicts:
#	packages/ui/tool-ask-user/README.i18n.yaml
#	packages/ui/user-interaction/README.i18n.yaml
2026-08-08 15:03:53 +08:00
Tianyi Cui
0411196489 fix(gates): address TypeRT review gaps 2026-08-08 15:03:23 +08:00
Tianyi Cui
f91fd2269d fix(typert): prepare remote contracts for source gates 2026-08-08 15:03:23 +08:00
Yichen Jiang
beec364e04 Merge branch 'stack/agent-profiles-3-wire' into stack/agent-profiles-5-web-ui
The Client API carrier's `agentPresets` member was the one member of its class
without an `IApiClient[...]` annotation. Inferring it inlined `AgentPresetEntry`
into the emitted declaration by the specifier TS picks — the host `index.ts` —
dragging the whole gateway, and with it the host `Context` merges, into every
Client program importing the carrier. Annotated like its siblings.

`ApiRemoteAgentOptions.setup` now takes the inspected session rather than its
header alone: this layer resolves a resumed session's preset from the LOG,
because a session that switched while blank ran its turns under the newer
composition and the header is written once at creation.

Conflicts:
	apps/web/tests/snapshots/*/*.expected.md
	packages/client/ui-conversation/src/client/skeleton/InputBar.tsx
	packages/host/apiproxy/src/api-proxy.ts
	scripts/doc-budgets.manifest.json
2026-08-08 15:00:31 +08:00
Yichen Jiang
7aca4c6b94 Merge branch 'master' into worktree/merge-compact-card 2026-08-08 14:45:55 +08:00
Yichen Jiang
c5ca12eabd Merge branch 'stack/agent-profiles-1-seam' into stack/agent-profiles-3-wire
master extracted this layer's inline cold-resume resolver into
@deepseek-ai/dsh-api-remotes, whose `setup` was a fixed AgentSetup. A resumed
session composes the preset ITS header recorded, so the option becomes a
function of that header; the resolver builds the setup before the published
re-checks so those stay adjacent to `resume`.

Conflicts:
	docs/cordis-catalog/services.md
	docs/module-graph.md
	packages/host/apiproxy/package.json
	packages/host/apiproxy/src/api-proxy.ts
	pnpm-lock.yaml
2026-08-08 14:26:38 +08:00
Yichen Jiang
915a56208d Merge pull request #1977 from deepseek-harness/worktree/pi-ai-per-model-reasoning
feat(llm-pi-ai): per-model reasoning efforts, dialect switches, and modelOverrides in settings.yaml
2026-08-08 14:23:07 +08:00
Tianyi Cui
f32aa54aeb feat(cli)!: make dsh run the headless entrypoint 2026-08-08 14:21:42 +08:00
Yichen Jiang
f50521ac4c Merge pull request #2002 from deepseek-harness/feature/issue-1470-skill-invoke
feat(skill): deterministic user-explicit skill invocation at the pre-step gesture boundary
2026-08-08 14:17:52 +08:00
Tianyi Cui
02d81f8178 Merge pull request #1974 from deepseek-harness/worktree/retire-fixmes-20260807
cleanup: retire FIXMEs without private repository links
2026-08-08 14:14:14 +08:00
Yichen Jiang
1db327ea6c feat(web): merge compact status and summary cards 2026-08-08 14:11:26 +08:00
Yichen Jiang
2afdc68fab chore(docs): regenerate the graphs and re-record the pairings after the master merge 2026-08-08 14:04:53 +08:00