runpane 2.4.135 → 2.4.137
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -3
- package/dist/agentContext.d.ts.map +1 -1
- package/dist/agentContext.js +72 -2
- package/dist/agentContext.js.map +1 -1
- package/dist/agentTasks.d.ts +1 -1
- package/dist/agentTasks.d.ts.map +1 -1
- package/dist/agentTasks.js +25 -5
- package/dist/agentTasks.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +15 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +17 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +138 -5
- package/dist/commands.js.map +1 -1
- package/dist/docs-index.json +1 -1
- package/dist/generated/contract.d.ts +1333 -165
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +2470 -296
- package/dist/generated/contract.js.map +1 -1
- package/dist/localControl.d.ts +67 -5
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +564 -31
- package/dist/localControl.js.map +1 -1
- package/dist/mcp.js +1 -1
- package/dist/mcp.js.map +1 -1
- package/dist/watchLines.d.ts +19 -0
- package/dist/watchLines.d.ts.map +1 -1
- package/dist/watchLines.js +31 -0
- package/dist/watchLines.js.map +1 -1
- package/package.json +1 -1
|
@@ -94,7 +94,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
94
94
|
}, {
|
|
95
95
|
readonly name: "version";
|
|
96
96
|
readonly summary: "Print the runpane wrapper version without contacting, launching, or focusing Pane.";
|
|
97
|
-
readonly usage: readonly ["runpane version", "runpane --version"];
|
|
97
|
+
readonly usage: readonly ["runpane version [--pane-dir <path>]", "runpane --version"];
|
|
98
98
|
}, {
|
|
99
99
|
readonly name: "doctor";
|
|
100
100
|
readonly summary: "Run platform, release, installed Pane, daemon reachability, and remote setup diagnostics.";
|
|
@@ -112,7 +112,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
112
112
|
}, {
|
|
113
113
|
readonly name: "agents doctor";
|
|
114
114
|
readonly summary: "Diagnose whether a built-in agent command is available in a Pane repository environment.";
|
|
115
|
-
readonly usage: readonly ["runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]"];
|
|
115
|
+
readonly usage: readonly ["runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json] [--pane-dir <path>]"];
|
|
116
116
|
readonly toolsets: readonly ["admin"];
|
|
117
117
|
readonly jsonSchemas: readonly ["agentDoctorResult"];
|
|
118
118
|
}, {
|
|
@@ -135,7 +135,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
135
135
|
}, {
|
|
136
136
|
readonly name: "repos add";
|
|
137
137
|
readonly summary: "Register an existing git repository with the running Pane app.";
|
|
138
|
-
readonly usage: readonly ["runpane repos add --path <path> [--name <name>] [--json] [--yes]"];
|
|
138
|
+
readonly usage: readonly ["runpane repos add --path <path> [--name <name>] [--json] [--yes] [--pane-dir <path>]"];
|
|
139
139
|
readonly mutates: true;
|
|
140
140
|
readonly additive: true;
|
|
141
141
|
readonly idempotent: true;
|
|
@@ -144,31 +144,31 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
144
144
|
}, {
|
|
145
145
|
readonly name: "panes list";
|
|
146
146
|
readonly summary: "List Pane sessions in a saved repository.";
|
|
147
|
-
readonly usage: readonly ["runpane panes list [--repo <selector>] [--json]"];
|
|
147
|
+
readonly usage: readonly ["runpane panes list [--repo <selector>] [--json] [--pane-dir <path>]"];
|
|
148
148
|
readonly toolsets: readonly ["core", "panes"];
|
|
149
149
|
readonly jsonSchemas: readonly ["paneListResult"];
|
|
150
150
|
}, {
|
|
151
151
|
readonly name: "panes cost";
|
|
152
152
|
readonly summary: "Report estimated token cost per Pane, with per-model breakdown and cache efficiency.";
|
|
153
|
-
readonly usage: readonly ["runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]"];
|
|
153
|
+
readonly usage: readonly ["runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json] [--pane-dir <path>]"];
|
|
154
154
|
readonly toolsets: readonly ["panes"];
|
|
155
155
|
readonly jsonSchemas: readonly ["paneCostRequest", "paneCostResult"];
|
|
156
156
|
}, {
|
|
157
157
|
readonly name: "workspace state";
|
|
158
158
|
readonly summary: "Read one workspace snapshot of every Pane and CLI panel.";
|
|
159
|
-
readonly usage: readonly ["runpane workspace state [--repo <selector>] [--json]"];
|
|
159
|
+
readonly usage: readonly ["runpane workspace state [--repo <selector>] [--json] [--pane-dir <path>]"];
|
|
160
160
|
readonly toolsets: readonly ["core", "agents"];
|
|
161
161
|
readonly jsonSchemas: readonly ["workspaceStateResult"];
|
|
162
162
|
}, {
|
|
163
163
|
readonly name: "watch";
|
|
164
164
|
readonly summary: "Wait for workspace agent and Pane transitions using a daemon-held cursor.";
|
|
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]"];
|
|
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>|--session <id|name>] [--include-shells] [--self-test] [--quiet] [--kinds <kind,...>] [--repo <selector>] [--name-contains <text>] [--timeout-ms <ms>] [--from <now|earliest>] [--json] [--pane-dir <path>]"];
|
|
166
166
|
readonly toolsets: readonly ["agents"];
|
|
167
167
|
readonly jsonSchemas: readonly ["workspaceWaitRequest", "workspaceWaitResult"];
|
|
168
168
|
}, {
|
|
169
169
|
readonly name: "panes create";
|
|
170
170
|
readonly summary: "Create user-visible Panes (Pane sessions) backed by Pane-managed worktrees for feature/PR work and open terminal-backed tool tabs.";
|
|
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]"];
|
|
171
|
+
readonly usage: readonly ["runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options] [--pane-dir <path>]", "runpane panes create --repo <selector> --name <name> --tool-command <command> [--agent <codex|claude|cursor>] [--source user|agent] [--focus|--no-focus] [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options] [--pane-dir <path>]", "runpane panes create --from-json <path|-> [--yes] [--json] [--pane-dir <path>]"];
|
|
172
172
|
readonly mutates: true;
|
|
173
173
|
readonly additive: true;
|
|
174
174
|
readonly toolsets: readonly ["panes"];
|
|
@@ -176,22 +176,22 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
176
176
|
}, {
|
|
177
177
|
readonly name: "panes adopt";
|
|
178
178
|
readonly summary: "Adopt an existing externally managed git worktree as a Pane without changing the worktree.";
|
|
179
|
-
readonly usage: readonly ["runpane panes adopt --repo <selector> --path <dir> --name <name> --agent <codex|claude|cursor> [--resume <id>] [--folder <name>] [--launch] [--no-pinned] [--no-associate] [--dry-run] [--yes] [--json]"];
|
|
179
|
+
readonly usage: readonly ["runpane panes adopt --repo <selector> --path <dir> --name <name> --agent <codex|claude|cursor> [--resume <id>] [--folder <name>] [--launch [--prompt <text>|--prompt-file <path|->] [--wait-ready] [--ready-timeout-ms <ms>]] [--no-pinned] [--no-associate] [--dry-run] [--yes] [--json] [--pane-dir <path>]", "runpane panes adopt --repo <selector> --path <dir> --name <name> --tool-command <command> [--agent <codex|claude|cursor>] [--folder <name>] [--launch [--prompt <text>|--prompt-file <path|->] [--wait-ready] [--ready-timeout-ms <ms>]] [--no-pinned] [--no-associate] [--dry-run] [--yes] [--json] [--pane-dir <path>]"];
|
|
180
180
|
readonly mutates: true;
|
|
181
181
|
readonly additive: true;
|
|
182
182
|
readonly toolsets: readonly ["panes"];
|
|
183
183
|
readonly jsonSchemas: readonly ["paneCreateResult"];
|
|
184
184
|
}, {
|
|
185
185
|
readonly name: "panes archive";
|
|
186
|
-
readonly summary: "Archive a Pane (session) exactly like the UI Archive action, including safe removal of its Pane-managed git worktree.";
|
|
187
|
-
readonly usage: readonly ["runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes [--json]"];
|
|
186
|
+
readonly summary: "Archive a Pane (session) exactly like the UI Archive action, including safe removal of its Pane-managed git worktree, or archive every merged Pane in a Session.";
|
|
187
|
+
readonly usage: readonly ["runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--remove-worktree] [--dry-run] --yes [--json] [--pane-dir <path>]", "runpane panes archive --session <id|name> --merged [--remove-worktree] [--source user|agent] [--dry-run] --yes [--json] [--pane-dir <path>]"];
|
|
188
188
|
readonly mutates: true;
|
|
189
189
|
readonly toolsets: readonly ["core", "panes"];
|
|
190
|
-
readonly jsonSchemas: readonly ["paneArchiveRequest", "paneArchiveResult"];
|
|
190
|
+
readonly jsonSchemas: readonly ["paneArchiveRequest", "paneArchiveBulkRequest", "paneArchiveResult", "paneArchiveBulkResult"];
|
|
191
191
|
}, {
|
|
192
192
|
readonly name: "panes pin";
|
|
193
193
|
readonly summary: "Declaratively pin a Pane; pinned is the Pane UI's favorite/pin star and repeated requests are idempotent.";
|
|
194
|
-
readonly usage: readonly ["runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]"];
|
|
194
|
+
readonly usage: readonly ["runpane panes pin --pane <pane-id> --yes [--dry-run] [--json] [--pane-dir <path>]"];
|
|
195
195
|
readonly mutates: true;
|
|
196
196
|
readonly idempotent: true;
|
|
197
197
|
readonly toolsets: readonly ["panes"];
|
|
@@ -199,7 +199,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
199
199
|
}, {
|
|
200
200
|
readonly name: "panes unpin";
|
|
201
201
|
readonly summary: "Declaratively unpin a Pane; pinned is the Pane UI's favorite/pin star and repeated requests are idempotent.";
|
|
202
|
-
readonly usage: readonly ["runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]"];
|
|
202
|
+
readonly usage: readonly ["runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json] [--pane-dir <path>]"];
|
|
203
203
|
readonly mutates: true;
|
|
204
204
|
readonly idempotent: true;
|
|
205
205
|
readonly toolsets: readonly ["panes"];
|
|
@@ -207,7 +207,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
207
207
|
}, {
|
|
208
208
|
readonly name: "panes rename";
|
|
209
209
|
readonly summary: "Rename a Pane without changing its worktree, branch, panels, or focus.";
|
|
210
|
-
readonly usage: readonly ["runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]"];
|
|
210
|
+
readonly usage: readonly ["runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json] [--pane-dir <path>]"];
|
|
211
211
|
readonly mutates: true;
|
|
212
212
|
readonly idempotent: true;
|
|
213
213
|
readonly toolsets: readonly ["panes"];
|
|
@@ -215,7 +215,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
215
215
|
}, {
|
|
216
216
|
readonly name: "panes focus";
|
|
217
217
|
readonly summary: "Raise the Pane window and select a Pane (and optionally one of its panels) on explicit user request.";
|
|
218
|
-
readonly usage: readonly ["runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json]"];
|
|
218
|
+
readonly usage: readonly ["runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json] [--pane-dir <path>]"];
|
|
219
219
|
readonly mutates: true;
|
|
220
220
|
readonly additive: true;
|
|
221
221
|
readonly idempotent: true;
|
|
@@ -224,7 +224,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
224
224
|
}, {
|
|
225
225
|
readonly name: "panels create";
|
|
226
226
|
readonly summary: "Create a terminal-backed tool panel inside an existing Pane session.";
|
|
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]"];
|
|
227
|
+
readonly usage: readonly ["runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--wait-ready] --yes [--json] [--pane-dir <path>]", "runpane panels create --pane <pane-id> --tool-command <command> [--agent <codex|claude|cursor>] [--title <title>] [--focus|--no-focus] [--wait-ready] --yes [--json] [--pane-dir <path>]"];
|
|
228
228
|
readonly mutates: true;
|
|
229
229
|
readonly additive: true;
|
|
230
230
|
readonly toolsets: readonly ["panels"];
|
|
@@ -232,48 +232,54 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
232
232
|
}, {
|
|
233
233
|
readonly name: "panels list";
|
|
234
234
|
readonly summary: "List tool panels inside a Pane session.";
|
|
235
|
-
readonly usage: readonly ["runpane panels list --pane <pane-id> [--json]"];
|
|
235
|
+
readonly usage: readonly ["runpane panels list --pane <pane-id> [--json] [--pane-dir <path>]"];
|
|
236
236
|
readonly toolsets: readonly ["panels"];
|
|
237
237
|
readonly jsonSchemas: readonly ["panelListResult"];
|
|
238
238
|
}, {
|
|
239
239
|
readonly name: "panels output";
|
|
240
240
|
readonly summary: "Read recent terminal output from a panel.";
|
|
241
|
-
readonly usage: readonly ["runpane panels output --panel <panel-id> [--limit <count>] [--json]"];
|
|
241
|
+
readonly usage: readonly ["runpane panels output --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]"];
|
|
242
242
|
readonly toolsets: readonly ["panels"];
|
|
243
243
|
readonly jsonSchemas: readonly ["panelOutputResult"];
|
|
244
244
|
}, {
|
|
245
245
|
readonly name: "panels screen";
|
|
246
246
|
readonly summary: "Read a compact current-screen view from a terminal panel.";
|
|
247
|
-
readonly usage: readonly ["runpane panels screen --panel <panel-id> [--limit <count>] [--json]"];
|
|
247
|
+
readonly usage: readonly ["runpane panels screen --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]"];
|
|
248
248
|
readonly toolsets: readonly ["panels"];
|
|
249
249
|
readonly jsonSchemas: readonly ["panelScreenResult"];
|
|
250
250
|
}, {
|
|
251
251
|
readonly name: "panels input";
|
|
252
252
|
readonly summary: "Send input bytes to a terminal panel.";
|
|
253
|
-
readonly usage: readonly ["runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--input-file <path|->) --yes [--json]"];
|
|
253
|
+
readonly usage: readonly ["runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--input-file <path|->) --yes [--json] [--pane-dir <path>]"];
|
|
254
254
|
readonly mutates: true;
|
|
255
255
|
readonly toolsets: readonly ["core", "panels"];
|
|
256
256
|
readonly jsonSchemas: readonly ["panelInputRequest", "panelInputResult"];
|
|
257
257
|
}, {
|
|
258
258
|
readonly name: "panels submit";
|
|
259
259
|
readonly summary: "Send and submit text to a terminal panel, including idle agent composers.";
|
|
260
|
-
readonly usage: readonly ["runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]"];
|
|
260
|
+
readonly usage: readonly ["runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) [--as-file-pointer] --yes [--json] [--pane-dir <path>]"];
|
|
261
261
|
readonly mutates: true;
|
|
262
262
|
readonly toolsets: readonly ["panels"];
|
|
263
263
|
readonly jsonSchemas: readonly ["panelSubmitRequest", "panelSubmitResult"];
|
|
264
264
|
}, {
|
|
265
265
|
readonly name: "panels submit-composer";
|
|
266
266
|
readonly summary: "Submit an agent composer using the panel-appropriate key sequence.";
|
|
267
|
-
readonly usage: readonly ["runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]"];
|
|
267
|
+
readonly usage: readonly ["runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter|tab] --yes [--json] [--pane-dir <path>]"];
|
|
268
268
|
readonly mutates: true;
|
|
269
269
|
readonly toolsets: readonly ["panels"];
|
|
270
270
|
readonly jsonSchemas: readonly ["panelSubmitComposerRequest", "panelSubmitComposerResult"];
|
|
271
271
|
}, {
|
|
272
272
|
readonly name: "panels wait";
|
|
273
273
|
readonly summary: "Wait for a terminal panel to initialize, become ready/idle, or contain text.";
|
|
274
|
-
readonly usage: readonly ["runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--contains <text>] [--timeout-ms <ms>] [--interval-ms <ms>] [--json]"];
|
|
274
|
+
readonly usage: readonly ["runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--contains <text>] [--timeout-ms <ms>] [--interval-ms <ms>] [--json] [--pane-dir <path>]"];
|
|
275
275
|
readonly toolsets: readonly ["panels"];
|
|
276
276
|
readonly jsonSchemas: readonly ["panelWaitResult"];
|
|
277
|
+
}, {
|
|
278
|
+
readonly name: "panels last-message";
|
|
279
|
+
readonly summary: "Read an agent's last reply from its transcript, without scraping the screen.";
|
|
280
|
+
readonly usage: readonly ["runpane panels last-message --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]"];
|
|
281
|
+
readonly toolsets: readonly ["panels", "agents"];
|
|
282
|
+
readonly jsonSchemas: readonly ["panelLastMessageResult"];
|
|
277
283
|
}, {
|
|
278
284
|
readonly name: "panes git-status";
|
|
279
285
|
readonly summary: "Read the git status of a Pane worktree: uncommitted, unpushed, and behind-main counts.";
|
|
@@ -514,11 +520,20 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
514
520
|
}, {
|
|
515
521
|
readonly name: "agents send";
|
|
516
522
|
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>]"];
|
|
523
|
+
readonly usage: readonly ["runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> [--as-file-pointer] --yes [--json] [--pane-dir <path>]"];
|
|
518
524
|
readonly mutates: true;
|
|
519
525
|
readonly wrappers: readonly ["npm"];
|
|
520
526
|
readonly toolsets: readonly ["core", "agents"];
|
|
521
527
|
readonly jsonSchemas: readonly ["agentSendResult"];
|
|
528
|
+
}, {
|
|
529
|
+
readonly name: "report";
|
|
530
|
+
readonly summary: "Hand back a worker's structured report: state, PR, head commit, summary, and the question when blocked.";
|
|
531
|
+
readonly usage: readonly ["runpane report --state <ready|blocked|failed|done> [--pr <number>] [--head <sha>] [--summary <text>|--summary-file <path|->] [--question <text>] [--pane <pane-id> --panel <panel-id>] [--json] [--pane-dir <path>]"];
|
|
532
|
+
readonly mutates: true;
|
|
533
|
+
readonly additive: true;
|
|
534
|
+
readonly idempotent: true;
|
|
535
|
+
readonly toolsets: readonly ["agents"];
|
|
536
|
+
readonly jsonSchemas: readonly ["reportResult"];
|
|
522
537
|
}, {
|
|
523
538
|
readonly name: "sessions list";
|
|
524
539
|
readonly summary: "List durable named orchestration Sessions.";
|
|
@@ -578,6 +593,29 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
578
593
|
readonly usage: readonly ["runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]"];
|
|
579
594
|
readonly toolsets: readonly ["sessions"];
|
|
580
595
|
readonly jsonSchemas: readonly ["sessionOverviewResult"];
|
|
596
|
+
}, {
|
|
597
|
+
readonly name: "lock acquire";
|
|
598
|
+
readonly summary: "Acquire a named lock on a resource shared between agents, such as one test account, optionally waiting for it.";
|
|
599
|
+
readonly usage: readonly ["runpane lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]"];
|
|
600
|
+
readonly mutates: true;
|
|
601
|
+
readonly additive: true;
|
|
602
|
+
readonly idempotent: true;
|
|
603
|
+
readonly toolsets: readonly ["sessions"];
|
|
604
|
+
readonly jsonSchemas: readonly ["lockAcquireRequest", "lockAcquireResult"];
|
|
605
|
+
}, {
|
|
606
|
+
readonly name: "lock release";
|
|
607
|
+
readonly summary: "Release a named lock you hold, or force-release another owner's lock.";
|
|
608
|
+
readonly usage: readonly ["runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]"];
|
|
609
|
+
readonly mutates: true;
|
|
610
|
+
readonly idempotent: true;
|
|
611
|
+
readonly toolsets: readonly ["sessions"];
|
|
612
|
+
readonly jsonSchemas: readonly ["lockReleaseResult"];
|
|
613
|
+
}, {
|
|
614
|
+
readonly name: "lock list";
|
|
615
|
+
readonly summary: "List held named locks, optionally only one Session's.";
|
|
616
|
+
readonly usage: readonly ["runpane lock list [--session <id|name>] [--json] [--pane-dir <path>]"];
|
|
617
|
+
readonly toolsets: readonly ["sessions"];
|
|
618
|
+
readonly jsonSchemas: readonly ["lockListResult"];
|
|
581
619
|
}];
|
|
582
620
|
readonly flags: {
|
|
583
621
|
readonly wrapper: readonly [{
|
|
@@ -666,15 +704,20 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
666
704
|
}, {
|
|
667
705
|
readonly name: "--name";
|
|
668
706
|
readonly value: "<name>";
|
|
669
|
-
readonly description: "Name for the registered repository
|
|
707
|
+
readonly description: "Name for the registered repository, created/renamed pane session, or named lock.";
|
|
670
708
|
}, {
|
|
671
709
|
readonly name: "--worktree-name";
|
|
672
710
|
readonly value: "<name>";
|
|
673
711
|
readonly description: "Worktree name to request. Defaults to --name.";
|
|
712
|
+
}, {
|
|
713
|
+
readonly name: "--branch";
|
|
714
|
+
readonly value: "<name>";
|
|
715
|
+
readonly description: "Exact new branch name for the created worktree, slashes included. Must not exist yet; defaults to the worktree name.";
|
|
674
716
|
}, {
|
|
675
717
|
readonly name: "--base-branch";
|
|
676
|
-
readonly value: "<
|
|
677
|
-
readonly
|
|
718
|
+
readonly value: "<ref>";
|
|
719
|
+
readonly aliases: readonly ["--base"];
|
|
720
|
+
readonly description: "Ref the created worktree branches from. --base is an alias.";
|
|
678
721
|
}, {
|
|
679
722
|
readonly name: "--folder";
|
|
680
723
|
readonly value: "<name>";
|
|
@@ -686,7 +729,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
686
729
|
}, {
|
|
687
730
|
readonly name: "--agent";
|
|
688
731
|
readonly value: "<codex|claude|cursor>";
|
|
689
|
-
readonly description: "Built-in agent terminal template to open.";
|
|
732
|
+
readonly description: "Built-in agent terminal template to open. With --tool-command, the agent that command runs.";
|
|
690
733
|
}, {
|
|
691
734
|
readonly name: "--tool-command";
|
|
692
735
|
readonly value: "<command>";
|
|
@@ -703,7 +746,8 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
703
746
|
}, {
|
|
704
747
|
readonly name: "--initial-input-file";
|
|
705
748
|
readonly value: "<path|->";
|
|
706
|
-
readonly
|
|
749
|
+
readonly aliases: readonly ["--prompt-file"];
|
|
750
|
+
readonly description: "Read initial input from a file or stdin. --prompt-file is an alias.";
|
|
707
751
|
}, {
|
|
708
752
|
readonly name: "--from-json";
|
|
709
753
|
readonly value: "<path|->";
|
|
@@ -715,7 +759,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
715
759
|
}, {
|
|
716
760
|
readonly name: "--ready-timeout-ms";
|
|
717
761
|
readonly value: "<milliseconds>";
|
|
718
|
-
readonly description: "Readiness wait timeout for panes create --wait-ready.";
|
|
762
|
+
readonly description: "Readiness wait timeout for panes create/adopt --wait-ready.";
|
|
719
763
|
}, {
|
|
720
764
|
readonly name: "--concurrency";
|
|
721
765
|
readonly value: "<count>";
|
|
@@ -750,7 +794,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
750
794
|
readonly description: "Identify whether a local-control mutation is user-initiated or agent/orchestrator-initiated.";
|
|
751
795
|
}, {
|
|
752
796
|
readonly name: "--strategy";
|
|
753
|
-
readonly value: "<auto|codex-ctrl-enter|enter>";
|
|
797
|
+
readonly value: "<auto|codex-ctrl-enter|enter|tab>";
|
|
754
798
|
readonly description: "Composer submit key sequence strategy for panels submit-composer.";
|
|
755
799
|
}, {
|
|
756
800
|
readonly name: "--as";
|
|
@@ -799,7 +843,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
799
843
|
}, {
|
|
800
844
|
readonly name: "--min-interval";
|
|
801
845
|
readonly value: "<milliseconds>";
|
|
802
|
-
readonly description: "Follow-only opt-in: hold non-urgent lines and flush them together at most once per interval; BLOCKED
|
|
846
|
+
readonly description: "Follow-only opt-in: hold non-urgent lines and flush them together at most once per interval; BLOCKED, REPORT, PR CONFLICTED, and PR CHECKS FAILED bypass it.";
|
|
803
847
|
}, {
|
|
804
848
|
readonly name: "--body-file";
|
|
805
849
|
readonly value: "<path|->";
|
|
@@ -808,6 +852,18 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
808
852
|
readonly name: "--session";
|
|
809
853
|
readonly value: "<id|name>";
|
|
810
854
|
readonly description: "Named orchestration Session id or exact name.";
|
|
855
|
+
}, {
|
|
856
|
+
readonly name: "--ttl";
|
|
857
|
+
readonly value: "<duration>";
|
|
858
|
+
readonly description: "How long a named lock is held before it expires: a number with ms, s, m, or h (such as 30m); a bare number is milliseconds. At least 1s, at most 24h.";
|
|
859
|
+
}, {
|
|
860
|
+
readonly name: "--wait";
|
|
861
|
+
readonly value: "<milliseconds>";
|
|
862
|
+
readonly description: "How long lock acquire waits for a held lock to come free; 0 (the default) returns at once.";
|
|
863
|
+
}, {
|
|
864
|
+
readonly name: "--note";
|
|
865
|
+
readonly value: "<text>";
|
|
866
|
+
readonly description: "What a named lock is for. Outside a Pane terminal it also names the owner, so pass the same note to release it.";
|
|
811
867
|
}, {
|
|
812
868
|
readonly name: "--message";
|
|
813
869
|
readonly value: "<message>";
|
|
@@ -832,6 +888,30 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
832
888
|
readonly name: "--keys";
|
|
833
889
|
readonly value: "<name,...>";
|
|
834
890
|
readonly description: "Named keys for panels input, such as down,enter.";
|
|
891
|
+
}, {
|
|
892
|
+
readonly name: "--state";
|
|
893
|
+
readonly value: "<ready|blocked|failed|done>";
|
|
894
|
+
readonly description: "Report state for runpane report.";
|
|
895
|
+
}, {
|
|
896
|
+
readonly name: "--pr";
|
|
897
|
+
readonly value: "<number>";
|
|
898
|
+
readonly description: "Pull request number for runpane report.";
|
|
899
|
+
}, {
|
|
900
|
+
readonly name: "--head";
|
|
901
|
+
readonly value: "<sha>";
|
|
902
|
+
readonly description: "Head commit (7-40 hex characters) for runpane report.";
|
|
903
|
+
}, {
|
|
904
|
+
readonly name: "--summary";
|
|
905
|
+
readonly value: "<text>";
|
|
906
|
+
readonly description: "Report summary text; up to 16,000 characters are kept.";
|
|
907
|
+
}, {
|
|
908
|
+
readonly name: "--summary-file";
|
|
909
|
+
readonly value: "<path|->";
|
|
910
|
+
readonly description: "Read the report summary from a file or stdin.";
|
|
911
|
+
}, {
|
|
912
|
+
readonly name: "--question";
|
|
913
|
+
readonly value: "<text>";
|
|
914
|
+
readonly description: "What a blocked worker needs answered; required with --state blocked.";
|
|
835
915
|
}];
|
|
836
916
|
readonly localBoolean: readonly [{
|
|
837
917
|
readonly name: "--json";
|
|
@@ -856,10 +936,19 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
856
936
|
readonly description: "Inside a Session orchestrator, do not associate the created pane with that Session.";
|
|
857
937
|
}, {
|
|
858
938
|
readonly name: "--force";
|
|
859
|
-
readonly description: "Archive even if the pane's branch has uncommitted, untracked, or unpushed changes.";
|
|
939
|
+
readonly description: "Archive even if the pane's branch has uncommitted, untracked, or unpushed changes; for lock release, release another owner's lock.";
|
|
940
|
+
}, {
|
|
941
|
+
readonly name: "--remove-worktree";
|
|
942
|
+
readonly description: "Also check and remove an adopted Pane's worktree when archiving it. The local branch is kept.";
|
|
943
|
+
}, {
|
|
944
|
+
readonly name: "--merged";
|
|
945
|
+
readonly description: "With panes archive --session, archive only Panes that are clean and pushed, or merged via a pull request.";
|
|
860
946
|
}, {
|
|
861
947
|
readonly name: "--launch";
|
|
862
948
|
readonly description: "Run an adopted pane's agent resume command immediately instead of staging it.";
|
|
949
|
+
}, {
|
|
950
|
+
readonly name: "--as-file-pointer";
|
|
951
|
+
readonly description: "Write the prompt or text to a private file under the Pane directory and send the one line `Read and follow <path>` instead.";
|
|
863
952
|
}, {
|
|
864
953
|
readonly name: "--follow";
|
|
865
954
|
readonly description: "Continue waiting for workspace events until interrupted.";
|
|
@@ -874,16 +963,20 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
874
963
|
readonly description: "Limit workspace events to CLI agent panels.";
|
|
875
964
|
}, {
|
|
876
965
|
readonly name: "--all-managed";
|
|
877
|
-
readonly description: "Watch
|
|
966
|
+
readonly description: "Watch every non-archived, non-hidden managed pane. This is the default scope; the flag states it explicitly and cannot be combined with --pane.";
|
|
878
967
|
}, {
|
|
879
968
|
readonly name: "--include-shells";
|
|
880
969
|
readonly description: "Include ordinary shell panels in follow mode.";
|
|
881
970
|
}, {
|
|
882
971
|
readonly name: "--no-held-input";
|
|
883
|
-
readonly description: "Disable redacted
|
|
972
|
+
readonly description: "Disable redacted held-input detection under --follow (STUCK lines, and heldInputPresent in JSON).";
|
|
884
973
|
}, {
|
|
885
974
|
readonly name: "--self-test";
|
|
886
975
|
readonly description: "Probe the current daemon watch path without advancing a named cursor.";
|
|
976
|
+
}, {
|
|
977
|
+
readonly name: "--quiet";
|
|
978
|
+
readonly aliases: readonly ["--no-control-lines"];
|
|
979
|
+
readonly description: "Watch only: drop the WATCH OK, HEARTBEAT, and WATCH RECONNECTED control lines (_ok, _heartbeat, _reconnected in JSON). Errors, resets, and dropped counts always print.";
|
|
887
980
|
}, {
|
|
888
981
|
readonly name: "--idle-backoff";
|
|
889
982
|
readonly description: "Follow-only opt-in: IDLE fires at --idle-after, then 30m, 1h, 3h, then daily per panel; any activity resets it.";
|
|
@@ -897,40 +990,40 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
897
990
|
};
|
|
898
991
|
readonly help: {
|
|
899
992
|
readonly npm: {
|
|
900
|
-
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."];
|
|
993
|
+
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 lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", " runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", " runpane lock list [--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> [--base-branch <branch>] [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--remove-worktree] [--dry-run] --yes", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--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|tab] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane panels last-message --panel <panel-id> [--limit <count>] [--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 report --state <ready|blocked|failed|done> [--pr <number>] [--head <sha>] [--summary-file <path|->] [--question <text>] [--json]", " 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."];
|
|
901
994
|
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>"];
|
|
902
995
|
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"];
|
|
903
996
|
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"];
|
|
904
|
-
readonly version: readonly ["Usage:", " runpane version", " runpane --version"];
|
|
997
|
+
readonly version: readonly ["Usage:", " runpane version [--pane-dir <path>]", " runpane --version"];
|
|
905
998
|
readonly doctor: readonly ["Usage:", " runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", " runpane doctor --report [--title <text>] --body-file <path|-> [--yes] [--json]", "", "Checks wrapper/runtime details, release metadata, installed Pane detection, and Pane daemon reachability.", "", "Options:", " --json Print a machine-readable environment report", " --pane-dir <path> Connect to a specific Pane data directory", " --pane-path <path> Inspect a specific Pane executable", " --format <format> Release artifact format to inspect", " --verbose Print extra diagnostics", " --report Prepare a redacted, inspectable report", " --body-file <path|-> Read report evidence from a file or stdin", " --title <text> Report title", " --yes Confirm creating one greenfield-inc/Pane issue", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json"];
|
|
906
999
|
readonly "daemon repair": readonly ["Usage:", " runpane daemon repair [--pane-dir <path>] [--pane-path <path>] [--yes] [--json]", "", "Repairs and restarts only the managed remote-daemon launcher and service definition.", "", "Options:", " --pane-dir <path> Remote daemon data directory (default: ~/.pane_remote)", " --pane-path <path> Existing Pane executable used to perform repair", " --yes Skip the restart confirmation", " --json Print one machine-readable repair result"];
|
|
907
1000
|
readonly "repos list": readonly ["Usage:", " runpane repos list [--json] [--pane-dir <path>]", "", "Lists repositories saved in the running Pane app.", "", "Options:", " --json Print machine-readable output", " --pane-dir <path> Connect to a specific Pane data directory"];
|
|
908
1001
|
readonly "repos add": readonly ["Usage:", " runpane repos add --path <path> [--name <name>] [--json] [--yes]", "", "Registers an existing git repository with the running Pane app.", "", "Options:", " --path <path> Existing git repository path", " --name <name> Saved repository name; defaults to the directory name", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without adding the repo", " --yes Skip confirmation for mutating commands"];
|
|
909
|
-
readonly panes: readonly ["Pane session commands.", "", "Usage:", " runpane panes <command> [options]", "", "Commands:", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes archive --pane <pane-id> [--force] [--source user|agent] [--dry-run] --yes [--json]", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Run \"runpane help panes <command>\" for command-specific options."];
|
|
910
|
-
readonly "panes list": readonly ["Usage:", " runpane panes list [--repo <selector>] [--json]", "", "Lists Pane sessions. Pass --repo to limit results to one saved repository.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
1002
|
+
readonly panes: readonly ["Pane session commands.", "", "Usage:", " runpane panes <command> [options]", "", "Commands:", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes archive --pane <pane-id> [--force] [--remove-worktree] [--source user|agent] [--dry-run] --yes [--json]", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--dry-run] --yes [--json]", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Run \"runpane help panes <command>\" for command-specific options."];
|
|
1003
|
+
readonly "panes list": readonly ["Usage:", " runpane panes list [--repo <selector>] [--json]", "", "Lists Pane sessions. Pass --repo to limit results to one saved repository.", "", "status is running while any terminal panel is live. agentState is the most urgent state of the live agent panels: blocked, working, ready, or none.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
911
1004
|
readonly "panes cost": readonly ["Usage:", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", "", "Reports estimated token costs per Pane for the last 30 days, including per-model and cache-efficiency details.", "", "Options:", " --repo <selector> Limit results to one saved repository", " --pane <pane-id> Return one Pane, including an idle Pane with zero usage", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
912
1005
|
readonly workspace: readonly ["Workspace observation commands.", "", "Usage:", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow"];
|
|
913
1006
|
readonly "workspace state": readonly ["Usage:", " runpane workspace state [--repo <selector>] [--json]", "", "Returns one workspace snapshot of every Pane and CLI panel."];
|
|
914
|
-
readonly watch: readonly ["Usage:", " runpane watch [--as <name>|--since <generation>] [--follow] [options]", "", "Waits for agent state, Pane lifecycle, and panel exit transitions without polling.", "", "Options:", " --as <name> Use a persisted daemon-held cursor", " --since <generation> Use an explicit cursor instead", " --from <now|earliest> Starting point for a new named cursor", " --follow Continue waiting until interrupted", " --format <lines|json> Output format; lines is the follow default", " --heartbeat <seconds> Healthy-silence bound; defaults to 60 under --follow", " --idle-after <ms> Re-firing READY idle interval; defaults to 600000 under --follow", " --settle <ms> Opt-in: emit READY only after this quiet window (--follow only)", " --blocked-settle <ms> Opt-in: emit BLOCKED only after this window (--follow only)", " --min-interval <ms> Opt-in: batch non-urgent lines per interval; BLOCKED
|
|
915
|
-
readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates user-visible Panes (Pane sessions) for feature/PR work in a saved repository and opens a terminal-backed tool tab. Pane creates and owns the worktree/branch for each new Pane.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --name <name> Pane/session name", " --worktree-name <name> Worktree name; defaults to --name", " --
|
|
916
|
-
readonly "panes adopt": readonly ["Usage:", " runpane panes adopt --repo <selector> --path <dir> --name <name> --agent <codex|claude|cursor> [options]", "", "Adopts an existing externally managed git worktree without creating, syncing, or deleting it.", "", "Options: --resume <id> stages the agent resume command; --launch runs
|
|
917
|
-
readonly "panes archive": readonly ["Usage:", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes [--json]", "", "Archives a Pane (session) exactly like the UI Archive action, including removal of its Pane-managed git worktree. Refreshes the configured upstream before checking for unpushed commits and reports exact commit evidence. Refuses unsafe archives unless --force is passed. Use --dry-run to print the evidence without mutating Pane state.", "", "Options:", " --pane <pane-id> Pane/session id to archive", " --source <user|agent> Mark mutation source", " --force Archive even if the pane has uncommitted, untracked, or unpushed changes", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Refresh and print archive safety evidence without archiving", " --yes Skip confirmation for mutating commands"];
|
|
1007
|
+
readonly watch: readonly ["Usage:", " runpane watch [--as <name>|--since <generation>] [--follow] [options]", "", "Waits for agent state, Pane lifecycle, and panel exit transitions without polling.", "", "Options:", " --as <name> Use a persisted daemon-held cursor", " --since <generation> Use an explicit cursor instead", " --from <now|earliest> Starting point for a new named cursor", " --follow Continue waiting until interrupted", " --format <lines|json> Output format; lines is the follow default", " --heartbeat <seconds> Healthy-silence bound; defaults to 60 under --follow", " --idle-after <ms> Re-firing READY idle interval; defaults to 600000 under --follow", " --settle <ms> Opt-in: emit READY only after this quiet window (--follow only)", " --blocked-settle <ms> Opt-in: emit BLOCKED only after this window (--follow only)", " --min-interval <ms> Opt-in: batch non-urgent lines per interval; BLOCKED, REPORT, and PR failures bypass (--follow only)", " --idle-backoff Opt-in: IDLE at --idle-after, 30m, 1h, 3h, then daily (--follow only)", " --all-managed Explicitly watch all managed panes", " --include-shells Include ordinary shell panels", " --agents-only Limit to CLI agent panels", " --exclude-pane <id> Exclude a Pane; repeatable", " --self-test Anonymous, read-only daemon path probe", " --quiet Drop WATCH OK, HEARTBEAT, and WATCH RECONNECTED lines", " --no-control-lines Alias for --quiet", " --kinds <kind,...> Limit event kinds", " --pane <id> Limit to a Pane; repeatable", " --session <id|name> Follow every Pane in a named Session; associate/detach apply live", " --repo <selector> Limit to a saved repository", " --name-contains <text> Limit by Pane name substring", " --timeout-ms <ms> Wait timeout; 0 polls once", " --limit <count> Maximum entries per response", " --ack-now Use at-most-once named-cursor delivery", " --include-held-input Include unsubmitted composer text in JSON", " --no-held-input Disable redacted STUCK detection", " --pane-dir <path> Connect to a specific Pane data directory", " --json Alias for --format json", "", "Defaults are responsive: no settle, no batching, all kinds, IDLE every --idle-after. BUSY carries no action; drop it with --kinds.", "agent.report (a worker ran `runpane report`) is opt-in: list it in --kinds. REPORT lines skip the --min-interval batch.", "Unattended (Pane Chat default): --quiet --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "User present: the same kinds with --settle 60000 --blocked-settle 15000 --min-interval 120000 and no --idle-backoff", "Session orchestrator: runpane watch --session <id|name> --follow --quiet --json --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone,pane.associated,pane.detached,pr.conflicted,pr.checks,pr.merged --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "Pane Chat arms those flags itself through its skill; pass them only for your own scripts.", "STUCK means real unsubmitted composer text; an agent prompt suggestion never counts.", "Dead watch: HEARTBEAT is proof of life only (--quiet drops it). Judge death by a non-zero exit or a WATCH ERROR line, not by silence."];
|
|
1008
|
+
readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options]", " runpane panes create --repo <selector> --name <name> --tool-command <command> [--agent <codex|claude|cursor>] [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates user-visible Panes (Pane sessions) for feature/PR work in a saved repository and opens a terminal-backed tool tab. Pane creates and owns the worktree/branch for each new Pane.", "", "A long or multi-line prompt is never typed into the shell: on bash, zsh or sh the agent launches with `\"$(cat '<prompt file>')\"` reading a private copy under `<pane-dir>/prompts/<pane-id>/`; on PowerShell, cmd, fish or WSL the prompt is pasted into the agent's composer once it is ready.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --name <name> Pane/session name", " --worktree-name <name> Worktree directory name; defaults to --name", " --branch <name> Exact new branch name (slashes kept); must not exist; defaults to the worktree name", " --base-branch <ref> Ref to branch from; --base is an alias", " --agent <codex|claude|cursor> Built-in terminal template; with --tool-command, the agent it runs", " --tool-command <command> Custom terminal command", " --title <title> Terminal tab title", " --initial-input <text> Text sent after the command is ready", " --prompt <text> Alias for --initial-input", " --initial-input-file <path|-> Read initial input from a file or stdin", " --as-file-pointer Send `Read and follow <prompt file>` instead of the prompt", " --prompt-file <path|-> Alias for --initial-input-file", " --from-json <path|-> Read a full request payload", " --timeout-ms <milliseconds> Pane creation timeout", " --wait-ready Wait for terminal readiness before returning", " --ready-timeout-ms <ms> Readiness wait timeout; defaults to 30000", " --concurrency <count> Accepted; creation is currently serialized", " --source <user|agent> Mark mutation source; agent implies background creation", " --no-focus Create in the background without stealing focus", " --focus Explicitly focus the created pane", " --pinned Accepted for compatibility; creation already pins by default", " --no-pinned Create unpinned instead of the default pinned (the UI's favorite/pin star)", " --no-associate Inside a Session orchestrator, do not associate the new pane with that Session", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without creating panes", " --yes Skip confirmation for mutating commands"];
|
|
1009
|
+
readonly "panes adopt": readonly ["Usage:", " runpane panes adopt --repo <selector> --path <dir> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes adopt --repo <selector> --path <dir> --name <name> --tool-command <command> [--agent <codex|claude|cursor>] [options]", "", "Adopts an existing externally managed git worktree without creating, syncing, or deleting it. Archiving only removes its worktree with `panes archive --remove-worktree`. To start new work on a named branch, use `panes create --base <ref> --branch <name>` instead of `git worktree add` plus adopt.", "", "Options: --resume <id> stages the agent resume command (built-in agents only); --launch runs the command immediately; --prompt <text> or --prompt-file <path|-> and --wait-ready require --launch; --folder <name> groups the pane; --no-pinned opts out of pinning; --no-associate skips automatic Session association; --dry-run previews.", "", "With --tool-command, --agent names the agent the command runs (a wrapper such as `agent-farm run`): Pane launches the command unchanged and treats the panel as that agent. Without --agent, Pane detects Claude Code, Codex and Cursor from the foreground process or the agent's screen."];
|
|
1010
|
+
readonly "panes archive": readonly ["Usage:", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--remove-worktree] [--dry-run] --yes [--json]", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--source user|agent] [--dry-run] --yes [--json]", "", "Archives a Pane (session) exactly like the UI Archive action, including removal of its Pane-managed git worktree. Refreshes the configured upstream before checking for unpushed commits and reports exact commit evidence. When the branch has no upstream or its upstream is gone, a merged GitHub pull request whose head is HEAD (found with `gh`) counts as pushed. Refuses unsafe archives unless --force is passed. An adopted worktree is kept unless --remove-worktree is passed, which applies the same safety check and removal. The local branch is always kept. With --session and --merged, archives every Pane associated with the Session whose work is clean and pushed or merged, and reports a reason for each Pane it skips. Use --dry-run to print the evidence without mutating Pane state.", "", "Options:", " --pane <pane-id> Pane/session id to archive", " --source <user|agent> Mark mutation source", " --force Archive even if the pane has uncommitted, untracked, or unpushed changes", " --remove-worktree Also check and remove an adopted Pane's worktree (the branch is kept)", " --session <id|name> Archive the Panes associated with this Session (requires --merged)", " --merged Only archive Panes that are clean and pushed, or merged via a PR", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Refresh and print archive safety evidence without archiving", " --yes Skip confirmation for mutating commands"];
|
|
918
1011
|
readonly "panes pin": readonly ["Usage:", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", "", "Declaratively pins a Pane using the Pane UI's favorite/pin star. Repeating the command is idempotent and never changes focus. Use --dry-run to validate and preview without mutating.", "", "Options:", " --pane <pane-id> Pane/session id to pin", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without pinning the pane", " --yes Skip confirmation for mutating commands"];
|
|
919
1012
|
readonly "panes unpin": readonly ["Usage:", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", "", "Declaratively unpins a Pane using the Pane UI's favorite/pin star. Repeating the command is idempotent and never changes focus. Use --dry-run to validate and preview without mutating.", "", "Options:", " --pane <pane-id> Pane/session id to unpin", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without unpinning the pane", " --yes Skip confirmation for mutating commands"];
|
|
920
1013
|
readonly "panes rename": readonly ["Usage:", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Renames a Pane without changing its worktree, branch, panels, or focus. The name is trimmed like the Pane UI. Use --dry-run to validate and preview the updated pane without mutating.", "", "Options:", " --pane <pane-id> Pane/session id to rename", " --name <new-name> New non-empty Pane/session name", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without renaming the pane", " --yes Skip confirmation for mutating commands"];
|
|
921
1014
|
readonly "panes focus": readonly ["Usage:", " runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json]", "", "Raises the Pane window and selects a Pane (and optionally one of its panels) exactly like clicking it in the UI. Steals window focus, so run it only on an explicit user request to open, focus, or show a Pane, never proactively.", "", "Options:", " --pane <pane-id> Pane/session id to focus", " --panel <panel-id> Optional panel/tab id inside the Pane to select", " --source <user|agent> Mutation source; does not change focus behavior", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for mutating commands"];
|
|
922
|
-
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."];
|
|
923
|
-
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"];
|
|
1015
|
+
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|tab] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane panels last-message --panel <panel-id> [--limit <count>] [--json]", "", "Run \"runpane help panels create\" or another command-specific topic for options."];
|
|
1016
|
+
readonly "panels list": readonly ["Usage:", " runpane panels list --pane <pane-id> [--json]", "", "Lists tool panels in a Pane session.", "", "agentDetection says how Pane knows agentType: declared, command, process, or screen. launchCommand is the command the panel was launched with.", "", "Options:", " --pane <pane-id> Pane/session id", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
924
1017
|
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"];
|
|
925
1018
|
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"];
|
|
926
|
-
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"];
|
|
1019
|
+
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", " --pane-dir <path> Accepted and ignored; agent-context never contacts Pane", "", "Examples:", " runpane agent-context", " runpane agent-context --json", " runpane agent-context --command \"panes create\"", " runpane agent-context --command \"panes create\" --json"];
|
|
927
1020
|
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, Codex, and Cursor 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"];
|
|
928
1021
|
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"];
|
|
929
1022
|
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"];
|
|
930
|
-
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"];
|
|
1023
|
+
readonly "panels submit": readonly ["Usage:", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) [--as-file-pointer] --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.", "", "For a Claude or Codex panel with no composer on screen, nothing is sent: the result is ok: false with blocked.kind composer-unknown.", "", "Multi-line or long (over 512 characters) text reaches a Claude or Codex composer as one bracketed paste: CRLF becomes LF, and the submit key goes as its own write once the paste has settled, even while the agent is working.", "", "For Claude, text starting with `!`, `#`, `/` or `@` is sent unchanged and the result carries a `warnings` entry (for example `leading-bang-runs-shell`), because Claude Code gives those characters a meaning of its own.", "", "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", " --as-file-pointer Write the text to a prompt file and submit `Read and follow <path>`", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for this mutating command"];
|
|
931
1024
|
readonly "panels wait": readonly ["Usage:", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--contains <text>] [--timeout-ms <ms>] [--interval-ms <ms>] [--json]", "", "Polls a terminal panel until it is initialized, ready, idle, or contains text. Output is intentionally small and includes next-step guidance.", "", "Options:", " --panel <panel-id> Terminal panel id", " --for <condition> initialized, ready, idle, or text; defaults to ready for CLI panels and idle otherwise", " --contains <text> Text required for --for text; implies --for text when omitted", " --timeout-ms <milliseconds> Wait timeout; defaults to 30000", " --interval-ms <milliseconds> Poll interval; defaults to 500", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
932
|
-
readonly "panels create": readonly ["Create a terminal-backed tool panel inside an existing Pane session.", "", "Usage:", " runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--title <title>] [--initial-input <text>] [--no-focus] [--wait-ready] --yes [--json]", " runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--no-focus] --yes [--json]", "", "Options:", " --pane <pane-id> Existing Pane session to add the panel to.", " --agent <codex|claude|cursor>
|
|
933
|
-
readonly "panels submit-composer": readonly ["Submit an agent composer using the panel-appropriate key sequence.", "", "Usage:", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", "", "Options:", " --panel <panel-id> Terminal panel id.", " --strategy <strategy> Defaults to auto; Codex
|
|
1025
|
+
readonly "panels create": readonly ["Create a terminal-backed tool panel inside an existing Pane session.", "", "Usage:", " runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--title <title>] [--initial-input <text>] [--no-focus] [--wait-ready] --yes [--json]", " runpane panels create --pane <pane-id> --tool-command <command> [--agent <codex|claude|cursor>] [--title <title>] [--no-focus] [--wait-ready] --yes [--json]", "", "Options:", " --pane <pane-id> Existing Pane session to add the panel to.", " --agent <codex|claude|cursor> Built-in agent command template, or with --tool-command the agent it runs.", " --tool-command <command> Custom terminal command to launch.", " --title <title> Panel title override.", " --initial-input, --prompt Initial input to send after the tool starts.", " --initial-input-file <path|-> Read initial input from a file or stdin.", " --as-file-pointer Send `Read and follow <prompt file>` instead of the prompt.", " --no-focus Create the panel in the background.", " --focus Explicitly focus the created panel.", " --source <user|agent> Mark the mutation source; agent implies background creation.", " --wait-ready Wait until the terminal tool is ready.", " --ready-timeout-ms <ms> Readiness wait timeout.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
1026
|
+
readonly "panels submit-composer": readonly ["Submit an agent composer using the panel-appropriate key sequence.", "", "Usage:", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter|tab] --yes [--json]", "", "Options:", " --panel <panel-id> Terminal panel id.", " --strategy <strategy> Defaults to auto; Codex queues with Tab while working and submits with Enter when ready. auto retries once if the text is still in the composer.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
934
1027
|
readonly "sessions list": readonly ["Usage:", "runpane sessions list [--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."];
|
|
935
1028
|
readonly "sessions create": readonly ["Usage:", "runpane sessions create --from-json <path|-> [--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."];
|
|
936
1029
|
readonly "sessions get": readonly ["Usage:", "runpane sessions get --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."];
|
|
@@ -961,44 +1054,50 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
961
1054
|
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."];
|
|
962
1055
|
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."];
|
|
963
1056
|
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."];
|
|
964
|
-
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."];
|
|
1057
|
+
readonly "agents send": readonly ["Usage:", " runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> [--as-file-pointer] --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.", " --as-file-pointer Write the message to a prompt file and send `Read and follow <path>`.", " --yes Confirm this change; required in non-interactive shells.", " --json Print machine-readable output.", " --pane-dir <path> Connect to a specific Pane data directory."];
|
|
965
1058
|
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."];
|
|
1059
|
+
readonly report: readonly ["Usage:", " runpane report --state <ready|blocked|failed|done> [--pr <number>] [--head <sha>] [--summary <text>|--summary-file <path|->] [--question <text>] [--pane <pane-id> --panel <panel-id>] [--json] [--pane-dir <path>]", "", "Hands back a worker's structured report for its panel: the orchestrator receives it as an", "agent.report watch event and reads it in `agents status` and `sessions overview`.", "Inside a Pane terminal the panel comes from PANE_SESSION_ID and PANE_PANEL_ID.", "", "Options:", " --state <state> ready, blocked, failed, or done", " --pr <number> Pull request number", " --head <sha> Head commit, 7-40 hex characters", " --summary <text> Summary text; up to 16,000 characters are kept", " --summary-file <path|-> Read the summary from a file or stdin", " --question <text> What you need answered; required with --state blocked", " --pane <pane-id> Pane id when not running inside a Pane terminal", " --panel <panel-id> Panel id when not running inside a Pane terminal", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", "", "Example:", " runpane report --state ready --pr 747 --head fc5dce9 --summary-file /tmp/report.md"];
|
|
1060
|
+
readonly "panels last-message": readonly ["Usage:", " runpane panels last-message --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]", "", "Reads a Claude or Codex agent's last reply from its transcript. It never scrapes the screen:", "without a transcript it reports transcript-unavailable and exits non-zero.", "", "Options:", " --panel <panel-id> Agent panel id", " --limit <count> Maximum characters to return; defaults to 20000 (the end is kept)", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
1061
|
+
readonly lock: readonly ["Usage:", " runpane lock <acquire|release|list> [options]", "", "Named locks coordinate a resource shared between agents, such as one test account.", "The caller is the owner: the Pane and panel from $PANE_SESSION_ID and $PANE_PANEL_ID.", "A lock is scoped to the owner's Session when its Pane belongs to one; otherwise it is global.", "It is released on --ttl expiry, when the owner panel exits, or when the owner Pane is archived."];
|
|
1062
|
+
readonly "lock acquire": readonly ["Usage:", "runpane lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1063
|
+
readonly "lock release": readonly ["Usage:", "runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1064
|
+
readonly "lock list": readonly ["Usage:", "runpane lock list [--session <id|name>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
966
1065
|
};
|
|
967
1066
|
readonly pip: {
|
|
968
|
-
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."];
|
|
1067
|
+
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> [--base-branch <branch>] [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--remove-worktree] [--dry-run] --yes", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--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|tab] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane panels last-message --panel <panel-id> [--limit <count>] [--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 report --state <ready|blocked|failed|done> [--pr <number>] [--head <sha>] [--summary-file <path|->] [--question <text>] [--json]", " 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 lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", " runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", " runpane lock list [--session <id|name>] [--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."];
|
|
969
1068
|
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>"];
|
|
970
1069
|
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"];
|
|
971
1070
|
readonly update: readonly ["Usage:", " runpane update [--version <latest|vX.Y.Z>] [--dry-run] [--yes]"];
|
|
972
|
-
readonly version: readonly ["Usage:", " runpane version", " runpane --version"];
|
|
1071
|
+
readonly version: readonly ["Usage:", " runpane version [--pane-dir <path>]", " runpane --version"];
|
|
973
1072
|
readonly doctor: readonly ["Usage:", " runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", " runpane doctor --report [--title <text>] --body-file <path|-> [--yes] [--json]", "", "Checks wrapper/runtime details, release metadata, installed Pane detection, and Pane daemon reachability.", "", "Options:", " --json", " --pane-dir <path>", " --pane-path <path>", " --format <format>", " --verbose", " --report", " --body-file <path|->", " --title <text>", " --yes", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json"];
|
|
974
1073
|
readonly "daemon repair": readonly ["Usage:", " runpane daemon repair [--pane-dir <path>] [--pane-path <path>] [--yes] [--json]", "", "Repairs and restarts only the managed remote-daemon launcher and service definition.", "", "Options:", " --pane-dir <path>", " --pane-path <path>", " --yes", " --json"];
|
|
975
1074
|
readonly "repos list": readonly ["Usage:", " runpane repos list [--json] [--pane-dir <path>]", "", "Lists repositories saved in the running Pane app.", "", "Options:", " --json", " --pane-dir <path>"];
|
|
976
1075
|
readonly "repos add": readonly ["Usage:", " runpane repos add --path <path> [--name <name>] [--json] [--yes]", "", "Registers an existing git repository with the running Pane app.", "", "Options:", " --path <path>", " --name <name>", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
|
|
977
|
-
readonly panes: readonly ["Pane session commands.", "", "Usage:", " runpane panes <command> [options]", "", "Commands:", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes archive --pane <pane-id> [--force] [--source user|agent] [--dry-run] --yes [--json]", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Run \"runpane help panes <command>\" for command-specific options."];
|
|
978
|
-
readonly "panes list": readonly ["Usage:", " runpane panes list [--repo <selector>] [--json]", "", "Lists Pane sessions. Pass --repo to limit results to one saved repository.", "", "Options:", " --repo <selector>", " --pane-dir <path>", " --json"];
|
|
1076
|
+
readonly panes: readonly ["Pane session commands.", "", "Usage:", " runpane panes <command> [options]", "", "Commands:", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes archive --pane <pane-id> [--force] [--remove-worktree] [--source user|agent] [--dry-run] --yes [--json]", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--dry-run] --yes [--json]", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Run \"runpane help panes <command>\" for command-specific options."];
|
|
1077
|
+
readonly "panes list": readonly ["Usage:", " runpane panes list [--repo <selector>] [--json]", "", "Lists Pane sessions. Pass --repo to limit results to one saved repository.", "", "status is running while any terminal panel is live. agentState is the most urgent state of the live agent panels: blocked, working, ready, or none.", "", "Options:", " --repo <selector>", " --pane-dir <path>", " --json"];
|
|
979
1078
|
readonly "panes cost": readonly ["Usage:", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", "", "Reports estimated token costs per Pane for the last 30 days, including per-model and cache-efficiency details.", "", "Options:", " --repo <selector>", " --pane <pane-id>", " --pane-dir <path>", " --json"];
|
|
980
1079
|
readonly workspace: readonly ["Workspace observation commands.", "", "Usage:", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow"];
|
|
981
1080
|
readonly "workspace state": readonly ["Usage:", " runpane workspace state [--repo <selector>] [--json]", "", "Returns one workspace snapshot of every Pane and CLI panel."];
|
|
982
|
-
readonly watch: readonly ["Usage:", " runpane watch [--as <name>|--since <generation>] [--follow] [options]", "", "Waits for workspace transitions without polling.", "", "Options:", " --as <name>", " --since <generation>", " --from <now|earliest>", " --follow", " --format <lines|json>", " --heartbeat <seconds>", " --idle-after <ms>", " --settle <ms> Opt-in READY quiet window (--follow only)", " --blocked-settle <ms> Opt-in BLOCKED window (--follow only)", " --min-interval <ms> Opt-in batching; BLOCKED
|
|
983
|
-
readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates user-visible Panes (Pane sessions) for feature/PR work in a saved repository and opens a terminal-backed tool tab. Pane creates and owns the worktree/branch for each new Pane.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --name <name> Pane/session name", " --worktree-name <name> Worktree name; defaults to --name", " --
|
|
984
|
-
readonly "panes adopt": readonly ["Usage:", " runpane panes adopt --repo <selector> --path <dir> --name <name> --agent <codex|claude|cursor> [options]", "", "Adopts an existing externally managed git worktree without creating, syncing, or deleting it.", "", "Options: --resume <id> stages the agent resume command; --launch runs
|
|
985
|
-
readonly "panes archive": readonly ["Usage:", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes [--json]", "", "Archives a Pane (session) exactly like the UI Archive action, including removal of its Pane-managed git worktree. Refreshes the configured upstream before checking for unpushed commits and reports exact commit evidence. Refuses unsafe archives unless --force is passed. Use --dry-run to print the evidence without mutating Pane state.", "", "Options:", " --pane <pane-id>", " --source <user|agent>", " --force", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
|
|
1081
|
+
readonly watch: readonly ["Usage:", " runpane watch [--as <name>|--since <generation>] [--follow] [options]", "", "Waits for workspace transitions without polling.", "", "Options:", " --as <name>", " --since <generation>", " --from <now|earliest>", " --follow", " --format <lines|json>", " --heartbeat <seconds>", " --idle-after <ms>", " --settle <ms> Opt-in READY quiet window (--follow only)", " --blocked-settle <ms> Opt-in BLOCKED window (--follow only)", " --min-interval <ms> Opt-in batching; BLOCKED, REPORT, and PR failures bypass (--follow only)", " --idle-backoff Opt-in IDLE backoff (--follow only)", " --all-managed", " --include-shells", " --agents-only", " --exclude-pane <id> Repeatable", " --self-test", " --quiet Drop OK, HEARTBEAT, and RECONNECTED lines", " --no-control-lines Alias for --quiet", " --kinds <kind,...>", " --pane <id> Repeatable", " --session <id|name> Follow a named Session's Panes; no re-arm", " --repo <selector>", " --name-contains <text>", " --timeout-ms <ms> 0 polls once", " --limit <count>", " --ack-now", " --include-held-input", " --no-held-input", " --pane-dir <path> Connect to a specific Pane data directory", " --json Alias for --format json", "", "Defaults are responsive: no settle, no batching, all kinds, IDLE every --idle-after. BUSY carries no action; drop it with --kinds.", "agent.report (a worker ran `runpane report`) is opt-in: list it in --kinds. REPORT lines skip the --min-interval batch.", "Unattended (Pane Chat default): --quiet --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "User present: the same kinds with --settle 60000 --blocked-settle 15000 --min-interval 120000 and no --idle-backoff", "Session orchestrator: runpane watch --session <id|name> --follow --quiet --json --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone,pane.associated,pane.detached,pr.conflicted,pr.checks,pr.merged --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "Pane Chat arms those flags itself through its skill; pass them only for your own scripts.", "STUCK means real unsubmitted composer text; an agent prompt suggestion never counts.", "Dead watch: HEARTBEAT is proof of life only (--quiet drops it). Judge death by a non-zero exit or a WATCH ERROR line, not by silence."];
|
|
1082
|
+
readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options]", " python -m runpane panes create --repo <selector> --name <name> --tool-command <command> [--agent <codex|claude|cursor>] [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates user-visible Panes (Pane sessions) for feature/PR work in a saved repository and opens a terminal-backed tool tab. Pane creates and owns the worktree/branch for each new Pane.", "", "A long or multi-line prompt is never typed into the shell: on bash, zsh or sh the agent launches with `\"$(cat '<prompt file>')\"` reading a private copy under `<pane-dir>/prompts/<pane-id>/`; on PowerShell, cmd, fish or WSL the prompt is pasted into the agent's composer once it is ready.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --name <name> Pane/session name", " --worktree-name <name> Worktree directory name; defaults to --name", " --branch <name> Exact new branch name (slashes kept); must not exist; defaults to the worktree name", " --base-branch <ref> Ref to branch from; --base is an alias", " --agent <codex|claude|cursor> Built-in terminal template; with --tool-command, the agent it runs", " --tool-command <command> Custom terminal command", " --title <title> Terminal tab title", " --initial-input <text> Text sent after the command is ready", " --prompt <text> Alias for --initial-input", " --initial-input-file <path|-> Read initial input from a file or stdin", " --as-file-pointer Send `Read and follow <prompt file>` instead of the prompt", " --prompt-file <path|-> Alias for --initial-input-file", " --from-json <path|-> Read a full request payload", " --timeout-ms <milliseconds> Pane creation timeout", " --wait-ready Wait for terminal readiness before returning", " --ready-timeout-ms <ms> Readiness wait timeout; defaults to 30000", " --concurrency <count> Accepted; creation is currently serialized", " --source <user|agent> Mark mutation source; agent implies background creation", " --no-focus Create in the background without stealing focus", " --focus Explicitly focus the created pane", " --pinned Accepted for compatibility; creation already pins by default", " --no-pinned Create unpinned instead of the default pinned (the UI's favorite/pin star)", " --no-associate Inside a Session orchestrator, do not associate the new pane with that Session", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without creating panes", " --yes Skip confirmation for mutating commands"];
|
|
1083
|
+
readonly "panes adopt": readonly ["Usage:", " runpane panes adopt --repo <selector> --path <dir> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes adopt --repo <selector> --path <dir> --name <name> --tool-command <command> [--agent <codex|claude|cursor>] [options]", "", "Adopts an existing externally managed git worktree without creating, syncing, or deleting it. Archiving only removes its worktree with `panes archive --remove-worktree`. To start new work on a named branch, use `panes create --base <ref> --branch <name>` instead of `git worktree add` plus adopt.", "", "Options: --resume <id> stages the agent resume command (built-in agents only); --launch runs the command immediately; --prompt <text> or --prompt-file <path|-> and --wait-ready require --launch; --folder <name> groups the pane; --no-pinned opts out of pinning; --no-associate skips automatic Session association; --dry-run previews.", "", "With --tool-command, --agent names the agent the command runs (a wrapper such as `agent-farm run`): Pane launches the command unchanged and treats the panel as that agent. Without --agent, Pane detects Claude Code, Codex and Cursor from the foreground process or the agent's screen."];
|
|
1084
|
+
readonly "panes archive": readonly ["Usage:", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--remove-worktree] [--dry-run] --yes [--json]", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--source user|agent] [--dry-run] --yes [--json]", "", "Archives a Pane (session) exactly like the UI Archive action, including removal of its Pane-managed git worktree. Refreshes the configured upstream before checking for unpushed commits and reports exact commit evidence. When the branch has no upstream or its upstream is gone, a merged GitHub pull request whose head is HEAD (found with `gh`) counts as pushed. Refuses unsafe archives unless --force is passed. An adopted worktree is kept unless --remove-worktree is passed, which applies the same safety check and removal. The local branch is always kept. With --session and --merged, archives every Pane associated with the Session whose work is clean and pushed or merged, and reports a reason for each Pane it skips. Use --dry-run to print the evidence without mutating Pane state.", "", "Options:", " --pane <pane-id>", " --source <user|agent>", " --force", " --remove-worktree", " --session <id|name>", " --merged", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
|
|
986
1085
|
readonly "panes pin": readonly ["Usage:", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", "", "Declaratively pins a Pane using the Pane UI's favorite/pin star. Repeating the command is idempotent and never changes focus. Use --dry-run to validate and preview without mutating.", "", "Options:", " --pane <pane-id>", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
|
|
987
1086
|
readonly "panes unpin": readonly ["Usage:", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", "", "Declaratively unpins a Pane using the Pane UI's favorite/pin star. Repeating the command is idempotent and never changes focus. Use --dry-run to validate and preview without mutating.", "", "Options:", " --pane <pane-id>", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
|
|
988
1087
|
readonly "panes rename": readonly ["Usage:", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Renames a Pane without changing its worktree, branch, panels, or focus. The name is trimmed like the Pane UI. Use --dry-run to validate and preview the updated pane without mutating.", "", "Options:", " --pane <pane-id>", " --name <new-name>", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
|
|
989
1088
|
readonly "panes focus": readonly ["Usage:", " runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json]", "", "Raises the Pane window and selects a Pane (and optionally one of its panels) exactly like clicking it in the UI. Steals window focus, so run it only on an explicit user request to open, focus, or show a Pane, never proactively.", "", "Options:", " --pane <pane-id>", " --panel <panel-id>", " --source <user|agent>", " --pane-dir <path>", " --json", " --yes"];
|
|
990
|
-
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."];
|
|
991
|
-
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"];
|
|
1089
|
+
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|tab] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane panels last-message --panel <panel-id> [--limit <count>] [--json]", "", "Run \"runpane help panels create\" or another command-specific topic for options."];
|
|
1090
|
+
readonly "panels list": readonly ["Usage:", " runpane panels list --pane <pane-id> [--json]", "", "Lists tool panels in a Pane session.", "", "agentDetection says how Pane knows agentType: declared, command, process, or screen. launchCommand is the command the panel was launched with.", "", "Options:", " --pane <pane-id>", " --pane-dir <path>", " --json"];
|
|
992
1091
|
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"];
|
|
993
1092
|
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"];
|
|
994
|
-
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"];
|
|
1093
|
+
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", " --pane-dir <path> Accepted and ignored", "", "Examples:", " runpane agent-context", " runpane agent-context --json", " runpane agent-context --command \"panes create\"", " runpane agent-context --command \"panes create\" --json"];
|
|
995
1094
|
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"];
|
|
996
1095
|
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"];
|
|
997
1096
|
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"];
|
|
998
|
-
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"];
|
|
1097
|
+
readonly "panels submit": readonly ["Usage:", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) [--as-file-pointer] --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.", "", "For a Claude or Codex panel with no composer on screen, nothing is sent: the result is ok: false with blocked.kind composer-unknown.", "", "Multi-line or long (over 512 characters) text reaches a Claude or Codex composer as one bracketed paste: CRLF becomes LF, and the submit key goes as its own write once the paste has settled, even while the agent is working.", "", "For Claude, text starting with `!`, `#`, `/` or `@` is sent unchanged and the result carries a `warnings` entry (for example `leading-bang-runs-shell`), because Claude Code gives those characters a meaning of its own.", "", "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", " --as-file-pointer Write the text to a prompt file and submit `Read and follow <path>`", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for this mutating command"];
|
|
999
1098
|
readonly "panels wait": readonly ["Usage:", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--contains <text>] [--timeout-ms <ms>] [--interval-ms <ms>] [--json]", "", "Polls a terminal panel until it is initialized, ready, idle, or contains text. Output is intentionally small and includes next-step guidance.", "", "Options:", " --panel <panel-id> Terminal panel id", " --for <condition> initialized, ready, idle, or text; defaults to ready for CLI panels and idle otherwise", " --contains <text> Text required for --for text; implies --for text when omitted", " --timeout-ms <milliseconds> Wait timeout; defaults to 30000", " --interval-ms <milliseconds> Poll interval; defaults to 500", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
1000
|
-
readonly "panels create": readonly ["Create a terminal-backed tool panel inside an existing Pane session.", "", "Usage:", " python -m runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--title <title>] [--initial-input <text>] [--no-focus] [--wait-ready] --yes [--json]", " python -m runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--no-focus] --yes [--json]", "", "Options:", " --pane <pane-id> Existing Pane session to add the panel to.", " --agent <codex|claude|cursor>
|
|
1001
|
-
readonly "panels submit-composer": readonly ["Submit an agent composer using the panel-appropriate key sequence.", "", "Usage:", " python -m runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", "", "Options:", " --panel <panel-id> Terminal panel id.", " --strategy <strategy> Defaults to auto; Codex
|
|
1099
|
+
readonly "panels create": readonly ["Create a terminal-backed tool panel inside an existing Pane session.", "", "Usage:", " python -m runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--title <title>] [--initial-input <text>] [--no-focus] [--wait-ready] --yes [--json]", " python -m runpane panels create --pane <pane-id> --tool-command <command> [--agent <codex|claude|cursor>] [--title <title>] [--no-focus] [--wait-ready] --yes [--json]", "", "Options:", " --pane <pane-id> Existing Pane session to add the panel to.", " --agent <codex|claude|cursor> Built-in agent command template, or with --tool-command the agent it runs.", " --tool-command <command> Custom terminal command to launch.", " --title <title> Panel title override.", " --initial-input, --prompt Initial input to send after the tool starts.", " --initial-input-file <path|-> Read initial input from a file or stdin.", " --as-file-pointer Send `Read and follow <prompt file>` instead of the prompt.", " --no-focus Create the panel in the background.", " --focus Explicitly focus the created panel.", " --source <user|agent> Mark the mutation source; agent implies background creation.", " --wait-ready Wait until the terminal tool is ready.", " --ready-timeout-ms <ms> Readiness wait timeout.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
1100
|
+
readonly "panels submit-composer": readonly ["Submit an agent composer using the panel-appropriate key sequence.", "", "Usage:", " python -m runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter|tab] --yes [--json]", "", "Options:", " --panel <panel-id> Terminal panel id.", " --strategy <strategy> Defaults to auto; Codex queues with Tab while working and submits with Enter when ready. auto retries once if the text is still in the composer.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
1002
1101
|
readonly "sessions list": readonly ["Usage:", "python -m runpane sessions list [--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."];
|
|
1003
1102
|
readonly "sessions create": readonly ["Usage:", "python -m runpane sessions create --from-json <path|-> [--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."];
|
|
1004
1103
|
readonly "sessions get": readonly ["Usage:", "python -m runpane sessions get --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."];
|
|
@@ -1029,8 +1128,14 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1029
1128
|
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"];
|
|
1030
1129
|
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"];
|
|
1031
1130
|
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"];
|
|
1032
|
-
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"];
|
|
1131
|
+
readonly "agents send": readonly ["Usage:", " runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> [--as-file-pointer] --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"];
|
|
1033
1132
|
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."];
|
|
1133
|
+
readonly report: readonly ["Usage:", " runpane report --state <ready|blocked|failed|done> [--pr <number>] [--head <sha>] [--summary <text>|--summary-file <path|->] [--question <text>] [--pane <pane-id> --panel <panel-id>] [--json] [--pane-dir <path>]", "", "Hands back a worker's structured report for its panel: the orchestrator receives it as an", "agent.report watch event and reads it in `agents status` and `sessions overview`.", "Inside a Pane terminal the panel comes from PANE_SESSION_ID and PANE_PANEL_ID.", "", "Options:", " --state <state> ready, blocked, failed, or done", " --pr <number> Pull request number", " --head <sha> Head commit, 7-40 hex characters", " --summary <text> Summary text; up to 16,000 characters are kept", " --summary-file <path|-> Read the summary from a file or stdin", " --question <text> What you need answered; required with --state blocked", " --pane <pane-id> Pane id when not running inside a Pane terminal", " --panel <panel-id> Panel id when not running inside a Pane terminal", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", "", "Example:", " runpane report --state ready --pr 747 --head fc5dce9 --summary-file /tmp/report.md"];
|
|
1134
|
+
readonly "panels last-message": readonly ["Usage:", " runpane panels last-message --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]", "", "Reads a Claude or Codex agent's last reply from its transcript. It never scrapes the screen:", "without a transcript it reports transcript-unavailable and exits non-zero.", "", "Options:", " --panel <panel-id> Agent panel id", " --limit <count> Maximum characters to return; defaults to 20000 (the end is kept)", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
1135
|
+
readonly lock: readonly ["Usage:", " python -m runpane lock <acquire|release|list> [options]", "", "Named locks coordinate a resource shared between agents, such as one test account.", "The caller is the owner: the Pane and panel from $PANE_SESSION_ID and $PANE_PANEL_ID.", "A lock is scoped to the owner's Session when its Pane belongs to one; otherwise it is global.", "It is released on --ttl expiry, when the owner panel exits, or when the owner Pane is archived."];
|
|
1136
|
+
readonly "lock acquire": readonly ["Usage:", "python -m runpane lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1137
|
+
readonly "lock release": readonly ["Usage:", "python -m runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1138
|
+
readonly "lock list": readonly ["Usage:", "python -m runpane lock list [--session <id|name>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1034
1139
|
};
|
|
1035
1140
|
};
|
|
1036
1141
|
readonly docs: {
|
|
@@ -1039,16 +1144,16 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1039
1144
|
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\""];
|
|
1040
1145
|
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\""];
|
|
1041
1146
|
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."];
|
|
1042
|
-
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"];
|
|
1043
|
-
readonly commandDescriptions: readonly ["`runpane` with no arguments and `runpane setup` open an interactive wizard when stdin and stdout are TTYs. The remote-host wizard asks only for a name, then runs interactive Tailscale setup with automatic port selection; explicit install daemon flags remain available for SSH and manual URLs. 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. Inside a Session orchestrator (`PANE_ORCHESTRATION_SESSION_ID` set), new Panes are associated with that Session automatically; `--no-associate` opts out. A failed association is reported on the item and never undoes the Pane.", "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."];
|
|
1147
|
+
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 watch --session <id|name> --follow --quiet --json --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone,pane.associated,pane.detached,pr.conflicted,pr.checks,pr.merged --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 lock acquire --name testing-account --ttl 30m --wait 1800000 --note \"call QA\" --json", "runpane lock release --name testing-account --json", "runpane lock list --json", "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 report --state ready --pr 747 --head fc5dce9 --summary-file /tmp/report.md --json", "runpane panels last-message --panel <panel-id> --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"];
|
|
1148
|
+
readonly commandDescriptions: readonly ["`runpane` with no arguments and `runpane setup` open an interactive wizard when stdin and stdout are TTYs. The remote-host wizard asks only for a name, then runs interactive Tailscale setup with automatic port selection; explicit install daemon flags remain available for SSH and manual URLs. 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. An unknown command exits 2 and lists the closest command names; with `--json` it prints `{ ok: false, code: \"unknown_command\", message, candidates }` on stdout.", "`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. Inside a Session orchestrator (`PANE_ORCHESTRATION_SESSION_ID` set), new Panes are associated with that Session automatically; `--no-associate` opts out. A failed association is reported on the item and never undoes the Pane.", "For `panes create --wait-ready`, `initialInput.delivery` says where the prompt went: `taken` or `queued` (from the agent's transcript, its screen, or `argv` for a launch-argument prompt), `in-composer`, or `unknown`. `initialInput.verifiedSubmitted` is true exactly when it is `taken` or `queued`. 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. A branch whose upstream is gone counts as pushed when a merged GitHub pull request has HEAD as its head (`safetyCheck.mergedViaPr`). Add `--dry-run` to inspect the same evidence without archiving. `--remove-worktree` applies the same check and removal to an adopted worktree; local branches are always kept. Successful archives report `worktreeCleanup: completed` once the worktree is gone from its path and from git; `trashDeletion: pending` means its files are still being deleted in the background. `runpane panes archive --session <id|name> --merged` archives every Session Pane that is clean and pushed or merged, and reports a reason for each skipped Pane.", "`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.", "`runpane panes create --branch <name>` creates the Pane's worktree on exactly that new branch, slashes included (for example `agents/w5a`). The name is checked with `git check-ref-format --branch`, creation fails if the branch already exists, and Pane never renames it to make it unique. `--worktree-name` still names the directory and defaults to `--name`. `--base` is an alias for `--base-branch`, and `--prompt-file` for `--initial-input-file`. `panes create --base <ref> --branch <name> --prompt-file <file>` replaces `git worktree add` plus `panes adopt`.", "`runpane panes adopt --launch` accepts `--prompt`, `--prompt-file`, `--wait-ready`, and `--ready-timeout-ms`, and reports `readiness`, `initialInput`, and `nextCommand` like `panes create`. A prompt without `--launch` is an error rather than being dropped.", "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). Two profiles cover orchestrators. Unattended: `runpane watch --follow --quiet --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, and can deliver READY up to about 13 minutes late. User present: the same kinds with `--settle 60000 --blocked-settle 15000 --min-interval 120000` and no `--idle-backoff`, so READY arrives within about 3 minutes. 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. `--quiet` (alias `--no-control-lines`) drops the WATCH OK, HEARTBEAT, and WATCH RECONNECTED control lines (`_ok`, `_heartbeat`, `_reconnected` in JSON); WATCH ERROR, RESET, and DROPPED (`_error`, `_reset`, `_dropped`) always print. Judge a dead watch by a non-zero exit or a WATCH ERROR line, not by silence. `--session <id|name>` follows every Pane associated with a named Session and re-reads membership on every read, so associate and detach need no re-arm; JOINED and LEFT (`pane.associated`, `pane.detached`) report membership changes. For Session members with an open PR, the daemon polls GitHub about every 3 minutes and reports `pr.conflicted` (`PR <pane-name> pane <pane-id> #<number> CONFLICTED`), `pr.checks` (`... CHECKS PASSED` or `... CHECKS FAILED <names>`), and `pr.merged` (`... MERGED`) on transitions only; list them in `--kinds`. In JSON, an entry with `replay: true` restates current state after a reset and is never READY.", "`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 lock acquire|release|list` coordinate a resource shared between agents, such as one test account. The caller's Pane and panel own the lock; it is scoped to the owner's Session (or global outside one), renews for the same owner, and is released on TTL expiry, owner panel exit, or owner Pane archive. `--wait` blocks in the daemon until the lock comes free.", "`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.", "`runpane report --state ready|blocked|failed|done` is how a worker hands back its result. It stores the latest report on the worker's panel (state, `--pr`, `--head`, up to 16,000 characters of `--summary` or `--summary-file`, and the `--question` a blocked worker needs answered), journals an opt-in `agent.report` watch event (`REPORT <pane-name> pane <pane-id> panel <panel-id> ready pr#747 fc5dce9`; it skips the `--min-interval` batch), records it as Session activity, and shows it in `agents status`, `panels list`, and `sessions overview` (`panes[].report`). Inside a Pane terminal the panel comes from `PANE_SESSION_ID` and `PANE_PANEL_ID`; elsewhere pass `--pane` and `--panel`.", "`runpane panels last-message --panel <panel-id>` reads a Claude or Codex agent's last reply from its transcript (up to `--limit` characters, default 20,000, keeping the end and reporting `truncated`). It never scrapes the screen: without a transcript it prints `{ ok: false, reason: \"transcript-unavailable\" }` and exits 1.", "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."];
|
|
1044
1149
|
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.";
|
|
1045
|
-
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.";
|
|
1150
|
+
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. `agent-context` and `version` accept and ignore `--pane-dir`, so one `--pane-dir` can be passed to every runpane command. 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.";
|
|
1046
1151
|
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.";
|
|
1047
1152
|
readonly downloadAttribution: readonly ["The npm package uses `source=npm` for all npm-registry consumers, including `npx`, `pnpm dlx`, `yarn dlx`, `bunx`, and global npm/pnpm installs.", "The PyPI package uses `source=pip` for all Python consumers, including pip, pipx, uvx, and `python -m runpane`.", "Wrappers should prefer `https://runpane.com/api/download?platform=<platform>&arch=<arch>&format=<format>&version=<version>&channel=<channel>&source=<npm|pip>`.", "If the website route cannot satisfy the download, wrappers may fall back to the matching GitHub release asset and print a warning that website attribution may be incomplete for that run.", "Wrappers also emit best-effort lifecycle telemetry to `https://runpane.com/api/runpane/telemetry` for command start/success/failure, download request/success/failure, and GitHub fallback usage.", "Wrapper telemetry uses a persisted anonymous `install_id` in the form `install_<uuid>` and PostHog `distinct_id = install:<install_id>` so distinct wrapper users can be counted with `count(DISTINCT properties.install_id)`.", "Wrapper telemetry must be disabled in CI and when `RUNPANE_TELEMETRY_DISABLED` is set, and must not include raw paths, labels, prompts, raw error text, or environment values."];
|
|
1048
1153
|
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."];
|
|
1049
1154
|
};
|
|
1050
1155
|
readonly testFixtures: {
|
|
1051
|
-
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", "--no-associate", "--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"]];
|
|
1156
|
+
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", "--no-associate", "--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"], readonly ["watch", "--follow", "--quiet", "--json", "--pane-dir", "/tmp/pane"], readonly ["watch", "--follow", "--no-control-lines", "--all-managed"], readonly ["watch", "--session", "__orchestration_session_1b4e28ba-2fa1-11d2-883f-0016d3cca427__", "--follow", "--quiet", "--json", "--kinds", "agent.ready,agent.blocked,pane.associated,pane.detached,pr.conflicted,pr.checks,pr.merged", "--settle", "180000"], readonly ["watch", "--session=Release train", "--as", "release-watch", "--exclude-pane", "pane-old"], readonly ["agent-context", "--command", "panes create", "--json", "--pane-dir", "/tmp/pane"], readonly ["agent-context", "--pane-dir=/tmp/pane"], readonly ["version", "--pane-dir", "/tmp/pane"], readonly ["panes", "create", "--repo", "active", "--name", "w5a", "--agent", "claude", "--base-branch", "origin/release", "--source", "agent", "--no-focus", "--yes", "--json", "--pane-dir", "/tmp/pane"], readonly ["panels", "create", "--pane", "pane-1", "--agent", "codex", "--tool-command", "wrapper codex-run", "--wait-ready", "--yes", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "farm", "--tool-command", "agent-farm run free-range", "--agent", "claude", "--prompt", "Plan", "--yes", "--json"], readonly ["panels", "submit", "--panel", "panel-1", "--input-file", "brief.md", "--as-file-pointer", "--yes", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "long", "--agent", "claude", "--initial-input-file", "brief.md", "--as-file-pointer", "--dry-run", "--yes", "--json"], readonly ["report", "--state", "ready", "--pr", "747", "--head", "FC5DCE9", "--summary", "Done: tests pass", "--json"], readonly ["report", "--state", "blocked", "--question", "Which API version?", "--pane", "session-1", "--panel", "panel-1", "--summary-file", "-"], readonly ["report", "--state=done", "--summary-file=/tmp/report.md", "--pane-dir", "/tmp/pane"], readonly ["panels", "last-message", "--panel", "panel-1", "--limit", "5000", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "w5a", "--base", "release/foo", "--branch", "agents/w5a", "--agent", "claude", "--prompt-file", "prompt.md", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "w5b", "--base-branch", "origin/main", "--branch", "agents/w5b", "--worktree-name", "w5b-dir", "--tool-command", "bash", "--initial-input-file", "-", "--dry-run", "--yes", "--json"], readonly ["panes", "archive", "--pane", "session-1", "--remove-worktree", "--yes", "--json"], readonly ["panes", "archive", "--session", "refactor", "--merged", "--dry-run", "--json"], readonly ["panes", "archive", "--session", "refactor", "--merged", "--remove-worktree", "--yes"], readonly ["lock", "acquire", "--name", "testing-account", "--ttl", "30m", "--wait", "1800000", "--note", "call QA", "--json"], readonly ["lock", "acquire", "--name", "staging-db", "--ttl", "1500", "--pane", "session-1", "--panel", "panel-1", "--pane-dir", "/tmp/pane"], readonly ["lock", "acquire", "--name=db", "--ttl=2h"], readonly ["lock", "release", "--name", "testing-account", "--force", "--session", "Release QA", "--json"], readonly ["lock", "list", "--session", "Release QA", "--json"], readonly ["lock", "--help"]];
|
|
1052
1157
|
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:"];
|
|
1053
1158
|
readonly npmHelpIncludes: readonly ["pnpm dlx runpane@latest", "npx --yes runpane@latest"];
|
|
1054
1159
|
readonly pipHelpIncludes: readonly ["pipx run runpane", "python -m pip install runpane && python -m runpane setup"];
|
|
@@ -1080,7 +1185,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1080
1185
|
};
|
|
1081
1186
|
readonly doctorResult: {
|
|
1082
1187
|
readonly type: "object";
|
|
1083
|
-
readonly required: readonly ["ok", "source", "wrapper", "release", "installedPane", "daemon", "remoteDaemonService", "remoteSetup", "nextCommands"];
|
|
1188
|
+
readonly required: readonly ["ok", "source", "wrapper", "release", "installedPane", "daemon", "remoteDaemonService", "remoteSetup", "watchDefaults", "nextCommands"];
|
|
1084
1189
|
readonly properties: {
|
|
1085
1190
|
readonly ok: {
|
|
1086
1191
|
readonly type: "boolean";
|
|
@@ -1314,6 +1419,34 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1314
1419
|
};
|
|
1315
1420
|
readonly additionalProperties: false;
|
|
1316
1421
|
};
|
|
1422
|
+
readonly watchDefaults: {
|
|
1423
|
+
readonly type: "object";
|
|
1424
|
+
readonly required: readonly ["heartbeatSeconds", "idleAfterMs", "settleMs", "blockedSettleMs", "minIntervalMs", "idleBackoff", "kinds"];
|
|
1425
|
+
readonly properties: {
|
|
1426
|
+
readonly heartbeatSeconds: {
|
|
1427
|
+
readonly type: "number";
|
|
1428
|
+
};
|
|
1429
|
+
readonly idleAfterMs: {
|
|
1430
|
+
readonly type: "number";
|
|
1431
|
+
};
|
|
1432
|
+
readonly settleMs: {
|
|
1433
|
+
readonly type: "number";
|
|
1434
|
+
};
|
|
1435
|
+
readonly blockedSettleMs: {
|
|
1436
|
+
readonly type: "number";
|
|
1437
|
+
};
|
|
1438
|
+
readonly minIntervalMs: {
|
|
1439
|
+
readonly type: "number";
|
|
1440
|
+
};
|
|
1441
|
+
readonly idleBackoff: {
|
|
1442
|
+
readonly type: "boolean";
|
|
1443
|
+
};
|
|
1444
|
+
readonly kinds: {
|
|
1445
|
+
readonly const: "all";
|
|
1446
|
+
};
|
|
1447
|
+
};
|
|
1448
|
+
readonly additionalProperties: false;
|
|
1449
|
+
};
|
|
1317
1450
|
readonly nextCommands: {
|
|
1318
1451
|
readonly type: "array";
|
|
1319
1452
|
readonly items: {
|
|
@@ -1490,6 +1623,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1490
1623
|
readonly worktreeName: {
|
|
1491
1624
|
readonly type: "string";
|
|
1492
1625
|
};
|
|
1626
|
+
readonly branch: {
|
|
1627
|
+
readonly type: "string";
|
|
1628
|
+
};
|
|
1493
1629
|
readonly baseBranch: {
|
|
1494
1630
|
readonly type: "string";
|
|
1495
1631
|
};
|
|
@@ -1513,6 +1649,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1513
1649
|
readonly initialInput: {
|
|
1514
1650
|
readonly type: "string";
|
|
1515
1651
|
};
|
|
1652
|
+
readonly initialInputAsFilePointer: {
|
|
1653
|
+
readonly type: "boolean";
|
|
1654
|
+
};
|
|
1516
1655
|
};
|
|
1517
1656
|
readonly additionalProperties: false;
|
|
1518
1657
|
}, {
|
|
@@ -1522,12 +1661,18 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1522
1661
|
readonly command: {
|
|
1523
1662
|
readonly type: "string";
|
|
1524
1663
|
};
|
|
1664
|
+
readonly agentType: {
|
|
1665
|
+
readonly enum: readonly ["codex", "claude", "cursor"];
|
|
1666
|
+
};
|
|
1525
1667
|
readonly title: {
|
|
1526
1668
|
readonly type: "string";
|
|
1527
1669
|
};
|
|
1528
1670
|
readonly initialInput: {
|
|
1529
1671
|
readonly type: "string";
|
|
1530
1672
|
};
|
|
1673
|
+
readonly initialInputAsFilePointer: {
|
|
1674
|
+
readonly type: "boolean";
|
|
1675
|
+
};
|
|
1531
1676
|
};
|
|
1532
1677
|
readonly additionalProperties: false;
|
|
1533
1678
|
}];
|
|
@@ -1719,14 +1864,17 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1719
1864
|
readonly type: "number";
|
|
1720
1865
|
};
|
|
1721
1866
|
readonly strategy: {
|
|
1722
|
-
readonly enum: readonly ["codex-ctrl-enter", "enter", "argument"];
|
|
1867
|
+
readonly enum: readonly ["codex-ctrl-enter", "enter", "tab", "argument"];
|
|
1723
1868
|
};
|
|
1724
1869
|
readonly sequenceName: {
|
|
1725
|
-
readonly enum: readonly ["codex-ctrl-enter-cr", "enter-cr", "argument"];
|
|
1870
|
+
readonly enum: readonly ["codex-ctrl-enter-cr", "enter-cr", "tab", "argument"];
|
|
1726
1871
|
};
|
|
1727
1872
|
readonly verifiedSubmitted: {
|
|
1728
1873
|
readonly type: "boolean";
|
|
1729
1874
|
};
|
|
1875
|
+
readonly delivery: {
|
|
1876
|
+
readonly $ref: "#/jsonSchemas/panelSubmitResult/properties/delivery";
|
|
1877
|
+
};
|
|
1730
1878
|
readonly staged: {
|
|
1731
1879
|
readonly type: "boolean";
|
|
1732
1880
|
};
|
|
@@ -1790,6 +1938,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1790
1938
|
};
|
|
1791
1939
|
readonly additionalProperties: false;
|
|
1792
1940
|
};
|
|
1941
|
+
readonly promptFile: {
|
|
1942
|
+
readonly type: "string";
|
|
1943
|
+
};
|
|
1944
|
+
readonly warnings: {
|
|
1945
|
+
readonly $ref: "#/jsonSchemas/panelSubmitResult/properties/warnings";
|
|
1946
|
+
};
|
|
1793
1947
|
};
|
|
1794
1948
|
readonly additionalProperties: false;
|
|
1795
1949
|
}, {
|
|
@@ -1890,6 +2044,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1890
2044
|
readonly agentStatus: {
|
|
1891
2045
|
readonly enum: readonly ["active", "idle"];
|
|
1892
2046
|
};
|
|
2047
|
+
readonly agentState: {
|
|
2048
|
+
readonly enum: readonly ["ready", "working", "blocked", "none"];
|
|
2049
|
+
};
|
|
1893
2050
|
readonly ownership: {
|
|
1894
2051
|
readonly enum: readonly ["pane", "external"];
|
|
1895
2052
|
};
|
|
@@ -2166,7 +2323,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2166
2323
|
readonly type: "string";
|
|
2167
2324
|
};
|
|
2168
2325
|
readonly kind: {
|
|
2169
|
-
readonly enum: readonly ["agent.ready", "agent.busy", "agent.blocked", "agent.unknown", "agent.idle", "pane.created", "pane.gone", "panel.exited"];
|
|
2326
|
+
readonly enum: readonly ["agent.ready", "agent.busy", "agent.blocked", "agent.unknown", "agent.idle", "pane.created", "pane.gone", "panel.exited", "agent.report", "pane.associated", "pane.detached", "pr.conflicted", "pr.checks", "pr.merged"];
|
|
2170
2327
|
};
|
|
2171
2328
|
readonly paneId: {
|
|
2172
2329
|
readonly type: "string";
|
|
@@ -2196,7 +2353,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2196
2353
|
readonly enum: readonly ["blocked", "working", "idle", "unknown"];
|
|
2197
2354
|
};
|
|
2198
2355
|
readonly source: {
|
|
2199
|
-
readonly enum: readonly ["agent", "exit", "session"];
|
|
2356
|
+
readonly enum: readonly ["agent", "exit", "session", "github"];
|
|
2200
2357
|
};
|
|
2201
2358
|
readonly reason: {
|
|
2202
2359
|
readonly oneOf: readonly [{
|
|
@@ -2226,9 +2383,84 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2226
2383
|
readonly baseline: {
|
|
2227
2384
|
readonly const: true;
|
|
2228
2385
|
};
|
|
2386
|
+
readonly replay: {
|
|
2387
|
+
readonly const: true;
|
|
2388
|
+
readonly description: "Set on baseline entries delivered after a reset. A replayed entry restates current state and is never a new transition: a replayed agent.ready is not READY.";
|
|
2389
|
+
};
|
|
2229
2390
|
readonly changedWhileAway: {
|
|
2230
2391
|
readonly type: "boolean";
|
|
2231
2392
|
};
|
|
2393
|
+
readonly sessionId: {
|
|
2394
|
+
readonly type: "string";
|
|
2395
|
+
readonly description: "Named Session of a pane.associated or pane.detached entry.";
|
|
2396
|
+
};
|
|
2397
|
+
readonly sessionName: {
|
|
2398
|
+
readonly type: "string";
|
|
2399
|
+
};
|
|
2400
|
+
readonly pr: {
|
|
2401
|
+
readonly type: "object";
|
|
2402
|
+
readonly description: "PR of a pr.conflicted, pr.checks, or pr.merged entry.";
|
|
2403
|
+
readonly required: readonly ["number", "url", "headOid"];
|
|
2404
|
+
readonly properties: {
|
|
2405
|
+
readonly number: {
|
|
2406
|
+
readonly type: "number";
|
|
2407
|
+
};
|
|
2408
|
+
readonly url: {
|
|
2409
|
+
readonly type: "string";
|
|
2410
|
+
};
|
|
2411
|
+
readonly headOid: {
|
|
2412
|
+
readonly type: "string";
|
|
2413
|
+
};
|
|
2414
|
+
};
|
|
2415
|
+
readonly additionalProperties: false;
|
|
2416
|
+
};
|
|
2417
|
+
readonly checks: {
|
|
2418
|
+
readonly enum: readonly ["passed", "failed"];
|
|
2419
|
+
readonly description: "Settled result of a pr.checks entry: every check on pr.headOid finished.";
|
|
2420
|
+
};
|
|
2421
|
+
readonly failingChecks: {
|
|
2422
|
+
readonly type: "array";
|
|
2423
|
+
readonly items: {
|
|
2424
|
+
readonly type: "string";
|
|
2425
|
+
};
|
|
2426
|
+
readonly description: "Up to five failing check names of a failed pr.checks entry.";
|
|
2427
|
+
};
|
|
2428
|
+
readonly report: {
|
|
2429
|
+
readonly $ref: "#/jsonSchemas/agentReport";
|
|
2430
|
+
readonly description: "Report of an agent.report entry; its summary is cut to 2,000 characters (the panel keeps up to 16,000).";
|
|
2431
|
+
};
|
|
2432
|
+
};
|
|
2433
|
+
readonly additionalProperties: false;
|
|
2434
|
+
};
|
|
2435
|
+
readonly agentReport: {
|
|
2436
|
+
readonly type: "object";
|
|
2437
|
+
readonly description: "The latest runpane report from an agent panel.";
|
|
2438
|
+
readonly required: readonly ["state", "reportedAt"];
|
|
2439
|
+
readonly properties: {
|
|
2440
|
+
readonly state: {
|
|
2441
|
+
readonly enum: readonly ["ready", "blocked", "failed", "done"];
|
|
2442
|
+
};
|
|
2443
|
+
readonly pr: {
|
|
2444
|
+
readonly type: "number";
|
|
2445
|
+
};
|
|
2446
|
+
readonly head: {
|
|
2447
|
+
readonly type: "string";
|
|
2448
|
+
};
|
|
2449
|
+
readonly summary: {
|
|
2450
|
+
readonly type: "string";
|
|
2451
|
+
};
|
|
2452
|
+
readonly summaryTruncated: {
|
|
2453
|
+
readonly const: true;
|
|
2454
|
+
};
|
|
2455
|
+
readonly summaryPath: {
|
|
2456
|
+
readonly type: "string";
|
|
2457
|
+
};
|
|
2458
|
+
readonly question: {
|
|
2459
|
+
readonly type: "string";
|
|
2460
|
+
};
|
|
2461
|
+
readonly reportedAt: {
|
|
2462
|
+
readonly type: "string";
|
|
2463
|
+
};
|
|
2232
2464
|
};
|
|
2233
2465
|
readonly additionalProperties: false;
|
|
2234
2466
|
};
|
|
@@ -2262,6 +2494,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2262
2494
|
readonly type: "string";
|
|
2263
2495
|
};
|
|
2264
2496
|
};
|
|
2497
|
+
readonly session: {
|
|
2498
|
+
readonly type: "string";
|
|
2499
|
+
readonly description: "Named Session id or exact name. Limits the wait to the Session's associated Panes, resolved on every read, and implies the opt-in pane.associated, pane.detached, and pr.* entries. Cannot be combined with paneIds.";
|
|
2500
|
+
};
|
|
2265
2501
|
readonly excludePaneIds: {
|
|
2266
2502
|
readonly type: "array";
|
|
2267
2503
|
readonly items: {
|
|
@@ -2383,6 +2619,20 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2383
2619
|
};
|
|
2384
2620
|
readonly additionalProperties: false;
|
|
2385
2621
|
};
|
|
2622
|
+
readonly session: {
|
|
2623
|
+
readonly type: "object";
|
|
2624
|
+
readonly description: "The Session a session request resolved to. A client that sent session and gets no session back is talking to a daemon that ignored it.";
|
|
2625
|
+
readonly required: readonly ["id", "name"];
|
|
2626
|
+
readonly properties: {
|
|
2627
|
+
readonly id: {
|
|
2628
|
+
readonly type: "string";
|
|
2629
|
+
};
|
|
2630
|
+
readonly name: {
|
|
2631
|
+
readonly type: "string";
|
|
2632
|
+
};
|
|
2633
|
+
};
|
|
2634
|
+
readonly additionalProperties: false;
|
|
2635
|
+
};
|
|
2386
2636
|
readonly nextCommand: {
|
|
2387
2637
|
readonly type: "string";
|
|
2388
2638
|
};
|
|
@@ -2405,6 +2655,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2405
2655
|
readonly dryRun: {
|
|
2406
2656
|
readonly type: "boolean";
|
|
2407
2657
|
};
|
|
2658
|
+
readonly removeWorktree: {
|
|
2659
|
+
readonly type: "boolean";
|
|
2660
|
+
};
|
|
2408
2661
|
};
|
|
2409
2662
|
readonly additionalProperties: false;
|
|
2410
2663
|
};
|
|
@@ -2542,6 +2795,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2542
2795
|
};
|
|
2543
2796
|
readonly worktreeCleanup: {
|
|
2544
2797
|
readonly enum: readonly ["completed", "failed", "timeout", "not-applicable"];
|
|
2798
|
+
readonly description: "`completed`: the worktree is gone from its path and from git (see trashDeletion). `failed`: removal failed and the worktree may remain; ok is false. `timeout`: the archive script or git removal is still running in the background; ok stays true. `not-applicable`: nothing was removed (main-repo Pane, or an adopted worktree without --remove-worktree). Released CLIs decode exactly these values.";
|
|
2799
|
+
};
|
|
2800
|
+
readonly trashDeletion: {
|
|
2801
|
+
readonly enum: readonly ["pending", "done"];
|
|
2802
|
+
readonly description: "Present with worktreeCleanup `completed`. `pending`: the removed worktree was moved into the repository's .git/pane-trash and its files are still being deleted in the background. `done`: the files are gone.";
|
|
2545
2803
|
};
|
|
2546
2804
|
readonly worktreePath: {
|
|
2547
2805
|
readonly type: "string";
|
|
@@ -2587,6 +2845,30 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2587
2845
|
readonly additionalProperties: false;
|
|
2588
2846
|
};
|
|
2589
2847
|
};
|
|
2848
|
+
readonly reason: {
|
|
2849
|
+
readonly enum: readonly ["external-worktree", "main-repo", "missing-project-context", "git-error"];
|
|
2850
|
+
};
|
|
2851
|
+
readonly worktreeWillRemain: {
|
|
2852
|
+
readonly const: true;
|
|
2853
|
+
};
|
|
2854
|
+
readonly upstreamGone: {
|
|
2855
|
+
readonly type: "boolean";
|
|
2856
|
+
readonly description: "The branch had an upstream that no longer exists on the remote, so commits were compared with the base branch.";
|
|
2857
|
+
};
|
|
2858
|
+
readonly mergedViaPr: {
|
|
2859
|
+
readonly type: "object";
|
|
2860
|
+
readonly description: "A merged pull request whose head commit is HEAD. Its commits are not counted as unpushed.";
|
|
2861
|
+
readonly required: readonly ["number", "headOid"];
|
|
2862
|
+
readonly properties: {
|
|
2863
|
+
readonly number: {
|
|
2864
|
+
readonly type: "number";
|
|
2865
|
+
};
|
|
2866
|
+
readonly headOid: {
|
|
2867
|
+
readonly type: "string";
|
|
2868
|
+
};
|
|
2869
|
+
};
|
|
2870
|
+
readonly additionalProperties: false;
|
|
2871
|
+
};
|
|
2590
2872
|
};
|
|
2591
2873
|
readonly additionalProperties: false;
|
|
2592
2874
|
};
|
|
@@ -2686,6 +2968,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2686
2968
|
readonly additionalProperties: false;
|
|
2687
2969
|
};
|
|
2688
2970
|
};
|
|
2971
|
+
readonly reason: {
|
|
2972
|
+
readonly enum: readonly ["external-worktree", "main-repo", "missing-project-context", "git-error"];
|
|
2973
|
+
};
|
|
2974
|
+
readonly worktreeWillRemain: {
|
|
2975
|
+
readonly const: true;
|
|
2976
|
+
};
|
|
2689
2977
|
};
|
|
2690
2978
|
readonly additionalProperties: false;
|
|
2691
2979
|
};
|
|
@@ -2739,6 +3027,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2739
3027
|
readonly agentType: {
|
|
2740
3028
|
readonly type: "string";
|
|
2741
3029
|
};
|
|
3030
|
+
readonly agentDetection: {
|
|
3031
|
+
readonly enum: readonly ["declared", "command", "process", "screen"];
|
|
3032
|
+
};
|
|
3033
|
+
readonly launchCommand: {
|
|
3034
|
+
readonly type: "string";
|
|
3035
|
+
};
|
|
2742
3036
|
readonly isCliPanel: {
|
|
2743
3037
|
readonly type: "boolean";
|
|
2744
3038
|
};
|
|
@@ -2751,6 +3045,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2751
3045
|
readonly lastActiveAt: {
|
|
2752
3046
|
readonly type: "string";
|
|
2753
3047
|
};
|
|
3048
|
+
readonly report: {
|
|
3049
|
+
readonly $ref: "#/jsonSchemas/agentReport";
|
|
3050
|
+
};
|
|
2754
3051
|
};
|
|
2755
3052
|
readonly additionalProperties: false;
|
|
2756
3053
|
};
|
|
@@ -2826,6 +3123,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2826
3123
|
readonly ok: {
|
|
2827
3124
|
readonly const: true;
|
|
2828
3125
|
};
|
|
3126
|
+
readonly generation: {
|
|
3127
|
+
readonly type: "number";
|
|
3128
|
+
};
|
|
2829
3129
|
readonly panelId: {
|
|
2830
3130
|
readonly type: "string";
|
|
2831
3131
|
};
|
|
@@ -3022,6 +3322,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3022
3322
|
readonly hasUndeliveredText: {
|
|
3023
3323
|
readonly type: "boolean";
|
|
3024
3324
|
};
|
|
3325
|
+
readonly ghostText: {
|
|
3326
|
+
readonly type: "string";
|
|
3327
|
+
};
|
|
3025
3328
|
};
|
|
3026
3329
|
readonly additionalProperties: false;
|
|
3027
3330
|
};
|
|
@@ -3044,6 +3347,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3044
3347
|
readonly input: {
|
|
3045
3348
|
readonly type: "string";
|
|
3046
3349
|
};
|
|
3350
|
+
readonly asFilePointer: {
|
|
3351
|
+
readonly type: "boolean";
|
|
3352
|
+
};
|
|
3047
3353
|
};
|
|
3048
3354
|
readonly additionalProperties: false;
|
|
3049
3355
|
};
|
|
@@ -3067,20 +3373,52 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3067
3373
|
readonly type: "number";
|
|
3068
3374
|
};
|
|
3069
3375
|
readonly enter: {
|
|
3070
|
-
readonly
|
|
3376
|
+
readonly enum: readonly ["cr", "tab"];
|
|
3071
3377
|
};
|
|
3072
3378
|
readonly sequenceName: {
|
|
3073
|
-
readonly enum: readonly ["codex-ctrl-enter-cr", "enter-cr"];
|
|
3379
|
+
readonly enum: readonly ["codex-ctrl-enter-cr", "enter-cr", "tab"];
|
|
3074
3380
|
};
|
|
3075
3381
|
readonly verifiedSubmitted: {
|
|
3076
3382
|
readonly type: "boolean";
|
|
3077
3383
|
};
|
|
3384
|
+
readonly delivery: {
|
|
3385
|
+
readonly type: "object";
|
|
3386
|
+
readonly required: readonly ["state", "evidence"];
|
|
3387
|
+
readonly properties: {
|
|
3388
|
+
readonly state: {
|
|
3389
|
+
readonly enum: readonly ["taken", "queued", "in-composer", "unknown"];
|
|
3390
|
+
};
|
|
3391
|
+
readonly evidence: {
|
|
3392
|
+
readonly enum: readonly ["transcript", "screen", "argv"];
|
|
3393
|
+
};
|
|
3394
|
+
};
|
|
3395
|
+
readonly additionalProperties: false;
|
|
3396
|
+
};
|
|
3078
3397
|
readonly sentAt: {
|
|
3079
3398
|
readonly type: "string";
|
|
3080
3399
|
};
|
|
3081
3400
|
readonly blocked: {
|
|
3082
3401
|
readonly $ref: "#/jsonSchemas/panelSubmitComposerResult/properties/blocked";
|
|
3083
3402
|
};
|
|
3403
|
+
readonly promptFile: {
|
|
3404
|
+
readonly type: "string";
|
|
3405
|
+
};
|
|
3406
|
+
readonly warnings: {
|
|
3407
|
+
readonly type: "array";
|
|
3408
|
+
readonly items: {
|
|
3409
|
+
readonly type: "object";
|
|
3410
|
+
readonly required: readonly ["code", "message"];
|
|
3411
|
+
readonly properties: {
|
|
3412
|
+
readonly code: {
|
|
3413
|
+
readonly enum: readonly ["leading-bang-runs-shell", "leading-hash-memory", "leading-slash-command", "leading-at-mention"];
|
|
3414
|
+
};
|
|
3415
|
+
readonly message: {
|
|
3416
|
+
readonly type: "string";
|
|
3417
|
+
};
|
|
3418
|
+
};
|
|
3419
|
+
readonly additionalProperties: false;
|
|
3420
|
+
};
|
|
3421
|
+
};
|
|
3084
3422
|
readonly nextCommand: {
|
|
3085
3423
|
readonly type: "string";
|
|
3086
3424
|
};
|
|
@@ -3181,6 +3519,60 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3181
3519
|
};
|
|
3182
3520
|
readonly additionalProperties: false;
|
|
3183
3521
|
};
|
|
3522
|
+
readonly panelLastMessageResult: {
|
|
3523
|
+
readonly oneOf: readonly [{
|
|
3524
|
+
readonly type: "object";
|
|
3525
|
+
readonly required: readonly ["ok", "panelId", "paneId", "agentType", "text", "length", "limit", "truncated"];
|
|
3526
|
+
readonly properties: {
|
|
3527
|
+
readonly ok: {
|
|
3528
|
+
readonly const: true;
|
|
3529
|
+
};
|
|
3530
|
+
readonly panelId: {
|
|
3531
|
+
readonly type: "string";
|
|
3532
|
+
};
|
|
3533
|
+
readonly paneId: {
|
|
3534
|
+
readonly type: "string";
|
|
3535
|
+
};
|
|
3536
|
+
readonly agentType: {
|
|
3537
|
+
readonly enum: readonly ["claude", "codex"];
|
|
3538
|
+
};
|
|
3539
|
+
readonly text: {
|
|
3540
|
+
readonly type: "string";
|
|
3541
|
+
};
|
|
3542
|
+
readonly length: {
|
|
3543
|
+
readonly type: "number";
|
|
3544
|
+
};
|
|
3545
|
+
readonly limit: {
|
|
3546
|
+
readonly type: "number";
|
|
3547
|
+
};
|
|
3548
|
+
readonly truncated: {
|
|
3549
|
+
readonly type: "boolean";
|
|
3550
|
+
};
|
|
3551
|
+
};
|
|
3552
|
+
readonly additionalProperties: false;
|
|
3553
|
+
}, {
|
|
3554
|
+
readonly type: "object";
|
|
3555
|
+
readonly required: readonly ["ok", "panelId", "paneId", "reason", "message"];
|
|
3556
|
+
readonly properties: {
|
|
3557
|
+
readonly ok: {
|
|
3558
|
+
readonly const: false;
|
|
3559
|
+
};
|
|
3560
|
+
readonly panelId: {
|
|
3561
|
+
readonly type: "string";
|
|
3562
|
+
};
|
|
3563
|
+
readonly paneId: {
|
|
3564
|
+
readonly type: "string";
|
|
3565
|
+
};
|
|
3566
|
+
readonly reason: {
|
|
3567
|
+
readonly const: "transcript-unavailable";
|
|
3568
|
+
};
|
|
3569
|
+
readonly message: {
|
|
3570
|
+
readonly type: "string";
|
|
3571
|
+
};
|
|
3572
|
+
};
|
|
3573
|
+
readonly additionalProperties: false;
|
|
3574
|
+
}];
|
|
3575
|
+
};
|
|
3184
3576
|
readonly agentDoctorResult: {
|
|
3185
3577
|
readonly type: "object";
|
|
3186
3578
|
readonly required: readonly ["ok", "agent", "command", "available", "checks"];
|
|
@@ -3379,6 +3771,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3379
3771
|
};
|
|
3380
3772
|
readonly additionalProperties: false;
|
|
3381
3773
|
};
|
|
3774
|
+
readonly promptFile: {
|
|
3775
|
+
readonly type: "string";
|
|
3776
|
+
};
|
|
3777
|
+
readonly warnings: {
|
|
3778
|
+
readonly $ref: "#/jsonSchemas/panelSubmitResult/properties/warnings";
|
|
3779
|
+
};
|
|
3382
3780
|
readonly nextCommand: {
|
|
3383
3781
|
readonly type: "string";
|
|
3384
3782
|
};
|
|
@@ -3393,7 +3791,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3393
3791
|
readonly type: "string";
|
|
3394
3792
|
};
|
|
3395
3793
|
readonly strategy: {
|
|
3396
|
-
readonly enum: readonly ["auto", "codex-ctrl-enter", "enter"];
|
|
3794
|
+
readonly enum: readonly ["auto", "codex-ctrl-enter", "enter", "tab"];
|
|
3397
3795
|
};
|
|
3398
3796
|
};
|
|
3399
3797
|
readonly additionalProperties: false;
|
|
@@ -3418,14 +3816,17 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3418
3816
|
readonly type: "number";
|
|
3419
3817
|
};
|
|
3420
3818
|
readonly strategy: {
|
|
3421
|
-
readonly enum: readonly ["codex-ctrl-enter", "enter"];
|
|
3819
|
+
readonly enum: readonly ["codex-ctrl-enter", "enter", "tab"];
|
|
3422
3820
|
};
|
|
3423
3821
|
readonly sequenceName: {
|
|
3424
|
-
readonly enum: readonly ["codex-ctrl-enter-cr", "enter-cr"];
|
|
3822
|
+
readonly enum: readonly ["codex-ctrl-enter-cr", "enter-cr", "tab"];
|
|
3425
3823
|
};
|
|
3426
3824
|
readonly verifiedSubmitted: {
|
|
3427
3825
|
readonly type: "boolean";
|
|
3428
3826
|
};
|
|
3827
|
+
readonly delivery: {
|
|
3828
|
+
readonly $ref: "#/jsonSchemas/panelSubmitResult/properties/delivery";
|
|
3829
|
+
};
|
|
3429
3830
|
readonly sentAt: {
|
|
3430
3831
|
readonly type: "string";
|
|
3431
3832
|
};
|
|
@@ -3434,7 +3835,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3434
3835
|
readonly required: readonly ["kind", "message"];
|
|
3435
3836
|
readonly properties: {
|
|
3436
3837
|
readonly kind: {
|
|
3437
|
-
readonly enum: readonly ["codex-update", "agent-prompt", "submission_unverified", "unknown"];
|
|
3838
|
+
readonly enum: readonly ["codex-update", "agent-prompt", "submission_unverified", "composer-unknown", "unknown"];
|
|
3438
3839
|
};
|
|
3439
3840
|
readonly message: {
|
|
3440
3841
|
readonly type: "string";
|
|
@@ -3514,36 +3915,234 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3514
3915
|
readonly refreshedAt: {
|
|
3515
3916
|
readonly type: "string";
|
|
3516
3917
|
};
|
|
3517
|
-
|
|
3518
|
-
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
readonly type: "object";
|
|
3522
|
-
readonly required: readonly ["ok"];
|
|
3523
|
-
readonly properties: {
|
|
3524
|
-
readonly ok: {
|
|
3525
|
-
readonly type: "boolean";
|
|
3526
|
-
};
|
|
3527
|
-
readonly data: {};
|
|
3528
|
-
readonly error: {
|
|
3529
|
-
readonly type: "object";
|
|
3530
|
-
readonly required: readonly ["message"];
|
|
3531
|
-
readonly properties: {
|
|
3532
|
-
readonly message: {
|
|
3533
|
-
readonly type: "string";
|
|
3534
|
-
};
|
|
3918
|
+
readonly locks: {
|
|
3919
|
+
readonly type: "array";
|
|
3920
|
+
readonly items: {
|
|
3921
|
+
readonly $ref: "#/jsonSchemas/lockListResult/properties/locks/items";
|
|
3535
3922
|
};
|
|
3536
|
-
readonly additionalProperties: false;
|
|
3537
|
-
};
|
|
3538
|
-
readonly link: {
|
|
3539
|
-
readonly type: "string";
|
|
3540
3923
|
};
|
|
3541
3924
|
};
|
|
3542
3925
|
readonly additionalProperties: false;
|
|
3543
3926
|
};
|
|
3544
|
-
readonly
|
|
3927
|
+
readonly lockListResult: {
|
|
3545
3928
|
readonly type: "object";
|
|
3546
|
-
readonly required: readonly ["ok", "
|
|
3929
|
+
readonly required: readonly ["ok", "locks"];
|
|
3930
|
+
readonly properties: {
|
|
3931
|
+
readonly ok: {
|
|
3932
|
+
readonly const: true;
|
|
3933
|
+
};
|
|
3934
|
+
readonly locks: {
|
|
3935
|
+
readonly type: "array";
|
|
3936
|
+
readonly items: {
|
|
3937
|
+
readonly type: "object";
|
|
3938
|
+
readonly required: readonly ["name", "scope", "owner", "acquiredAt", "expiresAt", "ttlMs"];
|
|
3939
|
+
readonly properties: {
|
|
3940
|
+
readonly name: {
|
|
3941
|
+
readonly type: "string";
|
|
3942
|
+
readonly minLength: 1;
|
|
3943
|
+
};
|
|
3944
|
+
readonly scope: {
|
|
3945
|
+
readonly enum: readonly ["session", "global"];
|
|
3946
|
+
};
|
|
3947
|
+
readonly sessionId: {
|
|
3948
|
+
readonly type: "string";
|
|
3949
|
+
};
|
|
3950
|
+
readonly owner: {
|
|
3951
|
+
readonly type: "object";
|
|
3952
|
+
readonly required: readonly ["kind"];
|
|
3953
|
+
readonly properties: {
|
|
3954
|
+
readonly kind: {
|
|
3955
|
+
readonly enum: readonly ["pane", "external"];
|
|
3956
|
+
};
|
|
3957
|
+
readonly paneId: {
|
|
3958
|
+
readonly type: "string";
|
|
3959
|
+
};
|
|
3960
|
+
readonly panelId: {
|
|
3961
|
+
readonly type: "string";
|
|
3962
|
+
};
|
|
3963
|
+
readonly label: {
|
|
3964
|
+
readonly type: "string";
|
|
3965
|
+
};
|
|
3966
|
+
};
|
|
3967
|
+
readonly additionalProperties: false;
|
|
3968
|
+
};
|
|
3969
|
+
readonly note: {
|
|
3970
|
+
readonly type: "string";
|
|
3971
|
+
};
|
|
3972
|
+
readonly acquiredAt: {
|
|
3973
|
+
readonly type: "string";
|
|
3974
|
+
};
|
|
3975
|
+
readonly expiresAt: {
|
|
3976
|
+
readonly type: "string";
|
|
3977
|
+
};
|
|
3978
|
+
readonly ttlMs: {
|
|
3979
|
+
readonly type: "number";
|
|
3980
|
+
};
|
|
3981
|
+
};
|
|
3982
|
+
readonly additionalProperties: false;
|
|
3983
|
+
};
|
|
3984
|
+
};
|
|
3985
|
+
};
|
|
3986
|
+
readonly additionalProperties: false;
|
|
3987
|
+
};
|
|
3988
|
+
readonly lockAcquireRequest: {
|
|
3989
|
+
readonly type: "object";
|
|
3990
|
+
readonly required: readonly ["name", "ttlMs", "owner"];
|
|
3991
|
+
readonly properties: {
|
|
3992
|
+
readonly name: {
|
|
3993
|
+
readonly type: "string";
|
|
3994
|
+
readonly minLength: 1;
|
|
3995
|
+
};
|
|
3996
|
+
readonly ttlMs: {
|
|
3997
|
+
readonly type: "number";
|
|
3998
|
+
};
|
|
3999
|
+
readonly waitMs: {
|
|
4000
|
+
readonly type: "number";
|
|
4001
|
+
};
|
|
4002
|
+
readonly note: {
|
|
4003
|
+
readonly type: "string";
|
|
4004
|
+
};
|
|
4005
|
+
readonly owner: {
|
|
4006
|
+
readonly type: "object";
|
|
4007
|
+
readonly properties: {
|
|
4008
|
+
readonly paneId: {
|
|
4009
|
+
readonly type: "string";
|
|
4010
|
+
};
|
|
4011
|
+
readonly panelId: {
|
|
4012
|
+
readonly type: "string";
|
|
4013
|
+
};
|
|
4014
|
+
readonly label: {
|
|
4015
|
+
readonly type: "string";
|
|
4016
|
+
};
|
|
4017
|
+
};
|
|
4018
|
+
readonly additionalProperties: false;
|
|
4019
|
+
};
|
|
4020
|
+
};
|
|
4021
|
+
readonly additionalProperties: false;
|
|
4022
|
+
};
|
|
4023
|
+
readonly lockAcquireResult: {
|
|
4024
|
+
readonly oneOf: readonly [{
|
|
4025
|
+
readonly type: "object";
|
|
4026
|
+
readonly required: readonly ["ok", "acquired", "renewed", "waitedMs", "lock"];
|
|
4027
|
+
readonly properties: {
|
|
4028
|
+
readonly ok: {
|
|
4029
|
+
readonly const: true;
|
|
4030
|
+
};
|
|
4031
|
+
readonly acquired: {
|
|
4032
|
+
readonly const: true;
|
|
4033
|
+
};
|
|
4034
|
+
readonly renewed: {
|
|
4035
|
+
readonly type: "boolean";
|
|
4036
|
+
};
|
|
4037
|
+
readonly waitedMs: {
|
|
4038
|
+
readonly type: "number";
|
|
4039
|
+
};
|
|
4040
|
+
readonly lock: {
|
|
4041
|
+
readonly $ref: "#/jsonSchemas/lockListResult/properties/locks/items";
|
|
4042
|
+
};
|
|
4043
|
+
};
|
|
4044
|
+
readonly additionalProperties: false;
|
|
4045
|
+
}, {
|
|
4046
|
+
readonly type: "object";
|
|
4047
|
+
readonly required: readonly ["ok", "acquired", "timedOut", "waitedMs", "heldBy", "expiresAt", "lock"];
|
|
4048
|
+
readonly properties: {
|
|
4049
|
+
readonly ok: {
|
|
4050
|
+
readonly const: false;
|
|
4051
|
+
};
|
|
4052
|
+
readonly acquired: {
|
|
4053
|
+
readonly const: false;
|
|
4054
|
+
};
|
|
4055
|
+
readonly timedOut: {
|
|
4056
|
+
readonly type: "boolean";
|
|
4057
|
+
};
|
|
4058
|
+
readonly waitedMs: {
|
|
4059
|
+
readonly type: "number";
|
|
4060
|
+
};
|
|
4061
|
+
readonly heldBy: {
|
|
4062
|
+
readonly $ref: "#/jsonSchemas/lockListResult/properties/locks/items/properties/owner";
|
|
4063
|
+
};
|
|
4064
|
+
readonly expiresAt: {
|
|
4065
|
+
readonly type: "string";
|
|
4066
|
+
};
|
|
4067
|
+
readonly lock: {
|
|
4068
|
+
readonly $ref: "#/jsonSchemas/lockListResult/properties/locks/items";
|
|
4069
|
+
};
|
|
4070
|
+
};
|
|
4071
|
+
readonly additionalProperties: false;
|
|
4072
|
+
}];
|
|
4073
|
+
};
|
|
4074
|
+
readonly lockReleaseResult: {
|
|
4075
|
+
readonly oneOf: readonly [{
|
|
4076
|
+
readonly type: "object";
|
|
4077
|
+
readonly required: readonly ["ok", "released", "forced"];
|
|
4078
|
+
readonly properties: {
|
|
4079
|
+
readonly ok: {
|
|
4080
|
+
readonly const: true;
|
|
4081
|
+
};
|
|
4082
|
+
readonly released: {
|
|
4083
|
+
readonly type: "boolean";
|
|
4084
|
+
};
|
|
4085
|
+
readonly forced: {
|
|
4086
|
+
readonly type: "boolean";
|
|
4087
|
+
};
|
|
4088
|
+
readonly lock: {
|
|
4089
|
+
readonly $ref: "#/jsonSchemas/lockListResult/properties/locks/items";
|
|
4090
|
+
};
|
|
4091
|
+
};
|
|
4092
|
+
readonly additionalProperties: false;
|
|
4093
|
+
}, {
|
|
4094
|
+
readonly type: "object";
|
|
4095
|
+
readonly required: readonly ["ok", "released", "reason", "heldBy", "expiresAt", "lock"];
|
|
4096
|
+
readonly properties: {
|
|
4097
|
+
readonly ok: {
|
|
4098
|
+
readonly const: false;
|
|
4099
|
+
};
|
|
4100
|
+
readonly released: {
|
|
4101
|
+
readonly const: false;
|
|
4102
|
+
};
|
|
4103
|
+
readonly reason: {
|
|
4104
|
+
readonly const: "not-owner";
|
|
4105
|
+
};
|
|
4106
|
+
readonly heldBy: {
|
|
4107
|
+
readonly $ref: "#/jsonSchemas/lockListResult/properties/locks/items/properties/owner";
|
|
4108
|
+
};
|
|
4109
|
+
readonly expiresAt: {
|
|
4110
|
+
readonly type: "string";
|
|
4111
|
+
};
|
|
4112
|
+
readonly lock: {
|
|
4113
|
+
readonly $ref: "#/jsonSchemas/lockListResult/properties/locks/items";
|
|
4114
|
+
};
|
|
4115
|
+
};
|
|
4116
|
+
readonly additionalProperties: false;
|
|
4117
|
+
}];
|
|
4118
|
+
};
|
|
4119
|
+
readonly daemonActionResult: {
|
|
4120
|
+
readonly type: "object";
|
|
4121
|
+
readonly required: readonly ["ok"];
|
|
4122
|
+
readonly properties: {
|
|
4123
|
+
readonly ok: {
|
|
4124
|
+
readonly type: "boolean";
|
|
4125
|
+
};
|
|
4126
|
+
readonly data: {};
|
|
4127
|
+
readonly error: {
|
|
4128
|
+
readonly type: "object";
|
|
4129
|
+
readonly required: readonly ["message"];
|
|
4130
|
+
readonly properties: {
|
|
4131
|
+
readonly message: {
|
|
4132
|
+
readonly type: "string";
|
|
4133
|
+
};
|
|
4134
|
+
};
|
|
4135
|
+
readonly additionalProperties: false;
|
|
4136
|
+
};
|
|
4137
|
+
readonly link: {
|
|
4138
|
+
readonly type: "string";
|
|
4139
|
+
};
|
|
4140
|
+
};
|
|
4141
|
+
readonly additionalProperties: false;
|
|
4142
|
+
};
|
|
4143
|
+
readonly linkCreateResult: {
|
|
4144
|
+
readonly type: "object";
|
|
4145
|
+
readonly required: readonly ["ok", "url", "target"];
|
|
3547
4146
|
readonly properties: {
|
|
3548
4147
|
readonly ok: {
|
|
3549
4148
|
readonly const: true;
|
|
@@ -3689,6 +4288,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3689
4288
|
readonly link: {
|
|
3690
4289
|
readonly type: "string";
|
|
3691
4290
|
};
|
|
4291
|
+
readonly report: {
|
|
4292
|
+
readonly $ref: "#/jsonSchemas/agentReport";
|
|
4293
|
+
};
|
|
3692
4294
|
};
|
|
3693
4295
|
readonly additionalProperties: false;
|
|
3694
4296
|
};
|
|
@@ -3708,21 +4310,181 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3708
4310
|
readonly delivered: {
|
|
3709
4311
|
readonly type: "boolean";
|
|
3710
4312
|
};
|
|
4313
|
+
readonly delivery: {
|
|
4314
|
+
readonly $ref: "#/jsonSchemas/panelSubmitResult/properties/delivery";
|
|
4315
|
+
};
|
|
3711
4316
|
readonly blocked: {
|
|
3712
4317
|
readonly type: "string";
|
|
3713
4318
|
};
|
|
4319
|
+
readonly promptFile: {
|
|
4320
|
+
readonly type: "string";
|
|
4321
|
+
};
|
|
4322
|
+
readonly warnings: {
|
|
4323
|
+
readonly $ref: "#/jsonSchemas/panelSubmitResult/properties/warnings";
|
|
4324
|
+
};
|
|
3714
4325
|
readonly next: {
|
|
3715
4326
|
readonly type: "string";
|
|
3716
4327
|
};
|
|
3717
4328
|
};
|
|
3718
4329
|
readonly additionalProperties: false;
|
|
3719
4330
|
};
|
|
4331
|
+
readonly agentContextUnknownCommandError: {
|
|
4332
|
+
readonly type: "object";
|
|
4333
|
+
readonly required: readonly ["ok", "code", "message", "candidates"];
|
|
4334
|
+
readonly properties: {
|
|
4335
|
+
readonly ok: {
|
|
4336
|
+
readonly const: false;
|
|
4337
|
+
};
|
|
4338
|
+
readonly code: {
|
|
4339
|
+
readonly const: "unknown_command";
|
|
4340
|
+
};
|
|
4341
|
+
readonly message: {
|
|
4342
|
+
readonly type: "string";
|
|
4343
|
+
};
|
|
4344
|
+
readonly candidates: {
|
|
4345
|
+
readonly type: "array";
|
|
4346
|
+
readonly items: {
|
|
4347
|
+
readonly type: "string";
|
|
4348
|
+
};
|
|
4349
|
+
};
|
|
4350
|
+
};
|
|
4351
|
+
readonly additionalProperties: false;
|
|
4352
|
+
};
|
|
4353
|
+
readonly reportResult: {
|
|
4354
|
+
readonly type: "object";
|
|
4355
|
+
readonly required: readonly ["ok", "paneId", "panelId", "report", "sessionIds"];
|
|
4356
|
+
readonly properties: {
|
|
4357
|
+
readonly ok: {
|
|
4358
|
+
readonly const: true;
|
|
4359
|
+
};
|
|
4360
|
+
readonly generation: {
|
|
4361
|
+
readonly type: "number";
|
|
4362
|
+
};
|
|
4363
|
+
readonly paneId: {
|
|
4364
|
+
readonly type: "string";
|
|
4365
|
+
};
|
|
4366
|
+
readonly panelId: {
|
|
4367
|
+
readonly type: "string";
|
|
4368
|
+
};
|
|
4369
|
+
readonly report: {
|
|
4370
|
+
readonly $ref: "#/jsonSchemas/agentReport";
|
|
4371
|
+
};
|
|
4372
|
+
readonly sessionIds: {
|
|
4373
|
+
readonly type: "array";
|
|
4374
|
+
readonly items: {
|
|
4375
|
+
readonly type: "string";
|
|
4376
|
+
};
|
|
4377
|
+
};
|
|
4378
|
+
};
|
|
4379
|
+
readonly additionalProperties: false;
|
|
4380
|
+
};
|
|
4381
|
+
readonly paneArchiveBulkRequest: {
|
|
4382
|
+
readonly type: "object";
|
|
4383
|
+
readonly required: readonly ["sessionId", "merged"];
|
|
4384
|
+
readonly properties: {
|
|
4385
|
+
readonly sessionId: {
|
|
4386
|
+
readonly type: "string";
|
|
4387
|
+
};
|
|
4388
|
+
readonly merged: {
|
|
4389
|
+
readonly const: true;
|
|
4390
|
+
};
|
|
4391
|
+
readonly source: {
|
|
4392
|
+
readonly enum: readonly ["user", "agent"];
|
|
4393
|
+
};
|
|
4394
|
+
readonly dryRun: {
|
|
4395
|
+
readonly type: "boolean";
|
|
4396
|
+
};
|
|
4397
|
+
readonly removeWorktree: {
|
|
4398
|
+
readonly type: "boolean";
|
|
4399
|
+
};
|
|
4400
|
+
};
|
|
4401
|
+
readonly additionalProperties: false;
|
|
4402
|
+
};
|
|
4403
|
+
readonly paneArchiveBulkResult: {
|
|
4404
|
+
readonly type: "object";
|
|
4405
|
+
readonly required: readonly ["ok", "sessionId", "merged", "removeWorktree", "archived", "skipped", "failed", "items"];
|
|
4406
|
+
readonly properties: {
|
|
4407
|
+
readonly ok: {
|
|
4408
|
+
readonly type: "boolean";
|
|
4409
|
+
};
|
|
4410
|
+
readonly sessionId: {
|
|
4411
|
+
readonly type: "string";
|
|
4412
|
+
};
|
|
4413
|
+
readonly merged: {
|
|
4414
|
+
readonly const: true;
|
|
4415
|
+
};
|
|
4416
|
+
readonly dryRun: {
|
|
4417
|
+
readonly const: true;
|
|
4418
|
+
};
|
|
4419
|
+
readonly removeWorktree: {
|
|
4420
|
+
readonly type: "boolean";
|
|
4421
|
+
};
|
|
4422
|
+
readonly archived: {
|
|
4423
|
+
readonly type: "number";
|
|
4424
|
+
readonly description: "Panes archived, or that would be archived with --dry-run.";
|
|
4425
|
+
};
|
|
4426
|
+
readonly skipped: {
|
|
4427
|
+
readonly type: "number";
|
|
4428
|
+
};
|
|
4429
|
+
readonly failed: {
|
|
4430
|
+
readonly type: "number";
|
|
4431
|
+
};
|
|
4432
|
+
readonly items: {
|
|
4433
|
+
readonly type: "array";
|
|
4434
|
+
readonly items: {
|
|
4435
|
+
readonly type: "object";
|
|
4436
|
+
readonly required: readonly ["paneId", "outcome"];
|
|
4437
|
+
readonly properties: {
|
|
4438
|
+
readonly paneId: {
|
|
4439
|
+
readonly type: "string";
|
|
4440
|
+
};
|
|
4441
|
+
readonly name: {
|
|
4442
|
+
readonly type: "string";
|
|
4443
|
+
};
|
|
4444
|
+
readonly outcome: {
|
|
4445
|
+
readonly enum: readonly ["archived", "would-archive", "skipped", "failed"];
|
|
4446
|
+
};
|
|
4447
|
+
readonly skipped: {
|
|
4448
|
+
readonly type: "object";
|
|
4449
|
+
readonly required: readonly ["code", "message"];
|
|
4450
|
+
readonly properties: {
|
|
4451
|
+
readonly code: {
|
|
4452
|
+
readonly enum: readonly ["uncommitted-changes", "unpushed-commits", "uncommitted-and-unpushed", "status-unknown", "missing-pane", "already-archived", "main-repo"];
|
|
4453
|
+
};
|
|
4454
|
+
readonly message: {
|
|
4455
|
+
readonly type: "string";
|
|
4456
|
+
};
|
|
4457
|
+
};
|
|
4458
|
+
readonly additionalProperties: false;
|
|
4459
|
+
};
|
|
4460
|
+
readonly error: {
|
|
4461
|
+
readonly type: "string";
|
|
4462
|
+
};
|
|
4463
|
+
readonly safetyCheck: {
|
|
4464
|
+
readonly $ref: "#/jsonSchemas/paneArchiveResult/oneOf/0/properties/safetyCheck";
|
|
4465
|
+
};
|
|
4466
|
+
readonly worktreeCleanup: {
|
|
4467
|
+
readonly $ref: "#/jsonSchemas/paneArchiveResult/oneOf/0/properties/worktreeCleanup";
|
|
4468
|
+
};
|
|
4469
|
+
readonly trashDeletion: {
|
|
4470
|
+
readonly $ref: "#/jsonSchemas/paneArchiveResult/oneOf/0/properties/trashDeletion";
|
|
4471
|
+
};
|
|
4472
|
+
readonly worktreePath: {
|
|
4473
|
+
readonly type: "string";
|
|
4474
|
+
};
|
|
4475
|
+
};
|
|
4476
|
+
readonly additionalProperties: false;
|
|
4477
|
+
};
|
|
4478
|
+
};
|
|
4479
|
+
};
|
|
4480
|
+
readonly additionalProperties: false;
|
|
4481
|
+
};
|
|
3720
4482
|
};
|
|
3721
4483
|
readonly agentContext: {
|
|
3722
4484
|
readonly brief: {
|
|
3723
4485
|
readonly title: "Pane agent context";
|
|
3724
4486
|
readonly summary: "Pane lets a developer manage saved base repositories, user-visible Panes (Pane sessions) for feature/PR work, and terminal-backed panel tabs. A Pane is a visible workspace that normally maps to one Pane-managed git worktree and branch; a panel is a terminal tab inside one Pane and shares that Pane's worktree; an agent is a CLI process running inside a panel.";
|
|
3725
|
-
readonly rules: readonly ["Start with `runpane doctor --json` to understand wrapper, platform, daemon reachability, and the next safe commands before mutating Pane state.", "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`.", "Happy path for any user request to use Pane/RunPane: run `runpane doctor --json`, read `runpane agent-context --json`, resolve or add the saved base repo, create the requested visible Pane 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` (the new Pane is pinned by default; add `--no-pinned` for a throwaway Pane, or use `--tool-command <command>` instead of `--agent <agent>`), then validate with `panels wait` or `panels screen`. For long-lived supervision, use `runpane watch --follow` instead of polling wait or screen.", "Treat Pane as the user's visible cockpit for watching/co-driving work. Do not create Panes or panels for private delegation unless the user asked for visible Pane orchestration or the result should appear in the Pane app.", "Register the saved base repository once with `repos add`; do not register a pre-created worktree as a separate repo unless the user explicitly asks.", "Use `panes create` for separate visible Panes (Pane sessions) for feature/PR work. Pane creates and owns the worktree/branch for each new Pane.", "Use `panels create` for reviewer/helper/clean-context tabs that should stay inside an existing Pane and share that Pane's worktree.", "For private background decomposition, use your normal subagent/worktree mechanism instead of Pane.", "Skill routing: Pane's skills live in `<PANE_DIR>/skills/pane-chat/skills/`, and the Pane Chat entry point is `<PANE_DIR>/skills/pane-chat/pane-orchestrator/SKILL.md`; read the skill that matches the request, such as `discussion`, `create-ticket`, `tdd`, `prepare-pr`, or `review`.", "When an agent creates Panes or panels, pass `--source agent --no-focus --wait-ready --yes --json` unless the user explicitly wants focus moved; `panes create` pins the new Pane into the UI's favorite/pin set by default, so no follow-up `panes pin` call is needed and `--no-pinned` is the opt-out for throwaway Panes.", "Use `runpane agent-context --json` for the full agent-facing CLI context, or `runpane agent-context --command <command> --json` for one detailed command definition.", "For `agent-context --command`, use canonical spaced names like `panes create`; copied forms like `panes.create` or `runpane panes create` are accepted too.", "Use `runpane repos list --json` to find the saved repository when unsure after doctor shows the daemon is reachable.", "If WSL cannot reach Pane or `runpane` resolves to a broken Windows shim, the user may be running Windows Pane; try `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane doctor --json'`.", "If the repository exists on disk but is not saved in Pane, use `runpane repos add --path <repo> --yes --json` before creating panes.", "Use `runpane agents doctor --agent <codex|claude|cursor> --repo <selector> --json` when agent availability differs across host, Windows, WSL, or repo environments.", "Use `runpane panes create --wait-ready` to create Panes and validate initial terminal readiness in one call.", "Use `runpane panels screen` for compact current state, including Claude and Codex composer state. Use `panels wait` for create-time readiness or text checks. Use `runpane watch --follow` to block on workspace transitions (READY, BLOCKED, IDLE, STUCK, EXIT) without polling. Use `panels submit` to send and submit a new turn. Use `panels submit-composer --strategy auto` only for a composer that was filled separately.", "Use `runpane panels input` only when exact bytes are required, such as Ctrl-C or handcrafted terminal input.", "Pane terminals draw inline images: sixel, iTerm2 inline images, and the kitty graphics protocol. Tools that need kitty graphics, such as terminal-browser and terminal-doom, run inside a Pane panel; `runpane doctor --json` reports the exact list under `terminal.graphicsProtocols`.", "After creating Panes or sending terminal input, validate with `panels wait` or bounded `panels screen` before reporting success. For ongoing supervision, `runpane watch --follow` is the canonical monitor."];
|
|
4487
|
+
readonly rules: readonly ["Start with `runpane doctor --json` to understand wrapper, platform, daemon reachability, and the next safe commands before mutating Pane state.", "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`.", "Happy path for any user request to use Pane/RunPane: run `runpane doctor --json`, read `runpane agent-context --json`, resolve or add the saved base repo, create the requested visible Pane 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` (the new Pane is pinned by default; add `--no-pinned` for a throwaway Pane, add `--base-branch <ref>` to branch from something other than the repository default, or use `--tool-command <command>` instead of `--agent <agent>`), then validate with `panels wait` or `panels screen`. For long-lived supervision, use `runpane watch --follow` instead of polling wait or screen.", "Treat Pane as the user's visible cockpit for watching/co-driving work. Do not create Panes or panels for private delegation unless the user asked for visible Pane orchestration or the result should appear in the Pane app.", "Register the saved base repository once with `repos add`; do not register a pre-created worktree as a separate repo unless the user explicitly asks.", "Use `panes create` for separate visible Panes (Pane sessions) for feature/PR work. Pane creates and owns the worktree/branch for each new Pane.", "Use `panels create` for reviewer/helper/clean-context tabs that should stay inside an existing Pane and share that Pane's worktree.", "For private background decomposition, use your normal subagent/worktree mechanism instead of Pane.", "Skill routing: Pane's skills live in `<PANE_DIR>/skills/pane-chat/skills/`, and the Pane Chat entry point is `<PANE_DIR>/skills/pane-chat/pane-orchestrator/SKILL.md`; read the skill that matches the request, such as `discussion`, `create-ticket`, `tdd`, `prepare-pr`, or `review`.", "When an agent creates Panes or panels, pass `--source agent --no-focus --wait-ready --yes --json` unless the user explicitly wants focus moved; `panes create` pins the new Pane into the UI's favorite/pin set by default, so no follow-up `panes pin` call is needed and `--no-pinned` is the opt-out for throwaway Panes.", "Use `runpane agent-context --json` for the full agent-facing CLI context, or `runpane agent-context --command <command> --json` for one detailed command definition.", "For `agent-context --command`, use canonical spaced names like `panes create`; copied forms like `panes.create` or `runpane panes create` are accepted too.", "Use `runpane repos list --json` to find the saved repository when unsure after doctor shows the daemon is reachable.", "If WSL cannot reach Pane or `runpane` resolves to a broken Windows shim, the user may be running Windows Pane; try `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane doctor --json'`.", "If the repository exists on disk but is not saved in Pane, use `runpane repos add --path <repo> --yes --json` before creating panes.", "Use `runpane agents doctor --agent <codex|claude|cursor> --repo <selector> --json` when agent availability differs across host, Windows, WSL, or repo environments.", "Use `runpane panes create --wait-ready` to create Panes and validate initial terminal readiness in one call.", "Use `runpane panels screen` for compact current state, including Claude and Codex composer state. Use `panels wait` for create-time readiness or text checks. Use `runpane watch --follow` to block on workspace transitions (READY, BLOCKED, IDLE, STUCK, EXIT) without polling. Use `panels submit` to send and submit a new turn. Use `panels submit-composer --strategy auto` only for a composer that was filled separately.", "Use `runpane panels input` only when exact bytes are required, such as Ctrl-C or handcrafted terminal input.", "Pane terminals draw inline images: sixel, iTerm2 inline images, and the kitty graphics protocol. Tools that need kitty graphics, such as terminal-browser and terminal-doom, run inside a Pane panel; `runpane doctor --json` reports the exact list under `terminal.graphicsProtocols`.", "After creating Panes or sending terminal input, validate with `panels wait` or bounded `panels screen` before reporting success. For ongoing supervision, `runpane watch --follow` is the canonical monitor.", "When several agents share one resource, such as a test account, name a lock in their prompts: each worker runs `runpane lock acquire --name <name> --ttl 30m --wait 1800000 --json` before using it and `runpane lock release --name <name>` after."];
|
|
3726
4488
|
readonly detailCommand: "runpane agent-context --command <command> [--json]";
|
|
3727
4489
|
readonly tools: readonly [{
|
|
3728
4490
|
readonly name: "doctor";
|
|
@@ -3758,8 +4520,8 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3758
4520
|
readonly arguments: readonly ["--repo <selector>", "--name <name>", "--agent <codex|claude|cursor>", "--tool-command <command>", "--prompt <text>", "--initial-input-file <path|->", "--from-json <path|->", "--source <user|agent>", "--pinned", "--no-pinned", "--no-associate", "--no-focus", "--focus", "--wait-ready", "--ready-timeout-ms <ms>", "--concurrency <count>", "--yes", "--json"];
|
|
3759
4521
|
}, {
|
|
3760
4522
|
readonly name: "panes archive";
|
|
3761
|
-
readonly summary: "Archive a Pane exactly like the UI Archive action, including safe removal of its Pane-managed git worktree.";
|
|
3762
|
-
readonly arguments: readonly ["--pane <pane-id>", "--source <user|agent>", "--force", "--dry-run", "--yes", "--json"];
|
|
4523
|
+
readonly summary: "Archive a Pane exactly like the UI Archive action, including safe removal of its Pane-managed git worktree, or archive every merged Pane in a Session.";
|
|
4524
|
+
readonly arguments: readonly ["--pane <pane-id>", "--session <id|name>", "--merged", "--source <user|agent>", "--force", "--remove-worktree", "--dry-run", "--yes", "--json"];
|
|
3763
4525
|
}, {
|
|
3764
4526
|
readonly name: "panes pin";
|
|
3765
4527
|
readonly summary: "Declaratively pin a Pane (the Pane UI's favorite/pin star) without changing focus.";
|
|
@@ -3802,16 +4564,16 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3802
4564
|
readonly arguments: readonly ["--panel <panel-id>", "--text <text>", "--input-file <path|->", "--yes", "--json", "--pane-dir <path>"];
|
|
3803
4565
|
}, {
|
|
3804
4566
|
readonly name: "panels submit-composer";
|
|
3805
|
-
readonly summary: "Submit an agent composer with the
|
|
3806
|
-
readonly arguments: readonly ["--panel <panel-id>", "--strategy <auto|codex-ctrl-enter|enter>", "--yes", "--json"];
|
|
4567
|
+
readonly summary: "Submit an agent composer with the key for its current state.";
|
|
4568
|
+
readonly arguments: readonly ["--panel <panel-id>", "--strategy <auto|codex-ctrl-enter|enter|tab>", "--yes", "--json"];
|
|
3807
4569
|
}, {
|
|
3808
4570
|
readonly name: "panels wait";
|
|
3809
4571
|
readonly summary: "Wait for terminal initialized, ready, idle, or text state with compact output.";
|
|
3810
4572
|
readonly arguments: readonly ["--panel <panel-id>", "--for <condition>", "--contains <text>", "--timeout-ms <ms>", "--interval-ms <ms>", "--json", "--pane-dir <path>"];
|
|
3811
4573
|
}, {
|
|
3812
4574
|
readonly name: "watch";
|
|
3813
|
-
readonly summary: "Wait for workspace transitions (READY, BLOCKED, IDLE, STUCK, NEW, GONE, EXIT) from the daemon journal without polling; responsive by default, with opt-in cadence flags for expensive consumers.";
|
|
3814
|
-
readonly arguments: readonly ["--follow", "--self-test", "--kinds <kind,...>", "--settle <ms>", "--blocked-settle <ms>", "--min-interval <ms>", "--idle-backoff", "--json"];
|
|
4575
|
+
readonly summary: "Wait for workspace transitions (READY, BLOCKED, IDLE, STUCK, NEW, GONE, EXIT, JOINED, LEFT, PR) from the daemon journal without polling; responsive by default, with opt-in cadence flags for expensive consumers.";
|
|
4576
|
+
readonly arguments: readonly ["--follow", "--session <id|name>", "--self-test", "--kinds <kind,...>", "--settle <ms>", "--blocked-settle <ms>", "--min-interval <ms>", "--idle-backoff", "--json"];
|
|
3815
4577
|
}];
|
|
3816
4578
|
};
|
|
3817
4579
|
readonly commands: {
|
|
@@ -3904,6 +4666,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3904
4666
|
readonly value: "<path>";
|
|
3905
4667
|
readonly required: false;
|
|
3906
4668
|
readonly description: "Ignored for version; retained only for parser compatibility.";
|
|
4669
|
+
}, {
|
|
4670
|
+
readonly name: "--pane-dir";
|
|
4671
|
+
readonly value: "<path>";
|
|
4672
|
+
readonly required: false;
|
|
4673
|
+
readonly description: "Accepted and ignored, so one --pane-dir can be passed to every runpane command.";
|
|
3907
4674
|
}];
|
|
3908
4675
|
readonly examples: readonly ["runpane version", "runpane --version"];
|
|
3909
4676
|
readonly notes: readonly [];
|
|
@@ -4006,8 +4773,8 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4006
4773
|
readonly description: "Print machine-readable output.";
|
|
4007
4774
|
}];
|
|
4008
4775
|
readonly examples: readonly ["runpane agent-context", "runpane agent-context --command \"panes create\" --json"];
|
|
4009
|
-
readonly jsonSchemas: readonly ["agentContextBriefResult", "agentContextCommandResult"];
|
|
4010
|
-
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`."];
|
|
4776
|
+
readonly jsonSchemas: readonly ["agentContextBriefResult", "agentContextCommandResult", "agentContextUnknownCommandError"];
|
|
4777
|
+
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`.", "An unknown `--command` exits 2. With `--json` it prints `{ ok: false, code: \"unknown_command\", message, candidates }` on stdout, where `candidates` lists the closest command names first; without `--json` the same candidates go to stderr.", "`--pane-dir <path>` is accepted and ignored, so one `--pane-dir` can be passed to every runpane command."];
|
|
4011
4778
|
};
|
|
4012
4779
|
readonly mcp: {
|
|
4013
4780
|
readonly name: "mcp";
|
|
@@ -4109,7 +4876,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4109
4876
|
}];
|
|
4110
4877
|
readonly examples: readonly ["runpane panes list --repo active --json"];
|
|
4111
4878
|
readonly jsonSchemas: readonly ["paneListResult"];
|
|
4112
|
-
readonly notes: readonly ["Without --repo, this lists sessions across saved Pane repositories."];
|
|
4879
|
+
readonly notes: readonly ["Without --repo, this lists sessions across saved Pane repositories.", "`status` is `running` while any terminal panel is live, otherwise the stored lifecycle value. `agentState` is the most urgent state of the live agent panels: `blocked`, `working`, `ready`, or `none`. `agentStatus` (`active`/`idle`) is kept for older clients."];
|
|
4113
4880
|
};
|
|
4114
4881
|
readonly "panes cost": {
|
|
4115
4882
|
readonly name: "panes cost";
|
|
@@ -4157,16 +4924,41 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4157
4924
|
readonly value: "<name>";
|
|
4158
4925
|
readonly required: true;
|
|
4159
4926
|
readonly description: "Pane/session name.";
|
|
4927
|
+
}, {
|
|
4928
|
+
readonly name: "--base-branch";
|
|
4929
|
+
readonly value: "<branch>";
|
|
4930
|
+
readonly required: false;
|
|
4931
|
+
readonly description: "Branch the new worktree from this ref (for example origin/main or release/2.4) instead of the repository default.";
|
|
4932
|
+
}, {
|
|
4933
|
+
readonly name: "--worktree-name";
|
|
4934
|
+
readonly value: "<name>";
|
|
4935
|
+
readonly required: false;
|
|
4936
|
+
readonly description: "Worktree and branch name; defaults to --name. Characters outside [a-z0-9-] are removed.";
|
|
4160
4937
|
}, {
|
|
4161
4938
|
readonly name: "--agent";
|
|
4162
4939
|
readonly value: "<codex|claude|cursor>";
|
|
4163
4940
|
readonly required: false;
|
|
4164
|
-
readonly description: "Built-in agent terminal template to open.";
|
|
4941
|
+
readonly description: "Built-in agent terminal template to open. With --tool-command, the agent that command runs.";
|
|
4165
4942
|
}, {
|
|
4166
4943
|
readonly name: "--tool-command";
|
|
4167
4944
|
readonly value: "<command>";
|
|
4168
4945
|
readonly required: false;
|
|
4169
4946
|
readonly description: "Custom terminal command to run instead of a built-in agent.";
|
|
4947
|
+
}, {
|
|
4948
|
+
readonly name: "--base-branch";
|
|
4949
|
+
readonly value: "<ref>";
|
|
4950
|
+
readonly required: false;
|
|
4951
|
+
readonly description: "Ref to branch from, such as origin/main or release/foo. --base is an alias.";
|
|
4952
|
+
}, {
|
|
4953
|
+
readonly name: "--branch";
|
|
4954
|
+
readonly value: "<name>";
|
|
4955
|
+
readonly required: false;
|
|
4956
|
+
readonly description: "Exact new branch name, slashes included (for example agents/w5a). Fails if the branch exists; never renamed to be unique. Defaults to the worktree name.";
|
|
4957
|
+
}, {
|
|
4958
|
+
readonly name: "--worktree-name";
|
|
4959
|
+
readonly value: "<name>";
|
|
4960
|
+
readonly required: false;
|
|
4961
|
+
readonly description: "Worktree directory name; defaults to --name.";
|
|
4170
4962
|
}, {
|
|
4171
4963
|
readonly name: "--prompt";
|
|
4172
4964
|
readonly value: "<text>";
|
|
@@ -4176,7 +4968,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4176
4968
|
readonly name: "--initial-input-file";
|
|
4177
4969
|
readonly value: "<path|->";
|
|
4178
4970
|
readonly required: false;
|
|
4179
|
-
readonly description: "Read initial input from a file or stdin.";
|
|
4971
|
+
readonly description: "Read initial input from a file or stdin. --prompt-file is an alias.";
|
|
4972
|
+
}, {
|
|
4973
|
+
readonly name: "--as-file-pointer";
|
|
4974
|
+
readonly required: false;
|
|
4975
|
+
readonly description: "Write the prompt or text to a private file under the Pane directory and send the one line `Read and follow <path>` instead.";
|
|
4180
4976
|
}, {
|
|
4181
4977
|
readonly name: "--from-json";
|
|
4182
4978
|
readonly value: "<path|->";
|
|
@@ -4233,10 +5029,15 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4233
5029
|
readonly value: "<count>";
|
|
4234
5030
|
readonly required: false;
|
|
4235
5031
|
readonly description: "Accepted for compatibility. Pane currently serializes multi-pane session creation so queued jobs do not time out before starting.";
|
|
5032
|
+
}, {
|
|
5033
|
+
readonly name: "--pane-dir";
|
|
5034
|
+
readonly value: "<path>";
|
|
5035
|
+
readonly required: false;
|
|
5036
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
4236
5037
|
}];
|
|
4237
|
-
readonly examples: readonly ["runpane panes create --repo active --name issue-257 --agent <agent> --prompt \"Plan this issue\" --source agent --no-focus --wait-ready --yes --json", "runpane panes create --from-json panes.json --yes --json", "runpane panes create --repo active --name issue-123 --agent <agent> --prompt \"Plan this issue\" --source agent --no-focus --wait-ready --yes --json"];
|
|
5038
|
+
readonly examples: readonly ["runpane panes create --repo active --name issue-257 --agent <agent> --prompt \"Plan this issue\" --source agent --no-focus --wait-ready --yes --json", "runpane panes create --repo active --name w5a --base origin/main --branch agents/w5a --agent <agent> --prompt-file prompt.md --source agent --no-focus --wait-ready --yes --json", "runpane panes create --from-json panes.json --yes --json", "runpane panes create --repo active --name issue-123 --agent <agent> --prompt \"Plan this issue\" --source agent --no-focus --wait-ready --yes --json", "runpane panes create --repo active --name issue-123 --agent claude --initial-input-file brief.md --as-file-pointer --source agent --no-focus --wait-ready --yes --json"];
|
|
4238
5039
|
readonly jsonSchemas: readonly ["paneCreateRequest", "paneCreateResult"];
|
|
4239
|
-
readonly notes: readonly ["At least one of --agent or --tool-command is required unless --from-json is used.", "`panes create` is for user-visible Pane orchestration, not the agent's default private delegation mechanism.", "Register the saved base repository once. Pane creates and owns the worktree/branch for each new Pane.", "Use `panels create` instead when a reviewer/helper should share an existing Pane's worktree.", "Agent-created Panes should pass `--source agent --no-focus --wait-ready --yes --json` unless the user explicitly wants focus moved. `panes create` pins the new Pane by default, so a follow-up `panes pin` call is unnecessary; pass `--no-pinned` for throwaway shells or bulk imports. `--pinned` is still accepted and is now a no-op. Inside a Session orchestrator (`PANE_ORCHESTRATION_SESSION_ID` set), new Panes are associated with that Session automatically; `--no-associate` opts out. A failed association is reported on the item and never undoes the Pane.", "The built-in agent templates come from the runpane contract; custom terminal commands can pass agent-specific flags when requested by the user.", "Use --initial-input-file for multi-line prompts or shell-sensitive initial input.", "With --wait-ready,
|
|
5040
|
+
readonly notes: readonly ["At least one of --agent or --tool-command is required unless --from-json is used.", "`panes create` is for user-visible Pane orchestration, not the agent's default private delegation mechanism.", "Register the saved base repository once. Pane creates and owns the worktree/branch for each new Pane.", "`panes create --base <ref> --branch <name> --prompt-file <file>` replaces `git worktree add` plus `panes adopt`: Pane creates the worktree on exactly that branch name. `--branch` is checked with `git check-ref-format --branch` and fails if the branch already exists; `--worktree-name` still names the directory.", "Use `panels create` instead when a reviewer/helper should share an existing Pane's worktree.", "Agent-created Panes should pass `--source agent --no-focus --wait-ready --yes --json` unless the user explicitly wants focus moved. `panes create` pins the new Pane by default, so a follow-up `panes pin` call is unnecessary; pass `--no-pinned` for throwaway shells or bulk imports. `--pinned` is still accepted and is now a no-op. Inside a Session orchestrator (`PANE_ORCHESTRATION_SESSION_ID` set), new Panes are associated with that Session automatically; `--no-associate` opts out. A failed association is reported on the item and never undoes the Pane.", "The built-in agent templates come from the runpane contract; custom terminal commands can pass agent-specific flags when requested by the user.", "Use --initial-input-file for multi-line prompts or shell-sensitive initial input. A long or multi-line prompt is never typed into the shell: on bash, zsh or sh the agent launches with `\"$(cat '<prompt file>')\"` reading a private copy under `<pane-dir>/prompts/<pane-id>/`; on PowerShell, cmd, fish or WSL the prompt is pasted into the agent's composer once it is ready.", "`--as-file-pointer` writes the text to `<pane-dir>/prompts/<pane-id>/<timestamp>.md` (readable only by you) and sends the one line `Read and follow <path>`; the result includes `promptFile`. Prefer it for long prompts.", "For Claude, text starting with `!`, `#`, `/` or `@` is sent unchanged and the result carries a `warnings` entry (for example `leading-bang-runs-shell`), because Claude Code gives those characters a meaning of its own.", "With --wait-ready, `initialInput.delivery` reports `taken`, `queued`, `in-composer` or `unknown` with its evidence (`transcript`, `screen`, or `argv` for a prompt passed at launch); verifiedSubmitted is true for `taken` or `queued`. Routing initial input alone does not imply verified submission.", "If initialInput.blocked.kind is submission_unverified, do not submit again automatically. Inspect initialInput.staged and attempts, then run nextCommand to resolve the ambiguous composer state.", "When the JSON result includes nextCommand, run it to validate that the terminal produced output before reporting success.", "Multi-pane requests are created sequentially today. The --concurrency flag is accepted for compatibility, but agents should not rely on parallel creation.", "For POSIX or WSL command chaining, use a custom terminal command like `bash -lc 'cmd1 && cmd2 && cmd3'`.", "For Windows PowerShell command chaining, use a custom terminal command like `powershell -NoProfile -Command \"cmd1; if ($LASTEXITCODE) { exit $LASTEXITCODE }; cmd2\"`.", "From WSL with Windows Pane, invoke through PowerShell and select the saved WSL repo by name or id, for example `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane panes create --repo \"WSL Pane\" --name issue-123 --agent <agent> --prompt \"Plan this issue\" --source agent --no-focus --wait-ready --yes --json'`.", "Use --wait-ready when an agent needs to verify that an agent terminal started instead of only creating a pane.", "If readiness returns blocked, inspect blocked.suggestedCommand rather than guessing which prompt to answer.", "With --tool-command, --agent names the agent the command runs (a wrapper such as `agent-farm run`): Pane launches the command unchanged and treats the panel as that agent. Without --agent, Pane detects Claude Code, Codex and Cursor from the foreground process or the agent's screen."];
|
|
4240
5041
|
};
|
|
4241
5042
|
readonly "panes adopt": {
|
|
4242
5043
|
readonly name: "panes adopt";
|
|
@@ -4262,8 +5063,13 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4262
5063
|
}, {
|
|
4263
5064
|
readonly name: "--agent";
|
|
4264
5065
|
readonly value: "<codex|claude|cursor>";
|
|
4265
|
-
readonly required:
|
|
4266
|
-
readonly description: "Agent whose terminal to create.";
|
|
5066
|
+
readonly required: false;
|
|
5067
|
+
readonly description: "Agent whose terminal to create; with --tool-command, the agent that command runs.";
|
|
5068
|
+
}, {
|
|
5069
|
+
readonly name: "--tool-command";
|
|
5070
|
+
readonly value: "<command>";
|
|
5071
|
+
readonly required: false;
|
|
5072
|
+
readonly description: "Custom command to stage or launch instead of a built-in agent, such as a wrapper that runs one.";
|
|
4267
5073
|
}, {
|
|
4268
5074
|
readonly name: "--resume";
|
|
4269
5075
|
readonly value: "<id>";
|
|
@@ -4277,7 +5083,26 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4277
5083
|
}, {
|
|
4278
5084
|
readonly name: "--launch";
|
|
4279
5085
|
readonly required: false;
|
|
4280
|
-
readonly description: "Run the resume command immediately.";
|
|
5086
|
+
readonly description: "Run the agent (or its resume command) immediately.";
|
|
5087
|
+
}, {
|
|
5088
|
+
readonly name: "--prompt";
|
|
5089
|
+
readonly value: "<text>";
|
|
5090
|
+
readonly required: false;
|
|
5091
|
+
readonly description: "Alias for --initial-input; sent once the launched agent is ready. Requires --launch.";
|
|
5092
|
+
}, {
|
|
5093
|
+
readonly name: "--prompt-file";
|
|
5094
|
+
readonly value: "<path|->";
|
|
5095
|
+
readonly required: false;
|
|
5096
|
+
readonly description: "Alias for --initial-input-file; read the prompt from a file or stdin. Requires --launch.";
|
|
5097
|
+
}, {
|
|
5098
|
+
readonly name: "--wait-ready";
|
|
5099
|
+
readonly required: false;
|
|
5100
|
+
readonly description: "Wait for the launched agent to be ready and the prompt submitted before returning. Requires --launch.";
|
|
5101
|
+
}, {
|
|
5102
|
+
readonly name: "--ready-timeout-ms";
|
|
5103
|
+
readonly value: "<ms>";
|
|
5104
|
+
readonly required: false;
|
|
5105
|
+
readonly description: "Readiness timeout; defaults to 30000.";
|
|
4281
5106
|
}, {
|
|
4282
5107
|
readonly name: "--no-pinned";
|
|
4283
5108
|
readonly required: false;
|
|
@@ -4298,22 +5123,27 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4298
5123
|
readonly name: "--json";
|
|
4299
5124
|
readonly required: false;
|
|
4300
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.";
|
|
4301
5131
|
}];
|
|
4302
|
-
readonly examples: readonly ["runpane panes adopt --repo active --path /path/to/worktree --name imported --agent codex --resume <id> --yes --json"];
|
|
5132
|
+
readonly examples: readonly ["runpane panes adopt --repo active --path /path/to/worktree --name imported --agent codex --resume <id> --yes --json", "runpane panes adopt --repo active --path /path/to/worktree --name imported --tool-command \"agent-farm run free-range\" --agent claude --launch --yes --json", "runpane panes adopt --repo active --path /path/to/worktree --name imported --agent claude --launch --prompt-file prompt.md --wait-ready --yes --json"];
|
|
4303
5133
|
readonly jsonSchemas: readonly ["paneCreateResult"];
|
|
4304
|
-
readonly notes: readonly ["The resume command is staged without Enter unless --launch is passed.", "
|
|
5134
|
+
readonly notes: readonly ["The resume command is staged without Enter unless --launch is passed.", "Archiving never deletes an adopted worktree unless `runpane panes archive --remove-worktree` is used.", "One of --agent or --tool-command is required.", "With --tool-command, --agent names the agent the command runs (a wrapper such as `agent-farm run`): Pane launches the command unchanged and treats the panel as that agent. Without --agent, Pane detects Claude Code, Codex and Cursor from the foreground process or the agent's screen.", "--resume needs a built-in agent command; a wrapper command resumes its own way.", "The adopted Pane reports `status: running` in `panes list` while its terminal is live.", "A prompt (--prompt, --initial-input, --prompt-file, --initial-input-file) or --wait-ready needs --launch; without it adopt fails instead of dropping the prompt.", "With --launch the result carries the same readiness, initialInput, and nextCommand fields as panes create. With --resume the prompt goes to the resumed conversation's composer once the agent is ready.", "To start new work on a named branch, prefer `panes create --base <ref> --branch <name>` over `git worktree add` plus adopt."];
|
|
4305
5135
|
};
|
|
4306
5136
|
readonly "panes archive": {
|
|
4307
5137
|
readonly name: "panes archive";
|
|
4308
|
-
readonly summary: "Archive a Pane (session) exactly like the UI Archive action, including safe removal of its Pane-managed git worktree.";
|
|
4309
|
-
readonly details: "Use this to close out a Pane once its PR has merged. The safety check refreshes the configured upstream before comparing it to HEAD and includes exact unpushed commit IDs and subjects. Refuses unsafe archive operations unless --force is used. Use --dry-run to inspect the same evidence without mutating Pane state.";
|
|
5138
|
+
readonly summary: "Archive a Pane (session) exactly like the UI Archive action, including safe removal of its Pane-managed git worktree, or archive every merged Pane in a Session.";
|
|
5139
|
+
readonly details: "Use this to close out a Pane once its PR has merged. The safety check refreshes the configured upstream before comparing it to HEAD and includes exact unpushed commit IDs and subjects. When the branch has no upstream or its upstream is gone (GitHub deletes merged branches), a merged pull request whose head is HEAD counts as pushed, so squash-merged branches archive without --force. Refuses unsafe archive operations unless --force is used. Use --dry-run to inspect the same evidence without mutating Pane state. Use --session <id|name> --merged to close out every finished Pane of a Session at once.";
|
|
4310
5140
|
readonly requiresPaneDaemon: true;
|
|
4311
5141
|
readonly mutates: true;
|
|
4312
5142
|
readonly arguments: readonly [{
|
|
4313
5143
|
readonly name: "--pane";
|
|
4314
5144
|
readonly value: "<pane-id>";
|
|
4315
|
-
readonly required:
|
|
4316
|
-
readonly description: "Pane/session id to archive.";
|
|
5145
|
+
readonly required: false;
|
|
5146
|
+
readonly description: "Pane/session id to archive. Required unless --session is used.";
|
|
4317
5147
|
}, {
|
|
4318
5148
|
readonly name: "--source";
|
|
4319
5149
|
readonly value: "<user|agent>";
|
|
@@ -4323,6 +5153,19 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4323
5153
|
readonly name: "--force";
|
|
4324
5154
|
readonly required: false;
|
|
4325
5155
|
readonly description: "Archive even if the pane's branch has uncommitted, untracked, or unpushed changes.";
|
|
5156
|
+
}, {
|
|
5157
|
+
readonly name: "--remove-worktree";
|
|
5158
|
+
readonly required: false;
|
|
5159
|
+
readonly description: "Also check and remove an adopted Pane's worktree. Pane-managed worktrees are always removed; the local branch is always kept.";
|
|
5160
|
+
}, {
|
|
5161
|
+
readonly name: "--session";
|
|
5162
|
+
readonly value: "<id|name>";
|
|
5163
|
+
readonly required: false;
|
|
5164
|
+
readonly description: "Archive the Panes associated with this named Session instead of one Pane. Requires --merged.";
|
|
5165
|
+
}, {
|
|
5166
|
+
readonly name: "--merged";
|
|
5167
|
+
readonly required: false;
|
|
5168
|
+
readonly description: "With --session, archive only Panes that are clean and pushed, or merged via a pull request; skip the rest with a reason.";
|
|
4326
5169
|
}, {
|
|
4327
5170
|
readonly name: "--yes";
|
|
4328
5171
|
readonly required: false;
|
|
@@ -4334,11 +5177,16 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4334
5177
|
}, {
|
|
4335
5178
|
readonly name: "--json";
|
|
4336
5179
|
readonly required: false;
|
|
4337
|
-
readonly description: "Print machine-readable output.";
|
|
5180
|
+
readonly description: "Print machine-readable output.";
|
|
5181
|
+
}, {
|
|
5182
|
+
readonly name: "--pane-dir";
|
|
5183
|
+
readonly value: "<path>";
|
|
5184
|
+
readonly required: false;
|
|
5185
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
4338
5186
|
}];
|
|
4339
|
-
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"];
|
|
4340
|
-
readonly jsonSchemas: readonly ["paneArchiveRequest", "paneArchiveResult"];
|
|
4341
|
-
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
|
|
5187
|
+
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> --remove-worktree --yes --json", "runpane panes archive --session <id|name> --merged --dry-run --json", "runpane panes archive --session <id|name> --merged --remove-worktree --yes --json", "runpane panes archive --pane <pane-id> --force --yes --json"];
|
|
5188
|
+
readonly jsonSchemas: readonly ["paneArchiveRequest", "paneArchiveBulkRequest", "paneArchiveResult", "paneArchiveBulkResult"];
|
|
5189
|
+
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 reports worktreeCleanup `completed` once the worktree is gone from its path and from git. trashDeletion `pending` means a large worktree (for example one with node_modules) is still being deleted from .git/pane-trash in the background; that is still ok:true. `timeout` (also ok:true) means removal is still running; only `failed` sets ok:false.", "safetyCheck.mergedViaPr names the merged PR whose head is HEAD; it needs an authenticated `gh`. Without it, a squash-merged branch whose remote branch was deleted reports unpushed-commits.", "An adopted Pane (panes adopt) keeps its worktree unless --remove-worktree is passed. `panes restore` does not recreate a removed adopted worktree; the local branch is kept, so `git worktree add <path> <branch>` brings it back.", "With --session --merged, each item has outcome archived, would-archive (dry run), skipped (with skipped.code and skipped.message), or failed.", "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.", "When the safety check is skipped, `safetyCheck.reason` says why: `external-worktree` (an adopted Pane whose worktree Pane does not own), `main-repo`, `missing-project-context`, or `git-error`. `worktreeWillRemain: true` means archiving leaves the worktree on disk."];
|
|
4342
5190
|
};
|
|
4343
5191
|
readonly "panes pin": {
|
|
4344
5192
|
readonly name: "panes pin";
|
|
@@ -4363,6 +5211,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4363
5211
|
readonly name: "--json";
|
|
4364
5212
|
readonly required: false;
|
|
4365
5213
|
readonly description: "Print machine-readable output.";
|
|
5214
|
+
}, {
|
|
5215
|
+
readonly name: "--pane-dir";
|
|
5216
|
+
readonly value: "<path>";
|
|
5217
|
+
readonly required: false;
|
|
5218
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
4366
5219
|
}];
|
|
4367
5220
|
readonly examples: readonly ["runpane panes pin --pane <pane-id> --yes --json", "runpane panes pin --pane <pane-id> --dry-run --json"];
|
|
4368
5221
|
readonly jsonSchemas: readonly ["panePinRequest", "panePinResult"];
|
|
@@ -4391,6 +5244,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4391
5244
|
readonly name: "--json";
|
|
4392
5245
|
readonly required: false;
|
|
4393
5246
|
readonly description: "Print machine-readable output.";
|
|
5247
|
+
}, {
|
|
5248
|
+
readonly name: "--pane-dir";
|
|
5249
|
+
readonly value: "<path>";
|
|
5250
|
+
readonly required: false;
|
|
5251
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
4394
5252
|
}];
|
|
4395
5253
|
readonly examples: readonly ["runpane panes unpin --pane <pane-id> --yes --json", "runpane panes unpin --pane <pane-id> --dry-run --json"];
|
|
4396
5254
|
readonly jsonSchemas: readonly ["panePinRequest", "panePinResult"];
|
|
@@ -4424,6 +5282,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4424
5282
|
readonly name: "--json";
|
|
4425
5283
|
readonly required: false;
|
|
4426
5284
|
readonly description: "Print machine-readable output including the updated pane.";
|
|
5285
|
+
}, {
|
|
5286
|
+
readonly name: "--pane-dir";
|
|
5287
|
+
readonly value: "<path>";
|
|
5288
|
+
readonly required: false;
|
|
5289
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
4427
5290
|
}];
|
|
4428
5291
|
readonly examples: readonly ["runpane panes rename --pane <pane-id> --name issue-393 --yes --json", "runpane panes rename --pane <pane-id> --name issue-393 --dry-run --json"];
|
|
4429
5292
|
readonly jsonSchemas: readonly ["paneRenameRequest", "paneRenameResult"];
|
|
@@ -4458,6 +5321,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4458
5321
|
readonly name: "--json";
|
|
4459
5322
|
readonly required: false;
|
|
4460
5323
|
readonly description: "Print machine-readable output.";
|
|
5324
|
+
}, {
|
|
5325
|
+
readonly name: "--pane-dir";
|
|
5326
|
+
readonly value: "<path>";
|
|
5327
|
+
readonly required: false;
|
|
5328
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
4461
5329
|
}];
|
|
4462
5330
|
readonly examples: readonly ["runpane panes focus --pane <pane-id> --source user --yes --json", "runpane panes focus --pane <pane-id> --panel <panel-id> --source user --yes --json"];
|
|
4463
5331
|
readonly jsonSchemas: readonly ["paneFocusRequest", "paneFocusResult"];
|
|
@@ -4486,7 +5354,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4486
5354
|
}];
|
|
4487
5355
|
readonly examples: readonly ["runpane panels list --pane <pane-id> --json"];
|
|
4488
5356
|
readonly jsonSchemas: readonly ["panelListResult"];
|
|
4489
|
-
readonly notes: readonly ["The ids returned here are stable inputs for `panels output` and `panels input`."];
|
|
5357
|
+
readonly notes: readonly ["The ids returned here are stable inputs for `panels output` and `panels input`.", "`agentType` is the agent Pane treats the panel as; `agentDetection` says how it knows (`declared`, `command`, `process`, or `screen`), and `launchCommand` is the command the panel was launched with."];
|
|
4490
5358
|
};
|
|
4491
5359
|
readonly "panels output": {
|
|
4492
5360
|
readonly name: "panels output";
|
|
@@ -4620,12 +5488,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4620
5488
|
}];
|
|
4621
5489
|
readonly examples: readonly ["runpane panels screen --panel <panel-id> --limit 80 --json"];
|
|
4622
5490
|
readonly jsonSchemas: readonly ["panelScreenResult"];
|
|
4623
|
-
readonly notes: readonly ["Use this before `panels output` when an agent only needs the latest visible/current state.", "The composer object reports whether a Claude or Codex composer is present and whether it holds undelivered text. Claude's
|
|
5491
|
+
readonly notes: readonly ["Use this before `panels output` when an agent only needs the latest visible/current state.", "The composer object reports whether a Claude or Codex composer is present and whether it holds undelivered text. Placeholder and suggestion text (drawn dim or grey, such as Claude's suggested next prompt) does not count as undelivered text; `composer.ghostText` carries it, and text output marks its line with `⟨suggestion⟩`.", "If hasMore is true and context is missing, rerun with a larger --limit or use `panels output`."];
|
|
4624
5492
|
};
|
|
4625
5493
|
readonly "panels submit": {
|
|
4626
5494
|
readonly name: "panels submit";
|
|
4627
5495
|
readonly summary: "Send and submit text to a terminal panel, including idle agent composers.";
|
|
4628
|
-
readonly details: "Use this for ordinary interactive submissions. For Claude, Pane waits for the composer to appear and show the staged text, then sends Enter on its own and verifies that the composer cleared; Claude keeps an Enter that arrives together with the text as a newline. For
|
|
5496
|
+
readonly details: "Use this for ordinary interactive submissions. For Claude, Pane waits for the composer to appear and show the staged text, then sends Enter on its own and verifies that the composer cleared; Claude keeps an Enter that arrives together with the text as a newline. For a Codex composer, Pane stages the text, waits for paste handling, then queues with Tab while working or submits with Enter when ready, and verifies delivery when visible evidence is available. Wrapper-launched agents are handled the same way once Pane knows the agent (declared, from the foreground process, or from the screen). A Claude or Codex panel with no composer on screen gets nothing: the result is `ok: false` with `blocked.kind: composer-unknown`. Multi-line or long (over 512 characters) text reaches a Claude or Codex composer as one bracketed paste: CRLF becomes LF, and the submit key goes as its own write once the paste has settled, even while the agent is working. Other terminals receive a normalized CR Enter. Exact byte workflows remain on `panels input`.";
|
|
4629
5497
|
readonly requiresPaneDaemon: true;
|
|
4630
5498
|
readonly mutates: true;
|
|
4631
5499
|
readonly arguments: readonly [{
|
|
@@ -4643,6 +5511,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4643
5511
|
readonly value: "<path|->";
|
|
4644
5512
|
readonly required: false;
|
|
4645
5513
|
readonly description: "Read text from a file or stdin before Enter.";
|
|
5514
|
+
}, {
|
|
5515
|
+
readonly name: "--as-file-pointer";
|
|
5516
|
+
readonly required: false;
|
|
5517
|
+
readonly description: "Write the prompt or text to a private file under the Pane directory and send the one line `Read and follow <path>` instead.";
|
|
4646
5518
|
}, {
|
|
4647
5519
|
readonly name: "--yes";
|
|
4648
5520
|
readonly required: false;
|
|
@@ -4657,9 +5529,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4657
5529
|
readonly required: false;
|
|
4658
5530
|
readonly description: "Connect to a specific Pane data directory.";
|
|
4659
5531
|
}];
|
|
4660
|
-
readonly examples: readonly ["runpane panels submit --panel <panel-id> --text \"2\" --yes --json", "printf \"echo hello\" | runpane panels submit --panel <panel-id> --input-file - --yes --json"];
|
|
5532
|
+
readonly examples: readonly ["runpane panels submit --panel <panel-id> --text \"2\" --yes --json", "printf \"echo hello\" | runpane panels submit --panel <panel-id> --input-file - --yes --json", "runpane panels submit --panel <panel-id> --input-file brief.md --as-file-pointer --yes --json"];
|
|
4661
5533
|
readonly jsonSchemas: readonly ["panelSubmitRequest", "panelSubmitResult"];
|
|
4662
|
-
readonly notes: readonly ["The response includes sequenceName, verifiedSubmitted, and nextCommand. If ok is false, inspect blocked and do not assume the turn started.", "Do not follow `panels submit` with `panels submit-composer`; Claude and
|
|
5534
|
+
readonly notes: readonly ["The response includes sequenceName, verifiedSubmitted, delivery and nextCommand. For Claude and Codex, `delivery.state` is `taken` (the agent started a turn with the text), `queued` (it holds the text until its current turn ends), `in-composer` (the text is still in the composer) or `unknown`, and `delivery.evidence` is `transcript` (the agent's own transcript) or `screen`. verifiedSubmitted is true for `taken` or `queued`; never resend those. If ok is false, inspect blocked and do not assume the turn started.", "Do not follow `panels submit` with `panels submit-composer`; Claude and Codex composer submission is handled atomically.", "Use `panels input` for Ctrl-C, escape sequences, or any workflow requiring exact bytes.", "On `blocked.kind: composer-unknown`, nothing was typed. Check `panels screen`; if the agent is at a prompt Pane does not recognise, use `panels input`.", "For Claude, text starting with `!`, `#`, `/` or `@` is sent unchanged and the result carries a `warnings` entry (for example `leading-bang-runs-shell`), because Claude Code gives those characters a meaning of its own.", "`--as-file-pointer` writes the text to `<pane-dir>/prompts/<pane-id>/<timestamp>.md` (readable only by you) and sends the one line `Read and follow <path>`; the result includes `promptFile`. Prefer it for long prompts."];
|
|
4663
5535
|
};
|
|
4664
5536
|
readonly "panels wait": {
|
|
4665
5537
|
readonly name: "panels wait";
|
|
@@ -4706,6 +5578,36 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4706
5578
|
readonly jsonSchemas: readonly ["panelWaitResult"];
|
|
4707
5579
|
readonly notes: readonly ["If blocked is present, do not assume success. Use blocked.suggestedCommand or inspect `panels screen`.", "The default timeout and screen are intentionally small for agent context safety."];
|
|
4708
5580
|
};
|
|
5581
|
+
readonly "panels last-message": {
|
|
5582
|
+
readonly name: "panels last-message";
|
|
5583
|
+
readonly summary: "Read an agent's last reply from its transcript, without scraping the screen.";
|
|
5584
|
+
readonly details: "Use this when a worker is READY and you need what it said, such as its PR number or result. It reads the Claude or Codex transcript Pane found for the panel and never falls back to the screen.";
|
|
5585
|
+
readonly requiresPaneDaemon: true;
|
|
5586
|
+
readonly mutates: false;
|
|
5587
|
+
readonly arguments: readonly [{
|
|
5588
|
+
readonly name: "--panel";
|
|
5589
|
+
readonly value: "<panel-id>";
|
|
5590
|
+
readonly required: true;
|
|
5591
|
+
readonly description: "Agent panel id.";
|
|
5592
|
+
}, {
|
|
5593
|
+
readonly name: "--limit";
|
|
5594
|
+
readonly value: "<count>";
|
|
5595
|
+
readonly required: false;
|
|
5596
|
+
readonly description: "Maximum characters to return; defaults to 20000. The end of the reply is kept.";
|
|
5597
|
+
}, {
|
|
5598
|
+
readonly name: "--json";
|
|
5599
|
+
readonly required: false;
|
|
5600
|
+
readonly description: "Print machine-readable output.";
|
|
5601
|
+
}, {
|
|
5602
|
+
readonly name: "--pane-dir";
|
|
5603
|
+
readonly value: "<path>";
|
|
5604
|
+
readonly required: false;
|
|
5605
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
5606
|
+
}];
|
|
5607
|
+
readonly examples: readonly ["runpane panels last-message --panel <panel-id> --json"];
|
|
5608
|
+
readonly jsonSchemas: readonly ["panelLastMessageResult"];
|
|
5609
|
+
readonly notes: readonly ["Without a transcript (a shell panel, another agent, or no reply yet) the result is `{ ok: false, reason: \"transcript-unavailable\" }` and the command exits 1. Use `panels screen` then.", "A worker that ran `runpane report` already handed back its state, PR, head, and summary; read those with `agents status` before reading the whole reply."];
|
|
5610
|
+
};
|
|
4709
5611
|
readonly "panels create": {
|
|
4710
5612
|
readonly name: "panels create";
|
|
4711
5613
|
readonly summary: "Create a reviewer/helper terminal tab inside an existing Pane.";
|
|
@@ -4721,7 +5623,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4721
5623
|
readonly name: "--agent";
|
|
4722
5624
|
readonly value: "<codex|claude|cursor>";
|
|
4723
5625
|
readonly required: false;
|
|
4724
|
-
readonly description: "Built-in agent command template to launch.";
|
|
5626
|
+
readonly description: "Built-in agent command template to launch. With --tool-command, the agent that command runs.";
|
|
4725
5627
|
}, {
|
|
4726
5628
|
readonly name: "--tool-command";
|
|
4727
5629
|
readonly value: "<command>";
|
|
@@ -4742,6 +5644,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4742
5644
|
readonly value: "<path|->";
|
|
4743
5645
|
readonly required: false;
|
|
4744
5646
|
readonly description: "Read initial input from a file or stdin.";
|
|
5647
|
+
}, {
|
|
5648
|
+
readonly name: "--as-file-pointer";
|
|
5649
|
+
readonly required: false;
|
|
5650
|
+
readonly description: "Write the prompt or text to a private file under the Pane directory and send the one line `Read and follow <path>` instead.";
|
|
4745
5651
|
}, {
|
|
4746
5652
|
readonly name: "--source";
|
|
4747
5653
|
readonly value: "<user|agent>";
|
|
@@ -4772,15 +5678,20 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4772
5678
|
readonly name: "--json";
|
|
4773
5679
|
readonly required: false;
|
|
4774
5680
|
readonly description: "Print machine-readable output.";
|
|
5681
|
+
}, {
|
|
5682
|
+
readonly name: "--pane-dir";
|
|
5683
|
+
readonly value: "<path>";
|
|
5684
|
+
readonly required: false;
|
|
5685
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
4775
5686
|
}];
|
|
4776
|
-
readonly examples: readonly ["runpane panels create --pane <pane-id> --agent <agent> --source agent --no-focus --wait-ready --yes --json", "runpane panels create --pane <pane-id> --tool-command <command> --title <title> --source agent --no-focus --wait-ready --yes --json"];
|
|
5687
|
+
readonly examples: readonly ["runpane panels create --pane <pane-id> --agent <agent> --source agent --no-focus --wait-ready --yes --json", "runpane panels create --pane <pane-id> --tool-command <command> --title <title> --source agent --no-focus --wait-ready --yes --json", "runpane panels create --pane <pane-id> --tool-command \"agent-farm run free-range\" --agent claude --source agent --no-focus --wait-ready --yes --json"];
|
|
4777
5688
|
readonly jsonSchemas: readonly ["panelCreateRequest", "panelCreateResult"];
|
|
4778
|
-
readonly notes: readonly ["Use this for same-pane reviewer loops after PR creation/testing.", "Panels share the existing Pane's worktree and branch.", "`panels create` is for visible helper/reviewer tabs, not the agent's default private delegation mechanism.", "For agent-created panels, prefer --source agent or --no-focus to avoid stealing focus from the user or implementation tab."];
|
|
5689
|
+
readonly notes: readonly ["Use this for same-pane reviewer loops after PR creation/testing.", "Panels share the existing Pane's worktree and branch.", "`panels create` is for visible helper/reviewer tabs, not the agent's default private delegation mechanism.", "For agent-created panels, prefer --source agent or --no-focus to avoid stealing focus from the user or implementation tab.", "With --tool-command, --agent names the agent the command runs (a wrapper such as `agent-farm run`): Pane launches the command unchanged and treats the panel as that agent. Without --agent, Pane detects Claude Code, Codex and Cursor from the foreground process or the agent's screen."];
|
|
4779
5690
|
};
|
|
4780
5691
|
readonly "panels submit-composer": {
|
|
4781
5692
|
readonly name: "panels submit-composer";
|
|
4782
5693
|
readonly summary: "Submit an agent composer using the panel-appropriate key sequence.";
|
|
4783
|
-
readonly details: "Use this after sending text into an agent composer
|
|
5694
|
+
readonly details: "Use this after sending text into an agent composer. Auto uses Tab to queue while Codex is working and Enter when ready; Pane verifies that the text left the composer.";
|
|
4784
5695
|
readonly requiresPaneDaemon: true;
|
|
4785
5696
|
readonly mutates: true;
|
|
4786
5697
|
readonly arguments: readonly [{
|
|
@@ -4790,7 +5701,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4790
5701
|
readonly description: "Terminal panel id.";
|
|
4791
5702
|
}, {
|
|
4792
5703
|
readonly name: "--strategy";
|
|
4793
|
-
readonly value: "<auto|codex-ctrl-enter|enter>";
|
|
5704
|
+
readonly value: "<auto|codex-ctrl-enter|enter|tab>";
|
|
4794
5705
|
readonly required: false;
|
|
4795
5706
|
readonly description: "Composer submit key sequence strategy.";
|
|
4796
5707
|
}, {
|
|
@@ -4801,10 +5712,15 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4801
5712
|
readonly name: "--json";
|
|
4802
5713
|
readonly required: false;
|
|
4803
5714
|
readonly description: "Print machine-readable output.";
|
|
5715
|
+
}, {
|
|
5716
|
+
readonly name: "--pane-dir";
|
|
5717
|
+
readonly value: "<path>";
|
|
5718
|
+
readonly required: false;
|
|
5719
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
4804
5720
|
}];
|
|
4805
5721
|
readonly examples: readonly ["runpane panels submit-composer --panel <codex-panel-id> --strategy auto --yes --json", "runpane panels submit-composer --panel <panel-id> --strategy enter --yes --json"];
|
|
4806
5722
|
readonly jsonSchemas: readonly ["panelSubmitComposerRequest", "panelSubmitComposerResult"];
|
|
4807
|
-
readonly notes: readonly ["Use `panels input` or `panels submit` to write prompt text first; this command only submits the current composer.", "Use --strategy auto for agent workflows; explicit strategies are diagnostic escape hatches.", "The JSON result includes sequenceName and
|
|
5723
|
+
readonly notes: readonly ["Use `panels input` or `panels submit` to write prompt text first; this command only submits the current composer.", "Use --strategy auto for agent workflows; explicit strategies are diagnostic escape hatches.", "The JSON result includes sequenceName, verifiedSubmitted and, for Claude and Codex, delivery (`taken`, `queued`, `in-composer` or `unknown`, with `transcript` or `screen` evidence). If ok is false, follow blocked.suggestedCommand instead of assuming submission happened.", "With `--strategy auto`, if the staged text is still visible in the composer after the first attempt, Pane retries once and checks again: Tab for working Codex, Enter otherwise. It never retries an empty composer."];
|
|
4808
5724
|
};
|
|
4809
5725
|
readonly "workspace state": {
|
|
4810
5726
|
readonly name: "workspace state";
|
|
@@ -4821,6 +5737,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4821
5737
|
readonly name: "--json";
|
|
4822
5738
|
readonly required: false;
|
|
4823
5739
|
readonly description: "Print machine-readable output.";
|
|
5740
|
+
}, {
|
|
5741
|
+
readonly name: "--pane-dir";
|
|
5742
|
+
readonly value: "<path>";
|
|
5743
|
+
readonly required: false;
|
|
5744
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
4824
5745
|
}];
|
|
4825
5746
|
readonly examples: readonly ["runpane workspace state --json"];
|
|
4826
5747
|
readonly notes: readonly ["The response carries the daemon epoch and current journal generation."];
|
|
@@ -4835,7 +5756,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4835
5756
|
readonly name: "--as";
|
|
4836
5757
|
readonly value: "<consumer-name>";
|
|
4837
5758
|
readonly required: false;
|
|
4838
|
-
readonly description: "Use a persisted named cursor (at-least-once delivery). Default
|
|
5759
|
+
readonly description: "Use a persisted named cursor (at-least-once delivery): 1-128 letters, numbers, dots, underscores, or hyphens (daemons before this release accept 64). Default under --follow: session-<uuid> with --session (session-<name> for a name; shortened to session-<sha256 prefix> when longer than 64 characters), else PANE_PANEL_ID when set, shortened to panel-<sha256 prefix> when it is longer than 64 characters; otherwise anonymous.";
|
|
4839
5760
|
}, {
|
|
4840
5761
|
readonly name: "--since";
|
|
4841
5762
|
readonly value: "<generation>";
|
|
@@ -4859,7 +5780,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4859
5780
|
readonly name: "--heartbeat";
|
|
4860
5781
|
readonly value: "<seconds>";
|
|
4861
5782
|
readonly required: false;
|
|
4862
|
-
readonly description: "Healthy-silence bound; a HEARTBEAT line proves the watcher is alive. Default 60 under --follow, 0 otherwise.
|
|
5783
|
+
readonly description: "Healthy-silence bound; a HEARTBEAT line proves the watcher is alive. Default 60 under --follow, 0 otherwise. Any monitor that wakes an agent should pass --quiet, which drops it.";
|
|
4863
5784
|
}, {
|
|
4864
5785
|
readonly name: "--idle-after";
|
|
4865
5786
|
readonly value: "<milliseconds>";
|
|
@@ -4869,17 +5790,17 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4869
5790
|
readonly name: "--settle";
|
|
4870
5791
|
readonly value: "<milliseconds>";
|
|
4871
5792
|
readonly required: false;
|
|
4872
|
-
readonly description: "Opt-in (follow only): emit READY only after the panel stays idle this long; a BUSY, BLOCKED, UNKNOWN, EXIT, or GONE inside the window cancels it silently. Default 0. Use when a pane flips idle/working while it waits on subagents; the orchestrator value is 180000.";
|
|
5793
|
+
readonly description: "Opt-in (follow only): emit READY only after the panel stays idle this long; a BUSY, BLOCKED, UNKNOWN, EXIT, or GONE inside the window cancels it silently. Default 0. Use when a pane flips idle/working while it waits on subagents; the unattended orchestrator value is 180000, the user-present value 60000.";
|
|
4873
5794
|
}, {
|
|
4874
5795
|
readonly name: "--blocked-settle";
|
|
4875
5796
|
readonly value: "<milliseconds>";
|
|
4876
5797
|
readonly required: false;
|
|
4877
|
-
readonly description: "Opt-in (follow only): emit BLOCKED only after this window; an in-pane answer inside it cancels the line. Default 0. The orchestrator value is 30000.";
|
|
5798
|
+
readonly description: "Opt-in (follow only): emit BLOCKED only after this window; an in-pane answer inside it cancels the line. Default 0. The unattended orchestrator value is 30000, the user-present value 15000.";
|
|
4878
5799
|
}, {
|
|
4879
5800
|
readonly name: "--min-interval";
|
|
4880
5801
|
readonly value: "<milliseconds>";
|
|
4881
5802
|
readonly required: false;
|
|
4882
|
-
readonly description: "Opt-in (follow only): hold READY, IDLE, NEW, GONE, EXIT, and UNKNOWN lines and flush them together at most once per interval; BLOCKED
|
|
5803
|
+
readonly description: "Opt-in (follow only): hold READY, IDLE, NEW, GONE, EXIT, and UNKNOWN lines and flush them together at most once per interval; BLOCKED, REPORT, pr.conflicted, and failed pr.checks bypass it and carry the held lines with them. Default 0. The unattended orchestrator value is 600000, the user-present value 120000.";
|
|
4883
5804
|
}, {
|
|
4884
5805
|
readonly name: "--idle-backoff";
|
|
4885
5806
|
readonly required: false;
|
|
@@ -4888,12 +5809,17 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4888
5809
|
readonly name: "--kinds";
|
|
4889
5810
|
readonly required: false;
|
|
4890
5811
|
readonly value: "<kind,...>";
|
|
4891
|
-
readonly description: "Limit event kinds: agent.ready, agent.busy, agent.blocked, agent.unknown, agent.idle, pane.created, pane.gone, panel.exited. Default all. Drop agent.busy for any consumer that acts on lines; BUSY carries no action.";
|
|
5812
|
+
readonly description: "Limit event kinds: agent.ready, agent.busy, agent.blocked, agent.unknown, agent.idle, pane.created, pane.gone, panel.exited, agent.report, pane.associated, pane.detached, pr.conflicted, pr.checks, pr.merged. agent.report arrives only when listed explicitly. Default all, except that pane.associated, pane.detached, and the pr.* kinds arrive only when listed here or implied by --session. Drop agent.busy for any consumer that acts on lines; BUSY carries no action.";
|
|
4892
5813
|
}, {
|
|
4893
5814
|
readonly name: "--pane";
|
|
4894
5815
|
readonly required: false;
|
|
4895
5816
|
readonly value: "<pane-id>";
|
|
4896
|
-
readonly description: "Limit to a Pane; repeatable. Default all managed panes.";
|
|
5817
|
+
readonly description: "Limit to a Pane; repeatable. Default all managed panes. Cannot be combined with --session.";
|
|
5818
|
+
}, {
|
|
5819
|
+
readonly name: "--session";
|
|
5820
|
+
readonly required: false;
|
|
5821
|
+
readonly value: "<id|name>";
|
|
5822
|
+
readonly description: "Follow every Pane associated with a named Session (id or exact name). The daemon re-reads membership on every read, so a Pane associated after arming is included and a detached or archived Pane drops out without a re-arm. The Session's own orchestrator panels are never reported. Cannot be combined with --pane or --all-managed; an unknown Session fails.";
|
|
4897
5823
|
}, {
|
|
4898
5824
|
readonly name: "--exclude-pane";
|
|
4899
5825
|
readonly required: false;
|
|
@@ -4916,7 +5842,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4916
5842
|
}, {
|
|
4917
5843
|
readonly name: "--all-managed";
|
|
4918
5844
|
readonly required: false;
|
|
4919
|
-
readonly description: "Explicit spelling
|
|
5845
|
+
readonly description: "Explicit spelling of the default scope: every non-archived, non-hidden managed Pane. Cannot be combined with --pane.";
|
|
4920
5846
|
}, {
|
|
4921
5847
|
readonly name: "--include-shells";
|
|
4922
5848
|
readonly required: false;
|
|
@@ -4938,22 +5864,36 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4938
5864
|
}, {
|
|
4939
5865
|
readonly name: "--include-held-input";
|
|
4940
5866
|
readonly required: false;
|
|
4941
|
-
readonly description: "Include up to 120 characters of unsubmitted composer text in JSON entries. Default off
|
|
5867
|
+
readonly description: "Include up to 120 characters of unsubmitted composer text in JSON entries. Default off: under --follow, JSON entries carry only heldInputPresent: true.";
|
|
4942
5868
|
}, {
|
|
4943
5869
|
readonly name: "--no-held-input";
|
|
4944
5870
|
readonly required: false;
|
|
4945
|
-
readonly description: "Disable redacted
|
|
5871
|
+
readonly description: "Disable redacted held-input detection under --follow: no STUCK lines, and no heldInputPresent in JSON.";
|
|
4946
5872
|
}, {
|
|
4947
5873
|
readonly name: "--self-test";
|
|
4948
5874
|
readonly required: false;
|
|
4949
5875
|
readonly description: "Probe the watch path anonymously without advancing a named cursor; run it before arming --follow.";
|
|
5876
|
+
}, {
|
|
5877
|
+
readonly name: "--quiet";
|
|
5878
|
+
readonly required: false;
|
|
5879
|
+
readonly description: "Drop the control lines that only prove liveness: WATCH OK, HEARTBEAT, and WATCH RECONNECTED (_ok, _heartbeat, _reconnected in JSON). WATCH ERROR/_error, RESET/_reset, and DROPPED/_dropped always print, and --self-test still prints its WATCH OK result. Alias: --no-control-lines.";
|
|
4950
5880
|
}, {
|
|
4951
5881
|
readonly name: "--json";
|
|
4952
5882
|
readonly required: false;
|
|
4953
5883
|
readonly description: "Emit structured NDJSON; held-input content remains opt-in.";
|
|
5884
|
+
}, {
|
|
5885
|
+
readonly name: "--pane-dir";
|
|
5886
|
+
readonly value: "<path>";
|
|
5887
|
+
readonly required: false;
|
|
5888
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
5889
|
+
}, {
|
|
5890
|
+
readonly name: "--pane-dir";
|
|
5891
|
+
readonly value: "<path>";
|
|
5892
|
+
readonly required: false;
|
|
5893
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
4954
5894
|
}];
|
|
4955
|
-
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"];
|
|
4956
|
-
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.", "
|
|
5895
|
+
readonly examples: readonly ["runpane watch --self-test", "runpane watch --follow", "runpane watch --as monitor --follow --quiet --json", "runpane watch --follow --quiet --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "runpane watch --follow --quiet --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 60000 --blocked-settle 15000 --min-interval 120000", "runpane watch --session <id|name> --follow --quiet --json --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone,pane.associated,pane.detached,pr.conflicted,pr.checks,pr.merged --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "runpane watch --session <id|name> --follow --quiet --json --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone,pane.associated,pane.detached,pr.conflicted,pr.checks,pr.merged --settle 60000 --blocked-settle 15000 --min-interval 120000"];
|
|
5896
|
+
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.", "Unattended profile (what Pane Chat arms automatically, for overnight or background runs): runpane watch --self-test, then runpane watch --follow --quiet --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; READY can arrive up to about 13 minutes after the turn ended.", "User-present profile (a person is waiting on the result): the same command with --settle 60000 --blocked-settle 15000 --min-interval 120000 and no --idle-backoff. READY arrives within about 3 minutes of the turn ending.", "BUSY carries no action; drop it with --kinds. HEARTBEAT is client-side proof of life and is never shaped by cadence flags; pass --quiet for 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.", "Control lines are not journal entries. JSON kinds and their lines-format text: _ok (WATCH OK, once when armed), _heartbeat (HEARTBEAT, every --heartbeat seconds), _reconnected (WATCH RECONNECTED, after a retried daemon error), _error (WATCH ERROR, a daemon error; the process exits 2 unless --follow retries it), _reset (RESET, the journal restarted or the cursor fell behind; a fresh baseline follows), and _dropped (DROPPED, entries lost to journal truncation). --quiet drops _ok, _heartbeat, and _reconnected; _error, _reset, and _dropped always print.", "Under --follow, JSON entries for panels holding unsubmitted composer text carry heldInputPresent: true, the JSON equivalent of the STUCK line. --no-held-input turns this off.", "--session <id|name> scopes the watch to a named Session. The daemon resolves the Session once per request and its associated Panes on every read, so sessions associate and sessions detach take effect without a re-arm; archived and detached Panes drop out, and the Session's own orchestrator panels are excluded. Cadence state is keyed by the Session, not its current Panes, so membership changes keep held lines. A detached Pane's held lines are dropped.", "Under --session, pane.associated (JOINED <pane-name> pane <pane-id> session <session-id>) and pane.detached (LEFT ...) report membership changes; list them in --kinds next to the agent kinds. Other consumers receive them only when --kinds lists them, so older clients never see an unknown kind.", "PR events (decision D7): about every 3 minutes (jittered) the daemon visits each Pane associated with a live Session (none: no gh at all), finds its PR by branch when no open PR is known yet (gh pr list --head, so unwatched workers' new and reopened PRs are found), runs gh pr view on an open PR, and appends pr.conflicted (PR <pane-name> pane <pane-id> #<number> CONFLICTED: the PR now conflicts with its base), pr.checks (... CHECKS PASSED, or CHECKS FAILED <up to five names>: every check on the head commit finished), and pr.merged (... MERGED). Entries carry pr: {number, url, headOid}, plus checks and failingChecks for pr.checks. They fire on transitions only: the first poll of a PR after the daemon starts only records its state, so re-check conflicts after a restart with gh pr view. pr.conflicted and failed pr.checks bypass --min-interval like BLOCKED. Like JOINED/LEFT, they reach a consumer only under --session or when --kinds lists them. Without gh, or while it is signed out or rate limited, polling backs off (up to an hour) and no PR entries arrive.", "A daemon that predates --session returns no session field; runpane then fails with WATCH ERROR instead of watching every Pane.", "Replay: after a reset (RESET/_reset), the baseline restates current state. In JSON, those entries carry replay: true (and changedWhileAway: true after an epoch change). A replayed agent.ready is never READY: re-read runpane sessions overview instead of acting on it. Lines mode prints only CHANGED for them.", "agent.report (REPORT <pane-name> pane <pane-id> panel <panel-id> <state> [pr#<n>] [<head>][: <question>]) is a worker's `runpane report`. It is opt-in: only a consumer that lists it in --kinds receives it. It bypasses --min-interval, and orchestrators treat it as the completion signal; a READY without a report means look, and maybe nudge."];
|
|
4957
5897
|
};
|
|
4958
5898
|
readonly "panes git-status": {
|
|
4959
5899
|
readonly name: "panes git-status";
|
|
@@ -5650,6 +6590,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
5650
6590
|
readonly value: "<message>";
|
|
5651
6591
|
readonly required: true;
|
|
5652
6592
|
readonly description: "The message to submit.";
|
|
6593
|
+
}, {
|
|
6594
|
+
readonly name: "--as-file-pointer";
|
|
6595
|
+
readonly required: false;
|
|
6596
|
+
readonly description: "Write the prompt or text to a private file under the Pane directory and send the one line `Read and follow <path>` instead.";
|
|
5653
6597
|
}, {
|
|
5654
6598
|
readonly name: "--yes";
|
|
5655
6599
|
readonly required: false;
|
|
@@ -5664,9 +6608,69 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
5664
6608
|
readonly required: false;
|
|
5665
6609
|
readonly description: "Connect to a specific Pane data directory.";
|
|
5666
6610
|
}];
|
|
5667
|
-
readonly examples: readonly ["runpane agents send --pane <pane-id> --text \"Also add a test\" --yes --json"];
|
|
6611
|
+
readonly examples: readonly ["runpane agents send --pane <pane-id> --text \"Also add a test\" --yes --json", "runpane agents send --pane <pane-id> --text \"$(cat review-notes.md)\" --as-file-pointer --yes --json"];
|
|
5668
6612
|
readonly jsonSchemas: readonly ["agentSendResult"];
|
|
5669
|
-
readonly notes: readonly ["`delivered` is true
|
|
6613
|
+
readonly notes: readonly ["`delivered` is true when the agent took the message or queued it for after its current turn; `delivery` says which (`taken` or `queued`) and how Pane knows (`transcript` or `screen`). Never resend a delivered message.", "It types the text, then queues with Tab when Codex is working or submits with Enter when ready. 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`.", "`--as-file-pointer` writes the text to `<pane-dir>/prompts/<pane-id>/<timestamp>.md` (readable only by you) and sends the one line `Read and follow <path>`; the result includes `promptFile`. Prefer it for long prompts."];
|
|
6614
|
+
};
|
|
6615
|
+
readonly report: {
|
|
6616
|
+
readonly name: "report";
|
|
6617
|
+
readonly summary: "Hand back a worker's structured report: state, PR, head commit, summary, and the question when blocked.";
|
|
6618
|
+
readonly details: "Run this as a delegated worker when you finish, fail, or get blocked, as the last step of your task. The orchestrator receives it as an agent.report watch event and treats it as the completion signal.";
|
|
6619
|
+
readonly requiresPaneDaemon: true;
|
|
6620
|
+
readonly mutates: true;
|
|
6621
|
+
readonly arguments: readonly [{
|
|
6622
|
+
readonly name: "--state";
|
|
6623
|
+
readonly value: "<ready|blocked|failed|done>";
|
|
6624
|
+
readonly required: true;
|
|
6625
|
+
readonly description: "ready: work is ready for review; done: finished with nothing to review; blocked: needs an answer; failed: could not finish.";
|
|
6626
|
+
}, {
|
|
6627
|
+
readonly name: "--pr";
|
|
6628
|
+
readonly value: "<number>";
|
|
6629
|
+
readonly required: false;
|
|
6630
|
+
readonly description: "Pull request number.";
|
|
6631
|
+
}, {
|
|
6632
|
+
readonly name: "--head";
|
|
6633
|
+
readonly value: "<sha>";
|
|
6634
|
+
readonly required: false;
|
|
6635
|
+
readonly description: "Head commit the report is about, 7-40 hex characters.";
|
|
6636
|
+
}, {
|
|
6637
|
+
readonly name: "--summary";
|
|
6638
|
+
readonly value: "<text>";
|
|
6639
|
+
readonly required: false;
|
|
6640
|
+
readonly description: "Summary text; up to 16,000 characters are kept.";
|
|
6641
|
+
}, {
|
|
6642
|
+
readonly name: "--summary-file";
|
|
6643
|
+
readonly value: "<path|->";
|
|
6644
|
+
readonly required: false;
|
|
6645
|
+
readonly description: "Read the summary from a file or stdin; the absolute path is kept as summaryPath.";
|
|
6646
|
+
}, {
|
|
6647
|
+
readonly name: "--question";
|
|
6648
|
+
readonly value: "<text>";
|
|
6649
|
+
readonly required: false;
|
|
6650
|
+
readonly description: "What you need answered; required with --state blocked.";
|
|
6651
|
+
}, {
|
|
6652
|
+
readonly name: "--pane";
|
|
6653
|
+
readonly value: "<pane-id>";
|
|
6654
|
+
readonly required: false;
|
|
6655
|
+
readonly description: "Pane id when not running inside a Pane terminal (PANE_SESSION_ID).";
|
|
6656
|
+
}, {
|
|
6657
|
+
readonly name: "--panel";
|
|
6658
|
+
readonly value: "<panel-id>";
|
|
6659
|
+
readonly required: false;
|
|
6660
|
+
readonly description: "Panel id when not running inside a Pane terminal (PANE_PANEL_ID).";
|
|
6661
|
+
}, {
|
|
6662
|
+
readonly name: "--json";
|
|
6663
|
+
readonly required: false;
|
|
6664
|
+
readonly description: "Print machine-readable output.";
|
|
6665
|
+
}, {
|
|
6666
|
+
readonly name: "--pane-dir";
|
|
6667
|
+
readonly value: "<path>";
|
|
6668
|
+
readonly required: false;
|
|
6669
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6670
|
+
}];
|
|
6671
|
+
readonly examples: readonly ["runpane report --state ready --pr 747 --head fc5dce9 --summary-file /tmp/report.md --json", "runpane report --state blocked --question \"Should the migration drop the old column?\""];
|
|
6672
|
+
readonly jsonSchemas: readonly ["reportResult"];
|
|
6673
|
+
readonly notes: readonly ["Inside a Pane terminal the report is for the current panel (PANE_SESSION_ID and PANE_PANEL_ID). Explicit --panel (with an optional --pane) wins; with neither, the command fails with a clear error.", "Each report replaces the panel's previous one and survives a Pane restart.", "Watchers receive agent.report only when they list it in --kinds. REPORT lines skip the --min-interval batch."];
|
|
5670
6674
|
};
|
|
5671
6675
|
readonly "sessions list": {
|
|
5672
6676
|
readonly name: "sessions list";
|
|
@@ -5674,7 +6678,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
5674
6678
|
readonly details: "List durable named orchestration Sessions.";
|
|
5675
6679
|
readonly requiresPaneDaemon: true;
|
|
5676
6680
|
readonly mutates: false;
|
|
5677
|
-
readonly arguments: readonly [
|
|
6681
|
+
readonly arguments: readonly [{
|
|
6682
|
+
readonly name: "--pane-dir";
|
|
6683
|
+
readonly value: "<path>";
|
|
6684
|
+
readonly required: false;
|
|
6685
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6686
|
+
}];
|
|
5678
6687
|
readonly examples: readonly ["runpane sessions list [--json] [--pane-dir <path>]"];
|
|
5679
6688
|
readonly jsonSchemas: readonly ["sessionListResult"];
|
|
5680
6689
|
readonly notes: readonly [];
|
|
@@ -5685,7 +6694,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
5685
6694
|
readonly details: "Create a durable named orchestration Session and its hidden terminal owner.";
|
|
5686
6695
|
readonly requiresPaneDaemon: true;
|
|
5687
6696
|
readonly mutates: true;
|
|
5688
|
-
readonly arguments: readonly [
|
|
6697
|
+
readonly arguments: readonly [{
|
|
6698
|
+
readonly name: "--pane-dir";
|
|
6699
|
+
readonly value: "<path>";
|
|
6700
|
+
readonly required: false;
|
|
6701
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6702
|
+
}];
|
|
5689
6703
|
readonly examples: readonly ["runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]"];
|
|
5690
6704
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
5691
6705
|
readonly notes: readonly [];
|
|
@@ -5696,7 +6710,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
5696
6710
|
readonly details: "Read one durable named orchestration Session.";
|
|
5697
6711
|
readonly requiresPaneDaemon: true;
|
|
5698
6712
|
readonly mutates: false;
|
|
5699
|
-
readonly arguments: readonly [
|
|
6713
|
+
readonly arguments: readonly [{
|
|
6714
|
+
readonly name: "--pane-dir";
|
|
6715
|
+
readonly value: "<path>";
|
|
6716
|
+
readonly required: false;
|
|
6717
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6718
|
+
}];
|
|
5700
6719
|
readonly examples: readonly ["runpane sessions get --session <id|name> [--json] [--pane-dir <path>]"];
|
|
5701
6720
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
5702
6721
|
readonly notes: readonly [];
|
|
@@ -5707,7 +6726,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
5707
6726
|
readonly details: "Update a Session overview from structured JSON.";
|
|
5708
6727
|
readonly requiresPaneDaemon: true;
|
|
5709
6728
|
readonly mutates: true;
|
|
5710
|
-
readonly arguments: readonly [
|
|
6729
|
+
readonly arguments: readonly [{
|
|
6730
|
+
readonly name: "--pane-dir";
|
|
6731
|
+
readonly value: "<path>";
|
|
6732
|
+
readonly required: false;
|
|
6733
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6734
|
+
}];
|
|
5711
6735
|
readonly examples: readonly ["runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]"];
|
|
5712
6736
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
5713
6737
|
readonly notes: readonly [];
|
|
@@ -5718,7 +6742,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
5718
6742
|
readonly details: "Switch the durable terminal agent for a named Session.";
|
|
5719
6743
|
readonly requiresPaneDaemon: true;
|
|
5720
6744
|
readonly mutates: true;
|
|
5721
|
-
readonly arguments: readonly [
|
|
6745
|
+
readonly arguments: readonly [{
|
|
6746
|
+
readonly name: "--pane-dir";
|
|
6747
|
+
readonly value: "<path>";
|
|
6748
|
+
readonly required: false;
|
|
6749
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6750
|
+
}];
|
|
5722
6751
|
readonly examples: readonly ["runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]"];
|
|
5723
6752
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
5724
6753
|
readonly notes: readonly [];
|
|
@@ -5729,7 +6758,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
5729
6758
|
readonly details: "Associate a user-visible Pane with a named Session. `panes create` and `panes adopt` already do this automatically when run inside a Session orchestrator; use this for existing Panes or after `--no-associate`.";
|
|
5730
6759
|
readonly requiresPaneDaemon: true;
|
|
5731
6760
|
readonly mutates: true;
|
|
5732
|
-
readonly arguments: readonly [
|
|
6761
|
+
readonly arguments: readonly [{
|
|
6762
|
+
readonly name: "--pane-dir";
|
|
6763
|
+
readonly value: "<path>";
|
|
6764
|
+
readonly required: false;
|
|
6765
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6766
|
+
}];
|
|
5733
6767
|
readonly examples: readonly ["runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]"];
|
|
5734
6768
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
5735
6769
|
readonly notes: readonly [];
|
|
@@ -5740,7 +6774,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
5740
6774
|
readonly details: "Detach a Pane from a named Session.";
|
|
5741
6775
|
readonly requiresPaneDaemon: true;
|
|
5742
6776
|
readonly mutates: true;
|
|
5743
|
-
readonly arguments: readonly [
|
|
6777
|
+
readonly arguments: readonly [{
|
|
6778
|
+
readonly name: "--pane-dir";
|
|
6779
|
+
readonly value: "<path>";
|
|
6780
|
+
readonly required: false;
|
|
6781
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6782
|
+
}];
|
|
5744
6783
|
readonly examples: readonly ["runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]"];
|
|
5745
6784
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
5746
6785
|
readonly notes: readonly [];
|
|
@@ -5751,9 +6790,138 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
5751
6790
|
readonly details: "Read a live status, activity, git, and pull request overview for a named Session.";
|
|
5752
6791
|
readonly requiresPaneDaemon: true;
|
|
5753
6792
|
readonly mutates: false;
|
|
5754
|
-
readonly arguments: readonly [
|
|
6793
|
+
readonly arguments: readonly [{
|
|
6794
|
+
readonly name: "--pane-dir";
|
|
6795
|
+
readonly value: "<path>";
|
|
6796
|
+
readonly required: false;
|
|
6797
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6798
|
+
}];
|
|
5755
6799
|
readonly examples: readonly ["runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]"];
|
|
5756
6800
|
readonly jsonSchemas: readonly ["sessionOverviewResult"];
|
|
6801
|
+
readonly notes: readonly ["The result includes `locks`: named locks scoped to the Session or held by its Panes (see `runpane lock`)."];
|
|
6802
|
+
};
|
|
6803
|
+
readonly "lock acquire": {
|
|
6804
|
+
readonly name: "lock acquire";
|
|
6805
|
+
readonly summary: "Acquire a named lock on a resource shared between agents, such as one test account, optionally waiting for it.";
|
|
6806
|
+
readonly details: "Run this before using a resource that only one agent may use at a time, such as a shared test account, and release it when done. The owner is the calling Pane and panel ($PANE_SESSION_ID and $PANE_PANEL_ID, or --pane/--panel). The lock is scoped to the owner's Session when its Pane belongs to one, so two Sessions can each hold `testing-account`; otherwise it is global. It succeeds when the lock is free, expired, or already yours (which renews the TTL). Otherwise it returns ok:false with heldBy and expiresAt at once, or with --wait blocks in the daemon until the lock is released, expires, or its owner's panel exits or Pane is archived.";
|
|
6807
|
+
readonly requiresPaneDaemon: true;
|
|
6808
|
+
readonly mutates: true;
|
|
6809
|
+
readonly arguments: readonly [{
|
|
6810
|
+
readonly name: "--name";
|
|
6811
|
+
readonly value: "<name>";
|
|
6812
|
+
readonly required: true;
|
|
6813
|
+
readonly description: "Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".";
|
|
6814
|
+
}, {
|
|
6815
|
+
readonly name: "--ttl";
|
|
6816
|
+
readonly value: "<duration>";
|
|
6817
|
+
readonly required: true;
|
|
6818
|
+
readonly description: "How long the lock is held before it expires, such as 90s, 30m, or 2h; at most 24h. Acquire again before it runs out to renew.";
|
|
6819
|
+
}, {
|
|
6820
|
+
readonly name: "--wait";
|
|
6821
|
+
readonly value: "<milliseconds>";
|
|
6822
|
+
readonly required: false;
|
|
6823
|
+
readonly description: "Wait this long for the lock to come free. The CLI waits in daemon calls of up to 120 seconds each.";
|
|
6824
|
+
}, {
|
|
6825
|
+
readonly name: "--note";
|
|
6826
|
+
readonly value: "<text>";
|
|
6827
|
+
readonly required: false;
|
|
6828
|
+
readonly description: "What the lock is for, shown to other agents. Required outside a Pane terminal, where it also names the owner.";
|
|
6829
|
+
}, {
|
|
6830
|
+
readonly name: "--pane";
|
|
6831
|
+
readonly value: "<pane-id>";
|
|
6832
|
+
readonly required: false;
|
|
6833
|
+
readonly description: "Act for this Pane instead of $PANE_SESSION_ID.";
|
|
6834
|
+
}, {
|
|
6835
|
+
readonly name: "--panel";
|
|
6836
|
+
readonly value: "<panel-id>";
|
|
6837
|
+
readonly required: false;
|
|
6838
|
+
readonly description: "Act for this panel instead of $PANE_PANEL_ID.";
|
|
6839
|
+
}, {
|
|
6840
|
+
readonly name: "--json";
|
|
6841
|
+
readonly required: false;
|
|
6842
|
+
readonly description: "Print machine-readable output.";
|
|
6843
|
+
}, {
|
|
6844
|
+
readonly name: "--pane-dir";
|
|
6845
|
+
readonly value: "<path>";
|
|
6846
|
+
readonly required: false;
|
|
6847
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6848
|
+
}];
|
|
6849
|
+
readonly examples: readonly ["runpane lock acquire --name testing-account --ttl 30m --wait 1800000 --note \"call QA\" --json", "runpane lock acquire --name staging-db --ttl 10m --json"];
|
|
6850
|
+
readonly jsonSchemas: readonly ["lockAcquireRequest", "lockAcquireResult"];
|
|
6851
|
+
readonly notes: readonly ["Exit status is 0 only when the lock is yours; ok:false (exit 1) means another owner holds it, named by heldBy until expiresAt.", "Release the lock as soon as you are done with the resource: `runpane lock release --name <name>`. If you interrupt a waiting acquire, the lock can still be granted to you for up to two minutes; release it or let the TTL expire.", "Pane releases the lock when its TTL runs out, when the owner panel exits, or when the owner Pane is archived. Quitting Pane does not release it; locks survive a restart."];
|
|
6852
|
+
};
|
|
6853
|
+
readonly "lock release": {
|
|
6854
|
+
readonly name: "lock release";
|
|
6855
|
+
readonly summary: "Release a named lock you hold, or force-release another owner's lock.";
|
|
6856
|
+
readonly details: "Only the owner can release a lock. --force releases another owner's lock, for example a stuck worker's; use --session to name a Session-scoped lock from outside that Session.";
|
|
6857
|
+
readonly requiresPaneDaemon: true;
|
|
6858
|
+
readonly mutates: true;
|
|
6859
|
+
readonly arguments: readonly [{
|
|
6860
|
+
readonly name: "--name";
|
|
6861
|
+
readonly value: "<name>";
|
|
6862
|
+
readonly required: true;
|
|
6863
|
+
readonly description: "Lock name.";
|
|
6864
|
+
}, {
|
|
6865
|
+
readonly name: "--force";
|
|
6866
|
+
readonly required: false;
|
|
6867
|
+
readonly description: "Release the lock even though another owner holds it.";
|
|
6868
|
+
}, {
|
|
6869
|
+
readonly name: "--session";
|
|
6870
|
+
readonly value: "<id|name>";
|
|
6871
|
+
readonly required: false;
|
|
6872
|
+
readonly description: "Session whose lock to release; defaults to the caller's Session, or global.";
|
|
6873
|
+
}, {
|
|
6874
|
+
readonly name: "--note";
|
|
6875
|
+
readonly value: "<text>";
|
|
6876
|
+
readonly required: false;
|
|
6877
|
+
readonly description: "Outside a Pane terminal, the note the lock was acquired with.";
|
|
6878
|
+
}, {
|
|
6879
|
+
readonly name: "--pane";
|
|
6880
|
+
readonly value: "<pane-id>";
|
|
6881
|
+
readonly required: false;
|
|
6882
|
+
readonly description: "Act for this Pane instead of $PANE_SESSION_ID.";
|
|
6883
|
+
}, {
|
|
6884
|
+
readonly name: "--panel";
|
|
6885
|
+
readonly value: "<panel-id>";
|
|
6886
|
+
readonly required: false;
|
|
6887
|
+
readonly description: "Act for this panel instead of $PANE_PANEL_ID.";
|
|
6888
|
+
}, {
|
|
6889
|
+
readonly name: "--json";
|
|
6890
|
+
readonly required: false;
|
|
6891
|
+
readonly description: "Print machine-readable output.";
|
|
6892
|
+
}, {
|
|
6893
|
+
readonly name: "--pane-dir";
|
|
6894
|
+
readonly value: "<path>";
|
|
6895
|
+
readonly required: false;
|
|
6896
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6897
|
+
}];
|
|
6898
|
+
readonly examples: readonly ["runpane lock release --name testing-account --json", "runpane lock release --name testing-account --session \"<session-id-or-name>\" --force --json"];
|
|
6899
|
+
readonly jsonSchemas: readonly ["lockReleaseResult"];
|
|
6900
|
+
readonly notes: readonly ["released:false with ok:true means no such lock was held. ok:false with reason not-owner (exit 1) means another owner holds it."];
|
|
6901
|
+
};
|
|
6902
|
+
readonly "lock list": {
|
|
6903
|
+
readonly name: "lock list";
|
|
6904
|
+
readonly summary: "List held named locks, optionally only one Session's.";
|
|
6905
|
+
readonly details: "List every held lock, or with --session the locks scoped to that Session plus those its Panes hold. `runpane sessions overview` includes the same Session locks.";
|
|
6906
|
+
readonly requiresPaneDaemon: true;
|
|
6907
|
+
readonly mutates: false;
|
|
6908
|
+
readonly arguments: readonly [{
|
|
6909
|
+
readonly name: "--session";
|
|
6910
|
+
readonly value: "<id|name>";
|
|
6911
|
+
readonly required: false;
|
|
6912
|
+
readonly description: "Named Session id or exact name.";
|
|
6913
|
+
}, {
|
|
6914
|
+
readonly name: "--json";
|
|
6915
|
+
readonly required: false;
|
|
6916
|
+
readonly description: "Print machine-readable output.";
|
|
6917
|
+
}, {
|
|
6918
|
+
readonly name: "--pane-dir";
|
|
6919
|
+
readonly value: "<path>";
|
|
6920
|
+
readonly required: false;
|
|
6921
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
6922
|
+
}];
|
|
6923
|
+
readonly examples: readonly ["runpane lock list --json", "runpane lock list --session \"<session-id-or-name>\" --json"];
|
|
6924
|
+
readonly jsonSchemas: readonly ["lockListResult"];
|
|
5757
6925
|
readonly notes: readonly [];
|
|
5758
6926
|
};
|
|
5759
6927
|
};
|