runpane 2.4.151 → 2.4.152
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 +8 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +152 -107
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +4 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +5 -49
- package/dist/commands.js.map +1 -1
- package/dist/docs-index.json +1 -1
- package/dist/generated/contract.d.ts +70 -2
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +138 -70
- package/dist/generated/contract.js.map +1 -1
- package/dist/localControl.d.ts +8 -0
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +16 -4
- package/dist/localControl.js.map +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +2 -38
- package/dist/telemetry.js.map +1 -1
- package/package.json +1 -1
|
@@ -74,11 +74,13 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
74
74
|
readonly name: "help";
|
|
75
75
|
readonly summary: "Show help for runpane or a specific command.";
|
|
76
76
|
readonly usage: readonly ["runpane help [command]"];
|
|
77
|
+
readonly localControl: false;
|
|
77
78
|
}, {
|
|
78
79
|
readonly name: "setup";
|
|
79
80
|
readonly summary: "Open the guided setup wizard for install, remote host setup, update, and diagnostics.";
|
|
80
81
|
readonly usage: readonly ["runpane setup"];
|
|
81
82
|
readonly interactiveEntrypoint: true;
|
|
83
|
+
readonly localControl: false;
|
|
82
84
|
}, {
|
|
83
85
|
readonly name: "install";
|
|
84
86
|
readonly summary: "Install Pane on this machine or configure this machine as a remote daemon host.";
|
|
@@ -86,15 +88,18 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
86
88
|
readonly defaultTarget: "client";
|
|
87
89
|
readonly targets: readonly ["client", "daemon"];
|
|
88
90
|
readonly unknownDaemonFlagsForwarded: true;
|
|
91
|
+
readonly localControl: false;
|
|
89
92
|
}, {
|
|
90
93
|
readonly name: "update";
|
|
91
94
|
readonly summary: "Update the Pane desktop app using the same artifact path as install client.";
|
|
92
95
|
readonly usage: readonly ["runpane update [options]"];
|
|
93
96
|
readonly target: "client";
|
|
97
|
+
readonly localControl: false;
|
|
94
98
|
}, {
|
|
95
99
|
readonly name: "version";
|
|
96
100
|
readonly summary: "Print the runpane wrapper version without contacting, launching, or focusing Pane.";
|
|
97
101
|
readonly usage: readonly ["runpane version [--pane-dir <path>]", "runpane --version"];
|
|
102
|
+
readonly localControl: false;
|
|
98
103
|
}, {
|
|
99
104
|
readonly name: "doctor";
|
|
100
105
|
readonly summary: "Run platform, release, installed Pane, daemon reachability, and remote setup diagnostics.";
|
|
@@ -102,6 +107,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
102
107
|
readonly usage: readonly ["runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", "runpane doctor --report [--title <text>] --body-file <path|-> [--yes] [--json]"];
|
|
103
108
|
readonly toolsets: readonly ["core", "admin"];
|
|
104
109
|
readonly jsonSchemas: readonly ["doctorResult"];
|
|
110
|
+
readonly localControl: true;
|
|
105
111
|
}, {
|
|
106
112
|
readonly name: "daemon repair";
|
|
107
113
|
readonly summary: "Repair and restart the managed remote-daemon launcher without changing pairing or tunnel configuration.";
|
|
@@ -109,29 +115,34 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
109
115
|
readonly mutates: true;
|
|
110
116
|
readonly toolsets: readonly ["admin"];
|
|
111
117
|
readonly jsonSchemas: readonly ["daemonRepairResult"];
|
|
118
|
+
readonly localControl: true;
|
|
112
119
|
}, {
|
|
113
120
|
readonly name: "agents doctor";
|
|
114
121
|
readonly summary: "Diagnose whether a built-in agent command is available in a Pane repository environment.";
|
|
115
122
|
readonly usage: readonly ["runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json] [--pane-dir <path>]"];
|
|
116
123
|
readonly toolsets: readonly ["admin"];
|
|
117
124
|
readonly jsonSchemas: readonly ["agentDoctorResult"];
|
|
125
|
+
readonly localControl: true;
|
|
118
126
|
}, {
|
|
119
127
|
readonly name: "agent-context";
|
|
120
128
|
readonly summary: "Print token-efficient Pane command context for coding agents.";
|
|
121
129
|
readonly usage: readonly ["runpane agent-context [--json]", "runpane agent-context --command <command> [--json]"];
|
|
122
130
|
readonly toolsets: readonly ["admin", "docs"];
|
|
123
131
|
readonly jsonSchemas: readonly ["agentContextBriefResult", "agentContextCommandResult"];
|
|
132
|
+
readonly localControl: false;
|
|
124
133
|
}, {
|
|
125
134
|
readonly name: "mcp";
|
|
126
135
|
readonly summary: "Run the Pane MCP server over stdio so coding agents can call runpane commands as tools.";
|
|
127
136
|
readonly usage: readonly ["runpane mcp [--toolsets <name,...>] [--read-only]"];
|
|
128
137
|
readonly wrappers: readonly ["npm"];
|
|
138
|
+
readonly localControl: true;
|
|
129
139
|
}, {
|
|
130
140
|
readonly name: "repos list";
|
|
131
141
|
readonly summary: "List repositories saved in the running Pane app.";
|
|
132
142
|
readonly usage: readonly ["runpane repos list [--json] [--pane-dir <path>]"];
|
|
133
143
|
readonly toolsets: readonly ["core", "repos"];
|
|
134
144
|
readonly jsonSchemas: readonly ["repoListResult"];
|
|
145
|
+
readonly localControl: true;
|
|
135
146
|
}, {
|
|
136
147
|
readonly name: "repos add";
|
|
137
148
|
readonly summary: "Register an existing git repository with the running Pane app.";
|
|
@@ -141,30 +152,35 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
141
152
|
readonly idempotent: true;
|
|
142
153
|
readonly toolsets: readonly ["core", "repos"];
|
|
143
154
|
readonly jsonSchemas: readonly ["repoAddRequest", "repoAddResult"];
|
|
155
|
+
readonly localControl: true;
|
|
144
156
|
}, {
|
|
145
157
|
readonly name: "panes list";
|
|
146
158
|
readonly summary: "List Pane sessions in a saved repository.";
|
|
147
159
|
readonly usage: readonly ["runpane panes list [--repo <selector>] [--json] [--pane-dir <path>]"];
|
|
148
160
|
readonly toolsets: readonly ["core", "panes"];
|
|
149
161
|
readonly jsonSchemas: readonly ["paneListResult"];
|
|
162
|
+
readonly localControl: true;
|
|
150
163
|
}, {
|
|
151
164
|
readonly name: "panes cost";
|
|
152
165
|
readonly summary: "Report estimated token cost per Pane, with per-model breakdown and cache efficiency.";
|
|
153
166
|
readonly usage: readonly ["runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json] [--pane-dir <path>]"];
|
|
154
167
|
readonly toolsets: readonly ["panes"];
|
|
155
168
|
readonly jsonSchemas: readonly ["paneCostRequest", "paneCostResult"];
|
|
169
|
+
readonly localControl: true;
|
|
156
170
|
}, {
|
|
157
171
|
readonly name: "workspace state";
|
|
158
172
|
readonly summary: "Read one workspace snapshot of every Pane and CLI panel.";
|
|
159
173
|
readonly usage: readonly ["runpane workspace state [--repo <selector>] [--json] [--pane-dir <path>]"];
|
|
160
174
|
readonly toolsets: readonly ["core", "agents"];
|
|
161
175
|
readonly jsonSchemas: readonly ["workspaceStateResult"];
|
|
176
|
+
readonly localControl: true;
|
|
162
177
|
}, {
|
|
163
178
|
readonly name: "watch";
|
|
164
179
|
readonly summary: "Wait for workspace agent and Pane transitions using a daemon-held cursor.";
|
|
165
180
|
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
181
|
readonly toolsets: readonly ["agents"];
|
|
167
182
|
readonly jsonSchemas: readonly ["workspaceWaitRequest", "workspaceWaitResult"];
|
|
183
|
+
readonly localControl: true;
|
|
168
184
|
}, {
|
|
169
185
|
readonly name: "panes create";
|
|
170
186
|
readonly summary: "Create user-visible Panes (Pane sessions) backed by Pane-managed worktrees for feature/PR work and open terminal-backed tool tabs.";
|
|
@@ -173,6 +189,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
173
189
|
readonly additive: true;
|
|
174
190
|
readonly toolsets: readonly ["panes"];
|
|
175
191
|
readonly jsonSchemas: readonly ["paneCreateRequest", "paneCreateResult"];
|
|
192
|
+
readonly localControl: true;
|
|
176
193
|
}, {
|
|
177
194
|
readonly name: "panes adopt";
|
|
178
195
|
readonly summary: "Adopt an existing externally managed git worktree as a Pane without changing the worktree.";
|
|
@@ -181,6 +198,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
181
198
|
readonly additive: true;
|
|
182
199
|
readonly toolsets: readonly ["panes"];
|
|
183
200
|
readonly jsonSchemas: readonly ["paneCreateResult"];
|
|
201
|
+
readonly localControl: true;
|
|
184
202
|
}, {
|
|
185
203
|
readonly name: "panes archive";
|
|
186
204
|
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.";
|
|
@@ -188,6 +206,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
188
206
|
readonly mutates: true;
|
|
189
207
|
readonly toolsets: readonly ["core", "panes"];
|
|
190
208
|
readonly jsonSchemas: readonly ["paneArchiveRequest", "paneArchiveBulkRequest", "paneArchiveResult", "paneArchiveBulkResult"];
|
|
209
|
+
readonly localControl: true;
|
|
191
210
|
}, {
|
|
192
211
|
readonly name: "panes pin";
|
|
193
212
|
readonly summary: "Declaratively pin a Pane; pinned is the Pane UI's favorite/pin star and repeated requests are idempotent.";
|
|
@@ -196,6 +215,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
196
215
|
readonly idempotent: true;
|
|
197
216
|
readonly toolsets: readonly ["panes"];
|
|
198
217
|
readonly jsonSchemas: readonly ["panePinRequest", "panePinResult"];
|
|
218
|
+
readonly localControl: true;
|
|
199
219
|
}, {
|
|
200
220
|
readonly name: "panes unpin";
|
|
201
221
|
readonly summary: "Declaratively unpin a Pane; pinned is the Pane UI's favorite/pin star and repeated requests are idempotent.";
|
|
@@ -204,6 +224,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
204
224
|
readonly idempotent: true;
|
|
205
225
|
readonly toolsets: readonly ["panes"];
|
|
206
226
|
readonly jsonSchemas: readonly ["panePinRequest", "panePinResult"];
|
|
227
|
+
readonly localControl: true;
|
|
207
228
|
}, {
|
|
208
229
|
readonly name: "panes rename";
|
|
209
230
|
readonly summary: "Rename a Pane without changing its worktree, branch, panels, or focus.";
|
|
@@ -212,6 +233,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
212
233
|
readonly idempotent: true;
|
|
213
234
|
readonly toolsets: readonly ["panes"];
|
|
214
235
|
readonly jsonSchemas: readonly ["paneRenameRequest", "paneRenameResult"];
|
|
236
|
+
readonly localControl: true;
|
|
215
237
|
}, {
|
|
216
238
|
readonly name: "panes focus";
|
|
217
239
|
readonly summary: "Raise the Pane window and select a Pane (and optionally one of its panels) on explicit user request.";
|
|
@@ -221,6 +243,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
221
243
|
readonly idempotent: true;
|
|
222
244
|
readonly toolsets: readonly ["panes"];
|
|
223
245
|
readonly jsonSchemas: readonly ["paneFocusRequest", "paneFocusResult"];
|
|
246
|
+
readonly localControl: true;
|
|
224
247
|
}, {
|
|
225
248
|
readonly name: "panels create";
|
|
226
249
|
readonly summary: "Create a terminal-backed tool panel inside an existing Pane session.";
|
|
@@ -229,30 +252,35 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
229
252
|
readonly additive: true;
|
|
230
253
|
readonly toolsets: readonly ["panels"];
|
|
231
254
|
readonly jsonSchemas: readonly ["panelCreateRequest", "panelCreateResult"];
|
|
255
|
+
readonly localControl: true;
|
|
232
256
|
}, {
|
|
233
257
|
readonly name: "panels open";
|
|
234
258
|
readonly summary: "Open a URL or file as a browser/editor tab in a Pane, in split view beside the agent by default.";
|
|
235
259
|
readonly usage: readonly ["runpane panels open [--pane <pane-id>] (--url <url>|--file <path>) [--title <title>] [--split|--tab] [--focus|--no-focus] [--source user|agent] --yes [--json]"];
|
|
236
260
|
readonly mutates: true;
|
|
237
261
|
readonly jsonSchemas: readonly ["panelOpenRequest", "panelOpenResult"];
|
|
262
|
+
readonly localControl: true;
|
|
238
263
|
}, {
|
|
239
264
|
readonly name: "panels list";
|
|
240
265
|
readonly summary: "List tool panels inside a Pane session.";
|
|
241
266
|
readonly usage: readonly ["runpane panels list --pane <pane-id> [--json] [--pane-dir <path>]"];
|
|
242
267
|
readonly toolsets: readonly ["panels"];
|
|
243
268
|
readonly jsonSchemas: readonly ["panelListResult"];
|
|
269
|
+
readonly localControl: true;
|
|
244
270
|
}, {
|
|
245
271
|
readonly name: "panels output";
|
|
246
272
|
readonly summary: "Read recent terminal output from a panel.";
|
|
247
273
|
readonly usage: readonly ["runpane panels output --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]"];
|
|
248
274
|
readonly toolsets: readonly ["panels"];
|
|
249
275
|
readonly jsonSchemas: readonly ["panelOutputResult"];
|
|
276
|
+
readonly localControl: true;
|
|
250
277
|
}, {
|
|
251
278
|
readonly name: "panels screen";
|
|
252
279
|
readonly summary: "Read a compact current-screen view from a terminal panel.";
|
|
253
280
|
readonly usage: readonly ["runpane panels screen --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]"];
|
|
254
281
|
readonly toolsets: readonly ["panels"];
|
|
255
282
|
readonly jsonSchemas: readonly ["panelScreenResult"];
|
|
283
|
+
readonly localControl: true;
|
|
256
284
|
}, {
|
|
257
285
|
readonly name: "panels input";
|
|
258
286
|
readonly summary: "Send input bytes to a terminal panel.";
|
|
@@ -260,6 +288,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
260
288
|
readonly mutates: true;
|
|
261
289
|
readonly toolsets: readonly ["core", "panels"];
|
|
262
290
|
readonly jsonSchemas: readonly ["panelInputRequest", "panelInputResult"];
|
|
291
|
+
readonly localControl: true;
|
|
263
292
|
}, {
|
|
264
293
|
readonly name: "panels submit";
|
|
265
294
|
readonly summary: "Send and submit text to a terminal panel, including idle agent composers.";
|
|
@@ -267,6 +296,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
267
296
|
readonly mutates: true;
|
|
268
297
|
readonly toolsets: readonly ["panels"];
|
|
269
298
|
readonly jsonSchemas: readonly ["panelSubmitRequest", "panelSubmitResult"];
|
|
299
|
+
readonly localControl: true;
|
|
270
300
|
}, {
|
|
271
301
|
readonly name: "panels submit-composer";
|
|
272
302
|
readonly summary: "Submit an agent composer using the panel-appropriate key sequence.";
|
|
@@ -274,18 +304,21 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
274
304
|
readonly mutates: true;
|
|
275
305
|
readonly toolsets: readonly ["panels"];
|
|
276
306
|
readonly jsonSchemas: readonly ["panelSubmitComposerRequest", "panelSubmitComposerResult"];
|
|
307
|
+
readonly localControl: true;
|
|
277
308
|
}, {
|
|
278
309
|
readonly name: "panels wait";
|
|
279
310
|
readonly summary: "Wait for a terminal panel to initialize, become ready/idle, or contain text.";
|
|
280
311
|
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>]"];
|
|
281
312
|
readonly toolsets: readonly ["panels"];
|
|
282
313
|
readonly jsonSchemas: readonly ["panelWaitResult"];
|
|
314
|
+
readonly localControl: true;
|
|
283
315
|
}, {
|
|
284
316
|
readonly name: "panels last-message";
|
|
285
317
|
readonly summary: "Read an agent's last reply from its transcript, without scraping the screen.";
|
|
286
318
|
readonly usage: readonly ["runpane panels last-message --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]"];
|
|
287
319
|
readonly toolsets: readonly ["panels", "agents"];
|
|
288
320
|
readonly jsonSchemas: readonly ["panelLastMessageResult"];
|
|
321
|
+
readonly localControl: true;
|
|
289
322
|
}, {
|
|
290
323
|
readonly name: "panes git-status";
|
|
291
324
|
readonly summary: "Read the git status of a Pane worktree: uncommitted, unpushed, and behind-main counts.";
|
|
@@ -296,6 +329,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
296
329
|
};
|
|
297
330
|
readonly toolsets: readonly ["core", "git"];
|
|
298
331
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
332
|
+
readonly localControl: true;
|
|
299
333
|
}, {
|
|
300
334
|
readonly name: "panes commit";
|
|
301
335
|
readonly summary: "Stage all changes in a Pane worktree and commit them.";
|
|
@@ -308,6 +342,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
308
342
|
};
|
|
309
343
|
readonly toolsets: readonly ["git"];
|
|
310
344
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
345
|
+
readonly localControl: true;
|
|
311
346
|
}, {
|
|
312
347
|
readonly name: "panes push";
|
|
313
348
|
readonly summary: "Push a Pane branch to its remote.";
|
|
@@ -322,6 +357,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
322
357
|
};
|
|
323
358
|
readonly toolsets: readonly ["git"];
|
|
324
359
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
360
|
+
readonly localControl: true;
|
|
325
361
|
}, {
|
|
326
362
|
readonly name: "panes pull";
|
|
327
363
|
readonly summary: "Pull the remote branch into a Pane worktree.";
|
|
@@ -334,6 +370,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
334
370
|
};
|
|
335
371
|
readonly toolsets: readonly ["git"];
|
|
336
372
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
373
|
+
readonly localControl: true;
|
|
337
374
|
}, {
|
|
338
375
|
readonly name: "panes rebase-main";
|
|
339
376
|
readonly summary: "Rebase a Pane branch onto the latest main branch.";
|
|
@@ -345,6 +382,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
345
382
|
};
|
|
346
383
|
readonly toolsets: readonly ["git"];
|
|
347
384
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
385
|
+
readonly localControl: true;
|
|
348
386
|
}, {
|
|
349
387
|
readonly name: "panes restore";
|
|
350
388
|
readonly summary: "Restore an archived Pane, recreating its worktree.";
|
|
@@ -358,6 +396,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
358
396
|
};
|
|
359
397
|
readonly toolsets: readonly ["core", "panes"];
|
|
360
398
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
399
|
+
readonly localControl: true;
|
|
361
400
|
}, {
|
|
362
401
|
readonly name: "panes squash-rebase";
|
|
363
402
|
readonly summary: "Squash a Pane branch into one commit and rebase it onto main.";
|
|
@@ -369,6 +408,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
369
408
|
};
|
|
370
409
|
readonly toolsets: readonly ["git"];
|
|
371
410
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
411
|
+
readonly localControl: true;
|
|
372
412
|
}, {
|
|
373
413
|
readonly name: "panes stash";
|
|
374
414
|
readonly summary: "Stash uncommitted changes in a Pane worktree.";
|
|
@@ -380,6 +420,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
380
420
|
};
|
|
381
421
|
readonly toolsets: readonly ["git"];
|
|
382
422
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
423
|
+
readonly localControl: true;
|
|
383
424
|
}, {
|
|
384
425
|
readonly name: "panes stash-pop";
|
|
385
426
|
readonly summary: "Apply and drop the latest stash in a Pane worktree.";
|
|
@@ -391,6 +432,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
391
432
|
};
|
|
392
433
|
readonly toolsets: readonly ["git"];
|
|
393
434
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
435
|
+
readonly localControl: true;
|
|
394
436
|
}, {
|
|
395
437
|
readonly name: "panes soft-reset";
|
|
396
438
|
readonly summary: "Undo the last commit in a Pane, keeping its changes staged.";
|
|
@@ -402,6 +444,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
402
444
|
};
|
|
403
445
|
readonly toolsets: readonly ["git"];
|
|
404
446
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
447
|
+
readonly localControl: true;
|
|
405
448
|
}, {
|
|
406
449
|
readonly name: "panes fetch";
|
|
407
450
|
readonly summary: "Fetch the remote for a Pane worktree.";
|
|
@@ -416,6 +459,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
416
459
|
};
|
|
417
460
|
readonly toolsets: readonly ["git"];
|
|
418
461
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
462
|
+
readonly localControl: true;
|
|
419
463
|
}, {
|
|
420
464
|
readonly name: "panes run-script";
|
|
421
465
|
readonly summary: "Run the repository's run script in a Pane.";
|
|
@@ -428,6 +472,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
428
472
|
};
|
|
429
473
|
readonly toolsets: readonly ["panes"];
|
|
430
474
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
475
|
+
readonly localControl: true;
|
|
431
476
|
}, {
|
|
432
477
|
readonly name: "panes stop-script";
|
|
433
478
|
readonly summary: "Stop the run script running in a Pane.";
|
|
@@ -440,6 +485,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
440
485
|
};
|
|
441
486
|
readonly toolsets: readonly ["panes"];
|
|
442
487
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
488
|
+
readonly localControl: true;
|
|
443
489
|
}, {
|
|
444
490
|
readonly name: "panes move";
|
|
445
491
|
readonly summary: "Move a Pane into a sidebar folder.";
|
|
@@ -452,6 +498,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
452
498
|
};
|
|
453
499
|
readonly toolsets: readonly ["panes"];
|
|
454
500
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
501
|
+
readonly localControl: true;
|
|
455
502
|
}, {
|
|
456
503
|
readonly name: "folders list";
|
|
457
504
|
readonly summary: "List the sidebar folders of a repository.";
|
|
@@ -462,6 +509,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
462
509
|
};
|
|
463
510
|
readonly toolsets: readonly ["panes"];
|
|
464
511
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
512
|
+
readonly localControl: true;
|
|
465
513
|
}, {
|
|
466
514
|
readonly name: "folders create";
|
|
467
515
|
readonly summary: "Create a sidebar folder in a repository.";
|
|
@@ -474,12 +522,14 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
474
522
|
};
|
|
475
523
|
readonly toolsets: readonly ["panes"];
|
|
476
524
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
525
|
+
readonly localControl: true;
|
|
477
526
|
}, {
|
|
478
527
|
readonly name: "links create";
|
|
479
528
|
readonly summary: "Build a pane:// link that opens a Pane, panel, repository, or Session in the Pane app.";
|
|
480
529
|
readonly usage: readonly ["runpane links create --pane <pane-id> [--panel <panel-id>] [--json]", "runpane links create --repo <repo-id> [--json]", "runpane links create --session <session-id> [--json]"];
|
|
481
530
|
readonly toolsets: readonly ["core", "links"];
|
|
482
531
|
readonly jsonSchemas: readonly ["linkCreateResult"];
|
|
532
|
+
readonly localControl: true;
|
|
483
533
|
}, {
|
|
484
534
|
readonly name: "links open";
|
|
485
535
|
readonly summary: "Open a pane:// link in the running Pane app.";
|
|
@@ -493,6 +543,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
493
543
|
};
|
|
494
544
|
readonly toolsets: readonly ["links"];
|
|
495
545
|
readonly jsonSchemas: readonly ["daemonActionResult"];
|
|
546
|
+
readonly localControl: true;
|
|
496
547
|
}, {
|
|
497
548
|
readonly name: "docs search";
|
|
498
549
|
readonly summary: "Search Pane's docs, runpane help, and the Pane Chat skills.";
|
|
@@ -500,6 +551,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
500
551
|
readonly wrappers: readonly ["npm"];
|
|
501
552
|
readonly toolsets: readonly ["core", "docs"];
|
|
502
553
|
readonly jsonSchemas: readonly ["docsSearchResult"];
|
|
554
|
+
readonly localControl: true;
|
|
503
555
|
}, {
|
|
504
556
|
readonly name: "docs read";
|
|
505
557
|
readonly summary: "Read one Pane doc, help topic, or skill in full.";
|
|
@@ -507,6 +559,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
507
559
|
readonly wrappers: readonly ["npm"];
|
|
508
560
|
readonly toolsets: readonly ["core", "docs"];
|
|
509
561
|
readonly jsonSchemas: readonly ["docsReadResult"];
|
|
562
|
+
readonly localControl: true;
|
|
510
563
|
}, {
|
|
511
564
|
readonly name: "agents start";
|
|
512
565
|
readonly summary: "Start an agent on a task: create a Pane in a repository, launch the agent with the prompt, and wait until it is ready.";
|
|
@@ -516,6 +569,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
516
569
|
readonly wrappers: readonly ["npm"];
|
|
517
570
|
readonly toolsets: readonly ["core", "agents"];
|
|
518
571
|
readonly jsonSchemas: readonly ["agentTaskResult"];
|
|
572
|
+
readonly localControl: true;
|
|
519
573
|
}, {
|
|
520
574
|
readonly name: "agents status";
|
|
521
575
|
readonly summary: "Check on an agent: whether it is working, ready, blocked, or idle, plus its current screen.";
|
|
@@ -523,6 +577,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
523
577
|
readonly wrappers: readonly ["npm"];
|
|
524
578
|
readonly toolsets: readonly ["core", "agents"];
|
|
525
579
|
readonly jsonSchemas: readonly ["agentStatusResult"];
|
|
580
|
+
readonly localControl: true;
|
|
526
581
|
}, {
|
|
527
582
|
readonly name: "agents send";
|
|
528
583
|
readonly summary: "Send a follow-up message to an agent and confirm it was submitted.";
|
|
@@ -531,6 +586,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
531
586
|
readonly wrappers: readonly ["npm"];
|
|
532
587
|
readonly toolsets: readonly ["core", "agents"];
|
|
533
588
|
readonly jsonSchemas: readonly ["agentSendResult"];
|
|
589
|
+
readonly localControl: true;
|
|
534
590
|
}, {
|
|
535
591
|
readonly name: "report";
|
|
536
592
|
readonly summary: "Hand back a worker's structured report: state, PR, head commit, summary, and the question when blocked.";
|
|
@@ -540,12 +596,14 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
540
596
|
readonly idempotent: true;
|
|
541
597
|
readonly toolsets: readonly ["agents"];
|
|
542
598
|
readonly jsonSchemas: readonly ["reportResult"];
|
|
599
|
+
readonly localControl: true;
|
|
543
600
|
}, {
|
|
544
601
|
readonly name: "sessions list";
|
|
545
602
|
readonly summary: "List durable named orchestration Sessions.";
|
|
546
603
|
readonly usage: readonly ["runpane sessions list [--json] [--pane-dir <path>]"];
|
|
547
604
|
readonly toolsets: readonly ["sessions"];
|
|
548
605
|
readonly jsonSchemas: readonly ["sessionListResult"];
|
|
606
|
+
readonly localControl: true;
|
|
549
607
|
}, {
|
|
550
608
|
readonly name: "sessions create";
|
|
551
609
|
readonly summary: "Create a durable named orchestration Session and its hidden terminal owner.";
|
|
@@ -554,12 +612,14 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
554
612
|
readonly additive: true;
|
|
555
613
|
readonly toolsets: readonly ["sessions"];
|
|
556
614
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
615
|
+
readonly localControl: true;
|
|
557
616
|
}, {
|
|
558
617
|
readonly name: "sessions get";
|
|
559
618
|
readonly summary: "Read one durable named orchestration Session.";
|
|
560
619
|
readonly usage: readonly ["runpane sessions get --session <id|name> [--json] [--pane-dir <path>]"];
|
|
561
620
|
readonly toolsets: readonly ["sessions"];
|
|
562
621
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
622
|
+
readonly localControl: true;
|
|
563
623
|
}, {
|
|
564
624
|
readonly name: "sessions update";
|
|
565
625
|
readonly summary: "Update a Session overview from structured JSON.";
|
|
@@ -568,6 +628,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
568
628
|
readonly idempotent: true;
|
|
569
629
|
readonly toolsets: readonly ["sessions"];
|
|
570
630
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
631
|
+
readonly localControl: true;
|
|
571
632
|
}, {
|
|
572
633
|
readonly name: "sessions set-agent";
|
|
573
634
|
readonly summary: "Switch the durable terminal agent for a named Session.";
|
|
@@ -576,6 +637,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
576
637
|
readonly idempotent: true;
|
|
577
638
|
readonly toolsets: readonly ["sessions"];
|
|
578
639
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
640
|
+
readonly localControl: true;
|
|
579
641
|
}, {
|
|
580
642
|
readonly name: "sessions associate";
|
|
581
643
|
readonly summary: "Associate a user-visible Pane with a named Session.";
|
|
@@ -585,6 +647,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
585
647
|
readonly idempotent: true;
|
|
586
648
|
readonly toolsets: readonly ["sessions"];
|
|
587
649
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
650
|
+
readonly localControl: true;
|
|
588
651
|
}, {
|
|
589
652
|
readonly name: "sessions detach";
|
|
590
653
|
readonly summary: "Detach a Pane from a named Session.";
|
|
@@ -593,12 +656,14 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
593
656
|
readonly idempotent: true;
|
|
594
657
|
readonly toolsets: readonly ["sessions"];
|
|
595
658
|
readonly jsonSchemas: readonly ["sessionResult"];
|
|
659
|
+
readonly localControl: true;
|
|
596
660
|
}, {
|
|
597
661
|
readonly name: "sessions overview";
|
|
598
662
|
readonly summary: "Read a live status, activity, git, and pull request overview for a named Session.";
|
|
599
663
|
readonly usage: readonly ["runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]"];
|
|
600
664
|
readonly toolsets: readonly ["sessions"];
|
|
601
665
|
readonly jsonSchemas: readonly ["sessionOverviewResult"];
|
|
666
|
+
readonly localControl: true;
|
|
602
667
|
}, {
|
|
603
668
|
readonly name: "lock acquire";
|
|
604
669
|
readonly summary: "Acquire a named lock on a resource shared between agents, such as one test account, optionally waiting for it.";
|
|
@@ -608,6 +673,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
608
673
|
readonly idempotent: true;
|
|
609
674
|
readonly toolsets: readonly ["sessions"];
|
|
610
675
|
readonly jsonSchemas: readonly ["lockAcquireRequest", "lockAcquireResult"];
|
|
676
|
+
readonly localControl: true;
|
|
611
677
|
}, {
|
|
612
678
|
readonly name: "lock release";
|
|
613
679
|
readonly summary: "Release a named lock you hold, or force-release another owner's lock.";
|
|
@@ -616,12 +682,14 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
616
682
|
readonly idempotent: true;
|
|
617
683
|
readonly toolsets: readonly ["sessions"];
|
|
618
684
|
readonly jsonSchemas: readonly ["lockReleaseResult"];
|
|
685
|
+
readonly localControl: true;
|
|
619
686
|
}, {
|
|
620
687
|
readonly name: "lock list";
|
|
621
688
|
readonly summary: "List held named locks, optionally only one Session's.";
|
|
622
689
|
readonly usage: readonly ["runpane lock list [--session <id|name>] [--json] [--pane-dir <path>]"];
|
|
623
690
|
readonly toolsets: readonly ["sessions"];
|
|
624
691
|
readonly jsonSchemas: readonly ["lockListResult"];
|
|
692
|
+
readonly localControl: true;
|
|
625
693
|
}];
|
|
626
694
|
readonly flags: {
|
|
627
695
|
readonly wrapper: readonly [{
|
|
@@ -1165,7 +1233,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1165
1233
|
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"];
|
|
1166
1234
|
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, except when the CLI runs inside a Session orchestrator (`PANE_ORCHESTRATION_SESSION_ID`), where child worktrees default to unpinned. Explicit `--pinned` / `--no-pinned` override creation defaults. First Session association clears an existing pin; manual pins applied afterward are preserved. 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 open` opens a URL or a file from the Pane worktree as a tab in an existing Pane (default: the calling panel's Pane from `PANE_SESSION_ID`), in split view beside the agent unless `--tab` is passed. HTML files render in a browser tab and other files open in an editor tab; an existing tab showing the same target is reused. It activates the tab inside the Pane but never raises or focuses the Pane window.", "`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."];
|
|
1167
1235
|
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.";
|
|
1168
|
-
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,
|
|
1236
|
+
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, build the local wrapper with `pnpm --filter runpane build` and run it with Node 22 or newer, for example `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.";
|
|
1169
1237
|
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.";
|
|
1170
1238
|
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."];
|
|
1171
1239
|
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."];
|
|
@@ -4570,7 +4638,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
4570
4638
|
readonly brief: {
|
|
4571
4639
|
readonly title: "Pane agent context";
|
|
4572
4640
|
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.";
|
|
4573
|
-
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,
|
|
4641
|
+
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, build the local wrapper with `pnpm --filter runpane build` and run it with Node 22 or newer, for example `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."];
|
|
4574
4642
|
readonly detailCommand: "runpane agent-context --command <command> [--json]";
|
|
4575
4643
|
readonly tools: readonly [{
|
|
4576
4644
|
readonly name: "doctor";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/generated/contract.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/generated/contract.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2yZnB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9E,MAAM,MAAM,aAAa,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACnF,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC"}
|