Commit Graph

3567 Commits

Author SHA1 Message Date
Yichen Jiang b6bdfc1426 Merge branch 'stack/agent-profiles-5-web-ui' of github.com:deepseek-harness/deepseek-harness into stack/agent-profiles-8-authoring 2026-08-09 00:32:14 +08:00
Yichen Jiang fb268e0006 Merge branch 'stack/agent-profiles-3-wire' into stack/agent-profiles-5-web-ui 2026-08-09 00:31:05 +08:00
Yichen Jiang 7507697c92 Merge branch 'mergefwd-1-seam' into mergefwd-3-wire 2026-08-09 00:27:40 +08:00
Yichen Jiang dbd2d75cad Merge remote-tracking branch 'origin/master' into stack/agent-profiles-1-seam 2026-08-09 00:23:11 +08:00
Tianyi Cui 9f2a6d6fff Merge pull request #1978 from deepseek-harness/worktree/unify-github-label-taxonomy
cleanup: unify GitHub label taxonomy
2026-08-08 23:24:38 +08:00
Yichen Jiang c0522f21d9 Merge branch 'stack/agent-profiles-5-web-ui' into stack/agent-profiles-8-authoring 2026-08-08 22:54:07 +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 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
Yichen Jiang b77fb9036c refactor(agent-presets,web): copy-only preset authoring with a path to the files
The web YAML editor is gone. agentPreset.write (arbitrary composition
text) became agentPreset.copy { from, agentPreset, name? }: a host-side
whole-directory copy of ids the host resolves itself — symlinks
dereferenced, modes re-tightened to owner-only with owner-execute kept,
metadata rewritten to keep the source's description but never its name or
roster order. No composition text or path crosses the wire in either
authoring direction, and the entryListSchema/!!js concern dissolves with
assertComposition itself.

The settings section becomes: a read-only viewer over shipped
compositions, a copy dialog (id + optional display name) as the only
create entry, delete for custom rows, and a location action leading into
the preset's own files — agentPreset.openDocument { agentPreset } resolves
the directory host-side and opens it natively, or answers
{ opened: false, path } for the row to show as text where the deployment
has no desktop. agentPreset.list reports hasDocument beside authorable;
the gateway's nativeOpen config pins the capability where
canOpenNativePath platform detection would mislead. The privileged set is
now read/copy/openDocument/remove.

With files as the only composition editor, standing mounts grew
stamp-keyed generations: ensureStanding compares the composition file's
mtime+size and starts the next generation for later sessions, while every
joined session keeps the generation it runs on.

New keyless web lane (agent-preset-authoring, overlay pins
nativeOpen: false so goldens render one branch on every platform) drives
view/copy/reveal/delete end to end; the real-composition CLI e2e switches
to copy semantics.
2026-08-08 22:35:26 +08:00
Tianyi Cui d488330ba4 fix(rebase): migrate the replayed E2B branch onto the rebased parent
The linear replay carried old-lineage content over parent-owned files;
this checkpoint restores them and adapts the branch to the parent's
post-rebase seam:

- restore all pty/lsp/subprocess/code-runtime surfaces to the parent's
  exact content (this branch claims none of them) and drop the net-zero
  code-runtime-e2b/pty-e2b/lsp-e2b residue and its registrations
- widen serializeRemoteEnvironment to the seam's NodeJS.ProcessEnv
  tombstone contract: an explicit undefined removes an ambient entry
- migrate the two E2B fixture Agent stubs to the Inbox-model interface
  and Session.create
- re-apply the branch's gen-doc-graphs roles, THIRD_PARTY_NOTICES e2b
  row, and packages/README group row (trimmed to the doc budget);
  regenerate catalogs and re-record bilingual pairings
2026-08-08 22:19:13 +08:00
Tianyi Cui e6b3afbee9 docs(e2b): remove code runtime residue 2026-08-08 22:19:13 +08:00
Tianyi Cui 26b18ba189 refactor(e2b): keep code runtime host-local 2026-08-08 22:19:13 +08:00
Tianyi Cui de77310c6f refactor(e2b): narrow the sandbox POC 2026-08-08 22:19:13 +08:00
Tianyi Cui 917a7493f7 refactor(e2b): keep provider layer substrate-only 2026-08-08 22:19:12 +08:00
Tianyi Cui 81e2e1f647 fix(e2b): harden SDK shell and cleanup boundaries
E2B starts command and PTY requests through login shells, so isolate each control shell behind a fresh randomized HOME and blank sandbox credential names before mutable profiles can run. Preserve the real remote HOME only for the requested argv.

Collapse duplicate termination state, keep failed force cleanup retryable until quiescence is observed, and make terminal state allocation cancellable. Leave numeric PGID reuse as an explicit provider-level TODO because a userspace precheck would remain TOCTOU.
2026-08-08 22:19:12 +08:00
Tianyi Cui 091af03a81 fix(e2b): harden remote startup and teardown 2026-08-08 22:19:12 +08:00
Tianyi Cui ec0310ca1b fix(e2b): harden remote teardown transactions 2026-08-08 22:19:11 +08:00
Tianyi Cui fd78d9bc58 fix(e2b): harden remote process lifecycle 2026-08-08 22:19:11 +08:00
Tianyi Cui 2abc9823e7 refactor(e2b): compose portable runtime consumers 2026-08-08 22:19:11 +08:00
Tianyi Cui 97496c3d00 fix(e2b): close remaining remote lifecycle races 2026-08-08 22:19:11 +08:00
Tianyi Cui 3e343b4477 fix(e2b): harden remote adapter boundaries 2026-08-08 22:19:11 +08:00
Tianyi Cui e64d40837c refactor(e2b): group remote providers 2026-08-08 22:19:10 +08:00
Tianyi Cui 6667102890 Add E2B PTY, LSP, and code runtime providers 2026-08-08 22:19:10 +08:00
Tianyi Cui e7b682f1f6 feat(e2b): add remote runtime providers 2026-08-08 22:19:10 +08:00
Tianyi Cui 18ab9f6db2 fix(rebase): migrate the replayed stack onto current master APIs
The linear replay carried each commit's own lineage, so this checkpoint
restores the master-owned surfaces the conflicted regions clobbered and
migrates branch-owned code to master's post-rebase APIs:

- rebuild subprocess-local spawn.ts on master's tree-exit-observer
  machinery, keeping the branch's win32 childEnv key semantics and the
  Linux zombie-quiescence probe; the zombie test reaps its survivor
  directly since a confirmed-absent verdict is a permanent
  no-more-signals boundary
- migrate pty-local test stubs to the Inbox-model Agent interface,
  Session.create, runnerFailureRules, and the new turn/start payload
- implement the seam's resolveExecutable/spawnTerminal abstracts in the
  new pwsh-local and tool-fs-search test fakes
- restore code-runtime, atomic-write, pwsh-local, and app-boot to
  master's exact content (the net-zero code-runtime churn is pruned
  from this history) and drop rename-detection graft debris
- re-apply the PR's architecture rows and execution-world paragraph,
  re-record bilingual pairings, regenerate catalogs, and reconcile the
  lockfile
2026-08-08 21:27:59 +08:00
Tianyi Cui 4d5345794d refactor(code-runtime): remove subprocess backend 2026-08-08 21:27:59 +08:00
Tianyi Cui 87b2c5d93f docs(runtime): remove stale runtime storage claims 2026-08-08 21:27:59 +08:00
Tianyi Cui 22fc228b97 refactor(runtime): collapse unused setup layers 2026-08-08 21:27:59 +08:00
Tianyi Cui dde55d5afe docs(agent-notes): consolidate subprocess decisions 2026-08-08 21:27:58 +08:00
Tianyi Cui ff86795b15 fix(pty): close provider cancellation races 2026-08-08 21:27:58 +08:00
Tianyi Cui b71dbbe766 fix(runtime): close review lifecycle and bound gaps 2026-08-08 21:27:58 +08:00
Tianyi Cui c1d550de58 refactor(runtime): collapse speculative portability layers
Remove the one-consumer bounded-read primitive and shared terminal lifecycle controller, make terminal cleanup one awaited provider operation, and reuse one Code Runtime contract suite. Keep only reproduced cancellation and policy fixes; defer unproven replacement, prompt-attribution, and streaming-frame concerns to scoped markers.
2026-08-08 21:27:58 +08:00
Tianyi Cui 4fecc54998 fix(runtime): close teardown gaps and simplify framing 2026-08-08 21:27:58 +08:00
Tianyi Cui 045e8462ee fix(pty): drain public signals during close 2026-08-08 21:27:58 +08:00
Tianyi Cui 7eedfda961 fix(pty): fence delayed signal prompts 2026-08-08 21:27:57 +08:00
Tianyi Cui 277870dac2 Revert "fix(pty): fence delayed signal prompts"
This reverts commit a78958eeeaf04a3acdf22ef8a26dec370661a51d.
2026-08-08 21:27:57 +08:00
Tianyi Cui d6b3de6e0d fix(pty): fence delayed signal prompts 2026-08-08 21:27:57 +08:00
Tianyi Cui 0fec058a48 fix(pty): retain send ownership through cancellation 2026-08-08 21:27:57 +08:00
Tianyi Cui 4d96ff40af docs(lsp): align canonical output field 2026-08-08 21:27:57 +08:00
Tianyi Cui f5f40c7403 fix(pty): discard pre-write readiness evidence 2026-08-08 21:27:56 +08:00
Tianyi Cui 4997fb219e fix(lsp): preserve execution-world URI semantics 2026-08-08 21:27:56 +08:00
Tianyi Cui 65264f6c80 refactor(subprocess): share terminal lifecycle 2026-08-08 21:27:56 +08:00
Tianyi Cui 32bce339da fix(runtime): close lifecycle teardown races 2026-08-08 21:27:56 +08:00
Tianyi Cui e5f3a67363 fix(runtime): publish completion before pipe cleanup 2026-08-08 21:27:56 +08:00
Tianyi Cui ac81165662 fix(runtime): close async cleanup and framing races 2026-08-08 21:27:56 +08:00
Tianyi Cui 16cac3b5af fix(runtime): close remote cleanup and readiness races 2026-08-08 21:27:56 +08:00
Tianyi Cui 8917ff8ef4 refactor(runtime): compose consumers over fs and subprocess 2026-08-08 21:27:55 +08:00
Tianyi Cui d21917f4cf refactor(subagent): resolve list tool inputs explicitly 2026-08-08 21:05:58 +08:00
Tianyi Cui 07fbc2cda8 test(subagent): execute control tools in ACP replay 2026-08-08 21:05:58 +08:00