@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.
Files changed (149) hide show
  1. package/LICENSE +1 -2
  2. package/package.json +1 -1
  3. package/runtime/LICENSE +1 -2
  4. package/runtime/examples/extensions/auto-commit-on-exit.ts +6 -6
  5. package/runtime/examples/extensions/bash-spawn-hook.ts +3 -3
  6. package/runtime/examples/extensions/bookmark.ts +5 -5
  7. package/runtime/examples/extensions/border-status-editor.ts +7 -7
  8. package/runtime/examples/extensions/built-in-tool-renderer.ts +6 -6
  9. package/runtime/examples/extensions/claude-rules.ts +4 -4
  10. package/runtime/examples/extensions/commands.ts +5 -5
  11. package/runtime/examples/extensions/confirm-destructive.ts +3 -3
  12. package/runtime/examples/extensions/custom-footer.ts +2 -2
  13. package/runtime/examples/extensions/custom-header.ts +5 -5
  14. package/runtime/examples/extensions/custom-provider-anthropic/index.ts +4 -4
  15. package/runtime/examples/extensions/custom-provider-anthropic/package-lock.json +4 -4
  16. package/runtime/examples/extensions/custom-provider-anthropic/package.json +3 -3
  17. package/runtime/examples/extensions/dirty-repo-guard.ts +7 -7
  18. package/runtime/examples/extensions/doom-overlay/doom/build.sh +4 -4
  19. package/runtime/examples/extensions/doom-overlay/doom/{doomgeneric_pi.c → doomgeneric_valni.c} +1 -1
  20. package/runtime/examples/extensions/doom-overlay/index.ts +3 -3
  21. package/runtime/examples/extensions/dynamic-resources/dynamic.json +0 -1
  22. package/runtime/examples/extensions/dynamic-resources/index.ts +2 -4
  23. package/runtime/examples/extensions/dynamic-tools.ts +4 -4
  24. package/runtime/examples/extensions/entry-renderer.ts +6 -6
  25. package/runtime/examples/extensions/event-bus.ts +8 -8
  26. package/runtime/examples/extensions/file-trigger.ts +3 -3
  27. package/runtime/examples/extensions/git-checkpoint.ts +7 -7
  28. package/runtime/examples/extensions/git-merge-and-resolve.ts +14 -14
  29. package/runtime/examples/extensions/github-issue-autocomplete.ts +6 -6
  30. package/runtime/examples/extensions/hello.ts +2 -2
  31. package/runtime/examples/extensions/hidden-thinking-label.ts +4 -4
  32. package/runtime/examples/extensions/inline-bash.ts +5 -5
  33. package/runtime/examples/extensions/input-transform-streaming.ts +5 -5
  34. package/runtime/examples/extensions/input-transform.ts +5 -5
  35. package/runtime/examples/extensions/interactive-shell.ts +3 -3
  36. package/runtime/examples/extensions/mac-system-theme.ts +5 -5
  37. package/runtime/examples/extensions/message-renderer.ts +4 -4
  38. package/runtime/examples/extensions/minimal-mode.ts +9 -9
  39. package/runtime/examples/extensions/modal-editor.ts +3 -3
  40. package/runtime/examples/extensions/model-status.ts +3 -3
  41. package/runtime/examples/extensions/notify.ts +5 -5
  42. package/runtime/examples/extensions/overlay-qa-tests.ts +20 -20
  43. package/runtime/examples/extensions/overlay-test.ts +3 -3
  44. package/runtime/examples/extensions/permission-gate.ts +2 -2
  45. package/runtime/examples/extensions/pirate.ts +4 -4
  46. package/runtime/examples/extensions/plan-mode/index.ts +21 -21
  47. package/runtime/examples/extensions/preset.ts +26 -26
  48. package/runtime/examples/extensions/project-trust.ts +7 -7
  49. package/runtime/examples/extensions/prompt-customizer.ts +3 -3
  50. package/runtime/examples/extensions/protected-paths.ts +2 -2
  51. package/runtime/examples/extensions/provider-payload.ts +3 -3
  52. package/runtime/examples/extensions/question.ts +2 -2
  53. package/runtime/examples/extensions/questionnaire.ts +2 -2
  54. package/runtime/examples/extensions/rainbow-editor.ts +3 -3
  55. package/runtime/examples/extensions/reload-runtime.ts +4 -4
  56. package/runtime/examples/extensions/rpc-demo.ts +10 -10
  57. package/runtime/examples/extensions/sandbox/index.ts +15 -15
  58. package/runtime/examples/extensions/sandbox/package-lock.json +4 -4
  59. package/runtime/examples/extensions/sandbox/package.json +3 -3
  60. package/runtime/examples/extensions/send-user-message.ts +13 -13
  61. package/runtime/examples/extensions/session-name.ts +4 -4
  62. package/runtime/examples/extensions/shutdown-command.ts +10 -10
  63. package/runtime/examples/extensions/snake.ts +3 -3
  64. package/runtime/examples/extensions/space-invaders.ts +3 -3
  65. package/runtime/examples/extensions/ssh.ts +12 -12
  66. package/runtime/examples/extensions/status-line.ts +4 -4
  67. package/runtime/examples/extensions/structured-output.ts +2 -2
  68. package/runtime/examples/extensions/subagent/index.ts +5 -5
  69. package/runtime/examples/extensions/system-prompt-header.ts +3 -3
  70. package/runtime/examples/extensions/tic-tac-toe.ts +15 -15
  71. package/runtime/examples/extensions/timed-confirm.ts +4 -4
  72. package/runtime/examples/extensions/titlebar-spinner.ts +11 -11
  73. package/runtime/examples/extensions/todo.ts +5 -5
  74. package/runtime/examples/extensions/tool-override.ts +5 -5
  75. package/runtime/examples/extensions/tools.ts +10 -10
  76. package/runtime/examples/extensions/trigger-compact.ts +3 -3
  77. package/runtime/examples/extensions/truncated-tool.ts +3 -3
  78. package/runtime/examples/extensions/widget-placement.ts +2 -2
  79. package/runtime/examples/extensions/with-deps/index.ts +2 -2
  80. package/runtime/examples/extensions/with-deps/package-lock.json +4 -4
  81. package/runtime/examples/extensions/with-deps/package.json +3 -3
  82. package/runtime/examples/extensions/working-indicator.ts +7 -7
  83. package/runtime/examples/extensions/working-message-test.ts +3 -3
  84. package/runtime/examples/sdk/01-minimal.ts +1 -1
  85. package/runtime/examples/sdk/03-custom-prompt.ts +1 -1
  86. package/runtime/examples/sdk/04-skills.ts +1 -1
  87. package/runtime/examples/sdk/05-tools.ts +1 -1
  88. package/runtime/examples/sdk/06-extensions.ts +11 -11
  89. package/runtime/examples/sdk/08-prompt-templates.ts +1 -1
  90. package/runtime/export-html/template.js +3 -3
  91. package/runtime/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  92. package/runtime/package.json +8 -14
  93. package/runtime/theme/dark.json +0 -1
  94. package/runtime/theme/light.json +0 -1
  95. package/runtime/theme/theme-schema.json +2 -2
  96. package/runtime/valni +2 -2
  97. package/runtime/README.md +0 -674
  98. package/runtime/docs/extensions.md +0 -2910
  99. package/runtime/docs/json.md +0 -82
  100. package/runtime/docs/models.md +0 -540
  101. package/runtime/docs/packages.md +0 -228
  102. package/runtime/docs/rpc.md +0 -1480
  103. package/runtime/docs/sdk.md +0 -1183
  104. package/runtime/docs/session-format.md +0 -422
  105. package/runtime/docs/settings.md +0 -315
  106. package/runtime/docs/shell-aliases.md +0 -13
  107. package/runtime/docs/terminal-setup.md +0 -142
  108. package/runtime/docs/termux.md +0 -127
  109. package/runtime/docs/tmux.md +0 -63
  110. package/runtime/docs/tui.md +0 -927
  111. package/runtime/docs/windows.md +0 -17
  112. package/runtime/examples/README.md +0 -25
  113. package/runtime/examples/extensions/README.md +0 -212
  114. package/runtime/examples/extensions/doom-overlay/README.md +0 -46
  115. package/runtime/examples/extensions/dynamic-resources/SKILL.md +0 -8
  116. package/runtime/examples/extensions/dynamic-resources/dynamic.md +0 -5
  117. package/runtime/examples/extensions/gondolin/index.ts +0 -531
  118. package/runtime/examples/extensions/gondolin/package-lock.json +0 -185
  119. package/runtime/examples/extensions/gondolin/package.json +0 -19
  120. package/runtime/examples/extensions/plan-mode/README.md +0 -66
  121. package/runtime/examples/extensions/subagent/README.md +0 -175
  122. package/runtime/examples/extensions/subagent/agents/planner.md +0 -37
  123. package/runtime/examples/extensions/subagent/agents/reviewer.md +0 -35
  124. package/runtime/examples/extensions/subagent/agents/scout.md +0 -50
  125. package/runtime/examples/extensions/subagent/agents/worker.md +0 -24
  126. package/runtime/examples/extensions/subagent/prompts/implement-and-review.md +0 -10
  127. package/runtime/examples/extensions/subagent/prompts/implement.md +0 -10
  128. package/runtime/examples/extensions/subagent/prompts/scout-and-plan.md +0 -9
  129. package/runtime/examples/sdk/README.md +0 -140
  130. package/runtime/node_modules/@mariozechner/clipboard/.yarnrc.yml +0 -1
  131. package/runtime/node_modules/@mariozechner/clipboard/Cargo.toml +0 -45
  132. package/runtime/node_modules/@mariozechner/clipboard/README.md +0 -60
  133. package/runtime/node_modules/@mariozechner/clipboard/build.rs +0 -5
  134. package/runtime/node_modules/@mariozechner/clipboard/clipboard.darwin-x64.node +0 -0
  135. package/runtime/node_modules/@mariozechner/clipboard/exp.ts +0 -12
  136. package/runtime/node_modules/@mariozechner/clipboard/index.js +0 -606
  137. package/runtime/node_modules/@mariozechner/clipboard/package.json +0 -56
  138. package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/common.rs +0 -307
  139. package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/mod.rs +0 -93
  140. package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/ios.rs +0 -313
  141. package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/macos.rs +0 -471
  142. package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/mod.rs +0 -252
  143. package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/wayland.rs +0 -431
  144. package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/win.rs +0 -712
  145. package/runtime/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/x11.rs +0 -916
  146. package/runtime/node_modules/@mariozechner/clipboard/src/lib.rs +0 -194
  147. package/runtime/node_modules/@mariozechner/clipboard-darwin-x64/README.md +0 -3
  148. package/runtime/node_modules/@mariozechner/clipboard-darwin-x64/clipboard.darwin-x64.node +0 -0
  149. package/runtime/node_modules/@mariozechner/clipboard-darwin-x64/package.json +0 -22
@@ -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.
@@ -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
- ```
@@ -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.