Commit Graph
1031 Commits
Author SHA1 Message Date
Dudu-0223 0c08afe52f Use explicit void cleanup in preset integration test 2026-10-29 18:59:34 +08:00
Dudu-0223 664e64debe Align integration checks with shared conditional Team tools 2026-10-29 18:52:03 +08:00
Dudu-0223 997fc4b05e Sync current schedule integration into Team UI layer 2026-10-29 18:22:55 +08:00
Dudu-0223 1287db6c8d Sync latest master schedule changes into naming layer 2026-10-29 18:20:02 +08:00
Dudu-0223 a0a5a24556 Merge current master schedule APIs into stack base 2026-10-29 18:18:04 +08:00
ZiyaandMagolor 341ea6eea4 feat(schedule): integrate standalone tasks with the existing WebUI (#6189)
* feat(schedule): manage Host tasks with typed timing and delivery targets

* fix(schedule): align task creation button halves

* refactor(schedule): remove obsolete Session reminder runtime

* refactor(schedule): simplify task UI and preserve keyboard navigation

* fix(schedule): address task delivery and interface review findings

* test(schedule): normalize bundle module paths on Windows

* fix(schedule): cover reserved targets and trim unrelated changes

* refactor(schedule): minimize task management changes after rebase

* test(schedule): align rebased fixtures and documentation records

* test(schedule): refresh SDK scenarios added on master

---------

Co-authored-by: Magolor <[email protected]>
2026-10-29 18:11:48 +08:00
Dudu-0223 3306de499e Sync Team session UI layer with updated naming parent 2026-10-29 18:09:18 +08:00
Dudu-0223 11c02855e1 Merge master into subagent runtime stack base 2026-10-29 17:55:40 +08:00
Dudu-0223 4514b99d9c Merge master into feat/subagent-names 2026-10-29 17:43:46 +08:00
LogosVeritas 8b8c9d9eea Merge latest master into feat/python-sdk-slash-commands 2026-10-29 13:21:31 +08:00
Dudu-0223 0036824b70 refactor(team): extract shared subagent prompts into a separate layer 2026-10-29 13:15:03 +08:00
LogosVeritas 0c78c4c710 fix(sdk): return RunResult after native command activity 2026-10-28 21:14:21 +08:00
Dudu-0223 c77ecc73f1 refactor(subagent): share identity and collaboration guidance across team modes 2026-10-28 17:58:09 +08:00
Dudu-0223 b98549729c test(team): align headless fixture with unified identity 2026-10-28 17:07:20 +08:00
LogosVeritas 9976a87e97 Merge master into feat/python-sdk-slash-commands 2026-10-28 16:14:33 +08:00
fz 2b076f5df5 test(sdk): account for Windows missing-command diagnostics 2026-10-27 00:06:41 +08:00
fz 3a80325a71 fix(sdk): verify and document plugin management prerequisites 2026-10-26 23:50:27 +08:00
fz 8494f13cde Merge remote-tracking branch 'origin/master' into feat/sdk-tool-parity 2026-10-26 23:43:02 +08:00
fz 3ff2bd2c32 test(sdk): defer Team tool parity to issue 7172 2026-10-26 23:14:37 +08:00
Dudu-0223 f6b8f49834 Merge pull request #7195 from deepseek-harness/fix/shared-subagent-tools
fix(subagent): share delegation tools within each preset revision
2026-10-26 15:27:42 +08:00
winewill 6cbbc8caa5 Merge master and reconcile desktop diagnostic records 2026-10-26 11:05:45 +08:00
LogosVeritas e122cfb627 feat(sdk): route native commands through run 2026-10-26 00:53:20 +08:00
Dudu-0223 78083c4ff4 Merge remote-tracking branch 'origin/fix/team-descendant-ui' into codex/team-task-split 2026-10-25 16:10:33 +08:00
Dudu-0223 122dc3af42 refactor(team): isolate package group and address review feedback 2026-10-25 16:10:07 +08:00
Dudu-0223 2c59c80608 Merge remote-tracking branch 'origin/feat/subagent-names' into codex/resolve-6288-20261025 2026-10-25 16:08:19 +08:00
Dudu-0223 463b19bb90 test(subagent): include optional names in shipped preset schemas 2026-10-25 16:07:46 +08:00
Dudu-0223 bfcf58b52b Merge commit 'b95d9763bbb' into codex/resolve-6288-20261025 2026-10-25 15:52:28 +08:00
Dudu-0223 efe90ca419 test(subagent): refresh CLI naming and communication snapshots 2026-10-25 15:51:55 +08:00
Dudu-0223 b2ca187d40 Merge naming plugin CI repairs and align Team integration fixtures 2026-10-25 15:51:53 +08:00
Dudu-0223 80f70969d9 Merge current subagent naming stack into Team session UI 2026-10-25 15:45:40 +08:00
Dudu-0223 aa1540903d Merge refreshed subagent tree parent into named agents 2026-10-25 15:26:49 +08:00
Dudu-0223 c49c4f11de Merge master into subagent tree stack and reconcile fixtures 2026-10-25 15:24:45 +08:00
Dudu-0223 6b24717b4a test(subagent): cover preset readiness and inherited restrictions 2026-10-25 14:30:53 +08:00
Dudu-0223 f84c7371ca refactor(subagent): keep names in a durable alias map 2026-10-25 13:46:55 +08:00
imccyu 8ebf8a6218 Merge master into DSH 0.2.1 ACP stdout and view-tab tooltip sync
# Conflicts:
#	apps/cli/tests/profiles/acp/tests/stdout.expected.e2e.ts
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/mcp/mcp-client/tests/protocol.spec.ts
2026-10-25 13:32:05 +08:00
Dudu-0223 f78984a497 fix(subagent): share delegation tools within each preset revision 2026-10-25 12:17:00 +08:00
Tianyi Cui 940aafcadb test(acp): use shared cleanup for the stdout regression 2026-10-25 12:09:34 +08:00
Tianyi Cui 41736cdec5 fix(acp): keep account catalog diagnostics off stdout 2026-10-25 12:09:00 +08:00
Dudu-0223 15386b4440 feat(subagent): move optional names into a separate plugin 2026-10-25 12:06:43 +08:00
Yichen Jiang cc4446eecc fix(mcp): keep resource-listing diagnostics off ACP stdout
The MCP SDK answers resources/list and resources/templates/list for a
server without the resources capability with an empty page, but first
writes a console.debug line to stdout. Under the ACP profile that line
lands in the JSON-RPC stream whenever the model lists resources of a
client-supplied, tools-only MCP server. Return the same empty pages
before calling the SDK, and cover it with a unit assertion and an ACP
stdout regression test.
2026-10-24 22:25:48 +08:00
fz 47c91f7a32 fix(team): align SDK and Desktop member tool scopes 2026-10-24 00:34:45 +08:00
fz a42991af24 feat(sdk): enable plugin management and gate Desktop tool parity 2026-10-23 23:36:47 +08:00
Dudu-0223 e16f966470 Merge origin/master and align subagent UI locale keys 2026-10-23 12:49:41 +08:00
Dudu-0223 86d4c75516 Remove unused public subagent service methods 2026-10-23 12:46:04 +08:00
07akioni dee4969d5f Merge branch 'master' into feat/desktop-operation-diagnostics 2026-10-23 12:03:55 +08:00
Tianyi Cui 5219b36110 Merge pull request #6498 from deepseek-harness/turtle/approval-never-wording-7e59b56e7f5c
fix(user-approval): describe approval policies by meaning in model-visible text
2026-10-22 23:47:16 +08:00
imccyu 261f2db185 Merge master into DSH 0.2.1 navigation and model listing sync 2026-10-22 23:22:35 +08:00
TurtleandTianyi Cui 747cbf13b6 Describe the ask approval policy by its meaning
Replace the literal "Approval policy: ask." runtime-context sentence
with a statement parallel to the never-policy sentence, and refresh the
current-generation fixtures that persist it.

Co-authored-by: Tianyi Cui <[email protected]>
2026-10-22 23:13:19 +08:00
Yichen Jiang c48f8523f2 feat(llm): follow the official /models listing on the DeepSeek API-key route (#6944)
* refactor(llm-deepseek): share the /models listing machinery

Move the account route's `/models` request and decoding, its
credential-scoped listing cache, and listed-catalog resolution with the
version gate into the shared DeepSeek Messages library, so a second
route can follow the same listing. Names drop the account prefix, the
cache takes each access's endpoint settings with the call, and it gains
`invalidate()` for a forced reload. `isBuiltInCatalog()` recognizes the
catalog an uncustomized `models` setting resolves to.

The account route keeps its behavior; only its imports and the
override diagnostic wording ("model listing") change.

* feat(llm-deepseek-api-key): follow the official /models listing

While `models` equals the built-in catalog and the Messages origin is
https://api.deepseek.com, `deepseek-official` serves the official
`GET /models` listing, authenticated with the API key in `x-api-key`.
Loading, refresh, fallback, merging, and the client-version gate match
the account route: the first access waits up to `modelsTimeoutMs`, a
listing older than `modelsMaxAgeMs` refreshes in the background on the
next access, a failure keeps the last good listing or the built-in
catalog, and listed models this build cannot serve are refused before
network I/O.

A customized `models` list replaces the catalog and requests nothing.
Switching between a customized catalog and the listing discards the
cached listing, so Restore defaults reloads it on the next access.

Suites that boot the route on the official endpoint now answer the
listing themselves instead of reaching the network.

* docs: describe the official route model listing

Document when `deepseek-official` follows the official `/models`
listing, its timing fields, customization precedence, and the forced
reload after Restore defaults in the API-key README, the shared
transport README, and the provider guide. Record the decision in a new
Agent Note, keep the account note's statement of where the shared
listing code lives current, and regenerate the configuration catalog.

* test(llm-deepseek-api-key): pin the once-per-listing hidden-entry diagnostic

* docs: regenerate module and event graphs for the shared listing

* fix(llm-deepseek-api-key): report credential failures on the model request

On the official endpoint, `connect` waited for the listing view, whose
credential lookup rethrew a malformed key or a credential-store failure
before the agent loop recorded the prompt. A failed lookup now resolves
the connection from the current listing view, so `resolveAuth` reports
the failure on the model request and the turn keeps the prompt and the
failed attempt. A caller abort still rejects.

* docs(llm-deepseek-api-key): name which hidden listing entries are logged

* test: keep unit suites off the official model listing

Suites that boot the DeepSeek routes with a dummy or inherited key now
request `GET https://api.deepseek.com/models` on the official endpoint.
A unit-lane setup file rejects that request at once, so such a suite
serves the built-in catalog instead of reaching production or waiting
out the listing deadline on a network that never answers; suites that
exercise the listing answer `fetch` themselves. Other requests pass
through unchanged.

* feat(llm-deepseek): read tool_update from the model listing

Both DeepSeek routes now take a listed model's Messages tool update mode
from `api_capabilities.anthropic_messages.tool_update`, alongside the
system prompt mode. `in-history` and `addition-only` replace the
bundled mode; any other value reads as `leading-only` and removes it.
An absent or `null` mode keeps the bundled one, so a listing that does
not declare the field leaves `deepseek-flash` on `addition-only`.

`system_prompt_update: null` likewise keeps the bundled mode now; it
previously read as `leading-only`, which a serializer writing empty
values as null would have turned into a cache-unfriendly downgrade.

* fix(llm-deepseek): sync the built-in context window with the official listing

The official `/models` listing declares a 1,048,576-token context window
for `deepseek-flash` and `deepseek-v4-pro`; the built-in catalog said
1,000,000, a decimal-versus-binary mismatch. Both built-in entries now
carry the listed value, so offline starts and listing failures size the
context the same way the listing does. The Models page shows the exact
count for these rows, since 1,048,576 has no decimal K/M spelling.

`defaultContextWindow`, the fallback for model ids the catalog does not
describe, stays 1,000,000.

* test(llm-deepseek-api-key): reject the stubbed listing request with an Error

* test(cli): keep the built SDK smoke off the official model listing

The SDK profile's initialize now resolves the deepseek-official catalog,
which requests GET https://api.deepseek.com/models on the official
endpoint. With the smoke's fixture key that request answers 401 and the
route warns on stderr, so the test's empty-stderr assertion failed in the
e2e and snapshots lanes. Point the run at a loopback mock and assert it
received no model call.

* test(llm-deepseek): compose the malformed-key turn without the native executor

release/dsh-0.2.1 predates @deepseek-ai/dsh-tool-executor-native; its tool
runtime executes tools itself. Compose the official-route turn the way
account-routing.spec.ts does on this branch.

* fix(llm-deepseek-api-key): gate nothing when the credential lookup fails

The listing cache switches scope only after it reads a credential, so a
failed lookup left `connect` serving the previous credential's listing.
After a key whose listing refuses a model was replaced by a malformed one,
`admit` refused that model with CLIENT_UPGRADE_REQUIRED before the turn
recorded the prompt, instead of `resolveAuth` reporting the credential
error on the request. Serve the built-in catalog without listing gates
when the lookup fails.

* test(llm-deepseek-api-key): pin the once-per-listing diagnostic across request preparation

The hidden-entry diagnostic test repeated the same discovery assertion to
prove a second pass reports nothing new, which read as a duplicate. Assert
the single warning after the request preparations instead; they resolve
the same listing, so dropping the per-listing deduplication still fails
the test.

* docs(llm-deepseek-api-key): note that a list matching an earlier built-in catalog counts as customized

Customization is judged against the running version's built-in catalog,
so a saved `models` list equal to an earlier version's catalog stops
following the listing once the built-in catalog changes, until Restore
defaults. Record the consequence in the Agent Note and the README's known
limitations.
2026-10-22 20:42:19 +08:00
imccyu 39d2903841 fix(ui): separate navigation pins from selection and show menu icons (#6883)
* fix(ui): separate navigation pins from selection and show menu icons

* fix(ui): simplify More menus and fold conversation views on resize

* test(ui): fix navigation CI regressions and refresh catalogs

* refactor(ui): render sidebar panel icons directly

* fix(ui): keep Chat visible and stop persisting navigation pins

* refactor(ui): drop unreachable pin validation from in-memory stores
2026-10-22 20:05:33 +08:00