deepseek-harness/docs/core-data-structures
Yichen Jiang 73fce861e5 fix(llm): let a catalog route keep the auth its provider actually declares
pi-ai resolves a request's apiKey override only through a provider that
declares an api-key method: resolveProviderAuth short-circuits to that
method when the override is present, and otherwise falls through to the
credential store and then to ambient discovery. A provider with no
api-key method at all therefore resolves to nothing, and the request
fails with "Provider is not configured" before any network I/O.

Two routes hit that. openai-codex ships OAuth alone, so moving off the
/compat dispatch broke a profile that names a key for it — the old path
handed the token straight to the provider. And a catalog route naming an
api was being rebuilt with the harness's own auth, so `openai: {api:
openai-completions}` stopped reading OPENAI_API_KEY, contradicting the
documented promise that omitting a credential keeps provider-native
discovery.

Auth is now one decision for both constructions. A catalog route keeps
its installed provider's auth, through an api override too: which
environment a provider reads belongs to the provider, not to the wire
format its models speak. A catalog provider with no api-key method gets
the harness method beside its own, but only when the profile names a
credential — a keyless codex profile keeps the honest refusal, since
this adapter holds no OAuth store to resolve through.

Materialization now spreads the installed entry instead of enumerating
the result, so a Model field this package does not model survives a
pi-ai upgrade; headers went missing from an nvidia route exactly that
way once already. providerInfo reports the configured displayName, which
also joins the registration facts so a rename re-registers rather than
leaving the old label in every selector. A refused registration swap
gets its own diagnostic naming the route, matching the directory swap
beside it.

The README documented endpoint interrogation this layer does not
implement, and still described unknown providers as kept-last-good after
they became legal declarations refused at the write point. The Agent
Note claimed per-model reasoning configurability the schema never had,
required capacities the route now defaults, and stated an apiKey
override that short-circuits unconditionally.
2026-08-05 18:54:47 +08:00
..
approval.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
approval.md feat(system-prompt): cache dynamic policy context 2026-07-30 22:09:15 +08:00
approval.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
bash.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
bash.md subprocess: one explicit env channel on the spawn spec 2026-07-27 04:14:51 +08:00
bash.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
code-runtime.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
code-runtime.md Merge branch 'worktree/pr343-retarget-latest-master' into worktree/pr344-retarget-stack 2026-07-23 19:10:25 +08:00
code-runtime.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
commands.i18n.yaml docs(i18n): address proofreading review findings 2026-08-04 18:42:13 +08:00
commands.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
commands.zh.md docs(i18n): address proofreading review findings 2026-08-04 18:42:13 +08:00
compaction.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
compaction.md Merge latest PR 956 stack base 2026-07-30 17:55:35 +08:00
compaction.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
core.i18n.yaml feat(web): steer queued messages into active turns 2026-08-02 17:53:07 +08:00
core.md feat(web): steer queued messages into active turns 2026-08-02 17:53:07 +08:00
core.zh.md feat(web): steer queued messages into active turns 2026-08-02 17:53:07 +08:00
credentials.i18n.yaml docs: bilingual credentials/settings-consumer documentation, catalogs, and gates 2026-07-29 14:20:06 +08:00
credentials.md docs: bilingual credentials/settings-consumer documentation, catalogs, and gates 2026-07-29 14:20:06 +08:00
credentials.zh.md docs: bilingual credentials/settings-consumer documentation, catalogs, and gates 2026-07-29 14:20:06 +08:00
filesystem.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
filesystem.md Merge branch 'worktree/pr343-retarget-latest-master' into worktree/pr344-retarget-stack 2026-07-23 19:10:25 +08:00
filesystem.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
goal.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
goal.md Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine 2026-07-26 16:45:27 +08:00
goal.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
llm-streaming.i18n.yaml docs: rescan rebased documentation hierarchy 2026-08-05 16:16:57 +08:00
llm-streaming.md docs: apply hierarchy across the corpus 2026-08-05 16:13:28 +08:00
llm-streaming.zh.md docs: apply hierarchy across the corpus 2026-08-05 16:13:28 +08:00
lsp.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
lsp.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
lsp.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
persistence.i18n.yaml docs: apply hierarchy across the corpus 2026-08-05 16:13:28 +08:00
persistence.md docs: apply hierarchy across the corpus 2026-08-05 16:13:28 +08:00
persistence.zh.md docs: apply hierarchy across the corpus 2026-08-05 16:13:28 +08:00
pty.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
pty.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
pty.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
sandbox.i18n.yaml docs: finish hierarchy rescan after rebase 2026-08-05 16:18:58 +08:00
sandbox.md docs: finish hierarchy rescan after rebase 2026-08-05 16:18:58 +08:00
sandbox.zh.md docs: finish hierarchy rescan after rebase 2026-08-05 16:18:58 +08:00
scope.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
scope.md Merge refreshed docs/i18n-batch-core into docs/i18n-batch-cds-postmortem 2026-07-22 22:26:24 +08:00
scope.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
session-query.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
session-query.md Merge remote-tracking branch 'origin/master' into session-query-tool 2026-07-25 14:17:24 +08:00
session-query.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
session-reference.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
session-reference.md refactor: identify and freeze messages at creation 2026-07-28 13:55:59 +08:00
session-reference.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
session-title.i18n.yaml docs(i18n): address proofreading review findings 2026-08-04 18:42:13 +08:00
session-title.md fix(session-title): typed rename rejection, provenance invariant, contract docs 2026-07-29 20:10:42 +08:00
session-title.zh.md docs(i18n): address proofreading review findings 2026-08-04 18:42:13 +08:00
session.i18n.yaml docs: finish hierarchy rescan after rebase 2026-08-05 16:18:58 +08:00
session.md docs: finish hierarchy rescan after rebase 2026-08-05 16:18:58 +08:00
session.zh.md docs: finish hierarchy rescan after rebase 2026-08-05 16:18:58 +08:00
settings.i18n.yaml fix(llm): let a catalog route keep the auth its provider actually declares 2026-08-05 18:54:47 +08:00
settings.md fix(llm): let a catalog route keep the auth its provider actually declares 2026-08-05 18:54:47 +08:00
settings.zh.md fix(llm): let a catalog route keep the auth its provider actually declares 2026-08-05 18:54:47 +08:00
skills.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
skills.md Merge remote-tracking branch 'origin/master' into worktree/pr823-retarget-latest-20260729 2026-07-29 23:36:49 +08:00
skills.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
spill.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
spill.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
spill.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
subagent.i18n.yaml feat(subagent): add explicit child reports 2026-08-02 12:51:10 +08:00
subagent.md feat(subagent): add explicit child reports 2026-08-02 12:51:10 +08:00
subagent.zh.md feat(subagent): add explicit child reports 2026-08-02 12:51:10 +08:00
subprocess.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
subprocess.md Merge remote-tracking branch 'origin/worktree-process-service-seam' into subprocess-simpl/d-one-env-channel 2026-07-27 11:31:38 +08:00
subprocess.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
system-prompt.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
system-prompt.md feat(system-prompt): cache dynamic policy context 2026-07-30 22:09:15 +08:00
system-prompt.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
tasks.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
tasks.md Merge remote-tracking branch 'origin/master' into worktree-tasks-service-seam 2026-07-26 20:28:37 +08:00
tasks.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
token-meter.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
token-meter.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
token-meter.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
tools.i18n.yaml cleanup: remove TUI package and legacy dsh entrypoints 2026-08-04 13:20:28 +08:00
tools.md cleanup: remove TUI package and legacy dsh entrypoints 2026-08-04 13:20:28 +08:00
tools.zh.md cleanup: remove TUI package and legacy dsh entrypoints 2026-08-04 13:20:28 +08:00
user-interaction.i18n.yaml cleanup: remove TUI package and legacy dsh entrypoints 2026-08-04 13:20:28 +08:00
user-interaction.md cleanup: remove TUI package and legacy dsh entrypoints 2026-08-04 13:20:28 +08:00
user-interaction.zh.md cleanup: remove TUI package and legacy dsh entrypoints 2026-08-04 13:20:28 +08:00
web.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
web.md Merge refreshed docs/i18n-batch-core into docs/i18n-batch-cds-postmortem 2026-07-22 22:26:24 +08:00
web.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
workflow.i18n.yaml docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00
workflow.md Merge refreshed docs/i18n-batch-core into docs/i18n-batch-cds-postmortem 2026-07-22 22:26:24 +08:00
workflow.zh.md docs(i18n): proofread active Chinese documentation 2026-08-04 17:36:14 +08:00