Vito Cappello
5621979a46
fix(models): preserve session selection across fallback turns ( #119325 )
...
* feat(models): add session-only model selection
* fix(models): use trailing session scope option
* test(models): satisfy session scope lint
* fix(models): reject duplicate model options
* fix(models): clarify default and session scope
* fix(models): require complete session option tokens
* fix(models): report configured default dispatch
* fix(models): keep directive handler within lint limit
* fix(models): parse model options in either order
* fix(models): apply session scope to aliases
* fix(models): align alias scope with reply routing
* fix(discord): surface model selection scope in picker
* fix(models): preserve mixed-text model selection
* fix(models): centralize command selection ownership
* fix(models): align session scope lifecycle
* fix(models): preserve command and auth ownership
* fixup! fix(models): preserve command and auth ownership
* fix(auth): preserve scoped CLI provider discovery
* test(models): align result and cron fixtures
* test(models): nest result timing metadata
* fix(discord): narrow silent dispatch results
* fix(transcript): preserve admitted turn identity
* fix(context-engine): fence the admitted transcript turn
* fix(context-engine): stabilize plugin compatibility contract
* chore(plugin-sdk): refresh context engine API baseline
* chore(plugin-sdk): use Linux context engine API baseline
* fix(context-engine): align fallback ownership
* fix(fallback): scope auth skip cache by profile
* fix(context-engine): settle only accepted fallback turns
* refactor(sessions): issue canonical turn admissions
* refactor(context-engine): own logical turn advancement
* fix(context-engine): settle cron fallback winners
* fix(models): align picker and fallback transactions
* fix(delivery): notify block admission after queueing
* fix(sessions): preserve canonical admission receipts
* chore(plugin-sdk): refresh API baseline hash
* fix(context-engine): commit accepted turns durably
* fix(context-engine): validate durable host transitions
* fix(context-engine): preserve fallback turn ownership
* fix(context-engine): preserve queued turn order
* fix(models): preserve fallback retry ownership
* fix(context-engine): enforce durable transcript anchors
* fix(runtime): close fallback persistence gaps
* fix(context-engine): preflight fallback harnesses
* chore(plugin-sdk): use Linux API baseline
* fix(context-engine): drain durable commits before reads
* fix(models): scope harness auth failures by profile
* fix(codex): fence legacy transcript history
* fix(commands): honor suppressed directive interpretation
* chore(runtime): remove unused branch exports
* test(context-engine): derive private outbox payload type
* fix(context-engine): apply durable drain degradation
* fix(context-engine): recover durable turn intents
* fix(context-engine): settle durable turn intents
* refactor(context-engine): satisfy branch quality gates
* fix(context-engine): close durable recovery gaps
* fix(discord): preserve dropped model command outcome
* test(copilot): keep journal fixture types local
* fix(auto-reply): preserve model alias provenance
* fix: close model scope review gaps
* fix(models): close review-found scope leaks
* fix(review): satisfy branch line budgets
* fix(agents): preserve context engine turn facts
* fix(agents): finalize silent context turns
* fix(context-engine): preserve compatibility window
* test(agents): cover both harness preparations
* fix(context-engine): retain blocked turn advancements
* fix(models): parse compact runtime options
* fix(telegram): report runtime resets accurately
* fix(models): isolate automatic auth failure skips
* fix(context-engine): project commit turn host params
---------
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-07 16:19:12 +08:00
Vincent Koc
52b8f9be80
fix(plugins): migrate Fish Audio plugin identity ( #119900 )
...
* fix(plugins): migrate Fish Audio plugin identity
* fix(plugins): tighten Fish Audio identity migration
* fix(plugins): follow catalog selector for id replacements
* fix(plugins): reject replacement install collisions
* refactor(plugins): reuse skipped update outcomes
2026-08-06 20:50:36 +08:00
Peter Steinberger
414616f583
fix(video): harden DashScope task and media lifecycle ( #117303 )
...
* fix(video): validate DashScope task outputs and release request guards
* fix(video): validate DashScope task outputs and release request guards
* refactor(video): use shared empty-asset validation
* fix(video): align DashScope Wan request contracts
* refactor(video): use shared empty-asset validation
* fix(video): enforce catalog modes before provider calls
* fix(video): keep model checks fallback-aware
* fix(video): centralize fallback-aware capability checks
* docs(video): document Wan 2.7 fixed audio
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-05 10:19:09 -07:00
joshavant
8393b37779
fix(setup): keep compatible Claude wrappers selectable
2026-08-04 02:08:23 -05:00
joshavant
d636f5f8e0
fix(agents): gate Claude live session protocol
2026-08-04 02:08:23 -05:00
Peter Steinberger
e7950261b6
docs(openrouter): repair invalid canonical configuration examples ( #118747 )
2026-08-03 09:53:01 -07:00
Peter Steinberger
5de84bfc4d
fix(openai): support the current speech model snapshot ( #118475 )
...
* fix(openai): support the current speech model snapshot
* docs(openai): clarify speech instructions apply to the model family
2026-08-02 23:00:46 -07:00
clawsweeper[bot]
8f46e31994
fix(nvidia): hide retired models while preserving live vendor discovery ( #117620 )
...
* fix(model-catalog): preserve manifest lifecycle metadata on refresh
* fix(nvidia): simplify Qwen model lifecycle
* test(nvidia): avoid map-spread lint
* docs(nvidia): clarify retired Qwen models
* fix(models): preserve NVIDIA lifecycle states
* fix(models): keep NVIDIA lifecycle plugin-owned
* fix(nvidia): retain fresh featured catalog models
---------
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@macos.shared >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-02 04:40:17 -07:00
Jacob Tomlinson
20ac22f647
fix(codex): guide recovery from unimported agent auth ( #116807 )
...
* fix(codex): diagnose unimported agent auth
Add agent-scoped Codex migration guidance and expose a validated --agent target so non-default credentials cannot be imported into the default agent store.
Fixes #116763
* fix(codex): surface auth migration before route planning
* fix(codex): scope auth migration recovery
* fix(codex): preserve API key auth fallback
* test: repair memory importer routing expectation
* test: drop superseded memory routing repair
* test(tui): report PTY progress verbosely
---------
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com >
2026-08-01 07:08:02 -06:00
Vincent Koc
61fb29e90a
feat(plugins): externalize OpenCode Go provider ( #117064 )
2026-08-01 06:31:19 +08:00
Vincent Koc
e73250f54b
feat(plugins): externalize OpenCode provider ( #117035 )
...
* feat(plugins): externalize OpenCode provider
* docs: refresh OpenCode provider map
2026-08-01 05:07:35 +08:00
Vincent Koc
e84e2a49fc
feat(plugins): externalize NovitaAI provider ( #117007 )
2026-08-01 03:53:46 +08:00
Vincent Koc
8b93fd963c
feat(plugins): externalize Mistral provider ( #116919 )
...
* feat(plugins): externalize Mistral provider
* fix(update): preserve external provider models during repair
* chore(release): keep Mistral note in PR body
2026-08-01 03:04:12 +08:00
Vincent Koc
a1026663ae
feat(plugins): externalize ComfyUI provider ( #116888 )
2026-07-31 23:26:51 +08:00
Vincent Koc
fab2c33cad
feat(plugins): externalize Xiaomi provider ( #116861 )
2026-07-31 22:02:07 +08:00
Vincent Koc
b2b62b2e1e
feat(plugins): externalize Volcengine provider ( #116854 )
2026-07-31 21:28:01 +08:00
Vincent Koc
ba1a6722bb
feat(plugins): externalize Vydra provider ( #116813 )
2026-07-31 20:35:43 +08:00
Vincent Koc
94c0f33f1f
Merge pull request #116611 from openclaw/experiment/google-cli-supported-paths
...
fix(google): stop offering unsupported CLI setup
2026-07-31 17:48:18 +08:00
Vincent Koc
a550827dad
feat(plugins): externalize Synthetic provider ( #116720 )
2026-07-31 17:19:43 +08:00
Vincent Koc
091bc7f9ed
Merge remote-tracking branch 'origin/main' into experiment/google-cli-supported-paths
...
* origin/main: (115 commits)
test: type session request parameters (#116713 )
fix: retain event invalidation for pagination
docs: note queued session refresh fix
fix: preserve queued session refresh options
fix(exec): require approval for abbreviated inline eval flags [AI] (#116529 )
fix: keep owner-only tools out of non-owner skill commands [AI] (#116532 )
fix(tui): require a fresh agent roster (#116715 )
fix(memory-wiki): preserve user edits when rolling back ChatGPT imports (#116517 )
fix(agents): cron failures preserve timeout and cancellation reasons (#116566 )
fix(release): unblock beta validation workflows (#116708 )
fix(ci): discover frozen target startup benchmark cases (#116711 )
fix(session): preserve reset message payloads (#116195 )
fix(qa): tolerate loaded-runner bus delivery stalls (#116448 )
improve(ci): rebalance embedded agent test configs (#116436 )
fix(browser): return committed trace path (#116702 )
fix(qa): exceed Slack table aggregate limit in fallback probe (#116447 )
fix(qa): use built plugin tools server (#116442 )
fix(test): keep memory FD repro config valid (#116698 )
fix(telegram): keep queued tool progress in one message (#116685 )
fix(qa): stop waiting on yielded fanout runs (#116440 )
...
# Conflicts:
# src/system-agent/setup-inference-detect.ts
# ui/src/e2e/model-setup.e2e.test.ts
2026-07-31 16:40:33 +08:00
Vincent Koc
c892a712e6
feat(plugins): externalize Cohere and Meta providers ( #116662 )
...
* feat(plugins): externalize Cohere and Meta providers
* docs(changelog): note provider externalization
* chore: keep changelog release-owned
2026-07-31 12:53:01 +08:00
joshavant
23dbee9e38
fix(github-copilot): honor live model selection in guided setup
2026-07-30 21:15:10 -05:00
joshavant
94542eb872
fix(github-copilot): select available onboarding model
2026-07-30 21:15:10 -05:00
Vincent Koc
9e965073e5
Merge remote-tracking branch 'origin/main' into experiment/google-cli-supported-paths
...
* origin/main: (168 commits)
fix(plugins): keep registry sqlite root consistent (#116427 )
fix(cli): keep Gateway auth failures parseable in JSON (#116597 )
fix(trajectory): preserve prompts in oversized events (#116220 )
test(buzz): add live QA Lab channel lane (#116298 )
chore(i18n): refresh native locales (#116567 )
feat: add OpenClaw TUI prototype skill (#116583 )
fix(update): accept concrete versions selected by ranges (#116585 )
fix(agents): preserve locked session model routes
test(qa-lab): preserve Matrix fault proxy identity
fix(ci): extend OpenAI live profile setup budget (#116580 )
fix: prevent configured models from stalling startup (#116553 )
fix(cli): close MCP listener after one-shot commands
fix(auto-reply): keep explicit NO_REPLY silent (#116548 )
test(discord): cover deferred backpressure terminals
fix(discord): cancel backpressured realtime playback
test(discord): cover realtime output backpressure
fix(codex): add remote WebSocket heartbeat and reconnect (#116135 )
fix(macos): wait for the current reconnect snapshot (#116550 )
fix(outbound): recognize current-source message-tool sends (#116560 )
fix(voice-call): type cancelled consult outcomes
...
# Conflicts:
# extensions/google/setup-api.test.ts
# ui/src/e2e/model-setup.e2e.test.ts
2026-07-31 09:30:03 +08:00
Vincent Koc
62e83c13c5
docs(voice): document live audio roundtrip smoke
2026-07-31 00:42:04 +08:00
Vincent Koc
d540255ce7
docs(google): document supported auth paths
2026-07-30 22:56:26 +08:00
EricKwan
e00ef16ee7
fix(xai): follow OAuth default model automatically ( #115617 )
...
* fix(xai): default OAuth login to Grok 4.5
* fix(xai): follow OAuth default model automatically
* fix(xai): send OAuth proxy request headers
* fix(xai): avoid provider API shadowing
* fix(qa): restore current main validation gates
---------
Co-authored-by: echeung <echeung@agentsonly.com >
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com >
2026-07-29 23:05:29 +00:00
Peter Steinberger
dc60a9442d
feat(talk): support GPT-Live over gateway relay ( #115831 )
...
* feat(talk): add GPT-Live gateway relay peer
* fix(talk): ignore duplicate GPT-Live sideband audio
* fix(openai): harden GPT-Live relay startup
* fix(deps): replace vulnerable werift ip helper
* fix(deps): scope werift ip override version
* fix(openai): normalize relay startup errors
* test(ci): register GPT-Live gateway live shard
* fix(talk): tighten GPT-Live relay readiness
* fix(talk): keep relay override helper private
* fix(talk): resolve relay readiness with launch model
* fix(openai): preserve GPT-Live media clock
* fix(talk): align GPT-Live relay readiness and framing
* fix(openai): expire pending GPT-Live reservations
* fix(openai): harden GPT-Live delegation audio
* style(openai): satisfy RTP reorder lint
2026-07-29 12:54:23 -04:00
Peter Steinberger
d16e33e08e
fix: restore trustworthy end-to-end QA and cross-channel delivery ( #115404 )
...
* fix(qa): repair verified end-to-end and channel regressions
* fix(gateway): make interrupted restart recovery lifecycle-safe
* test(heartbeat): target the canonical recovery session store
* fix(gateway): prioritize durable restart recovery before heartbeat
* fix(qa): preserve safe restart recovery and channel expiry
* fix(qa): fail closed and fence restart recovery
* test(agents): isolate restart recovery timing
* test(agents): prove actual restart retry timing
* fix(qa): report incompatible profile scenarios
* fix(scripts): resolve symlinked docker scheduler entrypoints
* fix(qa): require fresh native test evidence
* fix(heartbeat): fence active restart recovery delivery
* fix(gateway): consume untargeted restart acknowledgements
* fix(qa): satisfy exhaustive hosted validation gates
* fix(agents): fence stopped restart recovery dispatch
* style(agents): format restart recovery lifecycle regression
* test(gateway): isolate context prewarm sidecar lifecycle
* test(qa): make scenario process timeout cleanup deterministic
* fix(qa): stamp synthetic gateway configs with current version
* fix(openai): preserve vision capabilities in stale model catalogs
* test(qa): align profile channel rejection with current main
* fix(openai): forward supported moderation for image edits
* fix: restore latest-main CI and image edit documentation
* fix(qa): retain relocated code-mode evidence validation
* fix(openai): expose GPT-5.4 vision in static catalog
* fix(pricing): honor explicit model cost overrides
* test(pricing): keep isolated provider regressions deterministic
* fix(openai): inherit transport for discovered static models
* fix(gateway): honor agent-owned static image capabilities
* test(gateway): preserve prepared-snapshot attachment races
* test(gateway): isolate subagent persistence failure injection
* test(gateway): exercise concurrent voice replay admission
* fix(gateway): restore stale model image capabilities
* fix(agents): publish configured model vision capabilities
* fix(agents): isolate detached media transcript ownership
* test(agents): preserve generic transcript lock regression
* fix(gateway): require proven static model route identity
* fix(qa): accept bounded full-size generated image attachments
* fix(qa): require fresh script producer evidence
* test(qa): prove native E2E scenario execution
2026-07-29 12:45:27 -04:00
Peter Steinberger
e8524a5839
feat: add Fish Audio S2.1 and local MLX speech ( #115790 )
...
* feat: add Fish Audio speech support
* chore: remove unused speech exports
* chore: keep Fish API constant private
* test: remove stale code mode import
* style: use bracket access for Fish voice ids
* test: restore QA evidence validator import
2026-07-29 05:15:33 -04:00
Peter Steinberger
7441362014
feat(openai): support GPT-Live over backend WebSocket ( #115622 )
...
* feat(openai): add GPT-Live websocket bridge
* chore: defer GPT-Live changelog to release
* fix(android): preserve GPT-Live relay readiness gate
* fix(openai): normalize GPT-Live assistant completion
2026-07-29 04:15:03 -04:00
Peter Steinberger
921b0e1dda
feat(openai): support GA realtime over ChatGPT OAuth ( #115623 )
2026-07-29 02:14:23 -04:00
Peter Steinberger
7a1aa4eb4f
feat(ui): Talk settings page with catalog-driven realtime pickers ( #115409 )
...
* feat(talk): emit realtime models and voices in talk.catalog and mirror create-time readiness
* feat(ui): add curated Talk settings page with catalog-driven pickers
* docs(talk): correct stale claims and add one-page GPT-Live setup path
* fix(ui): refresh Talk catalog on config-hash advance and neutralize GPT-Live badge
* fix(ui): provider-aware Talk selection, atomic provider switch, focus refresh
* fix(ui): resolve Talk provider fallbacks via catalog and make Default a true reset
* fix(ui): provider-compatible transports and race-free Talk catalog loads
* fix(ui): never resolve an unknown explicit Talk provider to the active one
* docs(talk): note Android relay readiness caveat for browser-only models
* fix(ui): keep the relay transport when switching Talk provider to Auto
* fix(ui): align section-ownership test and drop unused export after rebase
2026-07-28 17:38:15 -04:00
Peter Steinberger
f78ba09120
feat(talk): support GPT-Live realtime voice over ChatGPT OAuth ( #115226 )
...
* feat(gateway): share the canonical browser-origin policy with plugins
Export resolveAcceptedBrowserOrigin through openclaw/plugin-sdk/webhook-request-guards
so browser-facing plugin routes reuse the Gateway's real origin contract instead of a
narrow allowedOrigins array check. Private LAN/Tailnet Control UI loads and the
Host-header fallback were previously rejected with 403 by plugin offer routes while the
Control UI itself worked.
Moves the loopback/forwarded-header helpers to net.ts (re-exported from auth.ts) so the
guard can delegate without importing gateway auth, and migrates the Codex realtime
broker onto the shared seam.
* feat(talk): let providers own agent delegation for realtime voice
Adds an optional runAgentConsult callback to the browser-session create request and
injects the existing embedded consult runtime from talk-client, bound to the same agent
and session key the GA tool path uses. Providers whose realtime protocol delegates work
through their own control channel (rather than GA function calls) can now reach the
OpenClaw agent without a client round-trip.
Threads the effective per-session model into browser-session capability resolution so a
request-level model override selects the right capability set, and propagates a caller
abort signal into consultRealtimeVoiceAgent so a superseded delegation stops its run.
* feat(openai): support GPT-Live realtime voice over ChatGPT OAuth
Implements OpenAI's quicksilver/frameless session natively for Talk browser sessions.
The Gateway creates the WebRTC call (multipart sdp+session to https://api.openai.com/v1/live )
and owns the sideband control socket, so the browser never holds upstream credentials;
delegation.created events run through the OpenClaw agent and stream back as speakable
context appends.
Verified end-to-end on 2026-07-28 against a ChatGPT Pro OAuth profile: call create 201
with an rtc_* id and answer SDP, sideband session.started, session.close teardown.
ChatGPT OAuth is preferred over a Platform API key because /v1/live access for platform
keys is waitlist-gated; the legacy chatgpt.com backend route returns 403 for every model
and protocol version and is not used.
Accepted models are gpt-live-1-codex and gpt-live-1-boulder-alpha; the voice allowlist is
the ten values the route actually accepts, since an invalid voice is rejected at call
creation and cannot be repaired afterwards (session.update reports immutable_field_update).
* docs: document GPT-Live Talk support and its route gotchas
Records the working route and auth, the accepted models and voices, the browser-only
scope, and the two traps that cost the most time: the chatgpt.com backend route returns
403 Voice session access denied for every model, and that same 403 is also what an
invalid voice returns, so it must not be read as an account entitlement block.
* fix(openai): resolve GPT-Live CI failures
* refactor(openai): own zod runtime dependency
* fix(openai): satisfy lint and live-shard gates for GPT-Live
Types the retry-delay finish callback as Error so the rejection reason is provably an
Error at the call site; the abort path already normalized a non-Error AbortSignal reason,
but the unknown parameter type hid that from static analysis.
Registers the new GPT-Live live test in the native-live-extensions-openai shard
expectation. The shard selector already picked the file up from the real tree; only the
hardcoded list in the tooling test lagged.
* fix(openai): clean up post-rebase capability resolver
* fix(openai): preserve GPT-Live delegation fragments
* fix(openai): close GPT-Live sideband handoff race
* fix(openai): accept UUID GPT-Live call ids
* style: apply oxfmt to GPT-Live sources and Talk docs
* style: format Talk docs after rebase
* fix(openai): keep GPT-Live transcript context across ignored delegations
2026-07-28 15:05:55 -04:00
Vincent Koc
861b9ccce1
fix(talk): remove unsupported Codex OAuth realtime
2026-07-28 21:32:38 +08:00
ToToKr
d57e228c3a
docs(mistral): fix broken adjustable reasoning docs URL ( #114867 )
...
* docs(mistral): fix broken adjustable reasoning docs URL
The linked Mistral page 404s; the reasoning docs now live one path segment up. Verified: old URL returns HTTP 404, new URL returns HTTP 200 and documents reasoning_effort. oxfmt --check passed on the changed file.
* fix(ci): audit links inside docs components
* test(cli): isolate root help exit fixture
* test(ci): split embedded agent shard
* fix(ci): harden docs link projection
* test(ci): satisfy docs audit strict types
* test(ci): isolate incomplete-turn harness
* test(cli): document root help fixture boundary
* test(ci): isolate overflow compaction harness
* test(ci): isolate contaminated agent model tests
* test(ci): update isolated prefix routing
* test(ci): bound loaded streaming HTTP cases
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 06:55:02 -04:00
joshavant
7c980eaec0
docs(github-copilot): update runtime auth contract
2026-07-27 22:40:32 -05:00
Peter Steinberger
69b54cf13c
chore(docs): harden external link audit results ( #114746 )
2026-07-27 17:37:02 -04:00
Onur Solmaz
89c5b02832
revert(openai): remove loopback Codex proxy support ( #114616 )
...
Reverting PR from runaway clanker, sorry! Won't happen again!
2026-07-27 23:15:42 +08:00
Onur Solmaz
6f8a67120c
feat(openai): support loopback Codex proxies ( #114555 )
...
* feat(openai): support loopback Codex proxies
* fix(openai): preserve Codex proxy routes
* fix(openai): enforce canonical Codex proxy path
* fix(openai): support opaque proxy capabilities
* test(openai): isolate proxy capability coverage
* fix(openai): confine proxy capabilities
* test(openai): type proxy image config
2026-07-27 13:31:04 +00:00
Santhi Prakash
445774d85e
[AI-assisted] docs(senseaudio): fix broken Docs URL to docs.senseaudio.cn ( #114021 )
...
The SenseAudio provider guide linked its Docs row to
https://senseaudio.cn/docs , which returns 404. The SenseAudio platform
homepage itself links to https://docs.senseaudio.cn (200), so point the
Docs row there instead.
2026-07-27 03:56:03 -04:00
Peter Steinberger
5c7f7d198e
fix(cerebras): prefer current Gemma 4 onboarding default ( #114015 )
...
* fix(cerebras): default onboarding to Gemma 4
* fix(cerebras): preserve existing primary on setup
2026-07-25 21:44:59 -07:00
Peter Steinberger
48addb3d57
fix(kimi): refresh K3 catalog and add 256K variant ( #113918 )
...
* fix(kimi): retire k3[1m], add k3-256k, k3 now 1M
* fix(kimi): integrate K3 256K catalog split
* docs(kimi): correct K3 thinking-level ladder in thinking.md
2026-07-25 20:57:26 -07:00
Peter Steinberger
8eb841da79
fix(providers): openai live-test config isolation and qianfan default refresh ( #113999 )
...
* fix(providers): stop reading operator's real config in openai live tests
* fix(qianfan): refresh onboarding default off deprecated deepseek-v3.2
* fix(providers): satisfy live-test config type
2026-07-25 20:35:28 -07:00
Peter Steinberger
52a92a1b0a
feat(providers): refresh onboarding defaults to current models ( #113973 )
...
* feat(providers): refresh onboarding defaults to current models
* chore: drop changelog edit (release generation owns it)
2026-07-25 19:10:26 -07:00
Colin Johnson
de9ed64c29
feat(talk): enable GPT Live with Codex OAuth ( #113354 )
2026-07-25 20:41:27 -04:00
Peter Steinberger
3cec82e145
feat(kimi): add first-class Kimi K3 support ( #113909 )
2026-07-25 16:48:10 -07:00
Peter Steinberger
d5dcc3fb19
fix(providers): refresh stale onboarding defaults ( #113870 )
...
* fix(providers): refresh onboarding defaults
* fix(moonshot): import manifest default from catalog
2026-07-25 14:44:47 -07:00
Jason (Json)
8028a3a5b2
feat(anthropic): gate live model discovery on contract coverage ( #113757 )
...
* feat(anthropic): gate live model discovery on contract coverage
Live catalog discovery cloned a template for any newly discovered Claude id, so
a future model generation would be selectable while request shaping treated it
as pre-4.6 and 400d. Add an opt-in acceptUnknownModel gate to the shared live
catalog seam and have the Anthropic plugin accept a discovered model only when
Anthropic's advertised capabilities agree with the contracts we would apply.
Manifest-published ids bypass the gate and keep their metadata.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* docs(plugins): document the live-discovery admission hook
Record acceptUnknownModel in the provider-plugin SDK reference: when to use
it, that manifest-published ids bypass it, and the fail-closed guidance.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-25 11:27:58 -06:00
Peter Steinberger
2c933adcd9
fix(meta): align manifest inputs with runtime ( #113758 )
2026-07-25 10:00:26 -07:00