@kingingwang/pi-darwin-arm64 0.84.3 → 0.84.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/CHANGELOG.md +48 -2
- package/bin/README.md +5 -4
- package/bin/docs/compaction.md +2 -0
- package/bin/docs/custom-provider.md +7 -7
- package/bin/docs/environment-variables.md +3 -0
- package/bin/docs/extensions.md +18 -0
- package/bin/docs/keybindings.md +1 -1
- package/bin/docs/quickstart.md +1 -1
- package/bin/docs/rpc.md +23 -0
- package/bin/docs/settings.md +12 -4
- package/bin/docs/terminal-setup.md +12 -0
- package/bin/docs/usage.md +4 -3
- package/bin/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/bin/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/bin/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/bin/examples/extensions/gondolin/package-lock.json +2 -2
- package/bin/examples/extensions/gondolin/package.json +1 -1
- package/bin/examples/extensions/sandbox/package-lock.json +2 -2
- package/bin/examples/extensions/sandbox/package.json +1 -1
- package/bin/examples/extensions/with-deps/package-lock.json +2 -2
- package/bin/examples/extensions/with-deps/package.json +1 -1
- package/bin/package.json +6 -6
- package/bin/pi +0 -0
- package/package.json +1 -1
package/bin/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.84.4] - 2026-08-28
|
|
4
|
+
|
|
5
|
+
### New Features
|
|
6
|
+
|
|
7
|
+
- **Terminal capability overrides** — Override detected terminal hyperlink, image, and truecolor support. See [Capability Overrides](docs/terminal-setup.md#capability-overrides).
|
|
8
|
+
- **Extension UI prompt events** — Integrations can distinguish active agent work from time spent waiting for `ctx.ui` prompts. See [Extension UI prompt events](docs/extensions.md#ui_prompt_start--ui_prompt_end).
|
|
9
|
+
- **RPC queue clearing** — Retrieve and clear queued steering and follow-up messages with `clear_queue`. See [RPC `clear_queue`](docs/rpc.md#clear_queue).
|
|
10
|
+
- **Fullscreen selection copy controls** — Disable automatic selection copying in fullscreen mode and use Ctrl+X to copy the active selection. See [UI & Display](docs/settings.md#ui--display).
|
|
11
|
+
- **DeepSeek V4 Flash Vision (experimental)** — Use the vision-capable model through the built-in DeepSeek provider. See [API Keys](docs/providers.md#api-keys).
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Added `ui_prompt_start` and `ui_prompt_end` extension events so host integrations can distinguish active agent work from waiting on user-facing `ctx.ui` prompts ([#8355](https://github.com/earendil-works/pi/pull/8355) by [@cristinaponcela](https://github.com/cristinaponcela)).
|
|
16
|
+
- Added `detectSupportedImageMimeTypeFromFile()` to the public library exports ([#8600](https://github.com/earendil-works/pi/pull/8600) by [@xl0](https://github.com/xl0)).
|
|
17
|
+
- Added inherited experimental vision-capable `deepseek-v4-flash-vision-exp` model support.
|
|
18
|
+
- Added transcript usage notices for compaction and branch summaries when cache miss notices are enabled.
|
|
19
|
+
- Added RPC `clear_queue` to retrieve and remove queued steering and follow-up messages ([#8432](https://github.com/earendil-works/pi/issues/8432)).
|
|
20
|
+
- Added environment variables and advanced settings for overriding auto-detected terminal hyperlink, image, and truecolor capabilities ([#8665](https://github.com/earendil-works/pi/issues/8665)).
|
|
21
|
+
- Added `fullscreenCopyOnSelect` to disable automatic fullscreen selection copy; when disabled, `Ctrl+X` copies the active text selection before falling back to the last assistant message, while `/tree` still copies the selected message ([#7720](https://github.com/earendil-works/pi/issues/7720)).
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Fixed toggling thinking visibility clearing partial output from running Bash tools ([#8611](https://github.com/earendil-works/pi/issues/8611)).
|
|
26
|
+
- Fixed Windows shell aborts crashing Pi when `taskkill.exe` is unavailable on `PATH` ([#6596](https://github.com/earendil-works/pi/issues/6596)).
|
|
27
|
+
- Fixed resumed sessions corrupting the next appended entry when their JSONL file lacks a trailing newline ([#8345](https://github.com/earendil-works/pi/issues/8345)).
|
|
28
|
+
- Fixed extension messages sent with `triggerTurn: false` while the agent is running being inserted between a tool call and its result, which made providers that validate message order reject the replayed history. They are now appended once the turn's tool results are in ([#8537](https://github.com/earendil-works/pi/issues/8537)).
|
|
29
|
+
- Fixed compaction and branch summaries forcing `toolChoice: "none"` ([#8649](https://github.com/earendil-works/pi/issues/8649), [#8638](https://github.com/earendil-works/pi/issues/8638)).
|
|
30
|
+
- Fixed large tool results crossing the auto-compaction threshold being sent to the provider before compaction. Pi now compacts between tool execution and the next assistant response in the same run, and restores interactive progress when that run resumes ([#6879](https://github.com/earendil-works/pi/issues/6879)).
|
|
31
|
+
- Fixed Google Vertex requests failing with `HttpsProxyAgent is not a constructor` when the bundled Node.js runtime uses an HTTP(S) proxy ([#8610](https://github.com/earendil-works/pi/issues/8610)).
|
|
32
|
+
- Fixed saving a default model from a non-empty model scope so it remains available in that scope.
|
|
33
|
+
- Fixed inherited `@` file autocomplete ranking to prefer direct and shallower matches over similarly ranked nested paths ([#8669](https://github.com/earendil-works/pi/pull/8669)).
|
|
34
|
+
- Fixed inherited OpenAI-compatible streams serializing thinking signatures repeatedly during streaming ([#8671](https://github.com/earendil-works/pi/pull/8671)).
|
|
35
|
+
- Fixed inherited main-screen rendering crashing when image-heavy output exceeded V8's string length limit ([#8028](https://github.com/earendil-works/pi/issues/8028)).
|
|
36
|
+
- Fixed inherited fullscreen double-click word selection splitting paths and kebab-case tokens on `/` and `-` ([#8676](https://github.com/earendil-works/pi/pull/8676)).
|
|
37
|
+
- Fixed inherited Cloudflare AI Gateway catalogs omitting supported `workers-ai/*` passthrough models.
|
|
38
|
+
- Fixed inherited OpenAI-compatible reasoning replay to merge consecutive streamed text and summary `reasoning_details` deltas.
|
|
39
|
+
- Fixed inherited OpenRouter reasoning controls so reasoning-mandatory models do not receive `effort: "none"` ([#8614](https://github.com/earendil-works/pi/pull/8614) by [@davidbrai](https://github.com/davidbrai)).
|
|
40
|
+
- Fixed inherited OpenAI-compatible Chat Completions ignoring an explicitly requested `toolChoice` when no tools are defined.
|
|
41
|
+
- Fixed inherited fragmented Mistral tool calls splitting when continuation chunks omit the tool-call ID ([#8387](https://github.com/earendil-works/pi/issues/8387)).
|
|
42
|
+
|
|
3
43
|
## [0.84.3] - 2026-08-24
|
|
4
44
|
|
|
5
45
|
### New Features
|
|
@@ -17,7 +57,11 @@
|
|
|
17
57
|
- Added an optional `powershell` tool for Windows, configurable through `defaultTools` and the SDK. See [PowerShell Tool](docs/windows.md#powershell-tool).
|
|
18
58
|
- Added a `/thinking` selector and searchable default choices to the model and thinking selectors; Ctrl+S saves the selected model as the global default. See [Models and Thinking](docs/keybindings.md#models-and-thinking).
|
|
19
59
|
- Added optional routing session IDs to exported compaction summary helpers so callers can preserve provider routing without enabling prompt cache writes.
|
|
20
|
-
- Added
|
|
60
|
+
- Added
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
usage notices for compaction and branch summaries when cache miss notices are enabled.
|
|
21
65
|
- Added `session_compact_failed` extension events so compaction failures and aborts expose their reason, retry state, source, and error message to handlers ([#8175](https://github.com/earendil-works/pi/issues/8175)).
|
|
22
66
|
- Added inherited provider-neutral `toolChoice` support to simple stream requests.
|
|
23
67
|
- Added inherited automatic Anthropic server-side refusal fallback for supported first-party models, including returned-model usage pricing ([#8017](https://github.com/earendil-works/pi/issues/8017)).
|
|
@@ -64,8 +108,10 @@
|
|
|
64
108
|
- Fixed UTF-8 BOM markers preventing frontmatter and user configuration files from loading ([#8337](https://github.com/earendil-works/pi/issues/8337)).
|
|
65
109
|
- Fixed invalid settings files being easy to miss during interactive startup by rendering warnings with the file path inside the TUI ([#7829](https://github.com/earendil-works/pi/issues/7829)).
|
|
66
110
|
- Fixed the subagent example repeatedly prompting before running project-local agents in trusted repositories ([#8261](https://github.com/earendil-works/pi/issues/8261)).
|
|
111
|
+
- Added `session_compact_failed` extension events so compaction failures and aborts expose their reason, retry state, source, and error message to handlers ([#8175](https://github.com/earendil-works/pi/issues/8175)).
|
|
112
|
+
- Fixed truncated compaction and branch summaries being persisted when generation reaches its output token limit ([#7048](https://github.com/earendil-works/pi/issues/7048)).
|
|
67
113
|
- Fixed npm package update checks treating older registry versions as available updates, preventing `pi update` from downgrading already-newer installed packages ([#8226](https://github.com/earendil-works/pi/issues/8226)).
|
|
68
|
-
- Fixed built-in llama.cpp models disappearing from `/model` when `/llama` refreshed a configured server under `PI_OFFLINE`, and included idle-slept `sleeping` router models in the selectable catalog ([#
|
|
114
|
+
- Fixed built-in llama.cpp models disappearing from `/model` when `/llama` refreshed a configured server under `PI_OFFLINE`, and included idle-slept `sleeping` router models plus autoloadable unloaded presets in the selectable catalog ([#8558](https://github.com/earendil-works/pi/pull/8558) by [@cristinaponcela](https://github.com/cristinaponcela)).
|
|
69
115
|
- Fixed `pi.registerFlag()` accepting default values that do not match the declared flag type ([#8064](https://github.com/earendil-works/pi/issues/8064)).
|
|
70
116
|
- Fixed Z.AI Coding Plan defaults referencing the removed GLM-5.1 model ([#8096](https://github.com/earendil-works/pi/issues/8096)).
|
|
71
117
|
- Fixed repeated ambiguous truncated-response recovery being mislabeled as context overflow ([#8130](https://github.com/earendil-works/pi/issues/8130)).
|
package/bin/README.md
CHANGED
|
@@ -96,7 +96,7 @@ Then just talk to pi. By default, pi gives the model four tools: `read`, `write`
|
|
|
96
96
|
|
|
97
97
|
## Providers & Models
|
|
98
98
|
|
|
99
|
-
For each built-in provider, pi maintains a list of tool-capable models. Configured provider catalogs refresh automatically; run `pi update --models` to force an immediate refresh. Authenticate via subscription (`/login`) or API key, then select any model from that provider via `/model` (or Ctrl+L).
|
|
99
|
+
For each built-in provider, pi maintains a list of tool-capable models. Configured provider catalogs refresh automatically; run `pi update --models` to force an immediate refresh. Authenticate via subscription (`/login`) or API key, then select any model from that provider via `/model` (or Ctrl+L). Press Ctrl+S in the model picker to save the highlighted model as the startup default.
|
|
100
100
|
|
|
101
101
|
**Subscriptions:**
|
|
102
102
|
- Anthropic Claude Pro/Max
|
|
@@ -178,9 +178,10 @@ Type `/` in the editor to trigger commands. [Extensions](#extensions) can regist
|
|
|
178
178
|
|---------|-------------|
|
|
179
179
|
| `/login`, `/logout` | Manage provider credentials |
|
|
180
180
|
| [`/llama`](docs/llama-cpp.md) | Download, load, and unload llama.cpp router models |
|
|
181
|
-
| `/model` | Switch models |
|
|
181
|
+
| `/model` | Switch models; Ctrl+S in the picker saves the startup default |
|
|
182
|
+
| `/thinking` | Switch thinking level; Ctrl+S in the picker saves the startup default |
|
|
182
183
|
| `/scoped-models` | Enable/disable models for Ctrl+P cycling |
|
|
183
|
-
| `/settings` |
|
|
184
|
+
| `/settings` | Theme, message delivery, transport, and other preferences |
|
|
184
185
|
| `/resume` | Pick from previous sessions |
|
|
185
186
|
| `/new` | Start a new session |
|
|
186
187
|
| `/name <name>` | Set session display name |
|
|
@@ -216,7 +217,7 @@ See `/hotkeys` for the full list. Customize via `~/.pi/agent/keybindings.json`.
|
|
|
216
217
|
| Shift+Tab | Cycle thinking level |
|
|
217
218
|
| Ctrl+O | Collapse/expand tool output |
|
|
218
219
|
| Ctrl+T | Collapse/expand thinking blocks |
|
|
219
|
-
| Ctrl+X | Copy the last assistant message |
|
|
220
|
+
| Ctrl+X | Copy the last assistant message; with fullscreen copy-on-select disabled, copy the active text selection |
|
|
220
221
|
|
|
221
222
|
### Message Queue
|
|
222
223
|
|
package/bin/docs/compaction.md
CHANGED
|
@@ -34,6 +34,8 @@ contextTokens > contextWindow - reserveTokens
|
|
|
34
34
|
|
|
35
35
|
By default, `reserveTokens` is 16384 tokens (configurable in `~/.pi/agent/settings.json` or `<project-dir>/.pi/settings.json`). This leaves room for the LLM's response.
|
|
36
36
|
|
|
37
|
+
During a multi-turn agent run, Pi checks this threshold after tools finish and their results are appended, before starting the next assistant response. If the threshold is crossed, Pi compacts inside the same agent run and resumes with the summary and retained messages. It skips this between-turn check when the completed tool batch terminates the run and no queued message requires another response. Pi also checks the threshold before a new user prompt and after a low-level agent run ends.
|
|
38
|
+
|
|
37
39
|
You can also trigger manually with `/compact [instructions]`, where optional instructions focus the summary.
|
|
38
40
|
|
|
39
41
|
### How It Works
|
|
@@ -394,15 +394,15 @@ interface OAuthCredentials {
|
|
|
394
394
|
|
|
395
395
|
## Custom Streaming API
|
|
396
396
|
|
|
397
|
-
For providers with non-standard APIs, implement `streamSimple`. Study the existing
|
|
397
|
+
For providers with non-standard APIs, implement `streamSimple`. Study the existing API implementations before writing your own:
|
|
398
398
|
|
|
399
399
|
**Reference implementations:**
|
|
400
|
-
- [anthropic.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/
|
|
401
|
-
- [mistral.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/
|
|
402
|
-
- [openai-completions.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/
|
|
403
|
-
- [openai-responses.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/
|
|
404
|
-
- [google.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/
|
|
405
|
-
- [
|
|
400
|
+
- [anthropic-messages.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/api/anthropic-messages.ts) - Anthropic Messages API
|
|
401
|
+
- [mistral-conversations.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/api/mistral-conversations.ts) - Mistral Conversations API
|
|
402
|
+
- [openai-completions.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/api/openai-completions.ts) - OpenAI Chat Completions
|
|
403
|
+
- [openai-responses.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/api/openai-responses.ts) - OpenAI Responses API
|
|
404
|
+
- [google-generative-ai.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/api/google-generative-ai.ts) - Google Generative AI
|
|
405
|
+
- [bedrock-converse-stream.ts](https://github.com/earendil-works/pi-mono/blob/main/packages/ai/src/api/bedrock-converse-stream.ts) - AWS Bedrock
|
|
406
406
|
|
|
407
407
|
### Stream Pattern
|
|
408
408
|
|
|
@@ -87,6 +87,9 @@ These variables are read by Pi itself:
|
|
|
87
87
|
| `PI_CACHE_RETENTION` | Set to `long` for extended provider prompt caching where supported |
|
|
88
88
|
| `PI_SHARE_VIEWER_URL` | Override the base URL used by `/share` |
|
|
89
89
|
| `PI_HARDWARE_CURSOR` | Set to `1` to show the hardware cursor; see [Terminal setup](terminal-setup.md) |
|
|
90
|
+
| `PI_HYPERLINKS` | Override OSC 8 hyperlink detection with `1`, `0`, or `auto` |
|
|
91
|
+
| `PI_IMAGE_PROTOCOL` | Override inline image detection with `kitty`, `iterm2`, `none`, or `auto` |
|
|
92
|
+
| `PI_TRUE_COLOR` | Override truecolor detection with `1`, `0`, or `auto` |
|
|
90
93
|
| `PI_TUI_ESC_TIMEOUT` | How long to wait after a lone ESC before treating it as Escape, in milliseconds; defaults to `100` over SSH and `10` otherwise. Increase if Alt-key input is misread as Escape |
|
|
91
94
|
| `VISUAL`, `EDITOR` | External editor fallback when `externalEditor` is unset |
|
|
92
95
|
| `HTTP_PROXY`, `HTTPS_PROXY` | Proxy outbound HTTP requests |
|
package/bin/docs/extensions.md
CHANGED
|
@@ -580,6 +580,24 @@ pi.on("agent_settled", async (_event, ctx) => {
|
|
|
580
580
|
});
|
|
581
581
|
```
|
|
582
582
|
|
|
583
|
+
#### ui_prompt_start / ui_prompt_end
|
|
584
|
+
|
|
585
|
+
Notification-only lifecycle events for blocking user-facing extension UI prompts. They fire around `ctx.ui.select()`, `ctx.ui.confirm()`, `ctx.ui.input()`, `ctx.ui.editor()`, and `ctx.ui.custom()` so host/status integrations can report "waiting for user" instead of just "running".
|
|
586
|
+
|
|
587
|
+
Nested or overlapping prompts are coalesced into one outer waiting span. Handlers are invoked best-effort and are not awaited before showing or closing the prompt.
|
|
588
|
+
|
|
589
|
+
```typescript
|
|
590
|
+
pi.on("ui_prompt_start", async (event, ctx) => {
|
|
591
|
+
// event.reason === "ui_prompt"
|
|
592
|
+
// event.kind: "select" | "confirm" | "input" | "editor" | "custom"
|
|
593
|
+
// event.title: prompt title when available
|
|
594
|
+
});
|
|
595
|
+
|
|
596
|
+
pi.on("ui_prompt_end", async (event, ctx) => {
|
|
597
|
+
// Pi is no longer waiting on that UI prompt span.
|
|
598
|
+
});
|
|
599
|
+
```
|
|
600
|
+
|
|
583
601
|
#### turn_start / turn_end
|
|
584
602
|
|
|
585
603
|
Fired for each turn (one LLM response + tool calls).
|
package/bin/docs/keybindings.md
CHANGED
|
@@ -157,7 +157,7 @@ This routing remains configurable through the ordinary action bindings. For exam
|
|
|
157
157
|
| Keybinding id | Default | Description |
|
|
158
158
|
|--------|---------|-------------|
|
|
159
159
|
| `app.tools.expand` | `ctrl+o` | Collapse or expand tool output |
|
|
160
|
-
| `app.message.copy` | `ctrl+x` | Copy the last assistant message, or the
|
|
160
|
+
| `app.message.copy` | `ctrl+x` | Copy the selected message in `/tree`; otherwise copy the last assistant message, or the active fullscreen text selection when `fullscreenCopyOnSelect` is disabled |
|
|
161
161
|
| `app.message.followUp` | `alt+enter` (`ctrl+q` on Windows and WSL) | Queue follow-up message |
|
|
162
162
|
| `app.message.dequeue` | `alt+up` (`alt+q` on Windows and WSL) | Restore queued messages to editor |
|
|
163
163
|
|
package/bin/docs/quickstart.md
CHANGED
|
@@ -129,7 +129,7 @@ The command output is sent to the model. Use `!!command` to run a command withou
|
|
|
129
129
|
|
|
130
130
|
### Switch models
|
|
131
131
|
|
|
132
|
-
Use `/model` or Ctrl+L to choose a model. Use Shift+Tab to cycle thinking level. Use Ctrl+P / Shift+Ctrl+P to cycle through scoped models.
|
|
132
|
+
Use `/model` or Ctrl+L to choose a model for the current session. Press Ctrl+S in the model picker to save the highlighted model as the startup default. Use `/thinking` to choose a thinking level for the current session, or Ctrl+S in that picker to save the startup default thinking level. Use Shift+Tab to cycle thinking level. Use Ctrl+P / Shift+Ctrl+P to cycle through scoped models.
|
|
133
133
|
|
|
134
134
|
### Continue later
|
|
135
135
|
|
package/bin/docs/rpc.md
CHANGED
|
@@ -134,6 +134,29 @@ Response:
|
|
|
134
134
|
{"type": "response", "command": "abort", "success": true}
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
+
#### clear_queue
|
|
138
|
+
|
|
139
|
+
Remove queued steering and follow-up messages and return their text.
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{"type": "clear_queue"}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Response:
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"type": "response",
|
|
149
|
+
"command": "clear_queue",
|
|
150
|
+
"success": true,
|
|
151
|
+
"data": {
|
|
152
|
+
"steering": ["Change direction"],
|
|
153
|
+
"followUp": ["Summarize when finished"]
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
To implement interactive Esc behavior, send `clear_queue` before `abort`, then restore the returned text in the client editor. `abort` continues queued messages when they remain in the session.
|
|
159
|
+
|
|
137
160
|
#### new_session
|
|
138
161
|
|
|
139
162
|
Start a fresh session. Can be cancelled by a `session_before_switch` extension event handler.
|
package/bin/docs/settings.md
CHANGED
|
@@ -7,7 +7,7 @@ Pi uses JSON settings files with project settings overriding global settings.
|
|
|
7
7
|
| `~/.pi/agent/settings.json` | Global (all projects) |
|
|
8
8
|
| `.pi/settings.json` | Project (current directory) |
|
|
9
9
|
|
|
10
|
-
Edit directly or use `/settings` for common options.
|
|
10
|
+
Edit directly or use `/settings` for common options. To save startup model defaults interactively, use `/model` and press Ctrl+S on the desired model. To save the startup thinking level, use `/thinking` and press Ctrl+S.
|
|
11
11
|
|
|
12
12
|
## Project Trust
|
|
13
13
|
|
|
@@ -27,9 +27,10 @@ Use `/trust` in interactive mode to save a project trust decision for future ses
|
|
|
27
27
|
|
|
28
28
|
| Setting | Type | Default | Description |
|
|
29
29
|
|---------|------|---------|-------------|
|
|
30
|
-
| `defaultProvider` | string | - |
|
|
31
|
-
| `defaultModel` | string | - |
|
|
32
|
-
| `defaultThinkingLevel` | string | - | `"off"`, `"minimal"`, `"low"`, `"medium"`, `"high"`, `"xhigh"`, `"max"` |
|
|
30
|
+
| `defaultProvider` | string | - | Startup provider (e.g., `"anthropic"`, `"openai"`; saved with Ctrl+S in `/model`, or edited manually) |
|
|
31
|
+
| `defaultModel` | string | - | Startup model ID (saved with Ctrl+S in `/model`, or edited manually) |
|
|
32
|
+
| `defaultThinkingLevel` | string | - | Startup thinking level (saved with Ctrl+S in `/thinking`, or edited manually): `"off"`, `"minimal"`, `"low"`, `"medium"`, `"high"`, `"xhigh"`, `"max"` |
|
|
33
|
+
| `modelThinkingLevels` | object | - | Per-model startup thinking levels keyed by `"provider/modelId"`; configure from `/settings` → Default thinking level per model or edit manually |
|
|
33
34
|
| `hideThinkingBlock` | boolean | `false` | Hide thinking blocks in output |
|
|
34
35
|
| `showCacheMissNotices` | boolean | `false` | Show transcript notices for significant prompt-cache misses and compaction or branch-summary usage |
|
|
35
36
|
| `thinkingBudgets` | object | - | Custom token budgets per thinking level. Anthropic, Google, and Bedrock use these natively. OpenAI-compatible models use them when `compat.thinkingTokenBudgetField` (or `supportsThinkingTokenBudget`) is set. |
|
|
@@ -68,6 +69,7 @@ Use `/trust` in interactive mode to save a project trust decision for future ses
|
|
|
68
69
|
| `tuiMode` | string | `"regular"` | Interactive TUI mode: `"regular"` or experimental `"fullscreen"`. Changes from `/settings` apply immediately; `--tui-mode` overrides this setting at startup |
|
|
69
70
|
| `fullscreenExitOutput` | string | `"transcript"` | Fullscreen exit output: `"transcript"` prints the final transcript and resume hint, while `"resume-hint"` restores the previous screen and prints only the resume hint. Has no effect in regular TUI mode |
|
|
70
71
|
| `fullscreenScrollbar` | string | `"auto"` | Fullscreen transcript scrollbar: `"auto"` shows it temporarily while scrolling, `"always"` reserves the rightmost column and keeps it visible, and `"hidden"` hides it. Has no effect in regular TUI mode |
|
|
72
|
+
| `fullscreenCopyOnSelect` | boolean | `true` | Automatically copy selected text in fullscreen mode. When disabled, selections stay highlighted and `Ctrl+X` copies the active selection |
|
|
71
73
|
|
|
72
74
|
For VS Code, include `--wait` so pi resumes after the editor exits:
|
|
73
75
|
|
|
@@ -188,6 +190,9 @@ Keep `retry.provider.maxRetries` at `0` unless provider-level retries are explic
|
|
|
188
190
|
| `terminal.showImages` | boolean | `true` | Show images in terminal (if supported) |
|
|
189
191
|
| `terminal.imageWidthCells` | number | `60` | Preferred inline image width in terminal cells |
|
|
190
192
|
| `terminal.clearOnShrink` | boolean | `false` | Clear empty rows when content shrinks (can cause flicker) |
|
|
193
|
+
| `terminal.hyperlinks` | boolean or `"auto"` | `"auto"` | Override OSC 8 hyperlink support (advanced, JSON-only) |
|
|
194
|
+
| `terminal.images` | string or boolean | `"auto"` | Override image protocol support with `"kitty"`, `"iterm2"`, `false`, or `"auto"` (advanced, JSON-only) |
|
|
195
|
+
| `terminal.trueColor` | boolean or `"auto"` | `"auto"` | Override truecolor support (advanced, JSON-only) |
|
|
191
196
|
| `images.autoResize` | boolean | `true` | Resize images to 2000x2000 max. Applies to `@file` attachments, `read`, and images returned by tools |
|
|
192
197
|
| `images.blockImages` | boolean | `false` | Block all images from being sent to LLM |
|
|
193
198
|
|
|
@@ -326,6 +331,9 @@ See [packages.md](packages.md) for package management details.
|
|
|
326
331
|
"defaultProvider": "anthropic",
|
|
327
332
|
"defaultModel": "claude-sonnet-4-20250514",
|
|
328
333
|
"defaultThinkingLevel": "medium",
|
|
334
|
+
"modelThinkingLevels": {
|
|
335
|
+
"anthropic/claude-sonnet-4-20250514": "high"
|
|
336
|
+
},
|
|
329
337
|
"theme": "dark",
|
|
330
338
|
"compaction": {
|
|
331
339
|
"enabled": true,
|
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
Pi uses the [Kitty keyboard protocol](https://sw.kovidgoyal.net/kitty/keyboard-protocol/) for reliable modifier key detection. Most modern terminals support this protocol, but some require configuration.
|
|
4
4
|
|
|
5
|
+
## Capability Overrides
|
|
6
|
+
|
|
7
|
+
Pi auto-detects OSC 8 hyperlinks, inline image protocols, and truecolor. If detection fails behind a terminal proxy or multiplexer, use these advanced overrides:
|
|
8
|
+
|
|
9
|
+
| Capability | Environment variable | JSON setting |
|
|
10
|
+
|------------|----------------------|--------------|
|
|
11
|
+
| OSC 8 hyperlinks | `PI_HYPERLINKS=1\|0\|auto` | `terminal.hyperlinks: true\|false\|"auto"` |
|
|
12
|
+
| Inline images | `PI_IMAGE_PROTOCOL=kitty\|iterm2\|none\|auto` | `terminal.images: "kitty"\|"iterm2"\|false\|"auto"` |
|
|
13
|
+
| Truecolor | `PI_TRUE_COLOR=1\|0\|auto` | `terminal.trueColor: true\|false\|"auto"` |
|
|
14
|
+
|
|
15
|
+
Settings take precedence over environment variables; unset or `auto` preserves detection. Only force capabilities supported by the complete terminal path, since unsupported escape sequences can corrupt rendering.
|
|
16
|
+
|
|
5
17
|
## Kitty
|
|
6
18
|
|
|
7
19
|
Works out of the box.
|
package/bin/docs/usage.md
CHANGED
|
@@ -22,7 +22,7 @@ The editor can be replaced temporarily by built-in UI such as `/settings` or by
|
|
|
22
22
|
| File reference | Type `@` to fuzzy-search project files |
|
|
23
23
|
| Path completion | Press Tab to complete paths |
|
|
24
24
|
| Multi-line input | Shift+Enter, or Ctrl+Enter on Windows Terminal |
|
|
25
|
-
| Copy response | Ctrl+X copies the
|
|
25
|
+
| Copy response | Ctrl+X copies the selected message in `/tree`; otherwise it copies the last assistant message, or the active fullscreen text selection when `fullscreenCopyOnSelect` is disabled |
|
|
26
26
|
| Images | Paste with Ctrl+V, Alt+V on Windows, or drag into the terminal |
|
|
27
27
|
| Shell command | `!command` runs and sends output to the model |
|
|
28
28
|
| Hidden shell command | `!!command` runs without sending output to the model |
|
|
@@ -38,9 +38,10 @@ Type `/` in the editor to open command completion. Extensions can register custo
|
|
|
38
38
|
|---------|-------------|
|
|
39
39
|
| `/login`, `/logout` | Manage OAuth or API-key credentials |
|
|
40
40
|
| [`/llama`](llama-cpp.md) | Download, load, and unload llama.cpp router models |
|
|
41
|
-
| `/model` | Switch models |
|
|
41
|
+
| `/model` | Switch models; Ctrl+S in the picker saves the startup default |
|
|
42
|
+
| `/thinking` | Switch thinking level; Ctrl+S in the picker saves the startup default |
|
|
42
43
|
| `/scoped-models` | Enable/disable models for Ctrl+P cycling |
|
|
43
|
-
| `/settings` |
|
|
44
|
+
| `/settings` | Theme, message delivery, transport, and other preferences |
|
|
44
45
|
| `/resume` | Pick from previous sessions |
|
|
45
46
|
| `/new` | Start a new session |
|
|
46
47
|
| `/name <name>` | Set session display name |
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-custom-provider",
|
|
3
|
-
"version": "0.84.
|
|
3
|
+
"version": "0.84.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-custom-provider",
|
|
9
|
-
"version": "0.84.
|
|
9
|
+
"version": "0.84.4",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@anthropic-ai/sdk": "^0.52.0"
|
|
12
12
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-gondolin",
|
|
3
|
-
"version": "0.84.
|
|
3
|
+
"version": "0.84.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-gondolin",
|
|
9
|
-
"version": "0.84.
|
|
9
|
+
"version": "0.84.4",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@earendil-works/gondolin": "0.12.0"
|
|
12
12
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-sandbox",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-sandbox",
|
|
9
|
-
"version": "1.14.
|
|
9
|
+
"version": "1.14.4",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@anthropic-ai/sandbox-runtime": "^0.0.26"
|
|
12
12
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-with-deps",
|
|
3
|
-
"version": "0.84.
|
|
3
|
+
"version": "0.84.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-with-deps",
|
|
9
|
-
"version": "0.84.
|
|
9
|
+
"version": "0.84.4",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"ms": "^2.1.3"
|
|
12
12
|
},
|
package/bin/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@earendil-works/pi-coding-agent",
|
|
3
|
-
"version": "0.84.
|
|
3
|
+
"version": "0.84.4",
|
|
4
4
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"piConfig": {
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@earendil-works/pi-agent-core": "^0.84.
|
|
48
|
-
"@earendil-works/pi-ai": "^0.84.
|
|
49
|
-
"@earendil-works/pi-client": "^0.84.
|
|
50
|
-
"@earendil-works/pi-protocol": "^0.84.
|
|
51
|
-
"@earendil-works/pi-tui": "^0.84.
|
|
47
|
+
"@earendil-works/pi-agent-core": "^0.84.4",
|
|
48
|
+
"@earendil-works/pi-ai": "^0.84.4",
|
|
49
|
+
"@earendil-works/pi-client": "^0.84.4",
|
|
50
|
+
"@earendil-works/pi-protocol": "^0.84.4",
|
|
51
|
+
"@earendil-works/pi-tui": "^0.84.4",
|
|
52
52
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
53
53
|
"chalk": "5.6.2",
|
|
54
54
|
"cross-spawn": "7.0.6",
|
package/bin/pi
CHANGED
|
Binary file
|