runpane 2.4.162 → 2.4.164
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/agentContext.d.ts +1 -1
- package/dist/agentContext.d.ts.map +1 -1
- package/dist/agentContext.js +8 -4
- package/dist/agentContext.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +51 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +10 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +40 -0
- package/dist/commands.js.map +1 -1
- package/dist/daemonClient.d.ts +8 -0
- package/dist/daemonClient.d.ts.map +1 -1
- package/dist/daemonClient.js +41 -0
- package/dist/daemonClient.js.map +1 -1
- package/dist/docs-index.json +1 -1
- package/dist/doctor.d.ts +2 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +5 -1
- package/dist/doctor.js.map +1 -1
- package/dist/generated/contract.d.ts +241 -5
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +449 -6
- package/dist/generated/contract.js.map +1 -1
- package/dist/localControl.d.ts +1 -0
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +1 -0
- package/dist/localControl.js.map +1 -1
- package/dist/workspace.d.ts +48 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +410 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +1 -1
|
@@ -174,6 +174,46 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
174
174
|
readonly toolsets: readonly ["core", "agents"];
|
|
175
175
|
readonly jsonSchemas: readonly ["workspaceStateResult"];
|
|
176
176
|
readonly localControl: true;
|
|
177
|
+
}, {
|
|
178
|
+
readonly name: "workspace list";
|
|
179
|
+
readonly summary: "List your machines on Tailscale and whether each has joined workspaces.";
|
|
180
|
+
readonly usage: readonly ["runpane workspace list [--json] [--pane-dir <path>]"];
|
|
181
|
+
readonly wrappers: readonly ["npm"];
|
|
182
|
+
readonly localControl: true;
|
|
183
|
+
}, {
|
|
184
|
+
readonly name: "workspace enable";
|
|
185
|
+
readonly summary: "Put this machine's Pane on your tailnet for runpane workspace (the default when Tailscale is signed in).";
|
|
186
|
+
readonly usage: readonly ["runpane workspace enable [--json] [--pane-dir <path>]"];
|
|
187
|
+
readonly mutates: true;
|
|
188
|
+
readonly wrappers: readonly ["npm"];
|
|
189
|
+
readonly localControl: true;
|
|
190
|
+
}, {
|
|
191
|
+
readonly name: "workspace disable";
|
|
192
|
+
readonly summary: "Take this machine off runpane workspace and remove its tailscale serve handler on port 8443.";
|
|
193
|
+
readonly usage: readonly ["runpane workspace disable [--json] [--pane-dir <path>]"];
|
|
194
|
+
readonly mutates: true;
|
|
195
|
+
readonly wrappers: readonly ["npm"];
|
|
196
|
+
readonly localControl: true;
|
|
197
|
+
}, {
|
|
198
|
+
readonly name: "workspace read";
|
|
199
|
+
readonly summary: "Print a file from one of your machines; any path form works (C:\\..., /mnt/c/..., /home/..., ~/...).";
|
|
200
|
+
readonly usage: readonly ["runpane workspace [<machine>] read <path> [--json]"];
|
|
201
|
+
readonly wrappers: readonly ["npm"];
|
|
202
|
+
readonly localControl: true;
|
|
203
|
+
}, {
|
|
204
|
+
readonly name: "workspace write";
|
|
205
|
+
readonly summary: "Write stdin to a file on one of your machines, creating parent folders.";
|
|
206
|
+
readonly usage: readonly ["runpane workspace [<machine>] write <path> [--json]"];
|
|
207
|
+
readonly mutates: true;
|
|
208
|
+
readonly wrappers: readonly ["npm"];
|
|
209
|
+
readonly localControl: true;
|
|
210
|
+
}, {
|
|
211
|
+
readonly name: "workspace exec";
|
|
212
|
+
readonly summary: "Run a command in another machine's shell and return stdout, stderr, the exit code, OS, and shell.";
|
|
213
|
+
readonly usage: readonly ["runpane workspace <machine> exec [--cwd <path>] [--timeout-ms <ms>] [--json] -- <command>"];
|
|
214
|
+
readonly mutates: true;
|
|
215
|
+
readonly wrappers: readonly ["npm"];
|
|
216
|
+
readonly localControl: true;
|
|
177
217
|
}, {
|
|
178
218
|
readonly name: "watch";
|
|
179
219
|
readonly summary: "Wait for workspace agent and Pane transitions using a daemon-held cursor.";
|
|
@@ -284,7 +324,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
284
324
|
}, {
|
|
285
325
|
readonly name: "panels input";
|
|
286
326
|
readonly summary: "Send input bytes to a terminal panel.";
|
|
287
|
-
readonly usage: readonly ["runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--input-file <path|->) --yes [--json] [--pane-dir <path>]"];
|
|
327
|
+
readonly usage: readonly ["runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--input-file <path|->) [--source user|agent] --yes [--json] [--pane-dir <path>]"];
|
|
288
328
|
readonly mutates: true;
|
|
289
329
|
readonly toolsets: readonly ["core", "panels"];
|
|
290
330
|
readonly jsonSchemas: readonly ["panelInputRequest", "panelInputResult"];
|
|
@@ -292,7 +332,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
292
332
|
}, {
|
|
293
333
|
readonly name: "panels submit";
|
|
294
334
|
readonly summary: "Send and submit text to a terminal panel, including idle agent composers.";
|
|
295
|
-
readonly usage: readonly ["runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) [--as-file-pointer] --yes [--json] [--pane-dir <path>]"];
|
|
335
|
+
readonly usage: readonly ["runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) [--as-file-pointer] [--source user|agent] --yes [--json] [--pane-dir <path>]"];
|
|
296
336
|
readonly mutates: true;
|
|
297
337
|
readonly toolsets: readonly ["panels"];
|
|
298
338
|
readonly jsonSchemas: readonly ["panelSubmitRequest", "panelSubmitResult"];
|
|
@@ -990,6 +1030,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
990
1030
|
readonly name: "--question";
|
|
991
1031
|
readonly value: "<text>";
|
|
992
1032
|
readonly description: "What a blocked worker needs answered; required with --state blocked.";
|
|
1033
|
+
}, {
|
|
1034
|
+
readonly name: "--cwd";
|
|
1035
|
+
readonly value: "<path>";
|
|
1036
|
+
readonly description: "Working directory on the target machine for workspace exec.";
|
|
993
1037
|
}];
|
|
994
1038
|
readonly localBoolean: readonly [{
|
|
995
1039
|
readonly name: "--json";
|
|
@@ -1074,7 +1118,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1074
1118
|
};
|
|
1075
1119
|
readonly help: {
|
|
1076
1120
|
readonly npm: {
|
|
1077
|
-
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane doctor --report --body-file <path|->", " runpane daemon repair [--pane-dir <path>] [--yes] [--json]", " runpane agent-context [--json]", " runpane mcp [--toolsets <name,...>] [--read-only]", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", " runpane repos list [--json]", " runpane repos add --path <path> [--name <name>]", " runpane sessions list [--json] [--pane-dir <path>]", " runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]", " runpane sessions get --session <id|name> [--json] [--pane-dir <path>]", " runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]", " runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]", " runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", " runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", " runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", " runpane lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", " runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", " runpane lock list [--session <id|name>] [--json] [--pane-dir <path>]", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--base-branch <branch>] [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--remove-worktree] [--dry-run] --yes", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--dry-run] --yes", " runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] --yes", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--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|tab] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane panels last-message --panel <panel-id> [--limit <count>] [--json]", " runpane panes git-status --pane <pane-id> [--json] [--pane-dir <path>]", " runpane panes commit --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", " runpane panes push --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes pull --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes rebase-main --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes restore --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane links create --pane <pane-id> [--panel <panel-id>] [--json]", " runpane links open --url <pane-url> --yes [--json] [--pane-dir <path>]", " runpane docs search --query <text> [--limit <count>] [--json]", " runpane docs read --doc <path> [--json]", " runpane agents start --repo <selector> --name <name> (--agent <codex|claude|cursor>|--tool-command <command>) --prompt <task> [--base-branch <branch>] --yes [--json] [--pane-dir <path>]", " runpane agents status (--pane <pane-id>|--panel <panel-id>) [--limit <count>] [--json] [--pane-dir <path>]", " runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> --yes [--json] [--pane-dir <path>]", " runpane report --state <ready|blocked|failed|done> [--pr <number>] [--head <sha>] [--summary-file <path|->] [--question <text>] [--json]", " runpane panes squash-rebase --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", " runpane panes stash --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes stash-pop --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes soft-reset --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes fetch --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes run-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes stop-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes move --pane <pane-id> --folder <folder-id> --yes [--json] [--pane-dir <path>]", " runpane folders list --repo <repo-id> [--json] [--pane-dir <path>]", " runpane folders create --repo <repo-id> --name <name> --yes [--json] [--pane-dir <path>]", " 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."];
|
|
1121
|
+
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane doctor --report --body-file <path|->", " runpane daemon repair [--pane-dir <path>] [--yes] [--json]", " runpane agent-context [--json]", " runpane mcp [--toolsets <name,...>] [--read-only]", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", " runpane repos list [--json]", " runpane repos add --path <path> [--name <name>]", " runpane sessions list [--json] [--pane-dir <path>]", " runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]", " runpane sessions get --session <id|name> [--json] [--pane-dir <path>]", " runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]", " runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]", " runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]", " runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]", " runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]", " runpane lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", " runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", " runpane lock list [--session <id|name>] [--json] [--pane-dir <path>]", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane workspace state [--repo <selector>] [--json]", " runpane workspace list [--json]", " runpane workspace <machine> read|write|exec|<command>", " runpane watch --follow", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--base-branch <branch>] [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--remove-worktree] [--dry-run] --yes", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--dry-run] --yes", " runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] --yes", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--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|tab] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane panels last-message --panel <panel-id> [--limit <count>] [--json]", " runpane panes git-status --pane <pane-id> [--json] [--pane-dir <path>]", " runpane panes commit --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", " runpane panes push --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes pull --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes rebase-main --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes restore --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane links create --pane <pane-id> [--panel <panel-id>] [--json]", " runpane links open --url <pane-url> --yes [--json] [--pane-dir <path>]", " runpane docs search --query <text> [--limit <count>] [--json]", " runpane docs read --doc <path> [--json]", " runpane agents start --repo <selector> --name <name> (--agent <codex|claude|cursor>|--tool-command <command>) --prompt <task> [--base-branch <branch>] --yes [--json] [--pane-dir <path>]", " runpane agents status (--pane <pane-id>|--panel <panel-id>) [--limit <count>] [--json] [--pane-dir <path>]", " runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> --yes [--json] [--pane-dir <path>]", " runpane report --state <ready|blocked|failed|done> [--pr <number>] [--head <sha>] [--summary-file <path|->] [--question <text>] [--json]", " runpane panes squash-rebase --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", " runpane panes stash --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes stash-pop --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes soft-reset --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes fetch --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes run-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes stop-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes move --pane <pane-id> --folder <folder-id> --yes [--json] [--pane-dir <path>]", " runpane folders list --repo <repo-id> [--json] [--pane-dir <path>]", " runpane folders create --repo <repo-id> --name <name> --yes [--json] [--pane-dir <path>]", " 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."];
|
|
1078
1122
|
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>"];
|
|
1079
1123
|
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"];
|
|
1080
1124
|
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"];
|
|
@@ -1086,7 +1130,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1086
1130
|
readonly panes: readonly ["Pane session commands.", "", "Usage:", " runpane panes <command> [options]", "", "Commands:", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes archive --pane <pane-id> [--force] [--remove-worktree] [--source user|agent] [--dry-run] --yes [--json]", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--dry-run] --yes [--json]", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Run \"runpane help panes <command>\" for command-specific options."];
|
|
1087
1131
|
readonly "panes list": readonly ["Usage:", " runpane panes list [--repo <selector>] [--json]", "", "Lists Pane sessions. Pass --repo to limit results to one saved repository.", "", "status is running while any terminal panel is live. agentState is the most urgent state of the live agent panels: blocked, working, ready, or none.", "", "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"];
|
|
1088
1132
|
readonly "panes cost": readonly ["Usage:", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", "", "Reports estimated token costs per Pane for the last 30 days, including per-model and cache-efficiency details.", "", "Options:", " --repo <selector> Limit results to one saved repository", " --pane <pane-id> Return one Pane, including an idle Pane with zero usage", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
|
|
1089
|
-
readonly workspace: readonly ["Workspace
|
|
1133
|
+
readonly workspace: readonly ["Workspace commands: this machine's Panes, and your other machines over Tailscale.", "", "Usage:", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", " runpane workspace list [--json]", " runpane workspace <machine> read <path>", " runpane workspace <machine> write <path> (content from stdin)", " runpane workspace <machine> exec -- <command>", " runpane workspace <machine> <any runpane command> (e.g. sessions list --json)", " runpane workspace enable|disable", "", "<machine> is a Tailscale name, unique prefix, or IP. Only machines signed in to your own Tailscale login are reachable.", "Without <machine>, read, write, and exec route a path that cannot exist here (C:\\... on a Mac) to the one joined machine it fits."];
|
|
1090
1134
|
readonly "workspace state": readonly ["Usage:", " runpane workspace state [--repo <selector>] [--json]", "", "Returns one workspace snapshot of every Pane and CLI panel."];
|
|
1091
1135
|
readonly watch: readonly ["Usage:", " runpane watch [--as <name>|--since <generation>] [--follow] [options]", "", "Waits for agent state, Pane lifecycle, and panel exit transitions without polling.", "", "Options:", " --as <name> Use a persisted daemon-held cursor", " --since <generation> Use an explicit cursor instead", " --from <now|earliest> Starting point for a new named cursor", " --follow Continue waiting until interrupted", " --format <lines|json> Output format; lines is the follow default", " --heartbeat <seconds> Healthy-silence bound; defaults to 60 under --follow", " --idle-after <ms> Re-firing READY idle interval; defaults to 600000 under --follow", " --settle <ms> Opt-in: emit READY only after this quiet window (--follow only)", " --blocked-settle <ms> Opt-in: emit BLOCKED only after this window (--follow only)", " --min-interval <ms> Opt-in: batch non-urgent lines per interval; BLOCKED, REPORT, and PR failures bypass (--follow only)", " --idle-backoff Opt-in: IDLE at --idle-after, 30m, 1h, 3h, then daily (--follow only)", " --all-managed Explicitly watch all managed panes", " --include-shells Include ordinary shell panels", " --agents-only Limit to CLI agent panels", " --exclude-pane <id> Exclude a Pane; repeatable", " --self-test Anonymous, read-only daemon path probe", " --quiet Drop WATCH OK, HEARTBEAT, and WATCH RECONNECTED lines", " --no-control-lines Alias for --quiet", " --kinds <kind,...> Limit event kinds", " --pane <id> Limit to a Pane; repeatable", " --session <id|name> Follow every Pane in a named Session; associate/detach apply live", " --repo <selector> Limit to a saved repository", " --name-contains <text> Limit by Pane name substring", " --timeout-ms <ms> Wait timeout; 0 polls once", " --limit <count> Maximum entries per response", " --ack-now Use at-most-once named-cursor delivery", " --include-held-input Include unsubmitted composer text in JSON", " --no-held-input Disable redacted STUCK detection", " --pane-dir <path> Connect to a specific Pane data directory", " --json Alias for --format json", "", "Defaults are responsive: no settle, no batching, all kinds, IDLE every --idle-after. BUSY carries no action; drop it with --kinds.", "agent.report (a worker ran `runpane report`) is opt-in: list it in --kinds. REPORT lines skip the --min-interval batch.", "Unattended (Pane Chat default): --quiet --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "User present: the same kinds with --settle 60000 --blocked-settle 15000 --min-interval 120000 and no --idle-backoff", "Session orchestrator: runpane watch --session <id|name> --follow --quiet --json --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone,pane.associated,pane.detached,pr.conflicted,pr.checks,pr.merged --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "Pane Chat arms those flags itself through its skill; pass them only for your own scripts.", "STUCK means real unsubmitted composer text; an agent prompt suggestion never counts.", "Dead watch: HEARTBEAT is proof of life only (--quiet drops it). Judge death by a non-zero exit or a WATCH ERROR line, not by silence."];
|
|
1092
1136
|
readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options]", " runpane panes create --repo <selector> --name <name> --tool-command <command> [--agent <codex|claude|cursor>] [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates user-visible Panes (Pane sessions) for feature/PR work in a saved repository and opens a terminal-backed tool tab. Pane creates and owns the worktree/branch for each new Pane.", "", "A long or multi-line prompt is never typed into the shell: on bash, zsh or sh the agent launches with `\"$(cat '<prompt file>')\"` reading a private copy under `<pane-dir>/prompts/<pane-id>/`; on PowerShell, cmd, fish or WSL the prompt is pasted into the agent's composer once it is ready.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --name <name> Pane/session name", " --worktree-name <name> Worktree directory name; defaults to --name", " --branch <name> Exact new branch name (slashes kept); must not exist; defaults to the worktree name", " --base-branch <ref> Ref to branch from; --base is an alias", " --agent <codex|claude|cursor> Built-in terminal template; with --tool-command, the agent it runs", " --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", " --as-file-pointer Send `Read and follow <prompt file>` instead of the prompt", " --prompt-file <path|-> Alias for --initial-input-file", " --from-json <path|-> Read a full request payload", " --timeout-ms <milliseconds> Pane creation timeout", " --wait-ready Wait for terminal readiness before returning", " --ready-timeout-ms <ms> Readiness wait timeout; defaults to 30000", " --concurrency <count> Accepted; creation is currently serialized", " --source <user|agent> Mark mutation source; agent implies background creation", " --no-focus Create in the background without stealing focus", " --focus Explicitly focus the created pane", " --pinned Accepted for compatibility; creation already pins by default", " --no-pinned Create unpinned instead of the default pinned (the UI's favorite/pin star)", " --no-associate Inside a Session orchestrator, do not associate the new pane with that Session", " --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"];
|
|
@@ -1147,6 +1191,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1147
1191
|
readonly "lock acquire": readonly ["Usage:", "runpane lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1148
1192
|
readonly "lock release": readonly ["Usage:", "runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1149
1193
|
readonly "lock list": readonly ["Usage:", "runpane lock list [--session <id|name>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1194
|
+
readonly "workspace list": readonly ["Usage:", " runpane workspace list [--json] [--pane-dir <path>]", "", "List your machines on Tailscale and whether each has joined workspaces.", "", "Options:", " --json Print machine-readable output."];
|
|
1195
|
+
readonly "workspace enable": readonly ["Usage:", " runpane workspace enable [--json] [--pane-dir <path>]", "", "Put this machine's Pane on your tailnet for runpane workspace (the default when Tailscale is signed in).", "", "Options:", " --json Print machine-readable output."];
|
|
1196
|
+
readonly "workspace disable": readonly ["Usage:", " runpane workspace disable [--json] [--pane-dir <path>]", "", "Take this machine off runpane workspace and remove its tailscale serve handler on port 8443.", "", "Options:", " --json Print machine-readable output."];
|
|
1197
|
+
readonly "workspace read": readonly ["Usage:", " runpane workspace [<machine>] read <path> [--json]", "", "Print a file from one of your machines; any path form works (C:\\..., /mnt/c/..., /home/..., ~/...).", "", "Options:", " <machine> Tailscale machine name, unique prefix, MagicDNS name, or Tailscale IP. Omit it to route a path that cannot exist here to the one joined machine it fits.", " <path> Absolute path in any form; ~ is that machine's home.", " --json Print machine-readable output."];
|
|
1198
|
+
readonly "workspace write": readonly ["Usage:", " runpane workspace [<machine>] write <path> [--json]", "", "Write stdin to a file on one of your machines, creating parent folders.", "", "Options:", " <machine> Tailscale machine name, unique prefix, MagicDNS name, or Tailscale IP. Omit it to route a path that cannot exist here to the one joined machine it fits.", " <path> Absolute path in any form.", " --json Print machine-readable output."];
|
|
1199
|
+
readonly "workspace exec": readonly ["Usage:", " runpane workspace <machine> exec [--cwd <path>] [--timeout-ms <ms>] [--json] -- <command>", "", "Run a command in another machine's shell and return stdout, stderr, the exit code, OS, and shell.", "", "Options:", " <machine> Tailscale machine name, unique prefix, MagicDNS name, or Tailscale IP. Omit it to route a path that cannot exist here to the one joined machine it fits.", " --cwd <path> Working directory on that machine, in any path form; defaults to its home.", " --timeout-ms <milliseconds> Stop the command after this long (default 120000, at most 540000).", " --json Print machine-readable output.", " -- <command> The command line, run by that machine's shell."];
|
|
1150
1200
|
};
|
|
1151
1201
|
readonly pip: {
|
|
1152
1202
|
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane doctor --report --body-file <path|->", " runpane daemon repair [--pane-dir <path>] [--yes] [--json]", " runpane agent-context [--json]", " runpane mcp [--toolsets <name,...>] [--read-only]", " runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]", " runpane repos list [--json]", " runpane repos add --path <path> [--name <name>]", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--base-branch <branch>] [--source user|agent] [--focus|--no-focus] [--wait-ready]", " runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--remove-worktree] [--dry-run] --yes", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--dry-run] --yes", " python -m runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] --yes", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels screen --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--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|tab] --yes [--json]", " runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--json]", " runpane panels last-message --panel <panel-id> [--limit <count>] [--json]", " runpane panes git-status --pane <pane-id> [--json] [--pane-dir <path>]", " runpane panes commit --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", " runpane panes push --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes pull --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes rebase-main --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes restore --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane links create --pane <pane-id> [--panel <panel-id>] [--json]", " runpane links open --url <pane-url> --yes [--json] [--pane-dir <path>]", " runpane docs search --query <text> [--limit <count>] [--json]", " runpane docs read --doc <path> [--json]", " runpane agents start --repo <selector> --name <name> (--agent <codex|claude|cursor>|--tool-command <command>) --prompt <task> [--base-branch <branch>] --yes [--json] [--pane-dir <path>]", " runpane agents status (--pane <pane-id>|--panel <panel-id>) [--limit <count>] [--json] [--pane-dir <path>]", " runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> --yes [--json] [--pane-dir <path>]", " runpane report --state <ready|blocked|failed|done> [--pr <number>] [--head <sha>] [--summary-file <path|->] [--question <text>] [--json]", " runpane panes squash-rebase --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]", " runpane panes stash --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes stash-pop --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes soft-reset --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes fetch --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes run-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes stop-script --pane <pane-id> --yes [--json] [--pane-dir <path>]", " runpane panes move --pane <pane-id> --folder <folder-id> --yes [--json] [--pane-dir <path>]", " runpane folders list --repo <repo-id> [--json] [--pane-dir <path>]", " runpane folders create --repo <repo-id> --name <name> --yes [--json] [--pane-dir <path>]", " runpane lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", " runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", " runpane lock list [--session <id|name>] [--json] [--pane-dir <path>]", " 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."];
|
|
@@ -1161,7 +1211,7 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1161
1211
|
readonly panes: readonly ["Pane session commands.", "", "Usage:", " runpane panes <command> [options]", "", "Commands:", " runpane panes list [--repo <selector>] [--json]", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [options]", " runpane panes archive --pane <pane-id> [--force] [--remove-worktree] [--source user|agent] [--dry-run] --yes [--json]", " runpane panes archive --session <id|name> --merged [--remove-worktree] [--dry-run] --yes [--json]", " runpane panes pin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json]", " runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json]", "", "Run \"runpane help panes <command>\" for command-specific options."];
|
|
1162
1212
|
readonly "panes list": readonly ["Usage:", " runpane panes list [--repo <selector>] [--json]", "", "Lists Pane sessions. Pass --repo to limit results to one saved repository.", "", "status is running while any terminal panel is live. agentState is the most urgent state of the live agent panels: blocked, working, ready, or none.", "", "Options:", " --repo <selector>", " --pane-dir <path>", " --json"];
|
|
1163
1213
|
readonly "panes cost": readonly ["Usage:", " runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]", "", "Reports estimated token costs per Pane for the last 30 days, including per-model and cache-efficiency details.", "", "Options:", " --repo <selector>", " --pane <pane-id>", " --pane-dir <path>", " --json"];
|
|
1164
|
-
readonly workspace: readonly ["Workspace
|
|
1214
|
+
readonly workspace: readonly ["Workspace commands: this machine's Panes, and your other machines over Tailscale.", "", "Usage:", " runpane workspace state [--repo <selector>] [--json]", " runpane watch --follow", "", "runpane workspace list|read|write|exec|enable|disable ship in the npm package: npx --yes runpane@latest workspace list"];
|
|
1165
1215
|
readonly "workspace state": readonly ["Usage:", " runpane workspace state [--repo <selector>] [--json]", "", "Returns one workspace snapshot of every Pane and CLI panel."];
|
|
1166
1216
|
readonly watch: readonly ["Usage:", " runpane watch [--as <name>|--since <generation>] [--follow] [options]", "", "Waits for workspace transitions without polling.", "", "Options:", " --as <name>", " --since <generation>", " --from <now|earliest>", " --follow", " --format <lines|json>", " --heartbeat <seconds>", " --idle-after <ms>", " --settle <ms> Opt-in READY quiet window (--follow only)", " --blocked-settle <ms> Opt-in BLOCKED window (--follow only)", " --min-interval <ms> Opt-in batching; BLOCKED, REPORT, and PR failures bypass (--follow only)", " --idle-backoff Opt-in IDLE backoff (--follow only)", " --all-managed", " --include-shells", " --agents-only", " --exclude-pane <id> Repeatable", " --self-test", " --quiet Drop OK, HEARTBEAT, and RECONNECTED lines", " --no-control-lines Alias for --quiet", " --kinds <kind,...>", " --pane <id> Repeatable", " --session <id|name> Follow a named Session's Panes; no re-arm", " --repo <selector>", " --name-contains <text>", " --timeout-ms <ms> 0 polls once", " --limit <count>", " --ack-now", " --include-held-input", " --no-held-input", " --pane-dir <path> Connect to a specific Pane data directory", " --json Alias for --format json", "", "Defaults are responsive: no settle, no batching, all kinds, IDLE every --idle-after. BUSY carries no action; drop it with --kinds.", "agent.report (a worker ran `runpane report`) is opt-in: list it in --kinds. REPORT lines skip the --min-interval batch.", "Unattended (Pane Chat default): --quiet --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "User present: the same kinds with --settle 60000 --blocked-settle 15000 --min-interval 120000 and no --idle-backoff", "Session orchestrator: runpane watch --session <id|name> --follow --quiet --json --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone,pane.associated,pane.detached,pr.conflicted,pr.checks,pr.merged --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff", "Pane Chat arms those flags itself through its skill; pass them only for your own scripts.", "STUCK means real unsubmitted composer text; an agent prompt suggestion never counts.", "Dead watch: HEARTBEAT is proof of life only (--quiet drops it). Judge death by a non-zero exit or a WATCH ERROR line, not by silence."];
|
|
1167
1217
|
readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options]", " python -m runpane panes create --repo <selector> --name <name> --tool-command <command> [--agent <codex|claude|cursor>] [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates user-visible Panes (Pane sessions) for feature/PR work in a saved repository and opens a terminal-backed tool tab. Pane creates and owns the worktree/branch for each new Pane.", "", "A long or multi-line prompt is never typed into the shell: on bash, zsh or sh the agent launches with `\"$(cat '<prompt file>')\"` reading a private copy under `<pane-dir>/prompts/<pane-id>/`; on PowerShell, cmd, fish or WSL the prompt is pasted into the agent's composer once it is ready.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --name <name> Pane/session name", " --worktree-name <name> Worktree directory name; defaults to --name", " --branch <name> Exact new branch name (slashes kept); must not exist; defaults to the worktree name", " --base-branch <ref> Ref to branch from; --base is an alias", " --agent <codex|claude|cursor> Built-in terminal template; with --tool-command, the agent it runs", " --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", " --as-file-pointer Send `Read and follow <prompt file>` instead of the prompt", " --prompt-file <path|-> Alias for --initial-input-file", " --from-json <path|-> Read a full request payload", " --timeout-ms <milliseconds> Pane creation timeout", " --wait-ready Wait for terminal readiness before returning", " --ready-timeout-ms <ms> Readiness wait timeout; defaults to 30000", " --concurrency <count> Accepted; creation is currently serialized", " --source <user|agent> Mark mutation source; agent implies background creation", " --no-focus Create in the background without stealing focus", " --focus Explicitly focus the created pane", " --pinned Accepted for compatibility; creation already pins by default", " --no-pinned Create unpinned instead of the default pinned (the UI's favorite/pin star)", " --no-associate Inside a Session orchestrator, do not associate the new pane with that Session", " --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"];
|
|
@@ -1222,6 +1272,12 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1222
1272
|
readonly "lock acquire": readonly ["Usage:", "python -m runpane lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1223
1273
|
readonly "lock release": readonly ["Usage:", "python -m runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1224
1274
|
readonly "lock list": readonly ["Usage:", "python -m runpane lock list [--session <id|name>] [--json] [--pane-dir <path>]", "", "Options:", " --name <name> Lock name: 1-128 letters, digits, \".\", \"_\", or \"-\".", " --ttl <duration> Time to live, such as 90s, 30m, or 2h; a bare number is milliseconds.", " --wait <milliseconds> Wait this long for a held lock to come free (acquire).", " --note <text> What the lock is for; outside a Pane it also names the owner.", " --pane <pane-id> Act for this Pane instead of $PANE_SESSION_ID.", " --panel <panel-id> Act for this panel instead of $PANE_PANEL_ID.", " --force Release a lock another owner holds (release).", " --session <id|name> Named Session whose locks to list or release.", " --json Print JSON output."];
|
|
1275
|
+
readonly "workspace list": readonly ["Usage:", " runpane workspace list [--json] [--pane-dir <path>]", "", "`runpane workspace list` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest workspace list"];
|
|
1276
|
+
readonly "workspace enable": readonly ["Usage:", " runpane workspace enable [--json] [--pane-dir <path>]", "", "`runpane workspace enable` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest workspace enable"];
|
|
1277
|
+
readonly "workspace disable": readonly ["Usage:", " runpane workspace disable [--json] [--pane-dir <path>]", "", "`runpane workspace disable` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest workspace disable"];
|
|
1278
|
+
readonly "workspace read": readonly ["Usage:", " runpane workspace [<machine>] read <path> [--json]", "", "`runpane workspace read` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest workspace read"];
|
|
1279
|
+
readonly "workspace write": readonly ["Usage:", " runpane workspace [<machine>] write <path> [--json]", "", "`runpane workspace write` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest workspace write"];
|
|
1280
|
+
readonly "workspace exec": readonly ["Usage:", " runpane workspace <machine> exec [--cwd <path>] [--timeout-ms <ms>] [--json] -- <command>", "", "`runpane workspace exec` ships in the npm package and the Pane app, not in the Python package.", "Run it with Node instead: npx --yes runpane@latest workspace exec"];
|
|
1225
1281
|
};
|
|
1226
1282
|
};
|
|
1227
1283
|
readonly docs: {
|
|
@@ -1539,9 +1595,60 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
1539
1595
|
readonly type: "string";
|
|
1540
1596
|
};
|
|
1541
1597
|
};
|
|
1598
|
+
readonly workspaces: {
|
|
1599
|
+
readonly $ref: "#/jsonSchemas/workspacesSummary";
|
|
1600
|
+
};
|
|
1542
1601
|
};
|
|
1543
1602
|
readonly additionalProperties: false;
|
|
1544
1603
|
};
|
|
1604
|
+
readonly workspacesSummary: {
|
|
1605
|
+
readonly type: "object";
|
|
1606
|
+
readonly required: readonly ["state", "machine", "otherMachines", "lines"];
|
|
1607
|
+
readonly additionalProperties: false;
|
|
1608
|
+
readonly properties: {
|
|
1609
|
+
readonly state: {
|
|
1610
|
+
readonly enum: readonly ["on", "off"];
|
|
1611
|
+
};
|
|
1612
|
+
readonly machine: {
|
|
1613
|
+
readonly type: readonly ["string", "null"];
|
|
1614
|
+
readonly description: "This machine's Tailscale name.";
|
|
1615
|
+
};
|
|
1616
|
+
readonly reason: {
|
|
1617
|
+
readonly type: "string";
|
|
1618
|
+
readonly description: "Why workspaces are off.";
|
|
1619
|
+
};
|
|
1620
|
+
readonly fix: {
|
|
1621
|
+
readonly type: "string";
|
|
1622
|
+
readonly description: "The one step that turns them on.";
|
|
1623
|
+
};
|
|
1624
|
+
readonly otherMachines: {
|
|
1625
|
+
readonly type: "array";
|
|
1626
|
+
readonly items: {
|
|
1627
|
+
readonly type: "object";
|
|
1628
|
+
readonly required: readonly ["name", "os", "online"];
|
|
1629
|
+
readonly additionalProperties: false;
|
|
1630
|
+
readonly properties: {
|
|
1631
|
+
readonly name: {
|
|
1632
|
+
readonly type: "string";
|
|
1633
|
+
};
|
|
1634
|
+
readonly os: {
|
|
1635
|
+
readonly enum: readonly ["macOS", "Windows", "Linux"];
|
|
1636
|
+
};
|
|
1637
|
+
readonly online: {
|
|
1638
|
+
readonly type: "boolean";
|
|
1639
|
+
};
|
|
1640
|
+
};
|
|
1641
|
+
};
|
|
1642
|
+
};
|
|
1643
|
+
readonly lines: {
|
|
1644
|
+
readonly type: "array";
|
|
1645
|
+
readonly items: {
|
|
1646
|
+
readonly type: "string";
|
|
1647
|
+
};
|
|
1648
|
+
readonly description: "The block printed by help, doctor, and agent-context.";
|
|
1649
|
+
};
|
|
1650
|
+
};
|
|
1651
|
+
};
|
|
1545
1652
|
readonly daemonRepairResult: {
|
|
1546
1653
|
readonly type: "object";
|
|
1547
1654
|
readonly required: readonly ["ok", "changed", "paneDir", "strategy", "launcherPath", "before", "after", "message"];
|
|
@@ -3199,6 +3306,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3199
3306
|
readonly input: {
|
|
3200
3307
|
readonly type: "string";
|
|
3201
3308
|
};
|
|
3309
|
+
readonly source: {
|
|
3310
|
+
readonly type: "string";
|
|
3311
|
+
readonly enum: readonly ["user", "agent"];
|
|
3312
|
+
};
|
|
3202
3313
|
};
|
|
3203
3314
|
readonly additionalProperties: false;
|
|
3204
3315
|
};
|
|
@@ -3277,6 +3388,9 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3277
3388
|
readonly detailCommand: {
|
|
3278
3389
|
readonly type: "string";
|
|
3279
3390
|
};
|
|
3391
|
+
readonly workspaces: {
|
|
3392
|
+
readonly $ref: "#/jsonSchemas/workspacesSummary";
|
|
3393
|
+
};
|
|
3280
3394
|
};
|
|
3281
3395
|
readonly additionalProperties: false;
|
|
3282
3396
|
};
|
|
@@ -3436,6 +3550,10 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
3436
3550
|
readonly asFilePointer: {
|
|
3437
3551
|
readonly type: "boolean";
|
|
3438
3552
|
};
|
|
3553
|
+
readonly source: {
|
|
3554
|
+
readonly type: "string";
|
|
3555
|
+
readonly enum: readonly ["user", "agent"];
|
|
3556
|
+
};
|
|
3439
3557
|
};
|
|
3440
3558
|
readonly additionalProperties: false;
|
|
3441
3559
|
};
|
|
@@ -7142,6 +7260,124 @@ export declare const RUNPANE_CONTRACT: {
|
|
|
7142
7260
|
readonly jsonSchemas: readonly ["lockListResult"];
|
|
7143
7261
|
readonly notes: readonly [];
|
|
7144
7262
|
};
|
|
7263
|
+
readonly "workspace list": {
|
|
7264
|
+
readonly name: "workspace list";
|
|
7265
|
+
readonly summary: "List your machines on Tailscale and whether each has joined workspaces.";
|
|
7266
|
+
readonly details: "Shows this machine's workspace state, then each of your other Mac, Windows, and Linux machines with its OS, online state, and shell. Only machines signed in to your own Tailscale login appear.";
|
|
7267
|
+
readonly requiresPaneDaemon: false;
|
|
7268
|
+
readonly mutates: false;
|
|
7269
|
+
readonly arguments: readonly [{
|
|
7270
|
+
readonly name: "--json";
|
|
7271
|
+
readonly required: false;
|
|
7272
|
+
readonly description: "Print machine-readable output.";
|
|
7273
|
+
}];
|
|
7274
|
+
readonly examples: readonly ["runpane workspace list --json"];
|
|
7275
|
+
readonly notes: readonly ["A machine has joined when Pane runs there with workspaces on; it answers on https://<machine>.<tailnet>.ts.net:8443."];
|
|
7276
|
+
};
|
|
7277
|
+
readonly "workspace enable": {
|
|
7278
|
+
readonly name: "workspace enable";
|
|
7279
|
+
readonly summary: "Put this machine's Pane on your tailnet for runpane workspace (the default when Tailscale is signed in).";
|
|
7280
|
+
readonly details: "Serves this Pane's daemon with tailscale serve on port 8443 in HTTP proxy mode. Only your own Tailscale login is accepted; nothing is opened to the internet.";
|
|
7281
|
+
readonly requiresPaneDaemon: true;
|
|
7282
|
+
readonly mutates: true;
|
|
7283
|
+
readonly arguments: readonly [{
|
|
7284
|
+
readonly name: "--json";
|
|
7285
|
+
readonly required: false;
|
|
7286
|
+
readonly description: "Print machine-readable output.";
|
|
7287
|
+
}];
|
|
7288
|
+
readonly examples: readonly ["runpane workspace enable"];
|
|
7289
|
+
readonly notes: readonly ["Workspaces are on by default when Tailscale is installed and signed in; this undoes runpane workspace disable."];
|
|
7290
|
+
};
|
|
7291
|
+
readonly "workspace disable": {
|
|
7292
|
+
readonly name: "workspace disable";
|
|
7293
|
+
readonly summary: "Take this machine off runpane workspace and remove its tailscale serve handler on port 8443.";
|
|
7294
|
+
readonly details: "Turns workspaces off for this machine until runpane workspace enable. The remote daemon on port 443 and pairing codes are unaffected.";
|
|
7295
|
+
readonly requiresPaneDaemon: true;
|
|
7296
|
+
readonly mutates: true;
|
|
7297
|
+
readonly arguments: readonly [{
|
|
7298
|
+
readonly name: "--json";
|
|
7299
|
+
readonly required: false;
|
|
7300
|
+
readonly description: "Print machine-readable output.";
|
|
7301
|
+
}];
|
|
7302
|
+
readonly examples: readonly ["runpane workspace disable"];
|
|
7303
|
+
readonly notes: readonly ["Other machines can no longer reach this one; this machine can still reach theirs."];
|
|
7304
|
+
};
|
|
7305
|
+
readonly "workspace read": {
|
|
7306
|
+
readonly name: "workspace read";
|
|
7307
|
+
readonly summary: "Print a file from one of your machines; any path form works (C:\\..., /mnt/c/..., /home/..., ~/...).";
|
|
7308
|
+
readonly details: "Reads the same way on every OS. On Windows, /mnt/c/... reaches C:\\... and WSL paths such as /home/<user>/... are read through \\\\wsl.localhost\\<distro>\\. Directories list their entries.";
|
|
7309
|
+
readonly requiresPaneDaemon: false;
|
|
7310
|
+
readonly mutates: false;
|
|
7311
|
+
readonly arguments: readonly [{
|
|
7312
|
+
readonly name: "<machine>";
|
|
7313
|
+
readonly required: false;
|
|
7314
|
+
readonly description: "Tailscale machine name, unique prefix, MagicDNS name, or Tailscale IP. Omit it to route a path that cannot exist here to the one joined machine it fits.";
|
|
7315
|
+
}, {
|
|
7316
|
+
readonly name: "<path>";
|
|
7317
|
+
readonly required: true;
|
|
7318
|
+
readonly description: "Absolute path in any form; ~ is that machine's home.";
|
|
7319
|
+
}, {
|
|
7320
|
+
readonly name: "--json";
|
|
7321
|
+
readonly required: false;
|
|
7322
|
+
readonly description: "Print machine-readable output.";
|
|
7323
|
+
}];
|
|
7324
|
+
readonly examples: readonly ["runpane workspace parsa-devbox read 'C:\\Users\\me\\.pane\\plans\\topic\\index.html'", "runpane workspace read /mnt/c/Users/me/notes.md"];
|
|
7325
|
+
readonly notes: readonly ["--json returns content with encoding utf8 or base64."];
|
|
7326
|
+
};
|
|
7327
|
+
readonly "workspace write": {
|
|
7328
|
+
readonly name: "workspace write";
|
|
7329
|
+
readonly summary: "Write stdin to a file on one of your machines, creating parent folders.";
|
|
7330
|
+
readonly details: "Takes the same path forms as workspace read. Content comes from stdin and replaces the file.";
|
|
7331
|
+
readonly requiresPaneDaemon: false;
|
|
7332
|
+
readonly mutates: true;
|
|
7333
|
+
readonly arguments: readonly [{
|
|
7334
|
+
readonly name: "<machine>";
|
|
7335
|
+
readonly required: false;
|
|
7336
|
+
readonly description: "Tailscale machine name, unique prefix, MagicDNS name, or Tailscale IP. Omit it to route a path that cannot exist here to the one joined machine it fits.";
|
|
7337
|
+
}, {
|
|
7338
|
+
readonly name: "<path>";
|
|
7339
|
+
readonly required: true;
|
|
7340
|
+
readonly description: "Absolute path in any form.";
|
|
7341
|
+
}, {
|
|
7342
|
+
readonly name: "--json";
|
|
7343
|
+
readonly required: false;
|
|
7344
|
+
readonly description: "Print machine-readable output.";
|
|
7345
|
+
}];
|
|
7346
|
+
readonly examples: readonly ["echo done | runpane workspace parsa-devbox write '~/notes/status.md'"];
|
|
7347
|
+
readonly notes: readonly ["Binary stdin is sent as base64 and written byte for byte."];
|
|
7348
|
+
};
|
|
7349
|
+
readonly "workspace exec": {
|
|
7350
|
+
readonly name: "workspace exec";
|
|
7351
|
+
readonly summary: "Run a command in another machine's shell and return stdout, stderr, the exit code, OS, and shell.";
|
|
7352
|
+
readonly details: "Runs in the shell Pane uses for terminals on that machine (PowerShell or Git Bash on Windows, the login shell elsewhere). The exit code becomes runpane's exit code. Without <machine>, a --cwd that cannot exist here picks the machine.";
|
|
7353
|
+
readonly requiresPaneDaemon: false;
|
|
7354
|
+
readonly mutates: true;
|
|
7355
|
+
readonly arguments: readonly [{
|
|
7356
|
+
readonly name: "<machine>";
|
|
7357
|
+
readonly required: false;
|
|
7358
|
+
readonly description: "Tailscale machine name, unique prefix, MagicDNS name, or Tailscale IP. Omit it to route a path that cannot exist here to the one joined machine it fits.";
|
|
7359
|
+
}, {
|
|
7360
|
+
readonly name: "--cwd";
|
|
7361
|
+
readonly value: "<path>";
|
|
7362
|
+
readonly required: false;
|
|
7363
|
+
readonly description: "Working directory on that machine, in any path form; defaults to its home.";
|
|
7364
|
+
}, {
|
|
7365
|
+
readonly name: "--timeout-ms";
|
|
7366
|
+
readonly value: "<milliseconds>";
|
|
7367
|
+
readonly required: false;
|
|
7368
|
+
readonly description: "Stop the command after this long (default 120000, at most 540000).";
|
|
7369
|
+
}, {
|
|
7370
|
+
readonly name: "--json";
|
|
7371
|
+
readonly required: false;
|
|
7372
|
+
readonly description: "Print machine-readable output.";
|
|
7373
|
+
}, {
|
|
7374
|
+
readonly name: "-- <command>";
|
|
7375
|
+
readonly required: true;
|
|
7376
|
+
readonly description: "The command line, run by that machine's shell.";
|
|
7377
|
+
}];
|
|
7378
|
+
readonly examples: readonly ["runpane workspace parsa-devbox exec --json -- git -C C:\\src\\app status --short"];
|
|
7379
|
+
readonly notes: readonly ["This is SSH-level power: a local agent's sandbox and permission prompts see only runpane workspace exec, not what runs on the other machine.", "Pass the command as one quoted string; several words after -- are joined with spaces, so their own quoting is lost."];
|
|
7380
|
+
};
|
|
7145
7381
|
};
|
|
7146
7382
|
readonly managedBlock: readonly ["## Pane", "", "This repository is used with [Pane](https://runpane.com). Drive it with the CLI or the `pane` MCP server.", "", "CLI: `npm i -g runpane` (or `npx --yes runpane@latest`), then `runpane doctor --json`. Full command reference: `runpane agent-context --json`.", "", "MCP: packaged Pane registers a stdio server named `pane` with Claude Code, Codex, and Cursor. Check the connection with `claude mcp list`, `codex mcp list`, or `agent mcp list`. Cursor may ask you to enable `pane` with `agent mcp enable pane`. If tools are missing, add it in the agent's MCP settings: Claude Code `claude mcp add --scope user pane -- npx --yes runpane@latest mcp`; Codex (`~/.codex/config.toml`) table `[mcp_servers.pane]` with `command = \"npx\"` and `args = [\"--yes\", \"runpane@latest\", \"mcp\"]`; Cursor (`~/.cursor/mcp.json`) uses `mcpServers.pane` with the same `npx` command and args; any other stdio client uses them too."];
|
|
7147
7383
|
};
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsuanB,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"}
|