Commit Graph

11281 Commits

Author SHA1 Message Date
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
Tianyi Cui
ce073eeef7 test(windows): enforce native coverage 2026-08-08 18:52:41 +08:00
Tianyi Cui
a6c129a3c6 Merge latest master into native Windows CI 2026-08-08 18:51:13 +08:00
imccyu
22609ea425 Merge pull request #2054 from deepseek-harness/worktree-code-dispatch-tree
refactor(client): localize nested Tool call trees
2026-08-08 18:47:17 +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
Tianyi Cui
9b169f7555 ci: run required checks on native Windows 2026-08-08 18:37:32 +08:00
Huanqi Cao
69fd67bfd8 fix(docs): restore the cli reference pairing record to the multi-line contract after the merge-forward 2026-08-08 18:25:48 +08:00
Huanqi Cao
e9b1c64a38 fix(sandbox): update the missing-runner snapshot for the Windows-aware SANDBOX_UNAVAILABLE text 2026-08-08 18:16:19 +08:00
imccyu
4de2de98e4 fix(client): bound nested Tool call depth 2026-08-08 18:15:34 +08:00
Huanqi Cao
f1af1831ef fix(docs): point the parity note at the implemented windows-pwsh-default note and re-record the pair 2026-08-08 18:10:21 +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
Huanqi Cao
644162d4df fix(docs): re-record the parity note pair hashes after the EOF normalization 2026-08-08 18:03:15 +08:00
imccyu
091b993198 fix(client): harden nested Tool call projection 2026-08-08 17:59:50 +08:00
imccyu
9ed33dfe4f refactor(client): localize nested Tool call trees 2026-08-08 17:59:50 +08:00
Huanqi Cao
c0991f2568 fix(docs): point the parity note at the implemented windows-pwsh-default note and refresh catalogs after the merge-forward 2026-08-08 17:58:35 +08:00
Yichen Jiang
ec9a08bdde Merge remote-tracking branch 'origin/master' into worktree/web-multimodal-image-input
# Conflicts:
#	.agents/notes/implemented/architecture/2026-07-05-reconstructable-requests.i18n.yaml
#	docs/core-data-structures/core.i18n.yaml
#	docs/module-graph.md
#	packages/client/ui-conversation/src/client/chat/AssistantMarkdown.tsx
#	packages/client/ui-conversation/src/client/index.ts
#	packages/compact/compact-basic/README.i18n.yaml
2026-08-08 17:56:53 +08:00
Yichen Jiang
e18aa2745c refactor(scope,agent-presets): per-preset standing mounts over a scope parent chain
A preset is now ONE composition per process, not one per session. The roster
mounts it once under a synthetic standing scope; each agent joins by having
its scope key parented to the mount's. Two mechanisms in dsh-scope carry the
whole change: registration views walk the parent chain (global → preset →
agent, nearest shadowing farthest — ScopedLayers.chainLayers), and scoped
event dispatch admits a listener tagged with an ancestor of the carrier key,
which is what lets a standing composition's plan/compaction/token listeners
observe each agent composed under it while a sibling preset's stay deaf.

The preset plugins already key their state by Session/Agent — they predate
presets and were written for the shared world — so sharing one instance is a
return to their design, not a rewrite. Preset ymls are unchanged: one mount
per preset means one Entry per preset, whose entry-local realms keep two
presets' services apart exactly as they kept two sessions' apart before.

The standing scope hangs off the service's UNTRACED context (selfCtx): a
method invoked through the traceable proxy sees this.ctx rebound to the
caller and carrying its shadow, and a subtree minted from that resolves every
service through the shadow's fiber instead of each entry's own inject store —
preset rows then fail on the very services they declare.

A standing mount survives its agents deliberately. The composition a running
session joined must outlive the file changing or disappearing underneath it;
reclamation happens at whole-tree teardown, and file edits reach only future
generations (the authoring layer swaps the pointer, never disposes a joined
generation).
2026-08-08 17:51:49 +08:00
Huanqi Cao
cc64c729db Merge remote-tracking branch 'origin/feat/windows-pwsh-default' into feat/windows-acl-sandbox
# Conflicts:
#	apps/cli/reference/README.i18n.yaml
#	knip.json
#	packages/sandbox/sandbox-local/package.json
#	pnpm-lock.yaml
#	scripts/check-workspace-constraints.ts
2026-08-08 17:50:39 +08:00
Tianyi Cui
5e0b7571e6 Merge pull request #2059 from deepseek-harness/worktree/browser-gif-evidence-chain-20260808
docs(skills): preserve browser GIF evidence chains
2026-08-08 17:45:48 +08:00
Huanqi Cao
d1b080a68d Merge remote-tracking branch 'origin/master' into HEAD
# Conflicts:
#	.agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.md
#	.agents/notes/implemented/feature/2026-08-05-pwsh-ui-bash-parity.zh.md
#	apps/cli/reference/README.i18n.yaml
2026-08-08 17:42:47 +08:00
Huanqi Cao
07c7e2f0bd fix(sandbox): revoke post-apply grant failures, free init SID allocations, and name the Windows runner in SANDBOX_UNAVAILABLE 2026-08-08 17:39:25 +08:00
Tianyi Cui
40ea07a33b docs(skills): tighten GIF evidence boundaries 2026-08-08 17:35:21 +08:00
Huanqi Cao
43d53d339d fix(pwsh): stamp the calling session's sandbox policy onto pwsh tool calls 2026-08-08 17:30:04 +08:00
Huanqi Cao
abfb933620 feat(sandbox): per-session windows-acl write grant with dual-mode restricting lists and a private temp subdirectory 2026-08-08 17:29:43 +08:00
Tianyi Cui
c21b8f1068 Merge remote-tracking branch 'origin/master' into worktree/browser-gif-evidence-chain-20260808 2026-08-08 17:28:24 +08:00
imccyu
b217fcc5bf Merge pull request #2042 from deepseek-harness/worktree-uitool
cleanup(client): extract Tool presentation ownership
2026-08-08 17:23:25 +08:00
Tianyi Cui
5934bbc32e docs(skills): preserve browser GIF evidence chains 2026-08-08 17:17:14 +08:00
imccyu
871c59c3bc fix(client): address tool tree review 2026-08-08 17:12:54 +08:00
Yichen Jiang
21c3bb1713 Merge remote-tracking branch 'origin/master' into worktree/web-theme-settings-integration-fde706
# Conflicts:
#	docs/module-graph.md
#	packages/client/runtime/README.i18n.yaml
#	packages/client/runtime/tsconfig.json
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/host/apiproxy/README.i18n.yaml
2026-08-08 16:56:49 +08:00
imccyu
3b31b2eba1 fix: ci 2026-08-08 16:53:25 +08:00
imccyu
c5b37f6845 fix(client): keep compact row in conversation package 2026-08-08 16:53:25 +08:00
imccyu
810bfc4b5e fix: ci 2026-08-08 16:53:25 +08:00
imccyu
ab50037b93 fix(client): address tool presentation review 2026-08-08 16:53:24 +08:00
imccyu
9c10925340 fix(docs): align ui-tool package contracts 2026-08-08 16:53:24 +08:00
imccyu
61f3982348 fix: gen docs 2026-08-08 16:53:24 +08:00
imccyu
67c753dcb7 fix(client): restore built Tool presentation snapshots 2026-08-08 16:53:24 +08:00
imccyu
cd64cc7ecd docs(notes): update Tool UI implementation references 2026-08-08 16:53:23 +08:00
imccyu
fafd54fc03 docs(client): record Tool presentation ownership 2026-08-08 16:53:23 +08:00
imccyu
7cc554ef16 cleanup(client): extract Tool presentation into ui-tool 2026-08-08 16:53:23 +08:00
imccyu
1674af147e cleanup(client): detach conversation rows from Tool presentation 2026-08-08 16:53:22 +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
Yichen Jiang
e75a5c6651 Merge pull request #2040 from deepseek-harness/worktree/sidebar-subagent-activity
feat(web): surface subagent activity in sidebar
2026-08-08 16:47:06 +08:00
Tianyi Cui
1576d049ed fix(session-persistence): close batching failure gaps 2026-08-08 16:43:37 +08:00
Yichen Jiang
3b10120d60 Merge remote-tracking branch 'origin/master' into worktree/sidebar-subagent-activity
# Conflicts:
#	packages/client/runtime/README.i18n.yaml
2026-08-08 16:37:29 +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
235a94b179 Merge pull request #1734 from deepseek-harness/codex/unify-landlock-release
refactor(landlock-run): unify workspace and release
2026-08-08 16:22:41 +08:00
Tianyi Cui
1627728eff fix: allow audited publishing repository links 2026-08-08 16:15:00 +08:00
Tianyi Cui
9614bce6c6 docs(graph): refresh session persistence dependency 2026-08-08 16:08:03 +08:00