_Kerman
7d0301fe05
Merge master into scoped tool executors
2026-10-19 21:53:41 +08:00
_Kerman
455686626d
refactor(tools): separate scoped executors from tool registration
2026-10-19 14:49:55 +08:00
_Kerman
c3efd4bff8
refactor(session-projection): keep state reads inside owning services
2026-10-15 18:18:58 +08:00
_Kerman
f8a84280aa
Merge remote-tracking branch 'origin/master' into xtr/session-projection-registration-handles
2026-10-13 11:27:47 +08:00
_Kerman
08e48f34b5
refactor(plugins): migrate projection consumers to retained handles
2026-10-12 12:03:36 +08:00
fz
54c13688a8
fix(jobs): use one durable job id and ordered shutdown
2026-10-08 16:17:52 +08:00
Tianyi Cui
0c6b1ef7bb
fix(session): port directory consumers and fixtures to current runtime
2026-10-06 01:31:51 +08:00
Tianyi Cui
3f35ca7b5b
test(session): align fixtures with awaited agent creation
2026-10-06 01:27:55 +08:00
Tianyi Cui
79bd3d8da7
feat(session): centralize working directories and directory context
2026-10-06 01:27:54 +08:00
imccyu
4166dbd140
fix(tools): guide argument generation order
2026-09-30 02:18:04 +08:00
turtle1999
321a6fa740
refactor(tools): trim constraint prose from tool descriptions
...
Delete constraints the model learns from the call result, shorten
implementation detail, and move per-parameter rules into the owning
parameter descriptions. Bash, pwsh, and fs share one
sandbox_permissions description in dsh-sandbox.
The standard preset's first-turn prompt drops from 7985 to 6551 tokens.
Compaction threshold snapshots lower their context windows by the
1548-token tool-schema estimate reduction so each trigger keeps its
position; their fixtures move to v4 generations.
2026-09-24 17:52:58 +08:00
Yichen Jiang
bb20149360
refactor(shell): register foreground commands as jobs at start and drop the promotion protocol
...
With a job registry composed, tool-bash and tool-pwsh now register every
command with ctx.jobs as it starts and wait on the job with the registry's
own bounded wait: a command that finishes in time returns the ordinary
foreground result and its record is removed, one that outlives the timeout
returns the same job id it already had, and a kill from outside the call is
reported as `[stopped: <reason>]`. Nothing changes hands at the deadline, so
the shell seam loses `onExpiry: 'offer'`, `ShellExecution.promotion`, and
`ShellPromotionOffer`, and both local executors drop their offer arm.
The registry stays optional: the tools register a foreground-only definition
while no registry is composed and swap to the job-backed one inside a
`ctx.inject(['jobs'])` fork, so a composition without jobs keeps a plain bash
with no job tools in the model's schema. A refused registration at the start
(admission, no controller) runs under the executor's deadline kill, and a wait
that expires before the process spawned ends as the preparation timeout.
JobRegistry gains `remove(id, caller?)` and the `settled` event reports
`awaited`, so dsh-tool-jobs no longer keeps its own wait ledger; it withholds
notices for awaited settlements and for kills the model requested. The tool
catalog harvest composes the registry so the shipped schema stays documented,
and the two compaction fixtures move their context window from 10000 to 10300
tokens because the branch's larger tool schemas pushed their condensed history
over the old trigger, which requested a fourth scripted model call.
2026-09-21 15:23:08 +08:00
Yichen Jiang
b42a93d62f
Merge remote-tracking branch 'origin/master' into worktree/job-kill-delivery
...
# Conflicts:
# docs/config-catalog.i18n.yaml
# docs/event-producer-consumer.i18n.yaml
# docs/module-graph.i18n.yaml
# docs/tool-catalog.i18n.yaml
# packages/api/session-controller/README.i18n.yaml
# packages/api/session-controller/src/commands.ts
# packages/client/ui-jobs/tests/browser-plugin.client.spec.ts
# packages/client/ui-jobs/tests/job-list-action.client.spec.tsx
# packages/shell/tool-bash/README.i18n.yaml
# packages/shell/tool-bash/src/background.ts
# packages/shell/tool-pwsh/src/background.ts
2026-09-21 12:40:44 +08:00
Yichen Jiang
61719629fc
Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
...
# Conflicts:
# apps/web/tests/expected/agent-preset-selection/header.expected.md
# docs/architecture.i18n.yaml
# 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
# docs/module-graph.i18n.yaml
# docs/module-graph.md
# docs/module-graph.zh.md
# docs/persistence-catalog.i18n.yaml
# docs/persistence-catalog.md
# docs/persistence-catalog.zh.md
# docs/persistence-schema.json
# docs/subsystems/web-client.i18n.yaml
# packages/api/README.i18n.yaml
# packages/api/README.md
# packages/api/README.zh.md
# packages/api/session-controller/README.i18n.yaml
# packages/api/session-controller/README.md
# packages/api/session-controller/README.zh.md
# packages/api/session-controller/src/client/sessions/manager.ts
# packages/api/session-controller/src/client/sessions/service.ts
# packages/api/session-controller/tests/manager.client.spec.ts
# packages/client/locale/tests/language-row.client.spec.tsx
# packages/client/ui-chat/tests/chat-view.client.spec.tsx
# packages/client/ui-chat/tests/transcript-view-row.client.spec.tsx
# packages/client/ui-conversation/tests/conversation-registry.client.spec.ts
# packages/client/ui-conversation/tests/enter-behavior-row.client.spec.tsx
# packages/client/ui-conversation/tests/input-bar.client.spec.tsx
# packages/client/ui-conversation/tests/input-matrix.client.spec.tsx
# packages/client/ui-conversation/tests/input-scenarios.client.spec.tsx
# packages/client/ui-conversation/tests/skeleton.client.spec.tsx
# packages/client/ui-deliverables/tests/deliverables.client.spec.tsx
# packages/client/ui-jobs/tests/job-list-action.client.spec.tsx
# packages/client/ui-layout/tests/app-frame.client.spec.tsx
# packages/client/ui-layout/tests/document-title.client.spec.tsx
# packages/client/ui-open-in-app/tests/open-in-app-action.client.spec.tsx
# packages/client/ui-primitives/README.i18n.yaml
# packages/client/ui-session/tests/ui-session.client.spec.ts
# packages/client/ui-settings-general/tests/settings-root.client.spec.tsx
# packages/client/ui-settings-unarchive-sessions/tests/components.client.spec.tsx
# packages/client/ui-subagent/README.i18n.yaml
# packages/client/ui-subagent/README.md
# packages/client/ui-subagent/README.zh.md
# packages/client/ui-subagent/src/client/SubagentHeaderLineage.tsx
# packages/client/ui-subagent/tests/conversation-ui.client.spec.tsx
# packages/client/ui-theme/tests/appearance-row.client.spec.tsx
# packages/client/ui-theme/tests/font-size-row.client.spec.tsx
# packages/client/ui-tool/tests/coverage-tails.client.spec.tsx
# packages/client/ui-tool/tests/diff-card.client.spec.tsx
# packages/client/ui-tool/tests/image-card.client.spec.tsx
# packages/client/ui-tool/tests/read-card.client.spec.tsx
# packages/client/ui-tool/tests/terminal-card.client.spec.tsx
# packages/client/ui-trajectory/tests/views.client.spec.tsx
# packages/client/ui-user-questions/tests/plan-review-panel.client.spec.tsx
# packages/client/ui-user-questions/tests/user-questions-composer.client.spec.tsx
# packages/client/ui-workflow-run/tests/workflow-run.client.spec.tsx
# packages/client/ui-workspace/tests/apply.client.spec.ts
# packages/client/ui-workspace/tests/tree.client.spec.ts
# packages/client/ui-workspace/tests/workspace-browser.client.spec.tsx
# packages/client/ui-workspace/tests/workspace-picker.client.spec.tsx
# packages/client/ui-workspace/tests/workspaces-service.client.spec.ts
# packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
# packages/jobs/tool-jobs/src/index.ts
# packages/shell/tool-bash/README.i18n.yaml
# packages/test-support/client-runtime/src/sessions.ts
2026-09-21 11:34:20 +08:00
Turtle
8cf9c0eded
fix(bash): allow blank justification without escalation ( #4662 )
...
* fix(bash): allow blank justification without escalation
* fix(bash): permit empty reasons when repeating the current mode
2026-09-20 14:28:57 +08:00
Yichen Jiang
c2fb2bd4e8
Merge branch 'worktree/jobs-api-review-3052' into worktree/jobs-api-review-3127
...
# Conflicts:
# .agents/notes/implemented/feature/2026-08-08-web-background-job-display.i18n.yaml
# docs/config-catalog.i18n.yaml
# docs/event-producer-consumer.i18n.yaml
# docs/module-graph.i18n.yaml
# docs/subsystems/jobs.i18n.yaml
# docs/subsystems/shell.i18n.yaml
# docs/subsystems/shell.md
# docs/subsystems/shell.zh.md
# docs/tool-catalog.i18n.yaml
# packages/api/session-controller/README.i18n.yaml
# packages/context/tmux-context/tests/tmux-context.spec.ts
# packages/e2b/e2b/tests/fixtures/composition/bin.ts
# packages/extensions/tool-cordis/src/api-catalog.ts
# packages/shell/bash-local/README.i18n.yaml
# packages/shell/bash-local/README.md
# packages/shell/bash-local/README.zh.md
# packages/shell/bash-local/src/index.ts
# packages/shell/bash-local/tests/executor.spec.ts
# packages/shell/bash-sandbox/README.i18n.yaml
# packages/shell/bash-sandbox/README.md
# packages/shell/bash-sandbox/README.zh.md
# packages/shell/bash-sandbox/src/index.ts
# packages/shell/bash-sandbox/tests/bwrap.e2e.ts
# packages/shell/bash-sandbox/tests/landlock.e2e.ts
# packages/shell/bash-sandbox/tests/partial-landlock.spec.ts
# packages/shell/bash-sandbox/tests/sandbox.spec.ts
# packages/shell/bash-sandbox/tests/seatbelt.e2e.ts
# packages/shell/pwsh-local/README.i18n.yaml
# packages/shell/pwsh-local/README.md
# packages/shell/pwsh-local/README.zh.md
# packages/shell/pwsh-local/src/index.ts
# packages/shell/pwsh-local/tests/executor.spec.ts
# packages/shell/pwsh-sandbox/README.i18n.yaml
# packages/shell/pwsh-sandbox/README.md
# packages/shell/pwsh-sandbox/README.zh.md
# packages/shell/pwsh-sandbox/src/index.ts
# packages/shell/pwsh-sandbox/tests/sandbox.spec.ts
# packages/shell/shell/README.i18n.yaml
# packages/shell/shell/README.md
# packages/shell/shell/README.zh.md
# packages/shell/shell/src/index.ts
# packages/shell/shell/tests/service.spec.ts
# packages/shell/tool-bash/README.i18n.yaml
# packages/shell/tool-bash/src/index.ts
# packages/shell/tool-bash/tests/tools.spec.ts
# packages/shell/tool-pwsh/README.i18n.yaml
# packages/shell/tool-pwsh/src/index.ts
# packages/shell/tool-pwsh/tests/background.spec.ts
# packages/shell/tool-pwsh/tests/tools.spec.ts
# packages/workflow/tool-workflow/README.i18n.yaml
# packages/workflow/tool-workflow/package.json
# packages/workflow/tool-workflow/tests/tool-workflow.spec.ts
# snapshots/session/ptc-python-turn/system-prompt.expected.md
2026-09-17 16:48:06 +08:00
Yichen Jiang
6e41857b2e
Merge remote-tracking branch 'origin/master' into worktree/jobs-api-review-3052
...
# Conflicts:
# 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/api/session-controller/README.i18n.yaml
# packages/api/session-controller/README.md
# packages/api/session-controller/README.zh.md
# packages/api/session-controller/src/client/sessions/manager.ts
# packages/api/session-controller/src/control.ts
# packages/api/session-controller/src/types.ts
# packages/api/session-controller/tests/client-apply.client.spec.ts
# packages/api/session-controller/tests/manager.client.spec.ts
# packages/api/session-controller/tests/projection-store.client.spec.ts
# packages/api/session-controller/tests/queue-store.client.spec.ts
# packages/api/session-controller/tests/sessions-service.client.spec.ts
# packages/api/session-controller/tests/transport.client.spec.ts
# packages/client/ui-jobs/package.json
# packages/client/ui-primitives/src/TerminalBlock.module.css
# packages/client/ui-primitives/src/TerminalBlock.tsx
# packages/client/ui-primitives/tests/terminal-block.client.spec.tsx
# packages/extensions/tool-cordis/src/api-catalog.ts
# packages/test-support/client-runtime/src/assembly/remote-default-responses.ts
2026-09-16 16:05:59 +08:00
Yichen Jiang
1596097147
Merge remote-tracking branch 'origin/master' into worktree/jobs-api-review-3052
...
# Conflicts:
# apps/web/tsconfig.json
# docs/event-producer-consumer.i18n.yaml
# docs/event-producer-consumer.md
# docs/event-producer-consumer.zh.md
# docs/module-graph.i18n.yaml
# docs/module-graph.md
# docs/module-graph.zh.md
# packages/api/remotes/package.json
# packages/api/remotes/src/client/index.ts
# packages/api/session-controller/tests/client-apply.client.spec.ts
# packages/api/session-controller/tests/control-jobs.host.spec.ts
# packages/api/session-controller/tests/fake-api.client.ts
# packages/api/session-controller/tests/manager.client.spec.ts
# packages/client/ui-jobs/package.json
# packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
# packages/jobs/jobs-local/README.i18n.yaml
# packages/jobs/jobs-local/README.md
# packages/jobs/jobs-local/README.zh.md
# packages/jobs/jobs-local/src/index.ts
# packages/jobs/jobs-local/tests/jobs.spec.ts
# packages/jobs/tool-jobs/tests/tool-jobs.spec.ts
# packages/shell/shell/README.i18n.yaml
# packages/shell/shell/README.md
# packages/shell/shell/README.zh.md
# packages/shell/tool-bash/README.i18n.yaml
# packages/shell/tool-bash/README.md
# packages/shell/tool-bash/README.zh.md
# packages/shell/tool-bash/src/background.ts
# packages/shell/tool-bash/src/index.ts
# packages/shell/tool-pwsh/src/background.ts
# packages/shell/tool-pwsh/src/index.ts
2026-09-16 15:53:02 +08:00
turtle1999
61c548e200
fix(sandbox): accept repeated effective permission modes
2026-09-16 13:16:33 +08:00
_Kerman
0a382becb3
Merge latest origin/master into xtr/agent-setup-hook
2026-09-14 13:57:18 +08:00
Tianyi Cui
6c3c3064c3
refactor: align instruction and job helper symbols
2026-09-12 20:20:02 +08:00
Tianyi Cui
caa69608fb
refactor(sandbox): await cancellable preparation in process consumers
2026-09-12 15:03:02 +08:00
_Kerman
9b7a8ccc9f
feat(agent): await initialization through agent/created
2026-09-09 16:20:00 +08:00
Yichen Jiang
80fa0bee05
Merge branch 'worktree/process-plugin-streaming-72f9b3' into worktree/job-kill-delivery
...
# Conflicts:
# packages/shell/bash-local/README.i18n.yaml
# packages/shell/bash-local/README.md
# packages/shell/bash-local/README.zh.md
# packages/shell/bash-local/src/index.ts
# packages/shell/bash-local/tests/executor.spec.ts
# packages/shell/pwsh-local/README.i18n.yaml
# packages/shell/pwsh-local/README.md
# packages/shell/pwsh-local/README.zh.md
# packages/shell/pwsh-local/src/index.ts
# packages/shell/shell/README.i18n.yaml
# packages/shell/shell/README.md
# packages/shell/shell/README.zh.md
# snapshots/session/pwsh-tool-turn/tool-schemas.expected.json
2026-09-08 13:52:08 +08:00
Yichen Jiang
1242fdfdef
Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
...
# Conflicts:
# docs/event-producer-consumer.i18n.yaml
# docs/event-producer-consumer.md
# docs/event-producer-consumer.zh.md
# docs/module-graph.i18n.yaml
# docs/module-graph.md
# docs/module-graph.zh.md
# docs/subsystems/shell.i18n.yaml
# docs/subsystems/shell.md
# docs/subsystems/shell.zh.md
# packages/api/remotes/package.json
# packages/api/remotes/src/client/index.ts
# packages/api/session-controller/src/control.ts
# packages/api/session-controller/tests/control-jobs.host.spec.ts
# packages/bundle/web-app/cordis.patch.yml
# packages/bundle/web-app/package.json
# packages/client/ui-chat/src/client/details/DetailsPanel.tsx
# packages/client/ui-chat/src/client/details/tool-node-reader.ts
# packages/client/ui-chat/tests/gate-branch-tails.client.spec.tsx
# packages/client/ui-jobs/package.json
# packages/client/ui-tool/tests/diff-card.client.spec.tsx
# packages/client/ui-tool/tests/read-card.client.spec.tsx
# packages/client/ui-tool/tests/search-card.client.spec.tsx
# packages/client/ui-tool/tests/terminal-card.client.spec.tsx
# packages/client/ui-tool/tests/web-card.client.spec.tsx
# packages/shell/bash-local/README.i18n.yaml
# packages/shell/bash-local/README.md
# packages/shell/bash-local/README.zh.md
# packages/shell/bash-local/src/index.ts
# packages/shell/bash-local/tests/executor.spec.ts
# packages/shell/pwsh-local/README.i18n.yaml
# packages/shell/pwsh-local/README.md
# packages/shell/pwsh-local/README.zh.md
# packages/shell/pwsh-local/src/index.ts
# packages/shell/shell/README.i18n.yaml
# packages/shell/shell/README.md
# packages/shell/shell/README.zh.md
# packages/shell/shell/src/types.ts
# packages/terminal/tool-terminal/tests/tools.spec.ts
# tsconfig.client.json
2026-09-08 13:34:53 +08:00
Tianyi Cui
40792330c0
fix(system-prompt): keep model persona prefix and place cwd in suffix
2026-09-06 20:35:42 +08:00
Yichen Jiang
ca3d9af0a7
Merge remote-tracking branch 'origin/worktree/process-plugin-streaming-72f9b3' into worktree/job-kill-delivery
...
# Conflicts:
# packages/shell/bash-sandbox/tests/sandbox.spec.ts
# packages/shell/pwsh-local/tests/executor.spec.ts
2026-09-04 13:42:20 +08:00
Yichen Jiang
7e5627f8e3
Merge remote-tracking branch 'origin/master' into worktree/process-plugin-streaming-72f9b3
2026-09-04 13:39:42 +08:00
Yichen Jiang
42858723a6
Merge remote-tracking branch 'origin/worktree/process-plugin-streaming-72f9b3' into worktree/job-kill-delivery
...
# Conflicts:
# packages/api/job-controller/README.i18n.yaml
# packages/api/job-controller/README.md
# packages/api/job-controller/README.zh.md
# packages/api/session-controller/README.i18n.yaml
# packages/api/session-controller/README.md
# packages/api/session-controller/README.zh.md
# packages/shell/bash-local/src/index.ts
# packages/shell/pwsh-local/src/index.ts
# packages/shell/tool-bash/src/background.ts
# packages/shell/tool-bash/tests/tools.spec.ts
# packages/shell/tool-pwsh/src/background.ts
# packages/shell/tool-pwsh/tests/background.spec.ts
# snapshots/web/approval-composer/session.v2.jsonl
# snapshots/web/feedback-command/session.v2.jsonl
# snapshots/web/fresh-round-trip/session.v2.jsonl
# snapshots/web/goal-multi-turn-actions/session.jsonl
# snapshots/web/lifecycle-chrome/session.v2.jsonl
# snapshots/web/live-interactions/session.v2.jsonl
# snapshots/web/minimal-preset/session.v2.jsonl
# snapshots/web/permission-policy-context/session.v2.jsonl
# snapshots/web/plan-review/session.jsonl
# snapshots/web/ptc-round/session.v2.jsonl
# snapshots/web/question-composer/session.v2.jsonl
# snapshots/web/steering/session.v2.jsonl
# snapshots/web/turn-tail-actions/session.v2.jsonl
# snapshots/web/web-search-round/session.v2.jsonl
2026-09-04 13:27:34 +08:00
Yichen Jiang
3a03d68891
fix(shell): serve a background spawn failure on the observed stderr stream
...
A rejected background spawn produces no process output, so the observed stderr reader the job registry pumps was empty and the model's job_output after such a failure showed only killed before exit, where master's consuming read rendered [stderr] followed by spawn failed: … with the cause. The local providers now serve the note as the whole observed stderr stream once the spawn rejected, and the consuming read still folds it in exactly once, so the model's first read after the failure is byte-identical to master's. ShellProcess.observed and both of its readers are required: every background process exposes offset readers, and the shell tools' pull sources no longer carry a no-readers branch.
2026-09-04 12:59:41 +08:00
Yichen Jiang
cd3a9ac881
Merge remote-tracking branch 'origin/worktree/process-plugin-streaming-72f9b3' into worktree/job-kill-delivery
...
# Conflicts:
# apps/web/tests/background-job-list.e2e.ts
# apps/web/tests/live-job-stream.e2e.ts
# docs/config-catalog.i18n.yaml
# docs/config-catalog.md
# docs/config-catalog.zh.md
# docs/subsystems/jobs.i18n.yaml
# docs/subsystems/jobs.md
# docs/subsystems/jobs.zh.md
# packages/api/job-controller/README.i18n.yaml
# packages/api/job-controller/README.md
# packages/api/job-controller/README.zh.md
# packages/api/job-controller/src/client/index.ts
# packages/api/job-controller/src/client/service.ts
# packages/api/job-controller/src/index.ts
# packages/api/job-controller/src/types.ts
# packages/api/job-controller/tests/client-apply.client.spec.ts
# packages/api/job-controller/tests/model.client.spec.ts
# packages/api/job-controller/tsconfig.host.json
# packages/api/session-controller/tests/control-jobs.host.spec.ts
# packages/client/ui-jobs/README.i18n.yaml
# packages/client/ui-jobs/README.md
# packages/client/ui-jobs/README.zh.md
# packages/client/ui-jobs/src/client/JobListAction.tsx
# packages/client/ui-jobs/src/client/index.ts
# packages/client/ui-jobs/tests/browser-plugin.client.spec.ts
# packages/client/ui-jobs/tests/job-list-action.client.spec.tsx
# packages/extensions/tool-cordis/src/api-catalog.ts
# packages/jobs/jobs-local/src/index.ts
# packages/jobs/jobs-local/tests/jobs.spec.ts
# packages/jobs/jobs/README.i18n.yaml
# packages/jobs/jobs/README.md
# packages/jobs/jobs/README.zh.md
# packages/jobs/jobs/src/index.ts
# packages/jobs/jobs/src/types.ts
# packages/jobs/tool-jobs/src/index.ts
# packages/shell/tool-bash/src/index.ts
# packages/shell/tool-bash/src/render.ts
# packages/shell/tool-bash/tests/background.spec.ts
# packages/shell/tool-bash/tests/tools.spec.ts
# packages/shell/tool-pwsh/src/index.ts
# packages/shell/tool-pwsh/src/render.ts
# packages/subagent/tool-subagent/tests/tool-subagent.spec.ts
# snapshots/web/background-job-list/settled.expected.md
2026-09-03 17:45:44 +08:00
Yichen Jiang
053d302210
refactor(shell tools): hand the job registry pull sources and terminal outcomes
...
tool-bash and tool-pwsh no longer render their own background reads.
processSources() wraps the process's observed offset readers as registry
pull sources, pumped at dsh-jobs-local's pumpPollMs, and processOutcome()
folds the settled sandbox facts into the terminal detail. observe.ts and
the recordPollMs config field are gone; READMEs and pairings follow.
2026-09-03 16:30:57 +08:00
Chinesezjc
1107ff5fe1
test: remove remaining dsh-* spill/temp dirs in shell and fs specs
...
Full-template residue histogram on the CI host surfaced four more normal-exit
leaks below the earlier cutoff: tool-bash/tool-pwsh tools.spec (module spill
dir / per-test homes), bash-sandbox sandbox.spec (module spill dir and the
read-only denial root), and fs-sandbox fs-sandbox.spec (inline tmp dir). All
four now remove what they create at the same teardown points as their
neighbors.
2026-09-03 16:26:22 +08:00
Yichen Jiang
d1ec8baaf5
Merge remote-tracking branch 'origin/master' into worktree/job-kill-delivery
...
# Conflicts:
# docs/config-catalog.i18n.yaml
# docs/config-catalog.md
# docs/config-catalog.zh.md
# packages/client/ui-chat/src/client/contract/slots.ts
# packages/client/ui-chat/src/client/conversation-nodes/chat-snapshot-builder.ts
# packages/client/ui-jobs/package.json
# packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
# snapshots/web/ptc-round/session.jsonl
# snapshots/web/ptc-round/system-prompt.expected.md
2026-09-02 21:40:24 +08:00
Turtle
bec6805d6a
refactor(session-persistence)!: handle-based seam with a lifecycle-owned write path
...
The persistence seam is now create/open/stat/list returning per-session
SessionHandles (read/append/flush/close); every log read and write flows
through the owning handle. The seam package exports only the service and
handle contracts, consumer-visible errors, and pure durable-data
validation helpers; each backend owns its complete storage runtime, and
the shared contract suites pin equivalent observable behavior. The
backend routes published sessions' live events by id into the active
write handle; agent-loop only acquires, seeds, and closes the handle.
Resume appends interruptedTurnClosers through its write handle;
session-query owns the revision-keyed cold cache. Legacy-only surfaces
are removed in the same swap: locate/readRaw/supportsRawArtifacts, the
legacy event-shape read migration, zstd torn-frame salvage,
DSH_SESSION_JSONL, and hook transcript_path population; a torn final
zstd frame is discarded whole; the session-list cold blank probe returns
on stat metadata (eventCount derived from the last physical row,
sizeBytes). The WebUI ZIP export serializes the logical log from a read
handle, so both backends export identically.
Refs #3245
2026-09-01 23:19:02 +08:00
Yichen Jiang
374baa2621
Merge branch 'worktree/process-plugin-streaming-72f9b3' into worktree/job-kill-delivery
...
Carries the session seq-brand master sync forward; unions the seq/offset
imports with this branch's jobs augmentation in commands.ts and
regenerates the catalogs and zh ports over the merged source.
2026-09-01 22:20:21 +08:00
Tianyi Cui
27bf1039db
refactor(session)!: distinguish event seqs from log offsets
2026-09-01 20:36:00 +08:00
Yichen Jiang
4ee1e1af25
Merge branch 'worktree/process-plugin-streaming-72f9b3' into worktree/job-kill-delivery
...
Carries the master sync forward (invariant-companion cleanup, alpha.3 bump);
regenerates the client api catalog so ISession lists both killJob and the new
loadThrough, and refreshes the new ptc-python-turn scenario's system-prompt
pin for this branch's bash timeout-promotion schema text.
2026-09-01 20:30:36 +08:00
_Kerman
febafc7ee0
fix(test): cover indexed session reads
2026-08-31 17:43:17 +08:00
Yichen Jiang
922c80ce66
Merge branch 'worktree/process-plugin-streaming-72f9b3' into worktree/job-kill-delivery
...
# Conflicts:
# docs/event-producer-consumer.i18n.yaml
# docs/event-producer-consumer.md
# docs/module-graph.i18n.yaml
# docs/module-graph.md
# docs/module-graph.zh.md
# packages/api/session-controller/src/commands.ts
# packages/api/session-controller/tests/session.client.spec.ts
# packages/client/ui-activity/package.json
# packages/shell/tool-bash/src/index.ts
# packages/shell/tool-bash/tests/tools.spec.ts
# packages/shell/tool-pwsh/src/index.ts
2026-08-31 11:22:11 +08:00
_Kerman
6c63e708b8
Merge remote-tracking branch 'origin/master' into dshw/pr-deepseek-harness-deepseek-harness-2907
...
# Conflicts:
# docs/config-catalog.i18n.yaml
# docs/persistence-catalog.i18n.yaml
# docs/subsystems/session.i18n.yaml
# packages/api/session-controller/tests/transport.host.spec.ts
# packages/bundle/headless/src/index.ts
# packages/core/session/README.i18n.yaml
# packages/schedule/schedule/README.i18n.yaml
# packages/schedule/schedule/README.md
# packages/schedule/schedule/README.zh.md
# packages/session-query/tool-session-query/src/workspace-access.ts
# packages/session/session-log-deepseek/src/index.ts
2026-08-31 10:56:53 +08:00
imccyu
9135a13a8b
refactor(consumers): remove cross-package runtime relays
2026-08-30 02:29:52 +08:00
Yichen Jiang
02ef5e408f
Merge branch 'worktree/process-plugin-streaming-72f9b3' into worktree/job-kill-delivery
...
# Conflicts:
# docs/module-graph.i18n.yaml
# docs/module-graph.md
# docs/module-graph.zh.md
# packages/shell/bash-sandbox/tests/sandbox.spec.ts
# packages/shell/tool-pwsh/tests/tools.spec.ts
2026-08-28 17:33:17 +08:00
_Kerman
5660f44d29
perf(session): separate indexed and snapshot log reads
2026-08-28 13:25:58 +08:00
Yichen Jiang
e5d5d16dd2
Merge branch 'worktree/process-plugin-streaming-72f9b3' into worktree/job-kill-delivery
...
# Conflicts:
# docs/event-producer-consumer.i18n.yaml
# docs/event-producer-consumer.md
# docs/event-producer-consumer.zh.md
# packages/api/session-controller/src/client/sessions/session.ts
# packages/extensions/cordis-client-runner/src/client/api-catalog.ts
# packages/extensions/tool-cordis/src/api-catalog.ts
# packages/host/apiproxy/src/api/rpc.schema.ts
# packages/session/session-projection-cache/tests/cache.spec.ts
# packages/shell/tool-bash/tests/observe.spec.ts
# packages/shell/tool-pwsh/tests/observe.spec.ts
# snapshots/web/approval-composer/session.jsonl
# snapshots/web/code-mode-round/session.jsonl
# snapshots/web/cordis-tool-round/session.jsonl
# snapshots/web/feedback-command/session.jsonl
# snapshots/web/fresh-round-trip/session.jsonl
# snapshots/web/goal-multi-turn-actions/session.jsonl
# snapshots/web/lifecycle-chrome/session.jsonl
# snapshots/web/live-interactions/session.jsonl
# snapshots/web/minimal-preset/session.jsonl
# snapshots/web/permission-policy-context/session.jsonl
# snapshots/web/plan-review/session.jsonl
# snapshots/web/question-composer/session.jsonl
# snapshots/web/steering/session.jsonl
# snapshots/web/turn-tail-actions/session.jsonl
# snapshots/web/web-search-round/session.jsonl
2026-08-27 21:41:16 +08:00
Yichen Jiang
d6bebc5783
feat(shell): converge on execute() and promote timed-out commands to jobs
...
The executor seam collapses run()/start() (and the planned begin()) into one
resolve() + execute(): the handle IS the live process, and the foreground
result, the background cursor, and the deadline's promotion offer are
projections over the same spawn. ShellExecSpec.onExpiry ('kill' default /
'offer' / 'none') replaces the implicit method split; one stdout budget applies
everywhere, the 'start ignores timeoutMs' wart dies, and sync spawn throws are
contained into the same settled-killed handle as async rejections (result()
rejects with the original error, identity preserved for the sandbox
classification).
The promotion offer settles exactly once and never rejects — offer at an
'offer' deadline while running, undefined when the process settles first — so
'await execution.promotion' alone distinguishes the outcomes. An offer must be
answered synchronously; an unanswered one auto-declines back to the
kill-on-timeout behavior. accept() ends the deadline and detaches the caller's
abort signal; decline() kills and classifies timedOut.
tool-bash and tool-pwsh promote on timeout by default (promoteOnTimeout: true,
inert without run_in_background or a job registry): at the offer the running
handle registers as a job with the same hooks as run_in_background, mirrors
into ctx.activities (the web task list streams it, stop control included), and
the call returns { kind: 'promoted', jobId, timeoutMs, output } carrying the
output so far — the job cursor continues exactly after it. Any promotion
failure declines and falls back to the plain timeout kill. Descriptions and
the timeoutMs schema text advertise the semantics only when they hold;
recorded-session and web snapshot fixtures re-recorded with them.
Also repairs the four CI failures from the human-kill push: ui-activity's
missing dsh-session peer declaration (static + windows observational), the
observe owner-arm/outer-catch and killJob-stub coverage gaps, tool-workflow's
owned-run arm, and the timing-dependent projection-cache interval flush test
(now poll-based for coarse Windows timers).
Peer evidence and rejected alternatives (Codex's session model, a third seam
method, a second threshold knob) in the Agent Note
2026-08-26-shell-execute-timeout-promotion.
2026-08-26 16:11:01 +08:00
_Kerman
737691054a
Merge remote-tracking branch 'origin/master' into xtr/session-projection-migrations
...
# Conflicts:
# packages/core/agent-loop/tests/agent-initiator.spec.ts
# packages/core/tools/tests/tools.spec.ts
# packages/fs/tool-fs/tests/tools.spec.ts
# packages/schedule/schedule/tests/plugin.spec.ts
# packages/session/session-checkpoint-policy/tests/fixtures/crash-child.ts
2026-08-26 13:36:05 +08:00
_Kerman
4e6a1f8d21
Merge origin/xtr/projection-per-session-cache into xtr/session-projection-migrations
2026-08-25 21:42:06 +08:00
_Kerman
9365ef496d
Merge remote-tracking branch 'origin/master' into xtr/message-tool-call-id
...
# Conflicts:
# packages/acp/acp/tests/approval.spec.ts
# packages/acp/acp/tests/edges.spec.ts
# packages/api/session-controller/tests/event-script.client.ts
# packages/client/connection/src/client/fixture.ts
# packages/client/ui-conversation/src/client/contract/slots.ts
# packages/client/ui-conversation/src/client/contract/views.ts
# packages/client/ui-conversation/src/client/index.ts
# packages/client/ui-conversation/src/client/stores.ts
# packages/core/agent-loop/tests/loop.spec.ts
# packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
# packages/extensions/tool-cordis/src/api-catalog.ts
# packages/host/apiproxy/src/api-proxy.ts
# packages/host/apiproxy/src/api/events.ts
# packages/host/apiproxy/tests/api-proxy-view.spec.ts
# packages/interaction/user-approval/src/index.ts
# packages/llm/llm-deepseek/tests/adapter.e2e.ts
# packages/llm/llm-pi-ai/src/context.ts
# packages/llm/llm-pi-ai/tests/context.spec.ts
# packages/llm/llm/tests/content.spec.ts
# packages/subagent/subagent/tests/continuation.spec.ts
# packages/subagent/tool-subagent/tests/tool-subagent.spec.ts
# packages/test-support/llm-replay/tests/llm-replay.spec.ts
# packages/todo/tool-todo/tests/tool-todo.spec.ts
# scripts/gen-persistence-catalog.ts
2026-08-25 14:37:44 +08:00
Yichen Jiang
43ac97b554
fix(system-prompt): centralize sparse section orders
2026-08-25 11:06:01 +08:00