Commit Graph
5210 Commits
Author SHA1 Message Date
Chinesezjc f45693fbe5 fix(ci): decide the dual-release install layout by graph scale
The Dependency layout lane failed whenever the npm child process exceeded
a hardcoded 300 s deadline. That deadline measured the runner rather than
the graph: the same layout resolves in 137-205 s on an idle developer host
and exceeded 300 s on CI while the placement assertion reported no error,
so the failure carried no information about what had grown.

The gate now bounds the verified graph by resolution work units,
dshPackagesPerVersion * checkedDshEdges against MAX_RESOLUTION_WORK_UNITS,
and keeps the wall clock only as a hang guard derived from that budget.
Growth fails with the graph's own measured counts on any runner.

The resolution cost itself is unchanged. Measurement attributed 99.3% of
it to npm's peer-conflict placement, and cache reuse, graph splitting and
the placement flags were measured and rejected.
2026-09-28 16:04:06 +08:00
creatixchu 810fd8601f Merge PTC cleanup and refresh CUA dependency graph 2026-09-28 15:42:37 +08:00
creatixchu 3a0c2ae3bb test: drop the retired desktop keyboard cleanup patch 2026-09-28 15:42:08 +08:00
creatixchu 51000b5283 Merge updated PTC base into CUA 2026-09-28 15:35:59 +08:00
creatixchu 21e3950519 Merge master into PTC execution-mode change 2026-09-28 15:34:26 +08:00
creatixchu f38f025726 feat(cua): enable retained PTC through executionMode 2026-09-28 15:31:12 +08:00
creatixchu 30b193b38a feat(ptc): select Node state retention through executionMode 2026-09-28 15:27:39 +08:00
Tianyi Cui 3e38e2118c test(vitest): make the lane-budget regression load-independent and own its resources
The fixture's poll case counts attempts instead of reading a clock, so a host
stall cannot turn a budget-ended poll into a pass; the control case reads the
poll's reported duration, which the 1000 ms default bounds from below. The
spawning spec acquires its temporary config in beforeAll, bounds the child
with a timeout and asserts no signal ended it, and counts the polled values it
inspects. CoverageTestTimeoutOptions is Vitest's own TestUserConfig members;
the rule's reach has one home in its JSDoc, which the config, gate, spec, and
note comments reference.
2026-09-28 14:18:03 +08:00
Huanqi Cao 17877121ba Merge remote-tracking branch 'origin/master' into windows-sandbox-acl-diagnosis
# Conflicts:
#	packages/sandbox/sandbox-windows-acl/package.json
2026-09-28 13:51:41 +08:00
Tianyi Cui 333d7e75d2 test(vitest): apply the lane test budget inside every inline project
DSH_COVERAGE_TEST_TIMEOUT_MS expanded to --testTimeout, --hookTimeout, and
--expect.poll.timeout on the coverage and serial lanes, but Vitest forwards
only a fixed list of CLI overrides into inline projects and neither
hookTimeout nor expect is on it, so under the root config's two projects the
hook and expect.poll budgets stayed at Vitest's defaults on every lane.

vitest.config.ts now reads the variable through coverageTestTimeoutOptions and
spreads the three budgets into both projects; run-gates and the partition
coordinator pass no timeout flags, leaving one owner for the rule. A new spec
spawns vitest on the root config with a 200 ms budget and proves all three
waits end inside both projects, that unset keeps the defaults, and that a
malformed value fails at config load.

Fixes #5335
Related to #5325
2026-09-28 13:37:20 +08:00
Tianyi Cui 0976d15122 test(run-gates): own the coverage-gate environment in the spec and pin ci-unit to the test script
run-gates.spec.ts clears DSH_COVERAGE_PARTITIONS and DSH_COVERAGE_MAX_WORKERS
before each case, so the coverage gates it builds take their shape from the
case, not from a partitioned lane that exports the variables to every child.
The ci-unit case derives its two gates from the `test` package script's
segments. The serial-reference note keeps only the lane fact; the mechanism
fact about inline-project inheritance is owned by the fix that changes it.
2026-09-28 13:28:31 +08:00
Chinesezjc 8d7ba898f8 Merge origin/master into feat/preset-scoped-schedule-tools
master now ships the reminder stack as the optional
`@deepseek-ai/dsh-experimental-schedule-bundle`, which inserts the rows the
Web composition leaves out. This branch keeps the preset-level ownership
beside it.

Resolutions:
- The bundle inserts `schedule` and `ui-schedule` only. It no longer inserts
  `time-context`: the clock belongs to the `standard`, `cordis`, and `ptc`
  presets, and a Host row for the same package would mount it in two scopes
  and append two readings per step.
- `packages/bundle/web-app/package.json` declares `@deepseek-ai/dsh-time-context`
  again: the presets reference it by bare name, so `verify-cordis-config`
  requires the dependency.
- The bundle's patch spec, locale, package, README pair, the optional-bundle
  composition spec, the plugin-manager component list, and the
  `schedule-after` roster assertions describe the two-row bundle and the
  preset-owned clock and tools.
- Documentation and Agent Notes follow the same split; the note master
  archived stays frozen with its manifest hashes.
2026-09-28 13:04:51 +08:00
Tianyi Cui 9ab3f2c990 ci(sandbox): grant the darwin unit parity job the coverage lanes' test budget
The unit-darwin job ran the whole unit inventory at Vitest's 5000 ms default
on a shared 3-vCPU macos-latest runner; the first two master runs after #5292
each timed out a different set of cases that pass in under a second on a quiet
host. Every other whole-inventory lane raises the budget through
DSH_COVERAGE_TEST_TIMEOUT_MS=90000.

The job now sets that variable and runs `pnpm run check:ci:unit`, a run-gates
aggregate that is `pnpm run test` (native build, then `vitest run`) through the
path that consumes it. ci-unit receives no CI worker settings, so the inventory
inherits the environment `pnpm run test` finds: on a 3-CPU host the defaults
would inject DSH_COVERAGE_PARTITIONS=2, which run-gates.spec.ts reads as a
partitioned coverage lane.

Fixes #5325
2026-09-28 12:58:10 +08:00
Tianyi Cui 41c10a62c2 Merge branch 'master' into cleanup/compact-persistence-schema 2026-09-28 10:31:37 +08:00
Tianyi Cui b01a926d44 test(lint): bound every process-spawning oxlint contract case at 90s
Five cases in scripts/oxlint-contract.spec.ts spawned oxlint or the
repository lint entrypoint on vitest's 5000 ms default while their nine
siblings carried the 90_000 ceiling from the Windows spawn-budget
alignment. The first darwin parity run on master (Sandbox run
36332053320) ran the file 2.2x slower than the passing run and timed out
`prints only the final diagnostics when a fix retry still fails` at
6309 ms. Give the five cases the same per-case ceiling and record the
decision in an Agent Note.

Fixes #2581
Related to #2677
2026-09-28 00:58:56 +08:00
Huanqi Cao 79d8910f2d Merge origin/master into windows-sandbox-acl-diagnosis 2026-09-28 00:23:56 +08:00
Huanqi Cao 5bab07157f fix(sandbox): repair inherited ACL entries within normalized roots 2026-09-28 00:18:06 +08:00
Dudu-0223 acb2849495 chore(subagent): remove incidental snapshot generation changes 2026-09-27 15:42:32 +08:00
Dudu-0223 9a8a6d1c78 fix(subagent): align cross-platform snapshots after master sync 2026-09-27 15:36:25 +08:00
Dudu-0223 3254ed611d Merge master and preserve catalog-recursive subagent discovery 2026-09-27 15:23:31 +08:00
Dudu-0223 e0f52ae912 Merge remote-tracking branch 'origin/master' into codex/pr-5247-worktree
# Conflicts:
#	packages/client/ui-chat/tests/turn-trigger.client.spec.tsx
2026-09-27 15:04:29 +08:00
Dudu-0223 a5098110cf refactor(agent-team): stop delivering historical mailbox records
Historical team/message/queued and team/message/delivered records remain
decodable and projected, but Team no longer drains or acknowledges them
after restart. Remove the compatibility dispatcher, its disposal wait,
and its tests, and document that historical pending mail stays undelivered.
2026-09-27 15:01:00 +08:00
Yif eb9efc6265 fix(plugins): restore registry group, own opaque material, hold refresh spinner
The install registry picker used MenuSurface and overrode the theme-owned
menu material tokens, which the shared-menu-material gate rejects. Return
the picker to a fieldset (its native group role) and paint an opaque
bg-layer-2 surface so the form controls stay readable without touching
menu tokens. This also restores the group's radios to the accessible tree.

Align plugin-install-registry.e2e and its snapshots with the PR's visible
text: registry option names drop the parentheses around the host, the
custom address field is no longer disabled, and the custom hint spells out
http(s) and ~/.npmrc.

Hold the manual-refresh spinner to a 400ms minimum so a fast read does not
flash it, clearing to idle (or the failure toast) only after the minimum,
and dropping a refresh that settles after disposal.

Prune the retired no-unknown-casts baseline entry for browser-plugin.client.spec.
2026-09-27 09:46:15 +08:00
Dudu-0223 a98efc7115 Merge latest master documentation into Agent Team delivery 2026-09-27 06:45:46 +08:00
zhc b43d52ef45 merge: reconcile desktop analytics with latest master 2026-09-26 22:56:57 +08:00
Dudu-0223 6e369b4479 Merge origin/master into Agent Team direct delivery 2026-09-26 22:36:55 +08:00
Dudu-0223 8cae58aea8 fix(agent-team): close direct delivery review gaps 2026-09-26 22:35:08 +08:00
Tianyi Cui 67f648cf0c Merge pull request #4595 from deepseek-harness/worktree/fix-tool-failure-history-6967
fix(agent-loop): settle pending tool results before failed steps close
2026-09-26 22:01:39 +08:00
Ziya 88967ce80a Merge pull request #5207 from deepseek-harness/ux/automation-tasks-plugin-row
fix(schedule-bundle): name the Plugins row Automation tasks with an alarm clock icon
2026-09-26 06:57:49 -07:00
Yichen Jiang 50117a144e Merge pull request #5190 from deepseek-harness/worktree/scoped-events-heap-budget
fix(docs): align publication runner and scoped-event heap budgets
2026-09-26 21:46:55 +08:00
ZiyaZhang 9626323fc4 Merge remote-tracking branch 'upstream/master' into ux/automation-tasks-plugin-row 2026-09-26 06:10:21 -07:00
Tianyi Cui c40b1fabd1 Merge remote-tracking branch 'origin/master' into worktree/fix-tool-failure-history-6967 2026-09-26 20:18:49 +08:00
Dudu-0223 c772c85c17 refactor(agent-team): send directly through Agent inbox steering 2026-09-26 16:52:54 +08:00
ZiyaZhang b90695ee7a Merge remote-tracking branch 'upstream/master' into ux/automation-tasks-plugin-row 2026-09-25 22:31:25 -07:00
creatixchu be7ab6a17c Merge branch 'feat/persistent-ptc' into feat/experimental-dsh-cua 2026-09-26 12:34:16 +08:00
creatixchu 1c8683c47b test: preserve config reader binding in cleaner fixture 2026-09-26 12:33:53 +08:00
creatixchu 5f9d8a7467 Merge branch 'feat/persistent-ptc' into feat/experimental-dsh-cua 2026-09-26 12:12:32 +08:00
creatixchu b9e461b144 fix(build): make desktop keyboard output safe to clean 2026-09-26 12:11:56 +08:00
creatixchu 5e6524bca4 test(hooks): match the installer canonical worktree path 2026-09-26 12:09:58 +08:00
creatixchu dde252235d Merge branch 'feat/persistent-ptc' into feat/experimental-dsh-cua
# Conflicts:
#	.agents/notes/implemented/architecture/2026-09-21-experimental-capabilities-as-optional-bundles.i18n.yaml
#	.agents/notes/implemented/architecture/2026-09-21-experimental-capabilities-as-optional-bundles.md
#	.agents/notes/implemented/architecture/2026-09-21-experimental-capabilities-as-optional-bundles.zh.md
2026-09-26 11:32:58 +08:00
creatixchu 683e42a3b0 Merge remote-tracking branch 'origin/master' into feat/persistent-ptc 2026-09-26 11:30:25 +08:00
creatixchu f22177a1f9 refactor(cua): keep native preparation internal and remove duplicate checks 2026-09-26 11:25:04 +08:00
Chinesezjc 2edc6705b5 Merge origin/master into feat/preset-scoped-schedule-tools
Resolutions:
- `python/sdk-runtime/package.json` and `pnpm-lock.yaml` keep both sides'
  additions (`@deepseek-ai/dsh-otel` beside the schedule packages).
- The generated graph pages are re-emitted from the merged sources.
2026-09-26 10:14:10 +08:00
Tianyi Cui b73a702587 test(ci): canonicalize the Lefthook fixture common directory
Reading Git's path text verbatim to keep trailing whitespace duplicated the
line-terminator helper that scripts/change-scope.ts already owns, which the
duplication gate rejects. Canonicalizing the fixture-side common directory
with realpathSync.native removes the text parsing entirely: short names,
junctions, and directory symlinks all collapse onto the physical directory
the installer resolves, and the injected path stays exact.

Drops the trailing-space case: with no text trimming left in the
derivation, that path already matched the installer before this change, so
the case could not fail and proved nothing.
2026-09-26 01:46:03 +08:00
Chinesezjc fd53e83125 Merge origin/master into feat/preset-scoped-schedule-tools
master now ships the reminder stack as the optional
`@deepseek-ai/dsh-experimental-schedule-bundle`; this branch keeps the
preset-level ownership beside it.

Resolutions:
- The Host rows keep master's `disabled: true`. The optional bundle switches
  `schedule` and `ui-schedule` on and no longer `time-context`: the clock row
  is preset-level, so flipping the Host row as well would mount the plugin in
  two scopes and write two readings per step.
- `standard`, `cordis`, and `ptc` declare `preset-time-context` and
  `tool-schedule`; `minimal` declares neither.
- `tool-schedule` injects `tools` and resolves `schedule` per scope through
  `ctx.inject`, so the row stays valid but produces no tools while the service
  is off, and produces them once the bundle mounts it.
- The assembled-Web Schedule spec keeps master's bundle overlay and restates
  the shipped `preset-standard` row instead of the deleted fixture, because a
  top-level patch cannot reach a plugin a preset declares.
- Documentation and Agent Notes describe both layers; the note master archived
  stays frozen with its manifest hashes.
2026-09-26 01:12:54 +08:00
Tianyi Cui 1829cdfec9 test(ci): read the Lefthook fixture lock path without trimming
git() trims its output, which also drops a worktree directory's own
trailing whitespace; the installer removes only the line terminator. Derive
the expected lock path through gitPath()/stripGitLineTerminator(), which
applies the installer's exact rule, so the same-string claim holds for
every path.

Adds the trailing-space injection case (skipped on Windows, which cannot
create such a directory); it fails with the same probe ENOENT under the
trimming derivation.
2026-09-26 01:10:43 +08:00
Tianyi Cui acb66b4c23 test(ci): force the Lefthook lock-path alias on every host
The five lock-access cases only diverged on a host whose temp directory
already carried a short name or directory alias. Route one case through an
aliased worktree root (a junction on Windows, a directory symlink
elsewhere) so the installer's resolved common directory necessarily differs
from the path this spec composes; the case fails with the same probe ENOENT
under the previous derivation on every platform.

The alias case shares the injection body through
expectInjectedLockAccessFailure, so the five existing case names and their
assertions are unchanged.
2026-09-26 00:50:02 +08:00
Tianyi Cui 6e28f315e7 fix(ci): derive the Lefthook fixture lock path from Git's top level
The lock-access cases injected a filesystem failure on a path this spec
predicted from the mkdtemp fixture directory. The installer resolves its
common directory against Git's own top-level path instead, and the host
spells that path differently: Git canonicalizes Windows 8.3 short names
and the macOS /var symlink. When the spellings diverged the injection
never fired, so the probe file was never written and all five cases
failed with ENOENT at the probe read - the signature seen in the Windows
coverage lane.

Resolving the relative common directory against Git's top-level, as the
installer does, makes the expected path identical to the one the
installer touches on every platform. The five cases fail deterministically
on macOS before this change and pass after it.
2026-09-26 00:43:46 +08:00
Tianyi Cui 3cdbf42a1d test(session): validate failed-step recovery on V4 2026-09-25 23:48:44 +08:00
Tianyi Cui eafd5b6068 fix(session): remove invalid recovery input guard 2026-09-25 23:48:44 +08:00