Commit Graph
750 Commits
Author SHA1 Message Date
sjw1231 ea4837abb1 feat(fs): keep apply_patch opt-in and the observation policy mounted
This pull request lands the tool; switching the shipped defaults is a
separate pull request stacked on it. Every shipped `tool-fs` row states
`applyPatch: false`, the `fs-observation-policy` row stays mounted, the
write, edit, and apply_patch guidance names the policy, and every recorded
expectation outside the apply-patch scenarios returns to the master
baseline. The upgrade guide, the parity exception, and the optional
classification of the policy package move to the stacked change.
2026-10-29 18:36:31 +08:00
sjw1231 d8243a3f52 feat(base): enable apply_patch on the dsh-base tool-fs row
The SDK/Desktop parity check requires the `standard` tool sets to match, so
the base row enables apply_patch like the Web standard preset; the SDK PTC
overlay keeps that row while the Desktop PTC preset lists its own, which the
parity exceptions now record. fs-observation-policy, no longer mounted by
default, is classified as an optional product package.

Every headless, SDK, and ACP recording follows: sidecars and recorded headers
gain the apply_patch schema, the fixed-budget compaction scenarios pin
`applyPatch: false` so their recorded thresholds hold (model-switch-notice and
session-resume own their schema sidecars again), the parent presets that
borrow the default pin mirror the base row, and the pwsh and Python PTC pins
carry the schema and guidance.
2026-10-29 17:34:25 +08:00
sjw1231 e6f54cecbb Merge branch 'master' into feat/apply-patch
Keeps the apply_patch toolview registration with master's file-menu inject,
takes master's shortened slot JSDoc, re-adds the seven filesystem type-equiv
manifest entries, regenerates the event matrix and client catalogs, moves the
fs-observation-policy upgrade guide under v0.2.2-alpha.2 with the matching
fs-patch version, and refreshes the two SDK scenarios master added for the
write and edit guidance change.
2026-10-29 17:00:06 +08:00
sjw1231 fe5450b152 feat(fs): ship without the observation policy and enable apply_patch in the Web standard preset
Evaluation on the shipped Web composition decided the defaults: the
`fs-observation-policy` row in dsh-base ships `disabled: true`, so write,
edit, and apply_patch mutate unconditionally in every profile; the Web
`standard` preset lists apply_patch; and the tool-fs `applyPatchGuard` switch
is gone, apply_patch always consulting the fs/* intent waterfalls like the
other mutating tools.

The write and edit guidance stops citing the policy as the default, and the
apply_patch guidance asks for enough hunk context instead of a prior read.
The two recordings that capture a policy refusal (fs-policy-reject and
apply-patch-rejected) re-enable the row through a per-scenario
runtime.cordis.yml; every other sidecar follows the prompt change, and the
Web standard-preset recordings gain the apply_patch schema. An upgrade guide
records the default change.
2026-10-29 16:38:42 +08:00
Shigma 1aead808e2 chore(cordis): merge master into cordis-core-rc11 2026-10-28 17:27:40 +08:00
sjw1231 5711d3aae7 docs(tool-fs): state apply_patch's whole-patch preflight in the model guidance
The guidance described only the commit phase ("stop at the first failure,
not rolled back"), so a model inferred that an invalid hunk would leave
earlier operations applied. The sentence now says the whole patch is checked
first and a rejected patch changes nothing before describing commit order.
2026-10-28 15:37:36 +08:00
sjw1231 1f1a9cda72 feat(tool-fs): add applyPatchGuard to run apply_patch without observation guards
`tool-fs.applyPatchGuard` selects the mutation guards of apply_patch:
`observation` consults the mounted observation policy per operation like
write and edit; `none`, the default, applies hunks unconditionally on
context match alone as the Codex tool does, keeps publishing fs/observed,
and replaces the read-first guidance with a context-matching reminder.

In 2,226 recorded DS-Bench and DeepSWE rollouts with the policy on, read-first
and stale-version refusals were 29–41% of apply_patch failures although hunk
context matching already rejects a divergent file. The recorded apply-patch
scenarios pin `observation`, under which they were captured.
2026-10-28 15:26:21 +08:00
sjw1231 64d04a4916 feat(tool-fs): name the apply_patch argument input as Codex does
Across 2,226 recorded DS-Bench and DeepSWE rollouts, 14% of apply_patch
calls arrived as {"input": ...} and were rejected for the missing `patch`
property: models trained on the Codex tool send its parameter name
unprompted. The schema now uses `input`; the executor request keeps its
internal `patch` field. Recorded apply-patch sessions, the schema sidecar,
and the catalogs follow.
2026-10-27 22:26:39 +08:00
sjw1231 f274f1673a Merge branch 'master' into feat/apply-patch
Takes master's re-measured npm install-layout budget, which covers this
branch's graph, and regenerates the Cordis API, event matrix, client slot,
and tool catalogs on the merged tree.
2026-10-27 14:54:00 +08:00
Yichen Jiang f74e15ba08 Merge branch 'worktree/forge-bindings-stack-sync' into worktree/forge-pr-worktree-panel
# Conflicts:
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/experimental/README.i18n.yaml
#	packages/preset/agent-preset/skills/cordis-composition-reference/references/packages.md
2026-10-26 18:39:10 +08:00
sjw1231 d37b2ba52b Merge branch 'master' into feat/apply-patch
Resolves the headless snapshot runner (keeps both the readonly-patch-directory
and cua-script-guidance workspace setups), regenerates the client slot and tool
catalogs with their pairing record, adds the apply_patch tool title to the five
locales master introduced, and refreshes the apply-patch system-prompt pin for
master's subagent guidance change.
2026-10-26 18:01:46 +08:00
sjw1231 81b0bcf3ef feat(tool-fs): make apply_patch an opt-in switch, default off
`tool-fs.applyPatch` now defaults to false instead of deriving from
`write && edit`, so every shipped composition keeps the model request it
had before the tool existed. The `tool-fs` rows that enable `edit`
(dsh-base and the Web standard, ptc, and cordis presets) state
`applyPatch: false` explicitly; changing that one line adds the tool.

The apply-patch snapshot composition enables the switch, the tool catalog
mounts tool-fs with it on so the schema stays documented, and every other
recorded expectation returns to the master baseline.
2026-10-26 17:12:36 +08:00
Turtle 699cecb83d Merge pull request #4719 from deepseek-harness/fix/toolcall-unused-args
fix(tools): tolerate unambiguous optional arguments
2026-10-26 16:06:45 +08:00
Dudu-0223 cf38ed3205 Merge pull request #7322 from deepseek-harness/fix/web-fetch-charset-tolerance
fix(web): recover malformed charset declarations with strict UTF-8
2026-10-26 15:56:04 +08:00
Dudu-0223 f6b8f49834 Merge pull request #7195 from deepseek-harness/fix/shared-subagent-tools
fix(subagent): share delegation tools within each preset revision
2026-10-26 15:27:42 +08:00
Dudu-0223 0d7ae41c8f fix(web): constrain malformed charset recovery to strict UTF-8 2026-10-26 14:39:21 +08:00
Dudu-0223 ae38375654 Merge pull request #7214 from deepseek-harness/fix/skill-root-isolation
fix(skills): 隔离技能根目录读取失败并保留可用技能
2026-10-26 13:35:02 +08:00
Yichen Jiang 64c81cb3e3 Merge branch 'worktree/forge-bindings-stack-sync' into worktree/forge-pr-worktree-panel 2026-10-26 13:30:55 +08:00
Dudu-0223 ef0e2b3461 fix(skills): clarify incomplete catalogs and pin root failure behavior 2026-10-26 13:02:08 +08:00
Turtle 63a67f9ef1 Merge remote-tracking branch 'origin/master' into turtle/take-over-4719-fa0c7f5f8327 2026-10-26 12:31:19 +08:00
_Kerman 271a6143a1 Merge origin/master into xtr/ptc-vm-script 2026-10-26 11:34:32 +08:00
Dudu-0223 cb046fde2c fix(skills): isolate unreadable roots and publish available skills 2026-10-25 15:55:58 +08:00
Dudu-0223 90e398328d refactor(subagent): resolve preset references only when starting children 2026-10-25 13:22:35 +08:00
Dudu-0223 0a618f13d5 test(subagent): scope preset round trips to their snapshot scenario 2026-10-25 12:24:04 +08:00
Dudu-0223 f78984a497 fix(subagent): share delegation tools within each preset revision 2026-10-25 12:17:00 +08:00
Yichen Jiang 3a52eb1993 Merge commit '861f5200ded' into worktree/forge-pr-worktree-panel
Master replaced the creation and plugin recommendation bundles with one
personalized recommendations bundle.

- The CLI manifest keeps master's bundle and the forge bundle.
- The plugin page expectation ranks the forge bundle before the held-back
  personalized recommendations bundle.
- The experimental README pairing is recorded again.
2026-10-24 21:45:41 +08:00
Turtle 94ed636380 fix(tool-ask-user): tell the model a skipped question is answered
The blocking ask_user_question description did not explain that an answer
item with empty selected and no custom is a user skip, so models re-asked
the same question after the user clicked Skip.

Refs #7134
2026-10-24 13:23:53 +08:00
_Kerman 17ee469a1f test(ptc): refresh Script snapshots after merging master 2026-10-23 17:15:08 +08:00
Turtle 91bc8630c4 test(snapshot): port unused-argument fixtures to current runtime context 2026-10-23 17:10:15 +08:00
_Kerman dc3754d252 Merge remote-tracking branch 'origin/master' into xtr/ptc-vm-script
# Conflicts:
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/ptc-runtime/ptc-runtime-node/package.json
2026-10-23 17:09:31 +08:00
Turtle 7c385c957c Merge remote-tracking branch 'origin/master' into turtle/take-over-4719-fa0c7f5f8327
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-19-model-facing-goal-tools.i18n.yaml
#	apps/web/tsconfig.json
#	packages/client/ui-tool/README.i18n.yaml
#	packages/client/ui-tool/README.md
#	packages/client/ui-tool/README.zh.md
#	packages/client/ui-tool/src/client/tool/models/raw-tool-call.ts
#	packages/client/ui-tool/tests/diff-card.client.spec.tsx
#	packages/client/ui-tool/tests/terminal-card.client.spec.tsx
#	packages/fs/tool-fs-search/README.i18n.yaml
#	packages/fs/tool-fs/README.i18n.yaml
#	packages/fs/tool-fs/README.md
#	packages/fs/tool-fs/README.zh.md
#	packages/fs/tool-fs/src/sandbox.ts
#	packages/goal/tool-goal/README.i18n.yaml
#	packages/goal/tool-goal/tests/tool-goal.spec.ts
#	snapshots/session/headless.snapshot.ts
#	tsconfig.host.json
2026-10-23 16:46:40 +08:00
Yichen Jiang 6e9ff4c322 Merge remote-tracking branch 'origin/worktree/forge-change-request-bindings' into worktree/forge-pr-worktree-panel
The parent branch now carries master through #6426 again.

- Master moved the optional, experimental, and plugin page bundle lists
  into @deepseek-ai/dsh-official-bundles; the forge bundle joins the
  optional and experimental lists there.
- The CLI manifest, release families, and plugin page expectations keep
  both sides; the forge bundle ranks before the held-back recommendation
  bundles.
- The lockfile, the event matrix, and the experimental persistence
  catalog are regenerated, and the capability-seams and experimental
  README pairings are recorded again.
2026-10-23 14:51:28 +08:00
mektpoy 6e4eda77c8 Merge origin/master into fix/agent-loop-series-start-prefix-cache 2026-10-23 14:06:46 +08:00
mektpoy 6b9f7fcaa7 test(agent-loop): pin the unchanged-text series start in a recorded session
Add an authored headless scenario that appends a changed prompt and then replaces a surface node before the third step. The unchanged-rendering series start must keep both prompt versions and write no system/message event; the scenario fails against the pre-fix projection. Also tighten the tool-series-start assertions and make the prefix premise explicit.
2026-10-23 14:06:08 +08:00
TurtleandTianyi Cui 747cbf13b6 Describe the ask approval policy by its meaning
Replace the literal "Approval policy: ask." runtime-context sentence
with a statement parallel to the never-policy sentence, and refresh the
current-generation fixtures that persist it.

Co-authored-by: Tianyi Cui <[email protected]>
2026-10-22 23:13:19 +08:00
Shigma 21e19d3639 chore(cordis): merge master into cordis-core-rc11 2026-10-22 21:20:45 +08:00
Yichen Jiang cdc72eb229 Merge remote-tracking branch 'origin/worktree/forge-change-request-bindings' into worktree/forge-pr-worktree-panel
The parent branch now carries master through #6426, including the
agent-controller revert.

- Package manifests keep both sides: the ./types and ./locale/*.json
  exports of the forge packages, and the Web app's forge bundle and
  message quotes dependencies.
- The type manifest drops the removed agent-controller entries and keeps
  the forge panel entries.
- The event matrix and the capability-seams pairing are regenerated.
- The forge bundle stays on the main plugin list and now ranks before the
  held-back developer tools; the plugin page expectations follow.
2026-10-22 17:44:45 +08:00
Chinesezjc 3b30f69c9f test(snapshot): carry the end-turn guidance into merged scenarios
The branch merge from master brought four scenarios added after the prompt
refresh (background-wait-steer, session-resume, model-switch-compaction,
web-search-unconfigured); their system-prompt sidecars still show the
guidance without the restored sentence, so the keyless replay fails. Apply
the same sentence to those six expected lines.
2026-10-22 17:17:06 +08:00
sjw1231 cdd7c76f2a Merge branch 'master' into feat/apply-patch
# Conflicts:
#	apps/cli/tests/profiles/headless/tests/expected/subagent-inheritance/parent.expected.jsonl
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	packages/fs/tool-fs/README.i18n.yaml
#	scripts/verify-package-readme-model-experience.ts
#	snapshots/sdk/dynamic-tool-updates/notifications.expected.jsonl
#	snapshots/sdk/dynamic-tool-updates/session.v4.jsonl
#	snapshots/sdk/tool-error-details/notifications.expected.jsonl
#	snapshots/sdk/tool-error-details/session.v4.jsonl
#	snapshots/session/advanced-toolchain/session.v4.jsonl
#	snapshots/session/dynamic-tool-prompt-updates/session.v4.jsonl
#	snapshots/session/dynamic-tool-updates/session.v4.jsonl
#	snapshots/session/pi-ai-conversation-updates/session.v4.jsonl
#	snapshots/session/plugin-manager-mcp/session.v4.jsonl
#	snapshots/web/collapse-timing/next-message.expected.md
#	snapshots/web/collapse-timing/verbose.expected.md
2026-10-22 16:23:14 +08:00
Chinesezjc 8cd82e8001 Merge branch 'master' into work/restore-subagent-end-turn 2026-10-22 16:21:42 +08:00
Yichen Jiang c1238b8792 Merge pull request #5263 from deepseek-harness/worktree/web-search-dynamic-tool-e26c2b
feat(web): withhold web_search and web_fetch from requests without credentials
2026-10-22 15:53:05 +08:00
Yichen Jiang fb378dacf2 fix(web): offer DeepSeek web tools whenever a credential exists
The DeepSeek search and Search/Fetch API providers now report readiness
from credential presence alone, on any model route: the account token
first on the deepseek-account route, then a literal apiKey or a
configured apiKeyEnv reference. A conversation on another provider's
model keeps web_search and web_fetch while a DeepSeek key is configured,
as on master, so the route refusal WEB_PROVIDER_ROUTE_DISABLED and its
upgrade guide are removed.

The pi-ai-conversation-updates and deepseek-messages-system-prompt
snapshots replay their master recordings again, the headless keyless
smoke points its search key reference at an unset variable, and the
readiness Agent Note records the rejected route and endpoint rules.
2026-10-22 15:38:16 +08:00
Yichen Jiang a3c0265456 test(snapshots): share web-fetch's tool schemas with web-search-unconfigured
web-search-unconfigured declares exactly the tool catalog that web-fetch
already pins, so it names web-fetch as its toolSchemasSource instead of
committing a second copy.
2026-10-22 14:36:38 +08:00
turtle1999 6f4ce88207 Merge remote-tracking branch 'origin/master' into turtle/async-notice-efficiency
# Conflicts:
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
2026-10-22 14:12:42 +08:00
Yichen Jiang 6921551fc4 test(snapshots): refresh this branch's scenarios after merging master
Master declares exit_plan_mode only in plan mode, so this branch's own tool
schema sidecars for web-search-unconfigured and pi-ai-conversation-updates
drop it. The merge took master's pi-ai-conversation-updates session, whose
request headers still listed web_search; the refresh records the moonshotai
route without it again.
2026-10-22 10:56:56 +08:00
Yichen Jiang d373778fd8 Merge remote-tracking branch 'origin/master' into worktree/web-search-dynamic-tool-e26c2b
# Conflicts:
#	packages/web/tool-web/tests/tool-web.spec.ts
#	snapshots/session/pi-ai-conversation-updates/session.v4.jsonl
2026-10-22 10:32:41 +08:00
Yichen Jiang 207b30d299 Merge remote-tracking branch 'origin/master' into worktree/dynamic-tool-activation-pr-64796e
# Conflicts:
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	docs/persistence-catalog.i18n.yaml
#	docs/persistence-catalog.md
#	docs/persistence-catalog.zh.md
#	docs/persistence-schema.json
#	packages/core/agent-loop/src/agent.ts
#	packages/core/agent-loop/src/tool-calls.ts
#	packages/core/agent-loop/tests/tool-updates.spec.ts
#	packages/core/system-prompt/README.i18n.yaml
#	packages/core/system-prompt/README.md
#	packages/core/system-prompt/README.zh.md
#	packages/core/tool-executor-ptc/src/ptc.ts
#	packages/core/tool-executor-ptc/tests/ptc.spec.ts
#	packages/core/tools/README.i18n.yaml
#	packages/core/tools/README.md
#	packages/core/tools/README.zh.md
#	packages/core/tools/src/index.ts
#	packages/extensions/tool-cordis/src/api-catalog.ts
#	packages/plan/plan-mode/tests/plan-mode.spec.ts
#	snapshots/session/cordis-inspect-jsdoc/session.v4.jsonl
2026-10-21 23:32:15 +08:00
turtle1999 389b729ac8 Merge remote-tracking branch 'origin/master' into turtle/async-notice-efficiency
- tool-jobs: inline a completion notice only when the complete text fits inlineOutputBytes and the producer cap; otherwise point at job_output, whose result the spill policy bounds
- subagent: drop toolCallsThisStep; omit the closing text while the child's last logged tool call is its message to the parent
2026-10-21 21:44:47 +08:00
sjw1231 1f14903f28 Merge branch 'master' into feat/apply-patch
# Conflicts:
#	apps/cli/tests/web-agent-presets.e2e.ts
#	docs/subsystems/system-prompt.i18n.yaml
#	docs/tool-catalog.i18n.yaml
#	packages/context/agent-instructions/tests/agent-instructions.spec.ts
2026-10-21 20:06:56 +08:00
_Kerman 67911ed176 fix(ptc): describe fresh Script failures without retained state 2026-10-21 19:51:52 +08:00