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
feat: v0.1.3 — fallback model array + OPENROUTER_USAGE_HIDDEN_KEYS (#22)
* feat(llm): plumb fallback_model as Vec<String> with FallbackSpec untagged enum
* feat(llm): walk full fallback_model chain on retry, filter empty candidates
* feat(server): add OPENROUTER_USAGE_HIDDEN_KEYS env-driven usage filter config
* feat(api): strip configured usage keys from sync /message response
* chore(examples): switch chat_companion to fallback array form
The "fallback will be a list in a future iteration" TODO from PR #20
is no longer accurate — v0.1.3 implements the array. Switch the
chat_companion task to the new array form to exercise the new code
path in the example, leave the other tasks on the single-string form
so the legacy compat path stays covered. Update the surrounding
comment to describe the dual-shape contract + explicit-empty opt-out.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs: document OPENROUTER_USAGE_HIDDEN_KEYS env
EN + ZH README Configuration tables gain a row for the new
deployer-set env var; .env.example gains a commented example
explaining why a deployer might want to hide cost from a
downstream-facing response without losing operator tracing.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs(llm-audit): document OPENROUTER_USAGE_HIDDEN_KEYS
Add a "Hiding fields from the response" section under the Outbound
usage echo block (EN + ZH). Explains the env var semantics, scope
(sync /message only), tracing-unaffected guarantee, the top-level-only
behaviour (list a parent key to suppress its entire subtree), and the
pass-through default.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore(release): bump workspace to 0.1.3 + regen OpenAPI snapshot
Ships the fallback-model array support (TaskConfig.fallback can be a
single string or an ordered array; OpenRouterClient::execute walks the
chain sequentially) plus the OPENROUTER_USAGE_HIDDEN_KEYS deployer-set
env var that strips named keys from the sync /message response's usage
echo while leaving tracing intact. crates.io republish + GHCR build +
fly deploy follow this commit's merge.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore(examples): extend fallback array to insight + memory extraction
User-driven follow-up to T5: insight_extraction now fans out to
two fallback models (anthropic/claude-haiku-4.5 then
deepseek/deepseek-v4-flash) instead of one. memory_extraction
primary swapped to x-ai/grok-4.1-fast with the same two-entry
fallback chain. Exercises the new chain-walker on more code
paths in production traffic.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|`OPENROUTER_APP_REFERER`| no | When set, sent as `HTTP-Referer` on every outbound OpenRouter call. Shows up on OpenRouter's app analytics dashboard. |
216
216
|`OPENROUTER_APP_TITLE`| no | When set, sent as `X-Title`. Display name in OpenRouter app analytics. Pairs with `OPENROUTER_APP_REFERER`; both optional. |
217
+
|`OPENROUTER_USAGE_HIDDEN_KEYS`| no | Comma-separated list of top-level keys to strip from the sync `/message` response's `usage` object. Useful for hiding wholesale `cost` / `cost_details` from downstream customers. Server-side tracing is unaffected. |
217
218
|`VOYAGE_API_KEY`| yes | Embeddings. Empty keys fail server boot. |
218
219
|`SUPABASE_URL`| no | Supabase project URL. Kept in `.env.example` for client/deploy conventions; the server does not read it today. |
219
220
|`SUPABASE_JWT_SECRET`| yes | JWT signing secret for default auth. |
0 commit comments