Plan bundled OpenRouter configuration

This commit is contained in:
2026-11-03 15:24:06 +00:00
parent 9e05c3ac8b
commit ac44a4f325
2 changed files with 313 additions and 35 deletions

View File

@@ -41,10 +41,10 @@ ConfigKit adapter. Place it in its own lowest-priority underlay, before every
caller underlay and the main input. Preserve the existing order and grouping
of caller inputs.
Enable the bundle by default, with a public engine option to disable it entirely.
Enable the bundle by default, with `WithBundledOpenRouter(bool)` to disable or
enable it explicitly.
This follows the agreed convenience-oriented direction while preserving the
ability to supply an application's complete catalog. Choose the exact option
name during implementation using existing facade conventions.
ability to supply an application's complete catalog.
Bundling a profile makes it available for explicit selection by a prompt or
request. It does not establish an implicit execution profile, change profile
@@ -133,9 +133,10 @@ The initial set contains seventeen root profiles:
| `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
all family aliases during implementation rather than deriving them mechanically
from profile IDs. If a requested alias is unavailable, surface that mismatch
These profile IDs are selected. The companion [implementation plan](implementation.md)
records the exact provider `model` slugs checked against the public alias pages.
Keep those mappings explicit rather than deriving them mechanically from IDs.
If a requested alias becomes unavailable, surface that mismatch
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.
@@ -169,7 +170,6 @@ OpenRouter documents the
[GPT Sol latest alias](https://openrouter.ai/~openai/gpt-sol-latest),
[auto router](https://openrouter.ai/docs/guides/routing/routers/auto-router), and
[free router](https://openrouter.ai/docs/guides/routing/routers/free-router).
Verify the chosen slugs against current provider documentation when implementing.
Stable selectors reduce maintenance but do not freeze model selection, price,
availability, supported parameters, or output behavior. Describe the free router
as the provider's offering rather than adding PromptKit guarantees about future
@@ -212,35 +212,32 @@ automatic refresh mechanism is planned. Provider aliases and routers may change
their targets independently of that release; the inspected configured slug
does not identify or pin the concrete model selected upstream.
## Implementation Work
## Acceptance And Documentation
1. Verify the provider endpoint and exact model values for the seventeen selected
root profiles. Local HTTP checks establish payload construction, not provider
acceptance. A live provider check may supplement that verification without
becoming a recurring credential-dependent test requirement.
2. Add the embedded YAML backend and profiles, and integrate their dedicated
underlay with engine construction. Add the disable option using the existing
facade option pattern. Apply the ordinary load/normalize/validate lifecycle.
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. 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. Add representative explicit
`append` and `replace` mode cases. Add a targeted case replacing root `auto`
in a higher layer with a different backend/model, then verify its cost-tier
children inherit those effective values and retain their plugin settings.
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
or a live API key. Reuse existing credential tests and add coverage only for
new integration behavior. Cover default reachability, the authentication
adapter, inference fallback to `gpt-luna-latest`, explicit prompt/profile
selection, and application replacement of the fallback profile or metadata.
5. Update the format reference, consumer guide, relevant GoDoc, and maintained
examples when implementation lands. Explain how to disable, replace, or derive
from bundled profiles, and distinguish routers/latest aliases from fixed
models. Include the inventory/inspection change in release notes.
The companion implementation plan owns the staged work. The integrated result
should demonstrate:
- Default availability and full disabling through the ordinary configuration
lifecycle, without construction-time provider or credential access.
- Caller precedence, whole-record replacement, inherited variants, explicit
append/replace modes, and coexistence with an external OpenRouter collection.
- All five cost-tier profiles inheriting the effective `auto` backend/model,
retaining their plugin settings even after parent replacement, and producing
the expected top-level `plugins` array through the built-in HTTP client.
- Listing and inspection of effective definitions with meaningful source evidence.
- Explicit smoke diagnostics using backend endpoint fallbacks, authentication,
inference defaults, explicit selection precedence, and effective application
replacements of the default profile or backend metadata.
Offline HTTP tests establish payload construction, not provider acceptance.
Credential-dependent live checks are not recurring test requirements. Existing
credential behavior remains authoritative; coverage should focus on new
integration risks rather than duplicate that suite.
The format reference, consumer guide, relevant GoDoc, and maintained examples
should explain disabling, replacement, and inheritance. Release notes should
identify inventory and inspection changes. Provider latest aliases and routers
remain distinct from fixed models and carry no PromptKit upstream guarantees.
Keep current-state documentation unchanged until implementation lands. Retire
this roadmap after the implemented behavior reaches its durable owners. No new