You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
allow provider-bound Runtime LLM Facade tokens to request any non-empty model from their pinned provider
keep the provider fixed by the token; model passthrough never selects a different provider
honor an explicit provider/model wire API override and otherwise use the pinned provider default wire API
let the upstream provider decide whether an unregistered or unsupported model is valid, preserving its existing non-2xx response handling
preserve providerless compatibility tokens, including Claude/generic-provider fallback and empty-provider token issuance
retain providerless token model scope and strict configured model/provider resolution
update user, design, and E2E strategy documentation
Compatibility and scope
Only provider-bound Runtime LLM Facade request resolution is relaxed. Missing models still return 400. Token ownership, sandbox lifecycle, inbound wire API checks, provider pinning, authentication/header handling, and response forwarding remain unchanged.
Providerless compatibility tokens continue to use the behavior from main: a token model remains an authorization scope when present, Claude/generic-provider fallback may issue a token without provider/model, and configured model/provider resolution remains strict. If a provider-bound token references an absent or disabled provider, resolution falls back to the original strict resolver so existing error behavior is preserved.
Token creation, Claude runtime configuration, application wiring, schema, protobuf, UI, drivers, scheduler, and LLMService behavior are unchanged relative to main.
Tests
Focused regression coverage includes:
provider-bound alternate and unknown model passthrough
pinned-provider routing when a model is bound only to another provider
provider/model wire API override and provider default fallback
Anthropic provider routing
upstream model error forwarding
providerless token model mismatch rejection
providerless Claude compatibility-token issuance
missing/disabled provider fallback and resolver store errors
Verification
Passed locally for the production change:
go test ./pkg/llms/... ./pkg/agentcompose/proxy ./pkg/agentcompose/app ./pkg/agentcompose/adapters ./pkg/runs
scoped golangci-lint for changed Go packages: 0 issues
task build
GitHub CI passed the complete lint, Go test, coverage, Runtime SDK, Scheduler runtime, Darwin/Linux build, image build, and full-image Docker smoke matrix for the production change. The final commit only clarifies README wording from "Legacy compatibility tokens" to "Compatibility tokens".
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Compatibility and scope
Only provider-bound Runtime LLM Facade request resolution is relaxed. Missing models still return 400. Token ownership, sandbox lifecycle, inbound wire API checks, provider pinning, authentication/header handling, and response forwarding remain unchanged.
Providerless compatibility tokens continue to use the behavior from
main: a token model remains an authorization scope when present, Claude/generic-provider fallback may issue a token without provider/model, and configured model/provider resolution remains strict. If a provider-bound token references an absent or disabled provider, resolution falls back to the original strict resolver so existing error behavior is preserved.Token creation, Claude runtime configuration, application wiring, schema, protobuf, UI, drivers, scheduler, and
LLMServicebehavior are unchanged relative tomain.Tests
Focused regression coverage includes:
Verification
Passed locally for the production change:
go test ./pkg/llms/... ./pkg/agentcompose/proxy ./pkg/agentcompose/app ./pkg/agentcompose/adapters ./pkg/runsgolangci-lintfor changed Go packages: 0 issuestask buildGitHub CI passed the complete lint, Go test, coverage, Runtime SDK, Scheduler runtime, Darwin/Linux build, image build, and full-image Docker smoke matrix for the production change. The final commit only clarifies README wording from "Legacy compatibility tokens" to "Compatibility tokens".