Commit Graph
83 Commits
Author SHA1 Message Date
07akioni f8b1309fe5 fix(subprocess): hide Windows shell console windows at creation 2026-09-16 18:56:39 +08:00
Yichen Jiang 281723bed8 fix(web): isolate terminal bindings and validate saved layouts 2026-09-15 12:07:01 +08:00
Yichen Jiang b25c5ad82e feat(web): restore sidebar layouts and reclaim unattended terminals 2026-09-15 10:27:44 +08:00
Yichen Jiang 1b7b50bbe1 Merge remote-tracking branch 'origin/master' into worktree/web-sidebar-terminal
# Conflicts:
#	apps/web/package.json
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	packages/api/remotes/src/client/index.ts
#	packages/e2b/subprocess-e2b/README.md
#	packages/e2b/subprocess-e2b/README.zh.md
#	packages/e2b/subprocess-e2b/src/index.ts
#	packages/e2b/subprocess-e2b/src/terminal.ts
#	packages/e2b/subprocess-e2b/tests/subprocess.spec.ts
#	packages/e2b/subprocess-e2b/tests/terminal.spec.ts
#	packages/mcp/mcp-resources/README.i18n.yaml
#	pnpm-lock.yaml
#	scripts/verify-package-readme-model-experience.ts
#	snapshots/session/cordis-inspect-jsdoc/session.v3.jsonl
#	tsconfig.base.json
#	tsconfig.client.json
#	tsconfig.host.json
2026-09-14 10:36:31 +08:00
Tianyi Cui 71334b9c78 fix(subprocess): preserve direct outcomes on signal failure 2026-09-12 19:14:34 +08:00
Tianyi Cui c07df5aa65 fix(subprocess): confirm direct SIGKILL after group delivery 2026-09-12 18:49:15 +08:00
Tianyi Cui 4b99ace8fb fix(subprocess): await direct fallback settlement before scope failure 2026-09-12 17:55:53 +08:00
Tianyi Cui 561bfc3bbb fix(ssh): join authenticated stream teardown and validate package closure 2026-09-12 15:03:03 +08:00
Tianyi Cui 838da1d07e fix(subprocess): separate process quiescence from caller control streams 2026-09-12 15:03:01 +08:00
Tianyi Cui b9dfb8da1c test(subprocess): verify control inheritance and document channel ownership 2026-09-12 15:03:00 +08:00
Dudu-0223 dafff8e51c fix(subprocess): settle consumed empty scopes before exit notification 2026-09-11 17:05:15 +08:00
turtle1999 18a1955b7e fix(ci): handle scope termination races and cyclic process snapshots 2026-09-11 14:50:46 +08:00
turtle1999 aaa02a3970 fix(subprocess): settle a Linux scope left active with no processes
Range observation waited for an active transient scope to leave `active`
before it would prove the managed range empty. systemd ends a scope only when
it observes the populated-to-empty transition, so a payload killed before the
manager placed it in the scope's cgroup leaves the unit active with an empty
cgroup forever. `waitForExit()` then polled a unit that could not change, and
`LocalSubprocessRuntime.disposeManagedProcesses()` awaited it without bound —
teardown hung for any command cancelled immediately after spawn.

Each state query now also reads the unit's process count. Once termination was
requested and the launcher has exited, a still-active unit reporting no
processes is the empty range: the launcher forked every process it will ever
fork, so nothing later joins that cgroup. The owner stops the leftover unit so
transient units cannot accumulate, and an unreported or `[not set]` count
stays unknown and keeps waiting.

The race needs a live user-systemd manager, so it stayed dormant wherever the
native scope path was unavailable and surfaced once CI routed lanes onto the
Blacksmith hosted image, whose runners accept that path. Ten repetitions of
`local.spec.ts > disposal kills still-running processes and awaits their exit`
in a Linux container with a user manager failed seven times before the change
and passed ten times after it.
2026-09-10 17:27:52 +08:00
Yichen Jiang b79a227cec fix(subprocess): preserve Linux cancellation before bootstrap consumption 2026-09-10 14:45:45 +08:00
Yichen Jiang 0a525601a7 fix(web): harden sidebar terminal lifecycle and recovery 2026-09-09 18:17:47 +08:00
Yichen Jiang e15a9b1bec feat(web): add interactive sidebar terminals 2026-09-09 16:40:58 +08:00
pku-xht e9f1b6c53e Merge remote-tracking branch 'origin/master' into codex/subprocess-native-containment
# Conflicts:
#	.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.i18n.yaml
#	.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.md
#	.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.zh.md
#	.agents/notes/implemented/architecture/2026-09-05-canonical-feedback-log.i18n.yaml
#	.agents/notes/implemented/architecture/2026-09-05-nonofficial-feedback-otel.i18n.yaml
#	.agents/notes/implemented/architecture/2026-09-06-embedded-stream-record-readers.i18n.yaml
#	.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.i18n.yaml
#	.agents/notes/implemented/bug-fix/2026-09-06-windows-python-console-spawn-wait.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-26-generic-file-upload.i18n.yaml
#	.agents/notes/implemented/feature/2026-09-07-model-switch-notice.i18n.yaml
#	.agents/notes/implemented/process/2026-09-03-semantic-issue-templates-and-policy.i18n.yaml
#	packages/shell/bash-local/tests/executor.spec.ts
#	packages/subprocess/subprocess-local/README.i18n.yaml
#	packages/subprocess/subprocess-local/README.md
#	packages/subprocess/subprocess-local/README.zh.md
#	packages/subprocess/subprocess-local/src/spawn.ts
#	packages/subprocess/subprocess-local/tests/spawn.spec.ts
#	packages/subprocess/win32-process/package.json
2026-09-07 17:43:45 +08:00
Tianyi Cui a7a5be1703 docs(notes): archive low-future-value Agent Notes
Run the dsh-archive-agent-notes audit over every active Agent Note on
current master, judging each record by whether its rationale still guides
work rather than by size or age.

- Archive 453 implemented bilingual triplets (417,882 English words):
  completed UI chrome, narrow adapters, closed bug fixes, implementation
  walkthroughs whose package READMEs, docs pages, generators, or successor
  notes now carry the useful behavior, and 51 records fully superseded by
  a later active note. Keep 201 implemented notes whose ownership rules,
  negative guarantees, durable or wire semantics, security rules,
  reintroduction conditions, or still-tempting rejected alternatives
  remain useful.
- Reject 7 proposals whose premise is gone or whose work shipped in
  amended form under other records; delete 2 rejected notes that no
  longer prevent a plausible mistake.
- Retarget every remaining inbound link to the archived path, and repair
  active prose that named an archived record as the owner of a live fact:
  parenthetical citations drop, ownership sentences redirect to the
  README, docs page, or active note that states the fact, and history
  citations say so. Chinese files link the English archived path because
  the pairing gate treats the frozen tree as outside the bilingual corpus.
- Seal 1,359 new frozen artifacts; existing seals are unchanged and
  outbound links from archived notes are neither inspected nor repaired.
- Regenerate docs/config-catalog.md after the hook-bridge comment edits
  shifted two source line numbers.
2026-09-05 14:37:32 +08:00
Chinesezjc 1f0a87eb06 Merge remote-tracking branch 'origin/master' into fix/test-tmp-teardown-self-clean
# Conflicts:
#	packages/subprocess/subprocess-local/tests/spawn.spec.ts
2026-09-04 11:58:16 +08:00
Turtle a05b5fbe79 fix(subprocess): hide Windows cleanup helpers 2026-09-03 19:01:30 +08:00
Chinesezjc c8fc38541f test: own the default spill dir in subprocess specs; correct retention wording
Second review round (ds-review-bot v4p/v5/v6): the exit cleanup claim that
collectors unlink their spill files on dispose was wrong — completed spill
files are retained (seal() only closes, discardSpill() is the only unlink),
so the exit removal only ever applies to directories that never spilled.
Reword the JSDoc, README, and Agent Note accordingly, drop the redundant
readdirSync precheck (rmdirSync ENOTEMPTY is caught anyway), and recount the
v8-ignore window. The spawn.spec default-spill test now records the default
per-process directory it created and removes it in afterAll, so a completed
spill file is never left behind by the unit suite.
2026-09-03 17:29:21 +08:00
Chinesezjc 29e6669e3c test: narrow process-exit spill cleanup to empty dirs; drop spill-store deletion
Review (ds-review-bot) found the exit-time deletion of per-process spill
roots conflicts with the documented retention decision: spill artifacts are
model-visible locators that resumed or forked sessions may still reference
(2026-07-17-local-spill-startup-cleanup), and an exception thrown from an
'exit' listener can change the process exit code.

- dsh-spill-local: revert the exit handler entirely; its default root is
  already owned by the package's 30-day startup sweep.
- dsh-subprocess-local/spawn: remove the per-process spill dir at a
  JavaScript-observable exit only while it is EMPTY (collectors unlink
  their spill files on dispose), best-effort with a named swallow so a
  Windows-held handle never changes the exit code; dirs holding spill
  files keep them for external cleanup.
- Document the empty-dir exit removal in the package README and the Agent
  Note, and re-record both bilingual pairs.
2026-09-03 17:06:48 +08:00
Turtle cc8099dc5f fix(subprocess): hide Windows child windows 2026-09-03 17:05:18 +08:00
pku-xht ed25d4e15b docs(subprocess): correct probe and terminal failure contracts 2026-09-03 08:58:31 +08:00
pku-xht fe873955b4 Merge master@313ac567 into subprocess native containment 2026-09-02 23:00:02 +08:00
pku-xht fc19a0a3fa fix(subprocess): clarify provider failures and scope polling 2026-08-31 19:26:08 +08:00
pku-xht 40279aea17 fix(subprocess): preserve native runner stdio 2026-08-29 00:03:12 +08:00
pku-xht a95f0b368f fix(subprocess): contain escaped descendants with native owners 2026-08-28 18:15:49 +08:00
Turtle 15f2997bcb cleanup: omit unneeded invariant companions 2026-08-28 13:12:52 +08:00
pku-xht 20f04373c8 Merge commit 'bd88d2ee9f08b3c3aba8c06df527a91d8b76b51d' into codex/subprocess-native-containment
# Conflicts:
#	packages/e2b/subprocess-e2b/README.i18n.yaml
#	packages/e2b/subprocess-e2b/README.md
#	packages/e2b/subprocess-e2b/README.zh.md
#	packages/subprocess/README.i18n.yaml
#	packages/subprocess/README.md
#	packages/subprocess/README.zh.md
#	packages/subprocess/subprocess-local/README.i18n.yaml
#	packages/subprocess/subprocess-local/README.md
#	packages/subprocess/subprocess-local/README.zh.md
#	packages/subprocess/subprocess/README.i18n.yaml
#	packages/subprocess/subprocess/README.md
#	packages/subprocess/subprocess/README.zh.md
#	packages/subprocess/win32-process/README.i18n.yaml
#	packages/subprocess/win32-process/README.md
#	packages/subprocess/win32-process/README.zh.md
2026-08-26 15:25:12 +08:00
Magolor 0b5eba0c8d docs: rebuild the documentation skill and standards (#2983) 2026-08-25 23:47:20 +08:00
pku-xht 678cfdfdb4 Merge commit '0c177e17a23692d018a79bae59ac9a2db6eba59c' into codex/subprocess-native-containment
# Conflicts:
#	.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.i18n.yaml
#	.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.md
#	.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md
#	examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/input.json
#	examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
#	packages/bundle/acp-app/package.json
#	packages/examples/jsonrpc-demo/src/packaged-bin.ts
#	packages/subagent/subagent-acp/src/run.ts
#	packages/subagent/subagent-acp/tests/subagent-acp.spec.ts
#	packages/subprocess/subprocess-local/README.i18n.yaml
#	packages/subprocess/subprocess-local/README.md
#	packages/subprocess/subprocess-local/README.zh.md
#	pnpm-lock.yaml
#	scripts/smoke-python-runtime.py
2026-08-25 23:22:25 +08:00
pku-xht 26969588b7 fix(subprocess): address native containment review findings 2026-08-25 21:51:22 +08:00
pku-xht 8e9bac4a27 fix(subprocess): align native containment contract 2026-08-25 20:06:00 +08:00
Yichen Jiang a3f67137bc test(pty): cover restricted proc syscall access 2026-08-25 14:19:56 +08:00
Yichen Jiang 2338f4ad14 fix(pty): detect emulated kernel syscall ABI 2026-08-25 14:01:04 +08:00
Yichen Jiang 5467685bc1 fix(pty): identify waiting thread terminals 2026-08-25 13:35:53 +08:00
Yichen Jiang 9a12505f86 fix(pty): distinguish pipeline reads from terminal input 2026-08-25 12:54:55 +08:00
Tianyi Cui 934976732d docs: purge residual chain-of-thought leakage 2026-08-22 13:10:23 +08:00
pku-xht eb17028720 fix(subprocess): preserve post-start runner failures 2026-08-22 08:23:34 +08:00
pku-xht f72ce2299a fix(subprocess): keep native Job ownership in runner 2026-08-21 22:49:56 +08:00
pku-xht 153f1579e1 refactor(subprocess): restore native containment baseline 2026-08-21 22:08:49 +08:00
pku-xht ac69b1e0c4 fix(subprocess): decouple Windows target stdio 2026-08-21 12:56:34 +08:00
pku-xht 5b215932f8 fix(subprocess): hand off Windows process observation 2026-08-21 11:18:43 +08:00
pku-xht ea7de60840 fix(subprocess): keep Windows Job ownership in parent 2026-08-21 09:51:21 +08:00
pku-xht 3f2f381209 docs(subprocess): align provider-owned termination semantics 2026-08-21 06:20:25 +08:00
pku-xht e6bc1f2e1d fix(subprocess): close managed launch gaps 2026-08-21 05:08:36 +08:00
pku-xht eb60d74155 fix(subprocess): harden native range settlement 2026-08-20 22:16:24 +08:00
pku-xht 894f6aeb8a fix(subprocess): contain escaped descendants with native owners 2026-08-20 16:26:19 +08:00
_Kerman 91e8d62b2a fix(subprocess): detect exited Windows terminals 2026-08-18 14:30:47 +08:00