New Features
- More built-in provider coverage - Added Ant Ling and NVIDIA NIM provider setup, plus MiniMax-M3 support for the direct MiniMax providers. See Providers.
- Richer extension context - Extensions can use
ctx.modeandctx.getSystemPromptOptions()to adapt behavior across TUI, RPC, JSON, and print modes and inspect base system prompt inputs. See Extensions.
Added
- Added containerization documentation and a Gondolin extension example for routing built-in tools into a local micro-VM.
- Added Ant Ling provider selection and setup documentation.
- Added MiniMax-M3 model support inherited from
@earendil-works/pi-aifor theminimaxandminimax-cndirect providers (#5313). - Added NVIDIA NIM provider selection, setup documentation, and direct NIM request attribution headers.
- Added
ctx.modeto extension contexts so extensions can distinguish TUI, RPC, JSON, and print mode. - Added
ctx.getSystemPromptOptions()for extension commands to inspect the current base system prompt inputs (#5306 by @xl0).
Fixed
- Fixed temporary extension package installs to use a private
~/.pi/agent/tmp/extensionsdirectory with0700permissions instead ofos.tmpdir()/pi-extensions. - Fixed git package source handling to reject unsafe host/path components and keep managed clone paths inside install roots.
- Fixed stored XSS in HTML session exports by sanitizing Markdown link and image URLs with a scheme allow-list after stripping control characters.
- Fixed SDK embedding in bundled Node apps failing with
ENOENTwhenpackage.jsonis not present next to the bundle entrypoint. The package metadata reader now gracefully handles missingpackage.jsonby using defaults, enablingcreateAgentSession()without requiring package-adjacent files at runtime (#5226). - Fixed HTTP timeout setting not being respected for non-Codex providers (e.g., llama.cpp via OpenAI-compatible API). The
httpIdleTimeoutMssetting (set via/settingsHTTP timeout) now applies as the default SDK request timeout for all providers that support it, not just OpenAI Codex Responses. Disabling the timeout (HTTP timeout = false) now correctly disables SDK timeouts for all supported providers by sending a maximum int32 value (effectively infinite) instead of 0, since SDKs treat timeout=0 as an immediate timeout (#5294). - Fixed inherited Amazon Bedrock requests to replace blank required user/tool-result text with a placeholder and skip blank replay text blocks (#4975).
- Fixed inherited Anthropic Claude Opus 4.7+ requests to suppress deprecated temperature parameters (#5251 by @yzhg1983).
- Fixed inherited OpenAI GPT-5.5 generated metadata to omit unsupported minimal thinking (#5243).
- Fixed inherited OpenRouter Kimi K2.6 thinking replay and developer-role instruction handling (#5309).
- Fixed inherited OpenRouter reasoning instruction requests to preserve the system role when required (#5221 by @PriNova).
- Fixed inherited overlay focus restoration so non-capturing overlays remain interactive after UI rerenders and explicit focus release (#5235 by @nicobailon).
- Fixed inherited tab width accounting in column slicing and overlay compositing so tab-containing output cannot exceed the terminal width (#5218).
- Fixed opening and listing very large JSONL session files by reading session entries line-by-line instead of materializing the full file as one string (#5231).
- Fixed the footer branch display in WSL
/mnt/...repositories to refresh after branch changes (#5264 by @psoukie). - Fixed
renderShell: "self"tool renderers that emit no component lines leaving a blank chat row (#5299). - Restored inherited NVIDIA Qwen 3.5 122B NIM model support.