Huanqi Cao
8f9804f9ab
merge: refresh against the advancing master
...
Merges master (default-workspace-write-ui, installer-adopt-checkout,
remove-scoped-bash, goal-clear-single-flight, frontend-plugin-loader,
install-interface-choice, …).
Conflict resolutions:
- apps/cli/tests/shipped-composition.e2e.ts: keep the fixed glob/grep
roster assertion; master's workspace-write composition now confines
tool-bash, so the escalation pair is pinned present (my earlier
absence pin is superseded) together with master's permission facts.
- even-out-shipped-tool-rosters note: both sides edited it; the merged
text keeps both sets of changes and the pair is re-recorded.
2026-08-01 22:22:27 +08:00
Tianyi Cui
0758839b00
Merge fix/web-agent-runtime-context into fix/web-gui-feedback-loop
2026-08-01 22:15:36 +08:00
Tianyi Cui
d74048345a
Merge origin/master into fix/web-agent-runtime-context
2026-08-01 22:04:10 +08:00
ZiyaZhang
7aa9e51084
fix(cli): give shipped web search a 60s budget
2026-08-01 06:15:16 -07:00
Tianyi Cui
95e0dc0583
Merge remote-tracking branch 'origin/master' into worktree/default-workspace-write-ui-20260731
2026-08-01 19:55:15 +08:00
Tianyi Cui
b02b7b2e50
Merge remote-tracking branch 'origin/master' into feature/installer-adopt-checkout
2026-08-01 19:44:12 +08:00
Huanqi Cao
2726762e69
merge: refresh against the advancing master
2026-08-01 19:41:44 +08:00
Tianyi Cui
cb57ee9fad
Merge remote-tracking branch 'origin/master' into worktree/default-workspace-write-ui-20260731
2026-08-01 19:41:42 +08:00
Tianyi Cui
c3463ffd62
Merge pull request #1085 from deepseek-harness/worktree/install-interface-choice
...
feat(install): choose Web UI or TUI after setup
2026-08-01 19:41:04 +08:00
Ziya
7ba9059056
Merge pull request #1116 from deepseek-harness/agent/fix-frontend-plugin-loader-dependency
...
fix(cli): point missing frontend dist at full build
2026-08-01 07:40:01 -04:00
Huanqi Cao
8c6179d69d
feat(pwsh): add the pwsh-local executor and the pwsh tool
...
Windows-native execution foundation: PwshLocalExecutor implements the bash
executor seam over ctx.subprocess (pwsh -NoLogo -NoProfile -NonInteractive
-Command, one argv element, no quoting layer; resolvePwshPath probes
PowerShell 7 / PATH / Windows PowerShell 5.1 as a pure function), and
tool-pwsh is the minimal PowerShell-dialect model-facing tool over ctx.bash
(foreground only, managed DSH_* env, timeout/signal/exit markers, terminal
and generic presenters). Both packages carry full suites (real pwsh,
self-skipping without it) at per-file 100% coverage; vitest's Windows
exclusion narrows from packages/bash/* to the bash-requiring packages so the
pwsh suites run natively on Windows too. The CLI gains the workspace deps
and tsconfig projects without mounting either plugin; the Windows-default
roadmap is recorded as a proposed Agent Note.
2026-08-01 18:48:17 +08:00
Tianyi Cui
1892d97930
Merge origin/master into worktree/install-interface-choice
2026-08-01 18:06:49 +08:00
Tianyi Cui
d0a0bb92ca
Merge remote-tracking branch 'origin/master' into worktree/default-workspace-write-ui-20260731
...
# Conflicts:
# apps/cli/README.i18n.yaml
2026-08-01 18:06:19 +08:00
Huanqi Cao
18700f428d
feat(fs-search): spawn the packaged ripgrep binary through the subprocess seam
...
glob/grep now run the @vscode/ripgrep binary via ctx.subprocess with a plain
argv vector: no system rg install, no shell layer, unconditional registration.
The load-time command -v rg probe and the bash-seam coupling are removed;
timeouts ride the cooperative exec.signal plus the seam's terminate
escalation. The fs-glob-sampling ACP snapshot executes the real packaged
binary against an mtime-pinned fixture. Adds the packaged-ripgrep-search
Agent Note, updates the roster-note facts and both shipped-composition e2es,
and regenerates the doc catalogs and third-party notices (surfacing
pre-existing manifest drift plus the new @vscode/ripgrep row; the notices
generator also learns pnpm 11's truncated virtual-store names).
2026-08-01 18:04:38 +08:00
Tianyi Cui
d7289febdb
Merge pull request #959 from deepseek-harness/fix/checkout-workdir-prompt
...
fix(prompt): distinguish checkout from workdir
2026-08-01 17:54:34 +08:00
ZiyaZhang
90c5635355
fix(cli): point missing frontend dist at full build
2026-08-01 02:12:22 -07:00
Turtle
cb1a6c74dc
Merge remote-tracking branch 'origin/master' into fix/checkout-workdir-prompt
...
# Conflicts:
# packages/ui/app-boot/README.i18n.yaml
# packages/ui/app-boot/README.md
# packages/ui/app-boot/README.zh.md
2026-08-01 00:04:49 +08:00
Turtle
2225ad435e
test: cover experimental gate through the built bin; fix Agent Note facts
2026-07-31 23:37:53 +08:00
Turtle
20e51abd4e
feat: rename experimental-meta/-upgrade to meta/upgrade behind --experimental gate
2026-07-31 23:37:53 +08:00
_Kerman
e0988abc74
Merge remote-tracking branch 'origin/master' into xtr/react-loop-simplification
...
# Conflicts:
# .agents/notes/implemented/architecture/2026-06-21-bounded-llm-request-recovery.i18n.yaml
# .agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.i18n.yaml
# .agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.md
# .agents/notes/implemented/feature/2026-06-18-compaction-capability-seam.zh.md
# .agents/notes/implemented/feature/2026-07-06-sandbox.i18n.yaml
# .agents/notes/implemented/feature/2026-07-06-sandbox.md
# .agents/notes/implemented/feature/2026-07-06-sandbox.zh.md
# .agents/notes/implemented/feature/2026-07-27-tmux-location-context.i18n.yaml
# .agents/notes/implemented/simplification/2026-06-20-public-agent-stop-surface.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-28-remove-synthetic-log-only-turns.i18n.yaml
# .agents/notes/implemented/simplification/2026-07-30-private-agent-send.i18n.yaml
# docs/architecture.i18n.yaml
# docs/architecture.md
# docs/architecture.zh.md
# docs/config-catalog.md
# docs/cordis-catalog/events.md
# docs/cordis-catalog/services.md
# docs/core-data-structures/compaction.i18n.yaml
# docs/core-data-structures/core.i18n.yaml
# docs/core-data-structures/core.md
# docs/core-data-structures/core.zh.md
# docs/core-data-structures/llm-streaming.i18n.yaml
# docs/core-data-structures/llm-streaming.md
# docs/core-data-structures/llm-streaming.zh.md
# docs/core-data-structures/session.i18n.yaml
# docs/event-producer-consumer.md
# docs/module-graph.md
# docs/persistence-catalog.md
# examples/acp-agent/tests/goal-snapshots/goal-session/session.expected.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# examples/acp-agent/tests/snapshots/advanced-toolchain/session.jsonl
# examples/acp-agent/tests/snapshots/bash-spill/session.jsonl
# examples/acp-agent/tests/snapshots/bash-tool-turn/session.jsonl
# examples/acp-agent/tests/snapshots/both-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/cancel-tool-calls/session.jsonl
# examples/acp-agent/tests/snapshots/cancel/session.jsonl
# examples/acp-agent/tests/snapshots/code-mode-turn/session.jsonl
# examples/acp-agent/tests/snapshots/code-mode-workspace-context/session.jsonl
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# examples/acp-agent/tests/snapshots/empty-response-retry/session.jsonl
# examples/acp-agent/tests/snapshots/error-finish/session.jsonl
# examples/acp-agent/tests/snapshots/escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/escalation-rejected/session.jsonl
# examples/acp-agent/tests/snapshots/fs-edit/session.jsonl
# examples/acp-agent/tests/snapshots/fs-escalation-approved/session.jsonl
# examples/acp-agent/tests/snapshots/fs-glob-sampling/session.jsonl
# examples/acp-agent/tests/snapshots/fs-policy-reject/session.jsonl
# examples/acp-agent/tests/snapshots/fs-read-window/session.jsonl
# examples/acp-agent/tests/snapshots/fs-read/session.jsonl
# examples/acp-agent/tests/snapshots/fs-write-overwrite/session.jsonl
# examples/acp-agent/tests/snapshots/fs-write/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-invalid-matcher/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-posttool-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-ask/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-pretool-deny/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-cc-stop-continue/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-invalid-matcher/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-posttool-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-pretool-block/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-promptsubmit-context/session.jsonl
# examples/acp-agent/tests/snapshots/hook-codex-stop-continue/session.jsonl
# examples/acp-agent/tests/snapshots/lsp-definition/session.jsonl
# examples/acp-agent/tests/snapshots/multi-turn/session.jsonl
# examples/acp-agent/tests/snapshots/packed-chunks/session.jsonl
# examples/acp-agent/tests/snapshots/parallel-tool-calls/session.jsonl
# examples/acp-agent/tests/snapshots/pty-tools/session.jsonl
# examples/acp-agent/tests/snapshots/repeat-tool-guard/session.jsonl
# examples/acp-agent/tests/snapshots/session-query-spill/session.jsonl
# examples/acp-agent/tests/snapshots/session-sandbox-root/session.jsonl
# examples/acp-agent/tests/snapshots/session-title-after-turn/session.jsonl
# examples/acp-agent/tests/snapshots/skill-load/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-depth-two-rejection/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-fork/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-mixed/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.2.jsonl
# examples/acp-agent/tests/snapshots/subagent-multi/session.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/session.1.jsonl
# examples/acp-agent/tests/snapshots/subagent-spawn/session.jsonl
# examples/acp-agent/tests/snapshots/text-turn/session.jsonl
# examples/acp-agent/tests/snapshots/todo-write/session.jsonl
# examples/acp-agent/tests/snapshots/tool-call-turn/session.jsonl
# examples/acp-agent/tests/snapshots/web-fetch/session.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/session.1.jsonl
# examples/acp-agent/tests/snapshots/workflow-run/session.jsonl
# examples/acp-agent/tests/snapshots/workspace-context/session.jsonl
# examples/acp-agent/tests/snapshots/workspace-edit/session.jsonl
# examples/headless-agent/tests/semantic-checkpoint-snapshots/tool-outcome-unknown/session.expected.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.1.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.2.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/session.jsonl
# examples/headless-agent/tests/snapshots/advanced-toolchain/stream-json.expected.jsonl
# examples/headless-agent/tests/snapshots/goal-tools/stream-json.expected.jsonl
# examples/headless-agent/tests/snapshots/missing-credential/stream-json.expected.jsonl
# examples/headless-agent/tests/snapshots/provider-retry/stream-json.expected.jsonl
# examples/headless-agent/tests/snapshots/pty-tools/session.jsonl
# examples/headless-agent/tests/snapshots/pty-tools/stream-json.expected.jsonl
# examples/headless-agent/tests/snapshots/ralph-loop/stream-json.expected.jsonl
# examples/headless-agent/tests/subagent-inheritance-snapshots/parent-override/child.expected.jsonl
# examples/headless-agent/tests/subagent-inheritance-snapshots/parent-override/parent.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/bash-tool/notifications.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/bash-tool/session.jsonl
# examples/jsonrpc-agent/tests/snapshots/persistent-tools/notifications.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/persistent-tools/session.jsonl
# examples/jsonrpc-agent/tests/snapshots/subagent-spawn/notifications.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/subagent-spawn/session.1.jsonl
# examples/jsonrpc-agent/tests/snapshots/subagent-spawn/session.jsonl
# examples/jsonrpc-agent/tests/snapshots/text-turn/notifications.expected.jsonl
# examples/jsonrpc-agent/tests/snapshots/text-turn/session.jsonl
# packages/client/runtime/README.i18n.yaml
# packages/client/runtime/src/client/sessions/request-inspection.ts
# packages/compact/compact-basic/README.i18n.yaml
# packages/compact/compact-basic/README.md
# packages/compact/compact-basic/README.zh.md
# packages/compact/compact-basic/src/index.ts
# packages/context/time-context/tests/time-context.spec.ts
# packages/context/tmux-context/README.i18n.yaml
# packages/context/tmux-context/tests/tmux-context.spec.ts
# packages/context/workspace-context/tests/workspace-context.spec.ts
# packages/cordis/tool-cordis/src/api-catalog.ts
# packages/core/agent-loop/README.i18n.yaml
# packages/core/agent-loop/README.md
# packages/core/agent-loop/README.zh.md
# packages/core/agent-loop/src/agent.ts
# packages/core/agent/README.i18n.yaml
# packages/core/agent/README.md
# packages/core/agent/README.zh.md
# packages/core/agent/src/types.ts
# packages/core/session/README.i18n.yaml
# packages/core/session/README.md
# packages/core/session/README.zh.md
# packages/fs/tool-str-replace-editor/tests/tools.spec.ts
# packages/goal/command-goal/tests/command-goal.spec.ts
# packages/goal/goal/tests/goal.spec.ts
# packages/host/apiproxy/README.i18n.yaml
# packages/host/apiproxy/README.md
# packages/host/apiproxy/README.zh.md
# packages/host/apiproxy/src/api/index.ts
# packages/host/apiproxy/tests/api-proxy-workspace.spec.ts
# packages/llm/llm/README.i18n.yaml
# packages/llm/llm/README.md
# packages/llm/llm/README.zh.md
# packages/llm/llm/src/index.ts
# packages/pty/pty-local/tests/index.spec.ts
# packages/pty/pty-local/tests/local.spec.ts
# packages/pty/pty/tests/service.spec.ts
# packages/pty/tool-bash-persistent/tests/loader-composition.spec.ts
# packages/pty/tool-bash-persistent/tests/tools.spec.ts
# packages/pty/tool-pty/tests/loader-composition.spec.ts
# packages/pty/tool-pty/tests/tools.spec.ts
# packages/session-persistence/session-checkpoint-policy/tests/crash-recovery.e2e.ts
# packages/skill/tool-skill/tests/tool-skill.spec.ts
# packages/tasks/tasks-local/tests/tasks.spec.ts
# packages/ui/tui/README.i18n.yaml
# packages/ui/tui/tests/tui.spec.ts
# packages/ui/user-approval/src/index.ts
# packages/ui/user-approval/tests/approval.spec.ts
2026-07-31 22:16:40 +08:00
_Kerman
afedf18ccf
fix inbox lifecycle downstream contracts
2026-07-31 22:00:39 +08:00
Tianyi Cui
1f6f1cc32f
Merge origin/master into workspace-write default
...
# Conflicts:
# apps/cli/README.i18n.yaml
2026-07-31 20:44:15 +08:00
Tianyi Cui
b694c33d18
Default shipped UI sessions to workspace-write
2026-07-31 20:39:53 +08:00
Turtle
b35b06396d
fix(app-boot): keep the fail-loud exit fatal while the terminal is released
...
Review of the previous commit found two defects in the release path, both
reproduced against the implementation:
- The timeout guarding a never-settling release was unref'ed. An
unhandledRejection listener suppresses Node's default fatal exit, so with
nothing else referenced the process reached an empty event loop and exited
0 on the very failure it was reporting. Keep the timer referenced and clear
it once the race settles.
- The handler uninstalled itself before awaiting the release. A second
concurrent rejection then became uncaught and killed the process
mid-teardown, stranding exactly the terminal state this restores. Replace
the uninstall with a latch: the first rejection is the reported one, and
later rejections (teardown's own included) fall through to the pending exit.
Add the PTY regression the fake-process tests cannot express: boot the shipped
tree over a fixture whose llm-pi-ai providers value is list-shaped, expect exit
1, and assert the captured bytes carry both the diagnostic and ESC[?2004l.
Against the pre-fix source the stream ends at ESC[?2004h ESC[>7u ESC[?u ESC[c
with no reset and the case fails, so it pins the actual bug.
Split the two-shape formatting test into one install per case; a latched
handler reports once by design.
2026-07-31 20:37:16 +08:00
Turtle
70f37206d2
fix(app-boot): release the terminal before a fatal load exit
...
A dsh launch whose config failed validation returned the user to a broken
shell: typing was invisible and the next command was mangled by a stray
Device Attributes reply (1;2;4cecho ...).
The Loader mounts entries concurrently, so ui-tui can already hold the
terminal (raw mode, bracketed paste, keyboard protocol, plus an in-flight
DA query) when a sibling entry rejects on its own config. installFailLoud
wrote its diagnostic and exited immediately, so nothing disposed the tree
and ProcessTerminal.stop() never ran.
Give installFailLoud an optional release teardown, awaited between the
diagnostic and the exit and bounded by FAIL_LOUD_RELEASE_TIMEOUT_MS. The
TUI launcher passes one that disposes the root context, reaching the same
shutdown() the /exit path already uses (drainInput() + ui.stop()). The
context is captured in boot()'s prepare hook because the rejection arrives
while boot() is still in flight.
Bins that pass no release keep the previous behavior exactly.
2026-07-31 20:37:16 +08:00
Turtle
dc88440dad
Merge remote-tracking branch 'origin/master' into codex/experimental-cli-command-names
...
# Conflicts:
# apps/cli/README.i18n.yaml
# packages/ui/tui/README.i18n.yaml
2026-07-31 20:18:15 +08:00
Turtle
60a0bcd358
feat(cli): mark meta and upgrade commands experimental
2026-07-31 20:16:19 +08:00
Tianyi Cui
4ada0017cf
fix(install): build workspace artifacts before web
2026-07-31 19:57:51 +08:00
Tianyi Cui
c83159f1c0
test(cli): acknowledge welcome in composition smoke
2026-07-31 19:48:04 +08:00
Tianyi Cui
0d949cfe67
feat(install): choose web or tui after setup
2026-07-31 19:47:54 +08:00
Tianyi Cui
7d04e4654a
Merge remote-tracking branch 'origin/master' into worktree/pr1018-todo-retarget-20260731
...
# Conflicts:
# apps/cli/README.i18n.yaml
# packages/ui/tui/README.i18n.yaml
2026-07-31 19:23:34 +08:00
Tianyi Cui
2abf643326
Merge pull request #1040 from deepseek-harness/feat/recommended-deployment-presets
...
feat(cli): even out the shipped tool rosters across both surfaces
2026-07-31 19:21:18 +08:00
Tianyi Cui
3aa98ba609
Merge remote-tracking branch 'origin/master' into worktree/pr1018-todo-retarget-20260731
...
# Conflicts:
# apps/cli/README.i18n.yaml
# apps/cli/README.md
# apps/cli/README.zh.md
2026-07-31 19:17:50 +08:00
hypatiamay
dcc9e50f84
Merge pull request #1026 from deepseek-harness/feat/compaction-progress-visibility
...
feat(tui): show live compaction progress
2026-07-31 19:17:43 +08:00
Tianyi Cui
c16e33d8db
Merge latest master into feat/recommended-deployment-presets
...
# Conflicts:
# apps/cli/README.i18n.yaml
# apps/web/tsconfig.json
# tsconfig.host.json
2026-07-31 19:16:05 +08:00
Tianyi Cui
53e7e5b247
docs(cli): track welcome storage migration
2026-07-31 19:14:24 +08:00
Tianyi Cui
1c1a65f208
Merge origin/master into feat/recommended-deployment-presets
...
# Conflicts:
# apps/cli/README.i18n.yaml
# apps/cli/package.json
# pnpm-lock.yaml
2026-07-31 18:32:24 +08:00
Tianyi Cui
1f8dd72bd9
Merge latest master into manual compaction
2026-07-31 18:28:21 +08:00
Tianyi Cui
54242bef1c
Merge latest master into manual compaction
2026-07-31 18:26:40 +08:00
Tianyi Cui
e9c040894f
fix(cli): align shipped composition contracts
2026-07-31 18:25:03 +08:00
Tianyi Cui
ba43750e68
Merge pull request #1070 from deepseek-harness/agent/memory-mcp-examples
...
feat(examples): add generic MCP memory examples
2026-07-31 18:18:21 +08:00
Tianyi Cui
20cb7e7360
Merge latest master into manual compaction
2026-07-31 17:58:30 +08:00
Tianyi Cui
6e26f9fd83
Merge latest master into manual compaction
...
# Conflicts:
# apps/cli/README.i18n.yaml
# docs/architecture.i18n.yaml
# docs/event-producer-consumer.md
# docs/module-graph.md
# examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl
# packages/compact/compact-basic/README.i18n.yaml
# packages/pty/pty-local/tests/index.spec.ts
2026-07-31 17:57:11 +08:00
Tianyi Cui
1cacef8bac
fix(cli): deduplicate Core Web overlay patch
2026-07-31 17:56:28 +08:00
Tianyi Cui
b45c3a40b9
Merge remote-tracking branch 'origin/worktree/core-web-minimal-profile'
2026-07-31 17:55:53 +08:00
Tianyi Cui
827a5e2b32
fix(cli): keep Core Web profile at two tools
2026-07-31 17:55:07 +08:00
Tianyi Cui
e7d31c64db
fix(cli): keep Core Web profile minimal
2026-07-31 17:54:17 +08:00
Tianyi Cui
d03927f69b
Merge branch 'master' into worktree/core-web-minimal-profile
2026-07-31 17:52:08 +08:00
Tianyi Cui
198a9a42f9
Merge latest master into worktree/core-web-minimal-profile
...
# Conflicts:
# apps/cli/README.i18n.yaml
2026-07-31 17:51:40 +08:00
Tianyi Cui
a3905519fb
Merge pull request #1068 from deepseek-harness/codex/dsh-home-path
...
refactor(config): centralize DSH home paths
2026-07-31 17:50:41 +08:00