runpane 2.3.16 → 2.3.18
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 +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +1 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +19 -0
- package/dist/commands.js.map +1 -1
- package/dist/generated/contract.d.ts +91 -24
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +201 -24
- package/dist/generated/contract.js.map +1 -1
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +43 -3
- package/dist/localControl.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -20
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -64,7 +64,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
64
64
|
readonly target: "client";
|
|
65
65
|
}, {
|
|
66
66
|
readonly name: "version";
|
|
67
|
-
readonly summary: "Print the runpane wrapper version
|
|
67
|
+
readonly summary: "Print the runpane wrapper version without contacting, launching, or focusing Pane.";
|
|
68
68
|
readonly usage: readonly ["runpane version", "runpane --version"];
|
|
69
69
|
}, {
|
|
70
70
|
readonly name: "doctor";
|
|
@@ -100,13 +100,13 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
100
100
|
}, {
|
|
101
101
|
readonly name: "panes create";
|
|
102
102
|
readonly summary: "Create one or more Pane sessions in a saved repository and open a terminal-backed tool tab.";
|
|
103
|
-
readonly usage: readonly ["runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]", "runpane panes create --from-json <path|-> [--yes] [--json]"];
|
|
103
|
+
readonly usage: readonly ["runpane panes create --repo <selector> --name <name> --agent <codex|claude> [--source user|agent] [--focus|--no-focus] [options]", "runpane panes create --from-json <path|-> [--yes] [--json]"];
|
|
104
104
|
readonly mutates: true;
|
|
105
105
|
readonly jsonSchemas: readonly ["paneCreateRequest", "paneCreateResult"];
|
|
106
106
|
}, {
|
|
107
107
|
readonly name: "panels create";
|
|
108
108
|
readonly summary: "Create a terminal-backed tool panel inside an existing Pane session.";
|
|
109
|
-
readonly usage: readonly ["runpane panels create --pane <pane-id> --agent <codex|claude> [--no-focus] [--wait-ready] --yes [--json]", "runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--no-focus] --yes [--json]"];
|
|
109
|
+
readonly usage: readonly ["runpane panels create --pane <pane-id> --agent <codex|claude> [--source user|agent] [--focus|--no-focus] [--wait-ready] --yes [--json]", "runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--focus|--no-focus] --yes [--json]"];
|
|
110
110
|
readonly mutates: true;
|
|
111
111
|
readonly jsonSchemas: readonly ["panelCreateRequest", "panelCreateResult"];
|
|
112
112
|
}, {
|
|
@@ -322,12 +322,15 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
322
322
|
readonly description: "Wait for created terminal panels to be ready before returning.";
|
|
323
323
|
}, {
|
|
324
324
|
readonly name: "--no-focus";
|
|
325
|
-
readonly description: "Create the panel in the background without changing
|
|
325
|
+
readonly description: "Create the pane or panel in the background without changing focus.";
|
|
326
|
+
}, {
|
|
327
|
+
readonly name: "--focus";
|
|
328
|
+
readonly description: "Explicitly focus the created pane or panel.";
|
|
326
329
|
}];
|
|
327
330
|
};
|
|
328
331
|
readonly help: {
|
|
329
332
|
readonly npm: {
|
|
330
|
-
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane agent-context [--json]", " runpane agents doctor --agent <codex|claude> [--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> [--wait-ready]", " runpane panels create --pane <pane-id> --agent codex --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> --input-file <path|-> --yes", " runpane panels submit --panel <panel-id> --text <text> --yes", " runpane panels wait --panel <panel-id> [--for 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."];
|
|
333
|
+
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane agent-context [--json]", " runpane agents doctor --agent <codex|claude> [--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> [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panels create --pane <pane-id> --agent <codex|claude> [--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."];
|
|
331
334
|
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>"];
|
|
332
335
|
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"];
|
|
333
336
|
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"];
|
|
@@ -335,8 +338,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
335
338
|
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"];
|
|
336
339
|
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"];
|
|
337
340
|
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"];
|
|
341
|
+
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> [options]", "", "Run \"runpane help panes list\" or \"runpane help panes create\" for command-specific options."];
|
|
338
342
|
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"];
|
|
339
|
-
readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates Pane sessions in a saved repository and opens a terminal-backed tool tab.", "", "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> 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", " --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"];
|
|
343
|
+
readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates Pane sessions in a saved repository and opens a terminal-backed tool tab.", "", "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> 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", " --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"];
|
|
344
|
+
readonly panels: readonly ["Terminal-backed panel commands.", "", "Usage:", " runpane panels <command> [options]", "", "Commands:", " runpane panels create --pane <pane-id> --agent <codex|claude> [options]", " runpane panels list --pane <pane-id> [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", "", "Run \"runpane help panels create\" or another command-specific topic for options."];
|
|
340
345
|
readonly "panels list": readonly ["Usage:", " runpane panels list --pane <pane-id> [--json]", "", "Lists tool panels in a Pane session.", "", "Options:", " --pane <pane-id> Pane/session id", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
341
346
|
readonly "panels output": readonly ["Usage:", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", "", "Reads bounded recent terminal output from a panel.", "", "Options:", " --panel <panel-id> Tool panel id", " --limit <count> Maximum recent output lines or records to read", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
342
347
|
readonly "panels input": readonly ["Usage:", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", "", "Sends exact input bytes to a terminal panel. Include a newline in the input when you mean Enter.", "", "Options:", " --panel <panel-id> Terminal panel id", " --text <text> Text bytes to send", " --input-file <path|-> Read input from a file or stdin", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for mutating commands"];
|
|
@@ -345,11 +350,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
345
350
|
readonly "panels screen": readonly ["Usage:", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", "", "Reads a compact current-screen view from a terminal panel. Prefers alternate-screen/TUI output and falls back to recent scrollback.", "", "Options:", " --panel <panel-id> Terminal panel id", " --limit <count> Maximum lines to return; defaults to 80", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
346
351
|
readonly "panels submit": readonly ["Usage:", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", "", "Sends text to a terminal panel and normalizes the final terminal Enter to CR. Use this for ordinary prompt answers and shell commands.", "", "Options:", " --panel <panel-id> Terminal panel id", " --text <text> Text to submit before Enter", " --input-file <path|-> Read text from a file or stdin before Enter", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for this mutating command"];
|
|
347
352
|
readonly "panels wait": readonly ["Usage:", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--contains <text>] [--timeout-ms <ms>] [--interval-ms <ms>] [--json]", "", "Polls a terminal panel until it is initialized, ready, idle, or contains text. Output is intentionally small and includes next-step guidance.", "", "Options:", " --panel <panel-id> Terminal panel id", " --for <condition> initialized, ready, idle, or text; defaults to ready for CLI panels and idle otherwise", " --contains <text> Text required for --for text; implies --for text when omitted", " --timeout-ms <milliseconds> Wait timeout; defaults to 30000", " --interval-ms <milliseconds> Poll interval; defaults to 500", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
348
|
-
readonly "panels create": readonly ["Create a terminal-backed tool panel inside an existing Pane session.", "", "Usage:", " runpane panels create --pane <pane-id> --agent <codex|claude> [--title <title>] [--initial-input <text>] [--no-focus] [--wait-ready] --yes [--json]", " runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--no-focus] --yes [--json]", "", "Options:", " --pane <pane-id> Existing Pane session to add the panel to.", " --agent <codex|claude> Built-in agent command template to launch.", " --tool-command <command> Custom terminal command to launch.", " --title <title> Panel title override.", " --initial-input, --prompt Initial input to send after the tool starts.", " --initial-input-file <path|-> Read initial input from a file or stdin.", " --no-focus Create the panel in the background.", " --source <user|agent> Mark the mutation source; agent implies background creation.", " --wait-ready Wait until the terminal tool is ready.", " --ready-timeout-ms <ms> Readiness wait timeout.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
353
|
+
readonly "panels create": readonly ["Create a terminal-backed tool panel inside an existing Pane session.", "", "Usage:", " runpane panels create --pane <pane-id> --agent <codex|claude> [--title <title>] [--initial-input <text>] [--no-focus] [--wait-ready] --yes [--json]", " runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--no-focus] --yes [--json]", "", "Options:", " --pane <pane-id> Existing Pane session to add the panel to.", " --agent <codex|claude> Built-in agent command template to launch.", " --tool-command <command> Custom terminal command to launch.", " --title <title> Panel title override.", " --initial-input, --prompt Initial input to send after the tool starts.", " --initial-input-file <path|-> Read initial input from a file or stdin.", " --no-focus Create the panel in the background.", " --focus Explicitly focus the created panel.", " --source <user|agent> Mark the mutation source; agent implies background creation.", " --wait-ready Wait until the terminal tool is ready.", " --ready-timeout-ms <ms> Readiness wait timeout.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
349
354
|
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."];
|
|
350
355
|
};
|
|
351
356
|
readonly pip: {
|
|
352
|
-
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane agent-context [--json]", " runpane agents doctor --agent <codex|claude> [--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> [--wait-ready]", " python -m runpane panels create --pane <pane-id> --agent codex --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> --input-file <path|-> --yes", " runpane panels submit --panel <panel-id> --text <text> --yes", " runpane panels wait --panel <panel-id> [--for 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."];
|
|
357
|
+
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane agent-context [--json]", " runpane agents doctor --agent <codex|claude> [--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> [--source user|agent] [--focus|--no-focus] [--wait-ready]", " python -m runpane panels create --pane <pane-id> --agent <codex|claude> [--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."];
|
|
353
358
|
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>"];
|
|
354
359
|
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"];
|
|
355
360
|
readonly update: readonly ["Usage:", " runpane update [--version <latest|vX.Y.Z>] [--dry-run] [--yes]"];
|
|
@@ -357,8 +362,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
357
362
|
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"];
|
|
358
363
|
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>"];
|
|
359
364
|
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"];
|
|
365
|
+
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> [options]", "", "Run \"runpane help panes list\" or \"runpane help panes create\" for command-specific options."];
|
|
360
366
|
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"];
|
|
361
|
-
readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates Pane sessions in a saved repository and opens a terminal-backed tool tab.", "", "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> 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", " --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"];
|
|
367
|
+
readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates Pane sessions in a saved repository and opens a terminal-backed tool tab.", "", "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> 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", " --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"];
|
|
368
|
+
readonly panels: readonly ["Terminal-backed panel commands.", "", "Usage:", " runpane panels <command> [options]", "", "Commands:", " runpane panels create --pane <pane-id> --agent <codex|claude> [options]", " runpane panels list --pane <pane-id> [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", " runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", "", "Run \"runpane help panels create\" or another command-specific topic for options."];
|
|
362
369
|
readonly "panels list": readonly ["Usage:", " runpane panels list --pane <pane-id> [--json]", "", "Lists tool panels in a Pane session.", "", "Options:", " --pane <pane-id>", " --pane-dir <path>", " --json"];
|
|
363
370
|
readonly "panels output": readonly ["Usage:", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", "", "Reads recent terminal output records from a panel.", "", "Options:", " --panel <panel-id>", " --limit <count>", " --pane-dir <path>", " --json"];
|
|
364
371
|
readonly "panels input": readonly ["Usage:", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", "", "Sends exact input bytes to a terminal panel. Include a newline in the input when you mean Enter.", "", "Options:", " --panel <panel-id>", " --text <text>", " --input-file <path|->", " --pane-dir <path>", " --json", " --yes"];
|
|
@@ -367,7 +374,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
367
374
|
readonly "panels screen": readonly ["Usage:", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", "", "Reads a compact current-screen view from a terminal panel. Prefers alternate-screen/TUI output and falls back to recent scrollback.", "", "Options:", " --panel <panel-id> Terminal panel id", " --limit <count> Maximum lines to return; defaults to 80", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
368
375
|
readonly "panels submit": readonly ["Usage:", " runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", "", "Sends text to a terminal panel and normalizes the final terminal Enter to CR. Use this for ordinary prompt answers and shell commands.", "", "Options:", " --panel <panel-id> Terminal panel id", " --text <text> Text to submit before Enter", " --input-file <path|-> Read text from a file or stdin before Enter", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for this mutating command"];
|
|
369
376
|
readonly "panels wait": readonly ["Usage:", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--contains <text>] [--timeout-ms <ms>] [--interval-ms <ms>] [--json]", "", "Polls a terminal panel until it is initialized, ready, idle, or contains text. Output is intentionally small and includes next-step guidance.", "", "Options:", " --panel <panel-id> Terminal panel id", " --for <condition> initialized, ready, idle, or text; defaults to ready for CLI panels and idle otherwise", " --contains <text> Text required for --for text; implies --for text when omitted", " --timeout-ms <milliseconds> Wait timeout; defaults to 30000", " --interval-ms <milliseconds> Poll interval; defaults to 500", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
370
|
-
readonly "panels create": readonly ["Create a terminal-backed tool panel inside an existing Pane session.", "", "Usage:", " python -m runpane panels create --pane <pane-id> --agent <codex|claude> [--title <title>] [--initial-input <text>] [--no-focus] [--wait-ready] --yes [--json]", " python -m runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--no-focus] --yes [--json]", "", "Options:", " --pane <pane-id> Existing Pane session to add the panel to.", " --agent <codex|claude> Built-in agent command template to launch.", " --tool-command <command> Custom terminal command to launch.", " --title <title> Panel title override.", " --initial-input, --prompt Initial input to send after the tool starts.", " --initial-input-file <path|-> Read initial input from a file or stdin.", " --no-focus Create the panel in the background.", " --source <user|agent> Mark the mutation source; agent implies background creation.", " --wait-ready Wait until the terminal tool is ready.", " --ready-timeout-ms <ms> Readiness wait timeout.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
377
|
+
readonly "panels create": readonly ["Create a terminal-backed tool panel inside an existing Pane session.", "", "Usage:", " python -m runpane panels create --pane <pane-id> --agent <codex|claude> [--title <title>] [--initial-input <text>] [--no-focus] [--wait-ready] --yes [--json]", " python -m runpane panels create --pane <pane-id> --tool-command <command> [--title <title>] [--no-focus] --yes [--json]", "", "Options:", " --pane <pane-id> Existing Pane session to add the panel to.", " --agent <codex|claude> Built-in agent command template to launch.", " --tool-command <command> Custom terminal command to launch.", " --title <title> Panel title override.", " --initial-input, --prompt Initial input to send after the tool starts.", " --initial-input-file <path|-> Read initial input from a file or stdin.", " --no-focus Create the panel in the background.", " --focus Explicitly focus the created panel.", " --source <user|agent> Mark the mutation source; agent implies background creation.", " --wait-ready Wait until the terminal tool is ready.", " --ready-timeout-ms <ms> Readiness wait timeout.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
371
378
|
readonly "panels submit-composer": readonly ["Submit an agent composer using the panel-appropriate key sequence.", "", "Usage:", " python -m runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]", "", "Options:", " --panel <panel-id> Terminal panel id.", " --strategy <strategy> Defaults to auto; Codex sends Ctrl+Enter and other panels send Enter.", " --yes Skip confirmation prompts.", " --json Print JSON output."];
|
|
372
379
|
};
|
|
373
380
|
};
|
|
@@ -378,7 +385,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
378
385
|
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\""];
|
|
379
386
|
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."];
|
|
380
387
|
readonly commandUsages: readonly ["runpane", "runpane setup", "runpane install", "runpane install client", "runpane install daemon", "runpane update", "runpane version", "runpane doctor", "runpane doctor --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 codex --prompt \"Kick off the discussion skill for issue 252\" --yes", "runpane panes create --from-json panes.json --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"];
|
|
381
|
-
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
|
|
388
|
+
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.", "`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 repository, creates Pane sessions, 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.", "`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.", "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'`."];
|
|
382
389
|
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.";
|
|
383
390
|
readonly localControlFlagNote: "`runpane doctor --json`, `runpane repos list`, `runpane panes list`, `runpane panes create`, 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. 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.";
|
|
384
391
|
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.";
|
|
@@ -386,8 +393,8 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
386
393
|
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."];
|
|
387
394
|
};
|
|
388
395
|
readonly testFixtures: {
|
|
389
|
-
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 ["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", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--from-json", "-", "--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", "-", "--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", "submit-composer", "--panel", "panel-1", "--strategy", "auto", "--yes", "--json"]];
|
|
390
|
-
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 panels list", "runpane panels output", "runpane panels input", "runpane agents doctor", "runpane panels screen", "runpane panels submit", "runpane panels wait", "runpane doctor --json", "runpane agent-context --json", "Agent discovery:", "Common commands:"];
|
|
396
|
+
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 ["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", "--dry-run", "--yes", "--json"], readonly ["panes", "create", "--from-json", "-", "--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"]];
|
|
397
|
+
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 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:"];
|
|
391
398
|
readonly npmHelpIncludes: readonly ["pnpm dlx runpane@latest", "npx --yes runpane@latest"];
|
|
392
399
|
readonly pipHelpIncludes: readonly ["pipx run runpane", "python -m pip install runpane && python -m runpane setup"];
|
|
393
400
|
readonly installHelpIncludes: readonly ["--version <latest|vX.Y.Z>", "--format <auto|appimage|deb|dmg|zip|exe>", "--download-dir <path>", "--pane-path <path>", "--label <name>", "--prefer-tunnel <tailscale|ssh|manual|auto>", "--repo-ref <ref>"];
|
|
@@ -732,6 +739,15 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
732
739
|
readonly concurrency: {
|
|
733
740
|
readonly type: "number";
|
|
734
741
|
};
|
|
742
|
+
readonly noFocus: {
|
|
743
|
+
readonly type: "boolean";
|
|
744
|
+
};
|
|
745
|
+
readonly focus: {
|
|
746
|
+
readonly type: "boolean";
|
|
747
|
+
};
|
|
748
|
+
readonly source: {
|
|
749
|
+
readonly enum: readonly ["user", "agent"];
|
|
750
|
+
};
|
|
735
751
|
};
|
|
736
752
|
readonly additionalProperties: false;
|
|
737
753
|
};
|
|
@@ -792,6 +808,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
792
808
|
};
|
|
793
809
|
readonly additionalProperties: false;
|
|
794
810
|
};
|
|
811
|
+
readonly active: {
|
|
812
|
+
readonly type: "boolean";
|
|
813
|
+
};
|
|
814
|
+
readonly focused: {
|
|
815
|
+
readonly type: "boolean";
|
|
816
|
+
};
|
|
795
817
|
readonly readiness: {
|
|
796
818
|
readonly type: "object";
|
|
797
819
|
readonly required: readonly ["ok", "condition", "matched", "timedOut", "elapsedMs", "state"];
|
|
@@ -1474,6 +1496,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1474
1496
|
readonly noFocus: {
|
|
1475
1497
|
readonly type: "boolean";
|
|
1476
1498
|
};
|
|
1499
|
+
readonly focus: {
|
|
1500
|
+
readonly type: "boolean";
|
|
1501
|
+
};
|
|
1477
1502
|
readonly source: {
|
|
1478
1503
|
readonly enum: readonly ["user", "agent"];
|
|
1479
1504
|
};
|
|
@@ -1488,7 +1513,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1488
1513
|
};
|
|
1489
1514
|
readonly panelCreateResult: {
|
|
1490
1515
|
readonly type: "object";
|
|
1491
|
-
readonly required: readonly ["ok", "paneId", "panelId", "title", "active", "tool"];
|
|
1516
|
+
readonly required: readonly ["ok", "paneId", "panelId", "title", "active", "focused", "tool"];
|
|
1492
1517
|
readonly properties: {
|
|
1493
1518
|
readonly ok: {
|
|
1494
1519
|
readonly type: "boolean";
|
|
@@ -1505,6 +1530,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1505
1530
|
readonly active: {
|
|
1506
1531
|
readonly type: "boolean";
|
|
1507
1532
|
};
|
|
1533
|
+
readonly focused: {
|
|
1534
|
+
readonly type: "boolean";
|
|
1535
|
+
};
|
|
1508
1536
|
readonly tool: {
|
|
1509
1537
|
readonly type: "object";
|
|
1510
1538
|
readonly required: readonly ["title", "command"];
|
|
@@ -1611,10 +1639,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1611
1639
|
};
|
|
1612
1640
|
readonly panelSubmitComposerResult: {
|
|
1613
1641
|
readonly type: "object";
|
|
1614
|
-
readonly required: readonly ["ok", "panelId", "inputBytes", "strategy", "sentAt"];
|
|
1642
|
+
readonly required: readonly ["ok", "panelId", "inputBytes", "strategy", "sequenceName", "verifiedSubmitted", "sentAt"];
|
|
1615
1643
|
readonly properties: {
|
|
1616
1644
|
readonly ok: {
|
|
1617
|
-
readonly
|
|
1645
|
+
readonly type: "boolean";
|
|
1618
1646
|
};
|
|
1619
1647
|
readonly panelId: {
|
|
1620
1648
|
readonly type: "string";
|
|
@@ -1628,9 +1656,31 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1628
1656
|
readonly strategy: {
|
|
1629
1657
|
readonly enum: readonly ["codex-ctrl-enter", "enter"];
|
|
1630
1658
|
};
|
|
1659
|
+
readonly sequenceName: {
|
|
1660
|
+
readonly enum: readonly ["codex-ctrl-enter-cr", "enter-cr"];
|
|
1661
|
+
};
|
|
1662
|
+
readonly verifiedSubmitted: {
|
|
1663
|
+
readonly type: "boolean";
|
|
1664
|
+
};
|
|
1631
1665
|
readonly sentAt: {
|
|
1632
1666
|
readonly type: "string";
|
|
1633
1667
|
};
|
|
1668
|
+
readonly blocked: {
|
|
1669
|
+
readonly type: "object";
|
|
1670
|
+
readonly required: readonly ["kind", "message"];
|
|
1671
|
+
readonly properties: {
|
|
1672
|
+
readonly kind: {
|
|
1673
|
+
readonly enum: readonly ["codex-update", "agent-prompt", "unknown"];
|
|
1674
|
+
};
|
|
1675
|
+
readonly message: {
|
|
1676
|
+
readonly type: "string";
|
|
1677
|
+
};
|
|
1678
|
+
readonly suggestedCommand: {
|
|
1679
|
+
readonly type: "string";
|
|
1680
|
+
};
|
|
1681
|
+
};
|
|
1682
|
+
readonly additionalProperties: false;
|
|
1683
|
+
};
|
|
1634
1684
|
readonly nextCommand: {
|
|
1635
1685
|
readonly type: "string";
|
|
1636
1686
|
};
|
|
@@ -1642,7 +1692,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1642
1692
|
readonly brief: {
|
|
1643
1693
|
readonly title: "Pane agent context";
|
|
1644
1694
|
readonly summary: "Pane lets a developer manage repositories and user-visible terminal panes. Agents can use runpane to create panes, inspect compact terminal state, wait for readiness, and submit interactive input.";
|
|
1645
|
-
readonly rules: readonly ["Start with `runpane doctor --json` to understand wrapper, platform, daemon reachability, and the next safe commands before mutating Pane state.", "Use `runpane agent-context --json` for the full agent-facing CLI context, or `runpane agent-context --command <command> --json` for one detailed command definition.", "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> --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,
|
|
1695
|
+
readonly rules: readonly ["Start with `runpane doctor --json` to understand wrapper, platform, daemon reachability, and the next safe commands before mutating Pane state.", "Use `runpane agent-context --json` for the full agent-facing CLI context, or `runpane agent-context --command <command> --json` for one detailed command definition.", "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> --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, `panels submit` for ordinary Enter-submitted input, and `panels submit-composer --strategy auto` for agent composers.", "Use `runpane panels input` only when exact bytes are required, such as Ctrl-C or handcrafted terminal input.", "After creating panes or sending terminal input, validate with `panels wait` or bounded `panels screen` before reporting success."];
|
|
1646
1696
|
readonly detailCommand: "runpane agent-context --command <command> [--json]";
|
|
1647
1697
|
readonly tools: readonly [{
|
|
1648
1698
|
readonly name: "doctor";
|
|
@@ -1671,11 +1721,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1671
1721
|
}, {
|
|
1672
1722
|
readonly name: "panes create";
|
|
1673
1723
|
readonly summary: "Create one or more Pane sessions in a saved repository and open a terminal-backed tool tab.";
|
|
1674
|
-
readonly arguments: readonly ["--repo <selector>", "--name <name>", "--agent <codex|claude>", "--tool-command <command>", "--prompt <text>", "--initial-input-file <path|->", "--from-json <path|->", "--wait-ready", "--ready-timeout-ms <ms>", "--concurrency <count>", "--yes", "--json"];
|
|
1724
|
+
readonly arguments: readonly ["--repo <selector>", "--name <name>", "--agent <codex|claude>", "--tool-command <command>", "--prompt <text>", "--initial-input-file <path|->", "--from-json <path|->", "--source <user|agent>", "--no-focus", "--focus", "--wait-ready", "--ready-timeout-ms <ms>", "--concurrency <count>", "--yes", "--json"];
|
|
1675
1725
|
}, {
|
|
1676
1726
|
readonly name: "panels create";
|
|
1677
1727
|
readonly summary: "Create sibling reviewer or helper tabs inside an existing pane without stealing focus from the implementation tab.";
|
|
1678
|
-
readonly arguments: readonly ["--pane <pane-id>", "--agent <codex|claude>", "--tool-command <command>", "--source <user|agent>", "--no-focus", "--wait-ready", "--yes", "--json"];
|
|
1728
|
+
readonly arguments: readonly ["--pane <pane-id>", "--agent <codex|claude>", "--tool-command <command>", "--source <user|agent>", "--no-focus", "--focus", "--wait-ready", "--yes", "--json"];
|
|
1679
1729
|
}, {
|
|
1680
1730
|
readonly name: "panels list";
|
|
1681
1731
|
readonly summary: "List tool panels inside a Pane session.";
|
|
@@ -1787,15 +1837,15 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1787
1837
|
};
|
|
1788
1838
|
readonly version: {
|
|
1789
1839
|
readonly name: "version";
|
|
1790
|
-
readonly summary: "Print the runpane wrapper version
|
|
1791
|
-
readonly details: "Use this
|
|
1840
|
+
readonly summary: "Print the runpane wrapper version without contacting, launching, or focusing Pane.";
|
|
1841
|
+
readonly details: "Use this to confirm which wrapper is available. App, daemon, and release diagnostics belong in doctor.";
|
|
1792
1842
|
readonly requiresPaneDaemon: false;
|
|
1793
1843
|
readonly mutates: false;
|
|
1794
1844
|
readonly arguments: readonly [{
|
|
1795
1845
|
readonly name: "--pane-path";
|
|
1796
1846
|
readonly value: "<path>";
|
|
1797
1847
|
readonly required: false;
|
|
1798
|
-
readonly description: "
|
|
1848
|
+
readonly description: "Ignored for version; retained only for parser compatibility.";
|
|
1799
1849
|
}];
|
|
1800
1850
|
readonly examples: readonly ["runpane version", "runpane --version"];
|
|
1801
1851
|
readonly notes: readonly [];
|
|
@@ -1978,6 +2028,19 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1978
2028
|
readonly value: "<path|->";
|
|
1979
2029
|
readonly required: false;
|
|
1980
2030
|
readonly description: "Read a full panes.create request JSON payload.";
|
|
2031
|
+
}, {
|
|
2032
|
+
readonly name: "--source";
|
|
2033
|
+
readonly value: "<user|agent>";
|
|
2034
|
+
readonly required: false;
|
|
2035
|
+
readonly description: "Mutation source; agent implies background/no-focus creation.";
|
|
2036
|
+
}, {
|
|
2037
|
+
readonly name: "--no-focus";
|
|
2038
|
+
readonly required: false;
|
|
2039
|
+
readonly description: "Create the pane in the background without stealing focus.";
|
|
2040
|
+
}, {
|
|
2041
|
+
readonly name: "--focus";
|
|
2042
|
+
readonly required: false;
|
|
2043
|
+
readonly description: "Explicitly focus the created pane.";
|
|
1981
2044
|
}, {
|
|
1982
2045
|
readonly name: "--yes";
|
|
1983
2046
|
readonly required: false;
|
|
@@ -2288,6 +2351,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2288
2351
|
readonly name: "--no-focus";
|
|
2289
2352
|
readonly required: false;
|
|
2290
2353
|
readonly description: "Create the panel in the background without changing active panel.";
|
|
2354
|
+
}, {
|
|
2355
|
+
readonly name: "--focus";
|
|
2356
|
+
readonly required: false;
|
|
2357
|
+
readonly description: "Explicitly focus the created panel.";
|
|
2291
2358
|
}, {
|
|
2292
2359
|
readonly name: "--wait-ready";
|
|
2293
2360
|
readonly required: false;
|
|
@@ -2313,7 +2380,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2313
2380
|
readonly "panels submit-composer": {
|
|
2314
2381
|
readonly name: "panels submit-composer";
|
|
2315
2382
|
readonly summary: "Submit an agent composer using the panel-appropriate key sequence.";
|
|
2316
|
-
readonly details: "Use this after sending text into an agent composer when plain Enter is not the right submit action.
|
|
2383
|
+
readonly details: "Use this after sending text into an agent composer when plain Enter is not the right submit action. Agents should use --strategy auto; Pane owns per-agent submit sequences internally and verifies visible composer state when possible.";
|
|
2317
2384
|
readonly requiresPaneDaemon: true;
|
|
2318
2385
|
readonly mutates: true;
|
|
2319
2386
|
readonly arguments: readonly [{
|
|
@@ -2337,7 +2404,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2337
2404
|
}];
|
|
2338
2405
|
readonly examples: readonly ["runpane panels submit-composer --panel <codex-panel-id> --strategy auto --yes --json", "runpane panels submit-composer --panel <panel-id> --strategy enter --yes --json"];
|
|
2339
2406
|
readonly jsonSchemas: readonly ["panelSubmitComposerRequest", "panelSubmitComposerResult"];
|
|
2340
|
-
readonly notes: readonly ["Use `panels input` or `panels submit` to write prompt text first; this command only submits the current composer.", "
|
|
2407
|
+
readonly notes: readonly ["Use `panels input` or `panels submit` to write prompt text first; this command only submits the current composer.", "Use --strategy auto for agent workflows; explicit strategies are diagnostic escape hatches.", "The JSON result includes sequenceName and verifiedSubmitted. If ok is false, follow blocked.suggestedCommand instead of assuming submission happened."];
|
|
2341
2408
|
};
|
|
2342
2409
|
};
|
|
2343
2410
|
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.", "", "Start with `runpane doctor --json` before taking Pane actions. Use it to understand wrapper/runtime details, daemon reachability, and the next safe commands.", "", "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.", "", "Common commands:", "- `runpane doctor --json`", "- `runpane agent-context --json`", "- `runpane repos list --json`", "- `runpane repos add --path <repo> --yes --json`", "- `runpane agents doctor --agent codex --repo active --json`", "- `runpane panes create --repo active --name <name> --agent codex --prompt \"<task>\" --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 codex --repo <selector> --json` to diagnose the repo environment Pane will actually use."];
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA40InB,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"}
|