Commit Graph
14982 Commits
Author SHA1 Message Date
LogosVeritas 2de77d0339 test(snapshot): stabilize minimal compaction estimates 2026-10-13 12:10:16 +08:00
LogosVeritas b560423995 fix(minimal): configure tools and complete image offload recovery 2026-10-13 11:25:18 +08:00
LogosVeritas 4703022ad6 Merge remote-tracking branch 'origin/master' into feature/minimal-compact-image 2026-10-13 11:19:17 +08:00
Yichen Jiang 7a27ac50aa Merge pull request #6095 from deepseek-harness/worktree/hotfix-azure-native-auth
fix(llm-pi-ai): align Azure provider IDs with pi-ai 1.1.0
2026-10-13 11:03:04 +08:00
Turtle ead3556a04 Merge pull request #6054 from deepseek-harness/fix/subagent-no-sleep-wait
fix(prompt,goal): end the turn while waiting on subagents and read line ranges with read
2026-10-13 11:00:00 +08:00
Dudu-0223 c6f60e68f0 Merge pull request #6008 from deepseek-harness/fix/subagent-depth-awareness
fix(subagent): announce exhausted delegation depth
2026-10-13 10:55:07 +08:00
Yichen Jiang 23a542fcfa fix(llm-pi-ai): align preview and settings with the Azure provider ID 2026-10-13 10:51:10 +08:00
Yichen Jiang 27800fcd40 fix(llm-pi-ai): use the Azure provider ID for native auth 2026-10-13 10:36:52 +08:00
LogosVeritas 00a007d833 Merge branch 'master' into feature/minimal-compact-image 2026-10-13 10:32:01 +08:00
Magolor 5249d9a4ce fix: prefer saved credentials and use environment keys in headless (#5483)
* ui: show locked API key environment reference

* fix(ui-settings-models): skip unused pi-ai credential reference

* fix(ui-settings-models): show active provider auth source

* test(llm): cover provider auth check failures

* docs(ui-settings-models): clarify active provider authentication

* test(web): update model key copy snapshots

* fix(ui-settings-models): clarify native authentication source hint

* fix: address PR 5483 review feedback

* docs(llm): state empty auth lookup behavior

* fix: refresh auth hints with credential snapshots

* fix: require credential refresh revision

* test: cover auth status projection

* fix: refresh catalog and browser expectations after rebase

* fix: keep auth status projection internal and explicit

* fix: preserve credential source checks with signed-in account rows

* test: pin Models authentication instead of inheriting host keys

* fix: prioritize stored credentials across providers

* fix: use one environment fallback hint

* docs: refresh credential contract

* docs: refresh config catalog

* test: align provider hint verification

* fix: use provider-native auth hints and endpoints

* fix: cover oauth-capable provider auth hints

* fix: show canonical endpoint defaults

* fix: avoid misleading endpoint fallback

* fix: label catalog endpoint defaults

* fix: shorten auth hints with hover details

* fix: clarify native auth resolution

* test: align DeepSeek endpoint hint

* fix: pair help button corner shape

* fix: address credential precedence review

Record the stored-credential precedence in a superseding Agent Note and
an upgrade guide, and align the credentials subsystem page, package
READMEs, and JSDoc with the order file > launch env > $cwd/.env >
$DSH_HOME/.env.

Report each pi-ai route's catalog endpoint and native-auth environment
names through the provider directory, check the names against the
installed pi-ai resolvers, and remove the llm/checkAuth and credential
describe operations that no Models page code calls.

Restore the route-derived key reference and the home expansion that
reads the home directory only for a leading ~.

* fix: clarify model authentication guidance

* fix: explain native provider OAuth requirements

* fix: keep authentication guidance method neutral

* fix: show credential reference source in model editor

* fix: use environment authentication in headless profile

* fix: validate headless authentication and current provider metadata

* test: retain authentication guidance coverage with account catalog updates

* test: retain writable Models credentials with the pinned environment
2026-10-13 10:10:06 +08:00
imccyu 29249a4a83 fix(typert): distribute indexed constraints across unions 2026-10-13 01:43:19 +08:00
imccyu 7ee6da0039 docs(typert): refresh strict input bilingual pairing 2026-10-13 00:58:01 +08:00
imccyu 2e56caee96 fix(typert): enforce strict named dictionary index constraints 2026-10-13 00:53:01 +08:00
imccyu 557e4137bf fix(typert): leave Node client bundling to operator layer 2026-10-13 00:53:01 +08:00
imccyu b769d1ce7a docs(typert): correct Remote metadata references 2026-10-13 00:53:00 +08:00
imccyu bd91a4a570 fix(typert): inject zod into remote metadata factories 2026-10-13 00:53:00 +08:00
imccyu 902df58ded refactor: scope this branch to generated Remote artifacts
The caller-connection work — forwarded-event opt-in, physical socket
ownership, and the Node/MCP artifact-only consumer fixture — moves to a
stacked PR on top of this one. This branch now changes only how Remote
definitions are generated (Typert artifacts, lazy method info,
consumer-selected input strictness, tool-schema projection) and how the
existing Registry consumes them.
2026-10-13 00:52:59 +08:00
imccyu ae8d417dcf refactor(typert): name the tool-schema projection for its owning standard 2026-10-13 00:52:59 +08:00
imccyu d5bf4b348a refactor(remote): drop unrelated churn from the metadata change 2026-10-13 00:52:58 +08:00
imccyu 570520862d refactor(typert): let consumers select input schema strictness 2026-10-13 00:52:58 +08:00
imccyu efdaa86fb8 feat(typert): unify Remote definitions with lazy method info 2026-10-13 00:52:58 +08:00
imccyu 27fd3c8b80 Merge pull request #6062 from deepseek-harness/feat/sidebar-session-watermark
feat(ui-workspace): fold sidebar sessions with a monotonic watermark
2026-10-13 00:45:17 +08:00
imccyu d6e26edbec Merge pull request #6075 from deepseek-harness/worktree-messageindep
refactor(ui-chat): place Chat rows by group-tree position
2026-10-13 00:06:01 +08:00
Yifffan 6eaa595fdb Merge pull request #6073 from deepseek-harness/feat/adaptive-ui-and-skills
feat(skills): 新增自适应客户端规范(Skill),并适配插件页与自动化任务页页头
2026-10-12 23:52:49 +08:00
imccyu 0b28bc80a7 fix(ui-chat): narrow input payloads before reading echo identities
`observedInputs` now reads every `input`-position Node, and a Node's
payload is not guaranteed to be an object. Check the payload and its
`source` before reading the composer `rpcId`, so an input Node without a
message payload no longer throws while pending echoes are matched.
2026-10-12 23:21:32 +08:00
imccyu 9a78e752b1 test(ui-chat): pin the input position order and a later-anchored Turn control
The position-order case includes `input`. A Turn without opening input
whose control anchors after a position-less row still renders the control
before the group that holds that row.
2026-10-12 23:21:32 +08:00
imccyu 8f5139b2c8 docs: complete the exclusive-claim contract and group-tree pointers
State in the `exclusive` JSDoc and the Conversation reference that the
claimed target's fallback does not run and that a fallback's own claim
has no effect. Reword the `input` position as the Turn's opening input
and separate the finalized-answer exemption from position-less
`assistant-step` rows. Point both package READMEs at the claim and the
group-tree positions.
2026-10-12 23:21:32 +08:00
imccyu c373b2958d test: cover exclusive matches and group-tree positions
Assembler cases cover a claim in either registration order and on live
append, other targets and target-less Definitions, the skipped fallback,
and both dispatch failures. Chat grouping cases split the step run by
position regardless of kind and regroup on a position change; the late
reply produces one Chat Node through a real assembler.
2026-10-12 23:21:32 +08:00
imccyu 2c16fb10e5 docs: record exclusive matches and migrated group-tree positions
Add the exclusive Conversation matches Agent Note; bring the group-tree
note up to the `input` position and the migrated kind lists, and the
timed-question note up to claim-based reply deduplication. Pair the
Chinese Conversation reference and Chat grouping README with the
English updates.
2026-10-12 23:21:31 +08:00
imccyu 5dbc298ed1 refactor(ui-chat): place Chat rows by group-tree position
Chat grouping, whole-Turn folding, and Turn-input detection read each
Node's declared `groupTree` position instead of the `INDEPENDENT` and
`TURN_PROCESS_INDEPENDENT_KINDS` kind lists and the user/steering/
turn-trigger checks. `ChatGroupTree` gains an `input` position between
`exchange` and `turn`; the built-in Definitions declare the positions
their kinds had, so built-in rows keep their placement.

The late question reply claims its message on the Chat target, so the
generic message Definition no longer projects a duplicate trigger and
grouping drops the message-id aggregation. Its placement is unchanged.
2026-10-12 23:21:31 +08:00
imccyu 533299e6ab feat(ui-conversation): let a Definition claim an event on its target
A match result may set `exclusive: true`. The assembler evaluates every
match of an event before accepting any, so a claim is independent of
registration order: other Definitions of the claimed target build no
Context for the event and the target's fallback does not run, while
Definitions of other targets and target-less Definitions still receive
it. Two claims on one target, or a claim without a target, throw.
2026-10-12 23:21:23 +08:00
Yif 9e62c1c229 fix(web): restore the plugin header subtitle row to its flex layout
The responsive change had moved `.pageIntro` off flex, which put the information
icon 1.06px off the subtitle's vertical centre and failed the existing geometry
assertion in `plugin-manager.e2e.ts`. Restore the flex row and the button's
`flex: none`, which keeps the 4px gap and the centring. The header still wraps
its action group onto another line, which is what this change is for.

Pin the wrap threshold in both header scenarios. Each records whether the action
group sits beside or below the heading, the plugin scenario asserts the wide and
narrow sides explicitly, and the plugin scenario launches its own scaffold so an
install task left by an earlier test cannot move the threshold between runs.
2026-10-12 23:15:20 +08:00
Yudong Han 4dff4b07f0 Merge pull request #6042 from deepseek-harness/fix/office-docx-check-scope
fix(office): 移除内置 checker 并限制 Word 无关检查
2026-10-12 22:50:11 +08:00
turtle1999 5a7cb94149 fix(ui-workspace): address watermark review
- Compute each group's baseline watermark once per render.
- Skip the row-motion reset when folding drops no raised watermark.
- Document that the watermark is a row count that a reorder can outrun, and
  that any unmount of the grouped tree resets it; pin both in tests.
- Cover raise-to-current, keep-after-leaving, and fold reset in the keyless
  Web folding scenario.
2026-10-12 22:28:05 +08:00
Yif 89c4652add feat(web): reflow the automation tasks header at narrow widths
The page header keeps the title at its natural width and moves the New action
onto another line once the two no longer fit, so a narrow content column never
splits the title across lines.

Register the new browser scenario in both web programs: the host aggregate owns
files that boot the host spine, and the client-registered app project excludes
them.

The scenario asserts the title stays on one line, the action separates when the
column narrows, and focus survives the change.
2026-10-12 21:56:15 +08:00
Yif ee558c82d7 feat(web): reflow the Plugins page header at narrow widths
The page header wraps its action group onto another line when the title and the
actions no longer fit together, so the title keeps its width and the actions keep
their labels on one line. The information button follows the subtitle text
instead of a flex row, which keeps it beside the copy at every width.

Cover the header in the plugin-manager browser scenario: the action group stays
inline when it fits, moves below when it does not, keeps its labels on one line,
stays inside the header, and retains focus across the change.
2026-10-12 21:56:08 +08:00
Yifffan 9055e29891 Merge pull request #5172 from deepseek-harness/ui/plugin-placeholder-default-name
fix(ui): 修复会话操作间距、悬停交互与任务菜单层级
2026-10-12 21:38:13 +08:00
turtle1999 d99d8afa43 fix(goal): start goal rounds only after progressing descendants settle
The subagent guidance tells the model to end its turn while it waits for
delegated results. With an armed goal, the round driver would then queue a
new round at every idle point, spending the round budget while the agent
only waits. The driver now joins the agent's progressing descendants
through the optional subagent service before it reserves a round, and stops
waiting when the plugin unloads.
2026-10-12 20:56:21 +08:00
turtle1999 7df3c41ec9 feat(ui-workspace): fold sidebar sessions with a monotonic watermark
Each Workspace shows a contiguous prefix of its Sessions up to a watermark.
The watermark rises to cover running, waiting, unread-completion, and
current Sessions within the first 50 rows, and to a search reveal target at
any row. It never falls on its own; Show more raises it past 50, and Show
less or folding (including an ancestor) resets it.
2026-10-12 20:36:18 +08:00
Yichen Jiang 7b8eef3954 test(llm-pi-ai): avoid model-specific Azure assertions 2026-10-12 18:09:54 +08:00
turtle1999 7a881e944a fix(prompt): end the turn instead of sleeping on subagents and read line ranges with read
The subagent guidance now tells the model to end its turn when only waiting
for delegated results remains, since each result starts a new turn. The read
guidance names sed, head, and tail alongside cat and covers line ranges.

The compaction-output-reserve and compaction-summary-headroom context windows
grow by 40 tokens to keep their triggers between the history and its
condensed replacement.
2026-10-12 18:09:15 +08:00
ZiyaZhang 77483f61d9 fix(subagent): respect optional runtime context suppression 2026-10-12 03:04:08 -07:00
yudshj f44cfa7813 fix(office): name PowerPoint and Excel scripts for their task
PowerPoint and Excel tasks in PTC mode wrote inspect.py, which shadows the
standard library and forces a delete-and-retry step. Apply the Word naming
rule to both skills, listing the libraries each one imports.
2026-10-12 17:51:44 +08:00
Yichen Jiang d79f13a4d4 feat(llm-pi-ai): adopt pi-ai 1.1.0 and Azure provider rename 2026-10-12 17:33:47 +08:00
yudshj fa740a581a fix(office): restore Word creation guidance and guard direct package writes
- Restore the office-docx new-document example from master. #6040 concerns
  edits, and no Word creation case covers its removal.
- Tell direct package writers to copy each member once into a new ZIP;
  python-docx, python-pptx, and openpyxl all reopen packages with duplicate
  members without error.
- Anchor the script-name assertion so hyphenated names such as edit-docx.py,
  which shadow no module, do not fail the Word e2e.
2026-10-12 17:31:53 +08:00
Yichen Jiang 3aa8872e67 Merge pull request #6027 from deepseek-harness/worktree/web-terminal-duplex
feat(web): carry terminal input over duplex streams
2026-10-12 17:13:57 +08:00
Yif 1f11e46e70 fix(ui): retain hover continuity through active cards 2026-10-12 16:43:40 +08:00
Yif 6b32843970 Merge master and repair SDK and job test integration 2026-10-12 16:41:44 +08:00
Dudu-0223 410244be7e Merge pull request #6035 from deepseek-harness/feat/team-interrupt-config
feat(agent-team): allow disabling the interrupt tool
2026-10-12 16:22:13 +08:00
yudshj fb2a554cd3 refactor(office): remove the bundled structural checker 2026-10-12 16:07:23 +08:00