runpane 2.4.104 → 2.4.106
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 +43 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +24 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +7 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +50 -11
- package/dist/commands.js.map +1 -1
- package/dist/doctor.d.ts +7 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +14 -0
- package/dist/doctor.js.map +1 -1
- package/dist/generated/contract.d.ts +346 -18
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +711 -14
- package/dist/generated/contract.js.map +1 -1
- package/dist/localControl.d.ts +9 -1
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +263 -1
- package/dist/localControl.js.map +1 -1
- package/package.json +1 -1
|
@@ -26,6 +26,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
26
26
|
readonly format: "lines";
|
|
27
27
|
readonly heartbeatSeconds: 60;
|
|
28
28
|
readonly idleAfterMs: 600000;
|
|
29
|
+
readonly settleMs: 0;
|
|
30
|
+
readonly blockedSettleMs: 0;
|
|
31
|
+
readonly minIntervalMs: 0;
|
|
32
|
+
readonly idleBackoff: false;
|
|
29
33
|
readonly agentsOnly: true;
|
|
30
34
|
readonly includeHeldInputPresence: true;
|
|
31
35
|
};
|
|
@@ -128,7 +132,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
128
132
|
}, {
|
|
129
133
|
readonly name: "watch";
|
|
130
134
|
readonly summary: "Wait for workspace agent and Pane transitions using a daemon-held cursor.";
|
|
131
|
-
readonly usage: readonly ["runpane watch [--as <name>|--since <generation>] [--follow] [--format <lines|json>] [--heartbeat <seconds>] [--idle-after <ms>] [--all-managed|--pane <id>] [--include-shells] [--self-test] [--kinds <kind,...>] [--repo <selector>] [--name-contains <text>] [--timeout-ms <ms>] [--from <now|earliest>] [--json]"];
|
|
135
|
+
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]"];
|
|
132
136
|
readonly jsonSchemas: readonly ["workspaceWaitRequest", "workspaceWaitResult"];
|
|
133
137
|
}, {
|
|
134
138
|
readonly name: "panes create";
|
|
@@ -210,6 +214,51 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
210
214
|
readonly summary: "Wait for a terminal panel to initialize, become ready/idle, or contain text.";
|
|
211
215
|
readonly usage: readonly ["runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--contains <text>] [--timeout-ms <ms>] [--interval-ms <ms>] [--json]"];
|
|
212
216
|
readonly jsonSchemas: readonly ["panelWaitResult"];
|
|
217
|
+
}, {
|
|
218
|
+
readonly name: "sessions list";
|
|
219
|
+
readonly summary: "List durable named orchestration Sessions.";
|
|
220
|
+
readonly usage: readonly ["runpane sessions list [--json] [--pane-dir <path>]"];
|
|
221
|
+
readonly jsonSchemas: readonly ["sessionListResult"];
|
|
222
|
+
}, {
|
|
223
|
+
readonly name: "sessions create";
|
|
224
|
+
readonly summary: "Create a durable named orchestration Session and its hidden terminal owner.";
|
|
225
|
+
readonly usage: readonly ["runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]"];
|
|
226
|
+
readonly mutates: true;
|
|
227
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
228
|
+
}, {
|
|
229
|
+
readonly name: "sessions get";
|
|
230
|
+
readonly summary: "Read one durable named orchestration Session.";
|
|
231
|
+
readonly usage: readonly ["runpane sessions get --session <id|name> [--json] [--pane-dir <path>]"];
|
|
232
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
233
|
+
}, {
|
|
234
|
+
readonly name: "sessions update";
|
|
235
|
+
readonly summary: "Update a Session overview from structured JSON.";
|
|
236
|
+
readonly usage: readonly ["runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]"];
|
|
237
|
+
readonly mutates: true;
|
|
238
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
239
|
+
}, {
|
|
240
|
+
readonly name: "sessions set-agent";
|
|
241
|
+
readonly summary: "Switch the durable terminal agent for a named Session.";
|
|
242
|
+
readonly usage: readonly ["runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]"];
|
|
243
|
+
readonly mutates: true;
|
|
244
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
245
|
+
}, {
|
|
246
|
+
readonly name: "sessions associate";
|
|
247
|
+
readonly summary: "Associate a user-visible Pane with a named Session.";
|
|
248
|
+
readonly usage: readonly ["runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]"];
|
|
249
|
+
readonly mutates: true;
|
|
250
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
251
|
+
}, {
|
|
252
|
+
readonly name: "sessions detach";
|
|
253
|
+
readonly summary: "Detach a Pane from a named Session.";
|
|
254
|
+
readonly usage: readonly ["runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]"];
|
|
255
|
+
readonly mutates: true;
|
|
256
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
257
|
+
}, {
|
|
258
|
+
readonly name: "sessions overview";
|
|
259
|
+
readonly summary: "Read a live status, activity, git, and pull request overview for a named Session.";
|
|
260
|
+
readonly usage: readonly ["runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]"];
|
|
261
|
+
readonly jsonSchemas: readonly ["sessionOverviewResult"];
|
|
213
262
|
}];
|
|
214
263
|
readonly flags: {
|
|
215
264
|
readonly wrapper: readonly [{
|
|
@@ -339,7 +388,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
339
388
|
}, {
|
|
340
389
|
readonly name: "--from-json";
|
|
341
390
|
readonly value: "<path|->";
|
|
342
|
-
readonly description: "Read a
|
|
391
|
+
readonly description: "Read a structured JSON request payload from a file or stdin.";
|
|
343
392
|
}, {
|
|
344
393
|
readonly name: "--timeout-ms";
|
|
345
394
|
readonly value: "<milliseconds>";
|
|
@@ -420,10 +469,26 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
420
469
|
readonly name: "--idle-after";
|
|
421
470
|
readonly value: "<milliseconds>";
|
|
422
471
|
readonly description: "Emit agent.idle after this READY duration; 0 disables idle events.";
|
|
472
|
+
}, {
|
|
473
|
+
readonly name: "--settle";
|
|
474
|
+
readonly value: "<milliseconds>";
|
|
475
|
+
readonly description: "Follow-only opt-in: emit READY only after the panel stays idle this long; a BUSY inside the window cancels it silently.";
|
|
476
|
+
}, {
|
|
477
|
+
readonly name: "--blocked-settle";
|
|
478
|
+
readonly value: "<milliseconds>";
|
|
479
|
+
readonly description: "Follow-only opt-in: emit BLOCKED only after the panel stays blocked this long; an in-pane answer inside the window cancels it silently.";
|
|
480
|
+
}, {
|
|
481
|
+
readonly name: "--min-interval";
|
|
482
|
+
readonly value: "<milliseconds>";
|
|
483
|
+
readonly description: "Follow-only opt-in: hold non-urgent lines and flush them together at most once per interval; BLOCKED bypasses it.";
|
|
423
484
|
}, {
|
|
424
485
|
readonly name: "--body-file";
|
|
425
486
|
readonly value: "<path|->";
|
|
426
487
|
readonly description: "Read diagnostic report evidence from a file or stdin.";
|
|
488
|
+
}, {
|
|
489
|
+
readonly name: "--session";
|
|
490
|
+
readonly value: "<id|name>";
|
|
491
|
+
readonly description: "Named orchestration Session id or exact name.";
|
|
427
492
|
}];
|
|
428
493
|
readonly localBoolean: readonly [{
|
|
429
494
|
readonly name: "--json";
|
|
@@ -473,6 +538,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
473
538
|
}, {
|
|
474
539
|
readonly name: "--self-test";
|
|
475
540
|
readonly description: "Probe the current daemon watch path without advancing a named cursor.";
|
|
541
|
+
}, {
|
|
542
|
+
readonly name: "--idle-backoff";
|
|
543
|
+
readonly description: "Follow-only opt-in: IDLE fires at --idle-after, then 30m, 1h, 3h, then daily per panel; any activity resets it.";
|
|
476
544
|
}, {
|
|
477
545
|
readonly name: "--report";
|
|
478
546
|
readonly description: "Prepare a redacted doctor report; external filing still requires --yes.";
|
|
@@ -480,7 +548,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
480
548
|
};
|
|
481
549
|
readonly help: {
|
|
482
550
|
readonly npm: {
|
|
483
|
-
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane doctor --report --body-file <path|->", " runpane daemon repair [--pane-dir <path>] [--yes] [--json]", " runpane agent-context [--json]", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", " runpane repos list [--json]", " runpane repos add --path <path> [--name <name>]", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes", " runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] --yes", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane help [command]", "", "Quick start:", " npx --yes runpane@latest", " npm i -g runpane && runpane setup", "", "Advanced examples:", " npx --yes runpane@latest install client", " npx --yes runpane@latest install daemon --label \"My Server\"", " pnpm dlx runpane@latest", "", "Common commands:", " runpane help", " runpane setup", " runpane install", " runpane doctor", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json", " runpane agent-context --command \"<command>\" --json", "", "Run \"runpane help panes create\" for pane orchestration options."];
|
|
551
|
+
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane doctor --report --body-file <path|->", " runpane daemon repair [--pane-dir <path>] [--yes] [--json]", " runpane agent-context [--json]", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", " runpane repos list [--json]", " runpane repos add --path <path> [--name <name>]", " runpane sessions list [--json] [--pane-dir <path>]", " runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]", " runpane sessions get --session <id|name> [--json] [--pane-dir <path>]", " runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]", " runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]", " runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", " runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", " runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes", " runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] --yes", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane help [command]", "", "Quick start:", " npx --yes runpane@latest", " npm i -g runpane && runpane setup", "", "Advanced examples:", " npx --yes runpane@latest install client", " npx --yes runpane@latest install daemon --label \"My Server\"", " pnpm dlx runpane@latest", "", "Common commands:", " runpane help", " runpane setup", " runpane install", " runpane doctor", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json", " runpane agent-context --command \"<command>\" --json", "", "Run \"runpane help panes create\" for pane orchestration options."];
|
|
484
552
|
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>"];
|
|
485
553
|
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"];
|
|
486
554
|
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"];
|
|
@@ -494,7 +562,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
494
562
|
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"];
|
|
495
563
|
readonly workspace: readonly ["Workspace observation commands.", "", "Usage:", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow"];
|
|
496
564
|
readonly "workspace state": readonly ["Usage:", " runpane workspace state [--repo <selector>] [--json]", "", "Returns one workspace snapshot of every Pane and CLI panel."];
|
|
497
|
-
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", " --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", " --kinds <kind,...> Limit event kinds", " --pane <id> Limit to a Pane; repeatable", " --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", " --json Alias for --format json"];
|
|
565
|
+
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 bypasses (--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", " --kinds <kind,...> Limit event kinds", " --pane <id> Limit to a Pane; repeatable", " --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", " --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.", "Expensive consumers opt in: --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --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. Judge death by a non-zero exit or a WATCH ERROR line, not by silence."];
|
|
498
566
|
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", " --base-branch <branch> Base branch for the worktree", " --agent <codex|claude|cursor> Built-in terminal template", " --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", " --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)", " --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"];
|
|
499
567
|
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 it immediately; --folder <name> groups the pane; --no-pinned opts out of pinning; --dry-run previews."];
|
|
500
568
|
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"];
|
|
@@ -512,6 +580,15 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
512
580
|
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"];
|
|
513
581
|
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> Built-in agent command template to launch.", " --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.", " --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."];
|
|
514
582
|
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 sends Ctrl+Enter and other panels send Enter.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
583
|
+
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."];
|
|
584
|
+
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."];
|
|
585
|
+
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."];
|
|
586
|
+
readonly "sessions update": readonly ["Usage:", "runpane sessions update --session <id|name> --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."];
|
|
587
|
+
readonly "sessions set-agent": readonly ["Usage:", "runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--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."];
|
|
588
|
+
readonly "sessions associate": readonly ["Usage:", "runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
|
|
589
|
+
readonly "sessions detach": readonly ["Usage:", "runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
|
|
590
|
+
readonly "sessions overview": readonly ["Usage:", "runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
|
|
591
|
+
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."];
|
|
515
592
|
};
|
|
516
593
|
readonly pip: {
|
|
517
594
|
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane doctor --report --body-file <path|->", " runpane daemon repair [--pane-dir <path>] [--yes] [--json]", " runpane agent-context [--json]", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", " runpane repos list [--json]", " runpane repos add --path <path> [--name <name>]", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes", " python -m runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] --yes", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane help [command]", "", "Quick start:", " pipx run runpane", " python -m pip install runpane && python -m runpane setup", "", "Advanced examples:", " pipx run runpane install client", " pipx run runpane install daemon --label \"My Server\"", " uvx runpane@latest", "", "Common commands:", " runpane help", " runpane setup", " runpane install", " runpane doctor", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json", " runpane agent-context --command \"<command>\" --json", "", "Run \"runpane help panes create\" for pane orchestration options."];
|
|
@@ -528,7 +605,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
528
605
|
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"];
|
|
529
606
|
readonly workspace: readonly ["Workspace observation commands.", "", "Usage:", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow"];
|
|
530
607
|
readonly "workspace state": readonly ["Usage:", " runpane workspace state [--repo <selector>] [--json]", "", "Returns one workspace snapshot of every Pane and CLI panel."];
|
|
531
|
-
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>", " --all-managed", " --include-shells", " --agents-only", " --exclude-pane <id> Repeatable", " --self-test", " --kinds <kind,...>", " --pane <id> Repeatable", " --repo <selector>", " --name-contains <text>", " --timeout-ms <ms> 0 polls once", " --limit <count>", " --ack-now", " --include-held-input", " --no-held-input", " --json Alias for --format json"];
|
|
608
|
+
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 bypasses (--follow only)", " --idle-backoff Opt-in IDLE backoff (--follow only)", " --all-managed", " --include-shells", " --agents-only", " --exclude-pane <id> Repeatable", " --self-test", " --kinds <kind,...>", " --pane <id> Repeatable", " --repo <selector>", " --name-contains <text>", " --timeout-ms <ms> 0 polls once", " --limit <count>", " --ack-now", " --include-held-input", " --no-held-input", " --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.", "Expensive consumers opt in: --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --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. Judge death by a non-zero exit or a WATCH ERROR line, not by silence."];
|
|
532
609
|
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", " --base-branch <branch> Base branch for the worktree", " --agent <codex|claude|cursor> Built-in terminal template", " --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", " --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)", " --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"];
|
|
533
610
|
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 it immediately; --folder <name> groups the pane; --no-pinned opts out of pinning; --dry-run previews."];
|
|
534
611
|
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"];
|
|
@@ -546,6 +623,15 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
546
623
|
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"];
|
|
547
624
|
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> Built-in agent command template to launch.", " --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.", " --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."];
|
|
548
625
|
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 sends Ctrl+Enter and other panels send Enter.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
626
|
+
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."];
|
|
627
|
+
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."];
|
|
628
|
+
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."];
|
|
629
|
+
readonly "sessions update": readonly ["Usage:", "python -m runpane sessions update --session <id|name> --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."];
|
|
630
|
+
readonly "sessions set-agent": readonly ["Usage:", "python -m runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--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."];
|
|
631
|
+
readonly "sessions associate": readonly ["Usage:", "python -m runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
|
|
632
|
+
readonly "sessions detach": readonly ["Usage:", "python -m runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
|
|
633
|
+
readonly "sessions overview": readonly ["Usage:", "python -m runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", "", "Options:", " --session <id|name> Named Session id or exact name.", " --from-json <path|-> Read structured JSON from a file or stdin.", " --pane <pane-id> User-visible Pane to associate or detach.", " --agent <codex|claude|cursor> Agent terminal to use.", " --json Print JSON output."];
|
|
634
|
+
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."];
|
|
549
635
|
};
|
|
550
636
|
};
|
|
551
637
|
readonly docs: {
|
|
@@ -554,8 +640,8 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
554
640
|
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\""];
|
|
555
641
|
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\""];
|
|
556
642
|
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."];
|
|
557
|
-
readonly commandUsages: readonly ["runpane", "runpane setup", "runpane install", "runpane install client", "runpane install daemon", "runpane update", "runpane version", "runpane doctor", "runpane doctor --json", "runpane daemon repair --pane-dir ~/.pane_remote --yes --json", "runpane agent-context", "runpane agent-context --command \"panes create\" --json", "runpane repos list --json", "runpane repos add --path /path/to/repo --name Pane --yes --json", "runpane panes list --repo active --json", "runpane panes cost --pane <pane-id> --json", "runpane panes create --repo active --name issue-252 --agent <agent> --prompt \"Kick off the discussion skill for issue 252\" --source agent --no-focus --wait-ready --yes --json", "runpane panes create --from-json panes.json --yes --json", "runpane panes archive --pane <pane-id> --source agent --yes --json", "runpane panes rename --pane <pane-id> --name issue-393 --yes --json", "runpane panels list --pane <pane-id> --json", "runpane panels output --panel <panel-id> --limit 200 --json", "printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes --json", "runpane help", "runpane <command> --help"];
|
|
558
|
-
readonly commandDescriptions: readonly ["`runpane` with no arguments and `runpane setup` open an interactive wizard when stdin and stdout are TTYs. In non-interactive shells or CI, both forms must print help, common commands, and agent discovery hints, then exit successfully instead of waiting for input.", "`runpane install` is an alias for `runpane install client`.", "`runpane install client` downloads the selected Pane desktop artifact and installs, opens, or launches it for the current platform.", "`runpane install daemon` downloads or installs Pane, resolves a stable Pane executable path, and spawns `<pane executable> --remote-setup <forwarded remote setup args>`.", "The wrapper must stream Pane stdout/stderr without reformatting because `pane --remote-setup` prints the one-time `pane-remote://...` connection code.", "`runpane update` uses the same release resolution and installer path as `install client`.", "`runpane version` prints only wrapper package metadata and does not contact, launch, or focus the Pane app or daemon.", "`runpane doctor` checks platform support, release metadata reachability, download URL selection, installed Pane detection, daemon reachability, and remote-daemon hints. Add `--json` for a machine-readable report that agents should run before mutating Pane state. Installed app version detection must be best-effort and must not launch, focus, or configure Pane; macOS wrappers read app bundle metadata instead of executing `Pane --version`.", "`runpane daemon repair` rewrites and restarts only the managed remote-daemon launcher/service. It never creates pairing credentials, changes tunnels, or downloads Pane; doctor only recommends it and never runs it automatically.", "`runpane agent-context` prints a brief, token-efficient command schema for coding agents without connecting to the Pane daemon.", "`runpane agent-context --command \"panes create\"` prints the detailed definition for one command. Add `--json` for machine-readable output.", "`runpane repos list` connects to the running local Pane daemon and prints saved repository records.", "`runpane repos add` registers an existing git repository with the running local Pane daemon. It does not create directories or initialize git repositories by default.", "`runpane panes list` lists Pane sessions, optionally scoped to one saved repository.", "`runpane panes cost` reports estimated token costs per Pane for the last 30 days, including per-model breakdowns and cache efficiency; unscoped output includes an Unattributed bucket that reconciles against workspace totals.", "`runpane panes create` connects to the running local Pane daemon, resolves the requested saved base repository, creates user-visible Pane sessions backed by Pane-managed worktrees/branches, opens terminal-backed tool tabs, and optionally sends initial input to the started tool. Built-in agent panes and `--source agent` default to background/no-focus unless `--focus` is passed. New Panes are pinned into the UI's favorite/pin set by default; pass `--no-pinned` to opt out. Panes created interactively in the Pane UI are unaffected.", "For `panes create --wait-ready`, `initialInput.verifiedSubmitted: true` is reported only after argument attachment or composer-clear plus activity evidence. Routing input does not by itself verify submission.", "`runpane panes archive` refreshes the configured upstream, reports exact unpushed commit evidence, and refuses unsafe archive operations unless `--force` is used. Add `--dry-run` to inspect the same evidence without archiving. Successful archives wait for worktree removal and report `worktreeCleanup`.", "`runpane panes rename` trims and updates a Pane's display name without changing its worktree, branch, panels, or focus, and returns the updated pane summary.", "`runpane 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'`."];
|
|
643
|
+
readonly commandUsages: readonly ["runpane", "runpane setup", "runpane install", "runpane install client", "runpane install daemon", "runpane update", "runpane version", "runpane doctor", "runpane doctor --json", "runpane daemon repair --pane-dir ~/.pane_remote --yes --json", "runpane agent-context", "runpane agent-context --command \"panes create\" --json", "runpane repos list --json", "runpane repos add --path /path/to/repo --name Pane --yes --json", "runpane panes list --repo active --json", "runpane panes cost --pane <pane-id> --json", "runpane panes create --repo active --name issue-252 --agent <agent> --prompt \"Kick off the discussion skill for issue 252\" --source agent --no-focus --wait-ready --yes --json", "runpane panes create --from-json panes.json --yes --json", "runpane panes archive --pane <pane-id> --source agent --yes --json", "runpane panes rename --pane <pane-id> --name issue-393 --yes --json", "runpane panels list --pane <pane-id> --json", "runpane panels output --panel <panel-id> --limit 200 --json", "printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes --json", "runpane watch --self-test", "runpane watch --follow", "runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "runpane sessions list [--json] [--pane-dir <path>]", "runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]", "runpane sessions get --session <id|name> [--json] [--pane-dir <path>]", "runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]", "runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]", "runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", "runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", "runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", "runpane help", "runpane <command> --help"];
|
|
644
|
+
readonly commandDescriptions: readonly ["`runpane` with no arguments and `runpane setup` open an interactive wizard when stdin and stdout are TTYs. In non-interactive shells or CI, both forms must print help, common commands, and agent discovery hints, then exit successfully instead of waiting for input.", "`runpane install` is an alias for `runpane install client`.", "`runpane install client` downloads the selected Pane desktop artifact and installs, opens, or launches it for the current platform.", "`runpane install daemon` downloads or installs Pane, resolves a stable Pane executable path, and spawns `<pane executable> --remote-setup <forwarded remote setup args>`.", "The wrapper must stream Pane stdout/stderr without reformatting because `pane --remote-setup` prints the one-time `pane-remote://...` connection code.", "`runpane update` uses the same release resolution and installer path as `install client`.", "`runpane version` prints only wrapper package metadata and does not contact, launch, or focus the Pane app or daemon.", "`runpane doctor` checks platform support, release metadata reachability, download URL selection, installed Pane detection, daemon reachability, and remote-daemon hints. Add `--json` for a machine-readable report that agents should run before mutating Pane state. Installed app version detection must be best-effort and must not launch, focus, or configure Pane; macOS wrappers read app bundle metadata instead of executing `Pane --version`.", "`runpane daemon repair` rewrites and restarts only the managed remote-daemon launcher/service. It never creates pairing credentials, changes tunnels, or downloads Pane; doctor only recommends it and never runs it automatically.", "`runpane agent-context` prints a brief, token-efficient command schema for coding agents without connecting to the Pane daemon.", "`runpane agent-context --command \"panes create\"` prints the detailed definition for one command. Add `--json` for machine-readable output.", "`runpane repos list` connects to the running local Pane daemon and prints saved repository records.", "`runpane repos add` registers an existing git repository with the running local Pane daemon. It does not create directories or initialize git repositories by default.", "`runpane panes list` lists Pane sessions, optionally scoped to one saved repository.", "`runpane panes cost` reports estimated token costs per Pane for the last 30 days, including per-model breakdowns and cache efficiency; unscoped output includes an Unattributed bucket that reconciles against workspace totals.", "`runpane panes create` connects to the running local Pane daemon, resolves the requested saved base repository, creates user-visible Pane sessions backed by Pane-managed worktrees/branches, opens terminal-backed tool tabs, and optionally sends initial input to the started tool. Built-in agent panes and `--source agent` default to background/no-focus unless `--focus` is passed. New Panes are pinned into the UI's favorite/pin set by default; pass `--no-pinned` to opt out. Panes created interactively in the Pane UI are unaffected.", "For `panes create --wait-ready`, `initialInput.verifiedSubmitted: true` is reported only after argument attachment or composer-clear plus activity evidence. Routing input does not by itself verify submission.", "`runpane panes archive` refreshes the configured upstream, reports exact unpushed commit evidence, and refuses unsafe archive operations unless `--force` is used. Add `--dry-run` to inspect the same evidence without archiving. Successful archives wait for worktree removal and report `worktreeCleanup`.", "`runpane panes rename` trims and updates a Pane's display name without changing its worktree, branch, panels, or focus, and returns the updated pane summary.", "`runpane 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."];
|
|
559
645
|
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.";
|
|
560
646
|
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.";
|
|
561
647
|
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.";
|
|
@@ -563,7 +649,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
563
649
|
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."];
|
|
564
650
|
};
|
|
565
651
|
readonly testFixtures: {
|
|
566
|
-
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", "--all-managed", "--agents-only", "--exclude-pane", "pane-old", "--kinds", "agent.ready,agent.idle", "--include-held-input", "--self-test"], readonly ["daemon", "repair", "--pane-dir", "/tmp/pane-remote", "--yes", "--json"], readonly ["agent-context"], readonly ["agent-context", "--command", "panes create", "--json"], readonly ["repos", "list", "--json", "--pane-dir", "/tmp/pane"], readonly ["repos", "add", "--path", "/tmp/repo", "--name", "Repo", "--dry-run", "--yes", "--json", "--pane-dir", "/tmp/pane"], readonly ["panes", "list", "--repo", "active", "--json"], readonly ["panes", "cost", "--pane", "session-1", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "issue-252", "--agent", "codex", "--prompt", "Kick off discussion", "--source", "agent", "--pinned", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "issue-252", "--agent", "codex", "--prompt", "Kick off discussion", "--source", "agent", "--no-pinned", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--from-json", "-", "--yes", "--json"], readonly ["panes", "archive", "--pane", "session-1", "--force", "--source", "agent", "--yes", "--json"], readonly ["panes", "pin", "--pane", "session-1", "--yes", "--json"], readonly ["panes", "unpin", "--pane", "session-1", "--yes", "--json"], readonly ["panes", "rename", "--pane", "session-1", "--name", "issue-393", "--yes", "--json"], readonly ["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"]];
|
|
652
|
+
readonly parserSamples: readonly [readonly ["setup"], readonly ["install"], readonly ["install", "client", "--version", "v2.2.8", "--format", "dmg", "--download-dir", "/tmp/pane-downloads", "--dry-run", "--yes"], readonly ["install", "daemon", "--label", "VM", "--prefer-tunnel", "ssh", "--channel", "nightly", "--base-url", "https://example.test", "--pane-dir", "/tmp/pane", "--listen-port", "4555", "--auto-listen-port", "--print-only", "--repo-ref", "main", "--unknown-future-flag", "future-value", "--dry-run", "--verbose"], readonly ["update", "--version", "latest", "--format", "appimage", "--pane-path", "/usr/bin/pane", "--dry-run"], readonly ["doctor", "--pane-path", "/usr/bin/pane", "--format", "zip", "--verbose"], readonly ["doctor", "--json", "--pane-dir", "/tmp/pane"], readonly ["doctor", "--report", "--title", "watch failed", "--body-file", "/tmp/watch-evidence.txt", "--json"], readonly ["watch", "--as", "monitor", "--from", "earliest", "--follow", "--format", "lines", "--heartbeat", "60", "--idle-after", "600000", "--settle", "180000", "--blocked-settle", "30000", "--min-interval", "600000", "--idle-backoff", "--all-managed", "--agents-only", "--exclude-pane", "pane-old", "--kinds", "agent.ready,agent.idle", "--include-held-input", "--self-test"], readonly ["daemon", "repair", "--pane-dir", "/tmp/pane-remote", "--yes", "--json"], readonly ["agent-context"], readonly ["agent-context", "--command", "panes create", "--json"], readonly ["repos", "list", "--json", "--pane-dir", "/tmp/pane"], readonly ["repos", "add", "--path", "/tmp/repo", "--name", "Repo", "--dry-run", "--yes", "--json", "--pane-dir", "/tmp/pane"], readonly ["panes", "list", "--repo", "active", "--json"], readonly ["panes", "cost", "--pane", "session-1", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "issue-252", "--agent", "codex", "--prompt", "Kick off discussion", "--source", "agent", "--pinned", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--repo", "active", "--name", "issue-252", "--agent", "codex", "--prompt", "Kick off discussion", "--source", "agent", "--no-pinned", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--from-json", "-", "--yes", "--json"], readonly ["panes", "archive", "--pane", "session-1", "--force", "--source", "agent", "--yes", "--json"], readonly ["panes", "pin", "--pane", "session-1", "--yes", "--json"], readonly ["panes", "unpin", "--pane", "session-1", "--yes", "--json"], readonly ["panes", "rename", "--pane", "session-1", "--name", "issue-393", "--yes", "--json"], readonly ["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", "-"]];
|
|
567
653
|
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:"];
|
|
568
654
|
readonly npmHelpIncludes: readonly ["pnpm dlx runpane@latest", "npx --yes runpane@latest"];
|
|
569
655
|
readonly pipHelpIncludes: readonly ["pipx run runpane", "python -m pip install runpane && python -m runpane setup"];
|
|
@@ -1806,6 +1892,18 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1806
1892
|
readonly idleWindowStartMs: {
|
|
1807
1893
|
readonly type: "number";
|
|
1808
1894
|
};
|
|
1895
|
+
readonly settleMs: {
|
|
1896
|
+
readonly type: "number";
|
|
1897
|
+
};
|
|
1898
|
+
readonly blockedSettleMs: {
|
|
1899
|
+
readonly type: "number";
|
|
1900
|
+
};
|
|
1901
|
+
readonly minIntervalMs: {
|
|
1902
|
+
readonly type: "number";
|
|
1903
|
+
};
|
|
1904
|
+
readonly idleBackoff: {
|
|
1905
|
+
readonly type: "boolean";
|
|
1906
|
+
};
|
|
1809
1907
|
};
|
|
1810
1908
|
readonly additionalProperties: false;
|
|
1811
1909
|
};
|
|
@@ -2902,6 +3000,69 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2902
3000
|
};
|
|
2903
3001
|
readonly additionalProperties: false;
|
|
2904
3002
|
};
|
|
3003
|
+
readonly sessionListResult: {
|
|
3004
|
+
readonly type: "object";
|
|
3005
|
+
readonly required: readonly ["ok", "sessions"];
|
|
3006
|
+
readonly properties: {
|
|
3007
|
+
readonly ok: {
|
|
3008
|
+
readonly const: true;
|
|
3009
|
+
};
|
|
3010
|
+
readonly sessions: {
|
|
3011
|
+
readonly type: "array";
|
|
3012
|
+
readonly items: {
|
|
3013
|
+
readonly type: "object";
|
|
3014
|
+
};
|
|
3015
|
+
};
|
|
3016
|
+
readonly selectedSessionId: {
|
|
3017
|
+
readonly type: "string";
|
|
3018
|
+
};
|
|
3019
|
+
};
|
|
3020
|
+
readonly additionalProperties: false;
|
|
3021
|
+
};
|
|
3022
|
+
readonly sessionResult: {
|
|
3023
|
+
readonly type: "object";
|
|
3024
|
+
readonly required: readonly ["ok", "session"];
|
|
3025
|
+
readonly properties: {
|
|
3026
|
+
readonly ok: {
|
|
3027
|
+
readonly const: true;
|
|
3028
|
+
};
|
|
3029
|
+
readonly session: {
|
|
3030
|
+
readonly type: "object";
|
|
3031
|
+
};
|
|
3032
|
+
readonly panelId: {
|
|
3033
|
+
readonly type: "string";
|
|
3034
|
+
};
|
|
3035
|
+
readonly internalSessionId: {
|
|
3036
|
+
readonly type: "string";
|
|
3037
|
+
};
|
|
3038
|
+
};
|
|
3039
|
+
readonly additionalProperties: false;
|
|
3040
|
+
};
|
|
3041
|
+
readonly sessionOverviewResult: {
|
|
3042
|
+
readonly type: "object";
|
|
3043
|
+
readonly required: readonly ["ok", "session", "status", "panes", "activity", "refreshedAt"];
|
|
3044
|
+
readonly properties: {
|
|
3045
|
+
readonly ok: {
|
|
3046
|
+
readonly const: true;
|
|
3047
|
+
};
|
|
3048
|
+
readonly session: {
|
|
3049
|
+
readonly type: "object";
|
|
3050
|
+
};
|
|
3051
|
+
readonly status: {
|
|
3052
|
+
readonly type: "string";
|
|
3053
|
+
};
|
|
3054
|
+
readonly panes: {
|
|
3055
|
+
readonly type: "array";
|
|
3056
|
+
};
|
|
3057
|
+
readonly activity: {
|
|
3058
|
+
readonly type: "array";
|
|
3059
|
+
};
|
|
3060
|
+
readonly refreshedAt: {
|
|
3061
|
+
readonly type: "string";
|
|
3062
|
+
};
|
|
3063
|
+
};
|
|
3064
|
+
readonly additionalProperties: false;
|
|
3065
|
+
};
|
|
2905
3066
|
};
|
|
2906
3067
|
readonly agentContext: {
|
|
2907
3068
|
readonly brief: {
|
|
@@ -2989,6 +3150,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2989
3150
|
readonly name: "panels wait";
|
|
2990
3151
|
readonly summary: "Wait for terminal initialized, ready, idle, or text state with compact output.";
|
|
2991
3152
|
readonly arguments: readonly ["--panel <panel-id>", "--for <condition>", "--contains <text>", "--timeout-ms <ms>", "--interval-ms <ms>", "--json", "--pane-dir <path>"];
|
|
3153
|
+
}, {
|
|
3154
|
+
readonly name: "watch";
|
|
3155
|
+
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.";
|
|
3156
|
+
readonly arguments: readonly ["--follow", "--self-test", "--kinds <kind,...>", "--settle <ms>", "--blocked-settle <ms>", "--min-interval <ms>", "--idle-backoff", "--json"];
|
|
2992
3157
|
}];
|
|
2993
3158
|
};
|
|
2994
3159
|
readonly commands: {
|
|
@@ -3939,38 +4104,91 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3939
4104
|
readonly watch: {
|
|
3940
4105
|
readonly name: "watch";
|
|
3941
4106
|
readonly summary: "Wait for workspace transitions using the daemon journal.";
|
|
3942
|
-
readonly details: "`runpane watch --follow` is the
|
|
4107
|
+
readonly details: "`runpane watch --follow` is the responsive monitor: lines, 60-second heartbeats, IDLE every 10 minutes, managed-agent scope, redacted STUCK detection, no settle, no batching, all kinds. Expensive consumers (one wake-up per line) opt into the cadence flags. Pane Chat arms them automatically through its pane-orchestrator skill; only your own scripts need to pass them. Named cursors persist in the Pane data directory.";
|
|
3943
4108
|
readonly requiresPaneDaemon: true;
|
|
3944
4109
|
readonly mutates: false;
|
|
3945
4110
|
readonly arguments: readonly [{
|
|
3946
4111
|
readonly name: "--as";
|
|
3947
4112
|
readonly value: "<consumer-name>";
|
|
3948
4113
|
readonly required: false;
|
|
3949
|
-
readonly description: "Use a persisted named cursor.";
|
|
4114
|
+
readonly description: "Use a persisted named cursor (at-least-once delivery). Default: PANE_PANEL_ID under --follow when set, otherwise anonymous.";
|
|
3950
4115
|
}, {
|
|
3951
4116
|
readonly name: "--since";
|
|
3952
4117
|
readonly value: "<generation>";
|
|
3953
4118
|
readonly required: false;
|
|
3954
|
-
readonly description: "Use an explicit generation cursor.";
|
|
4119
|
+
readonly description: "Use an explicit generation cursor instead of a name. Cannot be combined with --as, or with --settle, --blocked-settle, --min-interval.";
|
|
4120
|
+
}, {
|
|
4121
|
+
readonly name: "--from";
|
|
4122
|
+
readonly required: false;
|
|
4123
|
+
readonly value: "<now|earliest>";
|
|
4124
|
+
readonly description: "Starting point for a new named cursor. Default now (silent baseline); earliest replays the journal.";
|
|
3955
4125
|
}, {
|
|
3956
4126
|
readonly name: "--follow";
|
|
3957
4127
|
readonly required: false;
|
|
3958
|
-
readonly description: "Continue waiting until interrupted.";
|
|
4128
|
+
readonly description: "Continue waiting until interrupted. Required by every cadence flag.";
|
|
3959
4129
|
}, {
|
|
3960
4130
|
readonly name: "--format";
|
|
3961
4131
|
readonly value: "<lines|json>";
|
|
3962
4132
|
readonly required: false;
|
|
3963
|
-
readonly description: "Output format
|
|
4133
|
+
readonly description: "Output format. Default lines in every mode; --json selects json.";
|
|
3964
4134
|
}, {
|
|
3965
4135
|
readonly name: "--heartbeat";
|
|
3966
4136
|
readonly value: "<seconds>";
|
|
3967
4137
|
readonly required: false;
|
|
3968
|
-
readonly description: "Healthy-silence bound;
|
|
4138
|
+
readonly description: "Healthy-silence bound; a HEARTBEAT line proves the watcher is alive. Default 60 under --follow, 0 otherwise. Filter it out of any monitor that wakes an agent.";
|
|
3969
4139
|
}, {
|
|
3970
4140
|
readonly name: "--idle-after";
|
|
3971
4141
|
readonly value: "<milliseconds>";
|
|
3972
4142
|
readonly required: false;
|
|
3973
|
-
readonly description: "
|
|
4143
|
+
readonly description: "IDLE fires after a READY panel has stayed idle this long, then re-fires every multiple. Default 600000 under --follow, 0 otherwise.";
|
|
4144
|
+
}, {
|
|
4145
|
+
readonly name: "--settle";
|
|
4146
|
+
readonly value: "<milliseconds>";
|
|
4147
|
+
readonly required: false;
|
|
4148
|
+
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.";
|
|
4149
|
+
}, {
|
|
4150
|
+
readonly name: "--blocked-settle";
|
|
4151
|
+
readonly value: "<milliseconds>";
|
|
4152
|
+
readonly required: false;
|
|
4153
|
+
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.";
|
|
4154
|
+
}, {
|
|
4155
|
+
readonly name: "--min-interval";
|
|
4156
|
+
readonly value: "<milliseconds>";
|
|
4157
|
+
readonly required: false;
|
|
4158
|
+
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 bypasses it and carries the held lines with it. Default 0. The orchestrator value is 600000.";
|
|
4159
|
+
}, {
|
|
4160
|
+
readonly name: "--idle-backoff";
|
|
4161
|
+
readonly required: false;
|
|
4162
|
+
readonly description: "Opt-in (follow only): IDLE fires at --idle-after, then 30m, 1h, 3h, then daily per panel; any activity resets the schedule. Default off (fixed multiples of --idle-after).";
|
|
4163
|
+
}, {
|
|
4164
|
+
readonly name: "--kinds";
|
|
4165
|
+
readonly required: false;
|
|
4166
|
+
readonly value: "<kind,...>";
|
|
4167
|
+
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.";
|
|
4168
|
+
}, {
|
|
4169
|
+
readonly name: "--pane";
|
|
4170
|
+
readonly required: false;
|
|
4171
|
+
readonly value: "<pane-id>";
|
|
4172
|
+
readonly description: "Limit to a Pane; repeatable. Default all managed panes.";
|
|
4173
|
+
}, {
|
|
4174
|
+
readonly name: "--exclude-pane";
|
|
4175
|
+
readonly required: false;
|
|
4176
|
+
readonly value: "<pane-id>";
|
|
4177
|
+
readonly description: "Exclude a Pane; repeatable.";
|
|
4178
|
+
}, {
|
|
4179
|
+
readonly name: "--repo";
|
|
4180
|
+
readonly required: false;
|
|
4181
|
+
readonly value: "<selector>";
|
|
4182
|
+
readonly description: "Limit to a saved repository (active, id, path, or name). Default all repositories.";
|
|
4183
|
+
}, {
|
|
4184
|
+
readonly name: "--name-contains";
|
|
4185
|
+
readonly required: false;
|
|
4186
|
+
readonly value: "<text>";
|
|
4187
|
+
readonly description: "Limit by Pane name substring.";
|
|
4188
|
+
}, {
|
|
4189
|
+
readonly name: "--agents-only";
|
|
4190
|
+
readonly required: false;
|
|
4191
|
+
readonly description: "Limit to CLI agent panels. Default on under --follow.";
|
|
3974
4192
|
}, {
|
|
3975
4193
|
readonly name: "--all-managed";
|
|
3976
4194
|
readonly required: false;
|
|
@@ -3979,17 +4197,127 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3979
4197
|
readonly name: "--include-shells";
|
|
3980
4198
|
readonly required: false;
|
|
3981
4199
|
readonly description: "Include ordinary shell panels.";
|
|
4200
|
+
}, {
|
|
4201
|
+
readonly name: "--timeout-ms";
|
|
4202
|
+
readonly required: false;
|
|
4203
|
+
readonly value: "<milliseconds>";
|
|
4204
|
+
readonly description: "Wait timeout per request; 0 polls once. Default 60000, capped at 120000 (the follow loop re-issues requests).";
|
|
4205
|
+
}, {
|
|
4206
|
+
readonly name: "--limit";
|
|
4207
|
+
readonly required: false;
|
|
4208
|
+
readonly value: "<count>";
|
|
4209
|
+
readonly description: "Maximum entries per response. Default 256.";
|
|
4210
|
+
}, {
|
|
4211
|
+
readonly name: "--ack-now";
|
|
4212
|
+
readonly required: false;
|
|
4213
|
+
readonly description: "At-most-once named-cursor delivery (advance before you act). Default at-least-once.";
|
|
4214
|
+
}, {
|
|
4215
|
+
readonly name: "--include-held-input";
|
|
4216
|
+
readonly required: false;
|
|
4217
|
+
readonly description: "Include up to 120 characters of unsubmitted composer text in JSON entries. Default off (presence only).";
|
|
4218
|
+
}, {
|
|
4219
|
+
readonly name: "--no-held-input";
|
|
4220
|
+
readonly required: false;
|
|
4221
|
+
readonly description: "Disable redacted STUCK detection in lines follow mode.";
|
|
3982
4222
|
}, {
|
|
3983
4223
|
readonly name: "--self-test";
|
|
3984
4224
|
readonly required: false;
|
|
3985
|
-
readonly description: "Probe the watch path anonymously without advancing a named cursor.";
|
|
4225
|
+
readonly description: "Probe the watch path anonymously without advancing a named cursor; run it before arming --follow.";
|
|
3986
4226
|
}, {
|
|
3987
4227
|
readonly name: "--json";
|
|
3988
4228
|
readonly required: false;
|
|
3989
4229
|
readonly description: "Emit structured NDJSON; held-input content remains opt-in.";
|
|
3990
4230
|
}];
|
|
3991
|
-
readonly examples: readonly ["runpane watch --follow", "runpane watch --as monitor --follow --json"];
|
|
3992
|
-
readonly notes: readonly ["Journal loss is surfaced through reset and dropped metadata.", "The daemon treats omitted idleAfterMs as disabled so older clients never receive agent.idle unexpectedly."];
|
|
4231
|
+
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"];
|
|
4232
|
+
readonly notes: readonly ["Defaults stay responsive: no settle, no batching, all kinds, IDLE every --idle-after. Cadence flags are opt-in for expensive consumers and require --follow.", "Recommended orchestrator invocation (what Pane Chat arms automatically): runpane watch --self-test, then runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff. Budget: about 6 wake-ups per active pane per hour worst case, usually 1-3.", "BUSY carries no action; drop it with --kinds. HEARTBEAT is client-side proof of life, is never shaped by cadence flags, and should be filtered out of any monitor that wakes an agent.", "STUCK means real unsubmitted composer text. An agent prompt suggestion (for example a grey Try \"...\" hint) never counts.", "Dead watch: judge death by a non-zero exit or a WATCH ERROR line, not by silence. Re-arm once; if it dies again, file runpane doctor --report.", "Cadence state is held per named consumer; an anonymous --follow with a cadence flag names itself follow-<pid>. Held lines survive a reconnect of the same consumer; a changed filter re-delivers them under the new filter.", "Journal loss is surfaced through reset and dropped metadata.", "The daemon treats omitted idleAfterMs as disabled so older clients never receive agent.idle unexpectedly."];
|
|
4233
|
+
};
|
|
4234
|
+
readonly "sessions list": {
|
|
4235
|
+
readonly name: "sessions list";
|
|
4236
|
+
readonly summary: "List durable named orchestration Sessions.";
|
|
4237
|
+
readonly details: "List durable named orchestration Sessions.";
|
|
4238
|
+
readonly requiresPaneDaemon: true;
|
|
4239
|
+
readonly mutates: false;
|
|
4240
|
+
readonly arguments: readonly [];
|
|
4241
|
+
readonly examples: readonly ["runpane sessions list [--json] [--pane-dir <path>]"];
|
|
4242
|
+
readonly jsonSchemas: readonly ["sessionListResult"];
|
|
4243
|
+
readonly notes: readonly [];
|
|
4244
|
+
};
|
|
4245
|
+
readonly "sessions create": {
|
|
4246
|
+
readonly name: "sessions create";
|
|
4247
|
+
readonly summary: "Create a durable named orchestration Session and its hidden terminal owner.";
|
|
4248
|
+
readonly details: "Create a durable named orchestration Session and its hidden terminal owner.";
|
|
4249
|
+
readonly requiresPaneDaemon: true;
|
|
4250
|
+
readonly mutates: true;
|
|
4251
|
+
readonly arguments: readonly [];
|
|
4252
|
+
readonly examples: readonly ["runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]"];
|
|
4253
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
4254
|
+
readonly notes: readonly [];
|
|
4255
|
+
};
|
|
4256
|
+
readonly "sessions get": {
|
|
4257
|
+
readonly name: "sessions get";
|
|
4258
|
+
readonly summary: "Read one durable named orchestration Session.";
|
|
4259
|
+
readonly details: "Read one durable named orchestration Session.";
|
|
4260
|
+
readonly requiresPaneDaemon: true;
|
|
4261
|
+
readonly mutates: false;
|
|
4262
|
+
readonly arguments: readonly [];
|
|
4263
|
+
readonly examples: readonly ["runpane sessions get --session <id|name> [--json] [--pane-dir <path>]"];
|
|
4264
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
4265
|
+
readonly notes: readonly [];
|
|
4266
|
+
};
|
|
4267
|
+
readonly "sessions update": {
|
|
4268
|
+
readonly name: "sessions update";
|
|
4269
|
+
readonly summary: "Update a Session overview from structured JSON.";
|
|
4270
|
+
readonly details: "Update a Session overview from structured JSON.";
|
|
4271
|
+
readonly requiresPaneDaemon: true;
|
|
4272
|
+
readonly mutates: true;
|
|
4273
|
+
readonly arguments: readonly [];
|
|
4274
|
+
readonly examples: readonly ["runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]"];
|
|
4275
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
4276
|
+
readonly notes: readonly [];
|
|
4277
|
+
};
|
|
4278
|
+
readonly "sessions set-agent": {
|
|
4279
|
+
readonly name: "sessions set-agent";
|
|
4280
|
+
readonly summary: "Switch the durable terminal agent for a named Session.";
|
|
4281
|
+
readonly details: "Switch the durable terminal agent for a named Session.";
|
|
4282
|
+
readonly requiresPaneDaemon: true;
|
|
4283
|
+
readonly mutates: true;
|
|
4284
|
+
readonly arguments: readonly [];
|
|
4285
|
+
readonly examples: readonly ["runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]"];
|
|
4286
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
4287
|
+
readonly notes: readonly [];
|
|
4288
|
+
};
|
|
4289
|
+
readonly "sessions associate": {
|
|
4290
|
+
readonly name: "sessions associate";
|
|
4291
|
+
readonly summary: "Associate a user-visible Pane with a named Session.";
|
|
4292
|
+
readonly details: "Associate a user-visible Pane with a named Session.";
|
|
4293
|
+
readonly requiresPaneDaemon: true;
|
|
4294
|
+
readonly mutates: true;
|
|
4295
|
+
readonly arguments: readonly [];
|
|
4296
|
+
readonly examples: readonly ["runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]"];
|
|
4297
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
4298
|
+
readonly notes: readonly [];
|
|
4299
|
+
};
|
|
4300
|
+
readonly "sessions detach": {
|
|
4301
|
+
readonly name: "sessions detach";
|
|
4302
|
+
readonly summary: "Detach a Pane from a named Session.";
|
|
4303
|
+
readonly details: "Detach a Pane from a named Session.";
|
|
4304
|
+
readonly requiresPaneDaemon: true;
|
|
4305
|
+
readonly mutates: true;
|
|
4306
|
+
readonly arguments: readonly [];
|
|
4307
|
+
readonly examples: readonly ["runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]"];
|
|
4308
|
+
readonly jsonSchemas: readonly ["sessionResult"];
|
|
4309
|
+
readonly notes: readonly [];
|
|
4310
|
+
};
|
|
4311
|
+
readonly "sessions overview": {
|
|
4312
|
+
readonly name: "sessions overview";
|
|
4313
|
+
readonly summary: "Read a live status, activity, git, and pull request overview for a named Session.";
|
|
4314
|
+
readonly details: "Read a live status, activity, git, and pull request overview for a named Session.";
|
|
4315
|
+
readonly requiresPaneDaemon: true;
|
|
4316
|
+
readonly mutates: false;
|
|
4317
|
+
readonly arguments: readonly [];
|
|
4318
|
+
readonly examples: readonly ["runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]"];
|
|
4319
|
+
readonly jsonSchemas: readonly ["sessionOverviewResult"];
|
|
4320
|
+
readonly notes: readonly [];
|
|
3993
4321
|
};
|
|
3994
4322
|
};
|
|
3995
4323
|
readonly managedBlock: readonly ["## Pane", "", "The developer is using Pane for this repository. Pane can manage saved repositories and create user-visible Panes with terminal-backed tools for planning, discussion, implementation, and review work.", "", "This managed guidance was created by [runpane.com](https://runpane.com) for the [Pane repository](https://github.com/dcouple/Pane). Do not delete or overwrite this block; the developer uses it for their workflow and it should remain committed to the main repository unless they explicitly ask to remove it.", "", "Pane mental model: a repository is the saved base repo; a Pane is a user-visible feature/PR workspace (Pane session) that normally maps to one Pane-managed git worktree and branch; a panel/tab is a terminal inside one Pane and shares that Pane's worktree; an agent is the CLI process running in a panel.", "", "Default happy path when the user asks you to use Pane or RunPane: run `runpane doctor --json`; read `runpane agent-context --json`; resolve the saved base repository with `runpane repos list --json` or add it once with `runpane repos add --path <repo> --yes --json`; create one visible Pane (Pane session) for the requested feature/PR with a complete command such as `runpane panes create --repo <repo> --name <name> --agent <agent> --prompt \"<task>\" --source agent --no-focus --wait-ready --yes --json` or the equivalent `--tool-command <command>` form; then validate with `runpane panels wait` or `runpane panels screen` before reporting progress.", "", "Use Pane when the user wants visible Panes or co-drivable parallel feature/PR workspaces. Do not use Pane as your default private delegation mechanism; for private background decomposition, use your normal subagent/worktree workflow.", "", "Register the main/base repository once. Do not register pre-created git worktrees as separate Pane repositories unless the user explicitly asks.", "", "Use `runpane panes create` for separate visible Panes (Pane sessions) for feature/PR work. Use `runpane panels create` for reviewer/helper tabs inside an existing Pane that should share that Pane's worktree.", "", "Typical workflow: register the saved base repository once; create one Pane (Pane session) per feature/PR; use panels/tabs inside that Pane for helper or reviewer agents that should share the worktree; archive the Pane after the PR is done to remove it from active Panes and clean up its managed worktree when applicable.", "", "Skill routing reference: when the user says `discussion`, `plan`, `simple-plan`, `create-plan`, or `implement`, or asks for the behavior those words imply, treat three references as peer context: Pane's local skill cache under `<PANE_DIR>/skills/`, the Pane Chat orchestrator handoff at `<PANE_DIR>/skills/pane-chat/runpane-orchestrator.md` when present, and the [workflow map](https://github.com/dcouple/skills/raw/main/docs/readme-workflow-map.png).", "Use those peer references together to choose the phase: discuss/investigate until the work is clear enough to delegate, then ticket/plan/implement/review/PR-test/teach-back as appropriate. The orchestrator and workflow map may point to different skills; reconcile them with the user's request instead of hardcoding a skill list or treating one reference as subordinate.", "For the Pane implementation source of truth for where the skill cache, cached workflow assets, and Pane Chat bootstrap live, reference [PR #291](https://github.com/dcouple/Pane/pull/291): `main/src/services/skillCacheManager.ts` owns `<PANE_DIR>/skills/`, `.sources/dcouple-skills`, and `pane-chat/runpane-orchestrator.md`; `main/src/services/paneChatManager.ts` owns the tiny bootstrap prompt that tells the selected Pane Chat agent to read that guide.", "Use GitHub reads against the [Parsa skills folder](https://github.com/dcouple/skills/tree/main/parsa) only to inspect or refresh referenced skill files; do not clone/install the repo unless the user asks.", "Do not hardcode a specific assistant brand in workflow guidance. Use the Pane agent or custom tool command the user selected, and use `runpane agents doctor --agent <agent> --repo <selector> --json` only when checking a built-in agent template.", "", "Start with `runpane doctor --json` before taking Pane actions. Use it to understand wrapper/runtime details, daemon reachability, and the next safe commands.", "", "In a Pane repository checkout, if `runpane` is not on PATH, use the built local wrapper with Node 22: `PATH=/opt/homebrew/opt/node@22/bin:$PATH node packages/runpane/dist/cli.js doctor --json`.", "", "Use `runpane agent-context --json` for full Pane CLI context. Use `runpane agent-context --command \"panels wait\" --json` or another command name for detailed schema only when needed.", "", "Default to context-safe validation: after creating Panes or sending terminal input, run `runpane panels wait` or `runpane panels screen` before reporting success. Prefer `runpane panels submit` for normal text plus Enter; use `runpane panels input` only for exact bytes such as Ctrl-C or escape sequences.", "", "Pane terminals draw inline images: sixel, iTerm2 inline images, and the kitty graphics protocol. Tools that need kitty graphics, such as [terminal-browser](https://github.com/zenbu-labs/terminal-browser) and [terminal-doom](https://github.com/dcouple/terminal-doom), run inside a Pane panel. `runpane doctor --json` reports the protocol list under `terminal.graphicsProtocols`.", "", "Common commands:", "- `runpane doctor --json`", "- `runpane agent-context --json`", "- `runpane repos list --json`", "- `runpane repos add --path <repo> --yes --json`", "- `runpane agents doctor --agent <agent> --repo active --json`", "- `runpane panes create --repo active --name <name> --agent <agent> --prompt \"<task>\" --source agent --no-focus --wait-ready --yes --json`", "- `runpane panels create --pane <pane-id> --agent <agent> --source agent --no-focus --wait-ready --yes --json`", "- `runpane panels list --pane <pane-id> --json`", "- `runpane panels screen --panel <panel-id> --limit 80 --json`", "- `runpane panels wait --panel <panel-id> --for ready --timeout-ms 30000 --json`", "- `runpane panels submit --panel <panel-id> --text \"<answer>\" --yes --json`", "- `runpane panels input --panel <panel-id> --input-file <path|-> --yes --json`", "", "WSL note: if `runpane doctor --json` cannot find `/tmp/pane-daemon.../daemon.sock` or `runpane` resolves to a broken Windows shim, Pane may be running on Windows. Try `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane doctor --json'`, then create Panes through the same PowerShell form using the saved WSL repo name or id. Use `runpane agents doctor --agent <agent> --repo <selector> --json` to diagnose the repo environment Pane will actually use."];
|