Release notes
Oh My Pi v18.11.2
@oh-my-pi/pi-agent-core
Added
agent_startcarriesresumedToolCallIdswhen a continued run first executes the calls of an unpaired assistant tail
Fixed
- Cancelling an
askafter a background job finishes now reports the user cancellation instead of telling the model to retry a skipped tool (#15985)
@oh-my-pi/pi-ai
Breaking Changes
resolveGatewayApiKeyandbuildGatewayApiKeyResolver(@oh-my-pi/pi-ai/auth-gateway) take the request's route options ({ storage, client? }) instead of anAuthStorage, their resolver callback receives the resolved credential, andresolveGatewayAccounttakes that credential (#15900 by @alphastorm)
Added
- Added scoped clients to
startAuthGateway(clients,setClients): each client bearer is limited to its own models and OAuth accounts, with no fallback to other accounts or API keys, and request log lines name the client and the credential a request started on (#5098, #15900 by @alphastorm) - Added experimental native image judgments for TypeSafe Jev's
jev-latest,jev-preview,jev-1.13.0, andjev-1.14.0, plus OpenRouter'stypesafe/jev-1.13,typesafe/jev-1.14, and~typesafe/jev-latestmodels; images outside Jev's documented size bounds fall through to a vision chat judge instead of failing (#15887 by @anatoli-tsinovoy)
Fixed
- Fixed error results from non-first-party providers regaining partial output the provider had discarded; an error with empty content now stays empty (#14516, #14572 by @oleg494)
- Fixed the auth gateway's
POST /v1/audio/speechanswering 502 for requests the speech adapter rejects (unsupported format, over-long input); they now get 400invalid_request_error(#14508 by @F0Rextasy) - Fixed a single-string tool call with two or more mislabelled string fields silently dispatching whichever field came first in the JSON; such ambiguous calls now fail validation and the model sees its own arguments back (#14414 by @F0Rextasy)
- Fixed GLM-5.2 on Ollama Cloud losing its reasoning between turns; Ollama Cloud now keeps assistant thinking in history for models verified to accept it (#14440 by @Dante-dan)
- Fixed GPT Image generation and edits failing on gateways that validate request parameters, such as LiteLLM;
response_formatis no longer sent to GPT Image models (#14619 by @jimhester) - Fixed OpenRouter errors such as "Access denied by security policy" dropping the routed upstream's own explanation from
error.metadata.raw(#10906, #14435 by @F0Rextasy) - Fixed GitHub Copilot usage reporting an AI-credit allowance as "Premium Requests" in request units; the unit each billing item reports is now honoured (#13849, #14501 by @F0Rextasy)
- Fixed an OpenAI-compatible server's
finish_reason: "repetition"orstop_reason: "repetition_detected"not being treated as a thinking loop, so the degenerate partial reasoning was kept and replayed into the next turn (#12525, #14535 by @F0Rextasy)
@oh-my-pi/pi-catalog
Added
- Added
keep-bundled-namescatalog attribute to preserve static model display names during discovery - Updated
openai-codexprovider configuration to prevent model name regressions during live discovery
Changed
- GPT Image models (
gpt-image-*,chatgpt-image-*) now classify as their owngpt-imagefamily instead ofgptorchatgpt, so GPT chat-model rules no longer apply to them (#14619 by @jimhester)
Fixed
- Fixed OpenCode Zen Gemini 4 Argon failing with an unsupported protocol; it now uses the native Gemini endpoint (#15977).
@oh-my-pi/pi-coding-agent
Added
- Added
lsp.requestTimeoutsetting to configure wait durations for language server diagnostics and requests - Added
omp auth-gateway serve --clients=<file>: per-client bearer tokens, each limited to listed models and broker OAuth accounts with no fallback to other accounts or API keys, re-read while serving (#5098, #15900 by @alphastorm)
Changed
- The
lsptool now useslsp.requestTimeoutto dynamically adjust both call deadlines and project-aware diagnostic wait times, with support for per-call overrides - Reduced CPU overhead during syntax checks and automatic edit repairs (#15904 by @iliaal).
- Reduced status-line refresh overhead while subagents have long conversations (#15874 by @iliaal).
- Agents now send
todoupdates alongside their next tool call instead of spending a separate model turn on them (#15402 by @will-bogusz) - The Shared Language Servers setting now says what it does: each connection gets its own server, and a released one is reused while another omp instance keeps the project's mux running (#14633 by @jorgoose)
- Memories saved explicitly through the extension
memory.saveAPI are now stored asstatedrather thanunknown, so they rank as deliberate memories in Mnemopi recall (#13824 by @sjawhar)
Fixed
- Fixed prewalk switching models during read-only MCP lookups through
write xd://when the server marks the tool read-only (#15994) - Fixed Ctrl+C printing
9;5uin the shell after force-quitting omp with a third Ctrl+C while it was still closing the session - Fixed Smart unexpected-stop recovery continuing finished answers, which added extra "nothing more to add" turns
- Fixed
grepsearching only the first 4 MB of a file named directly, so later matches were reported as absent; the whole file is now searched, and a multiline pattern, which still reads only the first 4 MB, says so in its no-match headline (#15942) - Fixed browser
uploadFile
…