runpane 2.4.81 → 2.4.83
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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +9 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +61 -0
- package/dist/commands.js.map +1 -1
- package/dist/doctor.d.ts +93 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +180 -0
- package/dist/doctor.js.map +1 -1
- package/dist/generated/contract.d.ts +434 -21
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +646 -14
- package/dist/generated/contract.js.map +1 -1
- package/dist/localControl.d.ts +1 -0
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +186 -28
- package/dist/localControl.js.map +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +5 -1
- package/dist/telemetry.js.map +1 -1
- package/dist/watchLines.d.ts +30 -0
- package/dist/watchLines.d.ts.map +1 -0
- package/dist/watchLines.js +79 -0
- package/dist/watchLines.js.map +1 -0
- package/package.json +1 -1
|
@@ -22,6 +22,13 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
22
22
|
readonly dryRun: false;
|
|
23
23
|
readonly yes: false;
|
|
24
24
|
readonly verbose: false;
|
|
25
|
+
readonly watch: {
|
|
26
|
+
readonly format: "lines";
|
|
27
|
+
readonly heartbeatSeconds: 60;
|
|
28
|
+
readonly idleAfterMs: 600000;
|
|
29
|
+
readonly agentsOnly: true;
|
|
30
|
+
readonly includeHeldInputPresence: true;
|
|
31
|
+
};
|
|
25
32
|
};
|
|
26
33
|
readonly enums: {
|
|
27
34
|
readonly installTargets: readonly ["client", "daemon"];
|
|
@@ -74,7 +81,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
74
81
|
}, {
|
|
75
82
|
readonly name: "doctor";
|
|
76
83
|
readonly summary: "Run platform, release, installed Pane, daemon reachability, and remote setup diagnostics.";
|
|
77
|
-
readonly usage: readonly ["runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]"];
|
|
84
|
+
readonly usage: readonly ["runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", "runpane doctor --report [--title <text>] --body-file <path|-> [--yes] [--json]"];
|
|
78
85
|
readonly jsonSchemas: readonly ["doctorResult"];
|
|
79
86
|
}, {
|
|
80
87
|
readonly name: "daemon repair";
|
|
@@ -108,6 +115,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
108
115
|
readonly summary: "List Pane sessions in a saved repository.";
|
|
109
116
|
readonly usage: readonly ["runpane panes list [--repo <selector>] [--json]"];
|
|
110
117
|
readonly jsonSchemas: readonly ["paneListResult"];
|
|
118
|
+
}, {
|
|
119
|
+
readonly name: "panes cost";
|
|
120
|
+
readonly summary: "Report estimated token cost per Pane, with per-model breakdown and cache efficiency.";
|
|
121
|
+
readonly usage: readonly ["runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]"];
|
|
122
|
+
readonly jsonSchemas: readonly ["paneCostRequest", "paneCostResult"];
|
|
111
123
|
}, {
|
|
112
124
|
readonly name: "workspace state";
|
|
113
125
|
readonly summary: "Read one workspace snapshot of every Pane and CLI panel.";
|
|
@@ -116,7 +128,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
116
128
|
}, {
|
|
117
129
|
readonly name: "watch";
|
|
118
130
|
readonly summary: "Wait for workspace agent and Pane transitions using a daemon-held cursor.";
|
|
119
|
-
readonly usage: readonly ["runpane watch [--as <name>|--since <generation>] [--follow] [--
|
|
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]"];
|
|
120
132
|
readonly jsonSchemas: readonly ["workspaceWaitRequest", "workspaceWaitResult"];
|
|
121
133
|
}, {
|
|
122
134
|
readonly name: "panes create";
|
|
@@ -378,6 +390,26 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
378
390
|
readonly name: "--name-contains";
|
|
379
391
|
readonly value: "<text>";
|
|
380
392
|
readonly description: "Limit workspace events to Pane names containing text.";
|
|
393
|
+
}, {
|
|
394
|
+
readonly name: "--exclude-pane";
|
|
395
|
+
readonly value: "<pane-id>";
|
|
396
|
+
readonly description: "Exclude a Pane from workspace watch results; repeatable.";
|
|
397
|
+
}, {
|
|
398
|
+
readonly name: "--format";
|
|
399
|
+
readonly value: "<lines|json>";
|
|
400
|
+
readonly description: "Watch output format; scoped to the watch command.";
|
|
401
|
+
}, {
|
|
402
|
+
readonly name: "--heartbeat";
|
|
403
|
+
readonly value: "<seconds>";
|
|
404
|
+
readonly description: "Maximum healthy silence in follow mode; 0 disables heartbeats.";
|
|
405
|
+
}, {
|
|
406
|
+
readonly name: "--idle-after";
|
|
407
|
+
readonly value: "<milliseconds>";
|
|
408
|
+
readonly description: "Emit agent.idle after this READY duration; 0 disables idle events.";
|
|
409
|
+
}, {
|
|
410
|
+
readonly name: "--body-file";
|
|
411
|
+
readonly value: "<path|->";
|
|
412
|
+
readonly description: "Read diagnostic report evidence from a file or stdin.";
|
|
381
413
|
}];
|
|
382
414
|
readonly localBoolean: readonly [{
|
|
383
415
|
readonly name: "--json";
|
|
@@ -409,24 +441,43 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
409
441
|
}, {
|
|
410
442
|
readonly name: "--include-held-input";
|
|
411
443
|
readonly description: "Include up to 120 characters of unsubmitted composer text in ready events.";
|
|
444
|
+
}, {
|
|
445
|
+
readonly name: "--agents-only";
|
|
446
|
+
readonly description: "Limit workspace events to CLI agent panels.";
|
|
447
|
+
}, {
|
|
448
|
+
readonly name: "--all-managed";
|
|
449
|
+
readonly description: "Watch all non-archived, non-hidden managed panes.";
|
|
450
|
+
}, {
|
|
451
|
+
readonly name: "--include-shells";
|
|
452
|
+
readonly description: "Include ordinary shell panels in follow mode.";
|
|
453
|
+
}, {
|
|
454
|
+
readonly name: "--no-held-input";
|
|
455
|
+
readonly description: "Disable redacted STUCK detection in lines follow mode.";
|
|
456
|
+
}, {
|
|
457
|
+
readonly name: "--self-test";
|
|
458
|
+
readonly description: "Probe the current daemon watch path without advancing a named cursor.";
|
|
459
|
+
}, {
|
|
460
|
+
readonly name: "--report";
|
|
461
|
+
readonly description: "Prepare a redacted doctor report; external filing still requires --yes.";
|
|
412
462
|
}];
|
|
413
463
|
};
|
|
414
464
|
readonly help: {
|
|
415
465
|
readonly npm: {
|
|
416
|
-
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " 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
|
|
466
|
+
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."];
|
|
417
467
|
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>"];
|
|
418
468
|
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"];
|
|
419
469
|
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"];
|
|
420
470
|
readonly version: readonly ["Usage:", " runpane version", " runpane --version"];
|
|
421
|
-
readonly doctor: readonly ["Usage:", " runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", "", "Checks wrapper/runtime details, release metadata, installed Pane detection, and Pane daemon reachability.", "", "Options:", " --json Print a machine-readable environment report", " --pane-dir <path> Connect to a specific Pane data directory", " --pane-path <path> Inspect a specific Pane executable", " --format <format> Release artifact format to inspect", " --verbose Print extra diagnostics", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json"];
|
|
471
|
+
readonly doctor: readonly ["Usage:", " runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", " runpane doctor --report [--title <text>] --body-file <path|-> [--yes] [--json]", "", "Checks wrapper/runtime details, release metadata, installed Pane detection, and Pane daemon reachability.", "", "Options:", " --json Print a machine-readable environment report", " --pane-dir <path> Connect to a specific Pane data directory", " --pane-path <path> Inspect a specific Pane executable", " --format <format> Release artifact format to inspect", " --verbose Print extra diagnostics", " --report Prepare a redacted, inspectable report", " --body-file <path|-> Read report evidence from a file or stdin", " --title <text> Report title", " --yes Confirm creating one dcouple/Pane issue", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json"];
|
|
422
472
|
readonly "daemon repair": readonly ["Usage:", " runpane daemon repair [--pane-dir <path>] [--pane-path <path>] [--yes] [--json]", "", "Repairs and restarts only the managed remote-daemon launcher and service definition.", "", "Options:", " --pane-dir <path> Remote daemon data directory (default: ~/.pane_remote)", " --pane-path <path> Existing Pane executable used to perform repair", " --yes Skip the restart confirmation", " --json Print one machine-readable repair result"];
|
|
423
473
|
readonly "repos list": readonly ["Usage:", " runpane repos list [--json] [--pane-dir <path>]", "", "Lists repositories saved in the running Pane app.", "", "Options:", " --json Print machine-readable output", " --pane-dir <path> Connect to a specific Pane data directory"];
|
|
424
474
|
readonly "repos add": readonly ["Usage:", " runpane repos add --path <path> [--name <name>] [--json] [--yes]", "", "Registers an existing git repository with the running Pane app.", "", "Options:", " --path <path> Existing git repository path", " --name <name> Saved repository name; defaults to the directory name", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without adding the repo", " --yes Skip confirmation for mutating commands"];
|
|
425
|
-
readonly panes: readonly ["Pane session commands.", "", "Usage:", " runpane panes <command> [options]", "", "Commands:", " runpane panes list [--repo <selector>] [--json]", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes archive --pane <pane-id> [--force] [--source user|agent] [--dry-run] --yes [--json]", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Run \"runpane help panes <command>\" for command-specific options."];
|
|
475
|
+
readonly panes: readonly ["Pane session commands.", "", "Usage:", " runpane panes <command> [options]", "", "Commands:", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes archive --pane <pane-id> [--force] [--source user|agent] [--dry-run] --yes [--json]", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Run \"runpane help panes <command>\" for command-specific options."];
|
|
426
476
|
readonly "panes list": readonly ["Usage:", " runpane panes list [--repo <selector>] [--json]", "", "Lists Pane sessions. Pass --repo to limit results to one saved repository.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
427
|
-
readonly
|
|
477
|
+
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"];
|
|
478
|
+
readonly workspace: readonly ["Workspace observation commands.", "", "Usage:", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow"];
|
|
428
479
|
readonly "workspace state": readonly ["Usage:", " runpane workspace state [--repo <selector>] [--json]", "", "Returns one workspace snapshot of every Pane and CLI panel."];
|
|
429
|
-
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", " --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", " --json
|
|
480
|
+
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"];
|
|
430
481
|
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"];
|
|
431
482
|
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"];
|
|
432
483
|
readonly "panes pin": readonly ["Usage:", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", "", "Declaratively pins a Pane using the Pane UI's favorite/pin star. Repeating the command is idempotent and never changes focus. Use --dry-run to validate and preview without mutating.", "", "Options:", " --pane <pane-id> Pane/session id to pin", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without pinning the pane", " --yes Skip confirmation for mutating commands"];
|
|
@@ -445,20 +496,21 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
445
496
|
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."];
|
|
446
497
|
};
|
|
447
498
|
readonly pip: {
|
|
448
|
-
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " 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
|
|
499
|
+
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."];
|
|
449
500
|
readonly install: readonly ["Usage:", " runpane install [client|daemon] [options]", "", "Examples:", " npx --yes runpane@latest install daemon --label \"My Server\"", " pnpm dlx runpane@latest install daemon --prefer-tunnel ssh --label \"VM\"", " pipx run runpane install daemon --label \"My Server\"", "", "Wrapper options:", " --version <latest|vX.Y.Z>", " --format <auto|appimage|deb|dmg|zip|exe>", " --download-dir <path>", " --pane-path <path>", " --dry-run", " --yes", " --verbose", "", "Daemon passthrough options:", " --label <name>", " --prefer-tunnel <tailscale|ssh|manual|auto>", " --channel <stable|nightly>", " --base-url <url>", " --pane-dir <path>", " --listen-port <port> / --port <port>", " --auto-listen-port", " --interactive-tailscale-setup", " --no-install-service", " --no-tailscale-serve", " --print-only", " --repo-ref <ref>"];
|
|
450
501
|
readonly setup: readonly ["Usage:", " runpane setup", "", "Opens the guided setup for desktop install, remote host setup, update, and diagnostics.", "", "Quick start:", " pipx run runpane", " python -m pip install runpane && python -m runpane setup"];
|
|
451
502
|
readonly update: readonly ["Usage:", " runpane update [--version <latest|vX.Y.Z>] [--dry-run] [--yes]"];
|
|
452
503
|
readonly version: readonly ["Usage:", " runpane version", " runpane --version"];
|
|
453
|
-
readonly doctor: readonly ["Usage:", " runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", "", "Checks wrapper/runtime details, release metadata, installed Pane detection, and Pane daemon reachability.", "", "Options:", " --json", " --pane-dir <path>", " --pane-path <path>", " --format <format>", " --verbose", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json"];
|
|
504
|
+
readonly doctor: readonly ["Usage:", " runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", " runpane doctor --report [--title <text>] --body-file <path|-> [--yes] [--json]", "", "Checks wrapper/runtime details, release metadata, installed Pane detection, and Pane daemon reachability.", "", "Options:", " --json", " --pane-dir <path>", " --pane-path <path>", " --format <format>", " --verbose", " --report", " --body-file <path|->", " --title <text>", " --yes", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json"];
|
|
454
505
|
readonly "daemon repair": readonly ["Usage:", " runpane daemon repair [--pane-dir <path>] [--pane-path <path>] [--yes] [--json]", "", "Repairs and restarts only the managed remote-daemon launcher and service definition.", "", "Options:", " --pane-dir <path>", " --pane-path <path>", " --yes", " --json"];
|
|
455
506
|
readonly "repos list": readonly ["Usage:", " runpane repos list [--json] [--pane-dir <path>]", "", "Lists repositories saved in the running Pane app.", "", "Options:", " --json", " --pane-dir <path>"];
|
|
456
507
|
readonly "repos add": readonly ["Usage:", " runpane repos add --path <path> [--name <name>] [--json] [--yes]", "", "Registers an existing git repository with the running Pane app.", "", "Options:", " --path <path>", " --name <name>", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
|
|
457
|
-
readonly panes: readonly ["Pane session commands.", "", "Usage:", " runpane panes <command> [options]", "", "Commands:", " runpane panes list [--repo <selector>] [--json]", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes archive --pane <pane-id> [--force] [--source user|agent] [--dry-run] --yes [--json]", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Run \"runpane help panes <command>\" for command-specific options."];
|
|
508
|
+
readonly panes: readonly ["Pane session commands.", "", "Usage:", " runpane panes <command> [options]", "", "Commands:", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes archive --pane <pane-id> [--force] [--source user|agent] [--dry-run] --yes [--json]", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Run \"runpane help panes <command>\" for command-specific options."];
|
|
458
509
|
readonly "panes list": readonly ["Usage:", " runpane panes list [--repo <selector>] [--json]", "", "Lists Pane sessions. Pass --repo to limit results to one saved repository.", "", "Options:", " --repo <selector>", " --pane-dir <path>", " --json"];
|
|
459
|
-
readonly
|
|
510
|
+
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"];
|
|
511
|
+
readonly workspace: readonly ["Workspace observation commands.", "", "Usage:", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow"];
|
|
460
512
|
readonly "workspace state": readonly ["Usage:", " runpane workspace state [--repo <selector>] [--json]", "", "Returns one workspace snapshot of every Pane and CLI panel."];
|
|
461
|
-
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", " --kinds <kind,...>", " --pane <id> Repeatable", " --repo <selector>", " --name-contains <text>", " --timeout-ms <ms> 0 polls once", " --limit <count>", " --ack-now", " --include-held-input", " --json"];
|
|
513
|
+
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"];
|
|
462
514
|
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"];
|
|
463
515
|
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"];
|
|
464
516
|
readonly "panes pin": readonly ["Usage:", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", "", "Declaratively pins a Pane using the Pane UI's favorite/pin star. Repeating the command is idempotent and never changes focus. Use --dry-run to validate and preview without mutating.", "", "Options:", " --pane <pane-id>", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
|
|
@@ -483,8 +535,8 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
483
535
|
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\""];
|
|
484
536
|
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\""];
|
|
485
537
|
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."];
|
|
486
|
-
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 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"];
|
|
487
|
-
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 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'`."];
|
|
538
|
+
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"];
|
|
539
|
+
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'`."];
|
|
488
540
|
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.";
|
|
489
541
|
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.";
|
|
490
542
|
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.";
|
|
@@ -492,7 +544,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
492
544
|
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."];
|
|
493
545
|
};
|
|
494
546
|
readonly testFixtures: {
|
|
495
|
-
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 ["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", "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"]];
|
|
547
|
+
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"]];
|
|
496
548
|
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:"];
|
|
497
549
|
readonly npmHelpIncludes: readonly ["pnpm dlx runpane@latest", "npx --yes runpane@latest"];
|
|
498
550
|
readonly pipHelpIncludes: readonly ["pipx run runpane", "python -m pip install runpane && python -m runpane setup"];
|
|
@@ -1321,6 +1373,261 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1321
1373
|
};
|
|
1322
1374
|
readonly additionalProperties: false;
|
|
1323
1375
|
};
|
|
1376
|
+
readonly paneCostRequest: {
|
|
1377
|
+
readonly type: "object";
|
|
1378
|
+
readonly properties: {
|
|
1379
|
+
readonly repo: {
|
|
1380
|
+
readonly oneOf: readonly [{
|
|
1381
|
+
readonly type: "string";
|
|
1382
|
+
}, {
|
|
1383
|
+
readonly type: "object";
|
|
1384
|
+
readonly properties: {
|
|
1385
|
+
readonly id: {
|
|
1386
|
+
readonly type: "number";
|
|
1387
|
+
};
|
|
1388
|
+
readonly path: {
|
|
1389
|
+
readonly type: "string";
|
|
1390
|
+
};
|
|
1391
|
+
readonly name: {
|
|
1392
|
+
readonly type: "string";
|
|
1393
|
+
};
|
|
1394
|
+
readonly active: {
|
|
1395
|
+
readonly const: true;
|
|
1396
|
+
};
|
|
1397
|
+
};
|
|
1398
|
+
readonly additionalProperties: false;
|
|
1399
|
+
}];
|
|
1400
|
+
};
|
|
1401
|
+
readonly paneId: {
|
|
1402
|
+
readonly type: "string";
|
|
1403
|
+
readonly minLength: 1;
|
|
1404
|
+
};
|
|
1405
|
+
};
|
|
1406
|
+
readonly additionalProperties: false;
|
|
1407
|
+
};
|
|
1408
|
+
readonly paneCostResult: {
|
|
1409
|
+
readonly $defs: {
|
|
1410
|
+
readonly usageTotals: {
|
|
1411
|
+
readonly type: "object";
|
|
1412
|
+
readonly required: readonly ["inputTokens", "outputTokens", "cacheReadTokens", "cacheCreationTokens", "totalTokens", "messageCount", "estimatedCostUsd", "costIncomplete", "cacheSavingsUsd"];
|
|
1413
|
+
readonly properties: {
|
|
1414
|
+
readonly inputTokens: {
|
|
1415
|
+
readonly type: "number";
|
|
1416
|
+
};
|
|
1417
|
+
readonly outputTokens: {
|
|
1418
|
+
readonly type: "number";
|
|
1419
|
+
};
|
|
1420
|
+
readonly cacheReadTokens: {
|
|
1421
|
+
readonly type: "number";
|
|
1422
|
+
};
|
|
1423
|
+
readonly cacheCreationTokens: {
|
|
1424
|
+
readonly type: "number";
|
|
1425
|
+
};
|
|
1426
|
+
readonly totalTokens: {
|
|
1427
|
+
readonly type: "number";
|
|
1428
|
+
};
|
|
1429
|
+
readonly messageCount: {
|
|
1430
|
+
readonly type: "number";
|
|
1431
|
+
};
|
|
1432
|
+
readonly estimatedCostUsd: {
|
|
1433
|
+
readonly type: "number";
|
|
1434
|
+
};
|
|
1435
|
+
readonly costIncomplete: {
|
|
1436
|
+
readonly type: "boolean";
|
|
1437
|
+
};
|
|
1438
|
+
readonly cacheSavingsUsd: {
|
|
1439
|
+
readonly type: "number";
|
|
1440
|
+
};
|
|
1441
|
+
};
|
|
1442
|
+
readonly additionalProperties: false;
|
|
1443
|
+
};
|
|
1444
|
+
readonly usageByModel: {
|
|
1445
|
+
readonly type: "object";
|
|
1446
|
+
readonly required: readonly ["model", "provider", "inputTokens", "outputTokens", "cacheReadTokens", "cacheCreationTokens", "totalTokens", "messageCount", "estimatedCostUsd", "costIncomplete", "cacheSavingsUsd"];
|
|
1447
|
+
readonly properties: {
|
|
1448
|
+
readonly model: {
|
|
1449
|
+
readonly type: "string";
|
|
1450
|
+
};
|
|
1451
|
+
readonly provider: {
|
|
1452
|
+
readonly enum: readonly ["claude", "codex"];
|
|
1453
|
+
};
|
|
1454
|
+
readonly inputTokens: {
|
|
1455
|
+
readonly type: "number";
|
|
1456
|
+
};
|
|
1457
|
+
readonly outputTokens: {
|
|
1458
|
+
readonly type: "number";
|
|
1459
|
+
};
|
|
1460
|
+
readonly cacheReadTokens: {
|
|
1461
|
+
readonly type: "number";
|
|
1462
|
+
};
|
|
1463
|
+
readonly cacheCreationTokens: {
|
|
1464
|
+
readonly type: "number";
|
|
1465
|
+
};
|
|
1466
|
+
readonly totalTokens: {
|
|
1467
|
+
readonly type: "number";
|
|
1468
|
+
};
|
|
1469
|
+
readonly messageCount: {
|
|
1470
|
+
readonly type: "number";
|
|
1471
|
+
};
|
|
1472
|
+
readonly estimatedCostUsd: {
|
|
1473
|
+
readonly type: "number";
|
|
1474
|
+
};
|
|
1475
|
+
readonly costIncomplete: {
|
|
1476
|
+
readonly type: "boolean";
|
|
1477
|
+
};
|
|
1478
|
+
readonly cacheSavingsUsd: {
|
|
1479
|
+
readonly type: "number";
|
|
1480
|
+
};
|
|
1481
|
+
};
|
|
1482
|
+
readonly additionalProperties: false;
|
|
1483
|
+
};
|
|
1484
|
+
readonly paneCostSlice: {
|
|
1485
|
+
readonly type: "object";
|
|
1486
|
+
readonly required: readonly ["inputTokens", "outputTokens", "cacheReadTokens", "cacheCreationTokens", "totalTokens", "messageCount", "estimatedCostUsd", "costIncomplete", "cacheSavingsUsd", "uncachedCostUsd", "uncachedInputTokens", "cacheHitRate", "byModel"];
|
|
1487
|
+
readonly properties: {
|
|
1488
|
+
readonly inputTokens: {
|
|
1489
|
+
readonly type: "number";
|
|
1490
|
+
};
|
|
1491
|
+
readonly outputTokens: {
|
|
1492
|
+
readonly type: "number";
|
|
1493
|
+
};
|
|
1494
|
+
readonly cacheReadTokens: {
|
|
1495
|
+
readonly type: "number";
|
|
1496
|
+
};
|
|
1497
|
+
readonly cacheCreationTokens: {
|
|
1498
|
+
readonly type: "number";
|
|
1499
|
+
};
|
|
1500
|
+
readonly totalTokens: {
|
|
1501
|
+
readonly type: "number";
|
|
1502
|
+
};
|
|
1503
|
+
readonly messageCount: {
|
|
1504
|
+
readonly type: "number";
|
|
1505
|
+
};
|
|
1506
|
+
readonly estimatedCostUsd: {
|
|
1507
|
+
readonly type: "number";
|
|
1508
|
+
};
|
|
1509
|
+
readonly costIncomplete: {
|
|
1510
|
+
readonly type: "boolean";
|
|
1511
|
+
};
|
|
1512
|
+
readonly cacheSavingsUsd: {
|
|
1513
|
+
readonly type: "number";
|
|
1514
|
+
};
|
|
1515
|
+
readonly uncachedCostUsd: {
|
|
1516
|
+
readonly type: "number";
|
|
1517
|
+
};
|
|
1518
|
+
readonly uncachedInputTokens: {
|
|
1519
|
+
readonly type: "number";
|
|
1520
|
+
};
|
|
1521
|
+
readonly cacheHitRate: {
|
|
1522
|
+
readonly type: "number";
|
|
1523
|
+
};
|
|
1524
|
+
readonly byModel: {
|
|
1525
|
+
readonly type: "array";
|
|
1526
|
+
readonly items: {
|
|
1527
|
+
readonly $ref: "#/$defs/usageByModel";
|
|
1528
|
+
};
|
|
1529
|
+
};
|
|
1530
|
+
};
|
|
1531
|
+
readonly additionalProperties: false;
|
|
1532
|
+
};
|
|
1533
|
+
readonly pane: {
|
|
1534
|
+
readonly type: "object";
|
|
1535
|
+
readonly required: readonly ["paneId", "paneName", "worktreePath", "repoId", "archived", "createdAtMs", "inputTokens", "outputTokens", "cacheReadTokens", "cacheCreationTokens", "totalTokens", "messageCount", "estimatedCostUsd", "costIncomplete", "cacheSavingsUsd", "uncachedCostUsd", "uncachedInputTokens", "cacheHitRate", "byModel"];
|
|
1536
|
+
readonly properties: {
|
|
1537
|
+
readonly paneId: {
|
|
1538
|
+
readonly type: "string";
|
|
1539
|
+
};
|
|
1540
|
+
readonly paneName: {
|
|
1541
|
+
readonly type: "string";
|
|
1542
|
+
};
|
|
1543
|
+
readonly worktreePath: {
|
|
1544
|
+
readonly type: "string";
|
|
1545
|
+
};
|
|
1546
|
+
readonly repoId: {
|
|
1547
|
+
readonly type: readonly ["number", "null"];
|
|
1548
|
+
};
|
|
1549
|
+
readonly archived: {
|
|
1550
|
+
readonly type: "boolean";
|
|
1551
|
+
};
|
|
1552
|
+
readonly createdAtMs: {
|
|
1553
|
+
readonly type: "number";
|
|
1554
|
+
};
|
|
1555
|
+
readonly inputTokens: {
|
|
1556
|
+
readonly type: "number";
|
|
1557
|
+
};
|
|
1558
|
+
readonly outputTokens: {
|
|
1559
|
+
readonly type: "number";
|
|
1560
|
+
};
|
|
1561
|
+
readonly cacheReadTokens: {
|
|
1562
|
+
readonly type: "number";
|
|
1563
|
+
};
|
|
1564
|
+
readonly cacheCreationTokens: {
|
|
1565
|
+
readonly type: "number";
|
|
1566
|
+
};
|
|
1567
|
+
readonly totalTokens: {
|
|
1568
|
+
readonly type: "number";
|
|
1569
|
+
};
|
|
1570
|
+
readonly messageCount: {
|
|
1571
|
+
readonly type: "number";
|
|
1572
|
+
};
|
|
1573
|
+
readonly estimatedCostUsd: {
|
|
1574
|
+
readonly type: "number";
|
|
1575
|
+
};
|
|
1576
|
+
readonly costIncomplete: {
|
|
1577
|
+
readonly type: "boolean";
|
|
1578
|
+
};
|
|
1579
|
+
readonly cacheSavingsUsd: {
|
|
1580
|
+
readonly type: "number";
|
|
1581
|
+
};
|
|
1582
|
+
readonly uncachedCostUsd: {
|
|
1583
|
+
readonly type: "number";
|
|
1584
|
+
};
|
|
1585
|
+
readonly uncachedInputTokens: {
|
|
1586
|
+
readonly type: "number";
|
|
1587
|
+
};
|
|
1588
|
+
readonly cacheHitRate: {
|
|
1589
|
+
readonly type: "number";
|
|
1590
|
+
};
|
|
1591
|
+
readonly byModel: {
|
|
1592
|
+
readonly type: "array";
|
|
1593
|
+
readonly items: {
|
|
1594
|
+
readonly $ref: "#/$defs/usageByModel";
|
|
1595
|
+
};
|
|
1596
|
+
};
|
|
1597
|
+
};
|
|
1598
|
+
readonly additionalProperties: false;
|
|
1599
|
+
};
|
|
1600
|
+
};
|
|
1601
|
+
readonly type: "object";
|
|
1602
|
+
readonly required: readonly ["ok", "fromMs", "toMs", "pricingAsOf", "panes"];
|
|
1603
|
+
readonly properties: {
|
|
1604
|
+
readonly ok: {
|
|
1605
|
+
readonly const: true;
|
|
1606
|
+
};
|
|
1607
|
+
readonly fromMs: {
|
|
1608
|
+
readonly type: "number";
|
|
1609
|
+
};
|
|
1610
|
+
readonly toMs: {
|
|
1611
|
+
readonly type: "number";
|
|
1612
|
+
};
|
|
1613
|
+
readonly pricingAsOf: {
|
|
1614
|
+
readonly type: "string";
|
|
1615
|
+
};
|
|
1616
|
+
readonly panes: {
|
|
1617
|
+
readonly type: "array";
|
|
1618
|
+
readonly items: {
|
|
1619
|
+
readonly $ref: "#/$defs/pane";
|
|
1620
|
+
};
|
|
1621
|
+
};
|
|
1622
|
+
readonly unattributed: {
|
|
1623
|
+
readonly $ref: "#/$defs/paneCostSlice";
|
|
1624
|
+
};
|
|
1625
|
+
readonly totals: {
|
|
1626
|
+
readonly $ref: "#/$defs/usageTotals";
|
|
1627
|
+
};
|
|
1628
|
+
};
|
|
1629
|
+
readonly additionalProperties: false;
|
|
1630
|
+
};
|
|
1324
1631
|
readonly workspaceEntry: {
|
|
1325
1632
|
readonly type: "object";
|
|
1326
1633
|
readonly required: readonly ["gen", "at", "kind", "paneId", "paneName", "source"];
|
|
@@ -1332,7 +1639,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1332
1639
|
readonly type: "string";
|
|
1333
1640
|
};
|
|
1334
1641
|
readonly kind: {
|
|
1335
|
-
readonly enum: readonly ["agent.ready", "agent.busy", "agent.blocked", "agent.unknown", "pane.created", "pane.gone", "panel.exited"];
|
|
1642
|
+
readonly enum: readonly ["agent.ready", "agent.busy", "agent.blocked", "agent.unknown", "agent.idle", "pane.created", "pane.gone", "panel.exited"];
|
|
1336
1643
|
};
|
|
1337
1644
|
readonly paneId: {
|
|
1338
1645
|
readonly type: "string";
|
|
@@ -1374,9 +1681,18 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1374
1681
|
readonly settledMs: {
|
|
1375
1682
|
readonly type: "number";
|
|
1376
1683
|
};
|
|
1684
|
+
readonly idleMs: {
|
|
1685
|
+
readonly type: "number";
|
|
1686
|
+
};
|
|
1687
|
+
readonly idleCount: {
|
|
1688
|
+
readonly type: "number";
|
|
1689
|
+
};
|
|
1377
1690
|
readonly heldInput: {
|
|
1378
1691
|
readonly type: "string";
|
|
1379
1692
|
};
|
|
1693
|
+
readonly heldInputPresent: {
|
|
1694
|
+
readonly type: "boolean";
|
|
1695
|
+
};
|
|
1380
1696
|
readonly exitCode: {
|
|
1381
1697
|
readonly type: "number";
|
|
1382
1698
|
};
|
|
@@ -1419,6 +1735,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1419
1735
|
readonly type: "string";
|
|
1420
1736
|
};
|
|
1421
1737
|
};
|
|
1738
|
+
readonly excludePaneIds: {
|
|
1739
|
+
readonly type: "array";
|
|
1740
|
+
readonly items: {
|
|
1741
|
+
readonly type: "string";
|
|
1742
|
+
};
|
|
1743
|
+
};
|
|
1422
1744
|
readonly repo: {
|
|
1423
1745
|
readonly oneOf: readonly [{
|
|
1424
1746
|
readonly type: "string";
|
|
@@ -1444,12 +1766,24 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1444
1766
|
readonly nameContains: {
|
|
1445
1767
|
readonly type: "string";
|
|
1446
1768
|
};
|
|
1769
|
+
readonly agentsOnly: {
|
|
1770
|
+
readonly type: "boolean";
|
|
1771
|
+
};
|
|
1447
1772
|
readonly ackNow: {
|
|
1448
1773
|
readonly type: "boolean";
|
|
1449
1774
|
};
|
|
1450
1775
|
readonly includeHeldInput: {
|
|
1451
1776
|
readonly type: "boolean";
|
|
1452
1777
|
};
|
|
1778
|
+
readonly includeHeldInputPresence: {
|
|
1779
|
+
readonly type: "boolean";
|
|
1780
|
+
};
|
|
1781
|
+
readonly idleAfterMs: {
|
|
1782
|
+
readonly type: "number";
|
|
1783
|
+
};
|
|
1784
|
+
readonly idleWindowStartMs: {
|
|
1785
|
+
readonly type: "number";
|
|
1786
|
+
};
|
|
1453
1787
|
};
|
|
1454
1788
|
readonly additionalProperties: false;
|
|
1455
1789
|
};
|
|
@@ -2577,6 +2911,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2577
2911
|
readonly name: "panes list";
|
|
2578
2912
|
readonly summary: "List Pane sessions, optionally scoped to a saved repository.";
|
|
2579
2913
|
readonly arguments: readonly ["--repo <selector>", "--json", "--pane-dir <path>"];
|
|
2914
|
+
}, {
|
|
2915
|
+
readonly name: "panes cost";
|
|
2916
|
+
readonly summary: "Report estimated token cost per Pane, with per-model breakdown and cache efficiency.";
|
|
2917
|
+
readonly arguments: readonly ["--repo <selector>", "--pane <pane-id>", "--json", "--pane-dir <path>"];
|
|
2580
2918
|
}, {
|
|
2581
2919
|
readonly name: "panes create";
|
|
2582
2920
|
readonly summary: "Create user-visible Panes (Pane sessions) backed by Pane-managed worktrees for feature/PR work and open terminal-backed tool tabs.";
|
|
@@ -2754,8 +3092,26 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2754
3092
|
readonly name: "--verbose";
|
|
2755
3093
|
readonly required: false;
|
|
2756
3094
|
readonly description: "Print extra diagnostics.";
|
|
3095
|
+
}, {
|
|
3096
|
+
readonly name: "--report";
|
|
3097
|
+
readonly required: false;
|
|
3098
|
+
readonly description: "Prepare a redacted, inspectable diagnostic report.";
|
|
3099
|
+
}, {
|
|
3100
|
+
readonly name: "--body-file";
|
|
3101
|
+
readonly value: "<path|->";
|
|
3102
|
+
readonly required: false;
|
|
3103
|
+
readonly description: "Read report evidence from a file or stdin.";
|
|
3104
|
+
}, {
|
|
3105
|
+
readonly name: "--title";
|
|
3106
|
+
readonly value: "<text>";
|
|
3107
|
+
readonly required: false;
|
|
3108
|
+
readonly description: "Report title.";
|
|
3109
|
+
}, {
|
|
3110
|
+
readonly name: "--yes";
|
|
3111
|
+
readonly required: false;
|
|
3112
|
+
readonly description: "Confirm creating exactly one dcouple/Pane issue.";
|
|
2757
3113
|
}];
|
|
2758
|
-
readonly examples: readonly ["runpane doctor --json", "runpane doctor"];
|
|
3114
|
+
readonly examples: readonly ["runpane doctor --json", "runpane doctor", "runpane doctor --report --title \"runpane watch failed\" --body-file ./watch.txt --json"];
|
|
2759
3115
|
readonly jsonSchemas: readonly ["doctorResult"];
|
|
2760
3116
|
readonly notes: readonly ["Agents should run `runpane doctor --json` before mutating Pane state.", "The JSON report includes daemon reachability as data; an unreachable daemon is not a reason to skip the rest of the report.", "Use `runpane agent-context --json` after doctor when full CLI context is needed."];
|
|
2761
3117
|
};
|
|
@@ -2891,6 +3247,36 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2891
3247
|
readonly jsonSchemas: readonly ["paneListResult"];
|
|
2892
3248
|
readonly notes: readonly ["Without --repo, this lists sessions across saved Pane repositories."];
|
|
2893
3249
|
};
|
|
3250
|
+
readonly "panes cost": {
|
|
3251
|
+
readonly name: "panes cost";
|
|
3252
|
+
readonly summary: "Report estimated token cost per Pane, with per-model breakdown and cache efficiency.";
|
|
3253
|
+
readonly details: "Use this to attribute estimated workspace token costs to Pane lifetimes and inspect the models and cache efficiency behind each Pane's spend.";
|
|
3254
|
+
readonly requiresPaneDaemon: true;
|
|
3255
|
+
readonly mutates: false;
|
|
3256
|
+
readonly arguments: readonly [{
|
|
3257
|
+
readonly name: "--repo";
|
|
3258
|
+
readonly value: "<selector>";
|
|
3259
|
+
readonly required: false;
|
|
3260
|
+
readonly description: "Optional repository selector: active, id, exact path, or saved repository name.";
|
|
3261
|
+
}, {
|
|
3262
|
+
readonly name: "--pane";
|
|
3263
|
+
readonly value: "<pane-id>";
|
|
3264
|
+
readonly required: false;
|
|
3265
|
+
readonly description: "Return only the selected Pane.";
|
|
3266
|
+
}, {
|
|
3267
|
+
readonly name: "--json";
|
|
3268
|
+
readonly required: false;
|
|
3269
|
+
readonly description: "Print machine-readable output.";
|
|
3270
|
+
}, {
|
|
3271
|
+
readonly name: "--pane-dir";
|
|
3272
|
+
readonly value: "<path>";
|
|
3273
|
+
readonly required: false;
|
|
3274
|
+
readonly description: "Connect to a specific Pane data directory.";
|
|
3275
|
+
}];
|
|
3276
|
+
readonly examples: readonly ["runpane panes cost --pane <pane-id> --json"];
|
|
3277
|
+
readonly jsonSchemas: readonly ["paneCostRequest", "paneCostResult"];
|
|
3278
|
+
readonly notes: readonly ["The report range is the last 30 days.", "Costs are estimates based on API token prices.", "The unattributed bucket reconciles the Pane rows against totals in the unscoped result."];
|
|
3279
|
+
};
|
|
2894
3280
|
readonly "panes create": {
|
|
2895
3281
|
readonly name: "panes create";
|
|
2896
3282
|
readonly summary: "Create user-visible Panes (Pane sessions) backed by Pane-managed worktrees for feature/PR work and open terminal-backed tool tabs.";
|
|
@@ -3470,7 +3856,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3470
3856
|
readonly watch: {
|
|
3471
3857
|
readonly name: "watch";
|
|
3472
3858
|
readonly summary: "Wait for workspace transitions using the daemon journal.";
|
|
3473
|
-
readonly details: "
|
|
3859
|
+
readonly details: "`runpane watch --follow` is the canonical zero-flag monitor: lines, 60-second heartbeats, 10-minute re-firing IDLE, managed-agent scope, and redacted STUCK detection are follow defaults. Named cursors persist in the Pane data directory.";
|
|
3474
3860
|
readonly requiresPaneDaemon: true;
|
|
3475
3861
|
readonly mutates: false;
|
|
3476
3862
|
readonly arguments: readonly [{
|
|
@@ -3487,13 +3873,40 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3487
3873
|
readonly name: "--follow";
|
|
3488
3874
|
readonly required: false;
|
|
3489
3875
|
readonly description: "Continue waiting until interrupted.";
|
|
3876
|
+
}, {
|
|
3877
|
+
readonly name: "--format";
|
|
3878
|
+
readonly value: "<lines|json>";
|
|
3879
|
+
readonly required: false;
|
|
3880
|
+
readonly description: "Output format; lines is the follow default.";
|
|
3881
|
+
}, {
|
|
3882
|
+
readonly name: "--heartbeat";
|
|
3883
|
+
readonly value: "<seconds>";
|
|
3884
|
+
readonly required: false;
|
|
3885
|
+
readonly description: "Healthy-silence bound; defaults to 60 under follow.";
|
|
3886
|
+
}, {
|
|
3887
|
+
readonly name: "--idle-after";
|
|
3888
|
+
readonly value: "<milliseconds>";
|
|
3889
|
+
readonly required: false;
|
|
3890
|
+
readonly description: "Re-firing READY idle interval; defaults to 600000 under follow.";
|
|
3891
|
+
}, {
|
|
3892
|
+
readonly name: "--all-managed";
|
|
3893
|
+
readonly required: false;
|
|
3894
|
+
readonly description: "Explicit spelling for the all-managed default scope.";
|
|
3895
|
+
}, {
|
|
3896
|
+
readonly name: "--include-shells";
|
|
3897
|
+
readonly required: false;
|
|
3898
|
+
readonly description: "Include ordinary shell panels.";
|
|
3899
|
+
}, {
|
|
3900
|
+
readonly name: "--self-test";
|
|
3901
|
+
readonly required: false;
|
|
3902
|
+
readonly description: "Probe the watch path anonymously without advancing a named cursor.";
|
|
3490
3903
|
}, {
|
|
3491
3904
|
readonly name: "--json";
|
|
3492
3905
|
readonly required: false;
|
|
3493
|
-
readonly description: "Emit
|
|
3906
|
+
readonly description: "Emit structured NDJSON; held-input content remains opt-in.";
|
|
3494
3907
|
}];
|
|
3495
|
-
readonly examples: readonly ["runpane watch --as monitor --follow --json"];
|
|
3496
|
-
readonly notes: readonly ["Journal loss is surfaced through reset and dropped metadata."];
|
|
3908
|
+
readonly examples: readonly ["runpane watch --follow", "runpane watch --as monitor --follow --json"];
|
|
3909
|
+
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."];
|
|
3497
3910
|
};
|
|
3498
3911
|
};
|
|
3499
3912
|
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."];
|