Commit Graph
5210 Commits
Author SHA1 Message Date
imccyu 3e531a13d5 Merge pull request #5507 from deepseek-harness/tool-argument-order
fix(tools): 明确路径和描述字段的生成顺序
2026-09-30 13:44:40 +08:00
Chinesezjc a0ed3981fe fix(ci): revoke the approval decision through its conclusion
A check run that reached completed never returns to in_progress: GitHub
answers 200 and leaves the run completed, so the revoke write was a
silent no-op on every re-evaluation and a published success survived an
interrupted setup or history fetch. Revoke a published success by
concluding it action_required, start a head that has no decision in
progress, and drop the status-only check-run update.

The setup-failure step ran only when the revoke step succeeded, so a
failed or cancelled publisher left the earlier conclusion standing. It
now runs on failure and on a cancellation that precedes the decision.

The decision note, the review-ownership README, and the two related
notes record the measured transition matrix and the fallback condition.
2026-09-30 13:42:02 +08:00
Turtle f028f25667 refactor: remove runtime invariant plugins
Delete @deepseek-ai/dsh-invariants, every package's ./invariant companion
and its tests, the invariant gates and Vitest setup, the scoped-event
resolver generator, and the INVARIANT-coded listener rethrow paths.
Update docs, READMEs, Agent Notes, and add an upgrade guide.
2026-09-30 12:52:18 +08:00
imccyu f37f19ab43 fix(subprocess): compare executable errors by name 2026-09-30 12:47:48 +08:00
imccyu 2e3ab61940 fix(presets): own composition mounts in registry service 2026-09-30 12:47:47 +08:00
turtle1999 6c6b85e572 Merge remote-tracking branch 'origin/master' into turtle/bundle-only-metadata-5394 2026-09-30 11:41:32 +08:00
turtle1999 8339f16c1d fix(plugins): read package.json only for package-root plugins
Subpath plugins are not packages, so they never read a package.json and
take their icon from the exported <specifier>/icon resource, like locale.
Package roots keep manifest text fallback and icon, with ./icon as the
fallback image. Drop the bundle-only reader option.
2026-09-30 11:41:26 +08:00
Turtle e5a010be64 Merge pull request #5403 from deepseek-harness/perf/session-corpus-benchmarks
test(bench): measure Session list, search, and fork over large corpora
2026-09-30 11:13:47 +08:00
imccyu 4166dbd140 fix(tools): guide argument generation order 2026-09-30 02:18:04 +08:00
creatixchu 0b6c5bb7b8 merge: update native CUA to the current release base 2026-09-29 19:47:33 +08:00
creatixchu fcecd8e37b merge: update persistent PTC to the current release base 2026-09-29 19:45:45 +08:00
Chinesezjc 1b1b09e1fb fix(schedule): enforce the caller restriction in the tool layer
Review follow-ups on the delegated-child rule:

- Every one of the four tools refuses a delegated caller before dispatch,
  reading `delegationDepthOf(exec.agent)` and returning the stable
  `subagent_session` refusal, so `schedule_list`, `schedule_delete`, and a
  content-only `schedule_update` are covered too. The preset `toolFilter.deny`
  stays as the layer that keeps the tools out of a child's prompt.
- The service keys the arming refusal on that same delegation accounting
  alone; `hasApiSessionSubagentOwner` returns to package-private and
  `@deepseek-ai/dsh-schedule` no longer imports it.
- The preset child row is `time-context` again: the `preset-` prefix separated
  it from a Host row that no longer exists, and `verify-cordis-config` passes
  with the sibling-style id.
- Docs, Agent Notes, and the generated catalogs follow.
2026-09-29 16:57:25 +08:00
Chinesezjc fc395556b6 Merge remote-tracking branch 'origin/master' into feat/preset-scoped-schedule-tools 2026-09-29 16:39:19 +08:00
Chinesezjc 699f1a8dc1 feat(schedule): deny the reminder tools to delegated children
A delegated child could arm reminders through the tools its preset mount
passes down, even though delivery can never reach a child's Session. The
refusal now reads the delegation-depth accounting the delegation cap itself
enforces, and the shipped presets deny the four tools to children outright:

- `reminderTargetRefusal` refuses when `delegationDepthOf(agent)` is above
  zero, or when the Session is subagent-owned without a depth record.
- `standard`, `cordis`, and `ptc` set `toolFilter.deny` on both delegation
  rows, so the four tools leave a child's prompt and reject execution.

`create` still rejects and `update` still returns the non-mutating refusal.
2026-09-29 16:39:05 +08:00
Tianyi Cui 1de97d1c10 Merge pull request #5288 from deepseek-harness/worktree/desktop-cli/manage
feat(desktop): manage dsh command from the app menu
2026-09-29 16:27:30 +08:00
Yichen Jiang 32c47d6eae Merge remote-tracking branch 'origin/master' into worktree/sleepy-grothendieck-64df7b 2026-09-29 14:52:58 +08:00
Yichen Jiang f17741c756 fix(session): reuse blank Sessions under the requested preset
session.create treats a named sessionId as a blank Session to reuse while
the Host can verify it is still reusable: no turn has started, it belongs to
the requested directory, it is an unarchived member of the requested
Workspace, and no other owner writes it. The reused Session runs the
requested agentPreset or the configured default; its recorded preset is not
resolved, so a blank recorded under a preset that is no longer declared no
longer breaks New Session or startup restoration. A change is logged as
agent-preset/selected before the Agent is published. A candidate that is no
longer reusable stays unchanged and the Host creates a new Session, which
replaces the client's writer-held fallback.

The Web client restores a saved draft with its recorded preset and falls back
to the default when that preset is missing or fails to activate, passes the
creator entry's preset through creation instead of issuing a concurrent
select, and reloads the projections of a declined candidate so a stale blank
hint no longer hides a started conversation.

Related to #2566
2026-09-29 14:52:11 +08:00
turtle1999 2b6d046f32 test(ci): arm signal trap before reporting readiness 2026-09-29 14:31:45 +08:00
turtle1999 41a869e33a Merge commit 'c413bb92ee765460eeeb2644234180459e561f65' into fix/master-ci-windows-acl 2026-09-29 13:32:00 +08:00
Turtle 17da46e4f3 Merge pull request #5389 from deepseek-harness/docs/upgrade-guide-structure
docs: add upgrade guide structure, skill, and gate
2026-09-29 13:10:23 +08:00
Tianyi Cui fa9586824e fix(desktop): keep Host and CLI entry bundles self-contained 2026-09-29 12:54:53 +08:00
Tianyi Cui 5f99386fa8 feat(desktop): add bundled CLI launch and installation guards 2026-09-29 12:54:52 +08:00
turtle1999 094a8701fe Publish weighted approval as a completed check run
Unmet weighted approval conditions previously left a pending commit
status that CI watchers treat as running work, so gh pr checks --watch
and similar monitors never finished. Publish the decision as the
weighted approval decision check run instead: action_required blocks
merging while completing the check, and failure reports evaluation
errors.
2026-09-29 12:48:04 +08:00
turtle1999 ffab80f0cc merge: integrate master CI reliability fixes 2026-09-29 12:39:34 +08:00
Tianyi Cui 93234e4007 Merge pull request #5338 from deepseek-harness/test/lane-budget-inline-projects-20260928
test(vitest): apply the lane test budget inside every inline project
2026-09-29 12:23:19 +08:00
Chinesezjc 5e9399f6c8 Merge origin/master into feat/preset-scoped-schedule-tools
Resolutions:
- `docs/tool-catalog.{md,i18n.yaml}` regenerated from the merged tool sources.
2026-09-29 11:43:44 +08:00
turtle1999 61d4ab0b6c docs: make upgrade guides bilingual and drop the OTel guide
Upgrade guides now pair guide.md with guide.zh.md and guide.i18n.yaml under
the ordinary translation-pairing gate. verify-upgrade-guides checks the
Chinese sibling's metadata and its 变更/迁移 sections; the 500-word ceiling
applies to the English source. Remove the session-log-otel-collector guide.
2026-09-29 10:34:29 +08:00
turtle1999 9cd1264115 Merge branch 'master' into docs/upgrade-guide-structure 2026-09-29 10:19:14 +08:00
turtle1999 374f7df31b chore(ci): align proxy opt-in and clarify test contracts 2026-09-29 01:07:38 +08:00
turtle1999 44b2ccb0bb Merge commit '272ead1e2c8225e2954cb08e42f36cef132e2093' into fix/master-ci-windows-acl 2026-09-29 00:04:57 +08:00
turtle1999 d12257c959 fix(plugins): preserve manifest icon precedence 2026-09-28 23:30:05 +08:00
Tianyi Cui f4d8115b4a merge: master into lane-budget-inline-projects
Resolves the semantic conflict with #5331: its ci-unit gate spread
coverageTestTimeoutArgs, which this branch retires; the gate is now a
plain vitest run and the darwin lane budget reaches vitest.config.ts
through the inherited DSH_COVERAGE_TEST_TIMEOUT_MS. The ci-unit spec
cases pin that shape under both budget values.
2026-09-28 23:25:21 +08:00
turtle1999 6790ad428d Merge commit '50daf9d60e356dfe02e1ea302c3fb45f971e1eba' into fix/master-ci-windows-acl 2026-09-28 23:23:00 +08:00
Magolorandimccyu 3a296b16b4 feat(user-questions): support timed waits and late replies
Co-authored-by: imccyu <[email protected]>
2026-09-28 23:21:35 +08:00
Tianyi Cui 7b30c81614 Merge pull request #5331 from deepseek-harness/ci/unit-darwin-lane-budget-20260928
ci(sandbox): grant the darwin unit parity job the coverage lanes' test budget
2026-09-28 23:10:50 +08:00
turtle1999 bfcd447963 test(bench): fit Session corpus benchmark within five minutes
Keep each case at its hardest setting that fits five minutes of hosted CI:
search and fork stay at 1,000 Sessions with the longest fork sampled once,
the list runs 3 samples over 3,000 Sessions, and seeding validates authored
bodies in memory instead of a separate verification pass. The file's last
case asserts the limit; the benchmark job timeout becomes 20 minutes.
2026-09-28 23:08:19 +08:00
turtle1999 9cd8a888bb chore: merge master into bundle metadata correction 2026-09-28 22:45:57 +08:00
turtle1999 ecedbbc2e6 fix(plugins): reuse locale metadata and export bundle icons 2026-09-28 22:34:46 +08:00
turtle1999 e806d9cb97 test(bench): calibrate Session corpus budgets on hosted CI
Standard two-CPU hosted runs are 2.4-3.4 times the reference machine, above
the shared reference scale, so the budgets use rounded hosted medians with
the shared 1.25 headroom. The benchmark job took 14.4 minutes with these
cases; its timeout becomes 25 minutes.
2026-09-28 22:18:58 +08:00
turtle1999 3545e9a2a6 fix(ci): provision Electron before Windows smoke tests 2026-09-28 21:13:12 +08:00
turtle1999 d70efffb63 test(bench): measure Session list, search, and fork over large corpora
Add a required benchmark over synthetic corpora whose per-Session length
distribution is at least a measured local DSH corpus: list at 1,000 and
5,000 Sessions, cold and built content search and stratified forks at
1,000 Sessions, all through the real SessionController on built plain-Node
workers. Raise the benchmark job timeout to 30 minutes for the added cases.
2026-09-28 21:08:18 +08:00
Chinesezjc 00e7a85f62 Merge origin/master into feat/preset-scoped-schedule-tools
Resolutions:
- `packages/experimental/schedule-bundle/package.json` stays deleted: master
  bumped a package this branch retires.
- `@deepseek-ai/dsh-tool-schedule` follows the release train version.
2026-09-28 20:11:15 +08:00
turtle1999 f30aec98b6 fix(plugins): reserve package display resources for bundles 2026-09-28 19:33:17 +08:00
turtle1999 23d3807ae1 docs: add upgrade guide structure, skill, and gate
Introduce docs/upgrade-guide/v<version>/<item>/guide.md for externally
perceptible breaking changes. The dsh-create-upgrade-guide skill owns scope,
placement, maintenance, and format; verify-upgrade-guides enforces layout,
frontmatter, sections, and the 500-word ceiling. Guides are English-only and
registered as the upgrade-guide document kind.
2026-09-28 19:12:16 +08:00
Chinesezjc c6dd905972 feat(web): ship the Schedule service and task page in the Web composition
The reminder stack no longer hides behind an optional experimental bundle.
`packages/bundle/web-app/cordis.patch.yml` inserts `schedule` and
`ui-schedule`, so a shipped profile mounts the task store, the delivery
runtime, and the Automation tasks page; the
`@deepseek-ai/dsh-experimental-schedule-bundle` package and its wiring are
removed.

Preset ownership is unchanged: `standard`, `cordis`, and `ptc` declare the
clock and the four reminder tools in their own scope, and `minimal` declares
neither, so a minimal session carries no reading and no reminder tool even
though the service is mounted.

`apps/cli` depends on `@deepseek-ai/dsh-tool-schedule`, and
`packages/bundle/web-app` declares `@deepseek-ai/dsh-schedule` and
`@deepseek-ai/dsh-client-ui-schedule`: preset and profile rows resolve plugin
names from the installation anchor, so a missing declaration leaves the row
without a fiber and every session creation fails with
`agent-preset/invalid`.

Documentation, Agent Notes, and the recorded Web fixtures follow the shipped
composition.
2026-09-28 18:31:53 +08:00
Tianyi Cui 4094b8622e Merge pull request #5299 from deepseek-harness/test/oxlint-contract-fix-retry-budget-20260927
test(lint): bound every process-spawning oxlint contract case at 90s
2026-09-28 18:03:54 +08:00
Huanqi Cao eb1a903a45 Merge pull request #5203 from deepseek-harness/windows-sandbox-acl-diagnosis
feat(sandbox-windows-acl): ship a diagnosis skill for ACL denials
2026-09-28 17:58:46 +08:00
turtle1999 7ded036fdb feat(web): add Session Log upload preference in General settings (#5337) 2026-09-28 17:55:03 +08:00
creatixchu 15332e42e6 refactor(cua): keep manual provider and application consent in base layer 2026-09-28 16:53:29 +08:00
Chinesezjc 30a9770a58 docs(ci): correct the budget note's measurements and derive the hang guard
Fixes the review findings on the work-budget change:

- unify the measured npm time range to 137-205 s in the note's problem
  statement, which had carried the older 153-190 s range
- correct the peer-edge share to about three quarters (1874 of 2524),
  which the sentence had called two thirds
- state the ratchet threshold as the packages-times-edges product, about
  12% in packages and edges together
- derive NPM_HANG_GUARD_MS from MAX_RESOLUTION_WORK_UNITS so a raised
  budget cannot shrink the guard's headroom, and state the guard's
  guarantee as covering a runner four times slower than the measured host
- name the cost side of the hang guard in the note's consequences
2026-09-28 16:18:09 +08:00