Repository navigation
Update dependency @earendil-works/pi-coding-agent to v1 - #83
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/earendil-works-pi-coding-agent-1.x
branch
3 times, most recently
from
October 20, 2026 09:44
d9bcebd to
1a739cb
Compare
renovate
Bot
force-pushed
the
renovate/earendil-works-pi-coding-agent-1.x
branch
from
October 21, 2026 00:36
1a739cb to
620f1cf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
^0.99.1→^1.0.0Release Notes
earendil-works/pi (@earendil-works/pi-coding-agent)
v1.3.0Compare Source
New Features
/shareuploads:sessionShareDestinationselectsauto,gist, orradius. See Sessions and context and Export or share a session.models.jsonbase URL overrides must now include/v1. See Providers.--tools +name/-nameapplies on top of them. See Tools.Added
sessionShareDestinationsetting to choose automatic, GitHub gist, or Radius uploads for/share(#10870 by @vegarsti)Changed
kimi-codingprovider to use OpenAI Chat Completions athttps://api.kimi.com/coding/v1, the protocol used by the official Kimi Code client. K3, K3-256K, and Kimi For Coding now accept tools added mid-conversation without invalidating the prompt cache.models.jsonoverrides of thekimi-codingbase URL must now include/v1(#10720)Changed
nvidia/nemotron-3.5-super-vl-120b-a12b(#10910 by @cv)Fixed
--tools +name/-nameentries applied to them, unless--toolswith tool names,--no-tools, or--no-builtin-toolsselects tools explicitly (#10785)--modelchoosing a provider by catalog order when several providers offer the match; Pi now prefers the provider with credentials and otherwise reports the ambiguity.--modelsandenabledModelsadd a model for each provider that offers it and warn about the ambiguity (#10160)readline-range labels for numeric-string or null arguments in the TUI, session tree, HTML exports, and examples (#9887)PATH, which made bash tool shells use Pi's Node instead of the user'snode/npm. Pi's Node is now only a fallback (#10519)""or''), which shifted later positional arguments and prevented positional defaults from applying (#10867)\uescape such as\usepackage(#10868)opencode.ai/inferenceendpoints, and added Google Generative AI support to the OpenCode Go providerUnable to forward upstream streamerrors (#10920)The service is temporarily unavailableerrors, which also made compaction fail on the first attempt (#10965)minimalthinking level; they now expose only theoffandhighlevels (#10818)openai-codex/gpt-6.1-solusing a 272K context window instead of the 500K window Codex now provides (#10840)offthinking level (#10753)done()of an extension'sctx.ui.custom({ overlay: true })closing the topmost overlay instead of its own, which left the finished overlay on screen and another extension's dialog unresolved (#10648, #10999 by @masonc15)v1.2.0Compare Source
New Features
models.json. See OpenRouter.$schematosettings.json,models.json, keybindings, and themes for editor validation and completion. See Settings, Models, Keybindings, and Themes.PI_CLIPBOARD_OSC52=1sends copied text to a remote client's clipboard when Pi cannot detect the remote session, such as a multiplexer attached from another machine. See Pi Process Configuration.before_agent_startfor extension-triggered runs: runs started bypi.sendMessage(..., { triggerTurn: true })go through the same setup as prompts. See Events and concurrency.Breaking Changes
https://pi.dev/schemas/*.schema.json. The theme schema moved tohttps://pi.dev/schemas/theme.schema.json; themes loaded during startup now receive the same schema validation as later reloads. Update theme$schemareferences, define reusable colors undervars, and remove unsupported metadata (#9880, #10751 by @christianklotz)before_agent_startto also fire for runs started bypi.sendMessage(..., { triggerTurn: true })while idle.BeforeAgentStartEventis now a union onmessageType:"user"events carrypromptandimages, and"custom"events carry the startingmessageand noprompt. Messages returned by handlers are added to both kinds of run, and pendingdeliverAs: "nextTurn"messages are delivered with the custom-message run. Handlers that should act only on user prompts must checkevent.messageType === "user"(#10267, #5581, #10739 by @davidbrai)before_agent_starthandlers:ctx.isIdle()is false,pi.sendMessage()queues into the starting run instead of starting a second run that failed with "Agent is already processing",pi.sendUserMessage()requiresdeliverAs, and an abort requested meanwhile aborts the run once it starts (#10739 by @davidbrai)pi mcp list --jsonto reportresources: truefor servers that offer resources instead ofresourcesandresourceTemplatescounts; Pi no longer lists resources when connecting (#10526)Added
reachesToolsto tool definitions, so tools that reach other tools (such ascodemodeandtool_search) declare which tools a call may reach; the MCP extension uses it to wait for the servers a call needs and to decide whether a replacementcodemodeortool_searchtool can reach MCP toolsaliasesto tool namespaces; codemode'sdescribeNamespace()and thenamespaceoption ofsearchTools()match them, and MCP namespaces use the server namemodels.json. The list is saved and used offline (#10353, #10672 by @davidbrai)PI_CLIPBOARD_OSC52=1to send copied text to the terminal with OSC 52 after the local clipboard write, so copies reach a remote client's clipboard when Pi cannot detect the remote session, such as multiplexer attaches from another machine or remote IDE daemons (#10826, #10835, #10114)Changed
showHardwareCursorsetting to use only the terminal cursor instead of also drawing Pi's reverse-video cursor@tags on property comments, so scripts see them without the tool repeating them in descriptions (#10707)content,structuredContent,isError) instead of referring toCallToolResult<T>, whichdescribeTool(),searchTools(), andALL_TOOLSshowed without defining it; the codemode description no longer includes the shared MCP typesserializeConversation()(compaction, branch summaries, bug reports) to omit thinking blocks; replayed thinking is often not in the live context, so including it could make a summarization request larger than the context it summarizes and failFixed
// @options:line that is not the first line of the script, which ran the script without the requestedtimeout_ms; the call now fails with an error before the script runs (#10631)AGENTS.mdin a git worktree nested inside its main repo causing no project context file to load (#10681)bashwith a nonzero exit)pi.sendMessage(..., { triggerTurn: true })removing system prompt sections added inbefore_agent_startafter their first tool call, which changed the prompt mid-run and broke the provider prompt cache twice per run (#10267, #10739 by @davidbrai)text()calls; joining the output items was quadratic (#10678)-p) exiting 0 without a warning when the final response was cut off at the model's output token limit; it now prints the partial text, writes a warning to stderr, and exits 1 (#10799)pi mcp login --helpand the CLI docs describing--timeoutas only the wait for the browser; it limits the whole sign-in (#10636)~not being expanded in!pattern,+path, and-pathentries of theextensions,skills,prompts, andthemessettings, so entries like!~/skills/pdfmatched nothing (#10765)/mcpandpi mcp listshow that a server offers resources instead of counting them (#10526)null, or a primitive, as MCP 2026-07-28 allows); codemode declarations of MCP tools without an output schema now typestructuredContentasunknowninstead of an object (#10416)auth.jsonon Windows failing withEPERMwhen the previous lock folder was still being deleted; Pi now retries briefly before reporting the error (#10801)openrouter/autoshowing a cost of -$1,000,000 per 1M tokens; OpenRouter's negative placeholder prices are now 0 (#10672 by @davidbrai)+orctrl++, not matching under the Kitty keyboard protocol or modifyOtherKeys (#9880 by @christianklotz)issparameter that could not be checked because no authorization server metadata was discovered; sign-in now fails with an issuer mismatch. Reported by @AizenvoltPrimenode --watchon Node 24 or 26 (#10725)Removed
src/experimental,src/cli/experimental) and its source-only./clientand./experimental/pluginexports; none of it was part of the published package. The@earendil-works/pi-client,@earendil-works/pi-protocol, and@earendil-works/pi-serverpackages it used are removed and no longer released@earendil-works/chordv1.1.0Compare Source
New Features
anthropic/claude-haiku-5-5, with adaptive thinking up toxhigh/maxeffort.+name/-name:--toolsentries likepi -t +codemode,-writechange the default selection instead of replacing it. See Tools.models.classify()accepts images for classifiers that support them. See Use classifier models./v1/systemone. See Classification.Added
+nameand-nameentries to--tools, which change the default tool selection instead of replacing it, for examplepi -t +codemodedurationMsto the tool render context and totool_execution_endextension events: the recorded execution time of a final tool result (#10549)outputPadto the tool render context (#10557 by @rwachtler)OPENAI_API_KEY(see Use classifier models)imagesto codemode'smodels.classify()context, so classifiers that accept images, such as GPT-6 Luna, can judge themPI_PROGRAM_STATUS=1|0overrides detection (see Terminal setup) (#10607)abortedtoagent_settledsession, extension, and JSON events, so integrations can tell a cancelled run from a finished one (#10607)anthropic/claude-haiku-5-5), with adaptive thinking up toxhigh/maxeffort and prompt caching on Bedrock/v1/systemoneinstead of as chat models (see Classification) (#10382)Changed
outputPadto also apply to!command output, tool output, and summary blocks (#9946, #10557 by @rwachtler)pi mcp login --timeoutto limit the whole sign-in, including requests to the authorization server, instead of only the wait for the browser (#10565)Fixed
Tookafter reloading a session, and the liveTookincluding wall-clock steps; both now show the recorded execution time (#10549)pi updatenow keeps only the new release and the one it updated from (#10392, #10511 by @davidbrai).env,.env.local, and.env.developmentfrom the launch directory into Pi's environment (#10473)!!command headers losing their dim color once output arrives (#10557 by @rwachtler)searchTools(),describeTool(), anddescribeNamespace()as async, which led models to serialize the unawaited promise as{}(#10555)text()orconsole.log()output ended and the next began. With several text items, each now starts with a==> text N/M <==line, andconsolecalls follow the other output in one<console_output>block with one line per call/mcpwaiting for all servers to connect before opening; the manager now updates live and remains usable while enabling, reconnecting, or disabling servers (#10562)node --watchon Node 24.19+ and 26.x, where Node posts its own messages on the image resize worker channel (#10527)!and RPCbashoutput keeping fragments of color codes, such as a straym, when a code was split across output chunks (#10504)headersinmodels.jsonnot overriding theoriginatorandUser-Agentheaders of Codex requests (#10429 by @lucasmeijer)server_busyandservers are currently busyprovider errors ending the turn instead of being retried (#10543)finish_reason: "error"not being retried (#10487)v1.0.4Compare Source
New Features
--no-mcp:--toolsand--exclude-toolsaccept*patterns, for example--tools read,codemode,'mcp__radius__*'keeps only one MCP server's tools.--toolsnow keeps MCP tools unless an entry starts withmcp__, and--no-mcpturns off MCP for one run. See Tools and MCP tools.tools.read()on an image file now gives back an image block thatimage()can show. See Call tools.Added
*patterns to--toolsand--exclude-tools, for example--tools read,codemode,'mcp__radius__*'--no-mcpto disable the built-in MCP support for one runFixed
read:tools.read()now resolves to an image block for image files, whichimage()shows (#10251)invalid_redirect_urion servers with OpenID Connect client registration, such asmcp.modem.dev: pi now registers as a native client (#10493)--toolsremoving MCP tools, which leftpi --tools codemodewithout any MCP servers.--toolsnow keeps MCP tools unless an entry starts withmcp__prepareLoadout. Hidden tools are left out of the rules, the skills hint names no tool when the file reader is hidden, andcodemodeshows each tool's prompt guidelines with its declaration;ToolLoadoutgainsgetPromptGuidelines()(#10343)The pending stream has been canceledafter a stalled HTTP/2 connection not being retried automatically (#10379)Array.prototype.toJSON = ...) crashing pi and leaving the tool call unsettled. Built-ins are now frozen before the script runs, so such patches have no effect (#10444)v1.0.3Compare Source
New Features
azureprovider (renamed fromazure-openai-responses) now also serves Foundry Chat Completions deployments, starting withazure/deepseek-v4-pro. See Azure OpenAI.image()also writes each image to a temp file and names the path in the result, so later turns can copy or move generated images. See Generate images.Breaking Changes
azure-openai-responsestoazure. Rename the provider key inauth.json(or run/loginagain), inmodels.json, and insettings.json(defaultProvider,enabledModelspatterns, andmodelThinkingLevelskeys). Sessions that used the old provider fall back to another model when resumed, and their prompt cache is not reused. TheAZURE_OPENAI_*environment variables are unchanged (#9714 by @jsanter27)Added
azure/deepseek-v4-pro(#9645, #9714 by @jsanter27)Changed
image()now also saves each image to a temp file and names the path in the result, so later turns can copy or move generated images (#10310)Home/Endnow always move the editor cursor to the line start/end; fullscreen transcript top/bottom moved toCtrl+Home/Ctrl+End, which no longer move the editor cursor (#10314)Fixed
refresh_token_invalidatedafter a request was cancelled during an OAuth token refreshread EIOorsetRawMode EIOcrash (and asking to run /bug) when the terminal went away, e.g. after closing the window or resuming a suspended pi in a closed terminalv1.0.2Compare Source
New Features
samplingParamsByThinkingLevelinmodels.jsonsets sampling parameters such astemperatureandtop_pfor each thinking level on OpenAI-compatible APIs. See Configure sampling by thinking level.Added
samplingParamsByThinkingLeveltomodels.jsonfor per-thinking-level sampling parameter overrides on OpenAI-compatible APIs. See Configure sampling by thinking level (#9776 by @mrexodia)v1.0.1Compare Source
New Features
nix run github:earendil-works/pi/stableruns the latest release, andnix profile add github:earendil-works/pi/stableinstalls it. See Install pi..pi/mcp.jsonand/mcpcan enable, disable, or change the exposure of a user-level server for one project. See Configure servers.oauth.clientRegistration: "cimd"lets authorization servers allow pi by its document URL instead of dynamic registration. See Authenticate with OAuth.pi.registerToolRenderer()draws calls to tools that are not registered yet, such as MCP tools in resumed sessions. See Tool rendering.@cf/cloudflare/clefand@cf/cloudflare/clef-flashare usable from codemode scripts and extensions. See Use classifier models.Added
app.message.copy, defaultctrl+x) to OAuth sign-in screens in/login,/mcp, and/mcp login, which copies the sign-in URL when the browser cannot be opened or the wrapped link cannot be selected.oauth.clientRegistration: "cimd"for MCP servers, which identifies pi with its Client ID Metadata Document on pi.dev instead of dynamic client registration, so authorization servers can allow pi by URL (#10302).pi/mcp.jsonentry withoutcommandorurlsets onlyenabled,exposure, andtoolExposureof the user-level server, and/mcpcan enable or disable a server for the current project (#10277)cloudflare-workers-ai, usable from codemode scripts and extensions (#10316 by @ndisidore, #10322 by @RealAlexandreAI)pi.registerToolRenderer(), which chooses how calls to a tool are drawn, including tools that are not registered (#10285)nix run github:earendil-works/pi/stableruns the latest release, andnix profile add github:earendil-works/pi/stableinstalls it. See Install pi (#9137)Changed
pi updateon global npm installations now recommends migrating to the managed installation from the pi.dev installer, which pins all dependencies.Fixed
brace-expansion5.0.9 by pinningbrace-expansion5.0.12 as a direct dependency (GHSA-q2hr-2g5m-vwhr, GHSA-qhr7-859c-m2p7, GHSA-6j4f-fj2g-mc7p) (#10288)--modelsadding an extra model to the model cycle (#10334)codemodescript that prints in a loop crashing pi by running out of memory: a script fails once its output passes 16 Mi characters or 100000 items (#10283)Imagenot appearing in Kitty, Ghostty, WezTerm, and Warp (#10292)claude-opus-5-5instead ofclaude-opus-5.5)signatureinthinkingblock" after the system prompt or tools changed (#10324)deepseek-ai/DeepSeek-V4-Pro-0813(#10336 by @cv)nvidia/nemotron-3-super-120b-a12b, which NVIDIA no longer serves; the default is nownvidia/nemotron-3-ultra-550b-a55bRemoved
npm-shrinkwrap.jsonfrom the published package. npm installations no longer pin transitive dependencies, and library consumers can now override them. Use the pi.dev installer for pinned installations (#5653)v1.0.0Compare Source
New Features
tuiModeto"regular"to keep the terminal's normal scrollback. See Terminal and display.models.generateImages()with the session's credentials. See Generate images and Use image models./login— Sign in with Radius and set up its MCP server in one step. See Radius.oauth.authServerMetadataUrl, RFC 9207isschecks, credentials per server, and step-up sign-in that keeps granted scopes. See Authenticate with OAuth.quietStartup: "header"keeps the version and key hints and hides the rest. See Terminal and display.Added
oauth.authServerMetadataUrlsetting for MCP servers that advertise a wrong OAuth authorization server or none. Pi uses the configured metadata document instead of discovery (#10172).quietStartup: "header", which keeps the startup header with version and key hints but hides the model scope line and loaded-resource listing.models.generateImages()to codemode scripts. It runs image models such as OpenRouter's with the session's credentials and returns base64 image blocks thatimage()attaches to the result; usage counts toward the session cost likemodels.classify(). Extensions can callctx.modelRegistry.generateImages(). See Use image models./loginfor headless setups where the browser runs on another machine (#10194 by @lucasmeijer).Changed
tuiModeto"regular"or pass--tui-mode regularto keep the terminal's normal scrollback./loginnow offers "Sign in with Radius" at the top level, as the last option, with its status. After a Radius sign-in,/loginoffers to configure the Radius MCP server in the globalmcp.jsonwith"auth": { "provider": "radius" }and reloads. Cancelling a login returns to the menu it was started from.codemodedescription lists the script globals in one line each and points to the new Codemode reference for themodelsAPI, which the model reads when it needs it. Declared tools say in one line how scripts call them and what the call resolves to, instead of repeating their full declaration, and the system prompt's codemode guidance and MCP server section are shorter.modelsmember that does not exist names the close matches (tools.Bashsuggeststools.bash),models.classify()andmodels.generateImages()reject malformed arguments with the expected shape, an unknown model points tomodels.getAvailableOfType(), an oversizedstore()value explains what the store is for, and a script that generates images without showing them gets a note. Scripts that probed for a tool withtypeof tools.namemust use"name" in tools./loginand/logoutnow label providers without credentials as "not configured" instead of "unconfigured".Fixed
issparameter names another authorization server; the code is now rejected before it is exchanged (RFC 9207).Invalid scopewhen the token response contains"scope": "", and similar failures for other empty ornulloptional OAuth fields (#10266)./mcp loginnot being clickable when it wraps (#10186).--providerwithout--modelbeing silently ignored and running the default model from another provider; it now fails with an error (#10236).insufficient_scope) requesting sign-in over and over. The new sign-in requested only the missing scopes, so the new token lost access the previous one had; it now keeps the granted scopes./loginand/logoutlabeling every OAuth sign-in, including Radius, as a subscription; only subscription-backed providers say "subscription", other OAuth sign-ins say "account".tool_searchloaded being dropped on resume and/reloadeven when their server reconnected before the next prompt, because the session restored its tools before the MCP servers reconnected.v0.99.2Compare Source
New Features
codemodeexposure are no longer listed in thecodemodedescription and no longer block the first prompt. They appear in a short system prompt section, and scripts find their tools withsearchTools()anddescribeNamespace(). See Control tool exposure.oauth.clientNamefor servers that only accept known OAuth clients, and"auth": { "provider": "<provider>" }to authenticate HTTP servers with a provider's/logintoken. See Authenticate with OAuth./reloadenables tools newly added to thedefaultToolssetting. See Tools.Added
descriptionfield for MCP servers (pi mcp add --description), shown with the server in the system prompt and used to rank its tools in tool search, and adescribeNamespace(name)codemode helper that returns a namespace's instructions and tool names.describeNamespace()andsearchTools()accept a namespace asmcp__dev-radius,mcp__dev_radius,dev-radius, ordev_radius.oauth.clientNamesetting for MCP servers (pi mcp add --oauth-client-name) to change the client name sent during OAuth client registration, for servers that only accept known clients (#10226)."auth": { "provider": "<provider>" }for HTTP MCP servers to send a provider's current/logintoken as the bearer token instead of using MCP OAuth. The token is read on every request, so provider refreshes apply. Only allowed in the globalmcp.jsonand from extensions, and requires https except on loopback hosts.ANTHROPIC_FEDERATION_RULE_ID,ANTHROPIC_ORGANIZATION_ID, andANTHROPIC_IDENTITY_TOKEN_FILEenvironment variables (see Providers) (#10177, #10242 by @philfreo)./reloadnow enables tools newly added to thedefaultToolssetting. Tools removed from it stay enabled, tools turned off during the session stay off unless newly added, and--tools,--no-tools, and--no-builtin-toolsstill override the setting (#10245).Changed
codemodeexposure no longer appear in thecodemodedescription; scripts find them withsearchTools().codemode-deferredis now an alias forcodemode. Usedirectexposure for tools the model should see without searching (#10212).codemodedescription no longer includes deferred tools, tool counts, or MCP server instructions, so it no longer changes when MCP servers connect or change their tools. Thetool_searchdescription no longer lists the servers whose tools it can load, for the same reason. Servers are listed instead in anmcp_serverssystem prompt section with a one-line summary, updated at the start of each prompt; a changed section is appended to the conversation. Scripts read server instructions withdescribeNamespace()(#10212).directtools. They connect in the background and are waited for when a codemode script names them, a script searches tools, ortool_searchruns (#10212).Fixed
/mcpsign-in URL not being clickable when it wraps across lines, by emitting it as a terminal hyperlink with aCmd/Ctrl+click to openline like/login(#10186).image()accepting malformed base64 data or unsupported image types, which persisted an invalid image block that made every later provider request fail with HTTP 400 (#10215).built-in-tool-renderer.tsand `minimal-moConfiguration
📅 Schedule: (UTC)
* 0-6 * * 2)🚦 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 this update again.
This PR was generated by Mend Renovate. View the repository job log.