Commit Graph
8328 Commits
Author SHA1 Message Date
Dudu-0223 fd8dfa270d test(subagent): refresh naming snapshots against current base 2026-11-03 16:02:27 +08:00
Dudu-0223 7b2d7841dd Merge master into subagent naming fixes 2026-11-03 15:52:55 +08:00
Dudu-0223 6c0b6c7aa3 fix(subagent): validate persisted names and clarify presentation 2026-11-03 15:51:40 +08:00
imccyu 36626c7dfa Merge pull request #7700 from deepseek-harness/refactor/css-anchored-panels
refactor(client): position floating panels with CSS anchors
2026-11-03 15:43:31 +08:00
Magolor d27dc27538 fix(ui-conversation): rebuild the conversation window after a failed incremental flush (#7537)
* fix(ui-conversation): rebuild the conversation window after a failed incremental flush

* fix(ui-conversation): keep the original failure when the rebuild also fails

* test(ui-conversation): type the recovery probe view for type-aware lint

* fix(ui-conversation): finish the rebuild inside flush and report it with ConversationUpdateError

* test(ci): retain process identity while awaiting runner recovery
2026-11-03 15:37:22 +08:00
Dudu-0223 19e5a95802 Merge pull request #7773 from deepseek-harness/feat/sdk-team-mode
feat(team): support enabling Team mode through SDK Cordis patches
2026-11-03 14:32:04 +08:00
Stevring 82b953acc5 Merge master into refactor/css-anchored-panels 2026-11-03 14:26:17 +08:00
Yichen Jiang e2f5686a13 Merge pull request #3372 from deepseek-harness/feat/mcp-manager-core
feat(mcp): 支持插件注册与 Remote 管理的 MCP 服务器
2026-11-03 06:07:04 +00:00
winewill ece8f7cb77 Merge pull request #7495 from deepseek-harness/feat/desktop-update-channels
feat(desktop): 在设置中切换更新渠道
2026-11-03 14:03:04 +08:00
Dudu-0223 9f57925000 Merge remote-tracking branch 'origin/master' into feat/subagent-catalog-names
# Conflicts:
#	docs/persistence-schema.json
#	docs/tool-catalog.i18n.yaml
2026-11-03 13:49:18 +08:00
gengruilin d9d3b80fe3 Merge remote-tracking branch 'origin/master' into feat/mcp-manager-core 2026-11-03 13:37:58 +08:00
Stevring 0667efe813 Merge master into refactor/css-anchored-panels 2026-11-03 13:32:06 +08:00
gengruilin df078ddc82 Merge remote-tracking branch 'origin/master' into feat/mcp-manager-core 2026-11-03 13:31:23 +08:00
Dudu-0223 a3baa4d6e4 Merge remote-tracking branch 'origin/master' into feat/sdk-team-mode
# Conflicts:
#	docs/persistence-schema.json
2026-11-03 13:29:41 +08:00
winewill 3c46127816 Merge remote-tracking branch 'origin/master' into feat/desktop-update-channels 2026-11-03 13:20:42 +08:00
yudshj 3859913c68 feat(web): 网页搜索与获取设置页分开选择 Search 与 Fetch,Search 默认改为 DeepSeek Search API 2026-11-03 13:04:26 +08:00
imccyu 06bf7ce024 Revert "fix(settings): show saved API keys and preserve environment detection…"
This reverts commit 9bb49604b63bb5d50e879bcf63c9f5cb2afbd737.
2026-11-03 12:33:44 +08:00
Dudu-0223 e180fce05a feat(team): enable new root Team mode through Cordis configuration 2026-11-03 12:09:30 +08:00
imccyu aa4774e685 Merge master into worktree-sync-dsh-0.2.2-to-master 2026-11-03 12:05:47 +08:00
imccyu ef5f28d0fb Merge master into worktree-sync-dsh-0.2.2-to-master 2026-11-03 11:47:40 +08:00
Turtle 582c334472 Merge pull request #7022 from deepseek-harness/turtle/websearch-query-limit-96c308027005
feat(web): raise web_search defaults to 10 queries and 10 sources
2026-11-03 11:41:39 +08:00
imccyu eb1713f856 fix(session-projection): keep released units in checkpoints (#7754)
* fix(session-projection): keep released units in checkpoints

Since the Cordis rc.11 teardown order unloads the Web layer before the
base layer, Session Controller and harness-dev-context release their
projection units before their live Sessions detach. The projection
cache is still alive at that point and wrote a checkpoint holding only
the units that were still registered, replacing the complete record.
A blank Session then lost sessionListMetadata and listed as an untitled
conversation after every graceful restart.

A released unit now stays in the registry as a predecessor: it leaves
event drives, snapshots, restores, and change notifications, while
checkpoint() keeps each Session's last cell of it without advancing it.
Registering the same key again replaces the predecessor and refolds
the log. The projection cache keeps replacing whole records.

* test(session-projection): assert frozen released units across unload tests

Update the remaining unload tests that still expected a released unit
to vanish from checkpoint(): user-approval, agent-loop inbox and scope
lifecycle, time-context, and the agent registry now assert that the
same Session keeps its pre-unload row, that a later event does not
advance it, and that a Session created after the unload has no row.
The token-meter and goal unload tests also append an event after the
unload.

Document that a retained handle read still advances a released cell
that checkpoint() serves, and that restore() folds only live units, so
its refreshed rows omit released units.

* docs(session-projection): sync the ProjectionHandle type-equiv block

* docs(session-projection): record frozen released units and their upgrade

Add the upgrade guide for checkpoint() keeping a released unit's last
row, update the registration-handles Agent Note with the frozen-cell
decision and the retained predecessor, list both consequences under the
registry README's known limitations, note in the projection cache README
that a stored row can be frozen at its unit's release, and say that
restoreFloor() ignores released predecessors.

Update the agent-loop resource-lifecycle unload test, which read
checkpoints through an alias, to the frozen-row semantics.

* docs(upgrade-guide): mark the released-checkpoint snippet ignore-check

* docs(session-projection): state the retained-handle path and narrow a rejected alternative

* docs(upgrade-guide): re-record the released-checkpoint guide pairing
2026-11-03 11:07:09 +08:00
Stevring dd8fb95670 Merge master into refactor/css-anchored-panels 2026-11-03 10:50:14 +08:00
imccyu 6e77ea0131 feat(web): boot past failed optional client plugins (#7733)
* feat(web): boot past failed optional client plugins

The Web client boot audit now follows Host startup strictness. An
inactive entry on the global required list (module system, Session
transport, renderer, application frame, Session view, and sidebar)
still rejects startup and the report marks the required entries.
Other inactive entries produce one console warning and the
application mounts without them. The boot page no longer draws a
failed entry before the audit decides.

* fix(web): audit boot entries whose creation rejects and name activation errors

ClientEntries.start() now logs a row whose Loader creation rejects, such
as a module that exports no plugin, and leaves it inactive for the boot
audit, as the Host Loader group does. The audit awaits only failed
fibers to report their recorded activation error. Notes, READMEs, and
the Web client subsystem page describe the browser boot audit; tests
cover invalid exports, carrier presentation of optional failures, and
required names absent from the boot graph.

* test(web): fail test carriers and e2e on inactive client entries

The product boot only warns about inactive entries outside its required
list, but tests must still surface every plugin that fails. TestClient
and createClientTest now require every roster entry to activate unless
a case passes allowInactiveEntries. The watchConsole tripwire, the
real-host smoke, and the assembled jsdom boot treat a web boot warning
as a failure with no opt-out.

Docs: the Web README names Session control, notes that an entry without
a fiber is reported as an import failure like the Host audit's "failed
to import", and the startup strictness note lists the browser tests.
2026-11-02 16:20:50 +00:00
Dudu-0223 a4c933ad1f fix(subagent): fail unmatched name paths and tighten name admission
Review round on the naming change.

`resolveName` now distinguishes an address from a Session id: a
slash-separated address never is one, so an unmatched path fails with
AGENT_NAME_NOT_FOUND instead of reaching member lookup as an unknown id,
while a single token keeps the Session-id fallback. Path resolution also
treats external and unknown children as leaves, so a name below an external
run reports the same clear failure instead of surfacing a session-query error
for an identity that owns no local Session.

Native V4 admission rejects a repeated sibling name in own catalog facts,
symmetrically with its duplicate-child check, so a log that would make name
lookup ambiguous fails before any member is resolved.

`SiblingNameReservations.release()` checks that it still owns the map entry,
so a stale or repeated release cannot drop a newer reservation for the same
creator.

`list_agents` explains corrupt, unsupported, and unavailable: they report that
the row's own descendants could not be read, and the row remains a member the
caller can message. The earlier wording restricted messaging to running or
inactive rows, which excluded addressable members.

`isAgentName` stays module-local; the package entry exports only
ROOT_AGENT_NAME, matching its current callers.

Package READMEs, the subsystem page, the Agent Note, and the generated API
catalogue follow; recorded-session, CLI, and Web expectations are refreshed.
2026-11-02 22:43:01 +08:00
Yichen Jiangandimccyu d721353f86 feat(forge): unify plugin entry for reviews and worktrees (#7721)
* feat(forge): unify the worktree plugin entry and add user previews

* docs(forge): show session-linked GitHub pull requests in preview

* refactor(forge): keep plugin unification out of profile loading

* docs(forge): document manual upgrade to the unified plugin entry

* fix(forge): localize preview descriptions and address review feedback

* test(web): refresh creation recommendation catalog for the forge description

---------

Co-authored-by: imccyu <[email protected]>
2026-11-02 22:34:01 +08:00
Xu Hanxiang f54967a90d Merge pull request #7543 from deepseek-harness/feat/sandbox-policy-caps
feat(liveshare): run PTC programs on the shared surface
2026-11-02 13:20:18 +00:00
gengruilin 30bf5733d6 refactor(mcp-manager): publish the manager as ctx.mcpManager
The `ctx.mcpServers` key reads as a collection of servers, but the
service manages that collection, and ACP already uses `mcpServers` for
a plain server list. Publish the service as `ctx.mcpManager`, matching
the package name, the `mcp-manager/` event prefix, and
`ctx.pluginManager`. Remote endpoints become `mcpManager/*`; the class
keeps its name, McpServerManager.
2026-11-02 21:01:42 +08:00
Dudu-0223 6644a234a5 Merge master into feat/subagent-catalog-names 2026-11-02 17:46:04 +08:00
gengruilin 62c6a2658d Merge remote-tracking branch 'origin/master' into feat/mcp-manager-core 2026-11-02 17:11:12 +08:00
imccyu d3f7b8abe7 Merge pull request #7701 from deepseek-harness/fix/empty-session-sidebar-0.2.2
[0.2.2] fix(session-projection): compute exactly the requested projections for hot session summaries
2026-11-02 17:05:09 +08:00
Shigma ce18012a52 Merge pull request #6220 from deepseek-harness/chore/cordis-loader-rc11
chore(cordis): complete Loader rc.8 and share upstream Include patches
2026-11-02 16:50:28 +08:00
Dudu-0223 36a0cab333 Merge pull request #7533 from deepseek-harness/fix/subagent-model-selection-guidance
fix(subagent): 推理强度要求完整路由,显式选路使用模型默认强度
2026-11-02 16:30:49 +08:00
CreatixChu 4eb2118dba Merge pull request #7515 from deepseek-harness/feat/cua-optional-bundle
feat(cua): 随 DSH 分发 Computer Use,并在实验性插件列表中显示
2026-11-02 16:21:57 +08:00
Dudu-0223 05225052f9 docs(subagent): clarify discovery covers explicit model selection 2026-11-02 16:13:04 +08:00
Dudu-0223 a7f21a8dd6 fix(subagent): persist task owner names and simplify receipts 2026-11-02 16:01:05 +08:00
Dudu-0223 65a87a5860 fix(subagent): clarify selection guidance and stabilize Web smoke capture 2026-11-02 15:52:24 +08:00
Dudu-0223 5a75c8b4a5 fix(subagent): require an explicit route for reasoning overrides 2026-11-02 15:06:10 +08:00
Dudu-0223 7301fa98b0 fix(subagent): state when to query child routes and when to omit them
The discovery tool presented itself as the place to inspect options before
selecting a child route, and rejected every provider or model outside the
Session's authorized routes, including providers that do not exist. A model
that skipped the no-argument call therefore had no way to learn the correct
ids or that omission was legal, and repeated identical denials.

Say that queries exist to override the child route, that omitting both route
fields inherits the parent route, that a field is omitted rather than sent
empty, and, in each optional route field, that omitting it inherits the
parent value.
2026-11-02 15:05:53 +08:00
Magolor 8d0c3b4633 fix(settings): show saved API keys and preserve environment detection (#7695)
* fix(settings): show saved API keys in provider editors

* test(settings): retain DeepSeek environment detection states

* fix(settings): classify saved-key reads and align browser expectations

* test(settings): cover saved keys under derived references

* test(settings): verify saved endpoints and keys on provider requests

* fix(settings): preserve credential drafts without changing authentication
2026-11-02 15:00:19 +08:00
Dudu-0223 ff563d07e0 feat(subagent): name subagents in their creator catalog
Models coordinate subagents through send_message, interrupt_agent, list_agents,
and Team task owners, but every one of those addressed a member by a
36-character Session id. Each new child now has a name, unique among its
creator's children, recorded as a field of the subagent/catalog entry the
creator already appends (payload version 3).

The Session id stays the only execution identity for routing, authorization,
persistence, task ownership, and navigation. A name is a model-facing
reference: 1-32 lower-case letters, digits, or hyphens starting with a letter,
never `lead`, so a UUID never parses as one. Omission selects the first free
`agent-N`; an explicit duplicate or invalid name fails before startup. The
creator reserves the name synchronously at admission and releases it when the
catalog entry commits or startup fails, so no second write, rollback protocol,
or optional naming service exists.

The root is `lead`, and a descendant's full name is its path from the root
without a `lead/` prefix, such as `reviewer/checker`. Sibling-unique segments
make full names tree-unique without a root registry, and cold resume rebuilds
a member's path from the catalogs along its creation chain. A member below an
unnamed historical creator keeps its Session id as its name. resolveName()
reads only the catalogs along the path and grants no authority.

Tools, runtime-authored text, and the Web client consume names: delegation
takes an optional name and returns { kind, subagentId, name }; send_message and
interrupt_agent take `agent`; list_agents rows carry name, status, and
description; Team task results report the owner's name while storage keeps
ownerId; identity runtime context, message framing, and settlement notices use
full names. Recorded sessions, CLI and Web expectations, the Python runtime
snapshots, bilingual docs, an upgrade guide, and an Agent Note follow.
2026-11-02 14:58:32 +08:00
creatixchu 7d9bc01a50 Merge updated master and helper identity into bundled Computer Use 2026-11-02 14:58:31 +08:00
Stevring 2c990f0b14 refactor(client): position floating panels with CSS anchors 2026-11-02 14:43:58 +08:00
winewill d2bd3f3893 feat(desktop): rename stable update channel consistently 2026-11-02 14:27:21 +08:00
gengruilin be167ec989 Merge remote-tracking branch 'origin/master' into feat/mcp-manager-core 2026-11-02 11:43:57 +08:00
creatixchu d052805f96 fix(cua): preserve unowned files during developer signing setup 2026-11-02 11:37:23 +08:00
creatixchu 8de3a97f8d Merge origin/master into feat/cua-dev-signing 2026-11-02 11:19:00 +08:00
imccyu e428c74d51 Merge pull request #7207 from deepseek-harness/feat/sidebar-plugin-pin-preview
feat(ui): 优化侧栏插件固定与 More 交互
2026-11-01 01:05:56 +08:00
Dudu-0223andimccyu 0487699ae4 feat(subagent): share ID-based identity and collaboration guidance (#7519)
* feat(subagent): share identity and collaboration guidance

* fix(subagent): complete shared guidance snapshot expectations

* fix(subagent): match task descriptions to the user language

* refactor(subagent): retain shared guidance with Session ids

* test(subagent): recognize parent ids in shared identity

* Checkpoint ID collaboration guidance generated expectations

* Preserve historical Web schema sidecars

* fix(test-support): preserve job references during snapshot refresh

* test(subagent): refresh ID-only collaboration guidance outputs

* fix(subagent): rely on list_agents tool description

* fix(subagent): keep collaboration guidance consistent with live identity

* test(team): parse parent identity from shared guidance

* test(subagent): address parent from shared identity context

* test(subagent): refresh compiled Web guidance snapshots

* test(subagent): refresh browser collaboration context fixtures

* docs(subagent): attribute required identity to standard controls

* fix(subagent): clarify collaboration identity prompts

* test(subagent): remove duplicate PowerShell collaboration context

* refactor(subagent): match unavailable-root errors by name and code

---------

Co-authored-by: imccyu <[email protected]>
2026-10-31 22:38:07 +08:00
Yif 5b559def7c feat(ui): customize sidebar plugin pins and More menu 2026-10-31 22:19:44 +08:00