chore(deps): update dependency @earendil-works/pi-coding-agent to v1.5.0 #43
No reviewers
Labels
No labels
dependencies
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
alex/pi-shared!43
Loading…
Reference in a new issue
No description provided.
Delete branch "renovate/all-non-major-dependencies"
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:
1.3.0→1.5.0Release Notes
earendil-works/pi (@earendil-works/pi-coding-agent)
v1.5.0Compare Source
New Features
collapseChangelogcondenses the notices. See Show a changelog.PI_SELF_UPDATE_COMMANDorselfUpdateCommandto update pi through a wrapper or another package manager. See Custom update command.off. Codex offers a 500K context window. See Models.Breaking Changes
@earendil-works/pi-schema. TypeBox features outside JSON Schema (Type.Refine(),Type.BigInt(),Type.Undefined(), codecs,Format.Set()formats) no longer apply to tool arguments; see Tool parameter schemas and TypeBox. Plain JSON Schema tools, including MCP tools, now get the same coercion as TypeBox tools, such as converting numeric strings and wrapping a single value into an array. Validation failures the model sees list pi-schema's messages (- path: missing,- limit: expected number, got string) instead of TypeBox's (must have required properties path,must be number).Added
pi.changelogPathfrom the package'spackage.json, orCHANGELOG.mdin the package root, and on the next fresh launch shows entries newer than the last seen version under "Extension Updates". ThecollapseChangelogsetting condenses this to one line per package (#5958, #8790)pi.exec()accepts amaxBufferoption that limits stdout and stderr combined, and its result has atruncatedfield that is true when output exceeded the limit (#11360)openBrowserOnConfirm: falseorcopyCodeOnConfirm: false(#9282, #9301)pi updatecan update Pi through a wrapper or another package manager. SetPI_SELF_UPDATE_COMMAND(for examplemise use -g npm:{packageName}@{version}) or the globalselfUpdateCommandsetting;pi updateruns it when pi.dev reports a newer release and fills{packageName},{version}, and{installSpec}from that release. See Custom update command (#7756, #5607)keyText()andkeyHint()from the tool render context and the message and entry renderer options. Importing these functions from@earendil-works/pi-coding-agentcan resolve the extension's own copy of the package, which does not see pi's keybindings, so hints such askeyHint("app.tools.expand", "to expand")rendered without the key. The docs now recommend the injected functions (#4748)messageIdand ISOtimestamptoMarkdownTransformContext. They are available when rendering saved entries and undefined for live rendering (#7952 by @vipentti)blockedoption to inlinectx.ui.custom()components so approval prompts and other custom dialogs can report that pi is waiting for user input. Overlays ignore the option. See Custom screens and overlays (#11428)Usage.cost.totalFromProviderto distinguish billed totals from catalog estimates in SDK and extension usage data; combined usage is marked provider-reported only when every part is (#11178)responseModelmetadata to messages from pi-messages providers such as Radius, including when a virtual model is requested. See AssistantMessage (#11265)off; Codex offers a 500K context windowChanged
Type,StaticandTSchemafrom@earendil-works/pi-ai: Pi maps that import to pi-ai's compat entry plus the TypeBox it bundles, now that pi-ai itself no longer re-exports TypeBox, and itsStringEnumthere stays a TypeBoxTUnsafe<T>. The built-in tool factories (createReadTool()and the others) returnTypeBoxAgentTool<typeof schema>, which keepsparamstyped for TypeBox.pi updatefor installs from the pi.dev installer no longer passes--min-release-age=0tonpm ci. The release lockfile pins every package, so the flag had no effect, and security scanners that block it stopped the update (#11262)/modeland/scoped-modelsnow show a model's name next to its ID when the name adds words the ID lacks, such as a renamedmodels.jsonoverride (#5916, #11347)oauth.clientRegistration: "auto"registers whenclientNameor a non-defaultcallbackUrlis set;"dcr"always registers.pi mcp add --oauth-client-registrationsets the mode (#11426)gpt-5.5togpt-6.1-sol, including after ChatGPT sign-in when no model is selected (#11442)Fixed
AGENTS.md. pi auto-trusted such projects, soctx.isProjectTrusted()returned true and package commands treated them as trusted. A saved decision intrust.jsonnow takes precedence; auto-trust applies only when no decision is saved (#10947)Shift+Enterqueueing a follow-up instead of inserting a newline in Apple Terminal setups that sendESC+ Return. pi now checks the local Shift key state for that sequence, as it already did for plain Return;Alt+Enterwithout Shift still queues a follow-up (#11559)pi.setActiveTools()list. Tools that stay active now keep their order and newly activated tools are appended (#11495)pi.exec()crashing pi withRangeError: Invalid string lengthwhen a command printed more output than fits in a string. The default output cap is the smaller of 256 MiB and the runtime string limit; past the cap, the command is terminated and the result hastruncated: trueand a nonzero exit code (#11360)pi.exec()never returning when a command ignored SIGTERM after a timeout or abort. pi now sends SIGKILL 5 seconds later, as intendedpi installandpi removeadding ever deeper nested entries to the npmpackage-lock.jsonwhen the agent directory is reached through a symlink, such as~/.pilinked into a dotfiles repo. pi now passes the resolved real path to npm (#11358)http:orhttps:. Before, a malicious MCP server could supply afile:or custom protocol URL, which pi passed to the platform URL handler.fdandrgdownloads no longer fetch x86-64 binaries on ARM32 and other architectures without a prebuilt release. pi now warns and recommends installing the tool with the system package manager (#11209)/modelsearch ranking letters scattered over an earlier part of an entry above a real match, for exampleopuslistinggpt-oss-120bandclaude-sonnet-4.5beforeclaude-opus-4.1(#11220, #11296)/resumesearch matching scattered letters anywhere in session messages and IDs, for example1024matching inside a session UUID. Session names and working directories still match fuzzily; IDs and message text now match only as exact substrings (#11220, #11024, #11296)/reload.pi --exportnow includes the system prompt and tools too (#11261, #3464, #11290)long_step; next_step. pi now stops the process group before killing it (#11252, #11289)tui.select.pageUpandtui.select.pageDownbeing ignored in slash command and file autocomplete,/settings, and the model, scoped models, login, fork,/mcp, and llama.cpp selectors. In fullscreen mode, PageUp/PageDown now move an open list or autocomplete menu instead of scrolling the transcript, and a page key bound to Ctrl+V pages autocomplete instead of pasting an image (#7629, based on #7680 by @muyiyr)!command output showing the parameters of control sequences with a<,=or>prefix as text, for example35;59;1Mfrom a mouse reportESC[<35;59;1Mor0;276;0cfrom a terminal replyESC[>0;276;0c. Text after the keypad-mode sequencesESC=andESC>is still kept (#11377)pi -e npm:<pkg>staying on the version from the first download. On each start and/reload, pi now reinstalls an-enpm package without an exact version when the registry has a newer matching version.pi -e git:<repo>@<branch>likewise stayed on its first checkout and is now fetched and reset to the branch; a commit-hash ref that is already checked out is not fetched. Offline mode and failed checks keep the cached copy (#11375, #11590)c:\Users\mevsC:\Users\me), skills in~/.agents/skillsloaded twice, as project and user skills, and were reported as name collisions. The same mismatch also re-asked for saved project trust, hid sessions in a custom session directory from--continueand/resume, and stoppedpi removefrom matching configured local packages (#10488)~prefix, for example/home/me2/projectshown as~2/projectwhen home is/home/mepi mcp login -landpi mcp logout -lfailing withUnknown option --local.althoughpi mcp addandpi mcp removeaccept-l. With-l, they now require the server to be a project server. Unknown options are now reported as typed, and a mistyped server name gets a suggestion, for exampleDid you mean "gurker"?pi updatenaming pnpm for installs that only live underPNPM_HOME, for example a wrapper under$PNPM_HOME/global-nub/. pi said "not managed by a global pnpm install"; it now names the package manager only when that manager owns the install (#7756)powershell.exeandexplorer.execannot start from a directory whose\\wsl.localhost\...path exceeds 260 characters; pi now starts these helpers from/(#11592)External editor exited with code 1; prompt unchanged(#11592)tool_searchand codemodesearchTools()ranking a tool below tools that only mention its name in their descriptions, for examplepeekaboo apprankingmcp__peekaboo__app14th. A tool matching more of the query's words now ranks above one matching fewer, a query word in a tool's name scores more than any number of mentions in its description, a tool whose whole name is in the query gets a large bonus, and long server instructions no longer lower the scores of that server's tools (#11331)tool_searchand codemodesearchTools()finding nothing for Chinese, Japanese, Thai, and other non-ASCII queries, because the tokenizer kept only ASCII letters and digits. Words in any script now match, text without spaces between words such as搜索记录is split into words, and canonically equivalent text such ascaféandcafe\u0301matches (#10816, #11037 by @haoqixu)pi updatestopping withgit clean -fdx failed with code 1on Windows when another pi session had a git extension's native module or executable open. Windows cannot delete such files, so the update left the new code with the old dependencies. pi now warns, installs the dependencies anyway, and retries the clean on the next update (#11597)auth.jsonthrough different paths, such as a symlinkedauth.jsonin a separate agent directory. The auth lock now uses the file's resolved path (#11655)writerow its whole file on every update and expand toggle, a streamedwriteits first 50 lines on every delta, and a streamed answer every earlier code block on every delta. Rows now reuse their last highlighting until the code, theme, or loaded grammars change, and assistant messages keep their rendered Markdown blocks while streaming (#10971)pi update --extensionsreporting success without warning when npm's stale registry metadata left a package at its old version. pi now reports the installed and expected versions (#11536)[Skill conflicts]even when there was no name collision. They are now shown under[Skill warnings](#11521)describeTool()for the full declaration (#11501)uv_cwdstack trace. pi now asks the user to change to an existing directory (#11509)/treebranch summaries ignoring the session's thinking level, which could make reasoning models reject summary requests with an unsupportednoneeffort (#11444)npm audit fixinstructions that could install a second copy of pi into the package directory (#11409)grepcontext lines being offset from ripgrep's match line numbers when a file contains a lone carriage return (#11398)--model <provider>/<id>failing for provider IDs containing slashes, such as URL-derived llama.cpp provider IDs (#11394)pi.exec()corrupting UTF-8 characters split across stdout or stderr chunks (#11312)pi.exec()returning empty stderr when a command could not be spawned, such as a missing executable. It now preserves the spawn error message (#11257 by @muyiyr)/reload; explicit install and update commands still fail with a nonzero exit (#11304 by @Lincoln504)undicito 8.12.3 and the Gondolin extension example to 0.14.0 for security advisories1308) being treated as transient HTTP 429 errors, causing automatic retries that cannot succeed until the usage cap resets (#11537)ContextWindowExceededErrornot being recognized as context overflow (#11492)constkeywords. They are now converted to single-valueenumschemas without rewriting literal data in defaults, examples, or enum values, or losing properties named__proto__(#11308)ORCA_IMAGE_PROTOCOL=kitty(#9329 by @XRX193)role 'system' must precede an 'assistant' messagewhen a system update was followed by an empty or reasoning-only assistant reply (#11091)Invalid effort levelon accounts whose organization caps effort belowhigh(#10063)prompt_cache_retentionparameterMissing namespace for function_callafter switching from a model that had called tools (#11415)~anthropic/claude-*-latestaliases losing earlier thinking after tool calls by using the Anthropic Messages API (#9534)~,.,\, and+; word characters now match iTerm2's defaults (#10980)/treebranch summaries including failed assistant replies and original content that context edits had hidden or replaced. Summaries now honor the same context edits as live requests and compaction (#11602)Removed
sandbox/extension example and its dependency. Use the Gondolin example or the containerization guide.v1.4.0Compare Source
New Features
models.classify()acceptsimagesfor TypeSafe's Jev and Cloudflare's Clef models ontypesafe,cloudflare-workers-ai, and OpenRouter. See Use classifier models and Codemode.models.json, generated from its schema. See Models Configuration.PI_CODEMODE_MAX_WORKERSraises the limit. See Codemode limits.Added
models.jsonschema, listing all provider, model, model override, and compatibility fields (#10790)models.classify()now acceptsimagesfor TypeSafe's Jev and Cloudflare's Clef models ontypesafe,cloudflare-workers-ai, and OpenRouter, and lists Clef Omni and Jev 1.14 on Workers AI.compatinmodels.jsonnow also applies to classifier models, with the System One fieldsimageInputandsendImageOptInHeaderfor proxies that serve another service's classifiers. Extension classifier models acceptcompattoo.MiniMax-M3.1-Flashto theminimaxandminimax-cnproviders, with thinking levels low through max (#11121)Changed
before_provider_headershandlers no longer see the OpenRouter, NVIDIA NIM, and OpenCode attribution headers; returningnullfor one still removes it. Cloudflare requests send pi's detailedUser-Agentinstead ofpi-coding-agent, as do GitHub release checks for tool downloads, and OpenCode requests sendx-opencode-clientwhenever attribution is enabled, not only with a session.generateSummary()andgenerateSummaryWithUsage()now ignore theirreserveTokensparameter. Summary requests use the model's output limit instead.gpt-5.4, which Copilot retired, togpt-6.1-sol.nvidia/nemotron-3.5-super-vl-120b-a12b(#10910 by @cv)mimo-v2.6-profor thexiaomiand Xiaomi Token Plan providers, sincemimo-v2.5-proleft the catalog.xaiprovider now offer thexhighthinking level.Fixed
compaction.reserveTokensonly controls when compaction starts (#9512, #9075).models.schema.jsonmissing descriptions for provider and model fields, so editors showed no hints for them (#10790)pi updatefailing with "Managed install marker is missing or invalid" whenmanaged-install.jsonstarts with a UTF-8 BOM, which Windows PowerShell 5.1 adds when it rewrites the file.select/confirm/input/editordialogs and inlinecustom()components in interactive mode: a second dialog replaced the first and the first promise never settled; closing the visible dialog now shows the previous one again (#11166, #9909)wl-copy/xclip/xselprocess that keeps serving the clipboard was suspended along with pi (#11179)PI_CODEMODE_MAX_WORKERSraises the limit of two workers (#11184)@earendil-works/pi-ai/models(e.g. forclampThinkingLevel) by exposing the subpath through the extension loader aliases and virtual modules (#11156)mcp.jsonfiles that start with a UTF-8 BOM failing to parse, which skipped all their MCP servers and madepi mcp add/pi mcp removefail (#11191)/compact <instructions>ignoring the instructions when summarizing the start of a turn that compaction splits. When the split turn was the only new content since the last compaction, the instructions were ignored entirely (#11058)/treenavigation leaving extension tools inactive when the branch recorded its tools before they were registered, such as tools from extensions installed after the session started. Extension tools the branch never added or removed are now active unless they are registered withdefaultActive: false(#11062, #11075)greptool followingRIPGREP_CONFIG_PATH, where options such as--fixed-stringssilently changed regex searches into literal ones. The tool now runsrg --no-config(#11203, #11230 by @petrroll)PATHand the legacy WSLbash.exelauncher when Windows is not installed inC:\Windows. pi now checks%ProgramFiles%\PowerShell\7,%SystemRoot%\System32\WindowsPowerShell\v1.0, and%SystemRoot%(#9501 by @petrroll)failed to parse requestinstead of compacting and retrying (#11016 by @petrroll)openai-codexprovider offeringgpt-5.5andgpt-5.3-codex-spark, which always fail for ChatGPT accounts (#11173 by @lucasmeijer)\r\nfrom bash) making OpenAI Completions, OpenAI Responses, and Google requests fail with a 400 (#8720)stream disconnected before completionerrors relayed by Codex CLI proxies, and transient Google Vertex OAuth token refresh failures, and retrying errors because of digits inside request ids or byte counts (#10920, #11057, #10996)$$display-math block swallowing or corrupting every Markdown table after it (#11159)@file autocomplete returning no results for queries containing regex metacharacters such as[or((#10972)Configuration
📅 Schedule: (in timezone Europe/Berlin)
🚦 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 has been generated by Mend Renovate CLI.