feat(models): OpenRouter model registry + interface + cron wiring (model-picker commit 1) (#13)
Foundation for the smart model picker. Fetches, normalizes, and caches the OpenRouter model list (/api/v1/models — free, unauthenticated). Daily refresh via the existing prautoblogger_daily_generation cron with 12h idempotency. 3-retry exponential backoff on transient failures; serves last-good option payload when stale-and-fetch-fails. New files: - interface-model-registry.php — Phase 3-aware contract (94 lines) - class-openrouter-model-registry.php — fetch + cache + query (226 lines) - class-openrouter-model-normalizer.php — raw → standardized (114 lines) Zero-coupling: no PRAUTOBLOGGER_* constants inside the service classes. Config injected via constructor. Phase 2 lift into a shared Composer package requires only namespace rename, zero internal edits. Cost impact: $0/month (free endpoint, no LLM tokens). Agent-Session: cowork-2026-04-16-model-picker-commit1 Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
This commit is contained in:
12
CHANGELOG.md
12
CHANGELOG.md
@@ -8,6 +8,18 @@ and this project uses [Semantic Versioning](https://semver.org/).
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
- **OpenRouter model registry (model-picker commit 1).** Foundation for the
|
||||
smart model picker: fetches, normalizes, and caches the OpenRouter model
|
||||
list (`/api/v1/models` — free, unauthenticated). Daily refresh via the
|
||||
existing `prautoblogger_daily_generation` cron hook with 12h idempotency.
|
||||
- `includes/services/interface-model-registry.php` — Phase 3-aware contract.
|
||||
- `includes/services/class-openrouter-model-registry.php` — fetch + cache + query.
|
||||
- `includes/services/class-openrouter-model-normalizer.php` — raw → standardized shape.
|
||||
- Capability vocabulary: `text→text`, `text+image→text`, `text→embedding`, etc.
|
||||
- Zero-coupling: no PRAUTOBLOGGER_* constants inside the class — Phase 2 lift
|
||||
into a shared Composer package requires only a namespace rename.
|
||||
- Cost impact: $0/month (free endpoint, no LLM tokens).
|
||||
|
||||
- **Image provider: Cloudflare Workers AI (FLUX.1 family).** First commit of
|
||||
the image + Instagram A/B pipeline workstream. Ships the provider, its
|
||||
pricing + validator helpers, four new settings fields in a new "Images"
|
||||
|
||||
Reference in New Issue
Block a user