diff --git a/docs/roadmap/bundled-openrouter.md b/docs/roadmap/bundled-openrouter.md index 4f0fec3..739e8aa 100644 --- a/docs/roadmap/bundled-openrouter.md +++ b/docs/roadmap/bundled-openrouter.md @@ -59,8 +59,8 @@ API or special provenance model. ### Root Resource Layout Use root entries for both the backend and all built-in profiles. The backend -ID is `openrouter`; each bundled profile references `backend: openrouter` and -is selected using its unqualified ID. No built-in `openrouter` collection is +ID is `openrouter`; each bundled profile supplies or inherits +`backend: openrouter` and is selected using its unqualified ID. No built-in `openrouter` collection is created, so an externally supplied collection can expose names such as `openrouter/gpt-sol-latest` alongside the root `gpt-sol-latest` profile. @@ -111,7 +111,7 @@ non-zero cost; no fixed cost or model-availability guarantee is introduced. ### Small Profile Set -The initial set contains twelve root profiles: +The initial set contains seventeen root profiles: | Profile ID | Intended model selection | | --- | --- | @@ -126,6 +126,11 @@ The initial set contains twelve root profiles: | `gemini-pro-latest` | Google Gemini Pro latest-family alias through OpenRouter. | | `gemini-flash-latest` | Google Gemini Flash latest-family alias through OpenRouter. | | `auto` | OpenRouter auto router (`openrouter/auto`). | +| `auto-low` | Inherits `auto`; sets cost tier `low`. | +| `auto-medium` | Inherits `auto`; sets cost tier `medium`. | +| `auto-high` | Inherits `auto`; sets cost tier `high`. | +| `auto-xhigh` | Inherits `auto`; sets cost tier `xhigh`. | +| `auto-max` | Inherits `auto`; sets cost tier `max`. | | `free` | OpenRouter free-model router (`openrouter/free`). | These profile IDs are selected. Confirm the exact provider `model` slugs for @@ -135,8 +140,28 @@ instead of silently substituting a pinned model or dropping the profile. The tilde and slash in a provider model slug remain part of that value; they do not change the root placement of the PromptKit profile. -Each profile should primarily specify its backend and model. Avoid baking in -temperature, reasoning, token-budget, timeout, or capability assumptions merely +Define each cost-tier profile using `extends: {id: auto}` and the matching +`cost_tier` inside an `auto-router` plugin entry under `extra_params.plugins`: + +```yaml +profiles: + - id: auto + backend: openrouter + model: openrouter/auto + - id: auto-medium + extends: {id: auto} + extra_params: + plugins: + - id: auto-router + cost_tier: medium +``` + +Keep the base `auto` profile without an explicit cost tier. Link to +[OpenRouter's cost-tier documentation](https://openrouter.ai/docs/guides/routing/routers/auto-router#cost-tier) +for routing semantics rather than duplicating that explanation here. + +Each profile should primarily specify or inherit its backend and model. Avoid +baking in temperature, reasoning, token-budget, timeout, or capability assumptions merely to make profiles appear more complete. Operator profiles remain the place for application-specific tuning and fixed model versions. @@ -173,7 +198,7 @@ does not identify or pin the concrete model selected upstream. ## Implementation Work -1. Verify the provider endpoint and exact model values for the twelve selected +1. Verify the provider endpoint and exact model values for the seventeen selected root profiles. 2. Add the embedded YAML backend and profiles, and integrate their dedicated underlay with engine construction. Add the disable option using the existing @@ -181,7 +206,9 @@ does not identify or pin the concrete model selected upstream. 3. Verify default availability, disabling, caller precedence, whole-record replacement, and inherited variants through the real configuration loader. Include an application-provided OpenRouter collection and a replaced backend - to exercise interaction with external catalogs. + to exercise interaction with external catalogs. Verify all five cost-tier + profiles inherit the base backend/model and send the expected top-level + `plugins` array through the built-in HTTP client. 4. Verify listing and inspection reflect effective definitions and meaningful source evidence. Exercise request preparation with a fake client or local server as appropriate; construction must not depend on provider reachability