@valni/cli-darwin-x64 0.1.2 → 0.1.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/LICENSE +1 -2
- package/package.json +1 -1
- package/runtime/LICENSE +1 -2
- package/runtime/examples/extensions/auto-commit-on-exit.ts +6 -6
- package/runtime/examples/extensions/bash-spawn-hook.ts +3 -3
- package/runtime/examples/extensions/bookmark.ts +5 -5
- package/runtime/examples/extensions/border-status-editor.ts +7 -7
- package/runtime/examples/extensions/built-in-tool-renderer.ts +6 -6
- package/runtime/examples/extensions/claude-rules.ts +4 -4
- package/runtime/examples/extensions/commands.ts +5 -5
- package/runtime/examples/extensions/confirm-destructive.ts +3 -3
- package/runtime/examples/extensions/custom-footer.ts +2 -2
- package/runtime/examples/extensions/custom-header.ts +5 -5
- package/runtime/examples/extensions/custom-provider-anthropic/index.ts +4 -4
- package/runtime/examples/extensions/custom-provider-anthropic/package-lock.json +4 -4
- package/runtime/examples/extensions/custom-provider-anthropic/package.json +3 -3
- package/runtime/examples/extensions/dirty-repo-guard.ts +7 -7
- package/runtime/examples/extensions/doom-overlay/doom/build.sh +4 -4
- package/runtime/examples/extensions/doom-overlay/doom/{doomgeneric_pi.c → doomgeneric_valni.c} +1 -1
- package/runtime/examples/extensions/doom-overlay/index.ts +3 -3
- package/runtime/examples/extensions/dynamic-resources/dynamic.json +0 -1
- package/runtime/examples/extensions/dynamic-resources/index.ts +2 -4
- package/runtime/examples/extensions/dynamic-tools.ts +4 -4
- package/runtime/examples/extensions/entry-renderer.ts +6 -6
- package/runtime/examples/extensions/event-bus.ts +8 -8
- package/runtime/examples/extensions/file-trigger.ts +3 -3
- package/runtime/examples/extensions/git-checkpoint.ts +7 -7
- package/runtime/examples/extensions/git-merge-and-resolve.ts +14 -14
- package/runtime/examples/extensions/github-issue-autocomplete.ts +6 -6
- package/runtime/examples/extensions/hello.ts +2 -2
- package/runtime/examples/extensions/hidden-thinking-label.ts +4 -4
- package/runtime/examples/extensions/inline-bash.ts +5 -5
- package/runtime/examples/extensions/input-transform-streaming.ts +5 -5
- package/runtime/examples/extensions/input-transform.ts +5 -5
- package/runtime/examples/extensions/interactive-shell.ts +3 -3
- package/runtime/examples/extensions/mac-system-theme.ts +5 -5
- package/runtime/examples/extensions/message-renderer.ts +4 -4
- package/runtime/examples/extensions/minimal-mode.ts +9 -9
- package/runtime/examples/extensions/modal-editor.ts +3 -3
- package/runtime/examples/extensions/model-status.ts +3 -3
- package/runtime/examples/extensions/notify.ts +5 -5
- package/runtime/examples/extensions/overlay-qa-tests.ts +20 -20
- package/runtime/examples/extensions/overlay-test.ts +3 -3
- package/runtime/examples/extensions/permission-gate.ts +2 -2
- package/runtime/examples/extensions/pirate.ts +4 -4
- package/runtime/examples/extensions/plan-mode/index.ts +21 -21
- package/runtime/examples/extensions/preset.ts +26 -26
- package/runtime/examples/extensions/project-trust.ts +7 -7
- package/runtime/examples/extensions/prompt-customizer.ts +3 -3
- package/runtime/examples/extensions/protected-paths.ts +2 -2
- package/runtime/examples/extensions/provider-payload.ts +3 -3
- package/runtime/examples/extensions/question.ts +2 -2
- package/runtime/examples/extensions/questionnaire.ts +2 -2
- package/runtime/examples/extensions/rainbow-editor.ts +3 -3
- package/runtime/examples/extensions/reload-runtime.ts +4 -4
- package/runtime/examples/extensions/rpc-demo.ts +10 -10
- package/runtime/examples/extensions/sandbox/index.ts +15 -15
- package/runtime/examples/extensions/sandbox/package-lock.json +4 -4
- package/runtime/examples/extensions/sandbox/package.json +3 -3
- package/runtime/examples/extensions/send-user-message.ts +13 -13
- package/runtime/examples/extensions/session-name.ts +4 -4
- package/runtime/examples/extensions/shutdown-command.ts +10 -10
- package/runtime/examples/extensions/snake.ts +3 -3
- package/runtime/examples/extensions/space-invaders.ts +3 -3
- package/runtime/examples/extensions/ssh.ts +12 -12
- package/runtime/examples/extensions/status-line.ts +4 -4
- package/runtime/examples/extensions/structured-output.ts +2 -2
- package/runtime/examples/extensions/subagent/index.ts +5 -5
- package/runtime/examples/extensions/system-prompt-header.ts +3 -3
- package/runtime/examples/extensions/tic-tac-toe.ts +15 -15
- package/runtime/examples/extensions/timed-confirm.ts +4 -4
- package/runtime/examples/extensions/titlebar-spinner.ts +11 -11
- package/runtime/examples/extensions/todo.ts +5 -5
- package/runtime/examples/extensions/tool-override.ts +5 -5
- package/runtime/examples/extensions/tools.ts +10 -10
- package/runtime/examples/extensions/trigger-compact.ts +3 -3
- package/runtime/examples/extensions/truncated-tool.ts +3 -3
- package/runtime/examples/extensions/widget-placement.ts +2 -2
- package/runtime/examples/extensions/with-deps/index.ts +2 -2
- package/runtime/examples/extensions/with-deps/package-lock.json +4 -4
- package/runtime/examples/extensions/with-deps/package.json +3 -3
- package/runtime/examples/extensions/working-indicator.ts +7 -7
- package/runtime/examples/extensions/working-message-test.ts +3 -3
- package/runtime/examples/sdk/01-minimal.ts +1 -1
- package/runtime/examples/sdk/03-custom-prompt.ts +1 -1
- package/runtime/examples/sdk/04-skills.ts +1 -1
- package/runtime/examples/sdk/05-tools.ts +1 -1
- package/runtime/examples/sdk/06-extensions.ts +11 -11
- package/runtime/examples/sdk/08-prompt-templates.ts +1 -1
- package/runtime/export-html/template.js +3 -3
- package/runtime/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
- package/runtime/package.json +8 -14
- package/runtime/theme/dark.json +0 -1
- package/runtime/theme/light.json +0 -1
- package/runtime/theme/theme-schema.json +2 -2
- package/runtime/valni +2 -2
- package/runtime/README.md +0 -674
- package/runtime/docs/extensions.md +0 -2910
- package/runtime/docs/json.md +0 -82
- package/runtime/docs/models.md +0 -540
- package/runtime/docs/packages.md +0 -228
- package/runtime/docs/rpc.md +0 -1480
- package/runtime/docs/sdk.md +0 -1183
- package/runtime/docs/session-format.md +0 -422
- package/runtime/docs/settings.md +0 -315
- package/runtime/docs/shell-aliases.md +0 -13
- package/runtime/docs/terminal-setup.md +0 -142
- package/runtime/docs/termux.md +0 -127
- package/runtime/docs/tmux.md +0 -63
- package/runtime/docs/tui.md +0 -927
- package/runtime/docs/windows.md +0 -17
- package/runtime/examples/README.md +0 -25
- package/runtime/examples/extensions/README.md +0 -212
- package/runtime/examples/extensions/doom-overlay/README.md +0 -46
- package/runtime/examples/extensions/dynamic-resources/SKILL.md +0 -8
- package/runtime/examples/extensions/dynamic-resources/dynamic.md +0 -5
- package/runtime/examples/extensions/gondolin/index.ts +0 -531
- package/runtime/examples/extensions/gondolin/package-lock.json +0 -185
- package/runtime/examples/extensions/gondolin/package.json +0 -19
- package/runtime/examples/extensions/plan-mode/README.md +0 -66
- package/runtime/examples/extensions/subagent/README.md +0 -175
- package/runtime/examples/extensions/subagent/agents/planner.md +0 -37
- package/runtime/examples/extensions/subagent/agents/reviewer.md +0 -35
- package/runtime/examples/extensions/subagent/agents/scout.md +0 -50
- package/runtime/examples/extensions/subagent/agents/worker.md +0 -24
- package/runtime/examples/extensions/subagent/prompts/implement-and-review.md +0 -10
- package/runtime/examples/extensions/subagent/prompts/implement.md +0 -10
- package/runtime/examples/extensions/subagent/prompts/scout-and-plan.md +0 -9
- package/runtime/examples/sdk/README.md +0 -140
- package/runtime/node_modules/@mariozechner/clipboard/.yarnrc.yml +0 -1
- package/runtime/node_modules/@mariozechner/clipboard/Cargo.toml +0 -45
- package/runtime/node_modules/@mariozechner/clipboard/README.md +0 -60
- package/runtime/node_modules/@mariozechner/clipboard/build.rs +0 -5
- package/runtime/node_modules/@mariozechner/clipboard/clipboard.darwin-x64.node +0 -0
- package/runtime/node_modules/@mariozechner/clipboard/exp.ts +0 -12
- package/runtime/node_modules/@mariozechner/clipboard/index.js +0 -606
- package/runtime/node_modules/@mariozechner/clipboard/package.json +0 -56
- package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/common.rs +0 -307
- package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/mod.rs +0 -93
- package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/ios.rs +0 -313
- package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/macos.rs +0 -471
- package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/mod.rs +0 -252
- package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/wayland.rs +0 -431
- package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/win.rs +0 -712
- package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/x11.rs +0 -916
- package/runtime/node_modules/@mariozechner/clipboard/src/lib.rs +0 -194
- package/runtime/node_modules/@mariozechner/clipboard-darwin-x64/README.md +0 -3
- package/runtime/node_modules/@mariozechner/clipboard-darwin-x64/clipboard.darwin-x64.node +0 -0
- package/runtime/node_modules/@mariozechner/clipboard-darwin-x64/package.json +0 -22
package/runtime/docs/settings.md
DELETED
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
# Settings
|
|
2
|
-
|
|
3
|
-
Pi uses JSON settings files with project settings overriding global settings.
|
|
4
|
-
|
|
5
|
-
| Location | Scope |
|
|
6
|
-
|----------|-------|
|
|
7
|
-
| `~/.valni/agent/settings.json` | Global (all projects) |
|
|
8
|
-
| `.valni/settings.json` | Project (current directory) |
|
|
9
|
-
|
|
10
|
-
Edit directly or use `/settings` for common options.
|
|
11
|
-
|
|
12
|
-
## Project Trust
|
|
13
|
-
|
|
14
|
-
On interactive startup, valni asks before trusting a project folder that contains project-local settings, resources, or project `.agents/skills` and has no saved decision for the folder or a parent folder in `~/.valni/agent/trust.json`. Trusting a project allows valni to load `.valni/settings.json` and `.valni` resources, install missing project packages, and execute project extensions.
|
|
15
|
-
|
|
16
|
-
Non-interactive modes (`-p`, `--mode json`, and `--mode rpc`) do not show a trust prompt. Without an applicable saved trust decision, they use `defaultProjectTrust` from global settings: `ask` (default) and `never` ignore those project resources, while `always` trusts them. Pass `--approve`/`-a` or `--no-approve`/`-na` to override project trust for one run.
|
|
17
|
-
|
|
18
|
-
If no extension or saved decision applies, `defaultProjectTrust` controls the fallback behavior. Set it to `"ask"`, `"always"`, or `"never"` in `~/.valni/agent/settings.json`, or change it with `/settings`.
|
|
19
|
-
|
|
20
|
-
`valni config` and package commands use the same project trust flow, except `valni update` never prompts. Pass `--approve` to trust project-local settings for one command or `--no-approve` to ignore them.
|
|
21
|
-
|
|
22
|
-
Use `/trust` in interactive mode to save a project trust decision for future sessions, including trust for the immediate parent folder. It writes `~/.valni/agent/trust.json` only; the current session is not reloaded, so restart valni for changes to take effect.
|
|
23
|
-
|
|
24
|
-
## All Settings
|
|
25
|
-
|
|
26
|
-
### Model & Thinking
|
|
27
|
-
|
|
28
|
-
| Setting | Type | Default | Description |
|
|
29
|
-
|---------|------|---------|-------------|
|
|
30
|
-
| `defaultProvider` | string | - | Default provider (e.g., `"anthropic"`, `"openai"`) |
|
|
31
|
-
| `defaultModel` | string | - | Default model ID |
|
|
32
|
-
| `defaultThinkingLevel` | string | - | `"off"`, `"minimal"`, `"low"`, `"medium"`, `"high"`, `"xhigh"`, `"max"` |
|
|
33
|
-
| `hideThinkingBlock` | boolean | `false` | Hide thinking blocks in output |
|
|
34
|
-
| `showCacheMissNotices` | boolean | `false` | Show transcript notices for significant prompt-cache misses |
|
|
35
|
-
| `thinkingBudgets` | object | - | Custom token budgets per thinking level |
|
|
36
|
-
|
|
37
|
-
#### thinkingBudgets
|
|
38
|
-
|
|
39
|
-
```json
|
|
40
|
-
{
|
|
41
|
-
"thinkingBudgets": {
|
|
42
|
-
"minimal": 1024,
|
|
43
|
-
"low": 4096,
|
|
44
|
-
"medium": 10240,
|
|
45
|
-
"high": 32768
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### UI & Display
|
|
51
|
-
|
|
52
|
-
| Setting | Type | Default | Description |
|
|
53
|
-
|---------|------|---------|-------------|
|
|
54
|
-
| `theme` | string | `"dark"` | Theme name (`"dark"`, `"light"`, or custom) |
|
|
55
|
-
| `externalEditor` | string | `$VISUAL`, then `$EDITOR`, then Notepad on Windows or `nano` elsewhere | Command for Ctrl+G external editor; takes precedence over environment variables |
|
|
56
|
-
| `quietStartup` | boolean | `false` | Hide startup header |
|
|
57
|
-
| `defaultProjectTrust` | string | `"ask"` | Fallback project trust behavior: `"ask"`, `"always"`, or `"never"`. Global setting only |
|
|
58
|
-
| `enableAnalytics` | boolean | `false` | Opt-in analytics data sharing. Currently only asked for during the experimental first-time setup (`VALNI_EXPERIMENTAL=1`) |
|
|
59
|
-
| `trackingId` | string | - | Analytics tracking identifier, generated when `enableAnalytics` is turned on |
|
|
60
|
-
| `doubleEscapeAction` | string | `"tree"` | Action for double-escape: `"tree"`, `"fork"`, or `"none"` |
|
|
61
|
-
| `treeFilterMode` | string | `"default"` | Default filter for `/tree`: `"default"`, `"no-tools"`, `"user-only"`, `"labeled-only"`, `"all"` |
|
|
62
|
-
| `editorPaddingX` | number | `0` | Horizontal padding for input editor (0-3) |
|
|
63
|
-
| `outputPad` | number | `1` | Horizontal padding for user messages, assistant messages, and thinking (0 or 1) |
|
|
64
|
-
| `autocompleteMaxVisible` | number | `5` | Max visible items in autocomplete dropdown (3-20) |
|
|
65
|
-
| `showHardwareCursor` | boolean | `false` | Show the terminal cursor while TUI positions it for IME support |
|
|
66
|
-
|
|
67
|
-
For VS Code, include `--wait` so valni resumes after the editor exits:
|
|
68
|
-
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"externalEditor": "code --wait"
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Update checks
|
|
76
|
-
|
|
77
|
-
Use `--offline` or `VALNI_OFFLINE=1` to disable startup network operations, including package update checks.
|
|
78
|
-
|
|
79
|
-
### Network
|
|
80
|
-
|
|
81
|
-
| Setting | Type | Default | Description |
|
|
82
|
-
|---------|------|---------|-------------|
|
|
83
|
-
| `httpProxy` | string | - | HTTP proxy URL applied as `HTTP_PROXY` and `HTTPS_PROXY`. Global setting only. |
|
|
84
|
-
|
|
85
|
-
```json
|
|
86
|
-
{
|
|
87
|
-
"httpProxy": "http://127.0.0.1:7890"
|
|
88
|
-
}
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Warnings
|
|
92
|
-
|
|
93
|
-
| Setting | Type | Default | Description |
|
|
94
|
-
|---------|------|---------|-------------|
|
|
95
|
-
| `warnings.anthropicExtraUsage` | boolean | `true` | Show a warning when Anthropic subscription auth may use paid extra usage |
|
|
96
|
-
|
|
97
|
-
```json
|
|
98
|
-
{
|
|
99
|
-
"warnings": {
|
|
100
|
-
"anthropicExtraUsage": false
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Compaction
|
|
106
|
-
|
|
107
|
-
| Setting | Type | Default | Description |
|
|
108
|
-
|---------|------|---------|-------------|
|
|
109
|
-
| `compaction.enabled` | boolean | `true` | Enable auto-compaction |
|
|
110
|
-
| `compaction.reserveTokens` | number | `16384` | Tokens reserved for LLM response |
|
|
111
|
-
| `compaction.keepRecentTokens` | number | `20000` | Recent tokens to keep (not summarized) |
|
|
112
|
-
|
|
113
|
-
```json
|
|
114
|
-
{
|
|
115
|
-
"compaction": {
|
|
116
|
-
"enabled": true,
|
|
117
|
-
"reserveTokens": 16384,
|
|
118
|
-
"keepRecentTokens": 20000
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Branch Summary
|
|
124
|
-
|
|
125
|
-
| Setting | Type | Default | Description |
|
|
126
|
-
|---------|------|---------|-------------|
|
|
127
|
-
| `branchSummary.reserveTokens` | number | `16384` | Tokens reserved for branch summarization |
|
|
128
|
-
| `branchSummary.skipPrompt` | boolean | `false` | Skip "Summarize branch?" prompt on `/tree` navigation (defaults to no summary) |
|
|
129
|
-
|
|
130
|
-
### Retry
|
|
131
|
-
|
|
132
|
-
| Setting | Type | Default | Description |
|
|
133
|
-
|---------|------|---------|-------------|
|
|
134
|
-
| `retry.enabled` | boolean | `true` | Enable automatic agent-level retry on transient errors |
|
|
135
|
-
| `retry.maxRetries` | number | `3` | Maximum agent-level retry attempts |
|
|
136
|
-
| `retry.baseDelayMs` | number | `2000` | Base delay for agent-level exponential backoff (2s, 4s, 8s) |
|
|
137
|
-
| `retry.provider.timeoutMs` | number | SDK default | Provider/SDK request timeout in milliseconds |
|
|
138
|
-
| `retry.provider.maxRetries` | number | `0` | Provider/SDK retry attempts |
|
|
139
|
-
| `retry.provider.maxRetryDelayMs` | number | `60000` | Max server-requested delay before failing (60s) |
|
|
140
|
-
|
|
141
|
-
When a provider requests a retry delay longer than `retry.provider.maxRetryDelayMs` (e.g., Google's "quota will reset after 5h"), the request fails immediately with an informative error instead of waiting silently. Set to `0` to disable the cap.
|
|
142
|
-
|
|
143
|
-
Keep `retry.provider.maxRetries` at `0` unless provider-level retries are explicitly needed. Setting it above `0` can make SDK/provider retries handle out-of-usage-limit errors before Pi sees them, which may block the agent until the provider quota resets in some circumstances.
|
|
144
|
-
|
|
145
|
-
```json
|
|
146
|
-
{
|
|
147
|
-
"retry": {
|
|
148
|
-
"enabled": true,
|
|
149
|
-
"maxRetries": 3,
|
|
150
|
-
"baseDelayMs": 2000,
|
|
151
|
-
"provider": {
|
|
152
|
-
"timeoutMs": 3600000,
|
|
153
|
-
"maxRetries": 0,
|
|
154
|
-
"maxRetryDelayMs": 60000
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### Message Delivery
|
|
161
|
-
|
|
162
|
-
| Setting | Type | Default | Description |
|
|
163
|
-
|---------|------|---------|-------------|
|
|
164
|
-
| `steeringMode` | string | `"one-at-a-time"` | How steering messages are sent: `"all"` or `"one-at-a-time"` |
|
|
165
|
-
| `followUpMode` | string | `"one-at-a-time"` | How follow-up messages are sent: `"all"` or `"one-at-a-time"` |
|
|
166
|
-
| `transport` | string | `"auto"` | Preferred transport for providers that support multiple transports: `"sse"`, `"websocket"`, `"websocket-cached"`, or `"auto"` |
|
|
167
|
-
| `httpIdleTimeoutMs` | number | `300000` | HTTP header/body idle timeout in milliseconds, also used by providers with explicit stream idle timeouts. Set to `0` to disable. |
|
|
168
|
-
| `websocketConnectTimeoutMs` | number | `15000` | WebSocket connect/open handshake timeout in milliseconds for providers that support WebSocket transports. Set to `0` to disable. |
|
|
169
|
-
|
|
170
|
-
### Terminal & Images
|
|
171
|
-
|
|
172
|
-
| Setting | Type | Default | Description |
|
|
173
|
-
|---------|------|---------|-------------|
|
|
174
|
-
| `terminal.showImages` | boolean | `true` | Show images in terminal (if supported) |
|
|
175
|
-
| `terminal.imageWidthCells` | number | `60` | Preferred inline image width in terminal cells |
|
|
176
|
-
| `terminal.clearOnShrink` | boolean | `false` | Clear empty rows when content shrinks (can cause flicker) |
|
|
177
|
-
| `images.autoResize` | boolean | `true` | Resize images to 2000x2000 max |
|
|
178
|
-
| `images.blockImages` | boolean | `false` | Block all images from being sent to LLM |
|
|
179
|
-
|
|
180
|
-
### Shell
|
|
181
|
-
|
|
182
|
-
| Setting | Type | Default | Description |
|
|
183
|
-
|---------|------|---------|-------------|
|
|
184
|
-
| `shellPath` | string | - | Custom shell path (e.g., for Cygwin on Windows); supports a leading `~` for the home directory |
|
|
185
|
-
| `shellCommandPrefix` | string | - | Prefix for every bash command (e.g., `"shopt -s expand_aliases"`) |
|
|
186
|
-
| `npmCommand` | string[] | - | Command argv used for npm package lookup/install operations (e.g., `["mise", "exec", "node@20", "--", "npm"]`) |
|
|
187
|
-
|
|
188
|
-
```json
|
|
189
|
-
{
|
|
190
|
-
"npmCommand": ["mise", "exec", "node@20", "--", "npm"]
|
|
191
|
-
}
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
`npmCommand` is used for all npm package-manager operations, including installs, uninstalls, and dependency installs inside git packages. User-scoped npm packages install under `~/.valni/agent/npm/`; project-scoped npm packages install under `.valni/npm/`. Use argv-style entries exactly as the process should be launched. When `npmCommand` is configured, git package dependency installs use plain `install` to avoid npm-specific flags in wrappers or alternate package managers.
|
|
195
|
-
|
|
196
|
-
### Sessions
|
|
197
|
-
|
|
198
|
-
| Setting | Type | Default | Description |
|
|
199
|
-
|---------|------|---------|-------------|
|
|
200
|
-
| `sessionDir` | string | - | Directory where session files are stored. Accepts absolute or relative paths, plus `~`. |
|
|
201
|
-
|
|
202
|
-
```json
|
|
203
|
-
{ "sessionDir": ".valni/sessions" }
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
When multiple sources specify a session directory, precedence is `--session-dir`, `VALNI_CODING_AGENT_SESSION_DIR`, then `sessionDir` in settings.json.
|
|
207
|
-
|
|
208
|
-
### Model Cycling
|
|
209
|
-
|
|
210
|
-
| Setting | Type | Default | Description |
|
|
211
|
-
|---------|------|---------|-------------|
|
|
212
|
-
| `enabledModels` | string[] | - | Model patterns for Ctrl+P cycling (same format as `--models` CLI flag) |
|
|
213
|
-
|
|
214
|
-
```json
|
|
215
|
-
{
|
|
216
|
-
"enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
|
|
217
|
-
}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
### Markdown
|
|
221
|
-
|
|
222
|
-
| Setting | Type | Default | Description |
|
|
223
|
-
|---------|------|---------|-------------|
|
|
224
|
-
| `markdown.codeBlockIndent` | string | `" "` | Indentation for code blocks |
|
|
225
|
-
|
|
226
|
-
### Resources
|
|
227
|
-
|
|
228
|
-
These settings define where to load extensions, skills, prompts, and themes from.
|
|
229
|
-
|
|
230
|
-
Paths in `~/.valni/agent/settings.json` resolve relative to `~/.valni/agent`. Paths in `.valni/settings.json` resolve relative to `.valni`. Absolute paths and `~` are supported.
|
|
231
|
-
|
|
232
|
-
| Setting | Type | Default | Description |
|
|
233
|
-
|---------|------|---------|-------------|
|
|
234
|
-
| `packages` | array | `[]` | npm/git packages to load resources from |
|
|
235
|
-
| `extensions` | string[] | `[]` | Local extension file paths or directories |
|
|
236
|
-
| `skills` | string[] | `[]` | Local skill file paths or directories |
|
|
237
|
-
| `prompts` | string[] | `[]` | Local prompt template paths or directories |
|
|
238
|
-
| `themes` | string[] | `[]` | Local theme file paths or directories |
|
|
239
|
-
| `enableSkillCommands` | boolean | `true` | Register skills as `/skill:name` commands |
|
|
240
|
-
|
|
241
|
-
Arrays support glob patterns and exclusions. Use `!pattern` to exclude. Use `+path` to force-include an exact path and `-path` to force-exclude an exact path.
|
|
242
|
-
|
|
243
|
-
#### packages
|
|
244
|
-
|
|
245
|
-
String form loads all resources from a package:
|
|
246
|
-
|
|
247
|
-
```json
|
|
248
|
-
{
|
|
249
|
-
"packages": ["pi-skills", "@org/my-extension"]
|
|
250
|
-
}
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
Object form filters which resources to load:
|
|
254
|
-
|
|
255
|
-
```json
|
|
256
|
-
{
|
|
257
|
-
"packages": [
|
|
258
|
-
{
|
|
259
|
-
"source": "pi-skills",
|
|
260
|
-
"skills": ["brave-search", "transcribe"],
|
|
261
|
-
"extensions": []
|
|
262
|
-
}
|
|
263
|
-
]
|
|
264
|
-
}
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
See [packages.md](packages.md) for package management details.
|
|
268
|
-
|
|
269
|
-
## Example
|
|
270
|
-
|
|
271
|
-
```json
|
|
272
|
-
{
|
|
273
|
-
"defaultProvider": "anthropic",
|
|
274
|
-
"defaultModel": "claude-sonnet-4-20250514",
|
|
275
|
-
"defaultThinkingLevel": "medium",
|
|
276
|
-
"theme": "dark",
|
|
277
|
-
"compaction": {
|
|
278
|
-
"enabled": true,
|
|
279
|
-
"reserveTokens": 16384,
|
|
280
|
-
"keepRecentTokens": 20000
|
|
281
|
-
},
|
|
282
|
-
"retry": {
|
|
283
|
-
"enabled": true,
|
|
284
|
-
"maxRetries": 3
|
|
285
|
-
},
|
|
286
|
-
"enabledModels": ["claude-*", "gpt-4o"],
|
|
287
|
-
"warnings": {
|
|
288
|
-
"anthropicExtraUsage": true
|
|
289
|
-
},
|
|
290
|
-
"packages": ["pi-skills"]
|
|
291
|
-
}
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
## Project Overrides
|
|
295
|
-
|
|
296
|
-
Project settings (`.valni/settings.json`) override global settings. Nested objects are merged:
|
|
297
|
-
|
|
298
|
-
```json
|
|
299
|
-
// ~/.valni/agent/settings.json (global)
|
|
300
|
-
{
|
|
301
|
-
"theme": "dark",
|
|
302
|
-
"compaction": { "enabled": true, "reserveTokens": 16384 }
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
// .valni/settings.json (project)
|
|
306
|
-
{
|
|
307
|
-
"compaction": { "reserveTokens": 8192 }
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
// Result
|
|
311
|
-
{
|
|
312
|
-
"theme": "dark",
|
|
313
|
-
"compaction": { "enabled": true, "reserveTokens": 8192 }
|
|
314
|
-
}
|
|
315
|
-
```
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# Shell Aliases
|
|
2
|
-
|
|
3
|
-
Pi runs bash in non-interactive mode (`bash -c`, or `bash -s` over stdin for legacy WSL bash paths), which doesn't expand aliases by default.
|
|
4
|
-
|
|
5
|
-
To enable your shell aliases, add to `~/.valni/agent/settings.json`:
|
|
6
|
-
|
|
7
|
-
```json
|
|
8
|
-
{
|
|
9
|
-
"shellCommandPrefix": "shopt -s expand_aliases\neval \"$(grep '^alias ' ~/.zshrc)\""
|
|
10
|
-
}
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Adjust the path (`~/.zshrc`, `~/.bashrc`, etc.) to match your shell config.
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
# Terminal Setup
|
|
2
|
-
|
|
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
|
-
|
|
5
|
-
## Kitty, iTerm2
|
|
6
|
-
|
|
7
|
-
Work out of the box.
|
|
8
|
-
|
|
9
|
-
## Apple Terminal
|
|
10
|
-
|
|
11
|
-
Pi enables enhanced key reporting when available. If Terminal.app still sends plain Return for `Shift+Enter`, valni uses a local macOS modifier fallback to treat that Return as `Shift+Enter`.
|
|
12
|
-
|
|
13
|
-
This fallback only works when valni runs on the same Mac as Terminal.app. It cannot detect the local keyboard over remote SSH.
|
|
14
|
-
|
|
15
|
-
## Ghostty
|
|
16
|
-
|
|
17
|
-
Add to your Ghostty config (`~/Library/Application Support/com.mitchellh.ghostty/config` on macOS, `~/.config/ghostty/config` on Linux):
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
keybind = alt+backspace=text:\x1b\x7f
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Older Claude Code versions may have added this Ghostty mapping:
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
keybind = shift+enter=text:\n
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
That mapping sends a raw linefeed byte. Inside valni, that is indistinguishable from `Ctrl+J`, so tmux and valni no longer see a real `shift+enter` key event.
|
|
30
|
-
|
|
31
|
-
If Claude Code 2.x or newer is the only reason you added that mapping, you can remove it, unless you want to use Claude Code in tmux, where it still requires that Ghostty mapping.
|
|
32
|
-
|
|
33
|
-
Pi binds `Ctrl+J` as a default newline alias, so `Shift+Enter` keeps working in tmux via that remap without extra valni configuration.
|
|
34
|
-
|
|
35
|
-
## WezTerm
|
|
36
|
-
|
|
37
|
-
WezTerm usually works out of the box for `Shift+Enter` via xterm modifyOtherKeys. To use the Kitty keyboard protocol explicitly, create `~/.wezterm.lua`:
|
|
38
|
-
|
|
39
|
-
```lua
|
|
40
|
-
local wezterm = require 'wezterm'
|
|
41
|
-
local config = wezterm.config_builder()
|
|
42
|
-
config.enable_kitty_keyboard = true
|
|
43
|
-
return config
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
On macOS, WezTerm binds `Option+Enter` to fullscreen by default. To use `Option+Enter` for valni follow-up queueing, add this key override:
|
|
47
|
-
|
|
48
|
-
```lua
|
|
49
|
-
local wezterm = require 'wezterm'
|
|
50
|
-
local config = wezterm.config_builder()
|
|
51
|
-
config.keys = {
|
|
52
|
-
{
|
|
53
|
-
key = 'Enter',
|
|
54
|
-
mods = 'ALT',
|
|
55
|
-
action = wezterm.action.SendString('\x1b[13;3u'),
|
|
56
|
-
},
|
|
57
|
-
}
|
|
58
|
-
return config
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
If you already have a `config.keys` table, add the entry to it.
|
|
62
|
-
|
|
63
|
-
On WSL, WezTerm may require a visible hardware cursor for IME candidate window positioning. If CJK IME candidates do not follow the text cursor, set `VALNI_HARDWARE_CURSOR=1` before running valni or set `showHardwareCursor` to `true` in settings.
|
|
64
|
-
|
|
65
|
-
## Alacritty
|
|
66
|
-
|
|
67
|
-
Alacritty usually works out of the box for `Shift+Enter`. On macOS, `Option+Enter` may arrive as plain `Enter`. To use `Option+Enter` for valni follow-up queueing, add to `~/.config/alacritty/alacritty.toml`:
|
|
68
|
-
|
|
69
|
-
```toml
|
|
70
|
-
[[keyboard.bindings]]
|
|
71
|
-
key = "Enter"
|
|
72
|
-
mods = "Alt"
|
|
73
|
-
chars = "\u001b[13;3u"
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Restart Alacritty after changing the config.
|
|
77
|
-
|
|
78
|
-
## VS Code (Integrated Terminal)
|
|
79
|
-
|
|
80
|
-
VS Code 1.109.5 and newer enable Kitty keyboard protocol in the integrated terminal by default, so `Shift+Enter` should work out of the box.
|
|
81
|
-
|
|
82
|
-
VS Code versions older than 1.109.5 need an explicit terminal keybinding for `Shift+Enter`.
|
|
83
|
-
|
|
84
|
-
`keybindings.json` locations:
|
|
85
|
-
- macOS: `~/Library/Application Support/Code/User/keybindings.json`
|
|
86
|
-
- Linux: `~/.config/Code/User/keybindings.json`
|
|
87
|
-
- Windows: `%APPDATA%\\Code\\User\\keybindings.json`
|
|
88
|
-
|
|
89
|
-
Add to `keybindings.json`:
|
|
90
|
-
|
|
91
|
-
```json
|
|
92
|
-
{
|
|
93
|
-
"key": "shift+enter",
|
|
94
|
-
"command": "workbench.action.terminal.sendSequence",
|
|
95
|
-
"args": { "text": "\u001b[13;2u" },
|
|
96
|
-
"when": "terminalFocus"
|
|
97
|
-
}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Windows Terminal
|
|
101
|
-
|
|
102
|
-
Add to `settings.json` (Ctrl+Shift+, or Settings → Open JSON file) to forward the modified Enter keys valni uses:
|
|
103
|
-
|
|
104
|
-
```json
|
|
105
|
-
{
|
|
106
|
-
"actions": [
|
|
107
|
-
{
|
|
108
|
-
"command": { "action": "sendInput", "input": "\u001b[13;2u" },
|
|
109
|
-
"keys": "shift+enter"
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"command": { "action": "sendInput", "input": "\u001b[13;3u" },
|
|
113
|
-
"keys": "alt+enter"
|
|
114
|
-
}
|
|
115
|
-
]
|
|
116
|
-
}
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
- `Shift+Enter` inserts a new line.
|
|
120
|
-
- Windows Terminal binds `Alt+Enter` to fullscreen by default. That prevents valni from receiving `Alt+Enter` for follow-up queueing.
|
|
121
|
-
- Remapping `Alt+Enter` to `sendInput` forwards the real key chord to valni instead.
|
|
122
|
-
|
|
123
|
-
If you already have an `actions` array, add the objects to it. If the old fullscreen behavior persists, fully close and reopen Windows Terminal.
|
|
124
|
-
|
|
125
|
-
## xfce4-terminal, terminator
|
|
126
|
-
|
|
127
|
-
These terminals have limited escape sequence support. Modified Enter keys like `Ctrl+Enter` and `Shift+Enter` cannot be distinguished from plain `Enter`, preventing custom keybindings such as `submit: ["ctrl+enter"]` from working.
|
|
128
|
-
|
|
129
|
-
For the best experience, use a terminal that supports the Kitty keyboard protocol:
|
|
130
|
-
- [Kitty](https://sw.kovidgoyal.net/kitty/)
|
|
131
|
-
- [Ghostty](https://ghostty.org/)
|
|
132
|
-
- [WezTerm](https://wezfurlong.org/wezterm/)
|
|
133
|
-
- [iTerm2](https://iterm2.com/)
|
|
134
|
-
- [Alacritty](https://github.com/alacritty/alacritty) (requires compilation with Kitty protocol support)
|
|
135
|
-
|
|
136
|
-
## IntelliJ IDEA (Integrated Terminal)
|
|
137
|
-
|
|
138
|
-
The built-in terminal has limited escape sequence support. Shift+Enter cannot be distinguished from Enter in IntelliJ's terminal.
|
|
139
|
-
|
|
140
|
-
If you want the hardware cursor visible, set `VALNI_HARDWARE_CURSOR=1` before running valni (disabled by default for compatibility).
|
|
141
|
-
|
|
142
|
-
Consider using a dedicated terminal emulator for the best experience.
|
package/runtime/docs/termux.md
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
# Termux (Android) Setup
|
|
2
|
-
|
|
3
|
-
Pi runs on Android via [Termux](https://termux.dev/), a terminal emulator and Linux environment for Android.
|
|
4
|
-
|
|
5
|
-
## Prerequisites
|
|
6
|
-
|
|
7
|
-
1. Install [Termux](https://github.com/termux/termux-app#installation) from GitHub or F-Droid (not Google Play, that version is deprecated)
|
|
8
|
-
2. Install [Termux:API](https://github.com/termux/termux-api#installation) from GitHub or F-Droid for clipboard and other device integrations
|
|
9
|
-
|
|
10
|
-
## Installation
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
# Update packages
|
|
14
|
-
pkg update && pkg upgrade
|
|
15
|
-
|
|
16
|
-
# Install dependencies
|
|
17
|
-
pkg install nodejs termux-api git
|
|
18
|
-
|
|
19
|
-
# Install valni
|
|
20
|
-
npm install -g --ignore-scripts @valni/cli
|
|
21
|
-
|
|
22
|
-
# Create config directory
|
|
23
|
-
mkdir -p ~/.valni/agent
|
|
24
|
-
|
|
25
|
-
# Run valni
|
|
26
|
-
valni
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Clipboard Support
|
|
30
|
-
|
|
31
|
-
Clipboard operations use `termux-clipboard-set` and `termux-clipboard-get` when running in Termux. The Termux:API app must be installed for these to work.
|
|
32
|
-
|
|
33
|
-
Image clipboard is not supported on Termux (the `ctrl+v` image paste feature will not work).
|
|
34
|
-
|
|
35
|
-
## Example AGENTS.md for Termux
|
|
36
|
-
|
|
37
|
-
Create `~/.valni/agent/AGENTS.md` to help the agent understand the Termux environment:
|
|
38
|
-
|
|
39
|
-
````markdown
|
|
40
|
-
# Agent Environment: Termux on Android
|
|
41
|
-
|
|
42
|
-
## Location
|
|
43
|
-
- **OS**: Android (Termux terminal emulator)
|
|
44
|
-
- **Home**: `/data/data/com.termux/files/home`
|
|
45
|
-
- **Prefix**: `/data/data/com.termux/files/usr`
|
|
46
|
-
- **Shared storage**: `/storage/emulated/0` (Downloads, Documents, etc.)
|
|
47
|
-
|
|
48
|
-
## Opening URLs
|
|
49
|
-
```bash
|
|
50
|
-
termux-open-url "https://example.com"
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## Opening Files
|
|
54
|
-
```bash
|
|
55
|
-
termux-open file.pdf # Opens with default app
|
|
56
|
-
termux-open --chooser image.jpg # Choose app
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Clipboard
|
|
60
|
-
```bash
|
|
61
|
-
termux-clipboard-set "text" # Copy
|
|
62
|
-
termux-clipboard-get # Paste
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Notifications
|
|
66
|
-
```bash
|
|
67
|
-
termux-notification -t "Title" -c "Content"
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## Device Info
|
|
71
|
-
```bash
|
|
72
|
-
termux-battery-status # Battery info
|
|
73
|
-
termux-wifi-connectioninfo # WiFi info
|
|
74
|
-
termux-telephony-deviceinfo # Device info
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Sharing
|
|
78
|
-
```bash
|
|
79
|
-
termux-share -a send file.txt # Share file
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## Other Useful Commands
|
|
83
|
-
```bash
|
|
84
|
-
termux-toast "message" # Quick toast popup
|
|
85
|
-
termux-vibrate # Vibrate device
|
|
86
|
-
termux-tts-speak "hello" # Text to speech
|
|
87
|
-
termux-camera-photo out.jpg # Take photo
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## Notes
|
|
91
|
-
- Termux:API app must be installed for `termux-*` commands
|
|
92
|
-
- Use `pkg install termux-api` for the command-line tools
|
|
93
|
-
- Storage permission needed for `/storage/emulated/0` access
|
|
94
|
-
````
|
|
95
|
-
|
|
96
|
-
## Limitations
|
|
97
|
-
|
|
98
|
-
- **No image clipboard**: Termux clipboard API only supports text
|
|
99
|
-
- **No native binaries**: Some optional native dependencies (like the clipboard module) are unavailable on Android ARM64 and are skipped during installation
|
|
100
|
-
- **Storage access**: To access files in `/storage/emulated/0` (Downloads, etc.), run `termux-setup-storage` once to grant permissions
|
|
101
|
-
|
|
102
|
-
## Troubleshooting
|
|
103
|
-
|
|
104
|
-
### Clipboard not working
|
|
105
|
-
|
|
106
|
-
Ensure both apps are installed:
|
|
107
|
-
1. Termux (from GitHub or F-Droid)
|
|
108
|
-
2. Termux:API (from GitHub or F-Droid)
|
|
109
|
-
|
|
110
|
-
Then install the CLI tools:
|
|
111
|
-
```bash
|
|
112
|
-
pkg install termux-api
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Permission denied for shared storage
|
|
116
|
-
|
|
117
|
-
Run once to grant storage permissions:
|
|
118
|
-
```bash
|
|
119
|
-
termux-setup-storage
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Node.js installation issues
|
|
123
|
-
|
|
124
|
-
If npm fails, try clearing the cache:
|
|
125
|
-
```bash
|
|
126
|
-
npm cache clean --force
|
|
127
|
-
```
|
package/runtime/docs/tmux.md
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# tmux Setup
|
|
2
|
-
|
|
3
|
-
Pi works inside tmux, but tmux strips modifier information from certain keys by default. Without configuration, `Shift+Enter` and `Ctrl+Enter` are usually indistinguishable from plain `Enter`.
|
|
4
|
-
|
|
5
|
-
## Recommended Configuration
|
|
6
|
-
|
|
7
|
-
Add to `~/.tmux.conf`:
|
|
8
|
-
|
|
9
|
-
```tmux
|
|
10
|
-
set -g extended-keys on
|
|
11
|
-
set -g extended-keys-format csi-u
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Then restart tmux fully:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
tmux kill-server
|
|
18
|
-
tmux
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Pi requests extended key reporting automatically when Kitty keyboard protocol is not available. With `extended-keys-format csi-u`, tmux forwards modified keys in CSI-u format, which is the most reliable configuration. The `extended-keys-format` option requires tmux 3.5 or later.
|
|
22
|
-
|
|
23
|
-
## Why `csi-u` Is Recommended
|
|
24
|
-
|
|
25
|
-
With only:
|
|
26
|
-
|
|
27
|
-
```tmux
|
|
28
|
-
set -g extended-keys on
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
tmux defaults to `extended-keys-format xterm`. When an application requests extended key reporting, modified keys are forwarded in xterm `modifyOtherKeys` format such as:
|
|
32
|
-
|
|
33
|
-
- `Ctrl+C` → `\x1b[27;5;99~`
|
|
34
|
-
- `Ctrl+D` → `\x1b[27;5;100~`
|
|
35
|
-
- `Ctrl+Enter` → `\x1b[27;5;13~`
|
|
36
|
-
|
|
37
|
-
With `extended-keys-format csi-u`, the same keys are forwarded as:
|
|
38
|
-
|
|
39
|
-
- `Ctrl+C` → `\x1b[99;5u`
|
|
40
|
-
- `Ctrl+D` → `\x1b[100;5u`
|
|
41
|
-
- `Ctrl+Enter` → `\x1b[13;5u`
|
|
42
|
-
|
|
43
|
-
Pi supports both formats, but `csi-u` is the recommended tmux setup.
|
|
44
|
-
|
|
45
|
-
## What This Fixes
|
|
46
|
-
|
|
47
|
-
Without tmux extended keys, modified Enter keys collapse to legacy sequences:
|
|
48
|
-
|
|
49
|
-
| Key | Without extkeys | With `csi-u` |
|
|
50
|
-
|-----|-----------------|--------------|
|
|
51
|
-
| Enter | `\r` | `\r` |
|
|
52
|
-
| Shift+Enter | `\r` | `\x1b[13;2u` |
|
|
53
|
-
| Ctrl+Enter | `\r` | `\x1b[13;5u` |
|
|
54
|
-
| Alt/Option+Enter | `\x1b\r` | `\x1b[13;3u` |
|
|
55
|
-
|
|
56
|
-
This affects the default keybindings (`Enter` to submit, `Shift+Enter` for newline) and any custom keybindings using modified Enter.
|
|
57
|
-
|
|
58
|
-
## Requirements
|
|
59
|
-
|
|
60
|
-
- tmux 3.5 or later for `extended-keys-format csi-u` (run `tmux -V` to check)
|
|
61
|
-
- A terminal emulator that supports extended keys (Ghostty, Kitty, iTerm2, WezTerm, Windows Terminal)
|
|
62
|
-
|
|
63
|
-
With tmux 3.2 through 3.4, omit `extended-keys-format csi-u`; Pi still supports tmux's default xterm `modifyOtherKeys` format.
|