Commit Graph
18711 Commits
Author SHA1 Message Date
pku-xht 34db64d90d refactor(subagent): simplify Codex permission runtime 2026-08-15 19:02:04 +08:00
pku-xht a016e17393 test(subagent): cover Codex permission branches 2026-08-15 18:39:30 +08:00
pku-xht a49c0d26f9 merge: propagate Claude permission fixes 2026-08-15 18:30:00 +08:00
pku-xht a3deb9aa5e fix(subagent): keep Claude plan mode non-executing 2026-08-15 18:15:53 +08:00
pku-xht 7eb203069c feat(subagent): add Codex non-interactive permission modes 2026-08-15 18:07:08 +08:00
pku-xht 62da706b64 fix(subagent): address Claude permission review findings 2026-08-15 17:46:13 +08:00
Huanqi Cao c854749c34 fix(pty): ship dsh-pwsh-local in the python runtime closure 2026-08-15 17:05:19 +08:00
pku-xht 4d03472cd0 feat(subagent): add Claude Code non-interactive permission modes 2026-08-15 16:37:19 +08:00
Yichen Jiang 7e95a00c8a fix(llm): align replay state with assembled content and degrade unusable state
A max-tokens response that included a tool call persisted assembler-transformed
content next to replay metadata projected from the untransformed native message,
so the next request died in history reconstruction with INVALID_REPLAY_STATE and
the session stayed permanently stuck.

Write side: the finish chunk's replayState becomes a typed ReplayEnvelope —
opaque response-level metadata plus optional per-block entries aligned with the
emitted block sequence. BlockAssembler computes one keep/drop decision for
blocks and entries together, so stored metadata always describes stored content
and retained blocks keep their signatures. pi-ai splits its state into a
version-2 response half and per-block signature entries.

Read side: durable content is authoritative. toPiAssistant degrades any
unusable state — foreign kind, other versions (including the flat v1 form
already on disk), malformed metadata, or content/block mismatches — to the
existing provider-neutral conversion with an onReplayDegrade diagnostic instead
of failing the request, which un-bricks sessions poisoned before this change.

Covered by assembler and replay unit tests, an agent-loop continuation
regression, keyless real-composition continuation tests (native pruned-envelope
replay and legacy flat-state degrade), and the authored keyless snapshot
scenario max-tokens-continue through the assembled ACP app.
2026-08-15 16:07:30 +08:00
j-xiang 3b3abccba4 Merge branch 'master' into docs/web-ui-guide-polish 2026-08-15 13:49:53 +08:00
Huanqi Cao 06b766711c fix(pty): pin UTF-8 output encodings in the persistent pwsh bootstrap 2026-08-15 11:45:13 +08:00
Huanqi Cao f61e884917 fix(gates): declare the MIT license for tool-pwsh-persistent 2026-08-15 11:25:23 +08:00
Huanqi Cao a4e2e1e6e9 fix(gates): align tool-pwsh-persistent version and publish access with the rc.6 release 2026-08-15 11:17:35 +08:00
Huanqi Cao bc6a775a31 merge: bring master into feat/pwsh-persistent-pty 2026-08-15 11:14:45 +08:00
Yichen Jiang a8dc6f9776 fix(pty): keep the controlled prompt so persistent bash settles fast
tool-bash-persistent overwrote the backend's PS1, so terminal-bash prompt
readiness never matched and every send degraded to the 3.5s silence tier
(idleSilenceMs + handoffGraceMs) under production defaults.

The controlled PROMPT_COMMAND now re-asserts PS1 before every prompt, so an
in-shell override never survives to the next prompt. The tool initializes
with stty -echo alone and detects the no-end-marker fallback through the
seam's stdin_read wait reason instead of matching its own prompt text.

Tool calls drop from 7180/3560/3566 ms to 355/88/91 ms (spawn+init+echo,
echo, pwd; darwin, production defaults). The loader composition suite now
pins the fast path by pushing idleSilenceMs beyond the send bound, and a
real-PTY case proves PS1 self-healing.

Fixes #2585
2026-08-15 11:06:57 +08:00
pku-xht 1446e36a03 test(subagent): pin Codex payload diagnostic 2026-08-15 06:45:30 +08:00
pku-xht 02e4100f2a fix(subagent): normalize Codex payload diagnostics 2026-08-15 06:08:31 +08:00
pku-xht dbea39a125 fix(subagent): sample Codex diagnostics after cleanup 2026-08-15 06:03:47 +08:00
pku-xht 021b361d4b Merge Claude provider Preset example revalidation 2026-08-15 05:49:46 +08:00
pku-xht ac93515943 fix(subagent): preserve Codex payload diagnostics 2026-08-15 05:49:35 +08:00
pku-xht ab696d84c2 docs(subagent): show disabled Claude tool row 2026-08-15 05:36:23 +08:00
pku-xht cb229c8964 refactor(infra): keep Codex notices direct 2026-08-15 05:26:12 +08:00
pku-xht 4775095aa2 fix(infra): remove stale Codex dependency hints 2026-08-15 04:41:50 +08:00
pku-xht d1a767c66b test(infra): isolate Codex alias fixture 2026-08-15 04:32:30 +08:00
pku-xht bc91897adb test(cli): load product Bundles through Profile 2026-08-15 04:24:03 +08:00
pku-xht 72cb49dbbb refactor(subagent): narrow Codex runtime ownership 2026-08-15 04:12:41 +08:00
pku-xht 1c81da983e Merge Claude provider documentation revalidation 2026-08-15 04:03:17 +08:00
pku-xht ffa119e86e docs(subagent): clarify Claude tool opt-in 2026-08-15 03:56:12 +08:00
pku-xht b6c52c82bb fix(infra): resolve Codex notices from wrapper 2026-08-15 03:52:23 +08:00
pku-xht dbe2887544 Merge installable Claude Code provider parent 2026-08-15 03:28:42 +08:00
pku-xht b2178ade80 feat(subagent): make Codex provider directly installable 2026-08-15 03:25:43 +08:00
imccyu 5bb600f9fb Merge pull request #2577 from deepseek-harness/revert-2571-worktree-reducepkg
Revert "fix(client): declare browser-only externals as devDependencies"
2026-08-15 02:49:25 +08:00
imccyu f2830fec6d Revert "fix(client): declare browser-only externals as devDependencies" 2026-08-15 02:19:09 +08:00
imccyu 6c18b04a6b Merge pull request #2571 from deepseek-harness/worktree-reducepkg
fix(client): declare browser-only externals as devDependencies
2026-08-15 01:57:43 +08:00
imccyu ef249da2e9 perf(web): remove the module preload polyfill
The preload links stay; browsers that ignore them fetch vendor when index imports it.
2026-08-15 01:41:15 +08:00
imccyu b6d0195d5f fix(scripts): resolve workspace names to source in the notices dry run
The shell's Vite config aliases a few workspace packages to source; every other
workspace name resolved through node_modules to a lib/ entry the real build has
emitted but a clean checkout has not, so the generator only worked on a built
tree — and a static gate has to pass on a clean one. The dry run now supplies
source aliases for the names the shell leaves out.

Aliases rather than the recorder's resolveId hook, because Vite resolves a
stylesheet @import through aliases alone, and the theme package publishes its
stylesheets from lib/styles/. lib/ is compiled from src/, and the recorded set is
identical either way: 24 packages on a built tree and on a clean one.
2026-08-14 22:35:11 +08:00
imccyu 1fae5dc40e fix(scripts): disclose browser-bundled packages as shipped
Moving react, shiki, katex and the markdown pipeline to devDependencies took
them out of the notices runtime tier, which tiers by declaring section — yet
their code is inside lib/client.js and the shell dist. The generator now learns
what the browser artifacts carry from the real build configs: each client bundle
through its own tsdown config, the shell through apps/web's Vite config, with a
recorder that resolves each bare specifier, notes the package behind it, and
stops there. About three seconds, and only packages a resolved file backs, so a
bundler's virtual module is not mistaken for a shipped one.

Net effect on the file: the type-only packages @types/mdast and
micromark-util-types move to the development tier, because neither ships code.
2026-08-14 22:24:23 +08:00
imccyu 7d59006fd1 docs(notes): record how the notices tier learns what ships
A package a published browser artifact carries is a runtime disclosure whatever
section declares it, and the build answers which ones those are. Record that
clause, the dry run behind it, why a bundler's virtual module is not a shipped
package, why a types-only package is not either, and the generator run cost the
dry run adds.
2026-08-14 22:24:23 +08:00
imccyu 93a95e838d fix(client): declare browser-only externals as devDependencies
react, react-dom, shiki, katex, clsx, the micromark and mdast families and nine
more reach only browser artifacts, which resolve nothing on a user's machine.
Moving 79 declarations out of dependencies and non-optional peerDependencies
drops 103 tarballs and 6.05 MB from an install of the published CLI.
2026-08-14 20:18:39 +08:00
imccyu 6e77499326 feat(scripts): gate browser-only dependencies out of the install face
verify-client-runtime-deps walks each package's host and browser faces from the
entries its manifest publishes, over the bound host and client Programs, and
reports an external package no host-face reference reaches. Wired into hygiene.

A workspace name is out of scope: it also states which package supplies an
injected service or a mounted Remote contribution, and the app installs it
either way. A package whose published Node entry has no source counterpart is
skipped and named, because a generated artifact carries imports no source
states.
2026-08-14 20:18:35 +08:00
imccyu 48d14b4a7c docs(client): state where a browser-only dependency is declared
Browser artifacts resolve nothing on a user's machine: tsdown inlines every
non-platform specifier, the shell dist answers the rest from its frozen module
table, and Vite inlines the shell's own imports into the published dist. Record
the resulting declaration rule, and the Agent Note behind it.
2026-08-14 20:17:50 +08:00
lsdsjy 4edbdd443e fix(web): repair Safari textarea soft-wrap shrink 2026-08-14 17:52:09 +08:00
j-xiang e4d3f29621 Merge branch 'master' into docs/web-ui-guide-polish 2026-08-14 17:43:01 +08:00
imccyu 887c4977db Merge pull request #2546 from deepseek-harness/fix/publish-deporder
fix(release): order publication by installed dependencies and keep npm's output
2026-08-14 17:24:48 +08:00
kingwl 5201b84863 fix(web): avoid history pagination stack overflow 2026-08-14 16:40:30 +08:00
pku-xht 15612c1998 review fix: trim duplicate closure evidence 2026-08-14 16:40:23 +08:00
Yichen Jiang ebcf7d0423 fix: preserve product identifiers across rescope 2026-08-14 16:25:41 +08:00
Yichen Jiang 345b3f69ca Merge remote-tracking branch 'origin/master' into worktree/web-file-session-references 2026-08-14 16:19:31 +08:00
pku-xht 21b93a4568 Merge commit '61e35fb8ebb2fd8b68ed0c64f586602bb825bd06' into codex/installable-product-subagents
# Conflicts:
#	.agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.i18n.yaml
#	.agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.md
#	.agents/notes/implemented/architecture/2026-08-10-product-subagent-providers-in-shared-host.zh.md
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.md
#	.agents/notes/implemented/feature/2026-08-04-claude-code-and-codex-subagent-backends.zh.md
#	apps/cli/config/agent-presets/code/agent.cordis.yml
#	apps/cli/config/agent-presets/cordis/agent.cordis.yml
#	apps/cli/config/agent-presets/cordis/skills/editing-cordis-compositions/SKILL.md
#	apps/cli/config/agent-presets/standard/agent.cordis.yml
#	apps/cli/tests/web-agent-presets.e2e.ts
#	examples/acp-agent/tests/fixtures/subagent/subagent-claude-code/cordis.yml
#	examples/acp-agent/tests/fixtures/subagent/subagent-claude-code/driver.ts
#	packages/bundle/base/README.i18n.yaml
#	packages/bundle/base/README.md
#	packages/bundle/base/README.zh.md
#	packages/subagent/subagent-claude-code/README.i18n.yaml
#	packages/subagent/subagent-claude-code/README.md
#	packages/subagent/subagent-claude-code/README.zh.md
#	packages/subagent/subagent-claude-code/tests/loader-composition.e2e.ts
2026-08-14 16:18:47 +08:00
Yichen Jiang 9b0f6f9017 Merge remote-tracking branch 'origin/master' into worktree/web-file-session-references
# Conflicts:
#	.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.i18n.yaml
#	.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.md
#	.agents/notes/implemented/architecture/2026-07-25-web-command-surfaces-and-assembly.zh.md
#	.agents/notes/implemented/feature/2026-07-21-cross-session-references.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-21-cross-session-references.md
#	.agents/notes/implemented/feature/2026-07-21-cross-session-references.zh.md
#	.agents/notes/implemented/feature/2026-07-27-web-subagent-conversations.i18n.yaml
#	apps/cli/config/web.cordis.yml
#	apps/cli/package.json
#	apps/web/tests/scaffold.ts
#	docs/capability-seams.md
#	docs/config-catalog.md
#	docs/cordis-catalog/services.md
#	docs/event-producer-consumer.md
#	docs/module-graph.md
#	packages/client/connection/src/client/api.ts
#	packages/client/connection/src/client/fixture.ts
#	packages/client/connection/src/client/index.ts
#	packages/client/runtime/src/client/contract/session.ts
#	packages/client/runtime/src/client/sessions/session.ts
#	packages/client/runtime/tests/session.client.spec.ts
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/README.md
#	packages/client/ui-conversation/README.zh.md
#	packages/client/ui-conversation/src/client/chat/ChatView.tsx
#	packages/client/ui-conversation/src/client/chat/MessageItem.tsx
#	packages/client/ui-conversation/src/client/chat/chat-flow.ts
#	packages/client/ui-conversation/src/client/input/facade.ts
#	packages/client/ui-conversation/src/client/input/hub.ts
#	packages/client/ui-conversation/tests/apply-inject.client.spec.tsx
#	packages/client/ui-conversation/tests/chat-branch-tails.client.spec.tsx
#	packages/client/ui-conversation/tests/chat-view.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-input-trigger/package.json
#	packages/client/ui-input-trigger/src/types.ts
#	packages/client/ui-jobs/README.i18n.yaml
#	packages/client/ui-slash/README.md
#	packages/client/ui-slash/README.zh.md
#	packages/client/ui-subagent/README.i18n.yaml
#	packages/client/ui-subagent/README.md
#	packages/client/ui-subagent/README.zh.md
#	packages/client/ui-subagent/package.json
#	packages/client/ui-subagent/src/client/index.ts
#	packages/client/ui-subagent/tests/browser-plugin.client.spec.ts
#	packages/client/ui-subagent/tsconfig.json
#	packages/context/session-reference/README.i18n.yaml
#	packages/context/session-reference/README.md
#	packages/context/session-reference/README.zh.md
#	packages/cordis/tool-cordis/src/api-catalog.ts
#	packages/core/session/README.i18n.yaml
#	packages/core/session/README.zh.md
#	packages/host/apiproxy/README.i18n.yaml
#	packages/host/apiproxy/README.md
#	packages/host/apiproxy/README.zh.md
#	packages/host/apiproxy/src/api-proxy.ts
#	packages/host/apiproxy/src/api/index.ts
#	packages/host/apiproxy/src/api/rpc-map.ts
#	packages/host/apiproxy/src/api/rpc.schema.ts
#	packages/host/apiproxy/src/api/rpc.ts
#	packages/host/apiproxy/src/api/sessions.ts
#	packages/host/apiproxy/src/fetch/client.ts
#	packages/host/apiproxy/src/fetch/handler.ts
#	packages/host/apiproxy/src/index.ts
#	packages/host/apiproxy/tests/client-handler.spec.ts
#	packages/host/apiproxy/tsconfig.json
#	pnpm-lock.yaml
#	scripts/gen-cordis-catalog.ts
#	scripts/gen-doc-graphs.ts
#	scripts/verify-package-readme-model-experience.ts
#	tsconfig.base.json
#	tsconfig.client.json
#	vitest.config.ts
2026-08-14 16:18:40 +08:00