Skip to content

build(deps-dev): bump the dev-dependencies group across 1 directory with 6 updates - #50

Merged
code-yeongyu merged 2 commits into
mainfrom
dependabot/npm_and_yarn/dev-dependencies-9a89bb60c6
Oct 3, 2026
Merged

code-yeongyu merged 2 commits into
mainfrom
dependabot/npm_and_yarn/dev-dependencies-9a89bb60c6

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Bumps the dev-dependencies group with 6 updates in the / directory:

Package From To
@earendil-works/pi-agent-core 0.87.1 0.99.1
@earendil-works/pi-ai 0.87.1 0.99.1
@earendil-works/pi-coding-agent 0.87.1 0.99.1
@earendil-works/pi-tui 0.87.1 0.99.1
@types/node 26.6.2 26.6.3
vitest 5.0.1 5.0.3

Updates @earendil-works/pi-agent-core from 0.87.1 to 0.99.1

Release notes

Sourced from @​earendil-works/pi-agent-core's releases.

v0.99.1

New Features

  • GPT-6.1 Sol — Available on OpenAI, Azure OpenAI, and OpenAI Codex, and now the default OpenAI Codex model. See Select a model.

Added

  • Added GPT-6.1 Sol (gpt-6.1-sol) to the OpenAI, Azure OpenAI Responses, and OpenAI Codex providers.

Changed

  • Changed the default OpenAI Codex model to GPT-6.1 Sol (gpt-6.1-sol).

Fixed

  • Fixed /login with OpenAI failing in the bundled release with a missing openai-chatgpt.js module error.

v0.99.0

New Features

  • Codemode and MCP — Connect MCP servers and let models run JavaScript that calls tools in parallel. See MCP Servers and Enable codemode.
  • System theme — Pi's colors now come from your terminal's own palette by default. See Use your terminal's colors.
  • Sign in with ChatGPT — Use a ChatGPT subscription with the OpenAI provider through /login openai. See Authenticate interactively.
  • Virtual models — Extensions can route each request to a different physical model. See Virtual Models.
  • Classifier models — Run Jev classifiers from codemode scripts, or use any llama.cpp model as a classifier. See How codemode works and Classification.

Added

  • Added codemode, tool search, and MCP support as built-in extensions. The codemode tool runs model-written JavaScript in a QuickJS sandbox that calls pi's tools; enable it with defaultTools or --tools and configure it with codemode.mode and codemode.inlineBudget. tool_search finds tools that are not declared to the model and declares them. MCP servers over stdio or streamable HTTP, with OAuth, come from mcp.json (global, or per project once trusted) or pi.registerMcpServer() and are managed with /mcp and pi mcp add|remove|list|login|logout. See MCP Servers and Enable codemode (#10040).
  • Added extension tool APIs for orchestrating tools: exposure (direct, model-only, codemode, deferred, or hidden), namespace, annotations, outputSchema with structuredContent, isError results, prepareLoadout(), and ctx.executeTool() for nested tool calls, which emit events with parentToolCallId and are recorded as bounded nestedCalls on the calling tool's result. See Tool exposure.
  • Added a warning when an extension that registers the same tool, command, or flag replaces a built-in extension (#10174 by @​cristinaponcela).
  • Added experimental virtual models: extensions register them with pi.registerVirtualModel() and pick a physical model and thinking level for each request. The footer shows the routed model, /session lists cost per physical model, and examples/extensions/jev-router.ts routes with the Jev classifier. See Virtual Models.
  • Added Sign in with ChatGPT to the OpenAI provider in /login, which uses a ChatGPT subscription with the OpenAI API. Pi stores a stable deviceId in the global settings for this login and omits it from bug reports.
  • Added the system theme, now the default, which derives pi's colors from the terminal's reported foreground, background, and ANSI palette and rebuilds them when the terminal switches between light and dark. See Use your terminal's colors.
  • Added #rgb, oklch(), and okhsl() colors and an optional appearance field to theme files, and theme.style(), theme.colors, and theme.appearance for extensions. See Themes and TUI.
  • Added a classifier model for every llama.cpp chat model, answered from next-token label probabilities. See Classification.
  • Added inherited Jev classifier models on OpenRouter, Cloudflare Workers AI, Vercel AI Gateway, and OpenCode Zen.
  • Added the fullscreenWheelScrollLines setting and /settings entry for fullscreen mouse-wheel scrolling. The default "auto" accelerates fast wheel spins outside local macOS terminals (#9758).
  • Added per-input disposition to successful RPC prompt, steer, and follow_up responses, AgentSession.steer()/followUp(), and RpcClient.prompt()/steer()/followUp(); RpcClient.prompt() also accepts streamingBehavior (#9098, #9803).
  • Added image generation to ModelRuntime: generateImages() with runtime-resolved auth (stored credentials, OAuth, runtime API keys, models.json headers), plus getModelsOfType(), getModelOfType(), getAvailableOfType(), getAllModels(), and getAllAvailable(). OpenRouter image models are listed under the openrouter provider and share its credential; an upstream ID can have separate chat and image entries. models.json providers and extension registrations without a model list keep built-in image generation. Extension model lists can include discriminated chat, image, and classifier entries with operation implementations; when supplied, they replace the provider catalog across every operation. Chat-facing reads (getModels(), getAvailableSnapshot(), the model picker) are unchanged.
  • Added classifier support to ModelRuntime, including classify(), classifier model accessors, runtime-resolved authentication, and the built-in TypeSafe jev-latest model.
  • Added types=chat,image,classifier to pi.dev model catalog requests so remote refreshes overlay every supported model type; entries of unknown model types are ignored.
  • Added the provider_stream_event extension event for observing parsed provider events before normalization, with an opt-in /debug-provider example viewer (#9784, #9901 by @​davidbrai).
  • Added a show/hide toggle (H) in HTML exports for custom messages marked display: false. Messages remain hidden by default and can also be revealed from the sidebar (#8896, #10020 by @​rwachtler).
  • Added inherited Claude Sonnet 5.5 support for Anthropic with adaptive thinking and a 1M context window.
  • Added a Built-in section in pi config to disable the built-in mcp, llama.cpp, codemode, and tool-search extensions globally or per project, stored as -builtin:<name> in the extensions setting. SDK inline extensions opt in with builtin: true.
  • Added +name and -name entries to the defaultTools setting to add or remove tools without repeating the defaults, for example "defaultTools": ["+codemode"]. Project entries of this form apply on top of the user setting. Documented how to enable codemode without MCP and how to use classifier models such as Jev from codemode scripts.
  • Added the token usage and cost of codemode models.classify() calls to the codemode tool result, so they count toward the session cost; the codemode result shows each call's cost.

Changed

... (truncated)

Changelog

Sourced from @​earendil-works/pi-agent-core's changelog.

[0.99.1] - 2026-09-29

[0.99.0] - 2026-09-29

Added

  • Added the onProviderStreamEvent agent option, which is passed to provider streams to observe parsed provider events before normalization (#9784, #9901 by @​davidbrai).
  • The agent loop now records the requested thinking level as thinkingLevel on each assistant message.
Commits
  • d86654a Release v0.99.1
  • 312184e Add [Unreleased] section for next cycle
  • 4b060d3 Release v0.99.0
  • f81cf55 docs: audit changelogs for 0.99.0
  • 8eb2bcc fix: bump vitest to 4.1.11 and gondolin's undici to 6.29.0
  • 8562bcf feat(coding-agent): codemode and MCP
  • 540e174 feat(coding-agent): Virtual models (#10035)
  • ca7460d feat: build with TypeScript 7 and run sources with plain node
  • d5cba1d feat(chord): make immutable delta tracker canonical
  • 002fc83 feat: expose provider stream events to extensions (#9901)
  • Additional commits viewable in compare view

Updates @earendil-works/pi-ai from 0.87.1 to 0.99.1

Release notes

Sourced from @​earendil-works/pi-ai's releases.

v0.99.1

New Features

  • GPT-6.1 Sol — Available on OpenAI, Azure OpenAI, and OpenAI Codex, and now the default OpenAI Codex model. See Select a model.

Added

  • Added GPT-6.1 Sol (gpt-6.1-sol) to the OpenAI, Azure OpenAI Responses, and OpenAI Codex providers.

Changed

  • Changed the default OpenAI Codex model to GPT-6.1 Sol (gpt-6.1-sol).

Fixed

  • Fixed /login with OpenAI failing in the bundled release with a missing openai-chatgpt.js module error.

v0.99.0

New Features

  • Codemode and MCP — Connect MCP servers and let models run JavaScript that calls tools in parallel. See MCP Servers and Enable codemode.
  • System theme — Pi's colors now come from your terminal's own palette by default. See Use your terminal's colors.
  • Sign in with ChatGPT — Use a ChatGPT subscription with the OpenAI provider through /login openai. See Authenticate interactively.
  • Virtual models — Extensions can route each request to a different physical model. See Virtual Models.
  • Classifier models — Run Jev classifiers from codemode scripts, or use any llama.cpp model as a classifier. See How codemode works and Classification.

Added

  • Added codemode, tool search, and MCP support as built-in extensions. The codemode tool runs model-written JavaScript in a QuickJS sandbox that calls pi's tools; enable it with defaultTools or --tools and configure it with codemode.mode and codemode.inlineBudget. tool_search finds tools that are not declared to the model and declares them. MCP servers over stdio or streamable HTTP, with OAuth, come from mcp.json (global, or per project once trusted) or pi.registerMcpServer() and are managed with /mcp and pi mcp add|remove|list|login|logout. See MCP Servers and Enable codemode (#10040).
  • Added extension tool APIs for orchestrating tools: exposure (direct, model-only, codemode, deferred, or hidden), namespace, annotations, outputSchema with structuredContent, isError results, prepareLoadout(), and ctx.executeTool() for nested tool calls, which emit events with parentToolCallId and are recorded as bounded nestedCalls on the calling tool's result. See Tool exposure.
  • Added a warning when an extension that registers the same tool, command, or flag replaces a built-in extension (#10174 by @​cristinaponcela).
  • Added experimental virtual models: extensions register them with pi.registerVirtualModel() and pick a physical model and thinking level for each request. The footer shows the routed model, /session lists cost per physical model, and examples/extensions/jev-router.ts routes with the Jev classifier. See Virtual Models.
  • Added Sign in with ChatGPT to the OpenAI provider in /login, which uses a ChatGPT subscription with the OpenAI API. Pi stores a stable deviceId in the global settings for this login and omits it from bug reports.
  • Added the system theme, now the default, which derives pi's colors from the terminal's reported foreground, background, and ANSI palette and rebuilds them when the terminal switches between light and dark. See Use your terminal's colors.
  • Added #rgb, oklch(), and okhsl() colors and an optional appearance field to theme files, and theme.style(), theme.colors, and theme.appearance for extensions. See Themes and TUI.
  • Added a classifier model for every llama.cpp chat model, answered from next-token label probabilities. See Classification.
  • Added inherited Jev classifier models on OpenRouter, Cloudflare Workers AI, Vercel AI Gateway, and OpenCode Zen.
  • Added the fullscreenWheelScrollLines setting and /settings entry for fullscreen mouse-wheel scrolling. The default "auto" accelerates fast wheel spins outside local macOS terminals (#9758).
  • Added per-input disposition to successful RPC prompt, steer, and follow_up responses, AgentSession.steer()/followUp(), and RpcClient.prompt()/steer()/followUp(); RpcClient.prompt() also accepts streamingBehavior (#9098, #9803).
  • Added image generation to ModelRuntime: generateImages() with runtime-resolved auth (stored credentials, OAuth, runtime API keys, models.json headers), plus getModelsOfType(), getModelOfType(), getAvailableOfType(), getAllModels(), and getAllAvailable(). OpenRouter image models are listed under the openrouter provider and share its credential; an upstream ID can have separate chat and image entries. models.json providers and extension registrations without a model list keep built-in image generation. Extension model lists can include discriminated chat, image, and classifier entries with operation implementations; when supplied, they replace the provider catalog across every operation. Chat-facing reads (getModels(), getAvailableSnapshot(), the model picker) are unchanged.
  • Added classifier support to ModelRuntime, including classify(), classifier model accessors, runtime-resolved authentication, and the built-in TypeSafe jev-latest model.
  • Added types=chat,image,classifier to pi.dev model catalog requests so remote refreshes overlay every supported model type; entries of unknown model types are ignored.
  • Added the provider_stream_event extension event for observing parsed provider events before normalization, with an opt-in /debug-provider example viewer (#9784, #9901 by @​davidbrai).
  • Added a show/hide toggle (H) in HTML exports for custom messages marked display: false. Messages remain hidden by default and can also be revealed from the sidebar (#8896, #10020 by @​rwachtler).
  • Added inherited Claude Sonnet 5.5 support for Anthropic with adaptive thinking and a 1M context window.
  • Added a Built-in section in pi config to disable the built-in mcp, llama.cpp, codemode, and tool-search extensions globally or per project, stored as -builtin:<name> in the extensions setting. SDK inline extensions opt in with builtin: true.
  • Added +name and -name entries to the defaultTools setting to add or remove tools without repeating the defaults, for example "defaultTools": ["+codemode"]. Project entries of this form apply on top of the user setting. Documented how to enable codemode without MCP and how to use classifier models such as Jev from codemode scripts.
  • Added the token usage and cost of codemode models.classify() calls to the codemode tool result, so they count toward the session cost; the codemode result shows each call's cost.

Changed

... (truncated)

Changelog

Sourced from @​earendil-works/pi-ai's changelog.

[0.99.1] - 2026-09-29

Added

  • Added GPT-6.1 Sol (gpt-6.1-sol) to the OpenAI, Azure OpenAI Responses, and OpenAI Codex providers.

[0.99.0] - 2026-09-29

Breaking Changes

  • Unified image models into the regular Provider/Models surface. The separate ImagesModels collection is removed: createImagesModels(), createImagesProvider(), ImagesProvider, openrouterImagesProvider(), builtinImagesProviders(), and builtinImagesModels() are gone. Use builtinModels(), models.getModelOfType("image", ...), models.generateImages(), and createProvider({ models, images }) instead. Existing unqualified reads remain chat-only.
  • Image models are now ImageModel with a required type: "image" and share BaseModel with chat models. The old plural image type names (ImagesModel, ImagesApi, KnownImagesApi, KnownImagesProvider, and ImagesProviderId) are removed. generateImages() accepts only image models. Output modalities (output) remain on image models only.
  • Generated model data schema is now version 6: every entry carries type, operation-specific catalogs include chat, image, and classifier models, and one upstream ID may have separate entries per type. OpenRouter image models live in the openrouter-images api group of openrouter.json; image-models.generated.ts and scripts/generate-image-models.ts are removed. Run npm run hydrate:model-data.

Added

  • Added Models.generateImages() with provider-resolved auth, Provider.generateImages?, and createProvider({ images }) keyed by model.api. createProvider() models and fetchModels accept models of every type, and api is optional when images or classifiers is given.
  • Added an optional model type ("chat", "image", or "classifier"). Chat models may omit it, so existing chat models, providers, and stores keep working unchanged. Narrow mixed lists with the new isModelType() guard or read the effective type with getModelType().
  • Added getModelsOfType(), getModelOfType(), getAvailableOfType(), getAllModels(), and getAllAvailable() on Models; optional Provider.getAllModels() and Provider.filterAllModels(); corresponding generated-catalog accessors; and the AnyModel and ModelTypeMap types. hasApi(), calculateCost(), and modelsAreEqual() accept AnyModel.
  • Added support for models of every type in ModelsStoreEntry.models. Stored and fetched models of unknown types are dropped instead of failing a refresh.
  • Added classifier models and Models.classify() with a provider-neutral JEV-style choice/score/bool contract. The built-in TypeSafe provider exposes models.dev's jev-latest through the System One API and translates public bool questions to TypeSafe's noul wire format.
  • Added Jev classifier models on OpenRouter (typesafe/jev-1.13, ~typesafe/jev-latest) through its TypeSafe-compatible System One endpoint, and on Cloudflare Workers AI (typesafe/jev) through the new cloudflare-workers-ai-system-one classifier API.
  • Added Jev classifier models on Vercel AI Gateway (typesafe-ai/jev, generated from its evaluation model catalog) and OpenCode Zen (jev-1.13, jev-1.13-free) through their TypeSafe-compatible System One endpoints.
  • Added usage to ClassifierResult: System One classifications report token counts, priced from the model catalog like chat usage.
  • Added a runtime chat-model check to the Models stream entry points so non-chat models fail with a clear ModelsError instead of a missing-api stream error.
  • Added array-based models.all.json and providers/{id}.all.json variants to the generated and published JSON catalog, allowing the same upstream ID once per model type; the existing keyed models.json and providers/{id}.json stay chat-only for released clients.
  • Added onProviderStreamEvent to observe parsed provider stream events before normalization, including provider-specific fields not retained in assistant messages (#9784, #9901 by @​davidbrai).
  • Added Claude Sonnet 5.5 to the built-in Anthropic model catalog with adaptive thinking, mid-conversation effort, 1M context, and official pricing metadata.
  • Added Sign in with ChatGPT to the openai provider: an OAuth login that uses a ChatGPT subscription with the OpenAI API. Models.login() accepts LoginOptions with getDeviceId(), which supplies a stable installation ID to login flows that need one. Subscription usage-limit errors are not retried and link to the ChatGPT usage page; temporary usage errors are retried.
  • Added the llama-cpp-classify classifier API, which answers classifier questions from llama-server's next-token probabilities for single-token answer labels.
  • Added optional AssistantMessage.thinkingLevel, which records the thinking level the agent loop requested for a response.

Changed

  • Renamed the OpenAI Codex provider to "OpenAI Codex (legacy)"; Sign in with ChatGPT on the openai provider supersedes it.
  • Unified the Anthropic, OpenAI Codex, OpenRouter, and Radius browser sign-in callback servers into one shared implementation with the same browser pages. The OAuth page helpers are now available as @earendil-works/pi-ai/utils/oauth-page.
  • Changed Radius browser sign-in to exchange the authorization code before showing the browser page, so token exchange failures are shown in the browser.

Fixed

  • Fixed 1-hour Anthropic cache writes reported by Vercel AI Gateway in streaming deltas being priced at the 5-minute rate (#9210).
  • Fixed model-level samplingParams being dropped by direct stream()/complete() calls on OpenAI-compatible APIs (#9506).
  • Fixed Mistral GLM models producing empty text blocks and split thinking blocks from empty content deltas, which could make later requests fail with "Expected at most one leading ThinkChunk" (#9674).
  • Fixed OpenAI Fast mode requests being priced at the standard rate when the response reports service_tier: "fast", as GPT-6 models do (#10034).
  • Fixed Mistral reasoning models ignoring the requested thinking level: GLM 5.3 now uses reasoning_effort instead of prompt_mode, GLM 5.2 accepts max, and Mistral models only offer the effort levels the API supports (#9678).
  • Fixed OpenCode Zen and OpenCode Go qwen3.8-flash thinking being replayed as plain text on later turns because the endpoint returns empty thinking signatures (#10047).
  • Fixed OpenAI Responses streams returning unfinished tool calls as runnable, which made servers that omit output_index (such as llama.cpp) run mixed-up commands; such streams now end with an error (#9974).
  • Fixed Anthropic and OpenAI Codex browser sign-in waiting indefinitely after the provider redirected with an authorization error; sign-in now fails with the provider's error description.
  • Fixed Anthropic browser sign-in failing when its callback port is in use; it now falls back to pasting the redirect URL.
  • Fixed GitHub Copilot Claude Opus 5.5 offering unsupported thinking levels when upstream model metadata is incomplete; it now offers low through max.
Commits
  • d86654a Release v0.99.1
  • 12c416e feat(ai,coding-agent): add GPT-6.1 Sol and make it the Codex default
  • 312184e Add [Unreleased] section for next cycle
  • 4b060d3 Release v0.99.0
  • f81cf55 docs: audit changelogs for 0.99.0
  • 8eb2bcc fix: bump vitest to 4.1.11 and gondolin's undici to 6.29.0
  • 02eed88 feat(ai,coding-agent): add alternative sign in for the openai provider
  • 89a5c7b feat(ai): report token usage and cost for System One classify results
  • 33e2033 feat(ai): expose Jev on Vercel AI Gateway and OpenCode Zen
  • 4df1574 feat(ai,coding-agent): share OAuth callback server and sign-in page
  • Additional commits viewable in compare view

Updates @earendil-works/pi-coding-agent from 0.87.1 to 0.99.1

Release notes

Sourced from @​earendil-works/pi-coding-agent's releases.

v0.99.1

New Features

  • GPT-6.1 Sol — Available on OpenAI, Azure OpenAI, and OpenAI Codex, and now the default OpenAI Codex model. See Select a model.

Added

  • Added GPT-6.1 Sol (gpt-6.1-sol) to the OpenAI, Azure OpenAI Responses, and OpenAI Codex providers.

Changed

  • Changed the default OpenAI Codex model to GPT-6.1 Sol (gpt-6.1-sol).

Fixed

  • Fixed /login with OpenAI failing in the bundled release with a missing openai-chatgpt.js module error.

v0.99.0

New Features

  • Codemode and MCP — Connect MCP servers and let models run JavaScript that calls tools in parallel. See MCP Servers and Enable codemode.
  • System theme — Pi's colors now come from your terminal's own palette by default. See Use your terminal's colors.
  • Sign in with ChatGPT — Use a ChatGPT subscription with the OpenAI provider through /login openai. See Authenticate interactively.
  • Virtual models — Extensions can route each request to a different physical model. See Virtual Models.
  • Classifier models — Run Jev classifiers from codemode scripts, or use any llama.cpp model as a classifier. See How codemode works and Classification.

Added

  • Added codemode, tool search, and MCP support as built-in extensions. The codemode tool runs model-written JavaScript in a QuickJS sandbox that calls pi's tools; enable it with defaultTools or --tools and configure it with codemode.mode and codemode.inlineBudget. tool_search finds tools that are not declared to the model and declares them. MCP servers over stdio or streamable HTTP, with OAuth, come from mcp.json (global, or per project once trusted) or pi.registerMcpServer() and are managed with /mcp and pi mcp add|remove|list|login|logout. See MCP Servers and Enable codemode (#10040).
  • Added extension tool APIs for orchestrating tools: exposure (direct, model-only, codemode, deferred, or hidden), namespace, annotations, outputSchema with structuredContent, isError results, prepareLoadout(), and ctx.executeTool() for nested tool calls, which emit events with parentToolCallId and are recorded as bounded nestedCalls on the calling tool's result. See Tool exposure.
  • Added a warning when an extension that registers the same tool, command, or flag replaces a built-in extension (#10174 by @​cristinaponcela).
  • Added experimental virtual models: extensions register them with pi.registerVirtualModel() and pick a physical model and thinking level for each request. The footer shows the routed model, /session lists cost per physical model, and examples/extensions/jev-router.ts routes with the Jev classifier. See Virtual Models.
  • Added Sign in with ChatGPT to the OpenAI provider in /login, which uses a ChatGPT subscription with the OpenAI API. Pi stores a stable deviceId in the global settings for this login and omits it from bug reports.
  • Added the system theme, now the default, which derives pi's colors from the terminal's reported foreground, background, and ANSI palette and rebuilds them when the terminal switches between light and dark. See Use your terminal's colors.
  • Added #rgb, oklch(), and okhsl() colors and an optional appearance field to theme files, and theme.style(), theme.colors, and theme.appearance for extensions. See Themes and TUI.
  • Added a classifier model for every llama.cpp chat model, answered from next-token label probabilities. See Classification.
  • Added inherited Jev classifier models on OpenRouter, Cloudflare Workers AI, Vercel AI Gateway, and OpenCode Zen.
  • Added the fullscreenWheelScrollLines setting and /settings entry for fullscreen mouse-wheel scrolling. The default "auto" accelerates fast wheel spins outside local macOS terminals (#9758).
  • Added per-input disposition to successful RPC prompt, steer, and follow_up responses, AgentSession.steer()/followUp(), and RpcClient.prompt()/steer()/followUp(); RpcClient.prompt() also accepts streamingBehavior (#9098, #9803).
  • Added image generation to ModelRuntime: generateImages() with runtime-resolved auth (stored credentials, OAuth, runtime API keys, models.json headers), plus getModelsOfType(), getModelOfType(), getAvailableOfType(), getAllModels(), and getAllAvailable(). OpenRouter image models are listed under the openrouter provider and share its credential; an upstream ID can have separate chat and image entries. models.json providers and extension registrations without a model list keep built-in image generation. Extension model lists can include discriminated chat, image, and classifier entries with operation implementations; when supplied, they replace the provider catalog across every operation. Chat-facing reads (getModels(), getAvailableSnapshot(), the model picker) are unchanged.
  • Added classifier support to ModelRuntime, including classify(), classifier model accessors, runtime-resolved authentication, and the built-in TypeSafe jev-latest model.
  • Added types=chat,image,classifier to pi.dev model catalog requests so remote refreshes overlay every supported model type; entries of unknown model types are ignored.
  • Added the provider_stream_event extension event for observing parsed provider events before normalization, with an opt-in /debug-provider example viewer (#9784, #9901 by @​davidbrai).
  • Added a show/hide toggle (H) in HTML exports for custom messages marked display: false. Messages remain hidden by default and can also be revealed from the sidebar (#8896, #10020 by @​rwachtler).
  • Added inherited Claude Sonnet 5.5 support for Anthropic with adaptive thinking and a 1M context window.
  • Added a Built-in section in pi config to disable the built-in mcp, llama.cpp, codemode, and tool-search extensions globally or per project, stored as -builtin:<name> in the extensions setting. SDK inline extensions opt in with builtin: true.
  • Added +name and -name entries to the defaultTools setting to add or remove tools without repeating the defaults, for example "defaultTools": ["+codemode"]. Project entries of this form apply on top of the user setting. Documented how to enable codemode without MCP and how to use classifier models such as Jev from codemode scripts.
  • Added the token usage and cost of codemode models.classify() calls to the codemode tool result, so they count toward the session cost; the codemode result shows each call's cost.

Changed

... (truncated)

Changelog

Sourced from @​earendil-works/pi-coding-agent's changelog.

[0.99.1] - 2026-09-29

New Features

  • GPT-6.1 Sol — Available on OpenAI, Azure OpenAI, and OpenAI Codex, and now the default OpenAI Codex model. See Select a model.

Added

  • Added GPT-6.1 Sol (gpt-6.1-sol) to the OpenAI, Azure OpenAI Responses, and OpenAI Codex providers.

Changed

  • Changed the default OpenAI Codex model to GPT-6.1 Sol (gpt-6.1-sol).

Fixed

  • Fixed /login with OpenAI failing in the bundled release with a missing openai-chatgpt.js module error.

[0.99.0] - 2026-09-29

New Features

  • Codemode and MCP — Connect MCP servers and let models run JavaScript that calls tools in parallel. See MCP Servers and Enable codemode.
  • System theme — Pi's colors now come from your terminal's own palette by default. See Use your terminal's colors.
  • Sign in with ChatGPT — Use a ChatGPT subscription with the OpenAI provider through /login openai. See Authenticate interactively.
  • Virtual models — Extensions can route each request to a different physical model. See Virtual Models.
  • Classifier models — Run Jev classifiers from codemode scripts, or use any llama.cpp model as a classifier. See How codemode works and Classification.

Added

  • Added codemode, tool search, and MCP support as built-in extensions. The codemode tool runs model-written JavaScript in a QuickJS sandbox that calls pi's tools; enable it with defaultTools or --tools and configure it with codemode.mode and codemode.inlineBudget. tool_search finds tools that are not declared to the model and declares them. MCP servers over stdio or streamable HTTP, with OAuth, come from mcp.json (global, or per project once trusted) or pi.registerMcpServer() and are managed with /mcp and pi mcp add|remove|list|login|logout. See MCP Servers and Enable codemode (#10040).
  • Added extension tool APIs for orchestrating tools: exposure (direct, model-only, codemode, deferred, or hidden), namespace, annotations, outputSchema with structuredContent, isError results, prepareLoadout(), and ctx.executeTool() for nested tool calls, which emit events with parentToolCallId and are recorded as bounded nestedCalls on the calling tool's result. See Tool exposure.
  • Added a warning when an extension that registers the same tool, command, or flag replaces a built-in extension (#10174 by @​cristinaponcela).
  • Added experimental virtual models: extensions register them with pi.registerVirtualModel() and pick a physical model and thinking level for each request. The footer shows the routed model, /session lists cost per physical model, and examples/extensions/jev-router.ts routes with the Jev classifier. See Virtual Models.
  • Added Sign in with ChatGPT to the OpenAI provider in /login, which uses a ChatGPT subscription with the OpenAI API. Pi stores a stable deviceId in the global settings for this login and omits it from bug reports.
  • Added the system theme, now the default, which derives pi's colors from the terminal's reported foreground, background, and ANSI palette and rebuilds them when the terminal switches between light and dark. See Use your terminal's colors.
  • Added #rgb, oklch(), and okhsl() colors and an optional appearance field to theme files, and theme.style(), theme.colors, and theme.appearance for extensions. See Themes and TUI.
  • Added a classifier model for every llama.cpp chat model, answered from next-token label probabilities. See Classification.
  • Added inherited Jev classifier models on OpenRouter, Cloudflare Workers AI, Vercel AI Gateway, and OpenCode Zen.
  • Added the fullscreenWheelScrollLines setting and /settings entry for fullscreen mouse-wheel scrolling. The default "auto" accelerates fast wheel spins outside local macOS terminals (#9758).
  • Added per-input disposition to successful RPC prompt, steer, and follow_up responses, AgentSession.steer()/followUp(), and RpcClient.prompt()/steer()/followUp(); RpcClient.prompt() also accepts streamingBehavior (#9098, #9803).
  • Added image generation to ModelRuntime: generateImages() with runtime-resolved auth (stored credentials, OAuth, runtime API keys, models.json headers), plus getModelsOfType(), getModelOfType(), getAvailableOfType(), getAllModels(), and getAllAvailable(). OpenRouter image models are listed under the openrouter provider and share its credential; an upstream ID can have separate chat and image entries. models.json providers and extension registrations without a model list keep built-in image generation. Extension model lists can include discriminated chat, image, and classifier entries with operation implementations; when supplied, they replace the provider catalog across every operation. Chat-facing reads (getModels(), getAvailableSnapshot(), the model picker) are unchanged.
  • Added classifier support to ModelRuntime, including classify(), classifier model accessors, runtime-resolved authentication, and the built-in TypeSafe jev-latest model.
  • Added types=chat,image,classifier to pi.dev model catalog requests so remote refreshes overlay every supported model type; entries of unknown model types are ignored.
  • Added the provider_stream_event extension event for observing parsed provider events before normalization, with an opt-in /debug-provider example viewer (#9784, #9901 by @​davidbrai).
  • Added a show/hide toggle (H) in HTML exports for custom messages marked display: false. Messages remain hidden by default and can also be revealed from the sidebar (#8896, #10020 by @​rwachtler).
  • Added inherited Claude Sonnet 5.5 support for Anthropic with adaptive thinking and a 1M context window.
  • Added a Built-in section in pi config to disable the built-in mcp, llama.cpp, codemode, and tool-search extensions globally or per project, stored as -builtin:<name> in the extensions setting. SDK inline extensions opt in with builtin: true.
  • Added +name and -name entries to the defaultTools setting to add or remove tools without repeating the defaults, for example "defaultTools": ["+codemode"]. Project entries of this form apply on top of the user setting. Documented how to enable codemode without MCP and how to use classifier models such as Jev from codemode scripts.
  • Added the token usage and cost of codemode models.classify() calls to the codemode tool result, so they count toward the session cost; the codemode result shows each call's cost.

... (truncated)

Commits
  • d86654a Release v0.99.1
  • a879e23 docs(coding-agent): audit unreleased changelog
  • 72abf01 fix(coding-agent): bundle openai-chatgpt OAuth flow
  • 12c416e feat(ai,coding-agent): add GPT-6.1 Sol and make it the Codex default
  • 312184e Add [Unreleased] section for next cycle
  • 4b060d3 Release v0.99.0
  • f81cf55 docs: audit changelogs for 0.99.0
  • 8eb2bcc fix: bump vitest to 4.1.11 and gondolin's undici to 6.29.0
  • 1ff5b6f feat(coding-agent): return up to 1 MiB of bash output to codemode scripts
  • 02eed88 feat(ai,coding-agent): add alternative sign in for the openai provider
  • Additional commits viewable in compare view

Updates @earendil-works/pi-tui from 0.87.1 to 0.99.1

Release notes

Sourced from @​earendil-works/pi-tui's releases.

v0.99.1

New Features

  • GPT-6.1 Sol — Available on OpenAI, Azure OpenAI, and OpenAI Codex, and now the default OpenAI Codex model. See Select a model.

Added

  • Added GPT-6.1 Sol (gpt-6.1-sol) to the OpenAI, Azure OpenAI Responses, and OpenAI Codex providers.

Changed

  • Changed the default OpenAI Codex model to GPT-6.1 Sol (gpt-6.1-sol).

Fixed

  • Fixed /login with OpenAI failing in the bundled release with a missing openai-chatgpt.js module error.

v0.99.0

New Features

  • Codemode and MCP — Connect MCP servers and let models run JavaScript that calls tools in parallel. See MCP Servers and Enable codemode.
  • System theme — Pi's colors now come from your terminal's own palette by default. See Use your terminal's colors.
  • Sign in with ChatGPT — Use a ChatGPT subscription with the OpenAI provider through /login openai. See Authenticate interactively.
  • Virtual models — Extensions can route each request to a different physical model. See Virtual Models.
  • Classifier models — Run Jev classifiers from codemode scripts, or use any llama.cpp model as a classifier. See How codemode works and Classification.

Added

  • Added codemode, tool search, and MCP support as built-in extensions. The codemode tool runs model-written JavaScript in a QuickJS sandbox that calls pi's tools; enable it with defaultTools or --tools and configure it with codemode.mode and codemode.inlineBudget. tool_search finds tools that are not declared to the model and declares them. MCP servers over stdio or streamable HTTP, with OAuth, come from mcp.json (global, or per project once trusted) or pi.registerMcpServer() and are managed with /mcp and pi mcp add|remove|list|login|logout. See MCP Servers and Enable codemode (#10040).
  • Added extension tool APIs for orchestrating tools: exposure (direct, model-only, codemode, deferred, or hidden), namespace, annotations, outputSchema with structuredContent, isError results, prepareLoadout(), and ctx.executeTool() for nested tool calls, which emit events with parentToolCallId and are recorded as bounded nestedCalls on the calling tool's result. See Tool exposure.
  • Added a warning when an extension that registers the same tool, command, or flag replaces a built-in extension (#10174 by @​cristinaponcela).
  • Added experimental virtual models: extensions register them with pi.registerVirtualModel() and pick a physical model and thinking level for each request. The footer shows the routed model, /session lists cost per physical model, and examples/extensions/jev-router.ts rou...

    Description has been truncated

    Review in cubic

…ith 6 updates

Bumps the dev-dependencies group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@earendil-works/pi-agent-core](https://github.com/earendil-works/pi/tree/HEAD/packages/agent) | `0.87.1` | `0.99.1` |
| [@earendil-works/pi-ai](https://github.com/earendil-works/pi/tree/HEAD/packages/ai) | `0.87.1` | `0.99.1` |
| [@earendil-works/pi-coding-agent](https://github.com/earendil-works/pi/tree/HEAD/packages/coding-agent) | `0.87.1` | `0.99.1` |
| [@earendil-works/pi-tui](https://github.com/earendil-works/pi/tree/HEAD/packages/tui) | `0.87.1` | `0.99.1` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.6.2` | `26.6.3` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `5.0.1` | `5.0.3` |



Updates `@earendil-works/pi-agent-core` from 0.87.1 to 0.99.1
- [Release notes](https://github.com/earendil-works/pi/releases)
- [Changelog](https://github.com/earendil-works/pi/blob/main/packages/agent/CHANGELOG.md)
- [Commits](https://github.com/earendil-works/pi/commits/v0.99.1/packages/agent)

Updates `@earendil-works/pi-ai` from 0.87.1 to 0.99.1
- [Release notes](https://github.com/earendil-works/pi/releases)
- [Changelog](https://github.com/earendil-works/pi/blob/main/packages/ai/CHANGELOG.md)
- [Commits](https://github.com/earendil-works/pi/commits/v0.99.1/packages/ai)

Updates `@earendil-works/pi-coding-agent` from 0.87.1 to 0.99.1
- [Release notes](https://github.com/earendil-works/pi/releases)
- [Changelog](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/CHANGELOG.md)
- [Commits](https://github.com/earendil-works/pi/commits/v0.99.1/packages/coding-agent)

Updates `@earendil-works/pi-tui` from 0.87.1 to 0.99.1
- [Release notes](https://github.com/earendil-works/pi/releases)
- [Changelog](https://github.com/earendil-works/pi/blob/main/packages/tui/CHANGELOG.md)
- [Commits](https://github.com/earendil-works/pi/commits/v0.99.1/packages/tui)

Updates `@types/node` from 26.6.2 to 26.6.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `vitest` from 5.0.1 to 5.0.3
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.3/packages/vitest)

---
updated-dependencies:
- dependency-name: "@earendil-works/pi-agent-core"
  dependency-version: 0.99.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@earendil-works/pi-ai"
  dependency-version: 0.99.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@earendil-works/pi-coding-agent"
  dependency-version: 0.99.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@earendil-works/pi-tui"
  dependency-version: 0.99.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@types/node"
  dependency-version: 26.6.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: vitest
  dependency-version: 5.0.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Oct 3, 2026
@dependabot
dependabot Bot requested a review from code-yeongyu as a code owner October 3, 2026 13:00
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Oct 3, 2026
Dependabot updated package-lock.json only; CI installs with
bun install --frozen-lockfile, which rejected the stale bun.lock.
@code-yeongyu

Copy link
Copy Markdown
Owner

Lead review: dev-only (devDependencies in package.json + package-lock.json + bun.lock; no dependencies/peerDependencies change), all checks green on 483fb97; maintainer verified check + 76/76 against an installed 0.99.1. Merging with the repo's admin bypass.

@code-yeongyu
code-yeongyu merged commit a346795 into main Oct 3, 2026
6 checks passed
@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/dev-dependencies-9a89bb60c6 branch October 3, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant