Repository navigation
chore(deps): update dependency earendil-works/pi to v1.5.0 - #100
Merged
Merged
Conversation
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.
This PR contains the following updates:
1.4.0→1.5.0Release Notes
earendil-works/pi
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)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.Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, 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.