runpane 2.4.130 → 2.4.131

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 (46) hide show
  1. package/README.md +13 -0
  2. package/dist/agentTasks.d.ts +8 -0
  3. package/dist/agentTasks.d.ts.map +1 -0
  4. package/dist/agentTasks.js +123 -0
  5. package/dist/agentTasks.js.map +1 -0
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +30 -0
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands.d.ts +7 -0
  10. package/dist/commands.d.ts.map +1 -1
  11. package/dist/commands.js +73 -10
  12. package/dist/commands.js.map +1 -1
  13. package/dist/daemonActions.d.ts +16 -0
  14. package/dist/daemonActions.d.ts.map +1 -0
  15. package/dist/daemonActions.js +98 -0
  16. package/dist/daemonActions.js.map +1 -0
  17. package/dist/docs-index.json +1 -0
  18. package/dist/docs.d.ts +18 -0
  19. package/dist/docs.d.ts.map +1 -0
  20. package/dist/docs.js +123 -0
  21. package/dist/docs.js.map +1 -0
  22. package/dist/generated/contract.d.ts +1337 -12
  23. package/dist/generated/contract.d.ts.map +1 -1
  24. package/dist/generated/contract.js +3763 -1121
  25. package/dist/generated/contract.js.map +1 -1
  26. package/dist/links.d.ts +13 -0
  27. package/dist/links.d.ts.map +1 -0
  28. package/dist/links.js +57 -0
  29. package/dist/links.js.map +1 -0
  30. package/dist/localControl.d.ts +220 -1
  31. package/dist/localControl.d.ts.map +1 -1
  32. package/dist/localControl.js +34 -16
  33. package/dist/localControl.js.map +1 -1
  34. package/dist/mcp.d.ts +12 -0
  35. package/dist/mcp.d.ts.map +1 -0
  36. package/dist/mcp.js +189 -0
  37. package/dist/mcp.js.map +1 -0
  38. package/dist/mcpSdk.d.ts +3 -0
  39. package/dist/mcpSdk.d.ts.map +1 -0
  40. package/dist/mcpSdk.js +74 -0
  41. package/dist/mcpSdk.js.LEGAL.txt +8 -0
  42. package/dist/mcpTools.d.ts +78 -0
  43. package/dist/mcpTools.d.ts.map +1 -0
  44. package/dist/mcpTools.js +195 -0
  45. package/dist/mcpTools.js.map +1 -0
  46. package/package.json +5 -2
@@ -57,6 +57,19 @@ export declare const RUNPANE_CONTRACT: {
57
57
  readonly description: "Open a Cursor Agent terminal tab and allow the initial input to drive the agent.";
58
58
  };
59
59
  };
60
+ readonly terminalKeys: {
61
+ readonly enter: "\r";
62
+ readonly escape: "\u001B";
63
+ readonly tab: "\t";
64
+ readonly backspace: "";
65
+ readonly space: " ";
66
+ readonly up: "\u001B[A";
67
+ readonly down: "\u001B[B";
68
+ readonly right: "\u001B[C";
69
+ readonly left: "\u001B[D";
70
+ readonly "ctrl-c": "\u0003";
71
+ readonly "ctrl-d": "\u0004";
72
+ };
60
73
  readonly commands: readonly [{
61
74
  readonly name: "help";
62
75
  readonly summary: "Show help for runpane or a specific command.";
@@ -85,185 +98,485 @@ export declare const RUNPANE_CONTRACT: {
85
98
  }, {
86
99
  readonly name: "doctor";
87
100
  readonly summary: "Run platform, release, installed Pane, daemon reachability, and remote setup diagnostics.";
101
+ readonly openWorld: true;
88
102
  readonly usage: readonly ["runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", "runpane doctor --report [--title <text>] --body-file <path|-> [--yes] [--json]"];
103
+ readonly toolsets: readonly ["core", "admin"];
89
104
  readonly jsonSchemas: readonly ["doctorResult"];
90
105
  }, {
91
106
  readonly name: "daemon repair";
92
107
  readonly summary: "Repair and restart the managed remote-daemon launcher without changing pairing or tunnel configuration.";
93
108
  readonly usage: readonly ["runpane daemon repair [--pane-dir <path>] [--pane-path <path>] [--yes] [--json]"];
94
109
  readonly mutates: true;
110
+ readonly toolsets: readonly ["admin"];
95
111
  readonly jsonSchemas: readonly ["daemonRepairResult"];
96
112
  }, {
97
113
  readonly name: "agents doctor";
98
114
  readonly summary: "Diagnose whether a built-in agent command is available in a Pane repository environment.";
99
115
  readonly usage: readonly ["runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]"];
116
+ readonly toolsets: readonly ["admin"];
100
117
  readonly jsonSchemas: readonly ["agentDoctorResult"];
101
118
  }, {
102
119
  readonly name: "agent-context";
103
120
  readonly summary: "Print token-efficient Pane command context for coding agents.";
104
121
  readonly usage: readonly ["runpane agent-context [--json]", "runpane agent-context --command <command> [--json]"];
122
+ readonly toolsets: readonly ["admin", "docs"];
105
123
  readonly jsonSchemas: readonly ["agentContextBriefResult", "agentContextCommandResult"];
124
+ }, {
125
+ readonly name: "mcp";
126
+ readonly summary: "Run the Pane MCP server over stdio so coding agents can call runpane commands as tools.";
127
+ readonly usage: readonly ["runpane mcp [--toolsets <name,...>] [--read-only]"];
128
+ readonly wrappers: readonly ["npm"];
106
129
  }, {
107
130
  readonly name: "repos list";
108
131
  readonly summary: "List repositories saved in the running Pane app.";
109
132
  readonly usage: readonly ["runpane repos list [--json] [--pane-dir <path>]"];
133
+ readonly toolsets: readonly ["core", "repos"];
110
134
  readonly jsonSchemas: readonly ["repoListResult"];
111
135
  }, {
112
136
  readonly name: "repos add";
113
137
  readonly summary: "Register an existing git repository with the running Pane app.";
114
138
  readonly usage: readonly ["runpane repos add --path <path> [--name <name>] [--json] [--yes]"];
115
139
  readonly mutates: true;
140
+ readonly additive: true;
141
+ readonly idempotent: true;
142
+ readonly toolsets: readonly ["core", "repos"];
116
143
  readonly jsonSchemas: readonly ["repoAddRequest", "repoAddResult"];
117
144
  }, {
118
145
  readonly name: "panes list";
119
146
  readonly summary: "List Pane sessions in a saved repository.";
120
147
  readonly usage: readonly ["runpane panes list [--repo <selector>] [--json]"];
148
+ readonly toolsets: readonly ["core", "panes"];
121
149
  readonly jsonSchemas: readonly ["paneListResult"];
122
150
  }, {
123
151
  readonly name: "panes cost";
124
152
  readonly summary: "Report estimated token cost per Pane, with per-model breakdown and cache efficiency.";
125
153
  readonly usage: readonly ["runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]"];
154
+ readonly toolsets: readonly ["panes"];
126
155
  readonly jsonSchemas: readonly ["paneCostRequest", "paneCostResult"];
127
156
  }, {
128
157
  readonly name: "workspace state";
129
158
  readonly summary: "Read one workspace snapshot of every Pane and CLI panel.";
130
159
  readonly usage: readonly ["runpane workspace state [--repo <selector>] [--json]"];
160
+ readonly toolsets: readonly ["core", "agents"];
131
161
  readonly jsonSchemas: readonly ["workspaceStateResult"];
132
162
  }, {
133
163
  readonly name: "watch";
134
164
  readonly summary: "Wait for workspace agent and Pane transitions using a daemon-held cursor.";
135
165
  readonly usage: readonly ["runpane watch [--as <name>|--since <generation>] [--follow] [--format <lines|json>] [--heartbeat <seconds>] [--idle-after <ms>] [--settle <ms>] [--blocked-settle <ms>] [--min-interval <ms>] [--idle-backoff] [--all-managed|--pane <id>] [--include-shells] [--self-test] [--kinds <kind,...>] [--repo <selector>] [--name-contains <text>] [--timeout-ms <ms>] [--from <now|earliest>] [--json]"];
166
+ readonly toolsets: readonly ["agents"];
136
167
  readonly jsonSchemas: readonly ["workspaceWaitRequest", "workspaceWaitResult"];
137
168
  }, {
138
169
  readonly name: "panes create";
139
170
  readonly summary: "Create user-visible Panes (Pane sessions) backed by Pane-managed worktrees for feature/PR work and open terminal-backed tool tabs.";
140
171
  readonly usage: readonly ["runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [options]", "runpane panes create --from-json <path|-> [--yes] [--json]"];
141
172
  readonly mutates: true;
173
+ readonly additive: true;
174
+ readonly toolsets: readonly ["panes"];
142
175
  readonly jsonSchemas: readonly ["paneCreateRequest", "paneCreateResult"];
143
176
  }, {
144
177
  readonly name: "panes adopt";
145
178
  readonly summary: "Adopt an existing externally managed git worktree as a Pane without changing the worktree.";
146
179
  readonly usage: readonly ["runpane panes adopt --repo <selector> --path <dir> --name <name> --agent <codex|claude|cursor> [--resume <id>] [--folder <name>] [--launch] [--no-pinned] [--dry-run] [--yes] [--json]"];
147
180
  readonly mutates: true;
181
+ readonly additive: true;
182
+ readonly toolsets: readonly ["panes"];
148
183
  readonly jsonSchemas: readonly ["paneCreateResult"];
149
184
  }, {
150
185
  readonly name: "panes archive";
151
186
  readonly summary: "Archive a Pane (session) exactly like the UI Archive action, including safe removal of its Pane-managed git worktree.";
152
187
  readonly usage: readonly ["runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes [--json]"];
153
188
  readonly mutates: true;
189
+ readonly toolsets: readonly ["core", "panes"];
154
190
  readonly jsonSchemas: readonly ["paneArchiveRequest", "paneArchiveResult"];
155
191
  }, {
156
192
  readonly name: "panes pin";
157
193
  readonly summary: "Declaratively pin a Pane; pinned is the Pane UI's favorite/pin star and repeated requests are idempotent.";
158
194
  readonly usage: readonly ["runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]"];
159
195
  readonly mutates: true;
196
+ readonly idempotent: true;
197
+ readonly toolsets: readonly ["panes"];
160
198
  readonly jsonSchemas: readonly ["panePinRequest", "panePinResult"];
161
199
  }, {
162
200
  readonly name: "panes unpin";
163
201
  readonly summary: "Declaratively unpin a Pane; pinned is the Pane UI's favorite/pin star and repeated requests are idempotent.";
164
202
  readonly usage: readonly ["runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]"];
165
203
  readonly mutates: true;
204
+ readonly idempotent: true;
205
+ readonly toolsets: readonly ["panes"];
166
206
  readonly jsonSchemas: readonly ["panePinRequest", "panePinResult"];
167
207
  }, {
168
208
  readonly name: "panes rename";
169
209
  readonly summary: "Rename a Pane without changing its worktree, branch, panels, or focus.";
170
210
  readonly usage: readonly ["runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]"];
171
211
  readonly mutates: true;
212
+ readonly idempotent: true;
213
+ readonly toolsets: readonly ["panes"];
172
214
  readonly jsonSchemas: readonly ["paneRenameRequest", "paneRenameResult"];
173
215
  }, {
174
216
  readonly name: "panes focus";
175
217
  readonly summary: "Raise the Pane window and select a Pane (and optionally one of its panels) on explicit user request.";
176
218
  readonly usage: readonly ["runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json]"];
177
219
  readonly mutates: true;
220
+ readonly additive: true;
221
+ readonly idempotent: true;
222
+ readonly toolsets: readonly ["panes"];
178
223
  readonly jsonSchemas: readonly ["paneFocusRequest", "paneFocusResult"];
179
224
  }, {
180
225
  readonly name: "panels create";
181
226
  readonly summary: "Create a terminal-backed tool panel inside an existing Pane session.";
182
227
  readonly usage: readonly ["runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--wait-ready] --yes [--json]", "runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--focus|--no-focus] --yes [--json]"];
183
228
  readonly mutates: true;
229
+ readonly additive: true;
230
+ readonly toolsets: readonly ["panels"];
184
231
  readonly jsonSchemas: readonly ["panelCreateRequest", "panelCreateResult"];
185
232
  }, {
186
233
  readonly name: "panels list";
187
234
  readonly summary: "List tool panels inside a Pane session.";
188
235
  readonly usage: readonly ["runpane panels list --pane <pane-id> [--json]"];
236
+ readonly toolsets: readonly ["panels"];
189
237
  readonly jsonSchemas: readonly ["panelListResult"];
190
238
  }, {
191
239
  readonly name: "panels output";
192
240
  readonly summary: "Read recent terminal output from a panel.";
193
241
  readonly usage: readonly ["runpane panels output --panel <panel-id> [--limit <count>] [--json]"];
242
+ readonly toolsets: readonly ["panels"];
194
243
  readonly jsonSchemas: readonly ["panelOutputResult"];
195
244
  }, {
196
245
  readonly name: "panels screen";
197
246
  readonly summary: "Read a compact current-screen view from a terminal panel.";
198
247
  readonly usage: readonly ["runpane panels screen --panel <panel-id> [--limit <count>] [--json]"];
248
+ readonly toolsets: readonly ["panels"];
199
249
  readonly jsonSchemas: readonly ["panelScreenResult"];
200
250
  }, {
201
251
  readonly name: "panels input";
202
252
  readonly summary: "Send input bytes to a terminal panel.";
203
- readonly usage: readonly ["runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]"];
253
+ readonly usage: readonly ["runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--input-file <path|->) --yes [--json]"];
204
254
  readonly mutates: true;
255
+ readonly toolsets: readonly ["core", "panels"];
205
256
  readonly jsonSchemas: readonly ["panelInputRequest", "panelInputResult"];
206
257
  }, {
207
258
  readonly name: "panels submit";
208
259
  readonly summary: "Send and submit text to a terminal panel, including idle agent composers.";
209
260
  readonly usage: readonly ["runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]"];
210
261
  readonly mutates: true;
262
+ readonly toolsets: readonly ["panels"];
211
263
  readonly jsonSchemas: readonly ["panelSubmitRequest", "panelSubmitResult"];
212
264
  }, {
213
265
  readonly name: "panels submit-composer";
214
266
  readonly summary: "Submit an agent composer using the panel-appropriate key sequence.";
215
267
  readonly usage: readonly ["runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]"];
216
268
  readonly mutates: true;
269
+ readonly toolsets: readonly ["panels"];
217
270
  readonly jsonSchemas: readonly ["panelSubmitComposerRequest", "panelSubmitComposerResult"];
218
271
  }, {
219
272
  readonly name: "panels wait";
220
273
  readonly summary: "Wait for a terminal panel to initialize, become ready/idle, or contain text.";
221
274
  readonly usage: readonly ["runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--contains <text>] [--timeout-ms <ms>] [--interval-ms <ms>] [--json]"];
275
+ readonly toolsets: readonly ["panels"];
222
276
  readonly jsonSchemas: readonly ["panelWaitResult"];
277
+ }, {
278
+ readonly name: "panes git-status";
279
+ readonly summary: "Read the git status of a Pane worktree: uncommitted, unpushed, and behind-main counts.";
280
+ readonly usage: readonly ["runpane panes git-status --pane <pane-id> [--json] [--pane-dir <path>]"];
281
+ readonly daemonAction: {
282
+ readonly channel: "sessions:get-git-status";
283
+ readonly args: readonly ["--pane"];
284
+ };
285
+ readonly toolsets: readonly ["core", "git"];
286
+ readonly jsonSchemas: readonly ["daemonActionResult"];
287
+ }, {
288
+ readonly name: "panes commit";
289
+ readonly summary: "Stage all changes in a Pane worktree and commit them.";
290
+ readonly usage: readonly ["runpane panes commit --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]"];
291
+ readonly mutates: true;
292
+ readonly additive: true;
293
+ readonly daemonAction: {
294
+ readonly channel: "sessions:git-stage-and-commit";
295
+ readonly args: readonly ["--pane", "--message"];
296
+ };
297
+ readonly toolsets: readonly ["git"];
298
+ readonly jsonSchemas: readonly ["daemonActionResult"];
299
+ }, {
300
+ readonly name: "panes push";
301
+ readonly summary: "Push a Pane branch to its remote.";
302
+ readonly usage: readonly ["runpane panes push --pane <pane-id> --yes [--json] [--pane-dir <path>]"];
303
+ readonly openWorld: true;
304
+ readonly mutates: true;
305
+ readonly additive: true;
306
+ readonly idempotent: true;
307
+ readonly daemonAction: {
308
+ readonly channel: "sessions:git-push";
309
+ readonly args: readonly ["--pane"];
310
+ };
311
+ readonly toolsets: readonly ["git"];
312
+ readonly jsonSchemas: readonly ["daemonActionResult"];
313
+ }, {
314
+ readonly name: "panes pull";
315
+ readonly summary: "Pull the remote branch into a Pane worktree.";
316
+ readonly usage: readonly ["runpane panes pull --pane <pane-id> --yes [--json] [--pane-dir <path>]"];
317
+ readonly openWorld: true;
318
+ readonly mutates: true;
319
+ readonly daemonAction: {
320
+ readonly channel: "sessions:git-pull";
321
+ readonly args: readonly ["--pane"];
322
+ };
323
+ readonly toolsets: readonly ["git"];
324
+ readonly jsonSchemas: readonly ["daemonActionResult"];
325
+ }, {
326
+ readonly name: "panes rebase-main";
327
+ readonly summary: "Rebase a Pane branch onto the latest main branch.";
328
+ readonly usage: readonly ["runpane panes rebase-main --pane <pane-id> --yes [--json] [--pane-dir <path>]"];
329
+ readonly mutates: true;
330
+ readonly daemonAction: {
331
+ readonly channel: "sessions:rebase-main-into-worktree";
332
+ readonly args: readonly ["--pane"];
333
+ };
334
+ readonly toolsets: readonly ["git"];
335
+ readonly jsonSchemas: readonly ["daemonActionResult"];
336
+ }, {
337
+ readonly name: "panes restore";
338
+ readonly summary: "Restore an archived Pane, recreating its worktree.";
339
+ readonly usage: readonly ["runpane panes restore --pane <pane-id> --yes [--json] [--pane-dir <path>]"];
340
+ readonly mutates: true;
341
+ readonly additive: true;
342
+ readonly idempotent: true;
343
+ readonly daemonAction: {
344
+ readonly channel: "sessions:restore";
345
+ readonly args: readonly ["--pane"];
346
+ };
347
+ readonly toolsets: readonly ["core", "panes"];
348
+ readonly jsonSchemas: readonly ["daemonActionResult"];
349
+ }, {
350
+ readonly name: "panes squash-rebase";
351
+ readonly summary: "Squash a Pane branch into one commit and rebase it onto main.";
352
+ readonly usage: readonly ["runpane panes squash-rebase --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]"];
353
+ readonly mutates: true;
354
+ readonly daemonAction: {
355
+ readonly channel: "sessions:squash-and-rebase-to-main";
356
+ readonly args: readonly ["--pane", "--message"];
357
+ };
358
+ readonly toolsets: readonly ["git"];
359
+ readonly jsonSchemas: readonly ["daemonActionResult"];
360
+ }, {
361
+ readonly name: "panes stash";
362
+ readonly summary: "Stash uncommitted changes in a Pane worktree.";
363
+ readonly usage: readonly ["runpane panes stash --pane <pane-id> --yes [--json] [--pane-dir <path>]"];
364
+ readonly mutates: true;
365
+ readonly daemonAction: {
366
+ readonly channel: "sessions:git-stash";
367
+ readonly args: readonly ["--pane"];
368
+ };
369
+ readonly toolsets: readonly ["git"];
370
+ readonly jsonSchemas: readonly ["daemonActionResult"];
371
+ }, {
372
+ readonly name: "panes stash-pop";
373
+ readonly summary: "Apply and drop the latest stash in a Pane worktree.";
374
+ readonly usage: readonly ["runpane panes stash-pop --pane <pane-id> --yes [--json] [--pane-dir <path>]"];
375
+ readonly mutates: true;
376
+ readonly daemonAction: {
377
+ readonly channel: "sessions:git-stash-pop";
378
+ readonly args: readonly ["--pane"];
379
+ };
380
+ readonly toolsets: readonly ["git"];
381
+ readonly jsonSchemas: readonly ["daemonActionResult"];
382
+ }, {
383
+ readonly name: "panes soft-reset";
384
+ readonly summary: "Undo the last commit in a Pane, keeping its changes staged.";
385
+ readonly usage: readonly ["runpane panes soft-reset --pane <pane-id> --yes [--json] [--pane-dir <path>]"];
386
+ readonly mutates: true;
387
+ readonly daemonAction: {
388
+ readonly channel: "sessions:git-soft-reset";
389
+ readonly args: readonly ["--pane"];
390
+ };
391
+ readonly toolsets: readonly ["git"];
392
+ readonly jsonSchemas: readonly ["daemonActionResult"];
393
+ }, {
394
+ readonly name: "panes fetch";
395
+ readonly summary: "Fetch the remote for a Pane worktree.";
396
+ readonly usage: readonly ["runpane panes fetch --pane <pane-id> --yes [--json] [--pane-dir <path>]"];
397
+ readonly openWorld: true;
398
+ readonly mutates: true;
399
+ readonly additive: true;
400
+ readonly idempotent: true;
401
+ readonly daemonAction: {
402
+ readonly channel: "sessions:git-fetch";
403
+ readonly args: readonly ["--pane"];
404
+ };
405
+ readonly toolsets: readonly ["git"];
406
+ readonly jsonSchemas: readonly ["daemonActionResult"];
407
+ }, {
408
+ readonly name: "panes run-script";
409
+ readonly summary: "Run the repository's run script in a Pane.";
410
+ readonly usage: readonly ["runpane panes run-script --pane <pane-id> --yes [--json] [--pane-dir <path>]"];
411
+ readonly mutates: true;
412
+ readonly additive: true;
413
+ readonly daemonAction: {
414
+ readonly channel: "sessions:run-script";
415
+ readonly args: readonly ["--pane"];
416
+ };
417
+ readonly toolsets: readonly ["panes"];
418
+ readonly jsonSchemas: readonly ["daemonActionResult"];
419
+ }, {
420
+ readonly name: "panes stop-script";
421
+ readonly summary: "Stop the run script running in a Pane.";
422
+ readonly usage: readonly ["runpane panes stop-script --pane <pane-id> --yes [--json] [--pane-dir <path>]"];
423
+ readonly mutates: true;
424
+ readonly idempotent: true;
425
+ readonly daemonAction: {
426
+ readonly channel: "sessions:stop-script";
427
+ readonly args: readonly ["--pane"];
428
+ };
429
+ readonly toolsets: readonly ["panes"];
430
+ readonly jsonSchemas: readonly ["daemonActionResult"];
431
+ }, {
432
+ readonly name: "panes move";
433
+ readonly summary: "Move a Pane into a sidebar folder.";
434
+ readonly usage: readonly ["runpane panes move --pane <pane-id> --folder <folder-id> --yes [--json] [--pane-dir <path>]"];
435
+ readonly mutates: true;
436
+ readonly idempotent: true;
437
+ readonly daemonAction: {
438
+ readonly channel: "folders:move-session";
439
+ readonly args: readonly ["--pane", "--folder"];
440
+ };
441
+ readonly toolsets: readonly ["panes"];
442
+ readonly jsonSchemas: readonly ["daemonActionResult"];
443
+ }, {
444
+ readonly name: "folders list";
445
+ readonly summary: "List the sidebar folders of a repository.";
446
+ readonly usage: readonly ["runpane folders list --repo <repo-id> [--json] [--pane-dir <path>]"];
447
+ readonly daemonAction: {
448
+ readonly channel: "folders:get-by-project";
449
+ readonly args: readonly ["--repo"];
450
+ };
451
+ readonly toolsets: readonly ["panes"];
452
+ readonly jsonSchemas: readonly ["daemonActionResult"];
453
+ }, {
454
+ readonly name: "folders create";
455
+ readonly summary: "Create a sidebar folder in a repository.";
456
+ readonly usage: readonly ["runpane folders create --repo <repo-id> --name <name> --yes [--json] [--pane-dir <path>]"];
457
+ readonly mutates: true;
458
+ readonly additive: true;
459
+ readonly daemonAction: {
460
+ readonly channel: "folders:create";
461
+ readonly args: readonly ["--name", "--repo"];
462
+ };
463
+ readonly toolsets: readonly ["panes"];
464
+ readonly jsonSchemas: readonly ["daemonActionResult"];
465
+ }, {
466
+ readonly name: "links create";
467
+ readonly summary: "Build a pane:// link that opens a Pane, panel, repository, or Session in the Pane app.";
468
+ readonly usage: readonly ["runpane links create --pane <pane-id> [--panel <panel-id>] [--json]", "runpane links create --repo <repo-id> [--json]", "runpane links create --session <session-id> [--json]"];
469
+ readonly toolsets: readonly ["core", "links"];
470
+ readonly jsonSchemas: readonly ["linkCreateResult"];
471
+ }, {
472
+ readonly name: "links open";
473
+ readonly summary: "Open a pane:// link in the running Pane app.";
474
+ readonly usage: readonly ["runpane links open --url <pane-url> --yes [--json] [--pane-dir <path>]"];
475
+ readonly mutates: true;
476
+ readonly additive: true;
477
+ readonly idempotent: true;
478
+ readonly daemonAction: {
479
+ readonly channel: "runpane:links:open";
480
+ readonly args: readonly ["--url"];
481
+ };
482
+ readonly toolsets: readonly ["links"];
483
+ readonly jsonSchemas: readonly ["daemonActionResult"];
484
+ }, {
485
+ readonly name: "docs search";
486
+ readonly summary: "Search Pane's docs, runpane help, and the Pane Chat skills.";
487
+ readonly usage: readonly ["runpane docs search --query <text> [--limit <count>] [--json]"];
488
+ readonly wrappers: readonly ["npm"];
489
+ readonly toolsets: readonly ["core", "docs"];
490
+ readonly jsonSchemas: readonly ["docsSearchResult"];
491
+ }, {
492
+ readonly name: "docs read";
493
+ readonly summary: "Read one Pane doc, help topic, or skill in full.";
494
+ readonly usage: readonly ["runpane docs read --doc <path> [--json]"];
495
+ readonly wrappers: readonly ["npm"];
496
+ readonly toolsets: readonly ["core", "docs"];
497
+ readonly jsonSchemas: readonly ["docsReadResult"];
498
+ }, {
499
+ readonly name: "agents start";
500
+ readonly summary: "Start an agent on a task: create a Pane in a repository, launch the agent with the prompt, and wait until it is ready.";
501
+ readonly usage: readonly ["runpane agents start --repo <selector> --name <name> (--agent <codex|claude|cursor>|--tool-command <command>) --prompt <task> [--base-branch <branch>] --yes [--json] [--pane-dir <path>]"];
502
+ readonly mutates: true;
503
+ readonly additive: true;
504
+ readonly wrappers: readonly ["npm"];
505
+ readonly toolsets: readonly ["core", "agents"];
506
+ readonly jsonSchemas: readonly ["agentTaskResult"];
507
+ }, {
508
+ readonly name: "agents status";
509
+ readonly summary: "Check on an agent: whether it is working, ready, blocked, or idle, plus its current screen.";
510
+ readonly usage: readonly ["runpane agents status (--pane <pane-id>|--panel <panel-id>) [--limit <count>] [--json] [--pane-dir <path>]"];
511
+ readonly wrappers: readonly ["npm"];
512
+ readonly toolsets: readonly ["core", "agents"];
513
+ readonly jsonSchemas: readonly ["agentStatusResult"];
514
+ }, {
515
+ readonly name: "agents send";
516
+ readonly summary: "Send a follow-up message to an agent and confirm it was submitted.";
517
+ readonly usage: readonly ["runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> --yes [--json] [--pane-dir <path>]"];
518
+ readonly mutates: true;
519
+ readonly wrappers: readonly ["npm"];
520
+ readonly toolsets: readonly ["core", "agents"];
521
+ readonly jsonSchemas: readonly ["agentSendResult"];
223
522
  }, {
224
523
  readonly name: "sessions list";
225
524
  readonly summary: "List durable named orchestration Sessions.";
226
525
  readonly usage: readonly ["runpane sessions list [--json] [--pane-dir <path>]"];
526
+ readonly toolsets: readonly ["sessions"];
227
527
  readonly jsonSchemas: readonly ["sessionListResult"];
228
528
  }, {
229
529
  readonly name: "sessions create";
230
530
  readonly summary: "Create a durable named orchestration Session and its hidden terminal owner.";
231
531
  readonly usage: readonly ["runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]"];
232
532
  readonly mutates: true;
533
+ readonly additive: true;
534
+ readonly toolsets: readonly ["sessions"];
233
535
  readonly jsonSchemas: readonly ["sessionResult"];
234
536
  }, {
235
537
  readonly name: "sessions get";
236
538
  readonly summary: "Read one durable named orchestration Session.";
237
539
  readonly usage: readonly ["runpane sessions get --session <id|name> [--json] [--pane-dir <path>]"];
540
+ readonly toolsets: readonly ["sessions"];
238
541
  readonly jsonSchemas: readonly ["sessionResult"];
239
542
  }, {
240
543
  readonly name: "sessions update";
241
544
  readonly summary: "Update a Session overview from structured JSON.";
242
545
  readonly usage: readonly ["runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]"];
243
546
  readonly mutates: true;
547
+ readonly idempotent: true;
548
+ readonly toolsets: readonly ["sessions"];
244
549
  readonly jsonSchemas: readonly ["sessionResult"];
245
550
  }, {
246
551
  readonly name: "sessions set-agent";
247
552
  readonly summary: "Switch the durable terminal agent for a named Session.";
248
553
  readonly usage: readonly ["runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]"];
249
554
  readonly mutates: true;
555
+ readonly idempotent: true;
556
+ readonly toolsets: readonly ["sessions"];
250
557
  readonly jsonSchemas: readonly ["sessionResult"];
251
558
  }, {
252
559
  readonly name: "sessions associate";
253
560
  readonly summary: "Associate a user-visible Pane with a named Session.";
254
561
  readonly usage: readonly ["runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]"];
255
562
  readonly mutates: true;
563
+ readonly additive: true;
564
+ readonly idempotent: true;
565
+ readonly toolsets: readonly ["sessions"];
256
566
  readonly jsonSchemas: readonly ["sessionResult"];
257
567
  }, {
258
568
  readonly name: "sessions detach";
259
569
  readonly summary: "Detach a Pane from a named Session.";
260
570
  readonly usage: readonly ["runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]"];
261
571
  readonly mutates: true;
572
+ readonly idempotent: true;
573
+ readonly toolsets: readonly ["sessions"];
262
574
  readonly jsonSchemas: readonly ["sessionResult"];
263
575
  }, {
264
576
  readonly name: "sessions overview";
265
577
  readonly summary: "Read a live status, activity, git, and pull request overview for a named Session.";
266
578
  readonly usage: readonly ["runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]"];
579
+ readonly toolsets: readonly ["sessions"];
267
580
  readonly jsonSchemas: readonly ["sessionOverviewResult"];
268
581
  }];
269
582
  readonly flags: {
@@ -495,6 +808,30 @@ export declare const RUNPANE_CONTRACT: {
495
808
  readonly name: "--session";
496
809
  readonly value: "<id|name>";
497
810
  readonly description: "Named orchestration Session id or exact name.";
811
+ }, {
812
+ readonly name: "--message";
813
+ readonly value: "<message>";
814
+ readonly description: "Commit message for panes commit.";
815
+ }, {
816
+ readonly name: "--query";
817
+ readonly value: "<text>";
818
+ readonly description: "Search words for docs search.";
819
+ }, {
820
+ readonly name: "--doc";
821
+ readonly value: "<path>";
822
+ readonly description: "Doc path for docs read.";
823
+ }, {
824
+ readonly name: "--url";
825
+ readonly value: "<pane-url>";
826
+ readonly description: "pane:// link for links open.";
827
+ }, {
828
+ readonly name: "--toolsets";
829
+ readonly value: "<name,...>";
830
+ readonly description: "MCP toolsets for runpane mcp.";
831
+ }, {
832
+ readonly name: "--keys";
833
+ readonly value: "<name,...>";
834
+ readonly description: "Named keys for panels input, such as down,enter.";
498
835
  }];
499
836
  readonly localBoolean: readonly [{
500
837
  readonly name: "--json";
@@ -550,11 +887,14 @@ export declare const RUNPANE_CONTRACT: {
550
887
  }, {
551
888
  readonly name: "--report";
552
889
  readonly description: "Prepare a redacted doctor report; external filing still requires --yes.";
890
+ }, {
891
+ readonly name: "--read-only";
892
+ readonly description: "Serve only read-only MCP tools.";
553
893
  }];
554
894
  };
555
895
  readonly help: {
556
896
  readonly npm: {
557
- readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane doctor --report --body-file <path|->", " runpane daemon repair [--pane-dir <path>] [--yes] [--json]", " runpane agent-context [--json]", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", " runpane repos list [--json]", " runpane repos add --path <path> [--name <name>]", " runpane sessions list [--json] [--pane-dir <path>]", " runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]", " runpane sessions get --session <id|name> [--json] [--pane-dir <path>]", " runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]", " runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]", " runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", " runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", " runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes", " runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] --yes", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane help [command]", "", "Quick start:", " npx --yes runpane@latest", " npm i -g runpane && runpane setup", "", "Advanced examples:", " npx --yes runpane@latest install client", " npx --yes runpane@latest install daemon --label \"My Server\"", " pnpm dlx runpane@latest", "", "Common commands:", " runpane help", " runpane setup", " runpane install", " runpane doctor", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json", " runpane agent-context --command \"<command>\" --json", "", "Run \"runpane help panes create\" for pane orchestration options."];
897
+ readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane doctor --report --body-file <path|->", " runpane daemon repair [--pane-dir <path>] [--yes] [--json]", " runpane agent-context [--json]", " runpane mcp [--toolsets <name,...>] [--read-only]", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", " runpane repos list [--json]", " runpane repos add --path <path> [--name <name>]", " runpane sessions list [--json] [--pane-dir <path>]", " runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]", " runpane sessions get --session <id|name> [--json] [--pane-dir <path>]", " runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]", " runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]", " runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", " runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", " runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes", " runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] --yes", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane panes git-status --pane <pane-id> [--json] [--pane-dir <path>]", " runpane panes commit --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", " runpane panes push --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes pull --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes rebase-main --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes restore --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane links create --pane <pane-id> [--panel <panel-id>] [--json]", " runpane links open --url <pane-url> --yes [--json] [--pane-dir <path>]", " runpane docs search --query <text> [--limit <count>] [--json]", " runpane docs read --doc <path> [--json]", " runpane agents start --repo <selector> --name <name> (--agent <codex|claude|cursor>|--tool-command <command>) --prompt <task> [--base-branch <branch>] --yes [--json] [--pane-dir <path>]", " runpane agents status (--pane <pane-id>|--panel <panel-id>) [--limit <count>] [--json] [--pane-dir <path>]", " runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> --yes [--json] [--pane-dir <path>]", " runpane panes squash-rebase --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", " runpane panes stash --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes stash-pop --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes soft-reset --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes fetch --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes run-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes stop-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes move --pane <pane-id> --folder <folder-id> --yes [--json] [--pane-dir <path>]", " runpane folders list --repo <repo-id> [--json] [--pane-dir <path>]", " runpane folders create --repo <repo-id> --name <name> --yes [--json] [--pane-dir <path>]", " runpane help [command]", "", "Quick start:", " npx --yes runpane@latest", " npm i -g runpane && runpane setup", "", "Advanced examples:", " npx --yes runpane@latest install client", " npx --yes runpane@latest install daemon --label \"My Server\"", " pnpm dlx runpane@latest", "", "Common commands:", " runpane help", " runpane setup", " runpane install", " runpane doctor", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json", " runpane agent-context --command \"<command>\" --json", "", "Run \"runpane help panes create\" for pane orchestration options."];
558
898
  readonly install: readonly ["Usage:", " runpane install [client|daemon] [options]", "", "Examples:", " npx --yes runpane@latest install client", " npx --yes runpane@latest install daemon --label \"My Server\"", " pnpm dlx runpane@latest install daemon --prefer-tunnel ssh --label \"VM\"", "", "Wrapper options:", " --version <latest|vX.Y.Z> Pane release to install", " --format <auto|appimage|deb|dmg|zip|exe>", " --download-dir <path>", " --pane-path <path> Use an existing Pane executable", " --dry-run Print the plan without downloading", " --yes Skip interactive prompts where possible", " --verbose", "", "Daemon passthrough options:", " --label <name>", " --prefer-tunnel <tailscale|ssh|manual|auto>", " --channel <stable|nightly>", " --base-url <url>", " --pane-dir <path>", " --listen-port <port> / --port <port>", " --auto-listen-port", " --interactive-tailscale-setup", " --no-install-service", " --no-tailscale-serve", " --print-only", " --repo-ref <ref>"];
559
899
  readonly setup: readonly ["Usage:", " runpane setup", "", "Opens the guided setup for desktop install, remote host setup, update, and diagnostics.", "", "Quick start:", " npx --yes runpane@latest", " npm i -g runpane && runpane setup"];
560
900
  readonly update: readonly ["Usage:", " runpane update [options]", "", "Updates Pane using the same artifact selection as \"runpane install client\".", "", "Options:", " --version <latest|vX.Y.Z>", " --format <auto|appimage|deb|dmg|zip|exe>", " --download-dir <path>", " --pane-path <path>", " --dry-run", " --yes", " --verbose"];
@@ -579,8 +919,9 @@ export declare const RUNPANE_CONTRACT: {
579
919
  readonly panels: readonly ["Terminal-backed panel commands.", "", "Usage:", " runpane panels <command> [options]", "", "Commands:", " runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [options]", " runpane panels list --pane <pane-id> [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", "", "Run \"runpane help panels create\" or another command-specific topic for options."];
580
920
  readonly "panels list": readonly ["Usage:", " runpane panels list --pane <pane-id> [--json]", "", "Lists tool panels in a Pane session.", "", "Options:", " --pane <pane-id> Pane/session id", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
581
921
  readonly "panels output": readonly ["Usage:", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", "", "Reads bounded recent terminal output from a panel.", "", "Options:", " --panel <panel-id> Tool panel id", " --limit <count> Maximum recent output lines or records to read", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
582
- readonly "panels input": readonly ["Usage:", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", "", "Sends exact input bytes to a terminal panel. Include a newline in the input when you mean Enter.", "", "Options:", " --panel <panel-id> Terminal panel id", " --text <text> Text bytes to send", " --input-file <path|-> Read input from a file or stdin", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for mutating commands"];
922
+ readonly "panels input": readonly ["Usage:", " runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--input-file <path|->) --yes [--json]", "", "Sends exact input bytes to a terminal panel. Include a newline in the input when you mean Enter.", "", "Options:", " --panel <panel-id> Terminal panel id", " --text <text> Text bytes to send", " --keys <name,...> Keys to press: enter, escape, tab, up, down, ctrl-c, ...", " --input-file <path|-> Read input from a file or stdin", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for mutating commands"];
583
923
  readonly "agent-context": readonly ["Usage:", " runpane agent-context [--json]", " runpane agent-context --command <command> [--json]", "", "Prints Pane command context for coding agents without requiring a running Pane app.", "", "Options:", " --command <command> Print the full definition for one runpane command", " --json Print machine-readable output", "", "Examples:", " runpane agent-context", " runpane agent-context --json", " runpane agent-context --command \"panes create\"", " runpane agent-context --command \"panes create\" --json"];
924
+ readonly mcp: readonly ["Usage:", " runpane mcp [--toolsets <name,...>] [--read-only]", "", "Runs the Pane MCP server over stdio. Each runpane command with a JSON result becomes a tool that returns the same JSON as `runpane <command> --json`. Commands that need --yes take `yes: true` instead.", "Pane registers this server with Claude Code and Codex automatically (Settings > AI & Agents). To register it by hand:", " claude mcp add --scope user pane -- npx --yes runpane@latest mcp", " codex mcp add pane -- npx --yes runpane@latest mcp", "", "The MCP server ships in the npm package and inside the Pane app. The Python package does not include it.", "", "Options:", " --toolsets <name,...> core (default), all, read, repos, panes, panels, agents, sessions, git, docs, links, admin", " --read-only Serve only read-only tools"];
584
925
  readonly "agents doctor": readonly ["Usage:", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", "", "Diagnoses whether Codex or Claude is available in the same repository environment Pane will use.", "", "Options:", " --agent <codex|claude|cursor> Built-in agent command to diagnose", " --repo <selector> active, id, exact path, or saved repository name; defaults to active", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
585
926
  readonly "panels screen": readonly ["Usage:", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", "", "Reads a compact current-screen view from a terminal panel. Prefers alternate-screen/TUI output and falls back to recent scrollback.", "", "Options:", " --panel <panel-id> Terminal panel id", " --limit <count> Maximum lines to return; defaults to 80", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
586
927
  readonly "panels submit": readonly ["Usage:", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", "", "Sends text to a terminal panel and normalizes the final terminal Enter to CR. Use this for ordinary prompt answers and shell commands.", "", "Options:", " --panel <panel-id> Terminal panel id", " --text <text> Text to submit before Enter", " --input-file <path|-> Read text from a file or stdin before Enter", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for this mutating command"];
@@ -595,10 +936,33 @@ export declare const RUNPANE_CONTRACT: {
595
936
  readonly "sessions associate": readonly ["Usage:", "runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
596
937
  readonly "sessions detach": readonly ["Usage:", "runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
597
938
  readonly "sessions overview": readonly ["Usage:", "runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
939
+ readonly "panes git-status": readonly ["Usage:", " runpane panes git-status --pane <pane-id> [--json] [--pane-dir <path>]", "", "Read the git status of a Pane worktree: uncommitted, unpushed, and behind-main counts.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
940
+ readonly "panes commit": readonly ["Usage:", " runpane panes commit --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", "", "Stage all changes in a Pane worktree and commit them.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --message <message> Commit message; the first line is the title.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
941
+ readonly "panes push": readonly ["Usage:", " runpane panes push --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Push a Pane branch to its remote.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
942
+ readonly "panes pull": readonly ["Usage:", " runpane panes pull --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Pull the remote branch into a Pane worktree.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
943
+ readonly "panes rebase-main": readonly ["Usage:", " runpane panes rebase-main --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Rebase a Pane branch onto the latest main branch.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
944
+ readonly "panes restore": readonly ["Usage:", " runpane panes restore --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Restore an archived Pane, recreating its worktree.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
945
+ readonly "panes squash-rebase": readonly ["Usage:", " runpane panes squash-rebase --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", "", "Squash a Pane branch into one commit and rebase it onto main.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --message <message> Commit message; the first line is the title.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
946
+ readonly "panes stash": readonly ["Usage:", " runpane panes stash --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Stash uncommitted changes in a Pane worktree.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
947
+ readonly "panes stash-pop": readonly ["Usage:", " runpane panes stash-pop --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Apply and drop the latest stash in a Pane worktree.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
948
+ readonly "panes soft-reset": readonly ["Usage:", " runpane panes soft-reset --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Undo the last commit in a Pane, keeping its changes staged.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
949
+ readonly "panes fetch": readonly ["Usage:", " runpane panes fetch --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Fetch the remote for a Pane worktree.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
950
+ readonly "panes run-script": readonly ["Usage:", " runpane panes run-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Run the repository's run script in a Pane.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
951
+ readonly "panes stop-script": readonly ["Usage:", " runpane panes stop-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Stop the run script running in a Pane.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
952
+ readonly "panes move": readonly ["Usage:", " runpane panes move --pane <pane-id> --folder <folder-id> --yes [--json] [--pane-dir <path>]", "", "Move a Pane into a sidebar folder.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --folder <folder-id> Folder id from folders list.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
953
+ readonly "folders list": readonly ["Usage:", " runpane folders list --repo <repo-id> [--json] [--pane-dir <path>]", "", "List the sidebar folders of a repository.", "", "Options:", " --repo <repo-id> Numeric repository id from repos list.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
954
+ readonly "folders create": readonly ["Usage:", " runpane folders create --repo <repo-id> --name <name> --yes [--json] [--pane-dir <path>]", "", "Create a sidebar folder in a repository.", "", "Options:", " --repo <repo-id> Numeric repository id from repos list.", " --name <name> Folder name.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
955
+ readonly "links create": readonly ["Usage:", " runpane links create --pane <pane-id> [--panel <panel-id>] [--json]", " runpane links create --repo <repo-id> [--json]", " runpane links create --session <session-id> [--json]", "", "Build a pane:// link that opens a Pane, panel, repository, or Session in the Pane app.", "", "Options:", " --pane <pane-id> Pane to open.", " --panel <panel-id> Panel inside the Pane to select.", " --repo <repo-id> Repository id from repos list.", " --session <session-id> Session id or name from sessions list.", " --json Print machine-readable output."];
956
+ readonly "links open": readonly ["Usage:", " runpane links open --url <pane-url> --yes [--json] [--pane-dir <path>]", "", "Open a pane:// link in the running Pane app.", "", "Options:", " --url <pane-url> A pane://open link from links create.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
957
+ readonly "docs search": readonly ["Usage:", " runpane docs search --query <text> [--limit <count>] [--json]", "", "Search Pane's docs, runpane help, and the Pane Chat skills.", "", "Options:", " --query <text> Words to search for.", " --limit <count> Maximum results; defaults to 5.", " --json Print machine-readable output."];
958
+ readonly "docs read": readonly ["Usage:", " runpane docs read --doc <path> [--json]", "", "Read one Pane doc, help topic, or skill in full.", "", "Options:", " --doc <path> Path from docs search, such as docs/PANE_MCP.md.", " --json Print machine-readable output."];
959
+ readonly "agents start": readonly ["Usage:", " runpane agents start --repo <selector> --name <name> (--agent <codex|claude|cursor>|--tool-command <command>) --prompt <task> [--base-branch <branch>] --yes [--json] [--pane-dir <path>]", "", "Start an agent on a task: create a Pane in a repository, launch the agent with the prompt, and wait until it is ready.", "", "Options:", " --repo <selector> Repository: active, id, exact path, or saved name.", " --name <name> Name for the new Pane.", " --agent <codex|claude|cursor> Built-in agent to launch.", " --tool-command <command> Custom terminal command instead of a built-in agent.", " --prompt <task> The task to send once the agent is ready.", " --base-branch <branch> Branch to start the worktree from.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
960
+ readonly "agents status": readonly ["Usage:", " runpane agents status (--pane <pane-id>|--panel <panel-id>) [--limit <count>] [--json] [--pane-dir <path>]", "", "Check on an agent: whether it is working, ready, blocked, or idle, plus its current screen.", "", "Options:", " --pane <pane-id> Pane id; its agent panel is used.", " --panel <panel-id> Panel id.", " --limit <count> Screen lines to return; defaults to 40.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
961
+ readonly "agents send": readonly ["Usage:", " runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> --yes [--json] [--pane-dir <path>]", "", "Send a follow-up message to an agent and confirm it was submitted.", "", "Options:", " --pane <pane-id> Pane id; its agent panel is used.", " --panel <panel-id> Panel id.", " --text <message> The message to submit.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
598
962
  readonly sessions: readonly ["Usage:", " runpane sessions <list|create|get|update|set-agent|associate|detach|overview> [options]", "", "Use a named Session to keep context, activity, and evidence attached to one orchestration thread."];
599
963
  };
600
964
  readonly pip: {
601
- readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane doctor --report --body-file <path|->", " runpane daemon repair [--pane-dir <path>] [--yes] [--json]", " runpane agent-context [--json]", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", " runpane repos list [--json]", " runpane repos add --path <path> [--name <name>]", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes", " python -m runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] --yes", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane help [command]", "", "Quick start:", " pipx run runpane", " python -m pip install runpane && python -m runpane setup", "", "Advanced examples:", " pipx run runpane install client", " pipx run runpane install daemon --label \"My Server\"", " uvx runpane@latest", "", "Common commands:", " runpane help", " runpane setup", " runpane install", " runpane doctor", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json", " runpane agent-context --command \"<command>\" --json", "", "Run \"runpane help panes create\" for pane orchestration options."];
965
+ readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane doctor --report --body-file <path|->", " runpane daemon repair [--pane-dir <path>] [--yes] [--json]", " runpane agent-context [--json]", " runpane mcp [--toolsets <name,...>] [--read-only]", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", " runpane repos list [--json]", " runpane repos add --path <path> [--name <name>]", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes", " python -m runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] --yes", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane panes git-status --pane <pane-id> [--json] [--pane-dir <path>]", " runpane panes commit --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", " runpane panes push --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes pull --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes rebase-main --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes restore --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane links create --pane <pane-id> [--panel <panel-id>] [--json]", " runpane links open --url <pane-url> --yes [--json] [--pane-dir <path>]", " runpane docs search --query <text> [--limit <count>] [--json]", " runpane docs read --doc <path> [--json]", " runpane agents start --repo <selector> --name <name> (--agent <codex|claude|cursor>|--tool-command <command>) --prompt <task> [--base-branch <branch>] --yes [--json] [--pane-dir <path>]", " runpane agents status (--pane <pane-id>|--panel <panel-id>) [--limit <count>] [--json] [--pane-dir <path>]", " runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> --yes [--json] [--pane-dir <path>]", " runpane panes squash-rebase --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", " runpane panes stash --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes stash-pop --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes soft-reset --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes fetch --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes run-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes stop-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes move --pane <pane-id> --folder <folder-id> --yes [--json] [--pane-dir <path>]", " runpane folders list --repo <repo-id> [--json] [--pane-dir <path>]", " runpane folders create --repo <repo-id> --name <name> --yes [--json] [--pane-dir <path>]", " runpane help [command]", "", "Quick start:", " pipx run runpane", " python -m pip install runpane && python -m runpane setup", "", "Advanced examples:", " pipx run runpane install client", " pipx run runpane install daemon --label \"My Server\"", " uvx runpane@latest", "", "Common commands:", " runpane help", " runpane setup", " runpane install", " runpane doctor", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json", " runpane agent-context --command \"<command>\" --json", "", "Run \"runpane help panes create\" for pane orchestration options."];
602
966
  readonly install: readonly ["Usage:", " runpane install [client|daemon] [options]", "", "Examples:", " npx --yes runpane@latest install daemon --label \"My Server\"", " pnpm dlx runpane@latest install daemon --prefer-tunnel ssh --label \"VM\"", " pipx run runpane install daemon --label \"My Server\"", "", "Wrapper options:", " --version <latest|vX.Y.Z>", " --format <auto|appimage|deb|dmg|zip|exe>", " --download-dir <path>", " --pane-path <path>", " --dry-run", " --yes", " --verbose", "", "Daemon passthrough options:", " --label <name>", " --prefer-tunnel <tailscale|ssh|manual|auto>", " --channel <stable|nightly>", " --base-url <url>", " --pane-dir <path>", " --listen-port <port> / --port <port>", " --auto-listen-port", " --interactive-tailscale-setup", " --no-install-service", " --no-tailscale-serve", " --print-only", " --repo-ref <ref>"];
603
967
  readonly setup: readonly ["Usage:", " runpane setup", "", "Opens the guided setup for desktop install, remote host setup, update, and diagnostics.", "", "Quick start:", " pipx run runpane", " python -m pip install runpane && python -m runpane setup"];
604
968
  readonly update: readonly ["Usage:", " runpane update [--version <latest|vX.Y.Z>] [--dry-run] [--yes]"];
@@ -623,8 +987,9 @@ export declare const RUNPANE_CONTRACT: {
623
987
  readonly panels: readonly ["Terminal-backed panel commands.", "", "Usage:", " runpane panels <command> [options]", "", "Commands:", " runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [options]", " runpane panels list --pane <pane-id> [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", "", "Run \"runpane help panels create\" or another command-specific topic for options."];
624
988
  readonly "panels list": readonly ["Usage:", " runpane panels list --pane <pane-id> [--json]", "", "Lists tool panels in a Pane session.", "", "Options:", " --pane <pane-id>", " --pane-dir <path>", " --json"];
625
989
  readonly "panels output": readonly ["Usage:", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", "", "Reads recent terminal output records from a panel.", "", "Options:", " --panel <panel-id>", " --limit <count>", " --pane-dir <path>", " --json"];
626
- readonly "panels input": readonly ["Usage:", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", "", "Sends exact input bytes to a terminal panel. Include a newline in the input when you mean Enter.", "", "Options:", " --panel <panel-id>", " --text <text>", " --input-file <path|->", " --pane-dir <path>", " --json", " --yes"];
990
+ readonly "panels input": readonly ["Usage:", " runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--input-file <path|->) --yes [--json]", "", "Sends exact input bytes to a terminal panel. Include a newline in the input when you mean Enter.", "", "Options:", " --panel <panel-id>", " --text <text>", " --keys <name,...> Keys to press: enter, escape, tab, up, down, ctrl-c, ...", " --input-file <path|->", " --pane-dir <path>", " --json", " --yes"];
627
991
  readonly "agent-context": readonly ["Usage:", " runpane agent-context [--json]", " runpane agent-context --command <command> [--json]", "", "Prints Pane command context for coding agents without requiring a running Pane app.", "", "Options:", " --command <command>", " --json", "", "Examples:", " runpane agent-context", " runpane agent-context --json", " runpane agent-context --command \"panes create\"", " runpane agent-context --command \"panes create\" --json"];
992
+ readonly mcp: readonly ["Usage:", " runpane mcp", "", "The Pane MCP server ships in the npm package and inside the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest mcp"];
628
993
  readonly "agents doctor": readonly ["Usage:", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", "", "Diagnoses whether Codex or Claude is available in the same repository environment Pane will use.", "", "Options:", " --agent <codex|claude|cursor> Built-in agent command to diagnose", " --repo <selector> active, id, exact path, or saved repository name; defaults to active", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
629
994
  readonly "panels screen": readonly ["Usage:", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", "", "Reads a compact current-screen view from a terminal panel. Prefers alternate-screen/TUI output and falls back to recent scrollback.", "", "Options:", " --panel <panel-id> Terminal panel id", " --limit <count> Maximum lines to return; defaults to 80", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
630
995
  readonly "panels submit": readonly ["Usage:", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", "", "Sends text to a terminal panel and normalizes the final terminal Enter to CR. Use this for ordinary prompt answers and shell commands.", "", "Options:", " --panel <panel-id> Terminal panel id", " --text <text> Text to submit before Enter", " --input-file <path|-> Read text from a file or stdin before Enter", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for this mutating command"];
@@ -639,6 +1004,29 @@ export declare const RUNPANE_CONTRACT: {
639
1004
  readonly "sessions associate": readonly ["Usage:", "python -m runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
640
1005
  readonly "sessions detach": readonly ["Usage:", "python -m runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
641
1006
  readonly "sessions overview": readonly ["Usage:", "python -m runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
1007
+ readonly "panes git-status": readonly ["Usage:", " runpane panes git-status --pane <pane-id> [--json] [--pane-dir <path>]", "", "Read the git status of a Pane worktree: uncommitted, unpushed, and behind-main counts.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1008
+ readonly "panes commit": readonly ["Usage:", " runpane panes commit --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", "", "Stage all changes in a Pane worktree and commit them.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --message <message> Commit message; the first line is the title.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1009
+ readonly "panes push": readonly ["Usage:", " runpane panes push --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Push a Pane branch to its remote.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1010
+ readonly "panes pull": readonly ["Usage:", " runpane panes pull --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Pull the remote branch into a Pane worktree.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1011
+ readonly "panes rebase-main": readonly ["Usage:", " runpane panes rebase-main --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Rebase a Pane branch onto the latest main branch.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1012
+ readonly "panes restore": readonly ["Usage:", " runpane panes restore --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Restore an archived Pane, recreating its worktree.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1013
+ readonly "panes squash-rebase": readonly ["Usage:", " runpane panes squash-rebase --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", "", "Squash a Pane branch into one commit and rebase it onto main.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --message <message> Commit message; the first line is the title.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1014
+ readonly "panes stash": readonly ["Usage:", " runpane panes stash --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Stash uncommitted changes in a Pane worktree.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1015
+ readonly "panes stash-pop": readonly ["Usage:", " runpane panes stash-pop --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Apply and drop the latest stash in a Pane worktree.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1016
+ readonly "panes soft-reset": readonly ["Usage:", " runpane panes soft-reset --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Undo the last commit in a Pane, keeping its changes staged.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1017
+ readonly "panes fetch": readonly ["Usage:", " runpane panes fetch --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Fetch the remote for a Pane worktree.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1018
+ readonly "panes run-script": readonly ["Usage:", " runpane panes run-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Run the repository's run script in a Pane.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1019
+ readonly "panes stop-script": readonly ["Usage:", " runpane panes stop-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", "", "Stop the run script running in a Pane.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1020
+ readonly "panes move": readonly ["Usage:", " runpane panes move --pane <pane-id> --folder <folder-id> --yes [--json] [--pane-dir <path>]", "", "Move a Pane into a sidebar folder.", "", "Options:", " --pane <pane-id> Pane id from panes list or agents start.", " --folder <folder-id> Folder id from folders list.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1021
+ readonly "folders list": readonly ["Usage:", " runpane folders list --repo <repo-id> [--json] [--pane-dir <path>]", "", "List the sidebar folders of a repository.", "", "Options:", " --repo <repo-id> Numeric repository id from repos list.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1022
+ readonly "folders create": readonly ["Usage:", " runpane folders create --repo <repo-id> --name <name> --yes [--json] [--pane-dir <path>]", "", "Create a sidebar folder in a repository.", "", "Options:", " --repo <repo-id> Numeric repository id from repos list.", " --name <name> Folder name.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1023
+ readonly "links create": readonly ["Usage:", " runpane links create --pane <pane-id> [--panel <panel-id>] [--json]", " runpane links create --repo <repo-id> [--json]", " runpane links create --session <session-id> [--json]", "", "Build a pane:// link that opens a Pane, panel, repository, or Session in the Pane app.", "", "Options:", " --pane <pane-id> Pane to open.", " --panel <panel-id> Panel inside the Pane to select.", " --repo <repo-id> Repository id from repos list.", " --session <session-id> Session id or name from sessions list.", " --json Print machine-readable output."];
1024
+ readonly "links open": readonly ["Usage:", " runpane links open --url <pane-url> --yes [--json] [--pane-dir <path>]", "", "Open a pane:// link in the running Pane app.", "", "Options:", " --url <pane-url> A pane://open link from links create.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
1025
+ readonly "docs search": readonly ["Usage:", " runpane docs search --query <text> [--limit <count>] [--json]", "", "`runpane docs search` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest docs search"];
1026
+ readonly "docs read": readonly ["Usage:", " runpane docs read --doc <path> [--json]", "", "`runpane docs read` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest docs read"];
1027
+ readonly "agents start": readonly ["Usage:", " runpane agents start --repo <selector> --name <name> (--agent <codex|claude|cursor>|--tool-command <command>) --prompt <task> [--base-branch <branch>] --yes [--json] [--pane-dir <path>]", "", "`runpane agents start` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest agents start"];
1028
+ readonly "agents status": readonly ["Usage:", " runpane agents status (--pane <pane-id>|--panel <panel-id>) [--limit <count>] [--json] [--pane-dir <path>]", "", "`runpane agents status` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest agents status"];
1029
+ readonly "agents send": readonly ["Usage:", " runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> --yes [--json] [--pane-dir <path>]", "", "`runpane agents send` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest agents send"];
642
1030
  readonly sessions: readonly ["Usage:", " runpane sessions <list|create|get|update|set-agent|associate|detach|overview> [options]", "", "Use a named Session to keep context, activity, and evidence attached to one orchestration thread."];
643
1031
  };
644
1032
  };
@@ -648,8 +1036,8 @@ export declare const RUNPANE_CONTRACT: {
648
1036
  readonly npmCommands: readonly ["npx --yes runpane@latest", "npx --yes runpane@latest setup", "npx --yes runpane@latest install client", "npx --yes runpane@latest install daemon --label \"My Server\"", "pnpm dlx runpane@latest", "pnpm dlx runpane@latest install daemon --label \"My Server\"", "npm i -g runpane && runpane", "npm i -g runpane && runpane setup", "npm i -g runpane && runpane install daemon --label \"My Server\"", "pnpm add -g runpane && runpane", "pnpm add -g runpane && runpane setup", "pnpm add -g runpane && runpane install daemon --label \"My Server\"", "yarn dlx runpane@latest install daemon --label \"My Server\"", "bunx runpane@latest install daemon --label \"My Server\""];
649
1037
  readonly pythonCommands: readonly ["pipx run runpane", "pipx run runpane setup", "python -m pip install runpane", "runpane", "runpane setup", "python -m runpane setup", "runpane install daemon --label \"My Server\"", "pipx install runpane", "runpane", "runpane setup", "pipx run runpane install daemon --label \"My Server\"", "uvx runpane@latest", "uvx runpane@latest setup", "uvx runpane@latest install daemon --label \"My Server\"", "python -m runpane install daemon --label \"My Server\""];
650
1038
  readonly packageManagerNotes: readonly ["Use `pnpm dlx` for one-shot pnpm execution and `pnpm add -g` for persistent CLI installation.", "Do not document `pnpm install runpane` as the public CLI install path."];
651
- readonly commandUsages: readonly ["runpane", "runpane setup", "runpane install", "runpane install client", "runpane install daemon", "runpane update", "runpane version", "runpane doctor", "runpane doctor --json", "runpane daemon repair --pane-dir ~/.pane_remote --yes --json", "runpane agent-context", "runpane agent-context --command \"panes create\" --json", "runpane repos list --json", "runpane repos add --path /path/to/repo --name Pane --yes --json", "runpane panes list --repo active --json", "runpane panes cost --pane <pane-id> --json", "runpane panes create --repo active --name issue-252 --agent <agent> --prompt \"Kick off the discussion skill for issue 252\" --source agent --no-focus --wait-ready --yes --json", "runpane panes create --from-json panes.json --yes --json", "runpane panes archive --pane <pane-id> --source agent --yes --json", "runpane panes rename --pane <pane-id> --name issue-393 --yes --json", "runpane panels list --pane <pane-id> --json", "runpane panels output --panel <panel-id> --limit 200 --json", "printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes --json", "runpane watch --self-test", "runpane watch --follow", "runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "runpane sessions list [--json] [--pane-dir <path>]", "runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]", "runpane sessions get --session <id|name> [--json] [--pane-dir <path>]", "runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]", "runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]", "runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", "runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", "runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", "runpane help", "runpane <command> --help"];
652
- readonly commandDescriptions: readonly ["`runpane` with no arguments and `runpane setup` open an interactive wizard when stdin and stdout are TTYs. In non-interactive shells or CI, both forms must print help, common commands, and agent discovery hints, then exit successfully instead of waiting for input.", "`runpane install` is an alias for `runpane install client`.", "`runpane install client` downloads the selected Pane desktop artifact and installs, opens, or launches it for the current platform.", "`runpane install daemon` downloads or installs Pane, resolves a stable Pane executable path, and spawns `<pane executable> --remote-setup <forwarded remote setup args>`.", "The wrapper must stream Pane stdout/stderr without reformatting because `pane --remote-setup` prints the one-time `pane-remote://...` connection code.", "`runpane update` uses the same release resolution and installer path as `install client`.", "`runpane version` prints only wrapper package metadata and does not contact, launch, or focus the Pane app or daemon.", "`runpane doctor` checks platform support, release metadata reachability, download URL selection, installed Pane detection, daemon reachability, and remote-daemon hints. Add `--json` for a machine-readable report that agents should run before mutating Pane state. Installed app version detection must be best-effort and must not launch, focus, or configure Pane; macOS wrappers read app bundle metadata instead of executing `Pane --version`.", "`runpane daemon repair` rewrites and restarts only the managed remote-daemon launcher/service. It never creates pairing credentials, changes tunnels, or downloads Pane; doctor only recommends it and never runs it automatically.", "`runpane agent-context` prints a brief, token-efficient command schema for coding agents without connecting to the Pane daemon.", "`runpane agent-context --command \"panes create\"` prints the detailed definition for one command. Add `--json` for machine-readable output.", "`runpane repos list` connects to the running local Pane daemon and prints saved repository records.", "`runpane repos add` registers an existing git repository with the running local Pane daemon. It does not create directories or initialize git repositories by default.", "`runpane panes list` lists Pane sessions, optionally scoped to one saved repository.", "`runpane panes cost` reports estimated token costs per Pane for the last 30 days, including per-model breakdowns and cache efficiency; unscoped output includes an Unattributed bucket that reconciles against workspace totals.", "`runpane panes create` connects to the running local Pane daemon, resolves the requested saved base repository, creates user-visible Pane sessions backed by Pane-managed worktrees/branches, opens terminal-backed tool tabs, and optionally sends initial input to the started tool. Built-in agent panes and `--source agent` default to background/no-focus unless `--focus` is passed. New Panes are pinned into the UI's favorite/pin set by default; pass `--no-pinned` to opt out. Panes created interactively in the Pane UI are unaffected.", "For `panes create --wait-ready`, `initialInput.verifiedSubmitted: true` is reported only after argument attachment or composer-clear plus activity evidence. Routing input does not by itself verify submission.", "`runpane panes archive` refreshes the configured upstream, reports exact unpushed commit evidence, and refuses unsafe archive operations unless `--force` is used. Add `--dry-run` to inspect the same evidence without archiving. Successful archives wait for worktree removal and report `worktreeCleanup`.", "`runpane panes rename` trims and updates a Pane's display name without changing its worktree, branch, panels, or focus, and returns the updated pane summary.", "`runpane panes focus` raises the Pane window and selects a Pane (and optionally one of its panels) exactly like clicking it in the UI. Because it steals the user's window focus, run it only on an explicit user request to open, focus, show, or switch to a Pane; never focus a Pane proactively, the same doctrine that keeps `panes create` background/no-focus for `--source agent`.", "`runpane panels list` lists tool panels inside one Pane session.", "`runpane panels output` reads bounded recent terminal output from one panel and strips common terminal control noise for agent use.", "`runpane panels input` sends exact input bytes to one terminal panel. Prefer `--input-file` for newlines, Ctrl-C, quotes, or shell-sensitive text.", "`runpane panes create --prompt` is an alias for `--initial-input`; request JSON and daemon payloads should use the canonical `initialInput` field.", "If composer submission cannot be verified without risking a duplicate, the create item is unsuccessful with `initialInput.staged`, `initialInput.attempts`, `initialInput.blocked.kind: submission_unverified`, and an actionable `nextCommand`. The CLI-facing `--prompt` alias maps to this canonical `initialInput` result.", "When running from WSL while Pane is installed on Windows, the Linux wrapper may look for a missing `/tmp/pane-daemon.../daemon.sock` or resolve to a Windows shim such as Volta. In that case invoke the Windows wrapper through PowerShell from a Windows cwd, for example `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane repos list --json'`.", "`runpane watch` waits for workspace transitions from the daemon journal without polling. `--follow` keeps waiting and prints one line per event: READY, BLOCKED, IDLE, STUCK, NEW, GONE, EXIT, plus HEARTBEAT every 60 seconds as proof of life. Defaults are responsive: no settle, no batching, all kinds, IDLE every `--idle-after`. Expensive consumers opt into `--kinds` (drop `agent.busy`; BUSY carries no action), `--settle <ms>` (READY only after a quiet window; a BUSY inside it cancels the line), `--blocked-settle <ms>`, `--min-interval <ms>` (batch non-urgent lines; BLOCKED bypasses it), and `--idle-backoff` (10m, 30m, 1h, 3h, then daily). The recommended orchestrator invocation is `runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff`, which budgets about 6 wake-ups per active pane per hour worst case, usually 1-3. Pane Chat arms it automatically through its skill; only your own scripts need the flags. STUCK means real unsubmitted composer text, never an agent prompt suggestion. Judge a dead watch by a non-zero exit or a WATCH ERROR line, not by silence.", "`sessions list` list durable named orchestration Sessions.", "`sessions create` create a durable named orchestration Session and its hidden terminal owner.", "`sessions get` read one durable named orchestration Session.", "`sessions update` update a Session overview from structured JSON.", "`sessions set-agent` switch the durable terminal agent for a named Session.", "`sessions associate` associate a user-visible Pane with a named Session.", "`sessions detach` detach a Pane from a named Session.", "`sessions overview` read a live status, activity, git, and pull request overview for a named Session."];
1039
+ readonly commandUsages: readonly ["runpane", "runpane setup", "runpane install", "runpane install client", "runpane install daemon", "runpane update", "runpane version", "runpane doctor", "runpane doctor --json", "runpane daemon repair --pane-dir ~/.pane_remote --yes --json", "runpane agent-context", "runpane agent-context --command \"panes create\" --json", "runpane mcp", "runpane repos list --json", "runpane repos add --path /path/to/repo --name Pane --yes --json", "runpane panes list --repo active --json", "runpane panes cost --pane <pane-id> --json", "runpane panes create --repo active --name issue-252 --agent <agent> --prompt \"Kick off the discussion skill for issue 252\" --source agent --no-focus --wait-ready --yes --json", "runpane panes create --from-json panes.json --yes --json", "runpane panes archive --pane <pane-id> --source agent --yes --json", "runpane panes rename --pane <pane-id> --name issue-393 --yes --json", "runpane panels list --pane <pane-id> --json", "runpane panels output --panel <panel-id> --limit 200 --json", "printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes --json", "runpane watch --self-test", "runpane watch --follow", "runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "runpane sessions list [--json] [--pane-dir <path>]", "runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]", "runpane sessions get --session <id|name> [--json] [--pane-dir <path>]", "runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]", "runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]", "runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", "runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", "runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", "runpane agents start --repo active --name fix-login --agent claude --prompt \"Fix the login redirect\" --yes --json", "runpane agents status --pane <pane-id> --json", "runpane agents send --pane <pane-id> --text \"Also add a test\" --yes --json", "runpane docs search --query \"archive a pane\" --json", "runpane links create --pane <pane-id> --json", "runpane panes git-status --pane <pane-id> --json", "runpane help", "runpane <command> --help"];
1040
+ readonly commandDescriptions: readonly ["`runpane` with no arguments and `runpane setup` open an interactive wizard when stdin and stdout are TTYs. In non-interactive shells or CI, both forms must print help, common commands, and agent discovery hints, then exit successfully instead of waiting for input.", "`runpane install` is an alias for `runpane install client`.", "`runpane install client` downloads the selected Pane desktop artifact and installs, opens, or launches it for the current platform.", "`runpane install daemon` downloads or installs Pane, resolves a stable Pane executable path, and spawns `<pane executable> --remote-setup <forwarded remote setup args>`.", "The wrapper must stream Pane stdout/stderr without reformatting because `pane --remote-setup` prints the one-time `pane-remote://...` connection code.", "`runpane update` uses the same release resolution and installer path as `install client`.", "`runpane version` prints only wrapper package metadata and does not contact, launch, or focus the Pane app or daemon.", "`runpane doctor` checks platform support, release metadata reachability, download URL selection, installed Pane detection, daemon reachability, and remote-daemon hints. Add `--json` for a machine-readable report that agents should run before mutating Pane state. Installed app version detection must be best-effort and must not launch, focus, or configure Pane; macOS wrappers read app bundle metadata instead of executing `Pane --version`.", "`runpane daemon repair` rewrites and restarts only the managed remote-daemon launcher/service. It never creates pairing credentials, changes tunnels, or downloads Pane; doctor only recommends it and never runs it automatically.", "`runpane agent-context` prints a brief, token-efficient command schema for coding agents without connecting to the Pane daemon.", "`runpane agent-context --command \"panes create\"` prints the detailed definition for one command. Add `--json` for machine-readable output.", "`runpane mcp` runs a stdio MCP server whose tools are generated from this contract: every command with result `jsonSchemas` becomes a tool that runs `runpane <command> --json` and returns its output. Only the npm package and the Pane app include it; the Python wrapper prints how to run it with Node and exits non-zero.", "`runpane repos list` connects to the running local Pane daemon and prints saved repository records.", "`runpane repos add` registers an existing git repository with the running local Pane daemon. It does not create directories or initialize git repositories by default.", "`runpane panes list` lists Pane sessions, optionally scoped to one saved repository.", "`runpane panes cost` reports estimated token costs per Pane for the last 30 days, including per-model breakdowns and cache efficiency; unscoped output includes an Unattributed bucket that reconciles against workspace totals.", "`runpane panes create` connects to the running local Pane daemon, resolves the requested saved base repository, creates user-visible Pane sessions backed by Pane-managed worktrees/branches, opens terminal-backed tool tabs, and optionally sends initial input to the started tool. Built-in agent panes and `--source agent` default to background/no-focus unless `--focus` is passed. New Panes are pinned into the UI's favorite/pin set by default; pass `--no-pinned` to opt out. Panes created interactively in the Pane UI are unaffected.", "For `panes create --wait-ready`, `initialInput.verifiedSubmitted: true` is reported only after argument attachment or composer-clear plus activity evidence. Routing input does not by itself verify submission.", "`runpane panes archive` refreshes the configured upstream, reports exact unpushed commit evidence, and refuses unsafe archive operations unless `--force` is used. Add `--dry-run` to inspect the same evidence without archiving. Successful archives wait for worktree removal and report `worktreeCleanup`.", "`runpane panes rename` trims and updates a Pane's display name without changing its worktree, branch, panels, or focus, and returns the updated pane summary.", "`runpane panes focus` raises the Pane window and selects a Pane (and optionally one of its panels) exactly like clicking it in the UI. Because it steals the user's window focus, run it only on an explicit user request to open, focus, show, or switch to a Pane; never focus a Pane proactively, the same doctrine that keeps `panes create` background/no-focus for `--source agent`.", "`runpane panels list` lists tool panels inside one Pane session.", "`runpane panels output` reads bounded recent terminal output from one panel and strips common terminal control noise for agent use.", "`runpane panels input` sends exact input bytes to one terminal panel. Prefer `--input-file` for newlines, Ctrl-C, quotes, or shell-sensitive text.", "`runpane panes create --prompt` is an alias for `--initial-input`; request JSON and daemon payloads should use the canonical `initialInput` field.", "If composer submission cannot be verified without risking a duplicate, the create item is unsuccessful with `initialInput.staged`, `initialInput.attempts`, `initialInput.blocked.kind: submission_unverified`, and an actionable `nextCommand`. The CLI-facing `--prompt` alias maps to this canonical `initialInput` result.", "When running from WSL while Pane is installed on Windows, the Linux wrapper may look for a missing `/tmp/pane-daemon.../daemon.sock` or resolve to a Windows shim such as Volta. In that case invoke the Windows wrapper through PowerShell from a Windows cwd, for example `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane repos list --json'`.", "`runpane watch` waits for workspace transitions from the daemon journal without polling. `--follow` keeps waiting and prints one line per event: READY, BLOCKED, IDLE, STUCK, NEW, GONE, EXIT, plus HEARTBEAT every 60 seconds as proof of life. Defaults are responsive: no settle, no batching, all kinds, IDLE every `--idle-after`. Expensive consumers opt into `--kinds` (drop `agent.busy`; BUSY carries no action), `--settle <ms>` (READY only after a quiet window; a BUSY inside it cancels the line), `--blocked-settle <ms>`, `--min-interval <ms>` (batch non-urgent lines; BLOCKED bypasses it), and `--idle-backoff` (10m, 30m, 1h, 3h, then daily). The recommended orchestrator invocation is `runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff`, which budgets about 6 wake-ups per active pane per hour worst case, usually 1-3. Pane Chat arms it automatically through its skill; only your own scripts need the flags. STUCK means real unsubmitted composer text, never an agent prompt suggestion. Judge a dead watch by a non-zero exit or a WATCH ERROR line, not by silence.", "`sessions list` list durable named orchestration Sessions.", "`sessions create` create a durable named orchestration Session and its hidden terminal owner.", "`sessions get` read one durable named orchestration Session.", "`sessions update` update a Session overview from structured JSON.", "`sessions set-agent` switch the durable terminal agent for a named Session.", "`sessions associate` associate a user-visible Pane with a named Session.", "`sessions detach` detach a Pane from a named Session.", "`sessions overview` read a live status, activity, git, and pull request overview for a named Session.", "`runpane agents start|status|send` finish the three common agent jobs in one call each: start an agent on a task in a repository, check on it, and send it a follow-up.", "Commands with a contract `daemonAction` (the `panes` git, script, restore, and move commands, `folders list|create`, and `links open`) call the same Pane daemon channel as the matching button in the app and print `{ ok, data, error }`. Destructive ones add a pane:// `link` to review the Pane.", "`runpane links create` builds `pane://open?...` links; opening one in Pane selects what it names and never changes Pane state.", "`runpane docs search|read` search and read Pane docs, help, and installed Pane Chat skills offline. They ship in the npm package and the Pane app only."];
653
1041
  readonly wrapperFlagNote: "The top-level `runpane --version` form prints the wrapper version. The install subcommand form `runpane install --version vX.Y.Z` selects a Pane release.";
654
1042
  readonly localControlFlagNote: "`runpane doctor --json`, `runpane repos list`, `runpane panes ...`, and `runpane panels ...` commands use or describe the local framed daemon socket/pipe for a running Pane app. `--pane-dir` points the wrapper at a non-default Pane data directory, such as `PANE_DIR=~/.pane_test` in development. `runpane agent-context` is local/offline and can be used before Pane is running. In a Pane repository checkout, if `runpane` is not on PATH, use the built local wrapper with Node 22, for example `PATH=/opt/homebrew/opt/node@22/bin:$PATH node packages/runpane/dist/cli.js doctor --json`. From WSL, if the user runs Windows Pane, call the Windows wrapper through `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane ...'` so the command can reach the Windows named-pipe daemon and avoid UNC cwd issues.";
655
1043
  readonly daemonFlagNote: "Unknown daemon flags should be forwarded rather than dropped so newer Pane versions can extend `--remote-setup` without requiring an immediate wrapper release. Unknown flags for non-daemon commands should fail clearly.";
@@ -657,7 +1045,7 @@ export declare const RUNPANE_CONTRACT: {
657
1045
  readonly publishingCredentials: readonly ["Local implementation, build, and dry-run validation do not need npm or PyPI API tokens.", "Release publishing should prefer npm Trusted Publishing and PyPI Trusted Publishing from GitHub Actions.", "Fallback `NPM_TOKEN` or `PYPI_API_TOKEN` credentials may be used for first package reservation or manual publication only. They must be supplied through local environment variables or GitHub Actions secrets, never committed, and revoked or rotated after use."];
658
1046
  };
659
1047
  readonly testFixtures: {
660
- readonly parserSamples: readonly [readonly ["setup"], readonly ["install"], readonly ["install", "client", "--version", "v2.2.8", "--format", "dmg", "--download-dir", "/tmp/pane-downloads", "--dry-run", "--yes"], readonly ["install", "daemon", "--label", "VM", "--prefer-tunnel", "ssh", "--channel", "nightly", "--base-url", "https://example.test", "--pane-dir", "/tmp/pane", "--listen-port", "4555", "--auto-listen-port", "--print-only", "--repo-ref", "main", "--unknown-future-flag", "future-value", "--dry-run", "--verbose"], readonly ["update", "--version", "latest", "--format", "appimage", "--pane-path", "/usr/bin/pane", "--dry-run"], readonly ["doctor", "--pane-path", "/usr/bin/pane", "--format", "zip", "--verbose"], readonly ["doctor", "--json", "--pane-dir", "/tmp/pane"], readonly ["doctor", "--report", "--title", "watch failed", "--body-file", "/tmp/watch-evidence.txt", "--json"], readonly ["watch", "--as", "monitor", "--from", "earliest", "--follow", "--format", "lines", "--heartbeat", "60", "--idle-after", "600000", "--settle", "180000", "--blocked-settle", "30000", "--min-interval", "600000", "--idle-backoff", "--all-managed", "--agents-only", "--exclude-pane", "pane-old", "--kinds", "agent.ready,agent.idle", "--include-held-input", "--self-test"], readonly ["daemon", "repair", "--pane-dir", "/tmp/pane-remote", "--yes", "--json"], readonly ["agent-context"], readonly ["agent-context", "--command", "panes create", "--json"], readonly ["repos", "list", "--json", "--pane-dir", "/tmp/pane"], readonly ["repos", "add", "--path", "/tmp/repo", "--name", "Repo", "--dry-run", "--yes", "--json", "--pane-dir", "/tmp/pane"], readonly ["panes", "list", "--repo", "active", "--json"], readonly ["panes", "cost", "--pane", "session-1", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "issue-252", "--agent", "codex", "--prompt", "Kick off discussion", "--source", "agent", "--pinned", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "issue-252", "--agent", "codex", "--prompt", "Kick off discussion", "--source", "agent", "--no-pinned", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--from-json", "-", "--yes", "--json"], readonly ["panes", "archive", "--pane", "session-1", "--force", "--source", "agent", "--yes", "--json"], readonly ["panes", "pin", "--pane", "session-1", "--yes", "--json"], readonly ["panes", "unpin", "--pane", "session-1", "--yes", "--json"], readonly ["panes", "rename", "--pane", "session-1", "--name", "issue-393", "--yes", "--json"], readonly ["panes", "focus", "--pane", "session-1", "--panel", "panel-1", "--source", "user", "--yes", "--json"], readonly ["panels", "list", "--pane", "session-1", "--json"], readonly ["panels", "output", "--panel", "panel-1", "--limit", "200", "--json"], readonly ["panels", "input", "--panel", "panel-1", "--text", "Continue\\n", "--yes", "--json"], readonly ["--version"], readonly ["agents", "doctor", "--agent", "codex", "--repo", "active", "--json"], readonly ["panes", "create", "--from-json", "-", "--source", "agent", "--focus", "--wait-ready", "--ready-timeout-ms", "45000", "--concurrency", "2", "--yes", "--json"], readonly ["panels", "screen", "--panel", "panel-1", "--limit", "80", "--json"], readonly ["panels", "submit", "--panel", "panel-1", "--text", "2", "--yes", "--json"], readonly ["panels", "wait", "--panel", "panel-1", "--for", "text", "--contains", "ready", "--timeout-ms", "30000", "--interval-ms", "500", "--json"], readonly ["panels", "create", "--pane", "pane-1", "--agent", "codex", "--source", "agent", "--no-focus", "--wait-ready", "--ready-timeout-ms", "15000", "--yes", "--json"], readonly ["panels", "create", "--pane", "pane-1", "--agent", "codex", "--focus", "--yes", "--json"], readonly ["panels", "submit-composer", "--panel", "panel-1", "--strategy", "auto", "--yes", "--json"], readonly ["sessions", "list", "--json"], readonly ["sessions", "get", "--session", "demo", "--json"], readonly ["sessions", "update", "--session", "demo", "--from-json", "-"]];
1048
+ readonly parserSamples: readonly [readonly ["setup"], readonly ["install"], readonly ["install", "client", "--version", "v2.2.8", "--format", "dmg", "--download-dir", "/tmp/pane-downloads", "--dry-run", "--yes"], readonly ["install", "daemon", "--label", "VM", "--prefer-tunnel", "ssh", "--channel", "nightly", "--base-url", "https://example.test", "--pane-dir", "/tmp/pane", "--listen-port", "4555", "--auto-listen-port", "--print-only", "--repo-ref", "main", "--unknown-future-flag", "future-value", "--dry-run", "--verbose"], readonly ["update", "--version", "latest", "--format", "appimage", "--pane-path", "/usr/bin/pane", "--dry-run"], readonly ["doctor", "--pane-path", "/usr/bin/pane", "--format", "zip", "--verbose"], readonly ["doctor", "--json", "--pane-dir", "/tmp/pane"], readonly ["doctor", "--report", "--title", "watch failed", "--body-file", "/tmp/watch-evidence.txt", "--json"], readonly ["watch", "--as", "monitor", "--from", "earliest", "--follow", "--format", "lines", "--heartbeat", "60", "--idle-after", "600000", "--settle", "180000", "--blocked-settle", "30000", "--min-interval", "600000", "--idle-backoff", "--all-managed", "--agents-only", "--exclude-pane", "pane-old", "--kinds", "agent.ready,agent.idle", "--include-held-input", "--self-test"], readonly ["daemon", "repair", "--pane-dir", "/tmp/pane-remote", "--yes", "--json"], readonly ["agent-context"], readonly ["agent-context", "--command", "panes create", "--json"], readonly ["repos", "list", "--json", "--pane-dir", "/tmp/pane"], readonly ["repos", "add", "--path", "/tmp/repo", "--name", "Repo", "--dry-run", "--yes", "--json", "--pane-dir", "/tmp/pane"], readonly ["panes", "list", "--repo", "active", "--json"], readonly ["panes", "cost", "--pane", "session-1", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "issue-252", "--agent", "codex", "--prompt", "Kick off discussion", "--source", "agent", "--pinned", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "issue-252", "--agent", "codex", "--prompt", "Kick off discussion", "--source", "agent", "--no-pinned", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--from-json", "-", "--yes", "--json"], readonly ["panes", "archive", "--pane", "session-1", "--force", "--source", "agent", "--yes", "--json"], readonly ["panes", "pin", "--pane", "session-1", "--yes", "--json"], readonly ["panes", "unpin", "--pane", "session-1", "--yes", "--json"], readonly ["panes", "rename", "--pane", "session-1", "--name", "issue-393", "--yes", "--json"], readonly ["panes", "focus", "--pane", "session-1", "--panel", "panel-1", "--source", "user", "--yes", "--json"], readonly ["panels", "list", "--pane", "session-1", "--json"], readonly ["panels", "output", "--panel", "panel-1", "--limit", "200", "--json"], readonly ["panels", "input", "--panel", "panel-1", "--text", "Continue\\n", "--yes", "--json"], readonly ["--version"], readonly ["agents", "doctor", "--agent", "codex", "--repo", "active", "--json"], readonly ["panes", "create", "--from-json", "-", "--source", "agent", "--focus", "--wait-ready", "--ready-timeout-ms", "45000", "--concurrency", "2", "--yes", "--json"], readonly ["panels", "screen", "--panel", "panel-1", "--limit", "80", "--json"], readonly ["panels", "submit", "--panel", "panel-1", "--text", "2", "--yes", "--json"], readonly ["panels", "wait", "--panel", "panel-1", "--for", "text", "--contains", "ready", "--timeout-ms", "30000", "--interval-ms", "500", "--json"], readonly ["panels", "create", "--pane", "pane-1", "--agent", "codex", "--source", "agent", "--no-focus", "--wait-ready", "--ready-timeout-ms", "15000", "--yes", "--json"], readonly ["panels", "create", "--pane", "pane-1", "--agent", "codex", "--focus", "--yes", "--json"], readonly ["panels", "submit-composer", "--panel", "panel-1", "--strategy", "auto", "--yes", "--json"], readonly ["sessions", "list", "--json"], readonly ["sessions", "get", "--session", "demo", "--json"], readonly ["sessions", "update", "--session", "demo", "--from-json", "-"], readonly ["panels", "submit", "--panel=panel-1", "--text=- [ ] item", "--yes", "--json"], readonly ["panes", "commit", "--pane", "pane-1", "--message", "fix: title\n\nbody", "--yes", "--json"], readonly ["links", "create", "--pane", "pane-1", "--panel", "panel-1", "--json"], readonly ["links", "open", "--url=pane://open?pane=pane-1", "--yes"], readonly ["mcp", "--toolsets", "core,git", "--read-only"], readonly ["docs", "search", "--query", "archive a pane", "--limit", "3"], readonly ["docs", "read", "--doc", "docs/PANE_MCP.md"], readonly ["agents", "start", "--repo", "active", "--name", "fix-login", "--agent", "claude", "--prompt", "Fix the login redirect", "--yes", "--json"], readonly ["agents", "send", "--pane", "pane-1", "--text=- [ ] item", "--yes"], readonly ["panels", "input", "--panel", "panel-1", "--keys", "down,enter", "--yes", "--json"], readonly ["panes", "squash-rebase", "--pane", "pane-1", "--message", "feat: land it", "--yes", "--json"], readonly ["folders", "create", "--repo", "3", "--name", "Reviews", "--yes"], readonly ["panes", "move", "--pane", "pane-1", "--folder", "folder-9", "--yes", "--json"]];
661
1049
  readonly topLevelHelpIncludes: readonly ["runpane setup", "runpane install", "runpane update", "runpane version", "runpane doctor", "runpane agent-context", "runpane repos list", "runpane repos add", "runpane panes list", "runpane panes create", "runpane panes archive", "runpane panels create", "runpane panels list", "runpane panels output", "runpane panels input", "runpane agents doctor", "runpane panels screen", "runpane panels submit", "runpane panels submit-composer", "runpane panels wait", "runpane doctor --json", "runpane agent-context --json", "Agent discovery:", "Common commands:"];
662
1050
  readonly npmHelpIncludes: readonly ["pnpm dlx runpane@latest", "npx --yes runpane@latest"];
663
1051
  readonly pipHelpIncludes: readonly ["pipx run runpane", "python -m pip install runpane && python -m runpane setup"];
@@ -3106,6 +3494,206 @@ export declare const RUNPANE_CONTRACT: {
3106
3494
  };
3107
3495
  readonly additionalProperties: false;
3108
3496
  };
3497
+ readonly daemonActionResult: {
3498
+ readonly type: "object";
3499
+ readonly required: readonly ["ok"];
3500
+ readonly properties: {
3501
+ readonly ok: {
3502
+ readonly type: "boolean";
3503
+ };
3504
+ readonly data: {};
3505
+ readonly error: {
3506
+ readonly type: "object";
3507
+ readonly required: readonly ["message"];
3508
+ readonly properties: {
3509
+ readonly message: {
3510
+ readonly type: "string";
3511
+ };
3512
+ };
3513
+ readonly additionalProperties: false;
3514
+ };
3515
+ readonly link: {
3516
+ readonly type: "string";
3517
+ };
3518
+ };
3519
+ readonly additionalProperties: false;
3520
+ };
3521
+ readonly linkCreateResult: {
3522
+ readonly type: "object";
3523
+ readonly required: readonly ["ok", "url", "target"];
3524
+ readonly properties: {
3525
+ readonly ok: {
3526
+ readonly const: true;
3527
+ };
3528
+ readonly url: {
3529
+ readonly type: "string";
3530
+ };
3531
+ readonly target: {
3532
+ readonly type: "object";
3533
+ readonly required: readonly ["kind", "id"];
3534
+ readonly properties: {
3535
+ readonly kind: {
3536
+ readonly enum: readonly ["pane", "repo", "session"];
3537
+ };
3538
+ readonly id: {
3539
+ readonly type: "string";
3540
+ };
3541
+ readonly panelId: {
3542
+ readonly type: "string";
3543
+ };
3544
+ };
3545
+ readonly additionalProperties: false;
3546
+ };
3547
+ };
3548
+ readonly additionalProperties: false;
3549
+ };
3550
+ readonly docsSearchResult: {
3551
+ readonly type: "object";
3552
+ readonly required: readonly ["ok", "query", "results"];
3553
+ readonly properties: {
3554
+ readonly ok: {
3555
+ readonly const: true;
3556
+ };
3557
+ readonly query: {
3558
+ readonly type: "string";
3559
+ };
3560
+ readonly results: {
3561
+ readonly type: "array";
3562
+ readonly items: {
3563
+ readonly type: "object";
3564
+ readonly required: readonly ["path", "title", "kind", "excerpt"];
3565
+ readonly properties: {
3566
+ readonly path: {
3567
+ readonly type: "string";
3568
+ };
3569
+ readonly title: {
3570
+ readonly type: "string";
3571
+ };
3572
+ readonly kind: {
3573
+ readonly enum: readonly ["doc", "skill", "help", "command"];
3574
+ };
3575
+ readonly excerpt: {
3576
+ readonly type: "string";
3577
+ };
3578
+ };
3579
+ readonly additionalProperties: false;
3580
+ };
3581
+ };
3582
+ };
3583
+ readonly additionalProperties: false;
3584
+ };
3585
+ readonly docsReadResult: {
3586
+ readonly type: "object";
3587
+ readonly required: readonly ["ok", "path", "title", "kind", "text"];
3588
+ readonly properties: {
3589
+ readonly ok: {
3590
+ readonly const: true;
3591
+ };
3592
+ readonly path: {
3593
+ readonly type: "string";
3594
+ };
3595
+ readonly title: {
3596
+ readonly type: "string";
3597
+ };
3598
+ readonly kind: {
3599
+ readonly enum: readonly ["doc", "skill", "help", "command"];
3600
+ };
3601
+ readonly text: {
3602
+ readonly type: "string";
3603
+ };
3604
+ };
3605
+ readonly additionalProperties: false;
3606
+ };
3607
+ readonly agentTaskResult: {
3608
+ readonly type: "object";
3609
+ readonly required: readonly ["ok", "paneId", "panelId", "link", "ready"];
3610
+ readonly properties: {
3611
+ readonly ok: {
3612
+ readonly type: "boolean";
3613
+ };
3614
+ readonly paneId: {
3615
+ readonly type: "string";
3616
+ };
3617
+ readonly panelId: {
3618
+ readonly type: "string";
3619
+ };
3620
+ readonly name: {
3621
+ readonly type: "string";
3622
+ };
3623
+ readonly worktreePath: {
3624
+ readonly type: "string";
3625
+ };
3626
+ readonly link: {
3627
+ readonly type: "string";
3628
+ };
3629
+ readonly ready: {
3630
+ readonly type: "boolean";
3631
+ };
3632
+ readonly promptDelivered: {
3633
+ readonly type: "boolean";
3634
+ };
3635
+ readonly next: {
3636
+ readonly type: "string";
3637
+ };
3638
+ };
3639
+ readonly additionalProperties: false;
3640
+ };
3641
+ readonly agentStatusResult: {
3642
+ readonly type: "object";
3643
+ readonly required: readonly ["ok", "paneId", "panelId", "status", "screen"];
3644
+ readonly properties: {
3645
+ readonly ok: {
3646
+ readonly const: true;
3647
+ };
3648
+ readonly paneId: {
3649
+ readonly type: "string";
3650
+ };
3651
+ readonly panelId: {
3652
+ readonly type: "string";
3653
+ };
3654
+ readonly paneName: {
3655
+ readonly type: "string";
3656
+ };
3657
+ readonly status: {
3658
+ readonly enum: readonly ["working", "ready", "blocked", "idle", "exited", "unknown"];
3659
+ };
3660
+ readonly screen: {
3661
+ readonly type: "string";
3662
+ };
3663
+ readonly hasUndeliveredText: {
3664
+ readonly type: "boolean";
3665
+ };
3666
+ readonly link: {
3667
+ readonly type: "string";
3668
+ };
3669
+ };
3670
+ readonly additionalProperties: false;
3671
+ };
3672
+ readonly agentSendResult: {
3673
+ readonly type: "object";
3674
+ readonly required: readonly ["ok", "paneId", "panelId", "delivered"];
3675
+ readonly properties: {
3676
+ readonly ok: {
3677
+ readonly type: "boolean";
3678
+ };
3679
+ readonly paneId: {
3680
+ readonly type: "string";
3681
+ };
3682
+ readonly panelId: {
3683
+ readonly type: "string";
3684
+ };
3685
+ readonly delivered: {
3686
+ readonly type: "boolean";
3687
+ };
3688
+ readonly blocked: {
3689
+ readonly type: "string";
3690
+ };
3691
+ readonly next: {
3692
+ readonly type: "string";
3693
+ };
3694
+ };
3695
+ readonly additionalProperties: false;
3696
+ };
3109
3697
  };
3110
3698
  readonly agentContext: {
3111
3699
  readonly brief: {
@@ -3398,6 +3986,25 @@ export declare const RUNPANE_CONTRACT: {
3398
3986
  readonly jsonSchemas: readonly ["agentContextBriefResult", "agentContextCommandResult"];
3399
3987
  readonly notes: readonly ["Default output is brief so AGENTS.md can point here without bloating context.", "`--command` accepts canonical spaced names and common copied forms, including `panes.create` and `runpane panes create`."];
3400
3988
  };
3989
+ readonly mcp: {
3990
+ readonly name: "mcp";
3991
+ readonly summary: "Run the Pane MCP server over stdio so coding agents can call runpane commands as tools.";
3992
+ readonly details: "Use this to register Pane with an MCP client. Pane registers it with Claude Code and Codex automatically; each tool mirrors one runpane command and returns its --json result.";
3993
+ readonly requiresPaneDaemon: false;
3994
+ readonly mutates: false;
3995
+ readonly arguments: readonly [{
3996
+ readonly name: "--toolsets";
3997
+ readonly value: "<name,...>";
3998
+ readonly required: false;
3999
+ readonly description: "Comma-separated toolsets to serve: core (default), all, read, repos, panes, panels, agents, sessions, git, docs, links, admin.";
4000
+ }, {
4001
+ readonly name: "--read-only";
4002
+ readonly required: false;
4003
+ readonly description: "Serve only read-only tools.";
4004
+ }];
4005
+ readonly examples: readonly ["claude mcp add --scope user pane -- npx --yes runpane@latest mcp", "codex mcp add pane -- npx --yes runpane@latest mcp"];
4006
+ readonly notes: readonly ["Only the npm package and the Pane app include the MCP server; the Python package prints how to run it with Node.", "Commands that need --yes in the CLI take `yes: true` as a tool input."];
4007
+ };
3401
4008
  readonly "repos list": {
3402
4009
  readonly name: "repos list";
3403
4010
  readonly summary: "List repositories saved in the running Pane app.";
@@ -3700,7 +4307,7 @@ export declare const RUNPANE_CONTRACT: {
3700
4307
  }];
3701
4308
  readonly examples: readonly ["runpane panes archive --pane <pane-id> --source agent --yes --json", "runpane panes archive --pane <pane-id> --dry-run --json", "runpane panes archive --pane <pane-id> --force --yes --json"];
3702
4309
  readonly jsonSchemas: readonly ["paneArchiveRequest", "paneArchiveResult"];
3703
- readonly notes: readonly ["If the result has ok:false with a blocked field, the pane was NOT archived; inspect blocked.code and rerun with --force if discarding the flagged work is intentional.", "Inspect safetyCheck.unpushedCommitDetails for exact commit IDs and subjects; upstreamRefreshed confirms the tracking ref was refreshed first.", "A --dry-run result sets dryRun:true and wouldArchive without deleting the Pane or its worktree.", "A successful archive waits for the Pane-managed worktree to be removed before returning; check worktreeCleanup in the result for the final outcome.", "Archiving a main-repo Pane (no Pane-managed worktree) always succeeds immediately since nothing is deleted from disk."];
4310
+ readonly notes: readonly ["If the result has ok:false with a blocked field, the pane was NOT archived; inspect blocked.code and rerun with --force if discarding the flagged work is intentional.", "Inspect safetyCheck.unpushedCommitDetails for exact commit IDs and subjects; upstreamRefreshed confirms the tracking ref was refreshed first.", "A --dry-run result sets dryRun:true and wouldArchive without deleting the Pane or its worktree.", "A successful archive waits for the Pane-managed worktree to be removed before returning; check worktreeCleanup in the result for the final outcome.", "Archiving a main-repo Pane (no Pane-managed worktree) always succeeds immediately since nothing is deleted from disk.", "Undo an archive with `runpane panes restore --pane <pane-id> --yes`, which recreates the worktree. `runpane links create --pane <pane-id>` gives the user a link to review the Pane first."];
3704
4311
  };
3705
4312
  readonly "panes pin": {
3706
4313
  readonly name: "panes pin";
@@ -3896,6 +4503,11 @@ export declare const RUNPANE_CONTRACT: {
3896
4503
  readonly value: "<text>";
3897
4504
  readonly required: false;
3898
4505
  readonly description: "Text bytes to send.";
4506
+ }, {
4507
+ readonly name: "--keys";
4508
+ readonly value: "<name,...>";
4509
+ readonly required: false;
4510
+ readonly description: "Comma-separated key names to press in order: enter, escape, tab, backspace, space, up, down, left, right, ctrl-c, ctrl-d, or any single character.";
3899
4511
  }, {
3900
4512
  readonly name: "--input-file";
3901
4513
  readonly value: "<path|->";
@@ -3915,9 +4527,9 @@ export declare const RUNPANE_CONTRACT: {
3915
4527
  readonly required: false;
3916
4528
  readonly description: "Connect to a specific Pane data directory.";
3917
4529
  }];
3918
- readonly examples: readonly ["printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes", "printf '\\003' | runpane panels input --panel <panel-id> --input-file - --yes", "runpane panels input --panel <panel-id> --text \"simple text\" --yes --json"];
4530
+ readonly examples: readonly ["printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes", "printf '\\003' | runpane panels input --panel <panel-id> --input-file - --yes", "runpane panels input --panel <panel-id> --text \"simple text\" --yes --json", "runpane panels input --panel <panel-id> --keys down,enter --yes --json"];
3919
4531
  readonly jsonSchemas: readonly ["panelInputRequest", "panelInputResult"];
3920
- readonly notes: readonly ["Input is sent exactly as provided. Include a real newline byte when the terminal should receive Enter; across shells, `--input-file` is safer than `--text \"...\\n\"`.", "Use `--input-file -` or a temp file for multi-line input, quotes, Ctrl-C, or shell-sensitive text.", "If interrupting a running process, send Ctrl-C first, validate/read output, then send the next command in a separate `panels input` call so bytes are not dropped.", "After sending input, validate with `runpane panels output --panel <panel-id> --json` before reporting success.", "Runpane records action metadata and errors for observability, but should not log full input text by default.", "For ordinary text plus Enter, prefer `panels submit` so the terminal receives a CR Enter byte."];
4532
+ readonly notes: readonly ["To answer a menu or prompt, prefer `--keys` (for example `--keys down,enter`) over escape sequences in `--text`.", "Input is sent exactly as provided. Include a real newline byte when the terminal should receive Enter; across shells, `--input-file` is safer than `--text \"...\\n\"`.", "Use `--input-file -` or a temp file for multi-line input, quotes, Ctrl-C, or shell-sensitive text.", "If interrupting a running process, send Ctrl-C first, validate/read output, then send the next command in a separate `panels input` call so bytes are not dropped.", "After sending input, validate with `runpane panels output --panel <panel-id> --json` before reporting success.", "Runpane records action metadata and errors for observability, but should not log full input text by default.", "For ordinary text plus Enter, prefer `panels submit` so the terminal receives a CR Enter byte."];
3921
4533
  };
3922
4534
  readonly "agents doctor": {
3923
4535
  readonly name: "agents doctor";
@@ -4312,6 +4924,719 @@ export declare const RUNPANE_CONTRACT: {
4312
4924
  readonly examples: readonly ["runpane watch --self-test", "runpane watch --follow", "runpane watch --as monitor --follow --json", "runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff"];
4313
4925
  readonly notes: readonly ["Defaults stay responsive: no settle, no batching, all kinds, IDLE every --idle-after. Cadence flags are opt-in for expensive consumers and require --follow.", "Recommended orchestrator invocation (what Pane Chat arms automatically): runpane watch --self-test, then runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff. Budget: about 6 wake-ups per active pane per hour worst case, usually 1-3.", "BUSY carries no action; drop it with --kinds. HEARTBEAT is client-side proof of life, is never shaped by cadence flags, and should be filtered out of any monitor that wakes an agent.", "STUCK means real unsubmitted composer text. An agent prompt suggestion (for example a grey Try \"...\" hint) never counts.", "Dead watch: judge death by a non-zero exit or a WATCH ERROR line, not by silence. Re-arm once; if it dies again, file runpane doctor --report.", "Cadence state is held per named consumer; an anonymous --follow with a cadence flag names itself follow-<pid>. Held lines survive a reconnect of the same consumer; a changed filter re-delivers them under the new filter.", "Journal loss is surfaced through reset and dropped metadata.", "The daemon treats omitted idleAfterMs as disabled so older clients never receive agent.idle unexpectedly."];
4314
4926
  };
4927
+ readonly "panes git-status": {
4928
+ readonly name: "panes git-status";
4929
+ readonly summary: "Read the git status of a Pane worktree: uncommitted, unpushed, and behind-main counts.";
4930
+ readonly details: "Use this to check whether a Pane has work to commit, push, or rebase before archiving it or opening a PR.";
4931
+ readonly requiresPaneDaemon: true;
4932
+ readonly mutates: false;
4933
+ readonly arguments: readonly [{
4934
+ readonly name: "--pane";
4935
+ readonly value: "<pane-id>";
4936
+ readonly required: true;
4937
+ readonly description: "Pane id from panes list or agents start.";
4938
+ }, {
4939
+ readonly name: "--json";
4940
+ readonly required: false;
4941
+ readonly description: "Print machine-readable output.";
4942
+ }, {
4943
+ readonly name: "--pane-dir";
4944
+ readonly value: "<path>";
4945
+ readonly required: false;
4946
+ readonly description: "Connect to a specific Pane data directory.";
4947
+ }];
4948
+ readonly examples: readonly ["runpane panes git-status --pane <pane-id> --json"];
4949
+ readonly jsonSchemas: readonly ["daemonActionResult"];
4950
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message."];
4951
+ };
4952
+ readonly "panes commit": {
4953
+ readonly name: "panes commit";
4954
+ readonly summary: "Stage all changes in a Pane worktree and commit them.";
4955
+ readonly details: "Use this to commit a Pane's work the way the app's commit action does. The message needs a title line.";
4956
+ readonly requiresPaneDaemon: true;
4957
+ readonly mutates: true;
4958
+ readonly arguments: readonly [{
4959
+ readonly name: "--pane";
4960
+ readonly value: "<pane-id>";
4961
+ readonly required: true;
4962
+ readonly description: "Pane id from panes list or agents start.";
4963
+ }, {
4964
+ readonly name: "--message";
4965
+ readonly value: "<message>";
4966
+ readonly required: true;
4967
+ readonly description: "Commit message; the first line is the title.";
4968
+ }, {
4969
+ readonly name: "--yes";
4970
+ readonly required: false;
4971
+ readonly description: "Confirm this change; required in non-interactive shells.";
4972
+ }, {
4973
+ readonly name: "--json";
4974
+ readonly required: false;
4975
+ readonly description: "Print machine-readable output.";
4976
+ }, {
4977
+ readonly name: "--pane-dir";
4978
+ readonly value: "<path>";
4979
+ readonly required: false;
4980
+ readonly description: "Connect to a specific Pane data directory.";
4981
+ }];
4982
+ readonly examples: readonly ["runpane panes commit --pane <pane-id> --message <message> --yes --json"];
4983
+ readonly jsonSchemas: readonly ["daemonActionResult"];
4984
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message."];
4985
+ };
4986
+ readonly "panes push": {
4987
+ readonly name: "panes push";
4988
+ readonly summary: "Push a Pane branch to its remote.";
4989
+ readonly details: "Use this to publish a Pane's commits, the way the app's push action does.";
4990
+ readonly requiresPaneDaemon: true;
4991
+ readonly mutates: true;
4992
+ readonly arguments: readonly [{
4993
+ readonly name: "--pane";
4994
+ readonly value: "<pane-id>";
4995
+ readonly required: true;
4996
+ readonly description: "Pane id from panes list or agents start.";
4997
+ }, {
4998
+ readonly name: "--yes";
4999
+ readonly required: false;
5000
+ readonly description: "Confirm this change; required in non-interactive shells.";
5001
+ }, {
5002
+ readonly name: "--json";
5003
+ readonly required: false;
5004
+ readonly description: "Print machine-readable output.";
5005
+ }, {
5006
+ readonly name: "--pane-dir";
5007
+ readonly value: "<path>";
5008
+ readonly required: false;
5009
+ readonly description: "Connect to a specific Pane data directory.";
5010
+ }];
5011
+ readonly examples: readonly ["runpane panes push --pane <pane-id> --yes --json"];
5012
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5013
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message."];
5014
+ };
5015
+ readonly "panes pull": {
5016
+ readonly name: "panes pull";
5017
+ readonly summary: "Pull the remote branch into a Pane worktree.";
5018
+ readonly details: "Use this to bring remote commits into a Pane, the way the app's pull action does.";
5019
+ readonly requiresPaneDaemon: true;
5020
+ readonly mutates: true;
5021
+ readonly arguments: readonly [{
5022
+ readonly name: "--pane";
5023
+ readonly value: "<pane-id>";
5024
+ readonly required: true;
5025
+ readonly description: "Pane id from panes list or agents start.";
5026
+ }, {
5027
+ readonly name: "--yes";
5028
+ readonly required: false;
5029
+ readonly description: "Confirm this change; required in non-interactive shells.";
5030
+ }, {
5031
+ readonly name: "--json";
5032
+ readonly required: false;
5033
+ readonly description: "Print machine-readable output.";
5034
+ }, {
5035
+ readonly name: "--pane-dir";
5036
+ readonly value: "<path>";
5037
+ readonly required: false;
5038
+ readonly description: "Connect to a specific Pane data directory.";
5039
+ }];
5040
+ readonly examples: readonly ["runpane panes pull --pane <pane-id> --yes --json"];
5041
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5042
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message."];
5043
+ };
5044
+ readonly "panes rebase-main": {
5045
+ readonly name: "panes rebase-main";
5046
+ readonly summary: "Rebase a Pane branch onto the latest main branch.";
5047
+ readonly details: "Use this to bring main's changes into a Pane. It rewrites the Pane branch history; conflicts are reported, not resolved.";
5048
+ readonly requiresPaneDaemon: true;
5049
+ readonly mutates: true;
5050
+ readonly arguments: readonly [{
5051
+ readonly name: "--pane";
5052
+ readonly value: "<pane-id>";
5053
+ readonly required: true;
5054
+ readonly description: "Pane id from panes list or agents start.";
5055
+ }, {
5056
+ readonly name: "--yes";
5057
+ readonly required: false;
5058
+ readonly description: "Confirm this change; required in non-interactive shells.";
5059
+ }, {
5060
+ readonly name: "--json";
5061
+ readonly required: false;
5062
+ readonly description: "Print machine-readable output.";
5063
+ }, {
5064
+ readonly name: "--pane-dir";
5065
+ readonly value: "<path>";
5066
+ readonly required: false;
5067
+ readonly description: "Connect to a specific Pane data directory.";
5068
+ }];
5069
+ readonly examples: readonly ["runpane panes rebase-main --pane <pane-id> --yes --json"];
5070
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5071
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message."];
5072
+ };
5073
+ readonly "panes restore": {
5074
+ readonly name: "panes restore";
5075
+ readonly summary: "Restore an archived Pane, recreating its worktree.";
5076
+ readonly details: "Use this to undo `panes archive`.";
5077
+ readonly requiresPaneDaemon: true;
5078
+ readonly mutates: true;
5079
+ readonly arguments: readonly [{
5080
+ readonly name: "--pane";
5081
+ readonly value: "<pane-id>";
5082
+ readonly required: true;
5083
+ readonly description: "Pane id from panes list or agents start.";
5084
+ }, {
5085
+ readonly name: "--yes";
5086
+ readonly required: false;
5087
+ readonly description: "Confirm this change; required in non-interactive shells.";
5088
+ }, {
5089
+ readonly name: "--json";
5090
+ readonly required: false;
5091
+ readonly description: "Print machine-readable output.";
5092
+ }, {
5093
+ readonly name: "--pane-dir";
5094
+ readonly value: "<path>";
5095
+ readonly required: false;
5096
+ readonly description: "Connect to a specific Pane data directory.";
5097
+ }];
5098
+ readonly examples: readonly ["runpane panes restore --pane <pane-id> --yes --json"];
5099
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5100
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message."];
5101
+ };
5102
+ readonly "panes squash-rebase": {
5103
+ readonly name: "panes squash-rebase";
5104
+ readonly summary: "Squash a Pane branch into one commit and rebase it onto main.";
5105
+ readonly details: "Use this to land a Pane's work on the repository's main branch the way the app's squash-and-rebase action does. It rewrites the Pane branch and updates main.";
5106
+ readonly requiresPaneDaemon: true;
5107
+ readonly mutates: true;
5108
+ readonly arguments: readonly [{
5109
+ readonly name: "--pane";
5110
+ readonly value: "<pane-id>";
5111
+ readonly required: true;
5112
+ readonly description: "Pane id from panes list or agents start.";
5113
+ }, {
5114
+ readonly name: "--message";
5115
+ readonly value: "<message>";
5116
+ readonly required: true;
5117
+ readonly description: "Commit message; the first line is the title.";
5118
+ }, {
5119
+ readonly name: "--yes";
5120
+ readonly required: false;
5121
+ readonly description: "Confirm this change; required in non-interactive shells.";
5122
+ }, {
5123
+ readonly name: "--json";
5124
+ readonly required: false;
5125
+ readonly description: "Print machine-readable output.";
5126
+ }, {
5127
+ readonly name: "--pane-dir";
5128
+ readonly value: "<path>";
5129
+ readonly required: false;
5130
+ readonly description: "Connect to a specific Pane data directory.";
5131
+ }];
5132
+ readonly examples: readonly ["runpane panes squash-rebase --pane <pane-id> --message <message> --yes --json"];
5133
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5134
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message.", "The result includes `link`, a pane:// link the user can open to review the Pane."];
5135
+ };
5136
+ readonly "panes stash": {
5137
+ readonly name: "panes stash";
5138
+ readonly summary: "Stash uncommitted changes in a Pane worktree.";
5139
+ readonly details: "Use this to set aside work in progress, the way the app's stash action does. `panes stash-pop` brings it back.";
5140
+ readonly requiresPaneDaemon: true;
5141
+ readonly mutates: true;
5142
+ readonly arguments: readonly [{
5143
+ readonly name: "--pane";
5144
+ readonly value: "<pane-id>";
5145
+ readonly required: true;
5146
+ readonly description: "Pane id from panes list or agents start.";
5147
+ }, {
5148
+ readonly name: "--yes";
5149
+ readonly required: false;
5150
+ readonly description: "Confirm this change; required in non-interactive shells.";
5151
+ }, {
5152
+ readonly name: "--json";
5153
+ readonly required: false;
5154
+ readonly description: "Print machine-readable output.";
5155
+ }, {
5156
+ readonly name: "--pane-dir";
5157
+ readonly value: "<path>";
5158
+ readonly required: false;
5159
+ readonly description: "Connect to a specific Pane data directory.";
5160
+ }];
5161
+ readonly examples: readonly ["runpane panes stash --pane <pane-id> --yes --json"];
5162
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5163
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message.", "The result includes `link`, a pane:// link the user can open to review the Pane."];
5164
+ };
5165
+ readonly "panes stash-pop": {
5166
+ readonly name: "panes stash-pop";
5167
+ readonly summary: "Apply and drop the latest stash in a Pane worktree.";
5168
+ readonly details: "Use this to bring back work set aside with `panes stash`.";
5169
+ readonly requiresPaneDaemon: true;
5170
+ readonly mutates: true;
5171
+ readonly arguments: readonly [{
5172
+ readonly name: "--pane";
5173
+ readonly value: "<pane-id>";
5174
+ readonly required: true;
5175
+ readonly description: "Pane id from panes list or agents start.";
5176
+ }, {
5177
+ readonly name: "--yes";
5178
+ readonly required: false;
5179
+ readonly description: "Confirm this change; required in non-interactive shells.";
5180
+ }, {
5181
+ readonly name: "--json";
5182
+ readonly required: false;
5183
+ readonly description: "Print machine-readable output.";
5184
+ }, {
5185
+ readonly name: "--pane-dir";
5186
+ readonly value: "<path>";
5187
+ readonly required: false;
5188
+ readonly description: "Connect to a specific Pane data directory.";
5189
+ }];
5190
+ readonly examples: readonly ["runpane panes stash-pop --pane <pane-id> --yes --json"];
5191
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5192
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message.", "The result includes `link`, a pane:// link the user can open to review the Pane."];
5193
+ };
5194
+ readonly "panes soft-reset": {
5195
+ readonly name: "panes soft-reset";
5196
+ readonly summary: "Undo the last commit in a Pane, keeping its changes staged.";
5197
+ readonly details: "Use this to reword or regroup the latest commit, the way the app's soft reset action does.";
5198
+ readonly requiresPaneDaemon: true;
5199
+ readonly mutates: true;
5200
+ readonly arguments: readonly [{
5201
+ readonly name: "--pane";
5202
+ readonly value: "<pane-id>";
5203
+ readonly required: true;
5204
+ readonly description: "Pane id from panes list or agents start.";
5205
+ }, {
5206
+ readonly name: "--yes";
5207
+ readonly required: false;
5208
+ readonly description: "Confirm this change; required in non-interactive shells.";
5209
+ }, {
5210
+ readonly name: "--json";
5211
+ readonly required: false;
5212
+ readonly description: "Print machine-readable output.";
5213
+ }, {
5214
+ readonly name: "--pane-dir";
5215
+ readonly value: "<path>";
5216
+ readonly required: false;
5217
+ readonly description: "Connect to a specific Pane data directory.";
5218
+ }];
5219
+ readonly examples: readonly ["runpane panes soft-reset --pane <pane-id> --yes --json"];
5220
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5221
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message.", "The result includes `link`, a pane:// link the user can open to review the Pane."];
5222
+ };
5223
+ readonly "panes fetch": {
5224
+ readonly name: "panes fetch";
5225
+ readonly summary: "Fetch the remote for a Pane worktree.";
5226
+ readonly details: "Use this to refresh remote branches before checking git status or rebasing.";
5227
+ readonly requiresPaneDaemon: true;
5228
+ readonly mutates: true;
5229
+ readonly arguments: readonly [{
5230
+ readonly name: "--pane";
5231
+ readonly value: "<pane-id>";
5232
+ readonly required: true;
5233
+ readonly description: "Pane id from panes list or agents start.";
5234
+ }, {
5235
+ readonly name: "--yes";
5236
+ readonly required: false;
5237
+ readonly description: "Confirm this change; required in non-interactive shells.";
5238
+ }, {
5239
+ readonly name: "--json";
5240
+ readonly required: false;
5241
+ readonly description: "Print machine-readable output.";
5242
+ }, {
5243
+ readonly name: "--pane-dir";
5244
+ readonly value: "<path>";
5245
+ readonly required: false;
5246
+ readonly description: "Connect to a specific Pane data directory.";
5247
+ }];
5248
+ readonly examples: readonly ["runpane panes fetch --pane <pane-id> --yes --json"];
5249
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5250
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message."];
5251
+ };
5252
+ readonly "panes run-script": {
5253
+ readonly name: "panes run-script";
5254
+ readonly summary: "Run the repository's run script in a Pane.";
5255
+ readonly details: "Use this to start the dev server or app for a Pane, the way the app's Run button does.";
5256
+ readonly requiresPaneDaemon: true;
5257
+ readonly mutates: true;
5258
+ readonly arguments: readonly [{
5259
+ readonly name: "--pane";
5260
+ readonly value: "<pane-id>";
5261
+ readonly required: true;
5262
+ readonly description: "Pane id from panes list or agents start.";
5263
+ }, {
5264
+ readonly name: "--yes";
5265
+ readonly required: false;
5266
+ readonly description: "Confirm this change; required in non-interactive shells.";
5267
+ }, {
5268
+ readonly name: "--json";
5269
+ readonly required: false;
5270
+ readonly description: "Print machine-readable output.";
5271
+ }, {
5272
+ readonly name: "--pane-dir";
5273
+ readonly value: "<path>";
5274
+ readonly required: false;
5275
+ readonly description: "Connect to a specific Pane data directory.";
5276
+ }];
5277
+ readonly examples: readonly ["runpane panes run-script --pane <pane-id> --yes --json"];
5278
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5279
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message."];
5280
+ };
5281
+ readonly "panes stop-script": {
5282
+ readonly name: "panes stop-script";
5283
+ readonly summary: "Stop the run script running in a Pane.";
5284
+ readonly details: "Use this to stop what `panes run-script` started.";
5285
+ readonly requiresPaneDaemon: true;
5286
+ readonly mutates: true;
5287
+ readonly arguments: readonly [{
5288
+ readonly name: "--pane";
5289
+ readonly value: "<pane-id>";
5290
+ readonly required: true;
5291
+ readonly description: "Pane id from panes list or agents start.";
5292
+ }, {
5293
+ readonly name: "--yes";
5294
+ readonly required: false;
5295
+ readonly description: "Confirm this change; required in non-interactive shells.";
5296
+ }, {
5297
+ readonly name: "--json";
5298
+ readonly required: false;
5299
+ readonly description: "Print machine-readable output.";
5300
+ }, {
5301
+ readonly name: "--pane-dir";
5302
+ readonly value: "<path>";
5303
+ readonly required: false;
5304
+ readonly description: "Connect to a specific Pane data directory.";
5305
+ }];
5306
+ readonly examples: readonly ["runpane panes stop-script --pane <pane-id> --yes --json"];
5307
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5308
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message.", "The result includes `link`, a pane:// link the user can open to review the Pane."];
5309
+ };
5310
+ readonly "panes move": {
5311
+ readonly name: "panes move";
5312
+ readonly summary: "Move a Pane into a sidebar folder.";
5313
+ readonly details: "Use this to organize Panes. Folder ids come from `runpane folders list`.";
5314
+ readonly requiresPaneDaemon: true;
5315
+ readonly mutates: true;
5316
+ readonly arguments: readonly [{
5317
+ readonly name: "--pane";
5318
+ readonly value: "<pane-id>";
5319
+ readonly required: true;
5320
+ readonly description: "Pane id from panes list or agents start.";
5321
+ }, {
5322
+ readonly name: "--folder";
5323
+ readonly value: "<folder-id>";
5324
+ readonly required: true;
5325
+ readonly description: "Folder id from folders list.";
5326
+ }, {
5327
+ readonly name: "--yes";
5328
+ readonly required: false;
5329
+ readonly description: "Confirm this change; required in non-interactive shells.";
5330
+ }, {
5331
+ readonly name: "--json";
5332
+ readonly required: false;
5333
+ readonly description: "Print machine-readable output.";
5334
+ }, {
5335
+ readonly name: "--pane-dir";
5336
+ readonly value: "<path>";
5337
+ readonly required: false;
5338
+ readonly description: "Connect to a specific Pane data directory.";
5339
+ }];
5340
+ readonly examples: readonly ["runpane panes move --pane <pane-id> --folder <folder-id> --yes --json"];
5341
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5342
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message.", "The result includes `link`, a pane:// link the user can open to review the Pane."];
5343
+ };
5344
+ readonly "folders list": {
5345
+ readonly name: "folders list";
5346
+ readonly summary: "List the sidebar folders of a repository.";
5347
+ readonly details: "Use this to find folder ids for `panes move`.";
5348
+ readonly requiresPaneDaemon: true;
5349
+ readonly mutates: false;
5350
+ readonly arguments: readonly [{
5351
+ readonly name: "--repo";
5352
+ readonly value: "<repo-id>";
5353
+ readonly required: true;
5354
+ readonly description: "Numeric repository id from repos list.";
5355
+ }, {
5356
+ readonly name: "--json";
5357
+ readonly required: false;
5358
+ readonly description: "Print machine-readable output.";
5359
+ }, {
5360
+ readonly name: "--pane-dir";
5361
+ readonly value: "<path>";
5362
+ readonly required: false;
5363
+ readonly description: "Connect to a specific Pane data directory.";
5364
+ }];
5365
+ readonly examples: readonly ["runpane folders list --repo <repo-id> --json"];
5366
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5367
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message."];
5368
+ };
5369
+ readonly "folders create": {
5370
+ readonly name: "folders create";
5371
+ readonly summary: "Create a sidebar folder in a repository.";
5372
+ readonly details: "Use this to add a folder for grouping Panes.";
5373
+ readonly requiresPaneDaemon: true;
5374
+ readonly mutates: true;
5375
+ readonly arguments: readonly [{
5376
+ readonly name: "--repo";
5377
+ readonly value: "<repo-id>";
5378
+ readonly required: true;
5379
+ readonly description: "Numeric repository id from repos list.";
5380
+ }, {
5381
+ readonly name: "--name";
5382
+ readonly value: "<name>";
5383
+ readonly required: true;
5384
+ readonly description: "Folder name.";
5385
+ }, {
5386
+ readonly name: "--yes";
5387
+ readonly required: false;
5388
+ readonly description: "Confirm this change; required in non-interactive shells.";
5389
+ }, {
5390
+ readonly name: "--json";
5391
+ readonly required: false;
5392
+ readonly description: "Print machine-readable output.";
5393
+ }, {
5394
+ readonly name: "--pane-dir";
5395
+ readonly value: "<path>";
5396
+ readonly required: false;
5397
+ readonly description: "Connect to a specific Pane data directory.";
5398
+ }];
5399
+ readonly examples: readonly ["runpane folders create --repo <repo-id> --name <name> --yes --json"];
5400
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5401
+ readonly notes: readonly ["Runs the same Pane action as the button in the app, through the running Pane daemon.", "Output is `{ ok, data, error }`; `ok: false` exits non-zero with the error message."];
5402
+ };
5403
+ readonly "links create": {
5404
+ readonly name: "links create";
5405
+ readonly summary: "Build a pane:// link that opens a Pane, panel, repository, or Session in the Pane app.";
5406
+ readonly details: "Use this to hand the user a clickable link. It only builds the URL; opening it navigates and never changes Pane state.";
5407
+ readonly requiresPaneDaemon: false;
5408
+ readonly mutates: false;
5409
+ readonly arguments: readonly [{
5410
+ readonly name: "--pane";
5411
+ readonly value: "<pane-id>";
5412
+ readonly required: false;
5413
+ readonly description: "Pane to open.";
5414
+ }, {
5415
+ readonly name: "--panel";
5416
+ readonly value: "<panel-id>";
5417
+ readonly required: false;
5418
+ readonly description: "Panel inside the Pane to select.";
5419
+ }, {
5420
+ readonly name: "--repo";
5421
+ readonly value: "<repo-id>";
5422
+ readonly required: false;
5423
+ readonly description: "Repository id from repos list.";
5424
+ }, {
5425
+ readonly name: "--session";
5426
+ readonly value: "<session-id>";
5427
+ readonly required: false;
5428
+ readonly description: "Session id or name from sessions list.";
5429
+ }, {
5430
+ readonly name: "--json";
5431
+ readonly required: false;
5432
+ readonly description: "Print machine-readable output.";
5433
+ }];
5434
+ readonly examples: readonly ["runpane links create --pane <pane-id> --json"];
5435
+ readonly jsonSchemas: readonly ["linkCreateResult"];
5436
+ readonly notes: readonly ["Links look like `pane://open?pane=<pane-id>&panel=<panel-id>`. Give exactly one of --pane, --repo, or --session."];
5437
+ };
5438
+ readonly "links open": {
5439
+ readonly name: "links open";
5440
+ readonly summary: "Open a pane:// link in the running Pane app.";
5441
+ readonly details: "Use this to navigate the app to a Pane, panel, repository, or Session. It raises the Pane window, so run it only when the user asked.";
5442
+ readonly requiresPaneDaemon: true;
5443
+ readonly mutates: true;
5444
+ readonly arguments: readonly [{
5445
+ readonly name: "--url";
5446
+ readonly value: "<pane-url>";
5447
+ readonly required: true;
5448
+ readonly description: "A pane://open link from links create.";
5449
+ }, {
5450
+ readonly name: "--yes";
5451
+ readonly required: false;
5452
+ readonly description: "Confirm this change; required in non-interactive shells.";
5453
+ }, {
5454
+ readonly name: "--json";
5455
+ readonly required: false;
5456
+ readonly description: "Print machine-readable output.";
5457
+ }, {
5458
+ readonly name: "--pane-dir";
5459
+ readonly value: "<path>";
5460
+ readonly required: false;
5461
+ readonly description: "Connect to a specific Pane data directory.";
5462
+ }];
5463
+ readonly examples: readonly ["runpane links open --url \"pane://open?pane=<pane-id>\" --yes --json"];
5464
+ readonly jsonSchemas: readonly ["daemonActionResult"];
5465
+ readonly notes: readonly ["Opening a link never changes Pane state; it selects what the link names."];
5466
+ };
5467
+ readonly "docs search": {
5468
+ readonly name: "docs search";
5469
+ readonly summary: "Search Pane's docs, runpane help, and the Pane Chat skills.";
5470
+ readonly details: "Use this before guessing how Pane works. Results are short excerpts with a path; read the full text with `runpane docs read`.";
5471
+ readonly requiresPaneDaemon: false;
5472
+ readonly mutates: false;
5473
+ readonly arguments: readonly [{
5474
+ readonly name: "--query";
5475
+ readonly value: "<text>";
5476
+ readonly required: true;
5477
+ readonly description: "Words to search for.";
5478
+ }, {
5479
+ readonly name: "--limit";
5480
+ readonly value: "<count>";
5481
+ readonly required: false;
5482
+ readonly description: "Maximum results; defaults to 5.";
5483
+ }, {
5484
+ readonly name: "--json";
5485
+ readonly required: false;
5486
+ readonly description: "Print machine-readable output.";
5487
+ }];
5488
+ readonly examples: readonly ["runpane docs search --query \"archive a pane\" --json"];
5489
+ readonly jsonSchemas: readonly ["docsSearchResult"];
5490
+ readonly notes: readonly ["Works offline. Skills are found in the Pane data directory when the Pane app has installed them."];
5491
+ };
5492
+ readonly "docs read": {
5493
+ readonly name: "docs read";
5494
+ readonly summary: "Read one Pane doc, help topic, or skill in full.";
5495
+ readonly details: "Use this with a path from `runpane docs search`.";
5496
+ readonly requiresPaneDaemon: false;
5497
+ readonly mutates: false;
5498
+ readonly arguments: readonly [{
5499
+ readonly name: "--doc";
5500
+ readonly value: "<path>";
5501
+ readonly required: true;
5502
+ readonly description: "Path from docs search, such as docs/PANE_MCP.md.";
5503
+ }, {
5504
+ readonly name: "--json";
5505
+ readonly required: false;
5506
+ readonly description: "Print machine-readable output.";
5507
+ }];
5508
+ readonly examples: readonly ["runpane docs read --doc docs/PANE_MCP.md --json"];
5509
+ readonly jsonSchemas: readonly ["docsReadResult"];
5510
+ readonly notes: readonly ["Paths come from docs search: `docs/<file>.md`, `skills/<name>/SKILL.md`, `help/<topic>`, or `command/<name>`."];
5511
+ };
5512
+ readonly "agents start": {
5513
+ readonly name: "agents start";
5514
+ readonly summary: "Start an agent on a task: create a Pane in a repository, launch the agent with the prompt, and wait until it is ready.";
5515
+ readonly details: "Use this for the common job \"have an agent work on X in repo Y\". It returns the pane and panel ids and a pane:// link to hand the user.";
5516
+ readonly requiresPaneDaemon: true;
5517
+ readonly mutates: true;
5518
+ readonly arguments: readonly [{
5519
+ readonly name: "--repo";
5520
+ readonly value: "<selector>";
5521
+ readonly required: true;
5522
+ readonly description: "Repository: active, id, exact path, or saved name.";
5523
+ }, {
5524
+ readonly name: "--name";
5525
+ readonly value: "<name>";
5526
+ readonly required: true;
5527
+ readonly description: "Name for the new Pane.";
5528
+ }, {
5529
+ readonly name: "--agent";
5530
+ readonly value: "<codex|claude|cursor>";
5531
+ readonly required: false;
5532
+ readonly description: "Built-in agent to launch.";
5533
+ }, {
5534
+ readonly name: "--tool-command";
5535
+ readonly value: "<command>";
5536
+ readonly required: false;
5537
+ readonly description: "Custom terminal command instead of a built-in agent.";
5538
+ }, {
5539
+ readonly name: "--prompt";
5540
+ readonly value: "<task>";
5541
+ readonly required: true;
5542
+ readonly description: "The task to send once the agent is ready.";
5543
+ }, {
5544
+ readonly name: "--base-branch";
5545
+ readonly value: "<branch>";
5546
+ readonly required: false;
5547
+ readonly description: "Branch to start the worktree from.";
5548
+ }, {
5549
+ readonly name: "--yes";
5550
+ readonly required: false;
5551
+ readonly description: "Confirm this change; required in non-interactive shells.";
5552
+ }, {
5553
+ readonly name: "--json";
5554
+ readonly required: false;
5555
+ readonly description: "Print machine-readable output.";
5556
+ }, {
5557
+ readonly name: "--pane-dir";
5558
+ readonly value: "<path>";
5559
+ readonly required: false;
5560
+ readonly description: "Connect to a specific Pane data directory.";
5561
+ }];
5562
+ readonly examples: readonly ["runpane agents start --repo active --name fix-login --agent claude --prompt \"Fix the login redirect\" --yes --json"];
5563
+ readonly jsonSchemas: readonly ["agentTaskResult"];
5564
+ readonly notes: readonly ["Creates the Pane in the background (no focus change), pinned, and waits for the agent to be ready before sending the prompt.", "Check on it with `runpane agents status`; send follow-ups with `runpane agents send`."];
5565
+ };
5566
+ readonly "agents status": {
5567
+ readonly name: "agents status";
5568
+ readonly summary: "Check on an agent: whether it is working, ready, blocked, or idle, plus its current screen.";
5569
+ readonly details: "Use this to see how an agent started with `agents start` is doing, or whether it needs input.";
5570
+ readonly requiresPaneDaemon: true;
5571
+ readonly mutates: false;
5572
+ readonly arguments: readonly [{
5573
+ readonly name: "--pane";
5574
+ readonly value: "<pane-id>";
5575
+ readonly required: false;
5576
+ readonly description: "Pane id; its agent panel is used.";
5577
+ }, {
5578
+ readonly name: "--panel";
5579
+ readonly value: "<panel-id>";
5580
+ readonly required: false;
5581
+ readonly description: "Panel id.";
5582
+ }, {
5583
+ readonly name: "--limit";
5584
+ readonly value: "<count>";
5585
+ readonly required: false;
5586
+ readonly description: "Screen lines to return; defaults to 40.";
5587
+ }, {
5588
+ readonly name: "--json";
5589
+ readonly required: false;
5590
+ readonly description: "Print machine-readable output.";
5591
+ }, {
5592
+ readonly name: "--pane-dir";
5593
+ readonly value: "<path>";
5594
+ readonly required: false;
5595
+ readonly description: "Connect to a specific Pane data directory.";
5596
+ }];
5597
+ readonly examples: readonly ["runpane agents status --pane <pane-id> --json"];
5598
+ readonly jsonSchemas: readonly ["agentStatusResult"];
5599
+ readonly notes: readonly ["`status` is `working`, `ready`, `blocked`, `idle`, `exited`, or `unknown`. `blocked` means the agent is waiting on a person."];
5600
+ };
5601
+ readonly "agents send": {
5602
+ readonly name: "agents send";
5603
+ readonly summary: "Send a follow-up message to an agent and confirm it was submitted.";
5604
+ readonly details: "Use this to answer an agent or give it the next instruction.";
5605
+ readonly requiresPaneDaemon: true;
5606
+ readonly mutates: true;
5607
+ readonly arguments: readonly [{
5608
+ readonly name: "--pane";
5609
+ readonly value: "<pane-id>";
5610
+ readonly required: false;
5611
+ readonly description: "Pane id; its agent panel is used.";
5612
+ }, {
5613
+ readonly name: "--panel";
5614
+ readonly value: "<panel-id>";
5615
+ readonly required: false;
5616
+ readonly description: "Panel id.";
5617
+ }, {
5618
+ readonly name: "--text";
5619
+ readonly value: "<message>";
5620
+ readonly required: true;
5621
+ readonly description: "The message to submit.";
5622
+ }, {
5623
+ readonly name: "--yes";
5624
+ readonly required: false;
5625
+ readonly description: "Confirm this change; required in non-interactive shells.";
5626
+ }, {
5627
+ readonly name: "--json";
5628
+ readonly required: false;
5629
+ readonly description: "Print machine-readable output.";
5630
+ }, {
5631
+ readonly name: "--pane-dir";
5632
+ readonly value: "<path>";
5633
+ readonly required: false;
5634
+ readonly description: "Connect to a specific Pane data directory.";
5635
+ }];
5636
+ readonly examples: readonly ["runpane agents send --pane <pane-id> --text \"Also add a test\" --yes --json"];
5637
+ readonly jsonSchemas: readonly ["agentSendResult"];
5638
+ readonly notes: readonly ["`delivered` is true only when Pane saw the message leave the composer.", "It types the text and presses Enter, so it is for messages, not keys. To answer a menu, use `runpane panels input --panel <panel-id> --keys down,enter --yes`, then check the screen with `runpane agents status`."];
5639
+ };
4315
5640
  readonly "sessions list": {
4316
5641
  readonly name: "sessions list";
4317
5642
  readonly summary: "List durable named orchestration Sessions.";
@@ -4401,7 +5726,7 @@ export declare const RUNPANE_CONTRACT: {
4401
5726
  readonly notes: readonly [];
4402
5727
  };
4403
5728
  };
4404
- readonly managedBlock: readonly ["## Pane", "", "The developer is using Pane for this repository. Pane can manage saved repositories and create user-visible Panes with terminal-backed tools for planning, discussion, implementation, and review work.", "", "This managed guidance was created by [runpane.com](https://runpane.com) for the [Pane repository](https://github.com/dcouple/Pane). Do not delete or overwrite this block; the developer uses it for their workflow and it should remain committed to the main repository unless they explicitly ask to remove it.", "", "Pane mental model: a repository is the saved base repo; a Pane is a user-visible feature/PR workspace (Pane session) that normally maps to one Pane-managed git worktree and branch; a panel/tab is a terminal inside one Pane and shares that Pane's worktree; an agent is the CLI process running in a panel.", "", "Default happy path when the user asks you to use Pane or RunPane: run `runpane doctor --json`; read `runpane agent-context --json`; resolve the saved base repository with `runpane repos list --json` or add it once with `runpane repos add --path <repo> --yes --json`; create one visible Pane (Pane session) for the requested feature/PR with a complete command such as `runpane panes create --repo <repo> --name <name> --agent <agent> --prompt \"<task>\" --source agent --no-focus --wait-ready --yes --json` or the equivalent `--tool-command <command>` form; then validate with `runpane panels wait` or `runpane panels screen` before reporting progress. For long-lived supervision, use `runpane watch --follow` instead of polling wait or screen.", "", "Use Pane when the user wants visible Panes or co-drivable parallel feature/PR workspaces. Do not use Pane as your default private delegation mechanism; for private background decomposition, use your normal subagent/worktree workflow.", "", "Register the main/base repository once. Do not register pre-created git worktrees as separate Pane repositories unless the user explicitly asks.", "", "Use `runpane panes create` for separate visible Panes (Pane sessions) for feature/PR work. Use `runpane panels create` for reviewer/helper tabs inside an existing Pane that should share that Pane's worktree.", "", "Typical workflow: register the saved base repository once; create one Pane (Pane session) per feature/PR; use panels/tabs inside that Pane for helper or reviewer agents that should share the worktree; archive the Pane after the PR is done to remove it from active Panes and clean up its managed worktree when applicable.", "", "Skill routing reference: Pane installs its skills in `<PANE_DIR>/skills/pane-chat/skills/` (also in `<PANE_DIR>/.claude/skills/` and `<PANE_DIR>/.codex/skills/`), and the Pane Chat entry point is `<PANE_DIR>/skills/pane-chat/pane-orchestrator/SKILL.md`. When the user asks to discuss, plan, implement, review, or test, read the matching skill there, for example `discussion`, `options`, `brief`, `create-ticket`, `tdd`, `quick-verify`, `prepare-pr`, `review`, or `verify-app`.", "Choose the phase from the request: discuss or investigate until the work is clear enough to delegate, then ticket, implement, review, verify, and open the PR as appropriate. Reconcile the skills with the user's request instead of treating any one list as fixed.", "For the Pane implementation source of truth: `main/src/services/skillCacheManager.ts` installs the bundle from `main/src/services/paneChatBundle/` into `<PANE_DIR>/skills/pane-chat/` and generates `pane-orchestrator`; `main/src/services/paneChatManager.ts` owns the tiny bootstrap prompt that tells the selected Pane Chat agent to read it.", "Do not hardcode a specific assistant brand in workflow guidance. Use the Pane agent or custom tool command the user selected, and use `runpane agents doctor --agent <agent> --repo <selector> --json` only when checking a built-in agent template.", "", "Start with `runpane doctor --json` before taking Pane actions. Use it to understand wrapper/runtime details, daemon reachability, and the next safe commands.", "", "In a Pane repository checkout, if `runpane` is not on PATH, use the built local wrapper with Node 22: `PATH=/opt/homebrew/opt/node@22/bin:$PATH node packages/runpane/dist/cli.js doctor --json`.", "", "Use `runpane agent-context --json` for full Pane CLI context. Use `runpane agent-context --command \"watch\" --json` or another command name for detailed schema only when needed.", "", "Default to context-safe validation: after creating Panes or sending terminal input, run `runpane panels wait` or `runpane panels screen` before reporting success. For ongoing supervision, `runpane watch --follow` is the canonical monitor; do not poll wait or screen. Prefer `runpane panels submit` for normal text plus Enter; use `runpane panels input` only for exact bytes such as Ctrl-C or escape sequences.", "", "Pane terminals draw inline images: sixel, iTerm2 inline images, and the kitty graphics protocol. Tools that need kitty graphics, such as [terminal-browser](https://github.com/zenbu-labs/terminal-browser) and [terminal-doom](https://github.com/dcouple/terminal-doom), run inside a Pane panel. `runpane doctor --json` reports the protocol list under `terminal.graphicsProtocols`.", "", "Common commands:", "- `runpane doctor --json`", "- `runpane agent-context --json`", "- `runpane repos list --json`", "- `runpane repos add --path <repo> --yes --json`", "- `runpane agents doctor --agent <agent> --repo active --json`", "- `runpane panes create --repo active --name <name> --agent <agent> --prompt \"<task>\" --source agent --no-focus --wait-ready --yes --json`", "- `runpane panels create --pane <pane-id> --agent <agent> --source agent --no-focus --wait-ready --yes --json`", "- `runpane panels list --pane <pane-id> --json`", "- `runpane panels screen --panel <panel-id> --limit 80 --json`", "- `runpane panels wait --panel <panel-id> --for ready --timeout-ms 30000 --json`", "- `runpane watch --follow --json`", "- `runpane panels submit --panel <panel-id> --text \"<answer>\" --yes --json`", "- `runpane panels input --panel <panel-id> --input-file <path|-> --yes --json`", "", "WSL note: if `runpane doctor --json` cannot find `/tmp/pane-daemon.../daemon.sock` or `runpane` resolves to a broken Windows shim, Pane may be running on Windows. Try `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane doctor --json'`, then create Panes through the same PowerShell form using the saved WSL repo name or id. Use `runpane agents doctor --agent <agent> --repo <selector> --json` to diagnose the repo environment Pane will actually use."];
5729
+ readonly managedBlock: readonly ["## Pane", "", "This repository is used with [Pane](https://runpane.com). Drive it with the CLI or the `pane` MCP server.", "", "CLI: `npm i -g runpane` (or `npx --yes runpane@latest`), then `runpane doctor --json`. Full command reference: `runpane agent-context --json`.", "", "MCP: packaged Pane registers a stdio server named `pane` with Claude Code and Codex. Check the connection with `claude mcp list` or `codex mcp list`. If tools are missing, add it in the agent's MCP settings: Claude Code `claude mcp add --scope user pane -- npx --yes runpane@latest mcp`; Codex (`~/.codex/config.toml`) table `[mcp_servers.pane]` with `command = \"npx\"` and `args = [\"--yes\", \"runpane@latest\", \"mcp\"]`; any other stdio client uses the same command and args."];
4405
5730
  };
4406
5731
  };
4407
5732
  export type RunpaneCommand = typeof RUNPANE_CONTRACT.commands[number]['name'];