Releases: experientiallabs/experiential
Release list
experiential v0.7.17
Highlights
Prompt caching restored through the gateway (#703 — missed the v0.7.16 tag point): block-level cache markers (Claude Code marks system blocks and the trailing tool result) carry end to end on Anthropic rungs; gateway sessions previously ran fully uncached (~10× input billing, worse TTFT). cache_creation_input_tokens is now reported to callers; marked-system separator fidelity is byte-pinned.
Acceptance: real two-turn Claude Code session — turn 1 cache_creation=45,543, turn 2 cache_read=45,543, input_tokens=3.
Recorded owner follow-up: provider cache-write premium (1.25×) and read discount (0.1×) remain unmodeled in the price schema (same class as the per-search fee).
Ships experiential 0.7.17 + exp-gateway-native 0.3.13.
experiential v0.7.16
Serve Azure AI Foundry Claude (Cloud Opus 4.6) over the native Anthropic Messages wire (/anthropic/v1 + Bearer); a known Anthropic model on an azure connection routes to AnthropicClient, mixed Foundry connections route per model. Python-only; exp-gateway-native unchanged. See #702.
experiential v0.7.15
Highlights
reasoning.summaryserves on Anthropic rungs (#700): the Responses-API selector no longer requires every rung in a route to be a native OpenAI Responses deployment. Anthropic rungs qualify (Claude thinking already projects into summary parts on the way out), so Claude routes narrow to the Anthropic rung instead of rejecting route-wide; a 400 remains only when no rung can produce reasoning. Fixes the OpenCat-on-Opus-5 mobile report.- (Included since v0.7.14's tag point) Prompt-cache marker survives mixed waterfalls (#699): the top-level cache marker was dropped route-wide when any fallback rung couldn't use it — ~10× uncached billing on affected traffic.
Ships experiential 0.7.15; exp-gateway-native unchanged.
experiential v0.7.14
Keep the prompt-cache marker on a mixed waterfall so a Claude request with a non-Anthropic fallback rung no longer bills every turn's full context uncached (~10x). Python-only; exp-gateway-native unchanged. See #699.
experiential v0.7.13
Highlights
Anthropic server tools end to end — the WebSearch release (#690), live-verified by three independent captures:
web_searchtool entries decode and forward verbatim on native Anthropic rungs (all three GA versions); routes that cannot execute them reject by name. Accept/reject tables carry probe-cited rationale.- Full response fidelity:
server_tool_use,web_search_tool_result, and cited text stream to callers intact and echo back on turn 2 byte-faithfully;pause_turnis a first-class terminal. - Billing fix: terminal
message_deltausage supersedesmessage_starton all three input legs — search-augmented turns undercounted billed input ~5.5× (observed live twice independently). - ToolUnionParam drift gate: every SDK tool variant is a recorded decision; documented fast-follows: web_fetch, bash, text_editor, memory (live-evidenced cheap accepts); max_uses-exhaustion error-object noted as an unpinned shape.
- Platform follow-up (owner decision pending): the $10/1k per-search provider fee is not yet customer-billed;
usage.tool_namescarries the per-invocation signal.
Ships experiential 0.7.13 + exp-gateway-native 0.3.12.
experiential v0.7.12
Class an unavailable Responses continuation as a client failure (INVALID_REQUEST), not internal, so a caller resend-the-conversation 400 no longer pages the internal-error alert. Python-only; exp-gateway-native unchanged at 0.3.11. See #688.
experiential v0.7.11
Restore native TTFT capture: the Rust data plane now emits first_token_at in its settle payload (regressed to 0% at the Python→Rust cutover on 08-27). Ships exp-gateway-native 0.3.11 and experiential 0.7.11. See #687.
experiential v0.7.10
Highlights
- Anthropic tool-definition annotations accepted and forwarded (#685):
eager_input_streaming— hit by a real Claude Code session in production — plusstrict,defer_loading,input_examples, andallowed_callerson tools, and top-levelinference_geo; all live-verified as bare-accepted at api.anthropic.com (fine-grained tool streaming is GA — no beta header). Forward verbatim on anthropic rungs, validate-and-drop withignored_parametersdisclosure elsewhere; digest-excluded with replay-identity folding per the established carrier precedent. Top-level and tool-definitioncache_controlforward as cost-only hints.user_profile_id(needs an unGA'd beta) and fallback tokens stay conscious rejections with written rationale. - Anthropic-SDK drift gate (#685): the anthropic SDK joins the dev extra and CI fails by name on any future unclassified tool-level or top-level field — closing the discover-by-broken-chat loop for the Messages surface, matching the OpenAI-surface gate from #649.
- Decode errors on this path state expected-vs-got.
Ships experiential 0.7.10; exp-gateway-native stays 0.3.10 (python-only release).
experiential v0.7.9
Ships #683: the native Anthropic dialect no longer emits an empty text content block for an assistant tool turn with content:"" (OpenCode's shape), which Anthropic 400s — unblocking Opus 5 tool threads on the native route. Also includes #682 (Azure API-surface inference). Publishes to PyPI via the release workflow (OIDC).
experiential v0.7.8
Highlights
The Claude Code-activation release — plus honest long-context pricing and timeouts.
- Conditional Claude Code fields served (#679):
diagnostics(beta cache-diagnosis-2026-04-07) andspeed: "fast"(beta fast-mode-2026-02-01) forward on anthropic rungs behind their live-verified beta headers, disclose-and-drop elsewhere; tool-description caps raised to 64k (the previous 8k cap rejected real Claude Code toolsets); calleranthropic-betatokens forward via a strict allowlist (context-1m,interleaved-thinking, + per-field tokens) with repeated header lines joined per spec — a dropped duplicate line could silently lose the 1M-context token.threadstays a conscious rejection (server-held conversation state cannot be proxied statelessly). - Tiered long-context pricing schema (#680):
GatewayTokenPrices.long_context— whole-request input-threshold repricing (Gemini Pro's published 200K tiers are the live consumer; Anthropic 4.6+ serves the full 1M window at flat standard pricing per its published schedule). Reservation is tier-aware via the byte bound; attempt rows freeze tier rates (SQLite schema v13); settlement selects by actual input tokens. Boundary pinned at 199,999/200,000/200,001. - Input-scaled first-byte allowance (#680): TTFB = 15s base + 240s per ~1M input tokens, per-deployment overridable. Acceptance: a 942,875-token claude-fable-5 request completed through a served gateway in 13.3s and settled to the micro-dollar against the published flat schedule.
Ships experiential 0.7.8 + exp-gateway-native 0.3.10.