Update Pi to ^0.87.0 #26
Loading…
Reference in a new issue
No description provided.
Delete branch "renovate/pi"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
^0.84.0→^0.87.0^0.84.0→^0.87.0^0.84.0→^0.87.0^0.84.0→^0.87.0Release Notes
earendil-works/pi (@earendil-works/pi-agent-core)
v0.87.1Compare Source
v0.87.0Compare Source
Breaking Changes
Removed
AgentOptions.shouldStopAfterTurnandAgentLoopConfig.shouldStopAfterTurn. UsefinishTurnand return{ action: "end" }to stop after the completed turn:finishTurnruns after the assistant and all tool results are finalized but beforeturn_end; its decision is applied afterturn_end. It also runs for error and aborted responses, whose decisions are ignored because those responses remain hard exits. The guard in the migration preserves the old hook's normal-response-only invocation, including avoiding predicate side effects on hard exits. Returning{ action: "end" }leaves steering and follow-up queues untouched and skipsprepareNextTurn.Added
prepareRequest, which runs before every provider request, including the first. For example, return{ context: { ...context, messages: persistedMessages } }to install canonical context after already-selected input is emitted without introducing another queue poll.finishTurn, which runs after assistant/tool-result finalization and beforeturn_endfor normal, error, and aborted responses. Return{ action: "end" }to end a normal run afterturn_end, orundefinedto preserve normal scheduling.{ action: "continue" }ensures one next provider request: existing tool-result, steering, or follow-up scheduling can satisfy that request without adding another one; otherwise the loop makes one context-only request. Error and aborted responses remain hard exits.Agent.peekQueuedMessages()to preview the next queue-selected batch without consuming it.Fixed
GIFas images (#9755).v0.86.1Compare Source
v0.86.0Compare Source
v0.85.1Compare Source
v0.85.0Compare Source
Fixed
earendil-works/pi (@earendil-works/pi-ai)
v0.87.1Compare Source
Added
Fixed
v0.87.0Compare Source
Added
Fixed
v0.86.1Compare Source
Added
Fixed
Prompt too longerrors not being recognized as context overflow (#9805).v0.86.0Compare Source
Breaking Changes
ProviderStreamsandStreamFunctioninputs fromContextto normalizedTranscriptContextvalues. System prompts and tool declarations now live in transcript system messages; custom providers must read them withgetCurrentSystemPrompt()andgetCurrentTools(). See System Messages.ToolCall.argumentsandToolResultMessage.detailsto JSON-compatible values, changedToolResultMessageinto a conditional type, and madeJsonValuearrays readonly.Added
ToolSearchortool_searchas the loader name for prompt-prefix deferral (#9323).RetryPolicy.maxAgentDelayMssupport to cap shared assistant retry backoff for summarization calls (#8826).Model.promptCachelifetime metadata for short and long retention tiers to support prompt-cache warming decisions (#9668).Fixed
EventStreamevents (#9055).reasoning_effortfor all reasoning-capablemistral-medium-*model IDs instead of the unsupportedprompt_mode(#8700).x-opencode-sessionfromsessionIdacross all supported API adapters (#9326).x-session-idfromsessionIdfor Chat Completions and Anthropic Messages models when prompt caching is enabled (#9102).deepseek-flashfor DeepSeek V4.1 Flash instead of retired Flash aliases, and refreshed DeepSeek pricing metadata (#9423).reasoning_effortinstead of the ignoredprompt_mode(#9375).sessionIdfor automatic prompt-cache routing (#9629).Removed
v0.85.1Compare Source
Added
Fixed
prompt_cache_options.ttl: "30m"instead ofprompt_cache_retention: "24h".v0.85.0Compare Source
Breaking Changes
createGatewayBindingFetch()withcreateAiBindingFetch()for Cloudflare Workers AI bindings. Configure the model's Workers AI Gateway passthroughbaseUrldirectly; requests now pass through the binding unchanged (#8287 by @Maximo-Guk).Added
AssistantMessageFrameEncoderandreduceAssistantMessageFrames().vllmPriorityOpenAI-compatible model setting for forwarding scheduler priority to vLLM (#9004 by @AppleDannyClegg).supportsMaxOutputTokensOpenAI Responses compatibility setting (#8941 by @scturtle).uuidv7()for follower IDs.api,providers, andutilssubpath exports for direct imports without loading the package barrel.Fixed
JsonValuetype directly.NO_PROXYmatching for both root domains and subdomains (#8737 by @MeiSiristhebest).earendil-works/pi (@earendil-works/pi-coding-agent)
v0.87.1Compare Source
New Features
Added
Changed
Fixed
--modevalues being silently ignored instead of reporting an error and exiting with a nonzero status (#9045).v0.87.0Compare Source
New Features
context_with_systemfor per-request system-message transformations. Seecontext_with_system.read, and tool-result images. See Image Input Limits.Breaking Changes
shouldStopAfterTurnagent option. UsefinishTurnand return{ action: "end" }instead.finishTurnruns beforeturn_endbut applies the decision afterward, and it also receives error and aborted responses; migrate normal-response predicates by returningundefinedfor those hard exits. See the@earendil-works/pi-agent-corechangelog for a complete before-and-after example.ContextEditEntryto the exportedSessionEntryunion. TypeScript consumers with exhaustive entry switches must handlecontext_edit; usereplacement: nullfor omission and a content replacement otherwise.SessionManagercanonical forAgentSessionprovider context. Assigningsession.agent.state.messagesno longer replaces future request history; restore withSessionManager.inMemory(cwd, { id }, entries), navigate withsession.navigateTree(), or append throughsession.sessionManagerand callsession.refreshContext().TurnEndEventwith required boundary fields and addedAgentBeforeSettleEventto the exportedExtensionEventunion. Consumers constructing events or exhaustively switching onExtensionEventmust handle the new shapes.ExtensionRunner.emit()no longer acceptsturn_end; host integrations dispatch actionable boundaries withemitBoundary(baseEvent, buildContext).agent_settledhandlers until all settled handlers finish. Handlers still observectx.isIdle() === true, but no longer see a reentrantagent_startduring the same notification dispatch.Added
sessionManager.appendContextEdit(entryId, null)omits one message from future provider context without changing raw history, usage, or UI history.turn_endandagent_before_settleextension boundaries. Return{ entries: [...event.entries, draft], continue: true }to persist structural entries in order and ensure one next provider request without changing steering or follow-up scheduling.sessionManager.appendCompaction(summary, null, tokensBefore)stores the compaction's own ID as its kept boundary.context_with_systemextension event, which runs aftercontexthandlers on the full transcript including system messages and sends its result verbatim. Seecontext_with_system.inputLimits.images.resizeinmodels.json, applied to file attachments, image reads, and tool-result images (#9631).Fixed
contexthandlers that filter or slice messages dropping the prompt and tool declarations, which after extension-driven compaction left requests without built-in tools or made Codex emit raw tool-call text. Handlers no longer see system messages; Pi restores the prompt and tool state after they run. Seecontext(#9789, #9822)./bugallowing uploads in offline mode while preserving local zip exports (#9841 by @christianklotz).GIFbeing misclassified as images and omitted fromreadand CLI@fileinput (#9755).v0.86.1Compare Source
New Features
/login metaor useMETA_API_KEYto access Muse Spark models. See Meta (Muse subscription).Added
/login metawith automatic Model API key refresh, plusMETA_API_KEYsupport (#9096 by @xl0).Changed
Fixed
/bugdescriptions dropping line breaks from pasted diagnostics./bughints appearing for user cancellations and retryable provider failures such as service unavailability.Prompt too longerrors not being recognized as context overflow (#9805).v0.86.0Compare Source
New Features
/bugusing redacted diagnostics, optional transcripts, or exported ZIP archives. See Reporting Bugs.before_agent_start.Breaking Changes
Contextto normalizedTranscriptContextvalues. Custom providers must read system prompts and tool declarations fromcontext.messageswithgetCurrentSystemPrompt()andgetCurrentTools(). See Custom Streaming API.ToolCall.argumentsandToolResultMessage.detailsto JSON-compatible values, changedToolResultMessageinto a conditional type, and madeJsonValuearrays readonly.user_bashnow fails closed: errors or invalid defined results abort the command without invoking later handlers or executing locally. Returnundefinedto continue propagation; otherwise return{ operations }or{ result }(#9068).Added
before_agent_startand Entry Types (#9548).ToolSearchortool_searchas the loader name for prompt-prefix deferral (#9323).ctx.modelRegistry.stream()andstreamSimple()for extension model calls through configured providers with resolved authentication (#8964).reserveTokensandkeepRecentTokenssettings throughcompaction.modelOverrides, with ordinary compaction settings as fallback (#8133).compat.allowedFallbackModelsconfiguration for overriding or disabling Anthropic server-side fallback models (#9294).pi.on()so extensions can drop event handlers. Handlers added or removed during a dispatch apply to later dispatches, not the current one (#8967)./bug [description]to report a bug to the Pi developers. The report bundles environment, model, provider, extension, and settings metadata (secrets redacted), assistant message diagnostics from the session, optionally the session transcript, or a model-written summary of what went wrong instead. It is uploaded to Radius (no login required; attributed when logged in) or exported as a zip archive, and the report id is recorded in the session as api.bug-reportentry. Crashes are recorded in~/.pi/agent/crashes.json, announced once on the next start, and attached to the next report; unexplained errors and exhausted retries point at/bugonce per session./sessiondiagnostics, transcript notices, and thecache_warming_decisionextension event. See Cache Warming (#9668).Changed
--resumesession results appear progressively, using file modification times to prioritize all-folder loading and cancelling outstanding transcript reads after selection.--continuestartup time by checking candidate session headers in modification-time order and stopping after the newest matching session.read,bash,powershell,edit, andwritetools, without requiringPI_EXPERIMENTAL. Extensions can re-register tool definitions withconstrainedSampling: false.Fixed
EventStreamevents (#9055).reasoning_effortfor all reasoning-capablemistral-medium-*model IDs instead of the unsupportedprompt_mode(#8700).x-opencode-sessionfromsessionIdacross all supported API adapters (#9326).x-session-idfromsessionIdfor Chat Completions and Anthropic Messages models when prompt caching is enabled (#9102).deepseek-flashfor DeepSeek V4.1 Flash instead of retired Flash aliases, and refreshed DeepSeek pricing metadata (#9423).reasoning_effortinstead of the ignoredprompt_mode(#9375).sessionIdfor automatic prompt-cache routing (#9629).retry.maxAgentDelayMs(60s by default) so long retry runs stay responsive during prolonged transient outages (#8826).steerandfollow_upcommands bypassing extensioninputhandlers (#8718).balanced, falling back to the first available Radius model when needed.before_agent_starthandlers returningsystemPrompt(andforceSystemPrompt) on models with mid-conversation system messages: the forced prompt is now sent as the provider's leading system prompt instead of being appended as a section patch after the original prompt.enable_thinkingchat templates ignoring Pi's thinking level (#9528).skill:prefix instead of the bare skill name (#9120 by @yearth).caseslayouts around surrounding equations, and vertically laid out unsupported and nested display scripts (#8827, #9564, #7929).Removed
v0.85.1Compare Source
New Features
Added
Fixed
clientandexperimental/pluginsubpaths and server/client commands are now source-only throughpi-test.sh; the supported local SDK and stdio RPC API are unchanged (#9132).prompt_cache_options.ttl: "30m"instead ofprompt_cache_retention: "24h".v0.85.0Compare Source
New Features
Added
SessionManager.inMemory()support for restoring externally managed session entries (#8980 by @y-nk).vllmPriorityandsupportsMaxOutputTokensmodel settings for vLLM scheduler priority and OpenAI Responses output-token limits (#9004 by @AppleDannyClegg, #8941 by @scturtle).tui.altScreen.bottomshortcut to the fullscreen transcript while it is scrolled up (#9080 by @rwachtler)./login metawith automatic Model API key refresh, plusMETA_API_KEYsupport.Changed
Fixed
fdand ripgrep downloads on Linux musl systems (#9070 by @Charlie0113-T)./model(#9093 by @Jaaneek).@earendil-works/pi-coding-agent/clientcompatibility entry point.NO_PROXYmatching for root domains and subdomains (#8737 by @MeiSiristhebest).bash,edit,find,grep,ls,read, andwritetools ignoringctx.cwd(#8627 by @vmizg).SIGWINCHself-signal (#8898 by @bartlomiejkida).fdand ripgrep downloads requiring the GitHub Releases API (#8708 by @Terminator666666).abortreporting success without cancelling an in-progress manual compaction (#8920).earendil-works/pi (@earendil-works/pi-tui)
v0.87.1Compare Source
v0.87.0Compare Source
v0.86.1Compare Source
v0.86.0Compare Source
Added
getNativeClipboard()API, replacing the external native clipboard dependency in consumers (#9163).Changed
Fixed
caseslayouts around surrounding equations, and vertically laid out unsupported and nested display scripts (#8827, #9564, #7929).skill:prefix instead of the bare skill name (#9120 by @yearth).v0.85.1Compare Source
Added
Fixed
v0.85.0Compare Source
Breaking Changes
setClearOnShrink().PI_DEBUG_REDRAWis nowPI_TUI_DEBUG_REDRAW; debug and crash log filenames now use thepi-tui-prefix. When no log directory is supplied, redraw logging is disabled and crash dumps are written to the OS temp directory. (#8699 by @geraschenko)Added
TuiAltScreenscrollToEndIndicatoroption that renders a clickable jump-to-end label on a follow-end primary scroll view while it is scrolled away from the end (#9080 by @rwachtler).Changed
Loaderanimation and editor integration to support embedded working indicators (#8799 by @cristinaponcela).Fixed
SIGWINCHself-signal (#8898 by @bartlomiejkida).Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR has been generated by Mend Renovate CLI.
eda0b89e8f558c691568Update Pi to ^0.85.0to Update Pi to ^0.86.0558c691568496143a81dUpdate Pi to ^0.86.0to Update Pi to ^0.87.0View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.