Skip to content

Releases: experientiallabs/experiential

experiential v0.7.17

Choose a tag to compare

@SilenNaihin SilenNaihin released this 01 Sep 10:20
c86f535

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

Choose a tag to compare

@SilenNaihin SilenNaihin released this 01 Sep 02:31
840c69b

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

Choose a tag to compare

@SilenNaihin SilenNaihin released this 01 Sep 01:04
bb619cc

Highlights

  • reasoning.summary serves 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

Choose a tag to compare

@SilenNaihin SilenNaihin released this 31 Aug 18:53
ac4ef4d

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

Choose a tag to compare

@SilenNaihin SilenNaihin released this 31 Aug 16:44
7ac1186

Highlights

Anthropic server tools end to end — the WebSearch release (#690), live-verified by three independent captures:

  • web_search tool 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_turn is a first-class terminal.
  • Billing fix: terminal message_delta usage supersedes message_start on 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_names carries the per-invocation signal.

Ships experiential 0.7.13 + exp-gateway-native 0.3.12.

experiential v0.7.12

Choose a tag to compare

@SilenNaihin SilenNaihin released this 31 Aug 14:59
fdda366

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

Choose a tag to compare

@SilenNaihin SilenNaihin released this 31 Aug 08:05
4ce1f30

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

Choose a tag to compare

@SilenNaihin SilenNaihin released this 31 Aug 01:22
20dee89

Highlights

  • Anthropic tool-definition annotations accepted and forwarded (#685): eager_input_streaming — hit by a real Claude Code session in production — plus strict, defer_loading, input_examples, and allowed_callers on tools, and top-level inference_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 with ignored_parameters disclosure elsewhere; digest-excluded with replay-identity folding per the established carrier precedent. Top-level and tool-definition cache_control forward 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

Choose a tag to compare

@SilenNaihin SilenNaihin released this 30 Aug 20:15
0910049

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

Choose a tag to compare

@SilenNaihin SilenNaihin released this 30 Aug 16:30
94f36c5

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) and speed: "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); caller anthropic-beta tokens 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. thread stays 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.