runpane 2.4.69 → 2.4.75
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/generated/contract.d.ts +143 -22
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +185 -19
- package/dist/generated/contract.js.map +1 -1
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +66 -6
- package/dist/localControl.js.map +1 -1
- package/package.json +1 -1
|
@@ -117,7 +117,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
117
117
|
}, {
|
|
118
118
|
readonly name: "panes archive";
|
|
119
119
|
readonly summary: "Archive a Pane (session) exactly like the UI Archive action, including safe removal of its Pane-managed git worktree.";
|
|
120
|
-
readonly usage: readonly ["runpane panes archive --pane <pane-id> [--source user|agent] [--force] --yes [--json]"];
|
|
120
|
+
readonly usage: readonly ["runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--dry-run] --yes [--json]"];
|
|
121
121
|
readonly mutates: true;
|
|
122
122
|
readonly jsonSchemas: readonly ["paneArchiveRequest", "paneArchiveResult"];
|
|
123
123
|
}, {
|
|
@@ -167,7 +167,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
167
167
|
readonly jsonSchemas: readonly ["panelInputRequest", "panelInputResult"];
|
|
168
168
|
}, {
|
|
169
169
|
readonly name: "panels submit";
|
|
170
|
-
readonly summary: "Send text to a terminal panel
|
|
170
|
+
readonly summary: "Send and submit text to a terminal panel, including idle agent composers.";
|
|
171
171
|
readonly usage: readonly ["runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]"];
|
|
172
172
|
readonly mutates: true;
|
|
173
173
|
readonly jsonSchemas: readonly ["panelSubmitRequest", "panelSubmitResult"];
|
|
@@ -374,7 +374,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
374
374
|
};
|
|
375
375
|
readonly help: {
|
|
376
376
|
readonly npm: {
|
|
377
|
-
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 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] --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."];
|
|
377
|
+
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 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."];
|
|
378
378
|
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>"];
|
|
379
379
|
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"];
|
|
380
380
|
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"];
|
|
@@ -383,10 +383,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
383
383
|
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"];
|
|
384
384
|
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"];
|
|
385
385
|
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"];
|
|
386
|
-
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] --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."];
|
|
386
|
+
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."];
|
|
387
387
|
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"];
|
|
388
388
|
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"];
|
|
389
|
-
readonly "panes archive": readonly ["Usage:", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] --yes [--json]", "", "Archives a Pane (session) exactly like the UI Archive action, including removal of its Pane-managed git worktree.
|
|
389
|
+
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"];
|
|
390
390
|
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"];
|
|
391
391
|
readonly "panes unpin": readonly ["Usage:", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", "", "Declaratively unpins a Pane using the Pane UI's favorite/pin star. Repeating the command is idempotent and never changes focus. Use --dry-run to validate and preview without mutating.", "", "Options:", " --pane <pane-id> Pane/session id to unpin", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without unpinning the pane", " --yes Skip confirmation for mutating commands"];
|
|
392
392
|
readonly "panes rename": readonly ["Usage:", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Renames a Pane without changing its worktree, branch, panels, or focus. The name is trimmed like the Pane UI. Use --dry-run to validate and preview the updated pane without mutating.", "", "Options:", " --pane <pane-id> Pane/session id to rename", " --name <new-name> New non-empty Pane/session name", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without renaming the pane", " --yes Skip confirmation for mutating commands"];
|
|
@@ -403,7 +403,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
403
403
|
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."];
|
|
404
404
|
};
|
|
405
405
|
readonly pip: {
|
|
406
|
-
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 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] --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."];
|
|
406
|
+
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 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."];
|
|
407
407
|
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>"];
|
|
408
408
|
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"];
|
|
409
409
|
readonly update: readonly ["Usage:", " runpane update [--version <latest|vX.Y.Z>] [--dry-run] [--yes]"];
|
|
@@ -412,10 +412,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
412
412
|
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"];
|
|
413
413
|
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>"];
|
|
414
414
|
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"];
|
|
415
|
-
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] --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."];
|
|
415
|
+
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."];
|
|
416
416
|
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"];
|
|
417
417
|
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"];
|
|
418
|
-
readonly "panes archive": readonly ["Usage:", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] --yes [--json]", "", "Archives a Pane (session) exactly like the UI Archive action, including removal of its Pane-managed git worktree.
|
|
418
|
+
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"];
|
|
419
419
|
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"];
|
|
420
420
|
readonly "panes unpin": readonly ["Usage:", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", "", "Declaratively unpins a Pane using the Pane UI's favorite/pin star. Repeating the command is idempotent and never changes focus. Use --dry-run to validate and preview without mutating.", "", "Options:", " --pane <pane-id>", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
|
|
421
421
|
readonly "panes rename": readonly ["Usage:", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Renames a Pane without changing its worktree, branch, panels, or focus. The name is trimmed like the Pane UI. Use --dry-run to validate and preview the updated pane without mutating.", "", "Options:", " --pane <pane-id>", " --name <new-name>", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
|
|
@@ -439,7 +439,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
439
439
|
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\""];
|
|
440
440
|
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."];
|
|
441
441
|
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"];
|
|
442
|
-
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`
|
|
442
|
+
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'`."];
|
|
443
443
|
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.";
|
|
444
444
|
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.";
|
|
445
445
|
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.";
|
|
@@ -1160,6 +1160,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1160
1160
|
readonly nextCommand: {
|
|
1161
1161
|
readonly type: "string";
|
|
1162
1162
|
};
|
|
1163
|
+
readonly verification: {
|
|
1164
|
+
readonly enum: readonly ["observed", "unverifiable"];
|
|
1165
|
+
};
|
|
1163
1166
|
};
|
|
1164
1167
|
readonly additionalProperties: false;
|
|
1165
1168
|
};
|
|
@@ -1191,6 +1194,15 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1191
1194
|
};
|
|
1192
1195
|
readonly additionalProperties: false;
|
|
1193
1196
|
};
|
|
1197
|
+
readonly sessionId: {
|
|
1198
|
+
readonly type: "string";
|
|
1199
|
+
};
|
|
1200
|
+
readonly paneId: {
|
|
1201
|
+
readonly type: "string";
|
|
1202
|
+
};
|
|
1203
|
+
readonly worktreePath: {
|
|
1204
|
+
readonly type: "string";
|
|
1205
|
+
};
|
|
1194
1206
|
};
|
|
1195
1207
|
readonly additionalProperties: false;
|
|
1196
1208
|
}];
|
|
@@ -1213,7 +1225,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1213
1225
|
readonly type: "array";
|
|
1214
1226
|
readonly items: {
|
|
1215
1227
|
readonly type: "object";
|
|
1216
|
-
readonly required: readonly ["id", "paneId", "name", "status", "worktreePath", "repoId", "panelCount", "pinned"];
|
|
1228
|
+
readonly required: readonly ["id", "paneId", "name", "status", "worktreePath", "repoId", "panelCount", "pinned", "agentStatus"];
|
|
1217
1229
|
readonly properties: {
|
|
1218
1230
|
readonly id: {
|
|
1219
1231
|
readonly type: "string";
|
|
@@ -1251,6 +1263,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1251
1263
|
readonly archived: {
|
|
1252
1264
|
readonly type: "boolean";
|
|
1253
1265
|
};
|
|
1266
|
+
readonly agentStatus: {
|
|
1267
|
+
readonly enum: readonly ["active", "idle"];
|
|
1268
|
+
};
|
|
1254
1269
|
};
|
|
1255
1270
|
readonly additionalProperties: false;
|
|
1256
1271
|
};
|
|
@@ -1271,6 +1286,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1271
1286
|
readonly source: {
|
|
1272
1287
|
readonly enum: readonly ["user", "agent"];
|
|
1273
1288
|
};
|
|
1289
|
+
readonly dryRun: {
|
|
1290
|
+
readonly type: "boolean";
|
|
1291
|
+
};
|
|
1274
1292
|
};
|
|
1275
1293
|
readonly additionalProperties: false;
|
|
1276
1294
|
};
|
|
@@ -1384,14 +1402,63 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1384
1402
|
readonly hasUpstream: {
|
|
1385
1403
|
readonly type: "boolean";
|
|
1386
1404
|
};
|
|
1405
|
+
readonly upstream: {
|
|
1406
|
+
readonly type: "string";
|
|
1407
|
+
};
|
|
1408
|
+
readonly upstreamRefreshed: {
|
|
1409
|
+
readonly type: "boolean";
|
|
1410
|
+
};
|
|
1387
1411
|
readonly unpushedCommits: {
|
|
1388
1412
|
readonly type: "number";
|
|
1389
1413
|
};
|
|
1414
|
+
readonly unpushedCommitDetails: {
|
|
1415
|
+
readonly type: "array";
|
|
1416
|
+
readonly items: {
|
|
1417
|
+
readonly type: "object";
|
|
1418
|
+
readonly required: readonly ["sha", "subject"];
|
|
1419
|
+
readonly properties: {
|
|
1420
|
+
readonly sha: {
|
|
1421
|
+
readonly type: "string";
|
|
1422
|
+
};
|
|
1423
|
+
readonly subject: {
|
|
1424
|
+
readonly type: "string";
|
|
1425
|
+
};
|
|
1426
|
+
};
|
|
1427
|
+
readonly additionalProperties: false;
|
|
1428
|
+
};
|
|
1429
|
+
};
|
|
1390
1430
|
};
|
|
1391
1431
|
readonly additionalProperties: false;
|
|
1392
1432
|
};
|
|
1393
1433
|
};
|
|
1394
1434
|
readonly additionalProperties: false;
|
|
1435
|
+
}, {
|
|
1436
|
+
readonly type: "object";
|
|
1437
|
+
readonly required: readonly ["ok", "paneId", "dryRun", "wouldArchive", "forced", "safetyCheck"];
|
|
1438
|
+
readonly properties: {
|
|
1439
|
+
readonly ok: {
|
|
1440
|
+
readonly const: true;
|
|
1441
|
+
};
|
|
1442
|
+
readonly paneId: {
|
|
1443
|
+
readonly type: "string";
|
|
1444
|
+
};
|
|
1445
|
+
readonly dryRun: {
|
|
1446
|
+
readonly const: true;
|
|
1447
|
+
};
|
|
1448
|
+
readonly wouldArchive: {
|
|
1449
|
+
readonly type: "boolean";
|
|
1450
|
+
};
|
|
1451
|
+
readonly forced: {
|
|
1452
|
+
readonly type: "boolean";
|
|
1453
|
+
};
|
|
1454
|
+
readonly safetyCheck: {
|
|
1455
|
+
readonly $ref: "#/jsonSchemas/paneArchiveResult/oneOf/0/properties/safetyCheck";
|
|
1456
|
+
};
|
|
1457
|
+
readonly blocked: {
|
|
1458
|
+
readonly $ref: "#/jsonSchemas/paneArchiveResult/oneOf/2/properties/blocked";
|
|
1459
|
+
};
|
|
1460
|
+
};
|
|
1461
|
+
readonly additionalProperties: false;
|
|
1395
1462
|
}, {
|
|
1396
1463
|
readonly type: "object";
|
|
1397
1464
|
readonly required: readonly ["ok", "paneId", "blocked", "nextCommand"];
|
|
@@ -1428,9 +1495,31 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1428
1495
|
readonly hasUpstream: {
|
|
1429
1496
|
readonly type: "boolean";
|
|
1430
1497
|
};
|
|
1498
|
+
readonly upstream: {
|
|
1499
|
+
readonly type: "string";
|
|
1500
|
+
};
|
|
1501
|
+
readonly upstreamRefreshed: {
|
|
1502
|
+
readonly type: "boolean";
|
|
1503
|
+
};
|
|
1431
1504
|
readonly unpushedCommits: {
|
|
1432
1505
|
readonly type: "number";
|
|
1433
1506
|
};
|
|
1507
|
+
readonly unpushedCommitDetails: {
|
|
1508
|
+
readonly type: "array";
|
|
1509
|
+
readonly items: {
|
|
1510
|
+
readonly type: "object";
|
|
1511
|
+
readonly required: readonly ["sha", "subject"];
|
|
1512
|
+
readonly properties: {
|
|
1513
|
+
readonly sha: {
|
|
1514
|
+
readonly type: "string";
|
|
1515
|
+
};
|
|
1516
|
+
readonly subject: {
|
|
1517
|
+
readonly type: "string";
|
|
1518
|
+
};
|
|
1519
|
+
};
|
|
1520
|
+
readonly additionalProperties: false;
|
|
1521
|
+
};
|
|
1522
|
+
};
|
|
1434
1523
|
};
|
|
1435
1524
|
readonly additionalProperties: false;
|
|
1436
1525
|
};
|
|
@@ -1700,7 +1789,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1700
1789
|
};
|
|
1701
1790
|
readonly panelScreenResult: {
|
|
1702
1791
|
readonly type: "object";
|
|
1703
|
-
readonly required: readonly ["ok", "panelId", "source", "limit", "returnedLineCount", "hasMore", "text", "state"];
|
|
1792
|
+
readonly required: readonly ["ok", "panelId", "source", "limit", "returnedLineCount", "hasMore", "text", "state", "composer"];
|
|
1704
1793
|
readonly properties: {
|
|
1705
1794
|
readonly ok: {
|
|
1706
1795
|
readonly const: true;
|
|
@@ -1754,6 +1843,19 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1754
1843
|
};
|
|
1755
1844
|
readonly additionalProperties: false;
|
|
1756
1845
|
};
|
|
1846
|
+
readonly composer: {
|
|
1847
|
+
readonly type: "object";
|
|
1848
|
+
readonly required: readonly ["isPresent", "hasUndeliveredText"];
|
|
1849
|
+
readonly properties: {
|
|
1850
|
+
readonly isPresent: {
|
|
1851
|
+
readonly type: "boolean";
|
|
1852
|
+
};
|
|
1853
|
+
readonly hasUndeliveredText: {
|
|
1854
|
+
readonly type: "boolean";
|
|
1855
|
+
};
|
|
1856
|
+
};
|
|
1857
|
+
readonly additionalProperties: false;
|
|
1858
|
+
};
|
|
1757
1859
|
readonly initialInput: {
|
|
1758
1860
|
readonly $ref: "#/jsonSchemas/paneCreateResult/properties/items/items/oneOf/0/properties/initialInput";
|
|
1759
1861
|
};
|
|
@@ -1778,10 +1880,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1778
1880
|
};
|
|
1779
1881
|
readonly panelSubmitResult: {
|
|
1780
1882
|
readonly type: "object";
|
|
1781
|
-
readonly required: readonly ["ok", "panelId", "inputBytes", "enter", "sentAt"];
|
|
1883
|
+
readonly required: readonly ["ok", "panelId", "inputBytes", "enter", "sequenceName", "verifiedSubmitted", "sentAt"];
|
|
1782
1884
|
readonly properties: {
|
|
1783
1885
|
readonly ok: {
|
|
1784
|
-
readonly
|
|
1886
|
+
readonly type: "boolean";
|
|
1785
1887
|
};
|
|
1786
1888
|
readonly panelId: {
|
|
1787
1889
|
readonly type: "string";
|
|
@@ -1795,12 +1897,24 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1795
1897
|
readonly enter: {
|
|
1796
1898
|
readonly const: "cr";
|
|
1797
1899
|
};
|
|
1900
|
+
readonly sequenceName: {
|
|
1901
|
+
readonly enum: readonly ["codex-ctrl-enter-cr", "enter-cr"];
|
|
1902
|
+
};
|
|
1903
|
+
readonly verifiedSubmitted: {
|
|
1904
|
+
readonly type: "boolean";
|
|
1905
|
+
};
|
|
1798
1906
|
readonly sentAt: {
|
|
1799
1907
|
readonly type: "string";
|
|
1800
1908
|
};
|
|
1909
|
+
readonly blocked: {
|
|
1910
|
+
readonly $ref: "#/jsonSchemas/panelSubmitComposerResult/properties/blocked";
|
|
1911
|
+
};
|
|
1801
1912
|
readonly nextCommand: {
|
|
1802
1913
|
readonly type: "string";
|
|
1803
1914
|
};
|
|
1915
|
+
readonly verification: {
|
|
1916
|
+
readonly enum: readonly ["observed", "unverifiable"];
|
|
1917
|
+
};
|
|
1804
1918
|
};
|
|
1805
1919
|
readonly additionalProperties: false;
|
|
1806
1920
|
};
|
|
@@ -2156,6 +2270,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2156
2270
|
readonly nextCommand: {
|
|
2157
2271
|
readonly type: "string";
|
|
2158
2272
|
};
|
|
2273
|
+
readonly verification: {
|
|
2274
|
+
readonly enum: readonly ["observed", "unverifiable"];
|
|
2275
|
+
};
|
|
2159
2276
|
};
|
|
2160
2277
|
readonly additionalProperties: false;
|
|
2161
2278
|
};
|
|
@@ -2164,7 +2281,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2164
2281
|
readonly brief: {
|
|
2165
2282
|
readonly title: "Pane agent context";
|
|
2166
2283
|
readonly summary: "Pane lets a developer manage saved base repositories, user-visible Panes (Pane sessions) for feature/PR work, and terminal-backed panel tabs. A Pane is a visible workspace that normally maps to one Pane-managed git worktree and branch; a panel is a terminal tab inside one Pane and shares that Pane's worktree; an agent is a CLI process running inside a panel.";
|
|
2167
|
-
readonly rules: readonly ["Start with `runpane doctor --json` to understand wrapper, platform, daemon reachability, and the next safe commands before mutating Pane state.", "In a Pane repository checkout, if `runpane` is not on PATH, use the built local wrapper with Node 22, for example `PATH=/opt/homebrew/opt/node@22/bin:$PATH node packages/runpane/dist/cli.js doctor --json`.", "Happy path for any user request to use Pane/RunPane: run `runpane doctor --json`, read `runpane agent-context --json`, resolve or add the saved base repo, create the requested visible Pane with a complete command such as `runpane panes create --repo <repo> --name <name> --agent <agent> --prompt \"<task>\" --source agent --no-focus --wait-ready --yes --json` (the new Pane is pinned by default; add `--no-pinned` for a throwaway Pane, or use `--tool-command <command>` instead of `--agent <agent>`), then validate with `panels wait` or `panels screen`.", "Treat Pane as the user's visible cockpit for watching/co-driving work. Do not create Panes or panels for private delegation unless the user asked for visible Pane orchestration or the result should appear in the Pane app.", "Register the saved base repository once with `repos add`; do not register a pre-created worktree as a separate repo unless the user explicitly asks.", "Use `panes create` for separate visible Panes (Pane sessions) for feature/PR work. Pane creates and owns the worktree/branch for each new Pane.", "Use `panels create` for reviewer/helper/clean-context tabs that should stay inside an existing Pane and share that Pane's worktree.", "For private background decomposition, use your normal subagent/worktree mechanism instead of Pane.", "Skill routing: when the user says `discussion`, `plan`, `simple-plan`, `create-plan`, or `implement`, or asks for those behaviors, 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 at https://github.com/dcouple/skills/raw/main/docs/readme-workflow-map.png. For where the local cache and Pane Chat bootstrap live in Pane, reference https://github.com/dcouple/Pane/pull/291. Use GitHub reads against https://github.com/dcouple/skills/tree/main/parsa only to inspect or refresh referenced skill files; do not clone or install it unless the user asks.", "When an agent creates Panes or panels, pass `--source agent --no-focus --wait-ready --yes --json` unless the user explicitly wants focus moved; `panes create` pins the new Pane into the UI's favorite/pin set by default, so no follow-up `panes pin` call is needed and `--no-pinned` is the opt-out for throwaway Panes.", "Use `runpane agent-context --json` for the full agent-facing CLI context, or `runpane agent-context --command <command> --json` for one detailed command definition.", "For `agent-context --command`, use canonical spaced names like `panes create`; copied forms like `panes.create` or `runpane panes create` are accepted too.", "Use `runpane repos list --json` to find the saved repository when unsure after doctor shows the daemon is reachable.", "If WSL cannot reach Pane or `runpane` resolves to a broken Windows shim, the user may be running Windows Pane; try `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane doctor --json'`.", "If the repository exists on disk but is not saved in Pane, use `runpane repos add --path <repo> --yes --json` before creating panes.", "Use `runpane agents doctor --agent <codex|claude|cursor> --repo <selector> --json` when agent availability differs across host, Windows, WSL, or repo environments.", "Use `runpane panes create --wait-ready` to create Panes and validate initial terminal readiness in one call.", "Use `runpane panels screen` for compact current state, `panels wait` for readiness/text checks
|
|
2284
|
+
readonly rules: readonly ["Start with `runpane doctor --json` to understand wrapper, platform, daemon reachability, and the next safe commands before mutating Pane state.", "In a Pane repository checkout, if `runpane` is not on PATH, use the built local wrapper with Node 22, for example `PATH=/opt/homebrew/opt/node@22/bin:$PATH node packages/runpane/dist/cli.js doctor --json`.", "Happy path for any user request to use Pane/RunPane: run `runpane doctor --json`, read `runpane agent-context --json`, resolve or add the saved base repo, create the requested visible Pane with a complete command such as `runpane panes create --repo <repo> --name <name> --agent <agent> --prompt \"<task>\" --source agent --no-focus --wait-ready --yes --json` (the new Pane is pinned by default; add `--no-pinned` for a throwaway Pane, or use `--tool-command <command>` instead of `--agent <agent>`), then validate with `panels wait` or `panels screen`.", "Treat Pane as the user's visible cockpit for watching/co-driving work. Do not create Panes or panels for private delegation unless the user asked for visible Pane orchestration or the result should appear in the Pane app.", "Register the saved base repository once with `repos add`; do not register a pre-created worktree as a separate repo unless the user explicitly asks.", "Use `panes create` for separate visible Panes (Pane sessions) for feature/PR work. Pane creates and owns the worktree/branch for each new Pane.", "Use `panels create` for reviewer/helper/clean-context tabs that should stay inside an existing Pane and share that Pane's worktree.", "For private background decomposition, use your normal subagent/worktree mechanism instead of Pane.", "Skill routing: when the user says `discussion`, `plan`, `simple-plan`, `create-plan`, or `implement`, or asks for those behaviors, 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 at https://github.com/dcouple/skills/raw/main/docs/readme-workflow-map.png. For where the local cache and Pane Chat bootstrap live in Pane, reference https://github.com/dcouple/Pane/pull/291. Use GitHub reads against https://github.com/dcouple/skills/tree/main/parsa only to inspect or refresh referenced skill files; do not clone or install it unless the user asks.", "When an agent creates Panes or panels, pass `--source agent --no-focus --wait-ready --yes --json` unless the user explicitly wants focus moved; `panes create` pins the new Pane into the UI's favorite/pin set by default, so no follow-up `panes pin` call is needed and `--no-pinned` is the opt-out for throwaway Panes.", "Use `runpane agent-context --json` for the full agent-facing CLI context, or `runpane agent-context --command <command> --json` for one detailed command definition.", "For `agent-context --command`, use canonical spaced names like `panes create`; copied forms like `panes.create` or `runpane panes create` are accepted too.", "Use `runpane repos list --json` to find the saved repository when unsure after doctor shows the daemon is reachable.", "If WSL cannot reach Pane or `runpane` resolves to a broken Windows shim, the user may be running Windows Pane; try `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane doctor --json'`.", "If the repository exists on disk but is not saved in Pane, use `runpane repos add --path <repo> --yes --json` before creating panes.", "Use `runpane agents doctor --agent <codex|claude|cursor> --repo <selector> --json` when agent availability differs across host, Windows, WSL, or repo environments.", "Use `runpane panes create --wait-ready` to create Panes and validate initial terminal readiness in one call.", "Use `runpane panels screen` for compact current state, including Codex composer state. Use `panels wait` for readiness/text checks and `panels submit` to send and submit a new turn. Use `panels submit-composer --strategy auto` only for a composer that was filled separately.", "Use `runpane panels input` only when exact bytes are required, such as Ctrl-C or handcrafted terminal input.", "Pane terminals draw inline images: sixel, iTerm2 inline images, and the kitty graphics protocol. Tools that need kitty graphics, such as terminal-browser and terminal-doom, run inside a Pane panel; `runpane doctor --json` reports the exact list under `terminal.graphicsProtocols`.", "After creating Panes or sending terminal input, validate with `panels wait` or bounded `panels screen` before reporting success."];
|
|
2168
2285
|
readonly detailCommand: "runpane agent-context --command <command> [--json]";
|
|
2169
2286
|
readonly tools: readonly [{
|
|
2170
2287
|
readonly name: "doctor";
|
|
@@ -2197,7 +2314,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2197
2314
|
}, {
|
|
2198
2315
|
readonly name: "panes archive";
|
|
2199
2316
|
readonly summary: "Archive a Pane exactly like the UI Archive action, including safe removal of its Pane-managed git worktree.";
|
|
2200
|
-
readonly arguments: readonly ["--pane <pane-id>", "--source <user|agent>", "--force", "--yes", "--json"];
|
|
2317
|
+
readonly arguments: readonly ["--pane <pane-id>", "--source <user|agent>", "--force", "--dry-run", "--yes", "--json"];
|
|
2201
2318
|
}, {
|
|
2202
2319
|
readonly name: "panes pin";
|
|
2203
2320
|
readonly summary: "Declaratively pin a Pane (the Pane UI's favorite/pin star) without changing focus.";
|
|
@@ -2600,7 +2717,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2600
2717
|
readonly "panes archive": {
|
|
2601
2718
|
readonly name: "panes archive";
|
|
2602
2719
|
readonly summary: "Archive a Pane (session) exactly like the UI Archive action, including safe removal of its Pane-managed git worktree.";
|
|
2603
|
-
readonly details: "Use this to close out a Pane once its PR has merged.
|
|
2720
|
+
readonly details: "Use this to close out a Pane once its PR has merged. The safety check refreshes the configured upstream before comparing it to HEAD and includes exact unpushed commit IDs and subjects. Refuses unsafe archive operations unless --force is used. Use --dry-run to inspect the same evidence without mutating Pane state.";
|
|
2604
2721
|
readonly requiresPaneDaemon: true;
|
|
2605
2722
|
readonly mutates: true;
|
|
2606
2723
|
readonly arguments: readonly [{
|
|
@@ -2621,14 +2738,18 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2621
2738
|
readonly name: "--yes";
|
|
2622
2739
|
readonly required: false;
|
|
2623
2740
|
readonly description: "Skip confirmation for mutating commands.";
|
|
2741
|
+
}, {
|
|
2742
|
+
readonly name: "--dry-run";
|
|
2743
|
+
readonly required: false;
|
|
2744
|
+
readonly description: "Refresh and print archive safety evidence without archiving.";
|
|
2624
2745
|
}, {
|
|
2625
2746
|
readonly name: "--json";
|
|
2626
2747
|
readonly required: false;
|
|
2627
2748
|
readonly description: "Print machine-readable output.";
|
|
2628
2749
|
}];
|
|
2629
|
-
readonly examples: readonly ["runpane panes archive --pane <pane-id> --source agent --yes --json", "runpane panes archive --pane <pane-id> --force --yes --json"];
|
|
2750
|
+
readonly examples: readonly ["runpane panes archive --pane <pane-id> --source agent --yes --json", "runpane panes archive --pane <pane-id> --dry-run --json", "runpane panes archive --pane <pane-id> --force --yes --json"];
|
|
2630
2751
|
readonly jsonSchemas: readonly ["paneArchiveRequest", "paneArchiveResult"];
|
|
2631
|
-
readonly notes: readonly ["If the result has ok:false with a blocked field, the pane was NOT archived; inspect blocked.code and rerun with --force if discarding the flagged work is intentional.", "A successful archive waits for the Pane-managed worktree to be removed before returning; check worktreeCleanup in the result for the final outcome.", "Archiving a main-repo Pane (no Pane-managed worktree) always succeeds immediately since nothing is deleted from disk."];
|
|
2752
|
+
readonly notes: readonly ["If the result has ok:false with a blocked field, the pane was NOT archived; inspect blocked.code and rerun with --force if discarding the flagged work is intentional.", "Inspect safetyCheck.unpushedCommitDetails for exact commit IDs and subjects; upstreamRefreshed confirms the tracking ref was refreshed first.", "A --dry-run result sets dryRun:true and wouldArchive without deleting the Pane or its worktree.", "A successful archive waits for the Pane-managed worktree to be removed before returning; check worktreeCleanup in the result for the final outcome.", "Archiving a main-repo Pane (no Pane-managed worktree) always succeeds immediately since nothing is deleted from disk."];
|
|
2632
2753
|
};
|
|
2633
2754
|
readonly "panes pin": {
|
|
2634
2755
|
readonly name: "panes pin";
|
|
@@ -2871,12 +2992,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2871
2992
|
}];
|
|
2872
2993
|
readonly examples: readonly ["runpane panels screen --panel <panel-id> --limit 80 --json"];
|
|
2873
2994
|
readonly jsonSchemas: readonly ["panelScreenResult"];
|
|
2874
|
-
readonly notes: readonly ["Use this before `panels output` when an agent only needs the latest visible/current state.", "If hasMore is true and context is missing, rerun with a larger --limit or use `panels output`."];
|
|
2995
|
+
readonly notes: readonly ["Use this before `panels output` when an agent only needs the latest visible/current state.", "The composer object reports whether a Codex composer is present and whether it holds undelivered text.", "If hasMore is true and context is missing, rerun with a larger --limit or use `panels output`."];
|
|
2875
2996
|
};
|
|
2876
2997
|
readonly "panels submit": {
|
|
2877
2998
|
readonly name: "panels submit";
|
|
2878
|
-
readonly summary: "Send text to a terminal panel
|
|
2879
|
-
readonly details: "Use this for ordinary interactive submissions.
|
|
2999
|
+
readonly summary: "Send and submit text to a terminal panel, including idle agent composers.";
|
|
3000
|
+
readonly details: "Use this for ordinary interactive submissions. For an idle Codex composer, Pane stages the text, waits for Codex paste handling, sends the Codex submit sequence, and verifies that the turn started when visible evidence is available. Other terminals receive a normalized CR Enter. Exact byte workflows remain on `panels input`.";
|
|
2880
3001
|
readonly requiresPaneDaemon: true;
|
|
2881
3002
|
readonly mutates: true;
|
|
2882
3003
|
readonly arguments: readonly [{
|
|
@@ -2910,7 +3031,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2910
3031
|
}];
|
|
2911
3032
|
readonly examples: readonly ["runpane panels submit --panel <panel-id> --text \"2\" --yes --json", "printf \"echo hello\" | runpane panels submit --panel <panel-id> --input-file - --yes --json"];
|
|
2912
3033
|
readonly jsonSchemas: readonly ["panelSubmitRequest", "panelSubmitResult"];
|
|
2913
|
-
readonly notes: readonly ["The response includes
|
|
3034
|
+
readonly notes: readonly ["The response includes sequenceName, verifiedSubmitted, and nextCommand. If ok is false, inspect blocked and do not assume the turn started.", "Do not follow `panels submit` with `panels submit-composer`; idle Codex composer submission is handled atomically.", "Use `panels input` for Ctrl-C, escape sequences, or any workflow requiring exact bytes."];
|
|
2914
3035
|
};
|
|
2915
3036
|
readonly "panels wait": {
|
|
2916
3037
|
readonly name: "panels wait";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/generated/contract.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/generated/contract.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiqLnB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9E,MAAM,MAAM,aAAa,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACnF,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC"}
|