runpane 2.3.14 → 2.3.15
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 +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +3 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +20 -0
- package/dist/commands.js.map +1 -1
- package/dist/generated/contract.d.ts +314 -3
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +530 -0
- package/dist/generated/contract.js.map +1 -1
- package/dist/localControl.d.ts +2 -0
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +106 -3
- package/dist/localControl.js.map +1 -1
- package/package.json +1 -1
|
@@ -103,6 +103,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
103
103
|
readonly usage: readonly ["runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]", "runpane panes create --from-json <path|-> [--yes] [--json]"];
|
|
104
104
|
readonly mutates: true;
|
|
105
105
|
readonly jsonSchemas: readonly ["paneCreateRequest", "paneCreateResult"];
|
|
106
|
+
}, {
|
|
107
|
+
readonly name: "panels create";
|
|
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]"];
|
|
110
|
+
readonly mutates: true;
|
|
111
|
+
readonly jsonSchemas: readonly ["panelCreateRequest", "panelCreateResult"];
|
|
106
112
|
}, {
|
|
107
113
|
readonly name: "panels list";
|
|
108
114
|
readonly summary: "List tool panels inside a Pane session.";
|
|
@@ -130,6 +136,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
130
136
|
readonly usage: readonly ["runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]"];
|
|
131
137
|
readonly mutates: true;
|
|
132
138
|
readonly jsonSchemas: readonly ["panelSubmitRequest", "panelSubmitResult"];
|
|
139
|
+
}, {
|
|
140
|
+
readonly name: "panels submit-composer";
|
|
141
|
+
readonly summary: "Submit an agent composer using the panel-appropriate key sequence.";
|
|
142
|
+
readonly usage: readonly ["runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter] --yes [--json]"];
|
|
143
|
+
readonly mutates: true;
|
|
144
|
+
readonly jsonSchemas: readonly ["panelSubmitComposerRequest", "panelSubmitComposerResult"];
|
|
133
145
|
}, {
|
|
134
146
|
readonly name: "panels wait";
|
|
135
147
|
readonly summary: "Wait for a terminal panel to initialize, become ready/idle, or contain text.";
|
|
@@ -293,6 +305,14 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
293
305
|
readonly name: "--input-file";
|
|
294
306
|
readonly value: "<path|->";
|
|
295
307
|
readonly description: "Read panel input from a file or stdin.";
|
|
308
|
+
}, {
|
|
309
|
+
readonly name: "--source";
|
|
310
|
+
readonly value: "<user|agent>";
|
|
311
|
+
readonly description: "Identify whether a local-control mutation is user-initiated or agent/orchestrator-initiated.";
|
|
312
|
+
}, {
|
|
313
|
+
readonly name: "--strategy";
|
|
314
|
+
readonly value: "<auto|codex-ctrl-enter|enter>";
|
|
315
|
+
readonly description: "Composer submit key sequence strategy for panels submit-composer.";
|
|
296
316
|
}];
|
|
297
317
|
readonly localBoolean: readonly [{
|
|
298
318
|
readonly name: "--json";
|
|
@@ -300,11 +320,14 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
300
320
|
}, {
|
|
301
321
|
readonly name: "--wait-ready";
|
|
302
322
|
readonly description: "Wait for created terminal panels to be ready before returning.";
|
|
323
|
+
}, {
|
|
324
|
+
readonly name: "--no-focus";
|
|
325
|
+
readonly description: "Create the panel in the background without changing the active panel.";
|
|
303
326
|
}];
|
|
304
327
|
};
|
|
305
328
|
readonly help: {
|
|
306
329
|
readonly npm: {
|
|
307
|
-
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 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."];
|
|
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."];
|
|
308
331
|
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>"];
|
|
309
332
|
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"];
|
|
310
333
|
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"];
|
|
@@ -322,9 +345,11 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
322
345
|
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"];
|
|
323
346
|
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"];
|
|
324
347
|
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."];
|
|
349
|
+
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."];
|
|
325
350
|
};
|
|
326
351
|
readonly pip: {
|
|
327
|
-
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 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."];
|
|
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."];
|
|
328
353
|
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>"];
|
|
329
354
|
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"];
|
|
330
355
|
readonly update: readonly ["Usage:", " runpane update [--version <latest|vX.Y.Z>] [--dry-run] [--yes]"];
|
|
@@ -342,6 +367,8 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
342
367
|
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"];
|
|
343
368
|
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"];
|
|
344
369
|
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."];
|
|
371
|
+
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."];
|
|
345
372
|
};
|
|
346
373
|
};
|
|
347
374
|
readonly docs: {
|
|
@@ -359,7 +386,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
359
386
|
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."];
|
|
360
387
|
};
|
|
361
388
|
readonly testFixtures: {
|
|
362
|
-
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"]];
|
|
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"]];
|
|
363
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:"];
|
|
364
391
|
readonly npmHelpIncludes: readonly ["pnpm dlx runpane@latest", "npx --yes runpane@latest"];
|
|
365
392
|
readonly pipHelpIncludes: readonly ["pipx run runpane", "python -m pip install runpane && python -m runpane setup"];
|
|
@@ -1430,6 +1457,186 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1430
1457
|
};
|
|
1431
1458
|
readonly additionalProperties: false;
|
|
1432
1459
|
};
|
|
1460
|
+
readonly panelCreateRequest: {
|
|
1461
|
+
readonly type: "object";
|
|
1462
|
+
readonly required: readonly ["paneId", "tool"];
|
|
1463
|
+
readonly properties: {
|
|
1464
|
+
readonly paneId: {
|
|
1465
|
+
readonly type: "string";
|
|
1466
|
+
};
|
|
1467
|
+
readonly type: {
|
|
1468
|
+
readonly const: "terminal";
|
|
1469
|
+
};
|
|
1470
|
+
readonly tool: {
|
|
1471
|
+
readonly type: "object";
|
|
1472
|
+
readonly additionalProperties: true;
|
|
1473
|
+
};
|
|
1474
|
+
readonly noFocus: {
|
|
1475
|
+
readonly type: "boolean";
|
|
1476
|
+
};
|
|
1477
|
+
readonly source: {
|
|
1478
|
+
readonly enum: readonly ["user", "agent"];
|
|
1479
|
+
};
|
|
1480
|
+
readonly waitReady: {
|
|
1481
|
+
readonly type: "boolean";
|
|
1482
|
+
};
|
|
1483
|
+
readonly readyTimeoutMs: {
|
|
1484
|
+
readonly type: "number";
|
|
1485
|
+
};
|
|
1486
|
+
};
|
|
1487
|
+
readonly additionalProperties: false;
|
|
1488
|
+
};
|
|
1489
|
+
readonly panelCreateResult: {
|
|
1490
|
+
readonly type: "object";
|
|
1491
|
+
readonly required: readonly ["ok", "paneId", "panelId", "title", "active", "tool"];
|
|
1492
|
+
readonly properties: {
|
|
1493
|
+
readonly ok: {
|
|
1494
|
+
readonly type: "boolean";
|
|
1495
|
+
};
|
|
1496
|
+
readonly paneId: {
|
|
1497
|
+
readonly type: "string";
|
|
1498
|
+
};
|
|
1499
|
+
readonly panelId: {
|
|
1500
|
+
readonly type: "string";
|
|
1501
|
+
};
|
|
1502
|
+
readonly title: {
|
|
1503
|
+
readonly type: "string";
|
|
1504
|
+
};
|
|
1505
|
+
readonly active: {
|
|
1506
|
+
readonly type: "boolean";
|
|
1507
|
+
};
|
|
1508
|
+
readonly tool: {
|
|
1509
|
+
readonly type: "object";
|
|
1510
|
+
readonly required: readonly ["title", "command"];
|
|
1511
|
+
readonly properties: {
|
|
1512
|
+
readonly title: {
|
|
1513
|
+
readonly type: "string";
|
|
1514
|
+
};
|
|
1515
|
+
readonly command: {
|
|
1516
|
+
readonly type: "string";
|
|
1517
|
+
};
|
|
1518
|
+
readonly agent: {
|
|
1519
|
+
readonly enum: readonly ["codex", "claude"];
|
|
1520
|
+
};
|
|
1521
|
+
};
|
|
1522
|
+
readonly additionalProperties: false;
|
|
1523
|
+
};
|
|
1524
|
+
readonly readiness: {
|
|
1525
|
+
readonly type: "object";
|
|
1526
|
+
readonly required: readonly ["ok", "condition", "matched", "timedOut", "elapsedMs", "state"];
|
|
1527
|
+
readonly properties: {
|
|
1528
|
+
readonly ok: {
|
|
1529
|
+
readonly type: "boolean";
|
|
1530
|
+
};
|
|
1531
|
+
readonly condition: {
|
|
1532
|
+
readonly enum: readonly ["initialized", "ready", "idle", "text"];
|
|
1533
|
+
};
|
|
1534
|
+
readonly matched: {
|
|
1535
|
+
readonly type: "boolean";
|
|
1536
|
+
};
|
|
1537
|
+
readonly timedOut: {
|
|
1538
|
+
readonly type: "boolean";
|
|
1539
|
+
};
|
|
1540
|
+
readonly elapsedMs: {
|
|
1541
|
+
readonly type: "number";
|
|
1542
|
+
};
|
|
1543
|
+
readonly state: {
|
|
1544
|
+
readonly type: "object";
|
|
1545
|
+
readonly required: readonly ["initialized"];
|
|
1546
|
+
readonly properties: {
|
|
1547
|
+
readonly initialized: {
|
|
1548
|
+
readonly type: "boolean";
|
|
1549
|
+
};
|
|
1550
|
+
readonly isAlternateScreen: {
|
|
1551
|
+
readonly type: "boolean";
|
|
1552
|
+
};
|
|
1553
|
+
readonly activityStatus: {
|
|
1554
|
+
readonly enum: readonly ["active", "idle"];
|
|
1555
|
+
};
|
|
1556
|
+
readonly isCliReady: {
|
|
1557
|
+
readonly type: "boolean";
|
|
1558
|
+
};
|
|
1559
|
+
readonly isCliPanel: {
|
|
1560
|
+
readonly type: "boolean";
|
|
1561
|
+
};
|
|
1562
|
+
readonly agentType: {
|
|
1563
|
+
readonly enum: readonly ["codex", "claude"];
|
|
1564
|
+
};
|
|
1565
|
+
readonly lastActivity: {
|
|
1566
|
+
readonly type: "string";
|
|
1567
|
+
};
|
|
1568
|
+
};
|
|
1569
|
+
readonly additionalProperties: false;
|
|
1570
|
+
};
|
|
1571
|
+
readonly blocked: {
|
|
1572
|
+
readonly type: "object";
|
|
1573
|
+
readonly required: readonly ["kind", "message"];
|
|
1574
|
+
readonly properties: {
|
|
1575
|
+
readonly kind: {
|
|
1576
|
+
readonly enum: readonly ["codex-update", "agent-prompt", "unknown"];
|
|
1577
|
+
};
|
|
1578
|
+
readonly message: {
|
|
1579
|
+
readonly type: "string";
|
|
1580
|
+
};
|
|
1581
|
+
readonly suggestedCommand: {
|
|
1582
|
+
readonly type: "string";
|
|
1583
|
+
};
|
|
1584
|
+
};
|
|
1585
|
+
readonly additionalProperties: false;
|
|
1586
|
+
};
|
|
1587
|
+
readonly nextCommand: {
|
|
1588
|
+
readonly type: "string";
|
|
1589
|
+
};
|
|
1590
|
+
};
|
|
1591
|
+
readonly additionalProperties: false;
|
|
1592
|
+
};
|
|
1593
|
+
readonly nextCommand: {
|
|
1594
|
+
readonly type: "string";
|
|
1595
|
+
};
|
|
1596
|
+
};
|
|
1597
|
+
readonly additionalProperties: false;
|
|
1598
|
+
};
|
|
1599
|
+
readonly panelSubmitComposerRequest: {
|
|
1600
|
+
readonly type: "object";
|
|
1601
|
+
readonly required: readonly ["panelId"];
|
|
1602
|
+
readonly properties: {
|
|
1603
|
+
readonly panelId: {
|
|
1604
|
+
readonly type: "string";
|
|
1605
|
+
};
|
|
1606
|
+
readonly strategy: {
|
|
1607
|
+
readonly enum: readonly ["auto", "codex-ctrl-enter", "enter"];
|
|
1608
|
+
};
|
|
1609
|
+
};
|
|
1610
|
+
readonly additionalProperties: false;
|
|
1611
|
+
};
|
|
1612
|
+
readonly panelSubmitComposerResult: {
|
|
1613
|
+
readonly type: "object";
|
|
1614
|
+
readonly required: readonly ["ok", "panelId", "inputBytes", "strategy", "sentAt"];
|
|
1615
|
+
readonly properties: {
|
|
1616
|
+
readonly ok: {
|
|
1617
|
+
readonly const: true;
|
|
1618
|
+
};
|
|
1619
|
+
readonly panelId: {
|
|
1620
|
+
readonly type: "string";
|
|
1621
|
+
};
|
|
1622
|
+
readonly paneId: {
|
|
1623
|
+
readonly type: "string";
|
|
1624
|
+
};
|
|
1625
|
+
readonly inputBytes: {
|
|
1626
|
+
readonly type: "number";
|
|
1627
|
+
};
|
|
1628
|
+
readonly strategy: {
|
|
1629
|
+
readonly enum: readonly ["codex-ctrl-enter", "enter"];
|
|
1630
|
+
};
|
|
1631
|
+
readonly sentAt: {
|
|
1632
|
+
readonly type: "string";
|
|
1633
|
+
};
|
|
1634
|
+
readonly nextCommand: {
|
|
1635
|
+
readonly type: "string";
|
|
1636
|
+
};
|
|
1637
|
+
};
|
|
1638
|
+
readonly additionalProperties: false;
|
|
1639
|
+
};
|
|
1433
1640
|
};
|
|
1434
1641
|
readonly agentContext: {
|
|
1435
1642
|
readonly brief: {
|
|
@@ -1465,6 +1672,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1465
1672
|
readonly name: "panes create";
|
|
1466
1673
|
readonly summary: "Create one or more Pane sessions in a saved repository and open a terminal-backed tool tab.";
|
|
1467
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"];
|
|
1675
|
+
}, {
|
|
1676
|
+
readonly name: "panels create";
|
|
1677
|
+
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"];
|
|
1468
1679
|
}, {
|
|
1469
1680
|
readonly name: "panels list";
|
|
1470
1681
|
readonly summary: "List tool panels inside a Pane session.";
|
|
@@ -1485,6 +1696,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1485
1696
|
readonly name: "panels submit";
|
|
1486
1697
|
readonly summary: "Send text plus terminal Enter to a terminal panel.";
|
|
1487
1698
|
readonly arguments: readonly ["--panel <panel-id>", "--text <text>", "--input-file <path|->", "--yes", "--json", "--pane-dir <path>"];
|
|
1699
|
+
}, {
|
|
1700
|
+
readonly name: "panels submit-composer";
|
|
1701
|
+
readonly summary: "Submit an agent composer with the correct key sequence, including Ctrl+Enter for Codex.";
|
|
1702
|
+
readonly arguments: readonly ["--panel <panel-id>", "--strategy <auto|codex-ctrl-enter|enter>", "--yes", "--json"];
|
|
1488
1703
|
}, {
|
|
1489
1704
|
readonly name: "panels wait";
|
|
1490
1705
|
readonly summary: "Wait for terminal initialized, ready, idle, or text state with compact output.";
|
|
@@ -2028,6 +2243,102 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
2028
2243
|
readonly jsonSchemas: readonly ["panelWaitResult"];
|
|
2029
2244
|
readonly notes: readonly ["If blocked is present, do not assume success. Use blocked.suggestedCommand or inspect `panels screen`.", "The default timeout and screen are intentionally small for agent context safety."];
|
|
2030
2245
|
};
|
|
2246
|
+
readonly "panels create": {
|
|
2247
|
+
readonly name: "panels create";
|
|
2248
|
+
readonly summary: "Create a terminal-backed tool panel inside an existing pane.";
|
|
2249
|
+
readonly details: "Use this to add reviewer or helper tabs to the current pane without creating a new session. Agent/orchestrator-created panels should pass --source agent or --no-focus so the user stays in the implementation tab. The daemon initializes the terminal immediately and can wait for CLI readiness.";
|
|
2250
|
+
readonly requiresPaneDaemon: true;
|
|
2251
|
+
readonly mutates: true;
|
|
2252
|
+
readonly arguments: readonly [{
|
|
2253
|
+
readonly name: "--pane";
|
|
2254
|
+
readonly value: "<pane-id>";
|
|
2255
|
+
readonly required: true;
|
|
2256
|
+
readonly description: "Existing Pane session id to add the panel to.";
|
|
2257
|
+
}, {
|
|
2258
|
+
readonly name: "--agent";
|
|
2259
|
+
readonly value: "<codex|claude>";
|
|
2260
|
+
readonly required: false;
|
|
2261
|
+
readonly description: "Built-in agent command template to launch.";
|
|
2262
|
+
}, {
|
|
2263
|
+
readonly name: "--tool-command";
|
|
2264
|
+
readonly value: "<command>";
|
|
2265
|
+
readonly required: false;
|
|
2266
|
+
readonly description: "Custom terminal command to launch instead of a built-in agent.";
|
|
2267
|
+
}, {
|
|
2268
|
+
readonly name: "--title";
|
|
2269
|
+
readonly value: "<title>";
|
|
2270
|
+
readonly required: false;
|
|
2271
|
+
readonly description: "Panel title override.";
|
|
2272
|
+
}, {
|
|
2273
|
+
readonly name: "--initial-input";
|
|
2274
|
+
readonly value: "<text>";
|
|
2275
|
+
readonly required: false;
|
|
2276
|
+
readonly description: "Initial input to send after the tool starts.";
|
|
2277
|
+
}, {
|
|
2278
|
+
readonly name: "--initial-input-file";
|
|
2279
|
+
readonly value: "<path|->";
|
|
2280
|
+
readonly required: false;
|
|
2281
|
+
readonly description: "Read initial input from a file or stdin.";
|
|
2282
|
+
}, {
|
|
2283
|
+
readonly name: "--source";
|
|
2284
|
+
readonly value: "<user|agent>";
|
|
2285
|
+
readonly required: false;
|
|
2286
|
+
readonly description: "Mutation source; agent implies background creation.";
|
|
2287
|
+
}, {
|
|
2288
|
+
readonly name: "--no-focus";
|
|
2289
|
+
readonly required: false;
|
|
2290
|
+
readonly description: "Create the panel in the background without changing active panel.";
|
|
2291
|
+
}, {
|
|
2292
|
+
readonly name: "--wait-ready";
|
|
2293
|
+
readonly required: false;
|
|
2294
|
+
readonly description: "Wait until the terminal tool is ready.";
|
|
2295
|
+
}, {
|
|
2296
|
+
readonly name: "--ready-timeout-ms";
|
|
2297
|
+
readonly value: "<ms>";
|
|
2298
|
+
readonly required: false;
|
|
2299
|
+
readonly description: "Readiness wait timeout.";
|
|
2300
|
+
}, {
|
|
2301
|
+
readonly name: "--yes";
|
|
2302
|
+
readonly required: false;
|
|
2303
|
+
readonly description: "Skip confirmation for this mutating command.";
|
|
2304
|
+
}, {
|
|
2305
|
+
readonly name: "--json";
|
|
2306
|
+
readonly required: false;
|
|
2307
|
+
readonly description: "Print machine-readable output.";
|
|
2308
|
+
}];
|
|
2309
|
+
readonly examples: readonly ["runpane panels create --pane <pane-id> --agent claude --source agent --no-focus --wait-ready --yes --json", "runpane panels create --pane <pane-id> --agent codex --source agent --no-focus --wait-ready --yes --json"];
|
|
2310
|
+
readonly jsonSchemas: readonly ["panelCreateRequest", "panelCreateResult"];
|
|
2311
|
+
readonly notes: readonly ["Use this for same-pane reviewer loops after PR creation/testing.", "For agent-created panels, prefer --source agent or --no-focus to avoid stealing focus from the user or implementation tab."];
|
|
2312
|
+
};
|
|
2313
|
+
readonly "panels submit-composer": {
|
|
2314
|
+
readonly name: "panels submit-composer";
|
|
2315
|
+
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. Auto mode sends Ctrl+Enter for Codex panels and Enter for other panels.";
|
|
2317
|
+
readonly requiresPaneDaemon: true;
|
|
2318
|
+
readonly mutates: true;
|
|
2319
|
+
readonly arguments: readonly [{
|
|
2320
|
+
readonly name: "--panel";
|
|
2321
|
+
readonly value: "<panel-id>";
|
|
2322
|
+
readonly required: true;
|
|
2323
|
+
readonly description: "Terminal panel id.";
|
|
2324
|
+
}, {
|
|
2325
|
+
readonly name: "--strategy";
|
|
2326
|
+
readonly value: "<auto|codex-ctrl-enter|enter>";
|
|
2327
|
+
readonly required: false;
|
|
2328
|
+
readonly description: "Composer submit key sequence strategy.";
|
|
2329
|
+
}, {
|
|
2330
|
+
readonly name: "--yes";
|
|
2331
|
+
readonly required: false;
|
|
2332
|
+
readonly description: "Skip confirmation for this mutating command.";
|
|
2333
|
+
}, {
|
|
2334
|
+
readonly name: "--json";
|
|
2335
|
+
readonly required: false;
|
|
2336
|
+
readonly description: "Print machine-readable output.";
|
|
2337
|
+
}];
|
|
2338
|
+
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
|
+
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.", "Codex composer submission uses ESC [13;5u, not a plain Enter."];
|
|
2341
|
+
};
|
|
2031
2342
|
};
|
|
2032
2343
|
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."];
|
|
2033
2344
|
};
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2pInB,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"}
|