Release notes
Oh My Pi v18.10.3
@oh-my-pi/pi-agent-core
Breaking Changes
- Removed
estimateImageContentTokens()from@oh-my-pi/pi-agent-core/image-tokens; useTokenizer.imageTokens(size, detail), which prices with the reading model's catalog image rule (#15446 by @will-bogusz) applyShakeRegion()andapplyShakeRegions()take the replacement's token count (replacementTokens); a block rewrite of an assistant turn adds the tokens it removes toelidedOutputTokens, so a replayed Claude turn's count stays lowered after a reload (#15446 by @will-bogusz)
Fixed
- Fixed Claude context counts reading Opus 5.5 requests about 55% over their billed input: a replayed thinking turn now counts at the output size Claude billed for it, not its signature's bytes (#15446 by @will-bogusz)
- Fixed screenshots and other non-frame images being counted at the OpenAI rate for every model instead of the reading model's own; Claude billed them about 16% higher (#15446 by @will-bogusz)
- Fixed OpenAI Responses and Codex context estimates leaving out replayed reasoning: each turn whose encrypted reasoning actually replays now counts its reported reasoning tokens (its ciphertext when the backend reports none), and none while a cold session rebuilds it out of the request, so compaction and snapcompact sizing match billing; branch summaries no longer budget for encrypted reasoning they never send (#15447 by @will-bogusz)
@oh-my-pi/pi-ai
Breaking Changes
isOfficialCodexApiUrlmoved from@oh-my-pi/pi-aito@oh-my-pi/pi-catalog/wire/codex, next toCODEX_BASE_URL, so the catalog's compat resolver classifies Codex endpoints with the same check (#15434 by @will-bogusz)
Added
- Added
withoutUnverifiedThinkingutility to filter reasoning capability from models when no effort is requested - Added
reachesOfficialEndpoint(model): whether a request to the model reaches the official endpoint its compat was built for, followingANTHROPIC_BASE_URLand Foundry'sFOUNDRY_BASE_URLreroutes of first-party Anthropic models (#15434 by @will-bogusz) - Added
AssistantMessage.elidedOutputTokens, the visible output tokens a history rewrite (shake) has removed from the turn, whichusage.outputstill counts (#15446 by @will-bogusz) - Exported
shouldDropTruncatedThinkingOnlyAssistantfromproviders/transform-messages,isColdReplayableResponsesTurnfromproviders/openai-sharedand the newopenAIResponsesReplaysNativeHistoryfromproviders/openai-responses, so local token estimates can follow which turns replay drops and whether a session replays native history (#15447 by @will-bogusz)
Fixed
- Fixed Claude on Google Antigravity failing every turn with "image exceeds 5 MB maximum" once a large image entered the conversation; images are now downscaled to the host's limits before sending, as on the Anthropic API (#15444 by @will-bogusz)
@oh-my-pi/pi-catalog
Breaking Changes
resolveInlineImageByteBudget(model, officialEndpoint)andresolveImageCountBudget(model, officialEndpoint)take whether the request reaches the official endpoint instead of readingcompat.officialEndpoint, which misses request-time reroutes such asANTHROPIC_BASE_URL; pass pi-ai'sreachesOfficialEndpoint(model)(#15434 by @will-bogusz)
Added
- Added Muse Wonder (
muse-wonder-1.0) to Meta and Muse Code with itsminimal–maxeffort ladder and pricing - Added the
thinking-unverifiedrule axis: on hosts whose model list carries no capability metadata (Meta, Muse Code), unrecognized models now offer an opt-in thinking ladder (ThinkingConfig.unverified) instead of none - Added
thinking-unverifiedaxis for offering reasoning ladders on unclassified model IDs - Added
Muse Wonder 1.0model definition to Meta provider - Added the opt-in
snapcompact-image-readsaxis: snapcompact images a freshreadresult only for readers whose rule sets it; Claude Opus 5.5 and later opt in (#14249 by @will-bogusz) - Added the
image-count-budgetrule for how many images one request may carry (Anthropic 90, Codex 200, other hosts unchanged) and theofficial-image-count-budgetoverride that applies only on the official endpoint: Anthropic 600 (100 on 200k-window Claude models), Codex 2,000 (#15434 by @will-bogusz) - Added a 24 MB inline-image byte budget for the Codex backend, which now counts as its official endpoint at its default URL and at paths under it such as
/codex/responses(#15434 by @will-bogusz) - Added
isOfficialCodexApiUrltowire/codex, moved from pi-ai (#15434 by @will-bogusz) - Added
verifiedtoimage-tokenizationrules, marking the Claude 4.7+ high-res tier and the GPT-5.5 to 6.1 and gpt-6-astra rules as matching measured provider billing (#15442 by @will-bogusz) - Added the
image-max-edgeaxis andresolveImageMaxEdge()for hosts that shrink images before the model reads them; Cursor's Claude and GPT models and itsdefault(Auto) route fit 1024×1024 (#15448 by @will-bogusz) - Added the
thinking-replay-tokensaxis; Claude lines set it tooutputon every host, since a replayed signed thinking block bills the turn's full reasoning, not the signature's bytes (#15446 by @will-bogusz) - Added a KDL opt-in for sibling subagent prompt-cache sharing, enabled for Muse Code's Spark 1.3, Wonder 1.0, and Wonder Full 1.0 variants over the Responses API (#15467 by @iliaal)
Changed
- Updated model definitions and compatibility rules for provider metadata
- Google Antigravity, xAI and Cursor requests keep up to 60 images, 20 for Claude on Antigravity and Cursor, up from 5; this counts snapcompact frames and live screenshots together (#15449 by @will-bogusz)
- Snapcompact sizes archives at the frame prices measured for Antigravity Gemini (a fixed 1,089 tokens), Grok 4.6 to 4.20, and Claude Sonnet 4.6's standard tier (#15449 by @will-bogusz)
Fixed
- Applied
max-image-dimension
…