Commit graph

2051 commits

Author SHA1 Message Date
Mario Zechner
8af8d0d672 Add MiniMax provider support (#656 by @dannote)
- Add minimax to KnownProvider and Api types
- Add MINIMAX_API_KEY to getEnvApiKey()
- Generate MiniMax-M2 and MiniMax-M2.1 models
- Add context overflow detection pattern
- Add tests to all required test files
- Update README and CHANGELOG with attribution

Also fixes:
- Bedrock duplicate toolResult ID when content has multiple blocks
- Sandbox extension unused parameter lint warning
2026-01-13 02:27:09 +01:00
Mario Zechner
edc576024f Regenerate package-lock.json with all platform bindings
Reverts CI workarounds - the lockfile now properly includes Linux native
bindings for parcel watcher, rollup, tailwindcss oxide, and lightningcss.
2026-01-13 01:17:08 +01:00
Mario Zechner
5c1228a017 Fix CI: add tailwindcss oxide Linux binding 2026-01-13 01:13:22 +01:00
Mario Zechner
9de970ed24 Fix CI: also install lightningcss Linux binding 2026-01-13 01:11:15 +01:00
Mario Zechner
38546e3e82 Merge PR #676: Feature/scoped models ordering 2026-01-13 01:10:43 +01:00
thomasmhr
d034a5b2f6 Add changelog entry for scoped-models ordering feature
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 01:10:32 +01:00
thomasmhr
68f1e30f06 Add Alt+Up/Down to reorder enabled models in scoped-models selector
- Add move() pure function for swapping adjacent items
- Handle Alt+Up/Down in handleInput to reorder enabled models
- Selection follows the moved item
- Update footer hint with new shortcut

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 01:10:20 +01:00
thomasmhr
15e18f61ab Refactor scoped-models-selector with pure functions for state
- Replace mutable items[].enabled with EnabledIds type (null | string[])
- Extract state operations as pure functions (toggle, enableAll, clearAll, move, getSortedIds)
- Simplify component to UI wiring only
- Prepare for Alt+Up/Down model reordering feature

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 01:10:20 +01:00
Mario Zechner
ea860751fd Fix CI: install missing parcel watcher Linux binding
package-lock.json was generated on macOS and only includes darwin
bindings. The Linux glibc binding is needed by tailwindcss.
2026-01-13 01:07:48 +01:00
Mario Zechner
9c694e36f8 Add changelog entry for #670 2026-01-13 01:05:26 +01:00
Ahmed Kamal
ff15414258
Improve Gemini CLI provider retries and headers (#670)
Improve Gemini CLI provider retries and headers

- Add Antigravity endpoint fallback (tries daily sandbox then prod when baseUrl is unset)
- Parse retry delays from headers (Retry-After, x-ratelimit-reset, x-ratelimit-reset-after) before body parsing
- Derive stable sessionId from first user message for cache affinity
- Retry empty SSE streams with backoff without duplicate start/done events
- Add anthropic-beta header for Claude thinking models only
2026-01-13 01:04:53 +01:00
Danila Poyarkov
9e4ae98358
Improve Google Cloud Code Assist error handling (#665)
* Improve Cloud Code Assist error messages

- Extract just the message from verbose JSON error responses
- Extract cause from generic 'fetch failed' errors for better diagnostics

* Make 'other side closed' network error retryable

* Make 'other side closed' network error retryable
2026-01-13 00:41:20 +01:00
Mario Zechner
259a41c8fd docs: Note prompt caching in Bedrock changelog entry 2026-01-13 00:38:35 +01:00
Mario Zechner
d442bbcc19 feat(ai): Add prompt caching for Claude models on Bedrock
Adds cache points to system prompt and last user message for:
- Claude 3.5 Haiku
- Claude 3.7 Sonnet
- Claude 4.x models (Opus, Sonnet, Haiku)

Uses Bedrock's cachePoint blocks with 5-minute TTL.
2026-01-13 00:38:12 +01:00
Mario Zechner
d0c1065731 docs: Mark Bedrock as experimental, add coding-agent changelog entry 2026-01-13 00:36:22 +01:00
Mario Zechner
fd268479a4 feat(ai): Add Amazon Bedrock provider (#494)
Adds support for Amazon Bedrock with Claude models including:
- Full streaming support via Converse API
- Reasoning/thinking support for Claude models
- Cross-region inference model ID handling
- Multiple AWS credential sources (profile, IAM keys, API keys)
- Image support in messages and tool results
- Unicode surrogate sanitization

Also adds 'Adding a New Provider' documentation to AGENTS.md and README.

Co-authored-by: nickchan2 <nickchan2@users.noreply.github.com>
2026-01-13 00:32:59 +01:00
Markus Ylisiurunen
4f216d318f
Apply service tier pricing (#675) 2026-01-12 23:56:51 +01:00
nathyong
7b2c627079
Insert cache point on openrouter+anthropic completions (#584)
Co-authored-by: nathyong <nathyong@noreply.github.com>
2026-01-12 23:29:33 +01:00
Mario Zechner
8cb9a42067 docs(coding-agent): add changelog entry for sandbox extension (#673) 2026-01-12 23:25:54 +01:00
Danila Poyarkov
4751ebddbd
feat(extensions): add sandbox extension for OS-level bash sandboxing (#673)
Uses @anthropic-ai/sandbox-runtime to enforce filesystem and network
restrictions on bash commands (sandbox-exec on macOS, bubblewrap on Linux).

Features:
- Per-project config via .pi/sandbox.json
- Global config via ~/.pi/agent/sandbox.json
- Enabled by default with sensible defaults
- --no-sandbox flag to disable
- /sandbox command to view current config
2026-01-12 23:25:31 +01:00
Markus Ylisiurunen
7b79e8ec51
Add service tier option for OpenAI Responses API (#672)
* add service tier option for OpenAI responses

* add serviceTier option for OpenAI Responses requests
2026-01-12 23:20:18 +01:00
Mario Zechner
7cad705a15 Add [Unreleased] section for next cycle 2026-01-12 19:05:08 +01:00
Mario Zechner
477c263838 Release v0.44.0 2026-01-12 19:04:28 +01:00
Mario Zechner
842a65f06a Add changelog and docs for settings fuzzy search (#643) 2026-01-12 19:00:33 +01:00
Mario Zechner
d91c7a000a Add fuzzy search to settings list (#643) 2026-01-12 18:10:36 +01:00
ninlds
ec2b7b5a00 Add fuzzy search to settings list 2026-01-12 18:10:33 +01:00
Mario Zechner
0138eee6f7 Fix tool mapping 2026-01-12 17:56:13 +01:00
Mario Zechner
8e5b0112e7 Add changelog entry for theme fix 2026-01-12 17:52:02 +01:00
Mario Zechner
f8e5fe1ed0 Use globalThis for theme to share across module loaders
When running with tsx in dev mode, jiti loads extensions in a separate
module cache. This caused the theme to be undefined in jiti's copy of
theme.ts since initTheme() was only called on tsx's copy.

Using globalThis with Symbol.for() ensures all module instances share
the same theme, regardless of which loader created them.
2026-01-12 17:51:41 +01:00
Mario Zechner
5f380822ea Revert "Fix jiti alias resolution in dev mode with tsx"
This reverts commit c7aa2c97a9.
2026-01-12 17:41:46 +01:00
Mario Zechner
c7aa2c97a9 Fix jiti alias resolution in dev mode with tsx
When running from source with tsx, the jiti aliases pointed to .js files
that don't exist (only .ts files exist). This caused jiti to fall back to
different module resolution, loading a separate instance of theme.ts where
initTheme() was never called, resulting in undefined theme.

Now checks if .js exists and falls back to .ts for dev mode compatibility.
2026-01-12 17:38:31 +01:00
Mario Zechner
a46c4aab4f Revert "Initialize theme with default value at module load time"
This reverts commit d18e44d378.
2026-01-12 17:29:56 +01:00
Mario Zechner
d18e44d378 Initialize theme with default value at module load time
Prevents undefined theme when extensions call ctx.ui.custom() in edge cases
where module resolution could cause the theme variable to be accessed before
initTheme() is called.
2026-01-12 17:27:59 +01:00
Mario Zechner
a60cd42d40 Merge PR #648: Change getAllTools() to return ToolInfo[]
Breaking change: pi.getAllTools() now returns ToolInfo[] (with name and description) instead of string[].
Extensions that only need names can use .map(t => t.name).

Closes #648
Fixes #647
2026-01-12 17:18:48 +01:00
Mario Zechner
1367a76ee8 Change getAllTools() to return ToolInfo[] instead of string[]
Breaking change: pi.getAllTools() now returns Array<{ name, description }>
instead of string[]. Extensions needing just names can use .map(t => t.name).

Removes redundant getToolInfo() method added in original PR.

Fixes #647
2026-01-12 17:18:43 +01:00
Mario Zechner
34ecca352e fix(tui): numbered list items showing '1.' when code blocks break list continuity (#660) 2026-01-12 17:10:02 +01:00
Ogulcan Celik
a5441706f3 fix(tui): numbered list items showing "1." when code blocks break list continuity 2026-01-12 17:09:51 +01:00
Mario Zechner
234f367d0d fix(coding-agent): make /new create a new session file
fixes #649
2026-01-12 17:06:33 +01:00
Aliou Diallo
638fbc459b
feat(coding-agent): add page-up/down navigation to session selector (#662)
* feat(tui): add pageUp/pageDown key support and selectPageUp/selectPageDown actions

* feat(coding-agent): add page-up/down navigation to session selector
2026-01-12 17:01:46 +01:00
Mario Zechner
8f95a13e07 feat(coding-agent): add session naming via /name command and extension API
- Add SessionInfoEntry type for session metadata
- Add /name <name> command to set session display name
- Add pi.setSessionName() and pi.getSessionName() extension API
- Session selector shows name (in warning color) instead of first message when set
- Session name included in fuzzy search
- /session command displays name when set

closes #650
2026-01-12 16:56:39 +01:00
Danila Poyarkov
7a41975e9e
Fix Claude via Google APIs requiring tool call IDs (#653)
Claude models accessed through Google Cloud Code Assist API require
explicit id fields in both functionCall and functionResponse parts.
Without these IDs, the API returns 'tool_use.id: Field required' error.

Add requiresToolCallId() helper to centralize the Claude model detection
and include IDs in both tool call and tool result message conversions.
2026-01-12 16:40:07 +01:00
Danila Poyarkov
934e7e470b
Avoid cross-provider thought signatures (#654)
* Avoid cross-provider thought signatures

* Fix Google thought signature replay

Filter thought signatures to same provider with base64 validation and rename the transform helper for clarity.
2026-01-12 16:38:53 +01:00
Mario Zechner
6f3ba88733 fix(coding-agent): prevent session selector from closing immediately when current folder has no sessions (#661) 2026-01-12 16:38:10 +01:00
Aliou Diallo
4e6ae25505 fix(coding-agent): prevent session selector from closing immediately when current folder has no sessions
Remove auto-cancel in loadCurrentSessions() so users can press Tab to switch
to "all" scope. Add context-aware empty state messages.
2026-01-12 16:37:38 +01:00
Mario Zechner
3433d88648 fix(coding-agent): inline ALT+UP UI hint (#657)
- Add inline hint for queued messages showing the Alt+Up restore shortcut
- Update README.md to document dequeue keybinding
- fixes #657
2026-01-12 16:36:57 +01:00
Thomas Mustier
520e3b02f3 feat(coding-agent): tweak queued hint text 2026-01-12 16:36:46 +01:00
Mario Zechner
06bf2493a1 docs: add changelog and readme entry for notify.ts extension (#658) 2026-01-12 16:33:42 +01:00
Fero
424597d558
example: add desktop notification extension (OSC 777) (#658) 2026-01-12 16:33:03 +01:00
Mario Zechner
175a137d00 Fix missing spacer between assistant message and text editor
Initialize widgetContainer with default spacer during init() instead of
only when extension widgets change.

fixes #655
2026-01-12 14:26:22 +01:00
Mario Zechner
6730b4fa59 Add [Unreleased] section for next cycle 2026-01-12 01:00:23 +01:00