runpane 2.3.7 → 2.3.9

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.
@@ -68,8 +68,14 @@ export declare const RUNPANE_CONTRACT: {
68
68
  readonly usage: readonly ["runpane version", "runpane --version"];
69
69
  }, {
70
70
  readonly name: "doctor";
71
- readonly summary: "Run platform, release, installed Pane, and remote setup diagnostics.";
72
- readonly usage: readonly ["runpane doctor"];
71
+ readonly summary: "Run platform, release, installed Pane, daemon reachability, and remote setup diagnostics.";
72
+ readonly usage: readonly ["runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]"];
73
+ readonly jsonSchemas: readonly ["doctorResult"];
74
+ }, {
75
+ readonly name: "agents doctor";
76
+ readonly summary: "Diagnose whether a built-in agent command is available in a Pane repository environment.";
77
+ readonly usage: readonly ["runpane agents doctor --agent <codex|claude> [--repo <selector>] [--json]"];
78
+ readonly jsonSchemas: readonly ["agentDoctorResult"];
73
79
  }, {
74
80
  readonly name: "agent-context";
75
81
  readonly summary: "Print token-efficient Pane command context for coding agents.";
@@ -107,12 +113,28 @@ export declare const RUNPANE_CONTRACT: {
107
113
  readonly summary: "Read recent terminal output from a panel.";
108
114
  readonly usage: readonly ["runpane panels output --panel <panel-id> [--limit <count>] [--json]"];
109
115
  readonly jsonSchemas: readonly ["panelOutputResult"];
116
+ }, {
117
+ readonly name: "panels screen";
118
+ readonly summary: "Read a compact current-screen view from a terminal panel.";
119
+ readonly usage: readonly ["runpane panels screen --panel <panel-id> [--limit <count>] [--json]"];
120
+ readonly jsonSchemas: readonly ["panelScreenResult"];
110
121
  }, {
111
122
  readonly name: "panels input";
112
123
  readonly summary: "Send input bytes to a terminal panel.";
113
124
  readonly usage: readonly ["runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]"];
114
125
  readonly mutates: true;
115
126
  readonly jsonSchemas: readonly ["panelInputRequest", "panelInputResult"];
127
+ }, {
128
+ readonly name: "panels submit";
129
+ readonly summary: "Send text to a terminal panel and append a terminal Enter byte.";
130
+ readonly usage: readonly ["runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]"];
131
+ readonly mutates: true;
132
+ readonly jsonSchemas: readonly ["panelSubmitRequest", "panelSubmitResult"];
133
+ }, {
134
+ readonly name: "panels wait";
135
+ readonly summary: "Wait for a terminal panel to initialize, become ready/idle, or contain text.";
136
+ readonly usage: readonly ["runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--contains <text>] [--timeout-ms <ms>] [--interval-ms <ms>] [--json]"];
137
+ readonly jsonSchemas: readonly ["panelWaitResult"];
116
138
  }];
117
139
  readonly flags: {
118
140
  readonly wrapper: readonly [{
@@ -239,10 +261,30 @@ export declare const RUNPANE_CONTRACT: {
239
261
  readonly name: "--timeout-ms";
240
262
  readonly value: "<milliseconds>";
241
263
  readonly description: "Maximum time to wait for each pane creation job.";
264
+ }, {
265
+ readonly name: "--ready-timeout-ms";
266
+ readonly value: "<milliseconds>";
267
+ readonly description: "Readiness wait timeout for panes create --wait-ready.";
268
+ }, {
269
+ readonly name: "--concurrency";
270
+ readonly value: "<count>";
271
+ readonly description: "Accepted for forward compatibility. Pane currently serializes multi-pane session creation so queued jobs do not time out before starting.";
242
272
  }, {
243
273
  readonly name: "--limit";
244
274
  readonly value: "<count>";
245
275
  readonly description: "Maximum recent output lines or records to read.";
276
+ }, {
277
+ readonly name: "--for";
278
+ readonly value: "<initialized|ready|idle|text>";
279
+ readonly description: "Panel wait condition.";
280
+ }, {
281
+ readonly name: "--contains";
282
+ readonly value: "<text>";
283
+ readonly description: "Text to wait for with panels wait --for text.";
284
+ }, {
285
+ readonly name: "--interval-ms";
286
+ readonly value: "<milliseconds>";
287
+ readonly description: "Polling interval for panels wait.";
246
288
  }, {
247
289
  readonly name: "--text";
248
290
  readonly value: "<text>";
@@ -255,40 +297,51 @@ export declare const RUNPANE_CONTRACT: {
255
297
  readonly localBoolean: readonly [{
256
298
  readonly name: "--json";
257
299
  readonly description: "Print machine-readable JSON output.";
300
+ }, {
301
+ readonly name: "--wait-ready";
302
+ readonly description: "Wait for created terminal panels to be ready before returning.";
258
303
  }];
259
304
  };
260
305
  readonly help: {
261
306
  readonly npm: {
262
- readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane agent-context [--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>", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> --input-file <path|-> --yes", " 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", " pipx run runpane", "", "Run \"runpane agent-context\" when an agent needs Pane command context.", "Run \"runpane help panes create\" for pane orchestration options."];
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."];
263
308
  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>"];
264
309
  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"];
265
310
  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"];
266
311
  readonly version: readonly ["Usage:", " runpane version", " runpane --version"];
267
- readonly doctor: readonly ["Usage:", " runpane doctor [--pane-path <path>] [--format <format>] [--verbose]"];
312
+ readonly doctor: readonly ["Usage:", " runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", "", "Checks wrapper/runtime details, release metadata, installed Pane detection, and Pane daemon reachability.", "", "Options:", " --json Print a machine-readable environment report", " --pane-dir <path> Connect to a specific Pane data directory", " --pane-path <path> Inspect a specific Pane executable", " --format <format> Release artifact format to inspect", " --verbose Print extra diagnostics", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json"];
268
313
  readonly "repos list": readonly ["Usage:", " runpane repos list [--json] [--pane-dir <path>]", "", "Lists repositories saved in the running Pane app.", "", "Options:", " --json Print machine-readable output", " --pane-dir <path> Connect to a specific Pane data directory"];
269
314
  readonly "repos add": readonly ["Usage:", " runpane repos add --path <path> [--name <name>] [--json] [--yes]", "", "Registers an existing git repository with the running Pane app.", "", "Options:", " --path <path> Existing git repository path", " --name <name> Saved repository name; defaults to the directory name", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without adding the repo", " --yes Skip confirmation for mutating commands"];
270
315
  readonly "panes list": readonly ["Usage:", " runpane panes list [--repo <selector>] [--json]", "", "Lists Pane sessions. Pass --repo to limit results to one saved repository.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
271
- readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates Pane sessions in a saved repository and opens a terminal-backed tool tab.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --name <name> Pane/session name", " --worktree-name <name> Worktree name; defaults to --name", " --base-branch <branch> Base branch for the worktree", " --agent <codex|claude> Built-in terminal template", " --tool-command <command> Custom terminal command", " --title <title> Terminal tab title", " --initial-input <text> Text sent after the command is ready", " --prompt <text> Alias for --initial-input", " --initial-input-file <path|-> Read initial input from a file or stdin", " --from-json <path|-> Read a full request payload", " --timeout-ms <milliseconds> Pane creation timeout", " --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"];
316
+ readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates Pane sessions in a saved repository and opens a terminal-backed tool tab.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --name <name> Pane/session name", " --worktree-name <name> Worktree name; defaults to --name", " --base-branch <branch> Base branch for the worktree", " --agent <codex|claude> Built-in terminal template", " --tool-command <command> Custom terminal command", " --title <title> Terminal tab title", " --initial-input <text> Text sent after the command is ready", " --prompt <text> Alias for --initial-input", " --initial-input-file <path|-> Read initial input from a file or stdin", " --from-json <path|-> Read a full request payload", " --timeout-ms <milliseconds> Pane creation timeout", " --wait-ready Wait for terminal readiness before returning", " --ready-timeout-ms <ms> Readiness wait timeout; defaults to 30000", " --concurrency <count> Accepted; creation is currently serialized", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without creating panes", " --yes Skip confirmation for mutating commands"];
272
317
  readonly "panels list": readonly ["Usage:", " runpane panels list --pane <pane-id> [--json]", "", "Lists tool panels in a Pane session.", "", "Options:", " --pane <pane-id> Pane/session id", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
273
318
  readonly "panels output": readonly ["Usage:", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", "", "Reads bounded recent terminal output from a panel.", "", "Options:", " --panel <panel-id> Tool panel id", " --limit <count> Maximum recent output lines or records to read", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
274
319
  readonly "panels input": readonly ["Usage:", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", "", "Sends exact input bytes to a terminal panel. Include a newline in the input when you mean Enter.", "", "Options:", " --panel <panel-id> Terminal panel id", " --text <text> Text bytes to send", " --input-file <path|-> Read input from a file or stdin", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --yes Skip confirmation for mutating commands"];
275
320
  readonly "agent-context": readonly ["Usage:", " runpane agent-context [--json]", " runpane agent-context --command <command> [--json]", "", "Prints Pane command context for coding agents without requiring a running Pane app.", "", "Options:", " --command <command> Print the full definition for one runpane command", " --json Print machine-readable output", "", "Examples:", " runpane agent-context", " runpane agent-context --json", " runpane agent-context --command \"panes create\"", " runpane agent-context --command \"panes create\" --json"];
321
+ readonly "agents doctor": readonly ["Usage:", " runpane agents doctor --agent <codex|claude> [--repo <selector>] [--json]", "", "Diagnoses whether Codex or Claude is available in the same repository environment Pane will use.", "", "Options:", " --agent <codex|claude> Built-in agent command to diagnose", " --repo <selector> active, id, exact path, or saved repository name; defaults to active", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
322
+ 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
+ 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
+ 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"];
276
325
  };
277
326
  readonly pip: {
278
- readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane agent-context [--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>", " runpane panels list --pane <pane-id> [--json]", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", " runpane panels input --panel <panel-id> --input-file <path|-> --yes", " 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", "", "Run \"runpane agent-context\" when an agent needs Pane command context.", "Run \"runpane help panes create\" for pane orchestration options."];
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."];
279
328
  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>"];
280
329
  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"];
281
330
  readonly update: readonly ["Usage:", " runpane update [--version <latest|vX.Y.Z>] [--dry-run] [--yes]"];
282
331
  readonly version: readonly ["Usage:", " runpane version", " runpane --version"];
283
- readonly doctor: readonly ["Usage:", " runpane doctor [--pane-path <path>] [--format <format>] [--verbose]"];
332
+ readonly doctor: readonly ["Usage:", " runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]", "", "Checks wrapper/runtime details, release metadata, installed Pane detection, and Pane daemon reachability.", "", "Options:", " --json", " --pane-dir <path>", " --pane-path <path>", " --format <format>", " --verbose", "", "Agent discovery:", " runpane doctor --json", " runpane agent-context --json"];
284
333
  readonly "repos list": readonly ["Usage:", " runpane repos list [--json] [--pane-dir <path>]", "", "Lists repositories saved in the running Pane app.", "", "Options:", " --json", " --pane-dir <path>"];
285
334
  readonly "repos add": readonly ["Usage:", " runpane repos add --path <path> [--name <name>] [--json] [--yes]", "", "Registers an existing git repository with the running Pane app.", "", "Options:", " --path <path>", " --name <name>", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
286
335
  readonly "panes list": readonly ["Usage:", " runpane panes list [--repo <selector>] [--json]", "", "Lists Pane sessions. Pass --repo to limit results to one saved repository.", "", "Options:", " --repo <selector>", " --pane-dir <path>", " --json"];
287
- readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates Pane sessions in a saved repository and opens a terminal-backed tool tab.", "", "Options:", " --repo <selector>", " --name <name>", " --worktree-name <name>", " --base-branch <branch>", " --agent <codex|claude>", " --tool-command <command>", " --title <title>", " --initial-input <text>", " --prompt <text>", " --initial-input-file <path|->", " --from-json <path|->", " --timeout-ms <milliseconds>", " --pane-dir <path>", " --json", " --dry-run", " --yes"];
336
+ readonly "panes create": readonly ["Usage:", " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]", " runpane panes create --from-json <path|-> [--yes] [--json]", "", "Creates Pane sessions in a saved repository and opens a terminal-backed tool tab.", "", "Options:", " --repo <selector> active, id, exact path, or saved repository name", " --name <name> Pane/session name", " --worktree-name <name> Worktree name; defaults to --name", " --base-branch <branch> Base branch for the worktree", " --agent <codex|claude> Built-in terminal template", " --tool-command <command> Custom terminal command", " --title <title> Terminal tab title", " --initial-input <text> Text sent after the command is ready", " --prompt <text> Alias for --initial-input", " --initial-input-file <path|-> Read initial input from a file or stdin", " --from-json <path|-> Read a full request payload", " --timeout-ms <milliseconds> Pane creation timeout", " --wait-ready Wait for terminal readiness before returning", " --ready-timeout-ms <ms> Readiness wait timeout; defaults to 30000", " --concurrency <count> Accepted; creation is currently serialized", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output", " --dry-run Validate and preview without creating panes", " --yes Skip confirmation for mutating commands"];
288
337
  readonly "panels list": readonly ["Usage:", " runpane panels list --pane <pane-id> [--json]", "", "Lists tool panels in a Pane session.", "", "Options:", " --pane <pane-id>", " --pane-dir <path>", " --json"];
289
338
  readonly "panels output": readonly ["Usage:", " runpane panels output --panel <panel-id> [--limit <count>] [--json]", "", "Reads recent terminal output records from a panel.", "", "Options:", " --panel <panel-id>", " --limit <count>", " --pane-dir <path>", " --json"];
290
339
  readonly "panels input": readonly ["Usage:", " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]", "", "Sends exact input bytes to a terminal panel. Include a newline in the input when you mean Enter.", "", "Options:", " --panel <panel-id>", " --text <text>", " --input-file <path|->", " --pane-dir <path>", " --json", " --yes"];
291
340
  readonly "agent-context": readonly ["Usage:", " runpane agent-context [--json]", " runpane agent-context --command <command> [--json]", "", "Prints Pane command context for coding agents without requiring a running Pane app.", "", "Options:", " --command <command>", " --json", "", "Examples:", " runpane agent-context", " runpane agent-context --json", " runpane agent-context --command \"panes create\"", " runpane agent-context --command \"panes create\" --json"];
341
+ readonly "agents doctor": readonly ["Usage:", " runpane agents doctor --agent <codex|claude> [--repo <selector>] [--json]", "", "Diagnoses whether Codex or Claude is available in the same repository environment Pane will use.", "", "Options:", " --agent <codex|claude> Built-in agent command to diagnose", " --repo <selector> active, id, exact path, or saved repository name; defaults to active", " --pane-dir <path> Connect to a specific Pane data directory", " --json Print machine-readable output"];
342
+ 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
+ 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
+ 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"];
292
345
  };
293
346
  };
294
347
  readonly docs: {
@@ -297,17 +350,17 @@ export declare const RUNPANE_CONTRACT: {
297
350
  readonly npmCommands: readonly ["npx --yes runpane@latest", "npx --yes runpane@latest setup", "npx --yes runpane@latest install client", "npx --yes runpane@latest install daemon --label \"My Server\"", "pnpm dlx runpane@latest", "pnpm dlx runpane@latest install daemon --label \"My Server\"", "npm i -g runpane && runpane", "npm i -g runpane && runpane setup", "npm i -g runpane && runpane install daemon --label \"My Server\"", "pnpm add -g runpane && runpane", "pnpm add -g runpane && runpane setup", "pnpm add -g runpane && runpane install daemon --label \"My Server\"", "yarn dlx runpane@latest install daemon --label \"My Server\"", "bunx runpane@latest install daemon --label \"My Server\""];
298
351
  readonly pythonCommands: readonly ["pipx run runpane", "pipx run runpane setup", "python -m pip install runpane", "runpane", "runpane setup", "python -m runpane setup", "runpane install daemon --label \"My Server\"", "pipx install runpane", "runpane", "runpane setup", "pipx run runpane install daemon --label \"My Server\"", "uvx runpane@latest", "uvx runpane@latest setup", "uvx runpane@latest install daemon --label \"My Server\"", "python -m runpane install daemon --label \"My Server\""];
299
352
  readonly packageManagerNotes: readonly ["Use `pnpm dlx` for one-shot pnpm execution and `pnpm add -g` for persistent CLI installation.", "Do not document `pnpm install runpane` as the public CLI install path."];
300
- readonly commandUsages: readonly ["runpane", "runpane setup", "runpane install", "runpane install client", "runpane install daemon", "runpane update", "runpane version", "runpane doctor", "runpane agent-context", "runpane agent-context --command \"panes create\" --json", "runpane repos list --json", "runpane repos add --path /path/to/repo --name Pane --yes --json", "runpane panes list --repo active --json", "runpane panes create --repo active --name issue-252 --agent codex --prompt \"Kick off the discussion skill for issue 252\" --yes", "runpane panes create --from-json panes.json --yes --json", "runpane panels list --pane <pane-id> --json", "runpane panels output --panel <panel-id> --limit 200 --json", "printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes --json", "runpane help", "runpane <command> --help"];
301
- readonly commandDescriptions: readonly ["`runpane` with no arguments and `runpane setup` open an interactive wizard when stdin and stdout are TTYs. In non-interactive shells or CI, both forms must print help and exit successfully instead of waiting for input.", "`runpane install` is an alias for `runpane install client`.", "`runpane install client` downloads the selected Pane desktop artifact and installs, opens, or launches it for the current platform.", "`runpane install daemon` downloads or installs Pane, resolves a stable Pane executable path, and spawns `<pane executable> --remote-setup <forwarded remote setup args>`.", "The wrapper must stream Pane stdout/stderr without reformatting because `pane --remote-setup` prints the one-time `pane-remote://...` connection code.", "`runpane update` uses the same release resolution and installer path as `install client`.", "`runpane version` prints the wrapper package version, the installed Pane version when detectable, and the latest GitHub release version when reachable.", "`runpane doctor` checks platform support, release metadata reachability, download URL selection, installed Pane detection, and remote-daemon hints.", "`runpane agent-context` prints a brief, token-efficient command schema for coding agents without connecting to the Pane daemon.", "`runpane agent-context --command \"panes create\"` prints the detailed definition for one command. Add `--json` for machine-readable output.", "`runpane repos list` connects to the running local Pane daemon and prints saved repository records.", "`runpane repos add` registers an existing git repository with the running local Pane daemon. It does not create directories or initialize git repositories by default.", "`runpane panes list` lists Pane sessions, optionally scoped to one saved repository.", "`runpane panes create` connects to the running local Pane daemon, resolves the requested repository, creates Pane sessions, opens terminal-backed tool tabs, and optionally sends initial input to the started tool.", "`runpane panels list` lists tool panels inside one Pane session.", "`runpane panels output` reads bounded recent terminal output from one panel and strips common terminal control noise for agent use.", "`runpane panels input` sends exact input bytes to one terminal panel. Prefer `--input-file` for newlines, Ctrl-C, quotes, or shell-sensitive text.", "`runpane panes create --prompt` is an alias for `--initial-input`; request JSON and daemon payloads should use the canonical `initialInput` field.", "When running from WSL while Pane is installed on Windows, the Linux wrapper may look for a missing `/tmp/pane-daemon.../daemon.sock` or resolve to a Windows shim such as Volta. In that case invoke the Windows wrapper through PowerShell from a Windows cwd, for example `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane repos list --json'`."];
353
+ readonly commandUsages: readonly ["runpane", "runpane setup", "runpane install", "runpane install client", "runpane install daemon", "runpane update", "runpane version", "runpane doctor", "runpane doctor --json", "runpane agent-context", "runpane agent-context --command \"panes create\" --json", "runpane repos list --json", "runpane repos add --path /path/to/repo --name Pane --yes --json", "runpane panes list --repo active --json", "runpane panes create --repo active --name issue-252 --agent codex --prompt \"Kick off the discussion skill for issue 252\" --yes", "runpane panes create --from-json panes.json --yes --json", "runpane panels list --pane <pane-id> --json", "runpane panels output --panel <panel-id> --limit 200 --json", "printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes --json", "runpane help", "runpane <command> --help"];
354
+ readonly commandDescriptions: readonly ["`runpane` with no arguments and `runpane setup` open an interactive wizard when stdin and stdout are TTYs. In non-interactive shells or CI, both forms must print help, common commands, and agent discovery hints, then exit successfully instead of waiting for input.", "`runpane install` is an alias for `runpane install client`.", "`runpane install client` downloads the selected Pane desktop artifact and installs, opens, or launches it for the current platform.", "`runpane install daemon` downloads or installs Pane, resolves a stable Pane executable path, and spawns `<pane executable> --remote-setup <forwarded remote setup args>`.", "The wrapper must stream Pane stdout/stderr without reformatting because `pane --remote-setup` prints the one-time `pane-remote://...` connection code.", "`runpane update` uses the same release resolution and installer path as `install client`.", "`runpane version` prints the wrapper package version, the installed Pane version when detectable, and the latest GitHub release version when reachable.", "`runpane doctor` checks platform support, release metadata reachability, download URL selection, installed Pane detection, daemon reachability, and remote-daemon hints. Add `--json` for a machine-readable report that agents should run before mutating Pane state.", "`runpane agent-context` prints a brief, token-efficient command schema for coding agents without connecting to the Pane daemon.", "`runpane agent-context --command \"panes create\"` prints the detailed definition for one command. Add `--json` for machine-readable output.", "`runpane repos list` connects to the running local Pane daemon and prints saved repository records.", "`runpane repos add` registers an existing git repository with the running local Pane daemon. It does not create directories or initialize git repositories by default.", "`runpane panes list` lists Pane sessions, optionally scoped to one saved repository.", "`runpane panes create` connects to the running local Pane daemon, resolves the requested repository, creates Pane sessions, opens terminal-backed tool tabs, and optionally sends initial input to the started tool.", "`runpane panels list` lists tool panels inside one Pane session.", "`runpane panels output` reads bounded recent terminal output from one panel and strips common terminal control noise for agent use.", "`runpane panels input` sends exact input bytes to one terminal panel. Prefer `--input-file` for newlines, Ctrl-C, quotes, or shell-sensitive text.", "`runpane panes create --prompt` is an alias for `--initial-input`; request JSON and daemon payloads should use the canonical `initialInput` field.", "When running from WSL while Pane is installed on Windows, the Linux wrapper may look for a missing `/tmp/pane-daemon.../daemon.sock` or resolve to a Windows shim such as Volta. In that case invoke the Windows wrapper through PowerShell from a Windows cwd, for example `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane repos list --json'`."];
302
355
  readonly wrapperFlagNote: "The top-level `runpane --version` form prints the wrapper version. The install subcommand form `runpane install --version vX.Y.Z` selects a Pane release.";
303
- readonly localControlFlagNote: "`runpane repos list`, `runpane panes list`, `runpane panes create`, and `runpane panels ...` commands use the local framed daemon socket/pipe for a running Pane app. `--pane-dir` points the wrapper at a non-default Pane data directory, such as `PANE_DIR=~/.pane_test` in development. `runpane agent-context` is local/offline and can be used before Pane is running. From WSL, if the user runs Windows Pane, call the Windows wrapper through `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane ...'` so the command can reach the Windows named-pipe daemon and avoid UNC cwd issues.";
356
+ readonly localControlFlagNote: "`runpane doctor --json`, `runpane repos list`, `runpane panes list`, `runpane panes create`, and `runpane panels ...` commands use or describe the local framed daemon socket/pipe for a running Pane app. `--pane-dir` points the wrapper at a non-default Pane data directory, such as `PANE_DIR=~/.pane_test` in development. `runpane agent-context` is local/offline and can be used before Pane is running. From WSL, if the user runs Windows Pane, call the Windows wrapper through `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane ...'` so the command can reach the Windows named-pipe daemon and avoid UNC cwd issues.";
304
357
  readonly daemonFlagNote: "Unknown daemon flags should be forwarded rather than dropped so newer Pane versions can extend `--remote-setup` without requiring an immediate wrapper release. Unknown flags for non-daemon commands should fail clearly.";
305
358
  readonly downloadAttribution: readonly ["The npm package uses `source=npm` for all npm-registry consumers, including `npx`, `pnpm dlx`, `yarn dlx`, `bunx`, and global npm/pnpm installs.", "The PyPI package uses `source=pip` for all Python consumers, including pip, pipx, uvx, and `python -m runpane`.", "Wrappers should prefer `https://runpane.com/api/download?platform=<platform>&arch=<arch>&format=<format>&version=<version>&channel=<channel>&source=<npm|pip>`.", "If the website route cannot satisfy the download, wrappers may fall back to the matching GitHub release asset and print a warning that website attribution may be incomplete for that run.", "Wrappers also emit best-effort lifecycle telemetry to `https://runpane.com/api/runpane/telemetry` for command start/success/failure, download request/success/failure, and GitHub fallback usage.", "Wrapper telemetry uses a persisted anonymous `install_id` in the form `install_<uuid>` and PostHog `distinct_id = install:<install_id>` so distinct wrapper users can be counted with `count(DISTINCT properties.install_id)`.", "Wrapper telemetry must be disabled in CI and when `RUNPANE_TELEMETRY_DISABLED` is set, and must not include raw paths, labels, prompts, raw error text, or environment values."];
306
359
  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."];
307
360
  };
308
361
  readonly testFixtures: {
309
- 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 ["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"]];
310
- 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"];
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"]];
363
+ 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:"];
311
364
  readonly npmHelpIncludes: readonly ["pnpm dlx runpane@latest", "npx --yes runpane@latest"];
312
365
  readonly pipHelpIncludes: readonly ["pipx run runpane", "python -m pip install runpane && python -m runpane setup"];
313
366
  readonly installHelpIncludes: readonly ["--version <latest|vX.Y.Z>", "--format <auto|appimage|deb|dmg|zip|exe>", "--download-dir <path>", "--pane-path <path>", "--label <name>", "--prefer-tunnel <tailscale|ssh|manual|auto>", "--repo-ref <ref>"];
@@ -336,6 +389,130 @@ export declare const RUNPANE_CONTRACT: {
336
389
  };
337
390
  readonly additionalProperties: false;
338
391
  };
392
+ readonly doctorResult: {
393
+ readonly type: "object";
394
+ readonly required: readonly ["ok", "source", "wrapper", "release", "installedPane", "daemon", "nextCommands"];
395
+ readonly properties: {
396
+ readonly ok: {
397
+ readonly type: "boolean";
398
+ };
399
+ readonly source: {
400
+ readonly enum: readonly ["npm", "pip"];
401
+ };
402
+ readonly wrapper: {
403
+ readonly type: "object";
404
+ readonly required: readonly ["runtime", "version", "paneDir", "endpoint"];
405
+ readonly properties: {
406
+ readonly runtime: {
407
+ readonly enum: readonly ["node", "python"];
408
+ };
409
+ readonly version: {
410
+ readonly type: "string";
411
+ };
412
+ readonly paneDir: {
413
+ readonly type: "string";
414
+ };
415
+ readonly endpoint: {
416
+ readonly type: "object";
417
+ readonly required: readonly ["transport", "path"];
418
+ readonly properties: {
419
+ readonly transport: {
420
+ readonly enum: readonly ["pipe", "unix"];
421
+ };
422
+ readonly path: {
423
+ readonly type: "string";
424
+ };
425
+ };
426
+ readonly additionalProperties: false;
427
+ };
428
+ };
429
+ readonly additionalProperties: false;
430
+ };
431
+ readonly platform: {
432
+ readonly type: "object";
433
+ readonly properties: {
434
+ readonly os: {
435
+ readonly type: "string";
436
+ };
437
+ readonly arch: {
438
+ readonly type: "string";
439
+ };
440
+ readonly error: {
441
+ readonly type: "string";
442
+ };
443
+ };
444
+ readonly additionalProperties: true;
445
+ };
446
+ readonly release: {
447
+ readonly type: "object";
448
+ readonly required: readonly ["ok"];
449
+ readonly properties: {
450
+ readonly ok: {
451
+ readonly type: "boolean";
452
+ };
453
+ readonly error: {
454
+ readonly type: "string";
455
+ };
456
+ };
457
+ readonly additionalProperties: true;
458
+ };
459
+ readonly installedPane: {
460
+ readonly type: "object";
461
+ readonly required: readonly ["found"];
462
+ readonly properties: {
463
+ readonly found: {
464
+ readonly type: "boolean";
465
+ };
466
+ readonly path: {
467
+ readonly type: "string";
468
+ };
469
+ readonly version: {
470
+ readonly type: "string";
471
+ };
472
+ };
473
+ readonly additionalProperties: false;
474
+ };
475
+ readonly daemon: {
476
+ readonly type: "object";
477
+ readonly required: readonly ["reachable", "endpoint"];
478
+ readonly properties: {
479
+ readonly reachable: {
480
+ readonly type: "boolean";
481
+ };
482
+ readonly endpoint: {
483
+ readonly type: "object";
484
+ readonly required: readonly ["transport", "path"];
485
+ readonly properties: {
486
+ readonly transport: {
487
+ readonly enum: readonly ["pipe", "unix"];
488
+ };
489
+ readonly path: {
490
+ readonly type: "string";
491
+ };
492
+ };
493
+ readonly additionalProperties: false;
494
+ };
495
+ readonly result: {
496
+ readonly type: "object";
497
+ };
498
+ readonly error: {
499
+ readonly type: "string";
500
+ };
501
+ readonly nextCommand: {
502
+ readonly type: "string";
503
+ };
504
+ };
505
+ readonly additionalProperties: false;
506
+ };
507
+ readonly nextCommands: {
508
+ readonly type: "array";
509
+ readonly items: {
510
+ readonly type: "string";
511
+ };
512
+ };
513
+ };
514
+ readonly additionalProperties: false;
515
+ };
339
516
  readonly repoListResult: {
340
517
  readonly type: "object";
341
518
  readonly required: readonly ["ok", "repos"];
@@ -519,6 +696,15 @@ export declare const RUNPANE_CONTRACT: {
519
696
  readonly timeoutMs: {
520
697
  readonly type: "number";
521
698
  };
699
+ readonly waitReady: {
700
+ readonly type: "boolean";
701
+ };
702
+ readonly readyTimeoutMs: {
703
+ readonly type: "number";
704
+ };
705
+ readonly concurrency: {
706
+ readonly type: "number";
707
+ };
522
708
  };
523
709
  readonly additionalProperties: false;
524
710
  };
@@ -579,6 +765,75 @@ export declare const RUNPANE_CONTRACT: {
579
765
  };
580
766
  readonly additionalProperties: false;
581
767
  };
768
+ readonly readiness: {
769
+ readonly type: "object";
770
+ readonly required: readonly ["ok", "condition", "matched", "timedOut", "elapsedMs", "state"];
771
+ readonly properties: {
772
+ readonly ok: {
773
+ readonly type: "boolean";
774
+ };
775
+ readonly condition: {
776
+ readonly enum: readonly ["initialized", "ready", "idle", "text"];
777
+ };
778
+ readonly matched: {
779
+ readonly type: "boolean";
780
+ };
781
+ readonly timedOut: {
782
+ readonly type: "boolean";
783
+ };
784
+ readonly elapsedMs: {
785
+ readonly type: "number";
786
+ };
787
+ readonly state: {
788
+ readonly type: "object";
789
+ readonly required: readonly ["initialized"];
790
+ readonly properties: {
791
+ readonly initialized: {
792
+ readonly type: "boolean";
793
+ };
794
+ readonly isAlternateScreen: {
795
+ readonly type: "boolean";
796
+ };
797
+ readonly activityStatus: {
798
+ readonly enum: readonly ["active", "idle"];
799
+ };
800
+ readonly isCliReady: {
801
+ readonly type: "boolean";
802
+ };
803
+ readonly isCliPanel: {
804
+ readonly type: "boolean";
805
+ };
806
+ readonly agentType: {
807
+ readonly enum: readonly ["codex", "claude"];
808
+ };
809
+ readonly lastActivity: {
810
+ readonly type: "string";
811
+ };
812
+ };
813
+ readonly additionalProperties: false;
814
+ };
815
+ readonly blocked: {
816
+ readonly type: "object";
817
+ readonly required: readonly ["kind", "message"];
818
+ readonly properties: {
819
+ readonly kind: {
820
+ readonly enum: readonly ["codex-update", "agent-prompt", "unknown"];
821
+ };
822
+ readonly message: {
823
+ readonly type: "string";
824
+ };
825
+ readonly suggestedCommand: {
826
+ readonly type: "string";
827
+ };
828
+ };
829
+ readonly additionalProperties: false;
830
+ };
831
+ readonly nextCommand: {
832
+ readonly type: "string";
833
+ };
834
+ };
835
+ readonly additionalProperties: false;
836
+ };
582
837
  };
583
838
  readonly additionalProperties: false;
584
839
  }, {
@@ -925,17 +1180,275 @@ export declare const RUNPANE_CONTRACT: {
925
1180
  };
926
1181
  readonly additionalProperties: false;
927
1182
  };
1183
+ readonly panelScreenResult: {
1184
+ readonly type: "object";
1185
+ readonly required: readonly ["ok", "panelId", "source", "limit", "returnedLineCount", "hasMore", "text", "state"];
1186
+ readonly properties: {
1187
+ readonly ok: {
1188
+ readonly const: true;
1189
+ };
1190
+ readonly panelId: {
1191
+ readonly type: "string";
1192
+ };
1193
+ readonly paneId: {
1194
+ readonly type: "string";
1195
+ };
1196
+ readonly source: {
1197
+ readonly enum: readonly ["alternateScreen", "scrollback", "persistedOutput", "empty"];
1198
+ };
1199
+ readonly limit: {
1200
+ readonly type: "number";
1201
+ };
1202
+ readonly returnedLineCount: {
1203
+ readonly type: "number";
1204
+ };
1205
+ readonly hasMore: {
1206
+ readonly type: "boolean";
1207
+ };
1208
+ readonly text: {
1209
+ readonly type: "string";
1210
+ };
1211
+ readonly state: {
1212
+ readonly type: "object";
1213
+ readonly required: readonly ["initialized"];
1214
+ readonly properties: {
1215
+ readonly initialized: {
1216
+ readonly type: "boolean";
1217
+ };
1218
+ readonly isAlternateScreen: {
1219
+ readonly type: "boolean";
1220
+ };
1221
+ readonly activityStatus: {
1222
+ readonly enum: readonly ["active", "idle"];
1223
+ };
1224
+ readonly isCliReady: {
1225
+ readonly type: "boolean";
1226
+ };
1227
+ readonly isCliPanel: {
1228
+ readonly type: "boolean";
1229
+ };
1230
+ readonly agentType: {
1231
+ readonly enum: readonly ["codex", "claude"];
1232
+ };
1233
+ readonly lastActivity: {
1234
+ readonly type: "string";
1235
+ };
1236
+ };
1237
+ readonly additionalProperties: false;
1238
+ };
1239
+ readonly nextCommand: {
1240
+ readonly type: "string";
1241
+ };
1242
+ };
1243
+ readonly additionalProperties: false;
1244
+ };
1245
+ readonly panelSubmitRequest: {
1246
+ readonly type: "object";
1247
+ readonly required: readonly ["panelId", "input"];
1248
+ readonly properties: {
1249
+ readonly panelId: {
1250
+ readonly type: "string";
1251
+ };
1252
+ readonly input: {
1253
+ readonly type: "string";
1254
+ };
1255
+ };
1256
+ readonly additionalProperties: false;
1257
+ };
1258
+ readonly panelSubmitResult: {
1259
+ readonly type: "object";
1260
+ readonly required: readonly ["ok", "panelId", "inputBytes", "enter", "sentAt"];
1261
+ readonly properties: {
1262
+ readonly ok: {
1263
+ readonly const: true;
1264
+ };
1265
+ readonly panelId: {
1266
+ readonly type: "string";
1267
+ };
1268
+ readonly paneId: {
1269
+ readonly type: "string";
1270
+ };
1271
+ readonly inputBytes: {
1272
+ readonly type: "number";
1273
+ };
1274
+ readonly enter: {
1275
+ readonly const: "cr";
1276
+ };
1277
+ readonly sentAt: {
1278
+ readonly type: "string";
1279
+ };
1280
+ readonly nextCommand: {
1281
+ readonly type: "string";
1282
+ };
1283
+ };
1284
+ readonly additionalProperties: false;
1285
+ };
1286
+ readonly panelWaitResult: {
1287
+ readonly type: "object";
1288
+ readonly required: readonly ["ok", "panelId", "condition", "matched", "timedOut", "elapsedMs", "state", "screen"];
1289
+ readonly properties: {
1290
+ readonly ok: {
1291
+ readonly type: "boolean";
1292
+ };
1293
+ readonly panelId: {
1294
+ readonly type: "string";
1295
+ };
1296
+ readonly paneId: {
1297
+ readonly type: "string";
1298
+ };
1299
+ readonly condition: {
1300
+ readonly enum: readonly ["initialized", "ready", "idle", "text"];
1301
+ };
1302
+ readonly matched: {
1303
+ readonly type: "boolean";
1304
+ };
1305
+ readonly timedOut: {
1306
+ readonly type: "boolean";
1307
+ };
1308
+ readonly elapsedMs: {
1309
+ readonly type: "number";
1310
+ };
1311
+ readonly state: {
1312
+ readonly type: "object";
1313
+ readonly required: readonly ["initialized"];
1314
+ readonly properties: {
1315
+ readonly initialized: {
1316
+ readonly type: "boolean";
1317
+ };
1318
+ readonly isAlternateScreen: {
1319
+ readonly type: "boolean";
1320
+ };
1321
+ readonly activityStatus: {
1322
+ readonly enum: readonly ["active", "idle"];
1323
+ };
1324
+ readonly isCliReady: {
1325
+ readonly type: "boolean";
1326
+ };
1327
+ readonly isCliPanel: {
1328
+ readonly type: "boolean";
1329
+ };
1330
+ readonly agentType: {
1331
+ readonly enum: readonly ["codex", "claude"];
1332
+ };
1333
+ readonly lastActivity: {
1334
+ readonly type: "string";
1335
+ };
1336
+ };
1337
+ readonly additionalProperties: false;
1338
+ };
1339
+ readonly blocked: {
1340
+ readonly type: "object";
1341
+ readonly required: readonly ["kind", "message"];
1342
+ readonly properties: {
1343
+ readonly kind: {
1344
+ readonly enum: readonly ["codex-update", "agent-prompt", "unknown"];
1345
+ };
1346
+ readonly message: {
1347
+ readonly type: "string";
1348
+ };
1349
+ readonly suggestedCommand: {
1350
+ readonly type: "string";
1351
+ };
1352
+ };
1353
+ readonly additionalProperties: false;
1354
+ };
1355
+ readonly screen: {
1356
+ readonly type: "object";
1357
+ readonly required: readonly ["source", "text", "hasMore"];
1358
+ readonly properties: {
1359
+ readonly source: {
1360
+ readonly enum: readonly ["alternateScreen", "scrollback", "persistedOutput", "empty"];
1361
+ };
1362
+ readonly text: {
1363
+ readonly type: "string";
1364
+ };
1365
+ readonly hasMore: {
1366
+ readonly type: "boolean";
1367
+ };
1368
+ };
1369
+ readonly additionalProperties: false;
1370
+ };
1371
+ readonly nextCommand: {
1372
+ readonly type: "string";
1373
+ };
1374
+ };
1375
+ readonly additionalProperties: false;
1376
+ };
1377
+ readonly agentDoctorResult: {
1378
+ readonly type: "object";
1379
+ readonly required: readonly ["ok", "agent", "command", "available", "checks"];
1380
+ readonly properties: {
1381
+ readonly ok: {
1382
+ readonly type: "boolean";
1383
+ };
1384
+ readonly agent: {
1385
+ readonly enum: readonly ["codex", "claude"];
1386
+ };
1387
+ readonly command: {
1388
+ readonly type: "string";
1389
+ };
1390
+ readonly repo: {
1391
+ readonly $ref: "#/jsonSchemas/repoListResult/properties/repos/items";
1392
+ };
1393
+ readonly environment: {
1394
+ readonly enum: readonly ["wsl", "windows", "linux", "macos"];
1395
+ };
1396
+ readonly available: {
1397
+ readonly type: "boolean";
1398
+ };
1399
+ readonly executablePath: {
1400
+ readonly type: "string";
1401
+ };
1402
+ readonly version: {
1403
+ readonly type: "string";
1404
+ };
1405
+ readonly checks: {
1406
+ readonly type: "array";
1407
+ readonly items: {
1408
+ readonly type: "object";
1409
+ readonly required: readonly ["name", "ok", "message"];
1410
+ readonly properties: {
1411
+ readonly name: {
1412
+ readonly type: "string";
1413
+ };
1414
+ readonly ok: {
1415
+ readonly type: "boolean";
1416
+ };
1417
+ readonly message: {
1418
+ readonly type: "string";
1419
+ };
1420
+ };
1421
+ readonly additionalProperties: false;
1422
+ };
1423
+ };
1424
+ readonly warnings: {
1425
+ readonly type: "array";
1426
+ readonly items: {
1427
+ readonly type: "string";
1428
+ };
1429
+ };
1430
+ };
1431
+ readonly additionalProperties: false;
1432
+ };
928
1433
  };
929
1434
  readonly agentContext: {
930
1435
  readonly brief: {
931
1436
  readonly title: "Pane agent context";
932
- readonly summary: "Pane lets a developer manage repositories and user-visible panes. Agents can use runpane to list/add Pane repositories and create panes with terminal-backed tools.";
933
- readonly rules: readonly ["Start with `runpane repos list --json` to find the saved repository when unsure.", "If WSL cannot reach Pane or `runpane` resolves to a broken Windows shim, the user may be running Windows Pane; try `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane repos list --json'`.", "If the repository exists on disk but is not saved in Pane, use `runpane repos add --path <repo> --yes --json` before creating panes.", "Use `runpane panes create` to create a Pane session and open a built-in agent or custom terminal command.", "Use `runpane panels list`, `runpane panels output`, and `runpane panels input` when you need to inspect or drive an existing Pane terminal.", "After creating panes or sending terminal input, validate with bounded panel output before reporting success.", "Prefer `--input-file` for terminal input that includes Enter, Ctrl-C, quotes, or multiple lines.", "Use `runpane agent-context --command <command>` for detailed command definitions only when needed."];
1437
+ readonly summary: "Pane lets a developer manage repositories and user-visible terminal panes. Agents can use runpane to create panes, inspect compact terminal state, wait for readiness, and submit interactive input.";
1438
+ readonly rules: readonly ["Start with `runpane doctor --json` to understand wrapper, platform, daemon reachability, and the next safe commands before mutating Pane state.", "Use `runpane agent-context --json` for the full agent-facing CLI context, or `runpane agent-context --command <command> --json` for one detailed command definition.", "Use `runpane repos list --json` to find the saved repository when unsure after doctor shows the daemon is reachable.", "If WSL cannot reach Pane or `runpane` resolves to a broken Windows shim, the user may be running Windows Pane; try `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane doctor --json'`.", "If the repository exists on disk but is not saved in Pane, use `runpane repos add --path <repo> --yes --json` before creating panes.", "Use `runpane agents doctor --agent <codex|claude> --repo <selector> --json` when agent availability differs across host, Windows, WSL, or repo environments.", "Use `runpane panes create --wait-ready` to create panes and validate initial terminal readiness in one call.", "Use `runpane panels screen` for compact current state, `panels wait` for readiness/text checks, and `panels submit` for ordinary Enter-submitted input.", "Use `runpane panels input` only when exact bytes are required, such as Ctrl-C or handcrafted terminal input.", "After creating panes or sending terminal input, validate with `panels wait` or bounded `panels screen` before reporting success."];
934
1439
  readonly detailCommand: "runpane agent-context --command <command> [--json]";
935
1440
  readonly tools: readonly [{
1441
+ readonly name: "doctor";
1442
+ readonly summary: "Report wrapper, platform, installed Pane, and daemon reachability before an agent mutates Pane state.";
1443
+ readonly arguments: readonly ["--json", "--pane-dir <path>", "--pane-path <path>"];
1444
+ }, {
936
1445
  readonly name: "agent-context";
937
1446
  readonly summary: "Print token-efficient Pane command context for coding agents.";
938
1447
  readonly arguments: readonly ["--command <command>", "--json"];
1448
+ }, {
1449
+ readonly name: "agents doctor";
1450
+ readonly summary: "Check whether Codex or Claude is available in the repo environment Pane will use.";
1451
+ readonly arguments: readonly ["--agent <codex|claude>", "--repo <selector>", "--json"];
939
1452
  }, {
940
1453
  readonly name: "repos list";
941
1454
  readonly summary: "List repositories saved in the running Pane app.";
@@ -951,7 +1464,7 @@ export declare const RUNPANE_CONTRACT: {
951
1464
  }, {
952
1465
  readonly name: "panes create";
953
1466
  readonly summary: "Create one or more Pane sessions in a saved repository and open a terminal-backed tool tab.";
954
- readonly arguments: readonly ["--repo <selector>", "--name <name>", "--agent <codex|claude>", "--tool-command <command>", "--prompt <text>", "--initial-input-file <path|->", "--from-json <path|->", "--yes", "--json"];
1467
+ 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"];
955
1468
  }, {
956
1469
  readonly name: "panels list";
957
1470
  readonly summary: "List tool panels inside a Pane session.";
@@ -960,10 +1473,22 @@ export declare const RUNPANE_CONTRACT: {
960
1473
  readonly name: "panels output";
961
1474
  readonly summary: "Read recent terminal output from a panel.";
962
1475
  readonly arguments: readonly ["--panel <panel-id>", "--limit <count>", "--json", "--pane-dir <path>"];
1476
+ }, {
1477
+ readonly name: "panels screen";
1478
+ readonly summary: "Read a compact current-screen view from a terminal panel.";
1479
+ readonly arguments: readonly ["--panel <panel-id>", "--limit <count>", "--json", "--pane-dir <path>"];
963
1480
  }, {
964
1481
  readonly name: "panels input";
965
1482
  readonly summary: "Send input bytes to a terminal panel.";
966
1483
  readonly arguments: readonly ["--panel <panel-id>", "--text <text>", "--input-file <path|->", "--yes", "--json", "--pane-dir <path>"];
1484
+ }, {
1485
+ readonly name: "panels submit";
1486
+ readonly summary: "Send text plus terminal Enter to a terminal panel.";
1487
+ readonly arguments: readonly ["--panel <panel-id>", "--text <text>", "--input-file <path|->", "--yes", "--json", "--pane-dir <path>"];
1488
+ }, {
1489
+ readonly name: "panels wait";
1490
+ readonly summary: "Wait for terminal initialized, ready, idle, or text state with compact output.";
1491
+ readonly arguments: readonly ["--panel <panel-id>", "--for <condition>", "--contains <text>", "--timeout-ms <ms>", "--interval-ms <ms>", "--json", "--pane-dir <path>"];
967
1492
  }];
968
1493
  };
969
1494
  readonly commands: {
@@ -1062,22 +1587,37 @@ export declare const RUNPANE_CONTRACT: {
1062
1587
  };
1063
1588
  readonly doctor: {
1064
1589
  readonly name: "doctor";
1065
- readonly summary: "Run platform, release, installed Pane, and remote setup diagnostics.";
1066
- readonly details: "Use this when runpane install/update behavior needs environment diagnostics.";
1590
+ readonly summary: "Run platform, release, installed Pane, daemon reachability, and remote setup diagnostics.";
1591
+ readonly details: "Use this first when an agent needs to understand whether Pane is installed, which wrapper/runtime is running, what daemon endpoint is expected, and whether the running Pane app is reachable. JSON mode should return a report even when the daemon is unreachable.";
1067
1592
  readonly requiresPaneDaemon: false;
1068
1593
  readonly mutates: false;
1069
1594
  readonly arguments: readonly [{
1595
+ readonly name: "--json";
1596
+ readonly required: false;
1597
+ readonly description: "Print a machine-readable environment report.";
1598
+ }, {
1599
+ readonly name: "--pane-dir";
1600
+ readonly value: "<path>";
1601
+ readonly required: false;
1602
+ readonly description: "Connect to a specific Pane data directory.";
1603
+ }, {
1070
1604
  readonly name: "--pane-path";
1071
1605
  readonly value: "<path>";
1072
1606
  readonly required: false;
1073
- readonly description: "Use an existing Pane executable for diagnostics.";
1607
+ readonly description: "Inspect a specific Pane executable.";
1608
+ }, {
1609
+ readonly name: "--format";
1610
+ readonly value: "<format>";
1611
+ readonly required: false;
1612
+ readonly description: "Release artifact format to inspect.";
1074
1613
  }, {
1075
1614
  readonly name: "--verbose";
1076
1615
  readonly required: false;
1077
1616
  readonly description: "Print extra diagnostics.";
1078
1617
  }];
1079
- readonly examples: readonly ["runpane doctor", "runpane doctor --verbose"];
1080
- readonly notes: readonly [];
1618
+ readonly examples: readonly ["runpane doctor --json", "runpane doctor"];
1619
+ readonly jsonSchemas: readonly ["doctorResult"];
1620
+ readonly notes: readonly ["Agents should run `runpane doctor --json` before mutating Pane state.", "The JSON report includes daemon reachability as data; an unreachable daemon is not a reason to skip the rest of the report.", "Use `runpane agent-context --json` after doctor when full CLI context is needed."];
1081
1621
  };
1082
1622
  readonly "agent-context": {
1083
1623
  readonly name: "agent-context";
@@ -1231,10 +1771,24 @@ export declare const RUNPANE_CONTRACT: {
1231
1771
  readonly name: "--json";
1232
1772
  readonly required: false;
1233
1773
  readonly description: "Print machine-readable output.";
1774
+ }, {
1775
+ readonly name: "--wait-ready";
1776
+ readonly required: false;
1777
+ readonly description: "Wait for each created terminal panel to be ready before returning.";
1778
+ }, {
1779
+ readonly name: "--ready-timeout-ms";
1780
+ readonly value: "<ms>";
1781
+ readonly required: false;
1782
+ readonly description: "Readiness timeout per pane; defaults to 30000.";
1783
+ }, {
1784
+ readonly name: "--concurrency";
1785
+ readonly value: "<count>";
1786
+ readonly required: false;
1787
+ readonly description: "Accepted for compatibility. Pane currently serializes multi-pane session creation so queued jobs do not time out before starting.";
1234
1788
  }];
1235
- readonly examples: readonly ["runpane panes create --repo active --name issue-257 --agent codex --prompt \"Plan this issue\" --yes", "runpane panes create --from-json panes.json --yes --json"];
1789
+ readonly examples: readonly ["runpane panes create --repo active --name issue-257 --agent codex --prompt \"Plan this issue\" --yes", "runpane panes create --from-json panes.json --yes --json", "runpane panes create --repo active --name issue-123 --agent codex --prompt \"Plan this issue\" --wait-ready --yes --json"];
1236
1790
  readonly jsonSchemas: readonly ["paneCreateRequest", "paneCreateResult"];
1237
- readonly notes: readonly ["At least one of --agent or --tool-command is required unless --from-json is used.", "The built-in agent templates come from the runpane contract; custom terminal commands can pass agent-specific flags when requested by the user.", "Use --initial-input-file for multi-line prompts or shell-sensitive initial input.", "When the JSON result includes nextCommand, run it to validate that the terminal produced output before reporting success.", "For POSIX or WSL command chaining, use a custom terminal command like `bash -lc 'cmd1 && cmd2 && cmd3'`.", "For Windows PowerShell command chaining, use a custom terminal command like `powershell -NoProfile -Command \"cmd1; if ($LASTEXITCODE) { exit $LASTEXITCODE }; cmd2\"`.", "From WSL with Windows Pane, invoke through PowerShell and select the saved WSL repo by name or id, for example `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane panes create --repo \"WSL Pane\" --name issue-123 --agent codex --prompt \"Plan this issue\" --yes --json'`."];
1791
+ readonly notes: readonly ["At least one of --agent or --tool-command is required unless --from-json is used.", "The built-in agent templates come from the runpane contract; custom terminal commands can pass agent-specific flags when requested by the user.", "Use --initial-input-file for multi-line prompts or shell-sensitive initial input.", "When the JSON result includes nextCommand, run it to validate that the terminal produced output before reporting success.", "Multi-pane requests are created sequentially today. The --concurrency flag is accepted for compatibility, but agents should not rely on parallel creation.", "For POSIX or WSL command chaining, use a custom terminal command like `bash -lc 'cmd1 && cmd2 && cmd3'`.", "For Windows PowerShell command chaining, use a custom terminal command like `powershell -NoProfile -Command \"cmd1; if ($LASTEXITCODE) { exit $LASTEXITCODE }; cmd2\"`.", "From WSL with Windows Pane, invoke through PowerShell and select the saved WSL repo by name or id, for example `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane panes create --repo \"WSL Pane\" --name issue-123 --agent codex --prompt \"Plan this issue\" --yes --json'`.", "Use --wait-ready when an agent needs to verify that an agent terminal started instead of only creating a pane.", "If readiness returns blocked, inspect blocked.suggestedCommand rather than guessing which prompt to answer."];
1238
1792
  };
1239
1793
  readonly "panels list": {
1240
1794
  readonly name: "panels list";
@@ -1289,7 +1843,7 @@ export declare const RUNPANE_CONTRACT: {
1289
1843
  }];
1290
1844
  readonly examples: readonly ["runpane panels output --panel <panel-id> --limit 200 --json"];
1291
1845
  readonly jsonSchemas: readonly ["panelOutputResult"];
1292
- readonly notes: readonly ["Default output is bounded to the latest 200 lines or records. Use a larger --limit only when hasMore is true and more history is needed.", "Use --json when an agent needs timestamps, record types, returnedCount, or hasMore.", "The output is intended to be agent-readable, but terminal prompts and shell echoes may still appear; use the newest relevant lines before concluding success."];
1846
+ readonly notes: readonly ["Default output is bounded to the latest 200 lines or records. Use a larger --limit only when hasMore is true and more history is needed.", "Use --json when an agent needs timestamps, record types, returnedCount, or hasMore.", "The output is intended to be agent-readable, but terminal prompts and shell echoes may still appear; use the newest relevant lines before concluding success.", "Prefer `panels screen` for a smaller current-state read before increasing output limits."];
1293
1847
  };
1294
1848
  readonly "panels input": {
1295
1849
  readonly name: "panels input";
@@ -1328,10 +1882,154 @@ export declare const RUNPANE_CONTRACT: {
1328
1882
  }];
1329
1883
  readonly examples: readonly ["printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes", "printf '\\003' | runpane panels input --panel <panel-id> --input-file - --yes", "runpane panels input --panel <panel-id> --text \"simple text\" --yes --json"];
1330
1884
  readonly jsonSchemas: readonly ["panelInputRequest", "panelInputResult"];
1331
- readonly notes: readonly ["Input is sent exactly as provided. Include a real newline byte when the terminal should receive Enter; across shells, `--input-file` is safer than `--text \"...\\n\"`.", "Use `--input-file -` or a temp file for multi-line input, quotes, Ctrl-C, or shell-sensitive text.", "If interrupting a running process, send Ctrl-C first, validate/read output, then send the next command in a separate `panels input` call so bytes are not dropped.", "After sending input, validate with `runpane panels output --panel <panel-id> --json` before reporting success.", "Runpane records action metadata and errors for observability, but should not log full input text by default."];
1885
+ readonly notes: readonly ["Input is sent exactly as provided. Include a real newline byte when the terminal should receive Enter; across shells, `--input-file` is safer than `--text \"...\\n\"`.", "Use `--input-file -` or a temp file for multi-line input, quotes, Ctrl-C, or shell-sensitive text.", "If interrupting a running process, send Ctrl-C first, validate/read output, then send the next command in a separate `panels input` call so bytes are not dropped.", "After sending input, validate with `runpane panels output --panel <panel-id> --json` before reporting success.", "Runpane records action metadata and errors for observability, but should not log full input text by default.", "For ordinary text plus Enter, prefer `panels submit` so the terminal receives a CR Enter byte."];
1886
+ };
1887
+ readonly "agents doctor": {
1888
+ readonly name: "agents doctor";
1889
+ readonly summary: "Diagnose whether a built-in agent command is available in a Pane repository environment.";
1890
+ readonly details: "Use this before creating Codex or Claude panes when PATH may differ between macOS/Linux/Windows/WSL or between the wrapper shell and Pane. The check runs through Pane project context, not the wrapper process.";
1891
+ readonly requiresPaneDaemon: true;
1892
+ readonly mutates: false;
1893
+ readonly arguments: readonly [{
1894
+ readonly name: "--agent";
1895
+ readonly value: "<codex|claude>";
1896
+ readonly required: true;
1897
+ readonly description: "Built-in agent command to diagnose.";
1898
+ }, {
1899
+ readonly name: "--repo";
1900
+ readonly value: "<selector>";
1901
+ readonly required: false;
1902
+ readonly description: "Repository selector; defaults to the active Pane repo.";
1903
+ }, {
1904
+ readonly name: "--json";
1905
+ readonly required: false;
1906
+ readonly description: "Print machine-readable output.";
1907
+ }, {
1908
+ readonly name: "--pane-dir";
1909
+ readonly value: "<path>";
1910
+ readonly required: false;
1911
+ readonly description: "Connect to a specific Pane data directory.";
1912
+ }];
1913
+ readonly examples: readonly ["runpane agents doctor --agent codex --repo active --json"];
1914
+ readonly jsonSchemas: readonly ["agentDoctorResult"];
1915
+ readonly notes: readonly ["For WSL repos, install the agent inside the WSL distro Pane uses, not only on Windows.", "This diagnoses built-in Codex/Claude templates only; custom commands should be validated by creating a pane and reading its screen."];
1916
+ };
1917
+ readonly "panels screen": {
1918
+ readonly name: "panels screen";
1919
+ readonly summary: "Read a compact current-screen view from a terminal panel.";
1920
+ readonly details: "Use this for token-safe current terminal state. It prefers active alternate-screen/TUI output, then live scrollback, then persisted output. Default output is bounded to 80 lines.";
1921
+ readonly requiresPaneDaemon: true;
1922
+ readonly mutates: false;
1923
+ readonly arguments: readonly [{
1924
+ readonly name: "--panel";
1925
+ readonly value: "<panel-id>";
1926
+ readonly required: true;
1927
+ readonly description: "Terminal panel id.";
1928
+ }, {
1929
+ readonly name: "--limit";
1930
+ readonly value: "<count>";
1931
+ readonly required: false;
1932
+ readonly description: "Maximum lines to return; defaults to 80.";
1933
+ }, {
1934
+ readonly name: "--json";
1935
+ readonly required: false;
1936
+ readonly description: "Print machine-readable output.";
1937
+ }, {
1938
+ readonly name: "--pane-dir";
1939
+ readonly value: "<path>";
1940
+ readonly required: false;
1941
+ readonly description: "Connect to a specific Pane data directory.";
1942
+ }];
1943
+ readonly examples: readonly ["runpane panels screen --panel <panel-id> --limit 80 --json"];
1944
+ readonly jsonSchemas: readonly ["panelScreenResult"];
1945
+ readonly notes: readonly ["Use this before `panels output` when an agent only needs the latest visible/current state.", "If hasMore is true and context is missing, rerun with a larger --limit or use `panels output`."];
1946
+ };
1947
+ readonly "panels submit": {
1948
+ readonly name: "panels submit";
1949
+ readonly summary: "Send text to a terminal panel and append a terminal Enter byte.";
1950
+ readonly details: "Use this for ordinary interactive submissions. The daemon normalizes a final LF or CRLF to CR, or appends CR if no newline is present. Exact byte workflows remain on `panels input`.";
1951
+ readonly requiresPaneDaemon: true;
1952
+ readonly mutates: true;
1953
+ readonly arguments: readonly [{
1954
+ readonly name: "--panel";
1955
+ readonly value: "<panel-id>";
1956
+ readonly required: true;
1957
+ readonly description: "Terminal panel id.";
1958
+ }, {
1959
+ readonly name: "--text";
1960
+ readonly value: "<text>";
1961
+ readonly required: false;
1962
+ readonly description: "Text to submit before Enter.";
1963
+ }, {
1964
+ readonly name: "--input-file";
1965
+ readonly value: "<path|->";
1966
+ readonly required: false;
1967
+ readonly description: "Read text from a file or stdin before Enter.";
1968
+ }, {
1969
+ readonly name: "--yes";
1970
+ readonly required: false;
1971
+ readonly description: "Skip confirmation for this mutating command.";
1972
+ }, {
1973
+ readonly name: "--json";
1974
+ readonly required: false;
1975
+ readonly description: "Print machine-readable output.";
1976
+ }, {
1977
+ readonly name: "--pane-dir";
1978
+ readonly value: "<path>";
1979
+ readonly required: false;
1980
+ readonly description: "Connect to a specific Pane data directory.";
1981
+ }];
1982
+ readonly examples: readonly ["runpane panels submit --panel <panel-id> --text \"2\" --yes --json", "printf \"echo hello\" | runpane panels submit --panel <panel-id> --input-file - --yes --json"];
1983
+ readonly jsonSchemas: readonly ["panelSubmitRequest", "panelSubmitResult"];
1984
+ readonly notes: readonly ["The response includes nextCommand for validation. Run it before reporting that the input worked.", "Use `panels input` for Ctrl-C, escape sequences, or any workflow requiring exact bytes."];
1985
+ };
1986
+ readonly "panels wait": {
1987
+ readonly name: "panels wait";
1988
+ readonly summary: "Wait for a terminal panel to initialize, become ready/idle, or contain text.";
1989
+ readonly details: "Use this to validate asynchronous terminal behavior without pulling large scrollback. It returns brief readiness state, blocker hints, a compact screen, and a next command.";
1990
+ readonly requiresPaneDaemon: true;
1991
+ readonly mutates: false;
1992
+ readonly arguments: readonly [{
1993
+ readonly name: "--panel";
1994
+ readonly value: "<panel-id>";
1995
+ readonly required: true;
1996
+ readonly description: "Terminal panel id.";
1997
+ }, {
1998
+ readonly name: "--for";
1999
+ readonly value: "<initialized|ready|idle|text>";
2000
+ readonly required: false;
2001
+ readonly description: "Condition to wait for. Defaults to ready for CLI panels and idle otherwise.";
2002
+ }, {
2003
+ readonly name: "--contains";
2004
+ readonly value: "<text>";
2005
+ readonly required: false;
2006
+ readonly description: "Text required for --for text; implies --for text when --for is omitted.";
2007
+ }, {
2008
+ readonly name: "--timeout-ms";
2009
+ readonly value: "<ms>";
2010
+ readonly required: false;
2011
+ readonly description: "Wait timeout; defaults to 30000.";
2012
+ }, {
2013
+ readonly name: "--interval-ms";
2014
+ readonly value: "<ms>";
2015
+ readonly required: false;
2016
+ readonly description: "Polling interval; defaults to 500.";
2017
+ }, {
2018
+ readonly name: "--json";
2019
+ readonly required: false;
2020
+ readonly description: "Print machine-readable output.";
2021
+ }, {
2022
+ readonly name: "--pane-dir";
2023
+ readonly value: "<path>";
2024
+ readonly required: false;
2025
+ readonly description: "Connect to a specific Pane data directory.";
2026
+ }];
2027
+ readonly examples: readonly ["runpane panels wait --panel <panel-id> --for ready --timeout-ms 30000 --json", "runpane panels wait --panel <panel-id> --contains \"Ready\" --json"];
2028
+ readonly jsonSchemas: readonly ["panelWaitResult"];
2029
+ 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."];
1332
2030
  };
1333
2031
  };
1334
- 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, and implementation work.", "", "Use `runpane agent-context` for a brief Pane command schema. Use `runpane agent-context --command \"panes create\"` or another command name for the detailed schema only when needed.", "", "After creating panes or sending terminal input, validate with bounded panel output before reporting success. Prefer `--input-file` for exact terminal bytes, newlines, Ctrl-C, quotes, or multi-line input.", "", "Common commands:", "- `runpane repos list --json`", "- `runpane repos add --path <repo> --yes --json`", "- `runpane panes create --repo active --name <name> --agent codex --prompt \"<task>\" --yes`", "- `runpane panels list --pane <pane-id> --json`", "- `runpane panels output --panel <panel-id> --limit 200 --json`", "- `runpane panels input --panel <panel-id> --input-file <path|-> --yes`", "", "WSL note: if `runpane repos list` 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 repos list --json'`, then create panes through the same PowerShell form using the saved WSL repo name or id."];
2032
+ 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."];
1335
2033
  };
1336
2034
  };
1337
2035
  export type RunpaneCommand = typeof RUNPANE_CONTRACT.commands[number]['name'];