build(deps-dev): bump the dev-dependencies group across 1 directory with 7 updates
Bumps the dev-dependencies group with 7 updates in the / directory:
| Package | From | To |
|---|---|---|
| @biomejs/biome | 2.5.15 | 2.6.3 |
| @earendil-works/pi-agent-core | 1.0.4 | 1.4.0 |
| @earendil-works/pi-ai | 1.0.4 | 1.4.0 |
| @earendil-works/pi-coding-agent | 1.0.4 | 1.4.0 |
| @earendil-works/pi-tui | 1.0.4 | 1.4.0 |
| @types/node | 26.6.4 | 26.6.5 |
| vitest | 5.0.3 | 5.0.5 |
Updates @biomejs/biome from 2.5.15 to 2.6.3
Release notes
Sourced from @biomejs/biome's releases.
Biome CLI v2.6.3
2.6.3
Patch Changes
#12275
807e616Thanks@dyc3! - Added the new nursery rulenoArraySortForMinMax, which reports sorting an array only to read its smallest or largest value. UseMath.min()orMath.max()instead.const minimum = array.toSorted((a, b) => a - b)[0];#12432
cf61682Thanks@dyc3! - Added the nursery rulenoBooleanSortComparator, which reports sort comparators that return a boolean instead of a number. For example,array.sort((a, b) => a > b)never puts the first item before the second, so the array isn't sorted correctly.#12304
b4654c5Thanks@dyc3! - Added the new nursery rulenoEagerArrayMethodsInLoops, which reports.map()and.filter()calls in the header offor...ofloops. These calls build a new array that is only used by the loop.for (const name of users.map((user) => user.name)) { console.log(name); }#12121
66c3791Thanks@dyc3! - Added the nursery rulenoNewRequire, which disallows callingrequirewithnew, such asnew require("app-header").#12316
34b520dThanks@dyc3! - Added the new nursery rulenoObsoleteAttributes, which disallows obsolete attributes on HTML elements and suggests what to use instead.<table bgcolor="#ffffff" cellpadding="5"></table>#12258
cce2385Thanks@dyc3! - Added the nursery rulenoPathConcat, which disallows building file paths and URLs by joining strings to__dirname,__filename,import.meta.dirname,import.meta.filename, orimport.meta.url.const fullPath = __dirname + "/foo.js"; // reported#12287
e12ad78Thanks@dyc3! - Added the new nursery rulenoPlaywrightNthMethods, which disallows selecting Playwright elements by position withfirst(),last(), andnth(). A test that relies on the position of an element can act on a different element when the page changes.await page.locator("button").first().click();#12343
62ad123Thanks@vibbix! - Added the nursery rulenoSelfNestedLayer, which disallows nesting a cascade layer inside a layer with the same name. Layer names inside an@layerblock are relative to it, so the inner layer below creates the sublayercomponents.componentsinstead of adding tocomponents.@layer components { @layer components { .button { color: red; }
... (truncated)
Commits
c5c3383ci: release (#12500)7bd38b7feat(lint): add noVueWatchAfterAwait (#12385)807e616feat(lint): add noArraySortForMinMax (#12275)407604dfeat(lint): add useVueComponentIs (#12400)f748ec0feat(lint): add noSvelteInternal (#12431)ab2eb9efeat(lint): add useBlockStatementOverIife (#12300)bf1a55afeat(lint): add useVueVOnExact (#12423)c371520feat(lint): add useVueToggleInsideTransition (#12337)8a5974achore: add syntaxfm to sponsors (#12577)0be8d10feat(lint): add noUnsafeReturn (#12422)- Additional commits viewable in compare view
Updates @earendil-works/pi-agent-core from 1.0.4 to 1.4.0
Release notes
Sourced from @earendil-works/pi-agent-core's releases.
v1.4.0
New Features
- Image input for classifiers: codemode
models.classify()acceptsimagesfor TypeSafe's Jev and Cloudflare's Clef models ontypesafe,cloudflare-workers-ai, and OpenRouter. See Use classifier models and Codemode.- Models Configuration reference: every provider, model, model override, and compatibility field of
models.json, generated from its schema. See Models Configuration.- Summaries without a fixed output cap: compaction and branch summaries use the model's output limit, so long reasoning no longer makes them fail. See Compaction.
- Codemode waits for a free worker: parallel scripts and in-process subagents queue instead of failing, and
PI_CODEMODE_MAX_WORKERSraises the limit. See Codemode limits.- Rex terminal support: OSC 8 hyperlinks, truecolor, and inline images.
Added
- Added a Models Configuration reference generated from the
models.jsonschema, listing all provider, model, model override, and compatibility fields (#10790)- Codemode
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.- Provider-level
compatinmodels.jsonnow also applies to classifier models, with the System One fieldsimageInputandsendImageOptInHeaderfor proxies that serve another service's classifiers. Extension classifier models acceptcompattoo.- Added
MiniMax-M3.1-Flashto theminimaxandminimax-cnproviders, with thinking levels low through max (#11121)- Added support for the Rex terminal: OSC 8 hyperlinks, truecolor, and inline images (#11131, #11150 by
@petrroll, #11183 by@nihaals)Changed
- Provider attribution headers now come from pi-ai's client identity. Extensions'
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.- Changed the default GitHub Copilot model from
gpt-5.4, which Copilot retired, togpt-6.1-sol.- Changed the default NVIDIA model to
nvidia/nemotron-3.5-super-vl-120b-a12b(#10910 by@cv)- Changed the default Xiaomi model to
mimo-v2.6-profor thexiaomiand Xiaomi Token Plan providers, sincemimo-v2.5-proleft the catalog.- Grok 4.3 and Grok 4.5 on the
xaiprovider now offer thexhighthinking level.- Sign in with ChatGPT: ChatGPT Business workspace usage-limit errors are not retried and tell the user to ask their workspace admin to increase the limit.
Fixed
- Fixed compaction and branch summaries failing with "generation hit the token cap" when reasoning used most of the fixed summary output limit. Summaries now use the model's output limit, and
compaction.reserveTokensonly controls when compaction starts (#9512, #9075).- Fixed
models.schema.jsonmissing descriptions for provider and model fields, so editors showed no hints for them (#10790)- Fixed
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.- Fixed HTML export showing literal asterisks for Markdown bold and italic next to CJK punctuation (#3353, #10154)
- Fixed the terminal staying in mouse-tracking, focus-reporting, Kitty keyboard, and alternate-screen modes when pi exits without its normal terminal teardown, which flooded the shell prompt with escape sequences (#11170)
- Fixed concurrent extension
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)- Fixed pasting in the shell hanging after copying text in pi and suspending it with Ctrl+Z on Linux: the background
wl-copy/xclip/xselprocess that keeps serving the clipboard was suspended along with pi (#11179)- Fixed codemode scripts failing immediately when both codemode workers are busy, for example with parallel codemode calls or in-process subagents. Scripts now wait up to 60 seconds for a free worker, and
PI_CODEMODE_MAX_WORKERSraises the limit of two workers (#11184)- Fixed extensions failing to load when importing
@earendil-works/pi-ai/models(e.g. forclampThinkingLevel) by exposing the subpath through the extension loader aliases and virtual modules (#11156)- Fixed
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)- Fixed
/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)- Fixed resumed sessions and
/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)- Fixed sessions breaking after recovery from a response cut off at the output limit: the truncated tool call was omitted but its tool results were kept, so providers rejected every later request (#11227, #11233 by
@petrroll)- Fixed the
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)- Fixed Windows shell detection rejecting runnable Microsoft Store shell aliases (#9504 by
@petrroll)- Fixed Windows shell detection missing PowerShell outside
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)- Fixed GitHub Copilot sessions with large request bodies, such as many images, failing with HTTP 413
failed to parse requestinstead of compacting and retrying (#11016 by@petrroll)- Fixed the
openai-codexprovider offeringgpt-5.5andgpt-5.3-codex-spark, which always fail for ChatGPT accounts (#11173 by@lucasmeijer)- Fixed whitespace-only tool output (for example a bare
\r\nfrom bash) making OpenAI Completions, OpenAI Responses, and Google requests fail with a 400 (#8720)- Fixed automatic retry not triggering for more gateway upstream failures,
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)- Fixed OpenAI Responses models losing the prompt cache on every deferred tool load after a tool was removed (#10940)
... (truncated)
Changelog
Sourced from @earendil-works/pi-agent-core's changelog.
[1.4.0] - 2026-10-21
Added
- Added
AgentOptions.identityandAgent.identity(a pi-aiClientIdentity) to set theUser-Agentand provider attribution of agent loop requests.[1.3.0] - 2026-10-15
[1.2.0] - 2026-10-12
[1.1.0] - 2026-10-07
Added
- Added
durationMsto tool result messages,AgentToolCallOutcome, andtool_execution_endevents: how longexecute()took, measured with a monotonic clock and excluding hooks. Calls that did not run have none (#10549)Changed
streamProxy()returns anAssistantMessageEventStream, so proxied responses getdurationMslike direct ones
Commits
4a08025Release v1.4.004a93bafix(ai,agent,coding-agent,durable): client identity follow-upsadc5fa9feat(ai,agent,coding-agent): move client identity and provider attribution in...ae7b16dAdd [Unreleased] section for next cycle71023aeRelease v1.3.0f13c00ffix: pin internal dependencies to exact versionsd547949Add [Unreleased] section for next cycle06a4669Release v1.2.075a9972Add [Unreleased] section for next cycleabe508eRelease v1.1.0- Additional commits viewable in compare view
Updates @earendil-works/pi-ai from 1.0.4 to 1.4.0
Release notes
Sourced from @earendil-works/pi-ai's releases.
v1.4.0
New Features
- Image input for classifiers: codemode
models.classify()acceptsimagesfor TypeSafe's Jev and Cloudflare's Clef models ontypesafe,cloudflare-workers-ai, and OpenRouter. See Use classifier models and Codemode.- Models Configuration reference: every provider, model, model override, and compatibility field of
models.json, generated from its schema. See Models Configuration.- Summaries without a fixed output cap: compaction and branch summaries use the model's output limit, so long reasoning no longer makes them fail. See Compaction.
- Codemode waits for a free worker: parallel scripts and in-process subagents queue instead of failing, and
PI_CODEMODE_MAX_WORKERSraises the limit. See Codemode limits.- Rex terminal support: OSC 8 hyperlinks, truecolor, and inline images.
Added
- Added a Models Configuration reference generated from the
models.jsonschema, listing all provider, model, model override, and compatibility fields (#10790)- Codemode
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.- Provider-level
compatinmodels.jsonnow also applies to classifier models, with the System One fieldsimageInputandsendImageOptInHeaderfor proxies that serve another service's classifiers. Extension classifier models acceptcompattoo.- Added
MiniMax-M3.1-Flashto theminimaxandminimax-cnproviders, with thinking levels low through max (#11121)- Added support for the Rex terminal: OSC 8 hyperlinks, truecolor, and inline images (#11131, #11150 by
@petrroll, #11183 by@nihaals)Changed
- Provider attribution headers now come from pi-ai's client identity. Extensions'
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.- Changed the default GitHub Copilot model from
gpt-5.4, which Copilot retired, togpt-6.1-sol.- Changed the default NVIDIA model to
nvidia/nemotron-3.5-super-vl-120b-a12b(#10910 by@cv)- Changed the default Xiaomi model to
mimo-v2.6-profor thexiaomiand Xiaomi Token Plan providers, sincemimo-v2.5-proleft the catalog.- Grok 4.3 and Grok 4.5 on the
xaiprovider now offer thexhighthinking level.- Sign in with ChatGPT: ChatGPT Business workspace usage-limit errors are not retried and tell the user to ask their workspace admin to increase the limit.
Fixed
- Fixed compaction and branch summaries failing with "generation hit the token cap" when reasoning used most of the fixed summary output limit. Summaries now use the model's output limit, and
compaction.reserveTokensonly controls when compaction starts (#9512, #9075).- Fixed
models.schema.jsonmissing descriptions for provider and model fields, so editors showed no hints for them (#10790)- Fixed
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.- Fixed HTML export showing literal asterisks for Markdown bold and italic next to CJK punctuation (#3353, #10154)
- Fixed the terminal staying in mouse-tracking, focus-reporting, Kitty keyboard, and alternate-screen modes when pi exits without its normal terminal teardown, which flooded the shell prompt with escape sequences (#11170)
- Fixed concurrent extension
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)- Fixed pasting in the shell hanging after copying text in pi and suspending it with Ctrl+Z on Linux: the background
wl-copy/xclip/xselprocess that keeps serving the clipboard was suspended along with pi (#11179)- Fixed codemode scripts failing immediately when both codemode workers are busy, for example with parallel codemode calls or in-process subagents. Scripts now wait up to 60 seconds for a free worker, and
PI_CODEMODE_MAX_WORKERSraises the limit of two workers (#11184)- Fixed extensions failing to load when importing
@earendil-works/pi-ai/models(e.g. forclampThinkingLevel) by exposing the subpath through the extension loader aliases and virtual modules (#11156)- Fixed
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)- Fixed
/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)- Fixed resumed sessions and
/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)- Fixed sessions breaking after recovery from a response cut off at the output limit: the truncated tool call was omitted but its tool results were kept, so providers rejected every later request (#11227, #11233 by
@petrroll)- Fixed the
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)- Fixed Windows shell detection rejecting runnable Microsoft Store shell aliases (#9504 by
@petrroll)- Fixed Windows shell detection missing PowerShell outside
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)- Fixed GitHub Copilot sessions with large request bodies, such as many images, failing with HTTP 413
failed to parse requestinstead of compacting and retrying (#11016 by@petrroll)- Fixed the
openai-codexprovider offeringgpt-5.5andgpt-5.3-codex-spark, which always fail for ChatGPT accounts (#11173 by@lucasmeijer)- Fixed whitespace-only tool output (for example a bare
\r\nfrom bash) making OpenAI Completions, OpenAI Responses, and Google requests fail with a 400 (#8720)- Fixed automatic retry not triggering for more gateway upstream failures,
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)- Fixed OpenAI Responses models losing the prompt cache on every deferred tool load after a tool was removed (#10940)
... (truncated)
Changelog
Sourced from @earendil-works/pi-ai's changelog.
[1.4.0] - 2026-10-21
Breaking Changes
- Renamed provider request option
telemetryContexttotelemetry?: TelemetrySpan, without a compatibility alias. Pass a parent span, not an adapter.- The default
User-Agentis nowpi/<version> (<platform>; <runtime>; <arch>)instead ofpi (<platform> <release>; <arch>), and@earendil-works/pi-ai/utils/pi-user-agent(getPiUserAgent()) is removed; useformatUserAgent().resolveTranscriptTools()now takes aTranscriptToolSupport("none","additions", or"changes") instead of a boolean, andTranscriptTools.anchorsAdditionsis replaced byfoldedSystemMessages, the number of leading system messages folded intorequestTools(#10940)Added
- Added client identity configuration: an
identityrequest option andcreateModels({ identity })default choose theUser-Agent("detailed"with a version,"short", or custom) and provider attribution headers for OpenRouter, NVIDIA NIM, and OpenCode fromattribution: { name, url, categories? }.withClientIdentity()applies an identity to aModelsorMutableModelsa library receives from its host.formatUserAgent(),getIdentityHeaders(),getOpenCodeSessionHeaders(),mergeClientIdentity(),PI_ATTRIBUTION, andPI_AI_VERSIONare exported.- Bedrock, OpenRouter image generation, pi-messages, and classifier requests now send pi's
User-Agenttoo.Modelsrequests with asessionIdto custom providers pointing at OpenCode (opencode.ai) now send thex-opencode-sessionheader too, like the built-in OpenCode providers.- Added
AI_TELEMETRY_SCHEMAand opt-inpi.ai.request/pi.ai.polltracing around Models requests, with content-free first-event, block-size, and final usage attributes, plus duration, token, and USD cost metrics throughtelemetry.metrics.- Failed model request spans report
provider_errorstatus with up to 500 error-message characters; cancelled requests keepokstatus withstop: "aborted".- Added
MiniMax-M3.1-Flashto theminimaxandminimax-cnproviders, with thinking levels low through max sent asoutput_config.effort. Thinking cannot be turned off for this model. New MiniMax models from models.dev now appear without a manual allowlist entry; only the older M2, M2.1, M2.5, and M2.5-highspeed models stay hidden (#11121)- Sign in with ChatGPT: ChatGPT Business workspace usage-limit errors are not retried and tell the user to ask their workspace admin to increase the limit.
- Added image input to System One classifiers:
ClassifierContext.imagesnow works with Jev ontypesafe(experimental there, opted in with theTypeSafe-Danger-Zone-Imagesheader) andcloudflare-workers-ai, with Clef oncloudflare-workers-ai, and with OpenRouter decision models whose catalog lists image input. Each service gets its own wire form: TypeSafeassets, Clefimagesdata URLs, or OpenRouterimage_urlparts in the state.- Added
compatto System One classifier models (SystemOneCompat, withimageInputandsendImageOptInHeader). Built-in catalog entries set it explicitly; models without it detect the form from the provider,baseUrl, and model ID.- Added the
@cf/cloudflare/clef-omniandtypesafe/jev-1.14.0classifier models tocloudflare-workers-ai.Changed
- Grok 4.3 and Grok 4.5 on the
xaiprovider now offer thexhighthinking level, matching the reasoning efforts xAI supports for these models.Fixed
- Fixed Cloudflare Workers AI classifier catalog data: Clef Flash now costs $0.038 per million input tokens with a 24,576-token context window, and Jev costs $0.042 per million input tokens instead of being listed as free.
- Fixed whitespace-only tool output (for example a bare
\r\nfrom bash) being sent as-is to OpenAI Completions, OpenAI Responses, and Google providers; it now uses the same placeholder as empty output, since some providers reject whitespace-only tool content with a 400 (#8720)- Fixed automatic retry not triggering for gateway upstream failures such as
upstream_error: Upstream request failed,upstream_stream_read_error, andUpstream HTTP/2 stream failed(#10920)- Fixed automatic retry not triggering when the Google Vertex OAuth token refresh fails with a transient network error such as
request to https://oauth2.googleapis.com/token failed, reason:(#10996)- Fixed automatic retry not triggering for
stream disconnected before completionerrors relayed by proxies that wrap the Codex CLI (#11057)- Fixed automatic retry treating digits inside request ids or other numbers (for example
req_011CU503xyzor5242880 bytes) as retryable HTTP status codes (#11057)- Fixed OpenAI Responses deferred tool loads rewriting the top-level tool list, and losing the prompt cache, on every load after a tool removal. Models with
additional_toolsnow declare all tools inadditional_toolsitems, starting with one at the head of the input, so removals (announced as text) and redefinitions no longer rewrite the prefix. Tool search and Kimi tool messages rewrite the top-level tools once per removal or redeclaration and keep later loads anchored (#10940)- Fixed GitHub Copilot requests whose body exceeds Copilot's size limit (HTTP 413
failed to parse request, for example sessions with many large images) failing instead of being detected as context overflow. Any HTTP 413 now counts as context overflow, so callers can compact and retry (#11016 by@petrroll)- Fixed the
openai-codexprovider listinggpt-5.5andgpt-5.3-codex-spark, which the Codex backend rejects for ChatGPT accounts. Both models are removed (#11173 by@lucasmeijer)[1.3.0] - 2026-10-15
Breaking Changes
- Removed
AssistantMessageFrame,AssistantMessageFrameEncoder, andreduceAssistantMessageFrames(). They were only used by the removed experimental agent harness.Added
- Added cache-preserving thinking level changes for GPT-6 models on the openai provider: with an API key, the level is sent as configuration_update input items instead of changing reasoning.effort, controlled by compat.supportsMidConvoEffort (#10853)
Changed
- Changed the
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)
... (truncated)
Commits
4a08025Release v1.4.018e56a0fix(ai): expect compat on OpenRouter decision models in catalog testf76b248docs(ai,tui,coding-agent): audit changelogs since v1.3.07f225f2feat(ai,coding-agent): image input for System One classifiers04a93bafix(ai,agent,coding-agent,durable): client identity follow-upsadc5fa9feat(ai,agent,coding-agent): move client identity and provider attribution in...6e491cffix(ai): match retryable status codes only as standalone numbers29057ecfix(ai): retry Codex CLI stream disconnect errors relayed by proxiescedefc5fix(ai): handle ChatGPT Business workspace usage limit errorse5fe977fix(ai,coding-agent): drop models retired upstream- Additional commits viewable in compare view
Updates @earendil-works/pi-coding-agent from 1.0.4 to 1.4.0
Release notes
Sourced from @earendil-works/pi-coding-agent's releases.
v1.4.0
New Features
- Image input for classifiers: codemode
models.classify()acceptsimagesfor TypeSafe's Jev and Cloudflare's Clef models ontypesafe,cloudflare-workers-ai, and OpenRouter. See Use classifier models and Codemode.- Models Configuration reference: every provider, model, model override, and compatibility field of
models.json, generated from its schema. See Models Configuration.- Summaries without a fixed output cap: compaction and branch summaries use the model's output limit, so long reasoning no longer makes them fail. See Compaction.
- Codemode waits for a free worker: parallel scripts and in-process subagents queue instead of failing, and
PI_CODEMODE_MAX_WORKERSraises the limit. See Codemode limits.- Rex terminal support: OSC 8 hyperlinks, truecolor, and inline images.
Added
- Added a Models Configuration reference generated from the
models.jsonschema, listing all provider, model, model override, and compatibility fields (#10790)- Codemode
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.- Provider-level
compatinmodels.jsonnow also applies to classifier models, with the System One fieldsimageInputandsendImageOptInHeaderfor proxies that serve another service's classifiers. Extension classifier models acceptcompattoo.- Added
MiniMax-M3.1-Flashto theminimaxandminimax-cnproviders, with thinking levels low through max (#11121)- Added support for the Rex terminal: OSC 8 hyperlinks, truecolor, and inline images (#11131, #11150 by
@petrroll, #11183 by@nihaals)Changed
- Provider attribution headers now come from pi-ai's client identity. Extensions'
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.- Changed the default GitHub Copilot model from
gpt-5.4, which Copilot retired, togpt-6.1-sol.- Changed the default NVIDIA model to
nvidia/nemotron-3.5-super-vl-120b-a12b(#10910 by@cv)- Changed the default Xiaomi model to
mimo-v2.6-profor thexiaomiand Xiaomi Token Plan providers, sincemimo-v2.5-proleft the catalog.- Grok 4.3 and Grok 4.5 on the
xaiprovider now offer thexhighthinking level.- Sign in with ChatGPT: ChatGPT Business workspace usage-limit errors are not retried and tell the user to ask their workspace admin to increase the limit.
Fixed
- Fixed compaction and branch summaries failing with "generation hit the token cap" when reasoning used most of the fixed summary output limit. Summaries now use the model's output limit, and
compaction.reserveTokensonly controls when compaction starts (#9512, #9075).- Fixed
models.schema.jsonmissing descriptions for provider and model fields, so editors showed no hints for them (#10790)- Fixed
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.- Fixed HTML export showing literal asterisks for Markdown bold and italic next to CJK punctuation (#3353, #10154)
- Fixed the terminal staying in mouse-tracking, focus-reporting, Kitty keyboard, and alternate-screen modes when pi exits without its normal terminal teardown, which flooded the shell prompt with escape sequences (#11170)
- Fixed concurrent extension
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)- Fixed pasting in the shell hanging after copying text in pi and suspending it with Ctrl+Z on Linux: the background
wl-copy/xclip/xselprocess that keeps serving the clipboard was suspended along with pi (#11179)- Fixed codemode scripts failing immediately when both codemode workers are busy, for example with parallel codemode calls or in-process subagents. Scripts now wait up to 60 seconds for a free worker, and
PI_CODEMODE_MAX_WORKERSraises the limit of two workers (#11184)- Fixed extensions failing to load when importing
@earendil-works/pi-ai/models(e.g. forclampThinkingLevel) by exposing the subpath through the extension loader aliases and virtual modules (#11156)- Fixed
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)- Fixed
/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)- Fixed resumed sessions and
/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)- Fixed sessions breaking after recovery from a response cut off at the output limit: the truncated tool call was omitted but its tool results were kept, so providers rejected every later request (#11227, #11233 by
@petrroll)- Fixed the
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)- Fixed Windows shell detection rejecting runnable Microsoft Store shell aliases (#9504 by
@petrroll)- Fixed Windows shell detection missing PowerShell outside
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)- Fixed GitHub Copilot sessions with large request bodies, such as many images, failing with HTTP 413
failed to parse requestinstead of compacting and retrying (#11016 by@petrroll)- Fixed the
openai-codexprovider offeringgpt-5.5andgpt-5.3-codex-spark, which always fail for ChatGPT accounts (#11173 by@lucasmeijer)- Fixed whitespace-only tool output (for example a bare
\r\nfrom bash) making OpenAI Completions, OpenAI Responses, and Google requests fail with a 400 (#8720)- Fixed automatic retry not triggering for more gateway upstream failures,
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)- Fixed OpenAI Responses models losing the prompt cache on every deferred tool load after a tool was removed (#10940)
... (truncated)
Changelog
Sourced from @earendil-works/pi-coding-agent's changelog.
[1.4.0] - 2026-10-21
New Features
- Image input for classifiers: codemode
models.classify()acceptsimagesfor TypeSafe's Jev and Cloudflare's Clef models ontypesafe,cloudflare-workers-ai, and OpenRouter. See Use classifier models and Codemode.- Models Configuration reference: every provider, model, model override, and compatibility field of
models.json, generated from its schema. See Models Configuration.- Summaries without a fixed output cap: compaction and branch summaries use the model's output limit, so long reasoning no longer makes them fail. See Compaction.
- Codemode waits for a free worker: parallel scripts and in-process subagents queue instead of failing, and
PI_CODEMODE_MAX_WORKERSraises the limit. See Codemode limits.- Rex terminal support: OSC 8 hyperlinks, truecolor, and inline images.
Added
- Added a Models Configuration reference generated from the
models.jsonschema, listing all provider, model, model override, and compatibility fields (#10790)- Codemode
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.- Provider-level
compatinmodels.jsonnow also applies to classifier models, with the System One fieldsimageInputandsendImageOptInHeaderfor proxies that serve another service's classifiers. Extension classifier models acceptcompattoo.- Added
MiniMax-M3.1-Flashto theminimaxandminimax-cnproviders, with thinking levels low through max (#11121)- Added support for the Rex terminal: OSC 8 hyperlinks, truecolor, and inline images (#11131, #11150 by
@petrroll, #11183 by@nihaals)Changed
- Provider attribution headers now come from pi-ai's client identity. Extensions'
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.- Changed the default GitHub Copilot model from
gpt-5.4, which Copilot retired, togpt-6.1-sol.- Changed the default NVIDIA model to
nvidia/nemotron-3.5-super-vl-120b-a12b(#10910 by@cv)- Changed the default Xiaomi model to
mimo-v2.6-profor thexiaomiand Xiaomi Token Plan providers, since...Description has been truncated