Commit Graph

6456 Commits

Author SHA1 Message Date
Yichen Jiang
c480796db4 docs(llm-pi-ai): state the composition-base assumption for the dict-merge limitation
Maintainer ruling on the review's merge-semantics warning: per-model
reasoning fields belong to the settings document, not cordis.yml entry
config (the shipped composition mounts the adapter dormant), so the
recursive-merge delete gap is a documented posture rather than a tracked
fix; the Known Limitations entry now states the assumption instead of
pointing at the closed #2003.
2026-08-08 11:06:29 +08:00
Yichen Jiang
e5d0089d5b cleanup(llm-pi-ai): share the model-entry field schemas between models and modelOverrides
The duplication gate caught the two schema literals diverging only by
the id field; the shared dict is now the single home, with the id added
where it lives (the entry) and omitted where the dict key carries it.
2026-08-08 10:55:11 +08:00
Yichen Jiang
ae9d31d098 review: pin off-value wire contract, scope compat inheritance to the entry's api, update the superseded note
Review findings on #1977, each verified before acting: the 2026-08-03
declared-provider-catalog note is updated in place and cross-linked both
ways now that reasoningEfforts/compat reopened half of its rejected
alternative; resolveModelCompat inherits the catalog entry's compat only
while the resolved api still is the entry's own, so a route-level api
repoint no longer merges another protocol's shape as a completions base;
the off-with-value promise gains a request-boundary test proving pi-ai
reads thinkingLevelMap.off when the reasoning option is absent (and the
catalog-level test name stops overclaiming); the cannot-stop-thinking
wording narrows to what is actually enforced (no Off offered, explicit
Off refused — an effortless request goes out bare); the z.const(null)
comment attributes null passthrough to schemastery's nullable
short-circuit; the baseten drift-gate claim names its verification
source; and the layered-merge delete gap for dict keys is documented
under Known Limitations with the atomic-leaf follow-up in #2003.
2026-08-08 10:46:58 +08:00
Yichen Jiang
86fbc5fc15 Merge remote-tracking branch 'origin/master' into worktree/pi-ai-per-model-reasoning
# Conflicts:
#	docs/config-catalog.md
#	docs/user/guide/providers.i18n.yaml
#	packages/llm/llm-pi-ai/README.i18n.yaml
#	packages/llm/llm-pi-ai/README.md
#	packages/llm/llm-pi-ai/README.zh.md
#	packages/llm/llm-pi-ai/tests/config.spec.ts
2026-08-08 10:32:22 +08:00
Tianyi Cui
e46b082fee test(snapshot): derive compaction replay from logs 2026-08-08 01:32:27 +08:00
Yichen Jiang
756304322a feat(llm-pi-ai): modelOverrides reshapes catalog models without replacing the catalog
A route's modelOverrides dict customizes individual installed-catalog
models — key = catalog model id, value = the same fields a models entry
takes — while the rest of the catalog keeps serving, which a models list
cannot express because declaring one replaces the served set. An
override becomes the catalog entry's configuration and resolves through
the existing entry path, so capacities, reasoningEfforts, compat, and
request-default semantics are identical to a models entry's. Unlike
Pi's config layer, which ignores unknown ids, every override that lands
nowhere is refused at the write that produced it: beside a models list,
on a hand-declared route, naming a model the catalog does not describe,
or smuggling an id through the schema's unknown-key tolerance.
2026-08-08 00:57:41 +08:00
Yichen Jiang
0490f8bb06 feat(llm-pi-ai): per-model reasoningEfforts and reasoning-dispatch compat switches
A model entry's reasoningEfforts dict declares its selectable thinking
levels — key = offered level, value = the wire spelling dispatch sends;
only off may leave the value empty (supported, send nothing). false
strips reasoning from a catalog model; every level is materialized
explicitly into pi-ai's thinkingLevelMap so nobody has to know pi-ai's
asymmetric absent-key defaulting. compat.thinkingFormat and
compat.supportsReasoningEffort become configurable on the route and per
model (model > route > catalog entry > pi-ai's URL-derived guess),
openai-completions only, so a private gateway speaking the DeepSeek
reasoning dialect no longer depends on its URL being recognizable.
Record-typed drift gates pin both enums to pi-ai's, and an unserviceable
declaration is refused at the write that produced it, naming route,
model, and level.
2026-08-08 00:51:54 +08:00
Tianyi Cui
510976351c test(telemetry): restore expression-tag coverage 2026-08-08 00:34:42 +08:00
Tianyi Cui
b166b837d8 Merge origin/master at bc7849b97b 2026-08-07 23:57:47 +08:00
Tianyi Cui
f00f45e3f9 Merge origin/master at f1402327fa 2026-08-07 23:57:23 +08:00
Tianyi Cui
698d65de2d Merge pull request #1965 from deepseek-harness/worktree/archive-agent-notes-aggressive-20260807
docs(notes): aggressively archive low-value records
2026-08-07 23:53:34 +08:00
Tianyi Cui
8315bfdc1f fix(notes): address archive review findings 2026-08-07 23:45:28 +08:00
Tianyi Cui
62ae990c27 cleanup(config): consolidate source ownership rationale 2026-08-07 23:43:15 +08:00
Tianyi Cui
b5fbcaccf8 cleanup(config): localize bootstrap policy to app boot 2026-08-07 23:37:53 +08:00
Tianyi Cui
d0e052dd83 cleanup(environment): keep one lookup order 2026-08-07 23:33:11 +08:00
Tianyi Cui
2c532f3b2c cleanup(environment): remove unused layer inventory 2026-08-07 23:30:03 +08:00
Tianyi Cui
4ee93f7944 fix(config): cover shipped bundle source ownership 2026-08-07 23:26:39 +08:00
Tianyi Cui
e901d9fcca Merge pull request #1785 from deepseek-harness/fix/update-explore-unknown-copy
fix(ui): update hero headline copy
2026-08-07 23:13:37 +08:00
Tianyi Cui
1c23f196fe fix(ui): use official hero title casing 2026-08-07 23:05:55 +08:00
Tianyi Cui
db0133b4c7 docs(notes): archive low-value records 2026-08-07 22:52:19 +08:00
Tianyi Cui
356453d6cb cleanup(config): remove literal credential compatibility residue
Adapter schemas now carry only credential references, but the Models join, onboarding readiness, shipped overlays, SDK scaffolding, fixtures, and active decision prose still treated a redacted literal apiKey as a supported compatibility state. That residue made an unsupported field look contractual and pinned Schemastery silent-dropping as behavior.

Delete those branches and examples, and let compositions and scaffolds use adapter-owned reference and environment resolution. Do not add a tombstone validator or change generic unknown-key behavior: literal adapter credentials have no migration contract to preserve.
2026-08-07 22:04:04 +08:00
Tianyi Cui
3dfb16008d docs(config): align environment and credential contracts
Code already treats $DSH_HOME/.env as ordinary launch environment and stores managed credentials in .credentials.yaml, but public docs still described the old store, old precedence, removed literal adapter keys, and the deleted TUI. That directed users to the wrong file and overstated the supported configuration surface.

Update the existing English and Chinese owners in place, document inherited > managed > project > user credential resolution, and record the loadLayeredEnv export. Regenerate only pairing records and the source-line catalog; add no new section or site route.
2026-08-07 22:04:04 +08:00
imccyu
71ebeaa559 fix(client-runtime): localize remote namespace dependency 2026-08-07 21:47:18 +08:00
imccyu
ddd43ec371 test(api-gateway): repair CI fixtures 2026-08-07 21:47:18 +08:00
imccyu
00a559bf2b test(api-gateway): assert withdrawn method failure 2026-08-07 21:47:18 +08:00
imccyu
8b51a1e95c test(api-gateway): cover namespace rollback paths 2026-08-07 21:47:18 +08:00
imccyu
14ea7e134d fix(api-remotes): await namespace assembly startup 2026-08-07 21:47:18 +08:00
imccyu
55ccfb5a48 fix(api): preserve dynamic defaults after rebase 2026-08-07 21:47:18 +08:00
imccyu
8bbbb6fe59 fix(api-gateway): compose scoped remote fixture types 2026-08-07 21:47:18 +08:00
imccyu
d362cdb54f refactor(typert): rename RemoteContext to RemoteScope 2026-08-07 21:47:18 +08:00
imccyu
d6ffd87c5f refactor(api): expose traced remote namespaces 2026-08-07 21:47:18 +08:00
imccyu
146097368b fix(api-gateway): type async service disposer 2026-08-07 21:47:18 +08:00
imccyu
686ee5b3f6 fix(api-gateway): harden remote lifecycle and recovery 2026-08-07 21:47:17 +08:00
imccyu
d2596a0d74 test(api-remotes): cover lookup publication races 2026-08-07 21:47:17 +08:00
imccyu
bb61dc13f2 refactor(api): colocate gateway and remote assembly 2026-08-07 21:47:17 +08:00
imccyu
d941350227 fix(typert): preserve remote lookup semantics 2026-08-07 21:47:17 +08:00
imccyu
2fe4a53557 fix(typert): validate and mount remote contributions safely 2026-08-07 21:47:16 +08:00
imccyu
737c12935a fix(connection): share fixture goal revision lookup 2026-08-07 21:47:16 +08:00
imccyu
286a8b168e fix(connection): route fixture calls through remote semantics 2026-08-07 21:47:16 +08:00
imccyu
e28ac506ed perf(api-gateway): cache SRC endpoint claims 2026-08-07 21:47:16 +08:00
imccyu
56af59b41d fix(typert): keep client registry bundle pure 2026-08-07 21:47:16 +08:00
imccyu
5ea6311949 test(api-gateway): cover client mount rollback 2026-08-07 21:47:16 +08:00
imccyu
0ad5885015 fix(typert): keep generator bootstrap self-contained 2026-08-07 21:47:16 +08:00
imccyu
2e1f9a5cea fix(typert): address remote gateway review 2026-08-07 21:47:16 +08:00
imccyu
da1ebd2b68 refactor(goal): call entity methods through remote API 2026-08-07 21:47:16 +08:00
imccyu
ede278d0c7 fix(connection): mint RPC ids on insecure origins 2026-08-07 21:47:15 +08:00
imccyu
e8f2ab89bb refactor(typert): bind remote services through base class 2026-08-07 21:47:15 +08:00
imccyu
1ea5507bf8 fix(typert): close remote gateway review gaps 2026-08-07 21:47:15 +08:00
imccyu
22bec5e63f feat(typert): propagate Remote cancellation 2026-08-07 21:47:15 +08:00
imccyu
9b63d72c94 fix(typert): harden remote reflection boundaries 2026-08-07 21:47:15 +08:00