Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
353 commits
Select commit Hold shift + click to select a range
47210ff
fix(responses): harden continuation hints and stream failures
Mirrowel May 31, 2026
339be92
fix(responses): bind continuations to response anchors
Mirrowel May 31, 2026
5d8b4ab
fix(responses): align continuation anchor namespace
Mirrowel May 31, 2026
5aca164
docs(experimental): plan provider native correction
Mirrowel May 31, 2026
111029d
feat(providers): resolve native operations per provider
Mirrowel May 31, 2026
6c10b80
test(providers): cover priority native execution paths
Mirrowel May 31, 2026
9943a62
test(providers): preserve gemini cli custom path
Mirrowel May 31, 2026
99a2640
fix(providers): harden native request safety
Mirrowel May 31, 2026
a6085f6
fix(providers): close native streaming and antigravity gaps
Mirrowel May 31, 2026
e4cce3f
fix(providers): make antigravity envelope idempotence explicit
Mirrowel May 31, 2026
c106bc1
docs(experimental): plan routing fallback correction
Mirrowel May 31, 2026
8f7cd9a
fix(routing): enforce hard-stop fallback policy
Mirrowel May 31, 2026
33f9b7d
fix(routing): harden structured fallback decisions
Mirrowel May 31, 2026
c902b9d
fix(streaming): classify control frames before fallback
Mirrowel May 31, 2026
aaabe38
fix(routing): close fallback review gaps
Mirrowel May 31, 2026
1006766
fix(routing): preserve stream hard-stop semantics
Mirrowel May 31, 2026
f2e74ad
fix(routing): complete structured error classification
Mirrowel May 31, 2026
e441215
fix(routing): preserve context-window dict classification
Mirrowel May 31, 2026
9f0d0aa
docs(experimental): plan retry cooldown correction
Mirrowel May 31, 2026
c36bd71
feat(cooldown): add provider model scoped cooldowns
Mirrowel May 31, 2026
533232b
feat(retry): add scoped cooldown decisions
Mirrowel May 31, 2026
b40e38e
feat(retry): wire scoped cooldowns into executor
Mirrowel May 31, 2026
0d3d049
feat(streaming): expose scoped cooldown decisions
Mirrowel May 31, 2026
dcba7ba
fix(retry): guard stream retries after visible output
Mirrowel May 31, 2026
c109eeb
fix(retry): latch streaming policy decisions
Mirrowel May 31, 2026
796b6c0
docs(experimental): plan streaming hardening correction
Mirrowel May 31, 2026
b62f683
feat(streaming): add heartbeat runtime settings
Mirrowel May 31, 2026
4cd74cf
feat(streaming): harden stream lifecycle handling
Mirrowel May 31, 2026
2b069b7
feat(native): support httpx stream transport
Mirrowel May 31, 2026
5deb818
fix(streaming): preserve retry safety around heartbeats
Mirrowel May 31, 2026
9b4d351
fix(streaming): harden native stream sentinels
Mirrowel May 31, 2026
abfd360
fix(streaming): initialize stream timeout state
Mirrowel May 31, 2026
32a3d3d
docs(experimental): plan usage cost correction
Mirrowel May 31, 2026
c6c7b77
feat(usage): preserve provider reported costs
Mirrowel May 31, 2026
32d705a
feat(usage): prefer reported provider costs
Mirrowel May 31, 2026
c1c6133
feat(streaming): account for SSE cost events
Mirrowel May 31, 2026
810af70
feat(usage): trace reported costs across surfaces
Mirrowel May 31, 2026
b2dcda4
fix(usage): preserve streaming and native costs
Mirrowel May 31, 2026
a84c38a
docs(experimental): plan config wiring correction
Mirrowel May 31, 2026
4f28ff5
feat(config): add retry and responses settings
Mirrowel May 31, 2026
d35eef3
feat(config): wire runtime settings surfaces
Mirrowel May 31, 2026
ee43801
fix(config): harden experimental settings parsing
Mirrowel May 31, 2026
b271803
fix(config): reject more secret-like keys
Mirrowel May 31, 2026
904bc1c
docs(experimental): record third-pass audit findings
Mirrowel May 31, 2026
9335621
docs(experimental): plan protocol guardrail fixes
Mirrowel May 31, 2026
fe96b96
fix(protocols): format public usage shapes
Mirrowel May 31, 2026
e9af7d5
fix(protocols): close Phase 1c review gaps
Mirrowel May 31, 2026
bb84721
docs(experimental): plan transform trace completion
Mirrowel May 31, 2026
96a0847
fix(trace): complete transform trace coverage
Mirrowel May 31, 2026
cd9134a
fix(trace): address Phase 2c review gaps
Mirrowel May 31, 2026
1dd7e6c
fix(trace): trace responses stream store failures
Mirrowel May 31, 2026
7dff25e
fix(trace): normalize dict responses before final trace
Mirrowel May 31, 2026
7026a21
docs(experimental): plan field-cache runtime completion
Mirrowel May 31, 2026
2a6b689
fix(field-cache): complete native runtime coverage
Mirrowel May 31, 2026
f0cefab
fix(field-cache): close Phase 3c review gaps
Mirrowel May 31, 2026
c916725
docs(experimental): plan responses correction
Mirrowel May 31, 2026
3131a15
fix(responses): wire storage and lineage
Mirrowel May 31, 2026
b0915c8
fix(responses): preserve tool-call lineage
Mirrowel May 31, 2026
1d5b460
fix(responses): replay tool-result lineage
Mirrowel May 31, 2026
3ed6697
docs(experimental): plan provider-native correction
Mirrowel May 31, 2026
fd78d98
fix(providers): return client protocol from native calls
Mirrowel May 31, 2026
3b7f3eb
fix(providers): harden native selection and streaming
Mirrowel May 31, 2026
831c687
fix(providers): close native streaming and cache gaps
Mirrowel May 31, 2026
0d5434c
fix(providers): preserve plain antigravity preview alias
Mirrowel May 31, 2026
1fe96c0
docs(experimental): plan routing fallback correction
Mirrowel May 31, 2026
39d4757
fix(routing): harden fallback selection
Mirrowel May 31, 2026
7943d02
fix(routing): honor native stream opt outs
Mirrowel May 31, 2026
b8f273c
docs(experimental): plan retry cooldown correction
Mirrowel May 31, 2026
e9a75b9
fix(retry): enforce cooldown backoff semantics
Mirrowel May 31, 2026
7f050e5
docs(experimental): plan streaming hardening correction
Mirrowel May 31, 2026
af21d23
fix(streaming): harden responses runtime streams
Mirrowel May 31, 2026
7ab06a4
fix(streaming): preserve response timeout deadlines
Mirrowel May 31, 2026
bbe5df5
fix(streaming): consume completed heartbeat tasks
Mirrowel May 31, 2026
e4aac43
fix(streaming): keep responses ttfb end-to-end
Mirrowel May 31, 2026
244835e
docs(experimental): plan usage cost correction
Mirrowel May 31, 2026
17e3316
fix(usage): preserve provider cost metadata
Mirrowel May 31, 2026
6821979
fix(usage): handle reference stream cost shapes
Mirrowel May 31, 2026
4ced125
fix(usage): preserve all stream cost metadata
Mirrowel May 31, 2026
7f8bee5
fix(usage): normalize estimated cost fields
Mirrowel May 31, 2026
03908d4
fix(usage): avoid breakdown cost double counting
Mirrowel May 31, 2026
34e2d1d
docs(config): plan phase 10c completion
Mirrowel May 31, 2026
ce124c5
fix(config): wire safe provider config
Mirrowel May 31, 2026
81e2490
fix(config): validate provider overrides eagerly
Mirrowel May 31, 2026
037a705
fix(logger): 🐛 ensure transaction payloads are JSON-safe
Mirrowel Jun 17, 2026
28ea9da
feat(quota): ✨ add fallback cooldown for quota exhaustion without res…
Mirrowel Jun 17, 2026
2a19c9b
docs(session): plan tracking hardening
Mirrowel Jul 14, 2026
34b015a
refactor(providers): 🔨 retire gemini_cli OAuth provider and helpers
Mirrowel Jul 14, 2026
985f18f
fix(session): 🐛 harden compaction detection, streaming identity, and …
Mirrowel Jul 15, 2026
3087564
fix(session): 🐛 harden compaction context, identity precedence, and l…
Mirrowel Jul 15, 2026
c83bb07
feat(session): ✨ globalize logical sessions across providers with str…
Mirrowel Jul 15, 2026
7c691b3
fix(responses): 🐛 replace forgeable domain hashes with unforgeable re…
Mirrowel Jul 15, 2026
48af6c1
docs(protocols): 📚 define interoperability correction contract
Mirrowel Jul 16, 2026
4ecdaec
feat(protocols): ✨ add canonical cross-protocol conversion
Mirrowel Jul 16, 2026
df8c02f
feat(protocols): ✨ wire independent protocol runtime
Mirrowel Jul 16, 2026
449bb5a
feat(protocols): ✨ expose configurable protocol surfaces
Mirrowel Jul 16, 2026
ef66557
feat(protocols): ✨ add canonical cross-protocol streaming
Mirrowel Jul 16, 2026
b6c5ce0
fix(protocols): 🐛 harden provider state isolation
Mirrowel Jul 16, 2026
678e10b
fix(protocols): 🐛 finalize selected error boundaries
Mirrowel Jul 17, 2026
33d1ac6
docs(experimental): replace phase docs with authoritative final plan …
Mirrowel Sep 5, 2026
4d9a465
refactor(protocols): remove independent output-protocol machinery (W1…
Mirrowel Sep 5, 2026
eb8fd96
refactor(streaming): W1b+W5 neutral-event pipeline replaces forced-ch…
Mirrowel Sep 5, 2026
f8efc61
docs(experimental): protocol verification pairs added as W10 pre-gate…
Mirrowel Sep 6, 2026
3784fec
feat(protocols): W2 neutral model completeness - candidates, refusal,…
Mirrowel Sep 6, 2026
51f6b0e
fix(protocols): W2 review round-2 residuals - audio fidelity, refusal…
Mirrowel Sep 6, 2026
f81c66c
fix(protocols): W2 round-3 review fixes - audio wire shape, refusal i…
Mirrowel Sep 6, 2026
6087194
fix(protocols): W2 close-out - text+audio collapse, fixture assertion…
Mirrowel Sep 6, 2026
472a949
fix(protocols): responses output-item blocks carry item position as i…
Mirrowel Sep 6, 2026
0d11a2b
feat(protocols): W3 same-protocol raw fast path + encrypted reasoning…
Mirrowel Sep 6, 2026
4ff7897
fix(protocols): W3 review round-1 fixes - full gate coverage, interle…
Mirrowel Sep 6, 2026
aaa2a45
fix(protocols): W3 close-out - nested facade fidelity, text-less reas…
Mirrowel Sep 6, 2026
6397564
feat(protocols): W4 - cross-protocol conversion completion (D7/D9)
Mirrowel Sep 6, 2026
a749191
fix(protocols): 🐛 round out cross-protocol conversion fidelity (W4)
Mirrowel Sep 6, 2026
d87dd8b
fix(protocols): 🐛 refusal streams, reasoning vocabulary fidelity, ins…
Mirrowel Sep 6, 2026
35b2547
fix(protocols): 🐛 budget headroom, disabled-thinking combos, block id…
Mirrowel Sep 6, 2026
156fa3f
fix(protocols): 🐛 drop assistant image parts at chat alongside the su…
Mirrowel Sep 6, 2026
856478a
refactor(anthropic): 🔨 retire the compat translation layer for the pr…
Mirrowel Sep 6, 2026
d777a39
refactor(proxy): 🔨 extract route helpers and OAuth bootstrap from the…
Mirrowel Sep 6, 2026
f3277db
fix(proxy): 🐛 terminal stream failures that actually terminate, canon…
Mirrowel Sep 6, 2026
f080b0d
fix(proxy): 🐛 cost estimation on the live registry, failure modes ass…
Mirrowel Sep 6, 2026
189a727
fix(proxy): 🐛 finish canonical error vocabulary on count_tokens and e…
Mirrowel Sep 6, 2026
ec4391b
fix(proxy): 🐛 anthropic stream terminal guard, masked key display, ca…
Mirrowel Sep 6, 2026
d53ad31
refactor(adapters): 🔨 move response and stream adapters onto the prov…
Mirrowel Sep 6, 2026
798bfbb
refactor(adapters): 🔨 response wire adapters land with validation and…
Mirrowel Sep 6, 2026
75fd249
test(adapters): ✅ pin the neutral stream contract and honest staging …
Mirrowel Sep 6, 2026
3298dd0
chore(providers): 🧹 remove agent-generated placeholder providers, reb…
Mirrowel Sep 6, 2026
4b8c805
test(providers): ✅ restore full cache-contract coverage on synthetic …
Mirrowel Sep 6, 2026
e4d71e0
feat(logging): ✨ leveled transaction logging with zstd artifacts
Mirrowel Sep 6, 2026
56f7490
fix(logging): 🐛 W12 review fixes (ring bounds, capture set, finalize …
Mirrowel Sep 6, 2026
c16e60d
fix(logging): 🐛 W12 round 2 - finalize coverage, capture precedence
Mirrowel Sep 6, 2026
851074a
fix(logging): 🐛 W12 residuals - plain-mode fallback target, L3 wording
Mirrowel Sep 6, 2026
32e06c7
feat(providers): ✨ W11 - native-by-default execution for built-ins
Mirrowel Sep 6, 2026
ee645ab
fix(executor): 🐛 W11 review fixes - stream usage, fallback visibility
Mirrowel Sep 6, 2026
d037be5
fix(providers): 🐛 W11 round 2 - cohere base, metadata staleness, guards
Mirrowel Sep 6, 2026
45821ac
test(executor): ✅ pin the once-per-request fallback warning guard
Mirrowel Sep 6, 2026
f736afb
feat(routing): ✨ W-PROF - multi-profile providers + provider:profile/…
Mirrowel Sep 6, 2026
4f0b0b3
fix(routing): 🐛 W-PROF review fixes - grammar scoping, identity, fail…
Mirrowel Sep 6, 2026
c58f6e7
fix(routing): 🐛 W-PROF round 2 - profile-aware operations, fail-fast …
Mirrowel Sep 6, 2026
a74038f
style(routing): 💎 tolerate duck-typed targets without a profile field
Mirrowel Sep 6, 2026
a935cf2
feat(field-cache): ✨ W13 - cache-and-replay + compatibility classes
Mirrowel Sep 6, 2026
305bffc
fix(field-cache): 🐛 W13 review fixes - merge guard, compile validation
Mirrowel Sep 6, 2026
90c4571
fix(field-cache): 🐛 W13 flash review fixes (registry hardening, unifo…
Mirrowel Sep 6, 2026
a624c1a
fix(field-cache): 🐛 W13 light review fixes (guard isolation classes, …
Mirrowel Sep 6, 2026
49d163b
fix(field-cache): 🐛 W13 close-out (stdlib-compatible rules, profile p…
Mirrowel Sep 6, 2026
f0c2e84
fix(field-cache): 🐛 trace profile field + null max_values guard
Mirrowel Sep 6, 2026
953c891
fix(protocols): 🐛 openai_chat gatekeeper pass - doc-conformant wire s…
Mirrowel Sep 7, 2026
2262a7d
fix(protocols): 🐛 openai_chat round 2 - audio path crash, tool-choice…
Mirrowel Sep 7, 2026
a42e3c4
fix(protocols): 🐛 usage semantics completed across all four targets
Mirrowel Sep 7, 2026
df9e556
fix(protocols): 🐛 response-path drop warnings + stream prediction det…
Mirrowel Sep 7, 2026
64b8e2b
fix(protocols): 🧹 unknown-block drop warning + indent tidy
Mirrowel Sep 7, 2026
e748097
fix(protocols): 🐛 anthropic_messages gatekeeper pass - stop reasons, …
Mirrowel Sep 7, 2026
afaeaba
fix(protocols): 🐛 anthropic media validation, stream server-tool bloc…
Mirrowel Sep 7, 2026
5bea70c
test(anthropic): ✅ count estimate disclosure assertion
Mirrowel Sep 7, 2026
a05c8e2
fix(protocols): 🐛 anthropic round-2 residuals - crash, merge totals, …
Mirrowel Sep 7, 2026
53091c9
fix(protocols): 🐛 output_config merge collision + logger placement
Mirrowel Sep 7, 2026
6a7e48e
fix(protocols): 🐛 responses gatekeeper batch A - item shapes, hosted …
Mirrowel Sep 7, 2026
fc41dcb
fix(responses): 🐛 stream conformance (sequence numbers, in_progress, …
Mirrowel Sep 7, 2026
c793438
test(responses): ✅ string error code assertion
Mirrowel Sep 7, 2026
62e4156
fix(responses): 🐛 bridge stream events carry official shapes, sequenc…
Mirrowel Sep 7, 2026
ea035b9
fix(responses): 🐛 namespaced tool-choice, bridge structured output, f…
Mirrowel Sep 7, 2026
713778e
fix(responses): 🐛 round-2 residuals - store crash, full sequence stam…
Mirrowel Sep 7, 2026
e031225
fix(responses): 🐛 stable bridge item indexes independent of reasoning…
Mirrowel Sep 7, 2026
59903a4
fix(responses): 🐛 404 hint + failed-create store policy regression test
Mirrowel Sep 7, 2026
a90a911
fix(responses): 🧹 sparse tool index collision guard
Mirrowel Sep 7, 2026
f9290dd
fix(gemini): 🐛 wire-contract corrections - body fields, signatures, s…
Mirrowel Sep 7, 2026
d5a6ac2
fix(gemini): 🐛 gatekeeper round - stop vocabulary, allowlists, media …
Mirrowel Sep 7, 2026
1a89b6d
fix(gemini): 🐛 re-probe round - validation reachability, symmetric dr…
Mirrowel Sep 7, 2026
34289d6
fix(gemini): 🐛 responses web_search tool definitions reach the google…
Mirrowel Sep 7, 2026
eb028c1
fix(gemini): 🐛 thinkingLevel canonicalizes to effort
Mirrowel Sep 7, 2026
e42610c
fix(gemini): 🐛 thinkingLevel read from its documented thinkingConfig …
Mirrowel Sep 7, 2026
253b0c0
feat(responses): ✨ WebSocket Mode - connection-local continuation, ne…
Mirrowel Sep 7, 2026
236590f
test(responses): ✨ WebSocket Mode fixtures - ZDR chains, error shapes…
Mirrowel Sep 7, 2026
3937e81
fix(responses): 🐛 WebSocket round-2 - warmup chaining, miss detection…
Mirrowel Sep 7, 2026
ef4409c
fix(responses): 🐛 WebSocket round-3 closure - aclose chain, warmup sh…
Mirrowel Sep 7, 2026
8f0eedd
fix(protocols): 🐛 neutral canonical closure - disclosure families, id…
Mirrowel Sep 7, 2026
7f0a3c8
fix(protocols): 🐛 neutral closure residuals - stream warn scoping, st…
Mirrowel Sep 7, 2026
b3719ae
fix(protocols): 🐛 cache-control disclosure scope + gemini same-protoc…
Mirrowel Sep 7, 2026
4348fec
fix(protocols): 🐛 cache-control disclosure covers system blocks and t…
Mirrowel Sep 7, 2026
f7418dc
fix(protocols): 🐛 tool-definition raw access guard in cache-hint scan
Mirrowel Sep 7, 2026
4ed4cd4
fix(protocols): 🐛 chat re-review - tool-call-only content null, unkno…
Mirrowel Sep 7, 2026
f8d0554
fix(protocols): 🐛 parallelism conflict guard reads canonical param; w…
Mirrowel Sep 7, 2026
6899b10
fix(protocols): 🐛 anthropic re-review - server-tool catalog, adaptive…
Mirrowel Sep 7, 2026
a05074e
fix(protocols): 🐛 anthropic nits - dead effort branch, thinking_token…
Mirrowel Sep 7, 2026
1222c53
fix(responses): 🐛 full-surface re-review closures
Mirrowel Sep 8, 2026
efe5c12
fix(gemini): 🐛 full-surface re-review closures
Mirrowel Sep 8, 2026
d9e5848
fix(protocols): 🐛 confirmation-round repairs - dead branches made live
Mirrowel Sep 8, 2026
b02cd36
fix(protocols): 🐛 final gatekeeper repairs
Mirrowel Sep 8, 2026
ef8cba6
fix(protocols): 🐛 harvest attribution reads the event-level output_index
Mirrowel Sep 8, 2026
5240367
fix(protocols): 🐛 WS store_failed gate hoisted above the ZDR path
Mirrowel Sep 8, 2026
d53118b
build(tests): 📦 async tests run under asyncio_mode=auto
Mirrowel Sep 8, 2026
f2eae37
docs(experimental): 📚 config reference + manual test guide
Mirrowel Sep 8, 2026
d07cc78
docs(experimental): 📚 W10 delivered - final gate closed pending user …
Mirrowel Sep 8, 2026
a075e84
fix(proxy): 🐛 default-key policy, launcher crash, masked banner
Mirrowel Sep 9, 2026
1fd2452
perf(startup): ⚡️ lazy import boundaries restore fast launcher phasing
Mirrowel Sep 9, 2026
34860c0
docs(experimental): 📚 untrack superseded planning docs and final plan
Mirrowel Sep 9, 2026
605dc57
fix(errors): 🐛 one grounded error taxonomy, fail-fast lifecycle, clos…
Mirrowel Sep 11, 2026
4ea791b
feat(hooks): ✨ declared hookable execution pipeline (G2)
Mirrowel Sep 12, 2026
b8d86f4
fix(hooks): 🐛 make request_received hook edits authoritative (G2 foll…
Mirrowel Sep 12, 2026
d746f46
fix(routing): 🐛 honest profiles and fail-loud routing config (G7)
Mirrowel Sep 12, 2026
561956e
fix(stream): 🐛 relay provider bytes, repair finishes, keep n>1 siblings
Mirrowel Sep 12, 2026
fa9051b
fix(streaming): 🔒 formatter state lifecycle, close-all terminals, and…
Mirrowel Sep 12, 2026
270f054
fix(protocols): 🐛 strip foreign opaque state on provider switch acros…
Mirrowel Sep 12, 2026
db9d4e1
feat(protocols): ✨ gemini depth completion + ollama native protocol
Mirrowel Sep 12, 2026
11b4d28
feat(protocols): ✨ responses sibling split + gemini two transport faces
Mirrowel Sep 12, 2026
62ca765
feat(responses): ✨ continuation hybrid + never-fail durable store
Mirrowel Sep 12, 2026
284870c
fix(protocols): 🐛 verification fixes for the variants group
Mirrowel Sep 12, 2026
212a307
feat(responses): ✨ first-class WebSocket mode — lanes, steering, no-e…
Mirrowel Sep 12, 2026
2060123
fix(responses): 🐛 websocket verification pass — steer targeting, lane…
Mirrowel Sep 12, 2026
8ec64ef
refactor(responses): 🔨 SDK-conformance batch, real cancel, bridge rem…
Mirrowel Sep 12, 2026
beebf2a
fix(responses): 🐛 conformance verification pass — enum-legal error co…
Mirrowel Sep 12, 2026
351cd83
refactor(core): 🔨 transaction records replace the multi-file logger
Mirrowel Sep 13, 2026
288a5e6
fix(core): 🐛 transaction record verification pass — bounds, drain, bo…
Mirrowel Sep 13, 2026
bf00ccf
fix(core): 🐛 record core hardening — thread-safe sealing, event cap, …
Mirrowel Sep 13, 2026
ea3e6a8
fix(core): 🐛 record core final closers — comment frames, spill trigge…
Mirrowel Sep 13, 2026
edac4ca
refactor(core): 🔨 disclosure unification — one writer, change-log sin…
Mirrowel Sep 13, 2026
ecb7ad1
fix(core): 🐛 disclosure verification closers — one writer everywhere,…
Mirrowel Sep 13, 2026
b9b8f8f
fix(protocols): 🐛 anthropic text format stops fabricating an empty sc…
Mirrowel Sep 13, 2026
825e473
feat(proxy): ✨ transaction explorer — list, inspect, reconstruct
Mirrowel Sep 13, 2026
757fdf4
refactor(core): 🔨 SQLite storage engine replaces the JSON caches
Mirrowel Sep 13, 2026
6d881dc
fix(core): 🐛 storage engine validation fixes
Mirrowel Sep 13, 2026
411d4fa
feat(proxy): ✨ store explorer TUI + orphan cleanup + write-amplificat…
Mirrowel Sep 13, 2026
9b97460
fix(core): 🐛 usage rows are accounting — never auto-pruned
Mirrowel Sep 13, 2026
798f172
refactor(providers): 🔨 universal dynamic base + provider seams cleanup
Mirrowel Sep 13, 2026
f75149a
feat(providers): ✨ first-class openrouter, groq, cohere
Mirrowel Sep 13, 2026
aa918fe
fix(providers): 🐛 wave-1 verification fixes from the provider researc…
Mirrowel Sep 13, 2026
58c7941
feat(providers): ✨ first-class chutes, nanogpt, openai
Mirrowel Sep 13, 2026
e79a88b
fix(providers): 🐛 wave-2 verification fixes from the provider researc…
Mirrowel Sep 13, 2026
b897421
feat(routing): ✨ model-string arguments — request hints in the model id
Mirrowel Sep 13, 2026
a99a005
feat(adapters): ✨ declared param_rules — one generic request-hygiene …
Mirrowel Sep 13, 2026
2ded73f
feat(field-cache): ✨ turn vocabulary, correlation chain, scoped param…
Mirrowel Sep 13, 2026
7b00c6d
feat(providers): ✨ deepseek as a pure declaration
Mirrowel Sep 13, 2026
a9e6e7d
feat(providers): ✨ mistral first-class — thinking finally surfaces
Mirrowel Sep 13, 2026
aff1225
feat(protocols): ✨ the provider envelope — speak, inherit, override
Mirrowel Sep 13, 2026
01a8661
feat(field-cache): ✨ field-addressed rules + the capability cascade
Mirrowel Sep 13, 2026
a535746
refactor(routing): 🔨 speaks-driven profile resolution end to end
Mirrowel Sep 13, 2026
d6f0fd7
feat(protocols): ✨ one reasoning-effort ladder replaces provider maps
Mirrowel Sep 14, 2026
752045e
refactor(adapters): 🔨 param hygiene is always-on, adapters declare co…
Mirrowel Sep 14, 2026
d847ead
refactor(providers): 🔨 the wave onto the envelope — speak, inherit, d…
Mirrowel Sep 14, 2026
536416e
fix(providers): 🐛 shared listing skips explicitly inactive models
Mirrowel Sep 14, 2026
3ea5e35
fix(providers): 🐛 cohere folds tool_choice required to the compat con…
Mirrowel Sep 14, 2026
87f979b
fix(providers): 🐛 verification-round closes — pagination, listing aut…
Mirrowel Sep 14, 2026
470c34f
docs(providers): 📚 the example provider as the envelope's teaching file
Mirrowel Sep 14, 2026
6ad1a6a
refactor(providers): 🔨 listing fallback that warns, adapters that shr…
Mirrowel Sep 14, 2026
4874977
feat(protocols): ✨ declared dotted-target reasoning emission
Mirrowel Sep 14, 2026
f76c333
refactor(providers): 🔨 nvidia nim as declared capability rows
Mirrowel Sep 14, 2026
a73508e
refactor(protocols): 🔨 gemini model knowledge moves out of the protocol
Mirrowel Sep 15, 2026
bff4a42
refactor(protocols): 🔨 the gemini protocol becomes a translator, not …
Mirrowel Sep 15, 2026
dacac57
feat(protocols): ✨ embeddings as a first-class operation on the runtime
Mirrowel Sep 16, 2026
e51657c
fix(embeddings): 🐛 gatekeeper round — group fidelity, response shape,…
Mirrowel Sep 16, 2026
ffa2a09
fix(embeddings): 🐛 close the gatekeeper residuals
Mirrowel Sep 16, 2026
34bba5e
chore(repo): 🧹 untrack tests pycache
Mirrowel Sep 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
173 changes: 171 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,58 @@
# --- Chutes ---
#CHUTES_API_KEY_1="YOUR_CHUTES_API_KEY"

# ------------------------------------------------------------------------------
# | [CUSTOM / DYNAMIC PROVIDERS] Define providers without writing code |
# ------------------------------------------------------------------------------
#
# Any provider name that is not built in can be served natively by declaring
# its base URL. The minimal form is MYSERVER_API_BASE plus MYSERVER_API_KEY:
# the proxy registers a dynamic provider named 'myserver' and speaks to it
# using the protocol declared in the structured config file.
#
# IMPORTANT: several knobs people expect do NOT exist as environment variables.
# There is NO MYSERVER_PROTOCOL, MYSERVER_AUTH_MODE, MYSERVER_AUTH_HEADER_NAME,
# MYSERVER_ENDPOINT_CHAT, or MYSERVER_CONFIG. Protocol, auth mode, auth header,
# endpoint paths, transport profiles, adapters, and hooks are declared in the
# JSON "providers" section (see LLM_PROXY_CONFIG_FILE below). Only the
# variables shown here are read by the code.
#
# --- Base URL (required) ---
#MYSERVER_API_BASE="https://api.myserver.example/v1"
#
# --- Credentials ---
# One variable per key; append a number for multiple keys. Numbered keys rotate
# independently. Omit entirely for a keyless local server.
#MYSERVER_API_KEY="YOUR_MYSERVER_API_KEY"
#MYSERVER_API_KEY_2="YOUR_SECOND_MYSERVER_API_KEY"
#
# --- Model definitions (optional) ---
# JSON array of names, or an object mapping display names to an upstream id and
# default options. This does NOT drive dynamic-provider discovery (the JSON
# providers section 'models' list or the upstream listing endpoint does); it
# supplies id aliases and per-model options.
#MYSERVER_MODELS='["frontier-v2","frontier-v2-mini"]'
#
# --- Cache-and-replay rules (optional) ---
# JSON list of rules that cache upstream state and replay it on a later turn
# (reasoning content, thought signatures, prompt-cache keys, continuation ids).
# Precedence: JSON providers.<name>.field_cache > this env > class attribute.
#MYSERVER_CACHE_REPLAY='[{"name":"prompt_cache_key","source":"response","path":"id","keep":"last","inject":{"target":"request","path":"prompt_cache_key","if":"auto"}}]'
#
# --- Structured provider declaration (protocol, auth, endpoints) ---
# Point this at a JSON file; its "providers" section declares protocol_name
# (openai_chat, responses, anthropic_messages, gemini, or ollama), auth_mode
# (bearer, x-api-key, x-goog-api-key, custom, or none), auth_header_name,
# endpoint_paths, transport_profiles, adapter_names, adapter_config, hooks,
# models, model_quota_groups, and field_cache for MYSERVER. See
# docs/examples/provider-config.example.json and docs/examples/README.md.
#LLM_PROXY_CONFIG_FILE="./config/llm-proxy.json"
#
# A minimal MYSERVER entry would look like:
# {"providers":{"myserver":{"api_base":"https://api.myserver.example/v1",
# "protocol_name":"openai_chat","models":["frontier-v2"]}}}
#

# ------------------------------------------------------------------------------
# | [OAUTH] Provider OAuth 2.0 Credentials |
# ------------------------------------------------------------------------------
Expand Down Expand Up @@ -186,15 +238,23 @@
#
# TTL and max entries for the sequential strategy's in-memory session->credential
# sticky cache. These do not enable disk persistence.
#SESSION_STICKY_ENTRY_TTL_SECONDS=3600
#SESSION_STICKY_ENTRY_TTL_SECONDS_GEMINI_CLI=3600
# Default idle cache-affinity lifetime is 300 seconds. Override per provider
# when its upstream prompt-cache invalidation period differs. Set to 0 to disable
# sticky credential bindings for that provider.
#SESSION_STICKY_ENTRY_TTL_SECONDS=300
#SESSION_STICKY_ENTRY_TTL_SECONDS_GEMINI_CLI=300
#SESSION_STICKY_MAX_ENTRIES=10000
#SESSION_STICKY_MAX_ENTRIES_GEMINI_CLI=10000
#
# Optional: promote explicit request fields to trusted strong session evidence.
# Leave unset unless your clients send stable conversation IDs.
#TRUSTED_SESSION_ID_FIELDS="conversation_id,thread_id"

# Persist inferred session lineage across proxy restarts. Disabled by default;
# state is stored as content-free schema-3 hashes in session_stickiness.json.
#SESSION_PERSISTENCE_ENABLED=true
#SESSION_PERSISTENCE_FLUSH_INTERVAL_SECONDS=5.0

# --- Priority-Based Concurrency Multipliers ---
# Credentials can be assigned to priority tiers (1=highest, 2, 3, etc.).
# Each tier can have a concurrency multiplier that increases the effective
Expand Down Expand Up @@ -265,6 +325,15 @@
# EXHAUSTION_COOLDOWN_THRESHOLD_GEMINI_CLI=300
# EXHAUSTION_COOLDOWN_THRESHOLD=300 # Global fallback for all providers

# No-reset quota exhaustion policy. Some quota APIs report an exhausted bucket
# without a reset timestamp when the account cannot access that model/group.
# Policies: warn_only | cooldown | disable_scope
# Providers default to warn_only unless they explicitly opt into a fallback.
# QUOTA_NO_RESET_EXHAUSTION_POLICY_PROVIDER=cooldown
# QUOTA_NO_RESET_COOLDOWN_SECONDS_PROVIDER=86400
# QUOTA_NO_RESET_EXHAUSTION_POLICY=warn_only
# QUOTA_NO_RESET_COOLDOWN_SECONDS=0

# ------------------------------------------------------------------------------
# | [ADVANCED] Custom Caps |
# ------------------------------------------------------------------------------
Expand Down Expand Up @@ -333,6 +402,98 @@
# Default: false
# STREAM_RETRY_ON_REASONING_ONLY=false

# --- Optional Structured Config File ---
# Optional JSON config for structured experimental settings such as fallback
# groups, model routes, advisory pricing, streaming observability, and field
# cache rules. Environment variables override JSON config. Do not put API keys,
# OAuth tokens, bearer tokens, or authorization headers in this file.
# Supported top-level sections include: routing, pricing, streaming, retry,
# responses, field_cache, and providers. The providers section is for non-secret
# provider tuning and config-defined custom providers; credentials must stay in
# env or provider credential files. A custom provider can declare api_base,
# protocol_name (openai_chat, responses, anthropic_messages, or gemini),
# endpoint_paths, auth_mode (bearer, x-api-key, x-goog-api-key, custom, or none),
# auth_header_name, models, adapter_names,
# adapter_config, native_streaming_supported, field_cache, and model_quota_groups.
# Endpoint paths stay on api_base and may use {model}, {operation}, or {provider};
# transport selectors such as ?alt=sse are allowed, but credential-like query
# keys, URL credentials, fragments, and cross-origin endpoint URLs are rejected.
# Custom provider definitions are discovered and snapshotted at process startup.
# Supply credentials separately as <PROVIDER>_API_KEY variables or through the
# existing provider credential facilities. Never put credentials or OAuth data
# in the JSON file.
# LLM_PROXY_CONFIG_FILE=./config/llm-proxy.json

# Non-streaming generation routes accept X-Proxy-Output-Protocol to select an
# independent response format. Explicit library arguments take priority, then
# this header, then a provider default, then the input protocol. Cross-protocol
# streaming is rejected until canonical stream conversion is enabled.

# --- Fallback Groups and Model Routes ---
# Ordered fallback groups try targets in order when the previous target fails
# with a retryable provider/category error. Execution suffixes:
# @auto Let the provider choose custom/native/LiteLLM behavior
# @native Require native protocol execution
# @custom Require provider custom execution
# @litellm_fallback Explicitly use LiteLLM fallback
# FALLBACK_GROUPS=code_chain
# FALLBACK_GROUP_CODE_CHAIN=codex/gpt-5.1-codex@native,openai/gpt-5.1@litellm_fallback
# MODEL_ROUTE_CODE=group:code_chain

# --- Provider Cooldown Activation ---
# Provider-level cooldown is conservative and only intended for large/global
# retry-after events, not every per-credential quota error. Model-capacity
# errors can start a model-scoped cooldown without blocking unrelated models.
# PROVIDER_COOLDOWN_MIN_SECONDS=10
# PROVIDER_COOLDOWN_DEFAULT_SECONDS=30
# PROVIDER_COOLDOWN_ON_QUOTA=false
# Repeated transient provider/model failures can increase bounded backoff.
# PROVIDER_BACKOFF_WINDOW_SECONDS=60
# PROVIDER_BACKOFF_THRESHOLD=3
# PROVIDER_BACKOFF_BASE_SECONDS=0 # 0/unset means use provider cooldown default
# PROVIDER_BACKOFF_MAX_SECONDS=300
# FAILURE_HISTORY_MAX_ENTRIES=200

# --- Responses API Store Policy ---
# Responses are stored in-memory by default. Use provider_cache for durable JSON
# storage via the existing provider-cache layer. TTL/max limits are disabled
# when unset or <= 0. Failed stream responses are stored by default; in-progress
# streaming state is disabled unless explicitly enabled.
# RESPONSES_STORE_BACKEND=memory
# RESPONSES_STORE_CACHE_NAME=responses
# RESPONSES_STORE_CACHE_PREFIX=responses
# RESPONSES_STORE_CACHE_DIR=
# RESPONSES_STORE_CACHE_MEMORY_TTL_SECONDS=3600
# RESPONSES_STORE_CACHE_DISK_TTL_SECONDS=172800
# RESPONSES_STORE_TTL_SECONDS=0
# RESPONSES_STORE_MAX_ITEMS=0
# RESPONSES_STORE_FAILED=true
# RESPONSES_STORE_IN_PROGRESS=false

# --- Streaming Observability ---
# Stream lifecycle metrics are traced by default. TTFB/stall timeout values are
# active when set to >0; keep at 0 to disable. Heartbeats are SSE comments and
# do not count as visible output.
# STREAM_TRACE_METRICS=true
# STREAM_TTFB_TIMEOUT_SECONDS=0
# STREAM_STALL_TIMEOUT_SECONDS=0
# STREAM_HEARTBEAT_INTERVAL_SECONDS=0
# STREAM_HEARTBEAT_SECONDS=0 # Legacy alias
# STREAM_CANCEL_UPSTREAM_ON_DISCONNECT=true

# --- Advisory Model Pricing ---
# Per-token advisory prices used only when providers do not report actual cost.
# Precedence: skip-cost provider setting > provider-reported cost/SSE cost event
# > provider explicit pricing > env pricing > JSON pricing > LiteLLM metadata.
# Streaming providers can report actual cost with `: cost {...}` comments or
# `event: cost` frames.
# Env names sanitize provider/model by replacing non-alphanumerics with `_`.
# MODEL_PRICE_OPENAI_GPT_5_1_INPUT=0.000001
# MODEL_PRICE_OPENAI_GPT_5_1_OUTPUT=0.00001
# MODEL_PRICE_OPENAI_GPT_5_1_CACHE_READ=0.0000001
# MODEL_PRICE_OPENAI_GPT_5_1_CACHE_WRITE=0.000001
# MODEL_PRICE_OPENAI_GPT_5_1_REASONING=0.00001

# ------------------------------------------------------------------------------
# | [ADVANCED] HTTP Timeout Configuration |
# ------------------------------------------------------------------------------
Expand Down Expand Up @@ -384,3 +545,11 @@
# Set to "0" to show these warnings (useful for debugging).
# Default: "1" (suppress warnings)
# SUPPRESS_LITELLM_SERIALIZATION_WARNINGS=1

# Transaction logging tier: 1 = boundaries+metadata (default), 2 = + intermediates, 3 = reserved for verbose per-frame (currently behaves as 2)
# TRANSACTION_LOG_LEVEL=1
# Max transaction directories kept (L1 retention bound)
# TRANSACTION_LOG_RETENTION=1000

# WebSocket Mode for the Responses API (/v1/responses upgrade): connection lifetime limit in seconds (default 3600 = 60 minutes)
# RESPONSES_WEBSOCKET_MAX_CONNECTION_SECONDS=3600
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,5 @@ cache/antigravity/thought_signatures.json

# locally rendered assembled agent prompts (generated, not source)
.github/prompts/rendered/

/store/
Loading