Commit Graph

11945 Commits

Author SHA1 Message Date
Yichen Jiang 925df04112 Merge pull request #2249 from deepseek-harness/worktree/minimal-profiles-bare-runtime
feat: align minimal runtime profiles
2026-08-11 21:57:03 +08:00
Tianyi Cui cb235da37f Merge pull request #2282 from deepseek-harness/worktree/deny-deepseek-base-urls-519
fix(boot): deny DeepSeek endpoint env overrides
2026-08-11 21:55:26 +08:00
Dudu-0223 c778b5b0db fix(subagent): address background-first review 2026-08-11 21:52:59 +08:00
Dudu-0223 98d4551597 docs: refresh module graph 2026-08-11 21:52:59 +08:00
Dudu-0223 8344d64363 feat(subagent): default continuable delegation to background 2026-08-11 21:52:59 +08:00
Yichen Jiang a5853244ed Merge remote-tracking branch 'origin/master' into worktree/minimal-profiles-bare-runtime 2026-08-11 21:45:38 +08:00
Yichen Jiang d9dca88f33 test: stabilize steering mid-turn snapshot 2026-08-11 21:45:30 +08:00
Ziya 43b66c0a74 Merge pull request #2210 from deepseek-harness/feat/produced-files-folder
feat(web): make produced-file overflow discoverable
2026-08-11 21:45:13 +08:00
Huanqi Cao 05a8846c6e refactor(preset): trim the shell-row comments
Drop the filler and factually loose comments added with the tool-pwsh rows:
the platform expressions self-explain, the web-app overlay comment repeats
the file header, and the spec comments now state only the platform-scoped
evaluation fact.
2026-08-11 21:38:51 +08:00
Ziya 37cdddd137 Merge branch 'master' into feat/produced-files-folder 2026-08-11 21:36:30 +08:00
Yichen Jiang 02e7b25bc3 Merge master into worktree/preset-user-root-in-package
Regenerates docs/config-catalog and re-records its pairing hashes: master's
side of that generated file merged textually, which leaves the recorded blob
hashes describing neither side's content.
2026-08-11 21:34:34 +08:00
Tianyi Cui 4c9c6c8217 test(cli): align endpoint fixture with boot trust 2026-08-11 21:33:06 +08:00
Yichen Jiang 3625ba1c9b Merge remote-tracking branch 'origin/master' into worktree/minimal-profiles-bare-runtime 2026-08-11 21:30:15 +08:00
Yichen Jiang 87c26ce78f Merge pull request #2275 from deepseek-harness/feat/wake-idle-owner-on-task-completion
feat(tasks): wake an idle owner when a background task completes
2026-08-11 21:29:55 +08:00
Tianyi Cui a767cd357f Merge pull request #2280 from deepseek-harness/worktree/naming-contract-proposal
docs: propose repository naming contract and rename ledger
2026-08-11 21:28:54 +08:00
Yichen Jiang 1b2181dccd test: align Web minimal compaction assertion 2026-08-11 21:23:17 +08:00
Yichen Jiang d647ce9f7d test(agent-presets): assert the derived root through the shipped bundles
The new default's whole claim is that a launcher configuring nothing still
finds a person's presets, and nothing asserted it through a real composition —
`user-root.spec.ts` plugs the service directly, and every other lane pins
`includeUserRoot: false` so the machine's home cannot decide a golden.

This lane boots the real base and web-app bundles with only the shipped root
patched in, points `$DSH_HOME` at a temp home before boot (the derived root is
resolved when the plugin is constructed), and asserts a preset placed there is
listed as `user`, reported healthy, authorable, and mountable into an agent
whose tool catalog it decides.
2026-08-11 21:18:37 +08:00
Yichen Jiang 18c33b5fab Merge remote-tracking branch 'origin/master' into feat/wake-idle-owner-on-task-completion 2026-08-11 21:18:32 +08:00
ZiyaZhang b1c1c93899 Merge remote-tracking branch 'upstream/master' into feat/produced-files-folder 2026-08-11 06:17:51 -07:00
Tianyi Cui b735af91fa Merge remote-tracking branch 'origin/master' into worktree/naming-contract-proposal 2026-08-11 21:16:36 +08:00
Yichen Jiang bac3a77dd9 Merge master into worktree/preset-user-root-in-package
Clean merge with no resolution edits: the branch is refreshed onto current
master so the PR's mergeability is computed against a base it contains.
2026-08-11 21:14:52 +08:00
Yichen Jiang 715baae6c1 fix(agent-presets): let the invariant follow the roster it actually scans
The service moved its "is a roster composed" reads to the derived root set;
the invariant companion still read `config.roots`. In the shape this change
exists for — an app configures nothing and the roster is the harness home
alone — that made the advisory warning fire while the fail-loud invariant
stayed silent, so an agent could address a model against an empty global
layer unchecked.

Both now read one source: `roots` exposes the resolved set, and the invariant
asks it. That decides the behavior deliberately rather than by omission — a
composition that mounts the roster now fails an unjoined agent whether its
roots were configured or derived, and `includeUserRoot: false` with no
configured roots is how a deployment keeps its agents on the host plane. Both
shapes are pinned; the derived-only case fails against the old predicate.

Three pieces of prose went stale with the first commit: the web-app bundle
comment still called the writable root an assembly fact patched in by
AppCLIEntry (removed in the profile-plugin-bundles refactor — `composeProfile`
owns it now, and only for the shipped root), and the shipped skill and its
Agent Note still called both roots "configuration". The README gains the
resolved-roster reader and the discoverable-but-undeletable preset a second
writable root produces.
2026-08-11 21:13:41 +08:00
Wenlu Wang 73a59bf60f Merge pull request #2272 from deepseek-harness/codex/fix-packed-install-pwsh-path
test: fix packed install closure and macOS path comparisons
2026-08-11 21:13:13 +08:00
Wenlu Wang 5b5ea127dd Merge pull request #2236 from deepseek-harness/codex/deepseek-user-id-header
feat(llm): send DeepSeek user identity header
2026-08-11 21:12:33 +08:00
Yichen Jiang adfd54dc5c Merge branch 'master' into worktree/minimal-profiles-bare-runtime 2026-08-11 21:11:32 +08:00
Yichen Jiang 101e7f2382 docs: regenerate the core subsystem catalog for the moved Config source line 2026-08-11 21:09:35 +08:00
Yichen Jiang 5c7dd6f8eb feat(agent-presets): own the writable preset root instead of awaiting an app
`Config.roots` defaulted to `[]`, so a deployment that did not patch both roots
in got a roster with none — `dsh run` once booted exactly that and failed
resolving `standard`. The user root never needed an app: `<dshHome>/.agent-presets`
is the same place in every deployment, resolvable here the way
`dsh-skill-local` resolves `<dshHome>/skills`.

The roster now derives that root itself unless `includeUserRoot` is false, and
`apps/cli` supplies only the SHIPPED root, whose path an installed app alone
can resolve. The derived root is appended after every configured root, so a
shipped id still shadows a home directory claiming it and `writableRoot()`
still prefers an explicitly configured `user` root; the set is resolved once at
construction, because a root set that changed between a `list()` and the
`copy()` acting on its answer would author into a directory the caller never
saw.

Every test that pins an exact roster now says `includeUserRoot: false` — the
machine's real harness home must not decide what a golden or an assertion
counts.
2026-08-11 21:09:35 +08:00
Tianyi Cui bf6800d972 Merge origin/master into naming contract proposal 2026-08-11 21:07:21 +08:00
Tianyi Cui 32454ba589 docs: address naming ledger review 2026-08-11 21:07:09 +08:00
Huanqi Cao ccb3e4aaac Merge remote-tracking branch 'origin/master' into feat/loader-entry-disabled-interpolation
# Conflicts:
#	scripts/verify-cordis-config.ts
2026-08-11 21:04:49 +08:00
Yichen Jiang c1f1a169df Merge remote-tracking branch 'origin/master' into feat/wake-idle-owner-on-task-completion 2026-08-11 21:03:33 +08:00
kingwl 18527071c4 docs: refresh module graph 2026-08-11 21:01:37 +08:00
kingwl 93b0451ed5 feat(llm): send DeepSeek user identity header 2026-08-11 21:01:36 +08:00
ZiyaZhang 3545bbbaaf Merge remote-tracking branch 'upstream/master' into feat/produced-files-folder 2026-08-11 05:58:13 -07:00
Tianyi Cui ac266ed2de Merge pull request #2109 from deepseek-harness/worktree/schedule-fixed-rate
feat(schedule): add bounded fixed-rate reminders
2026-08-11 20:53:47 +08:00
Tianyi Cui 2310a23743 fix(boot): deny DeepSeek endpoint env overrides 2026-08-11 20:53:04 +08:00
ZiyaZhang 67a5b2ceca Merge upstream master into feat/produced-files-folder 2026-08-11 05:40:11 -07:00
Yichen Jiang fa349202c7 test(tasks): fence the background integration test on an idle owner
The rewritten test tolerated the interleaving where a fast command
settles before the running turn's next pre-step claim. The notice is
then folded into a step whose scripted reply is final, the turn closes
with an empty next-step inbox, and the collection entries are never
reached — a real timeout, not a tolerated ordering.

The command now blocks on a sentinel the test creates only after the
agent has gone idle, so the wake is the only path that can deliver the
notice, and the test asserts exactly two turns.

Also apply the review's smaller points: key the wake budget by Agent
rather than object, register the budget-refill listener only under
wakeup delivery, pin the schema default and rejection like
reportDelivery does, record the retirement-window stranding as a Known
Limitation, and cross-link the partial supersession both ways.
2026-08-11 20:39:04 +08:00
Tianyi Cui 01033361c1 Merge branch 'worktree/schedule-explicit-at' into worktree/schedule-fixed-rate 2026-08-11 20:34:42 +08:00
Tianyi Cui 7583778fbd Merge branch 'worktree/schedule-conversational-after' into worktree/schedule-explicit-at
# Conflicts:
#	packages/client/runtime/README.i18n.yaml
#	packages/client/runtime/README.md
#	packages/client/runtime/README.zh.md
2026-08-11 20:34:34 +08:00
Tianyi Cui 9dc4af386d Merge branch 'master' into worktree/schedule-conversational-after 2026-08-11 20:31:49 +08:00
Yichen Jiang 75b26988dc fix(tasks): claim the teardown report before the producer cancel runs
A throwing producer cancel jumped to the force-fail branch before
`reported` was set, so `settle()` announced an unreported completion and
the default wakeup delivery started a model turn on an owner the host
was already destroying — the exact failure mode marking the record
reported exists to prevent.

Teardown claims the report before calling the producer, because that
decision does not depend on whether the producer's cancel succeeds.

Also reject a `maxConsecutiveWakes` that cannot bound anything: the
field exists to cap a runaway chain, and `Infinity` removed the cap
while a fraction never named a turn.

Correct the module JSDoc and the background-task runtime note, both of
which still promised that notices never wake an idle agent.
2026-08-11 20:29:08 +08:00
Tianyi Cui 869b5c7bf2 docs: propose repository naming contract 2026-08-11 20:26:18 +08:00
ZiyaZhang 693a093dfe Merge upstream master into feat/produced-files-folder 2026-08-11 05:22:59 -07:00
Huanqi Cao 32744c2b5c refactor(preset): gate tool-pwsh by platform alongside tool-bash
The web-app overlay now disables the host tool-pwsh row too, and the shipped
presets (standard/code/cordis) declare both shell tool rows with inverted
platform gates — tool-bash on POSIX, tool-pwsh on win32 — so the preset layer
exposes exactly one shell tool per host and a preset can drop or replace the
shell tool on either platform. windows-shell.spec pins both preset gates and
both host tool rows disabled in the web composition; the loader and Windows
pwsh notes are updated in place.
2026-08-11 20:21:57 +08:00
Yichen Jiang 4675914d74 Merge remote-tracking branch 'origin/master' into feat/wake-idle-owner-on-task-completion 2026-08-11 20:20:01 +08:00
Yichen Jiang 8a29248425 Merge pull request #2268 from deepseek-harness/worktree/preset-authoring-self-validation
修正创造模式 preset 组装指导中的 4 处事实错误与失效的校验建议
2026-08-11 20:18:34 +08:00
Yichen Jiang 2d8856c14b Merge pull request #2197 from deepseek-harness/worktree/web-plugin-config
feat(web): configure host-plane plugins from the settings page
2026-08-11 20:18:03 +08:00
Tianyi Cui d991327507 Merge branch 'worktree/schedule-explicit-at' into worktree/schedule-fixed-rate 2026-08-11 20:07:51 +08:00
Tianyi Cui 3e131befb5 Merge branch 'worktree/schedule-conversational-after' into worktree/schedule-explicit-at 2026-08-11 20:06:58 +08:00