runpane 2.4.122 → 2.4.124

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.
@@ -306,6 +306,18 @@ exports.RUNPANE_CONTRACT = {
306
306
  "paneRenameResult"
307
307
  ]
308
308
  },
309
+ {
310
+ "name": "panes focus",
311
+ "summary": "Raise the Pane window and select a Pane (and optionally one of its panels) on explicit user request.",
312
+ "usage": [
313
+ "runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json]"
314
+ ],
315
+ "mutates": true,
316
+ "jsonSchemas": [
317
+ "paneFocusRequest",
318
+ "paneFocusResult"
319
+ ]
320
+ },
309
321
  {
310
322
  "name": "panels create",
311
323
  "summary": "Create a terminal-backed tool panel inside an existing Pane session.",
@@ -1226,6 +1238,20 @@ exports.RUNPANE_CONTRACT = {
1226
1238
  " --dry-run Validate and preview without renaming the pane",
1227
1239
  " --yes Skip confirmation for mutating commands"
1228
1240
  ],
1241
+ "panes focus": [
1242
+ "Usage:",
1243
+ " runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json]",
1244
+ "",
1245
+ "Raises the Pane window and selects a Pane (and optionally one of its panels) exactly like clicking it in the UI. Steals window focus, so run it only on an explicit user request to open, focus, or show a Pane, never proactively.",
1246
+ "",
1247
+ "Options:",
1248
+ " --pane <pane-id> Pane/session id to focus",
1249
+ " --panel <panel-id> Optional panel/tab id inside the Pane to select",
1250
+ " --source <user|agent> Mutation source; does not change focus behavior",
1251
+ " --pane-dir <path> Connect to a specific Pane data directory",
1252
+ " --json Print machine-readable output",
1253
+ " --yes Skip confirmation for mutating commands"
1254
+ ],
1229
1255
  "panels": [
1230
1256
  "Terminal-backed panel commands.",
1231
1257
  "",
@@ -1831,6 +1857,20 @@ exports.RUNPANE_CONTRACT = {
1831
1857
  " --dry-run",
1832
1858
  " --yes"
1833
1859
  ],
1860
+ "panes focus": [
1861
+ "Usage:",
1862
+ " runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json]",
1863
+ "",
1864
+ "Raises the Pane window and selects a Pane (and optionally one of its panels) exactly like clicking it in the UI. Steals window focus, so run it only on an explicit user request to open, focus, or show a Pane, never proactively.",
1865
+ "",
1866
+ "Options:",
1867
+ " --pane <pane-id>",
1868
+ " --panel <panel-id>",
1869
+ " --source <user|agent>",
1870
+ " --pane-dir <path>",
1871
+ " --json",
1872
+ " --yes"
1873
+ ],
1834
1874
  "panels": [
1835
1875
  "Terminal-backed panel commands.",
1836
1876
  "",
@@ -2197,6 +2237,7 @@ exports.RUNPANE_CONTRACT = {
2197
2237
  "For `panes create --wait-ready`, `initialInput.verifiedSubmitted: true` is reported only after argument attachment or composer-clear plus activity evidence. Routing input does not by itself verify submission.",
2198
2238
  "`runpane panes archive` refreshes the configured upstream, reports exact unpushed commit evidence, and refuses unsafe archive operations unless `--force` is used. Add `--dry-run` to inspect the same evidence without archiving. Successful archives wait for worktree removal and report `worktreeCleanup`.",
2199
2239
  "`runpane panes rename` trims and updates a Pane's display name without changing its worktree, branch, panels, or focus, and returns the updated pane summary.",
2240
+ "`runpane panes focus` raises the Pane window and selects a Pane (and optionally one of its panels) exactly like clicking it in the UI. Because it steals the user's window focus, run it only on an explicit user request to open, focus, show, or switch to a Pane; never focus a Pane proactively, the same doctrine that keeps `panes create` background/no-focus for `--source agent`.",
2200
2241
  "`runpane panels list` lists tool panels inside one Pane session.",
2201
2242
  "`runpane panels output` reads bounded recent terminal output from one panel and strips common terminal control noise for agent use.",
2202
2243
  "`runpane panels input` sends exact input bytes to one terminal panel. Prefer `--input-file` for newlines, Ctrl-C, quotes, or shell-sensitive text.",
@@ -2469,6 +2510,18 @@ exports.RUNPANE_CONTRACT = {
2469
2510
  "--yes",
2470
2511
  "--json"
2471
2512
  ],
2513
+ [
2514
+ "panes",
2515
+ "focus",
2516
+ "--pane",
2517
+ "session-1",
2518
+ "--panel",
2519
+ "panel-1",
2520
+ "--source",
2521
+ "user",
2522
+ "--yes",
2523
+ "--json"
2524
+ ],
2472
2525
  [
2473
2526
  "panels",
2474
2527
  "list",
@@ -4477,6 +4530,50 @@ exports.RUNPANE_CONTRACT = {
4477
4530
  },
4478
4531
  "additionalProperties": false
4479
4532
  },
4533
+ "paneFocusRequest": {
4534
+ "type": "object",
4535
+ "required": [
4536
+ "paneId"
4537
+ ],
4538
+ "properties": {
4539
+ "paneId": {
4540
+ "type": "string"
4541
+ },
4542
+ "panelId": {
4543
+ "type": "string"
4544
+ },
4545
+ "source": {
4546
+ "enum": [
4547
+ "user",
4548
+ "agent"
4549
+ ]
4550
+ }
4551
+ },
4552
+ "additionalProperties": false
4553
+ },
4554
+ "paneFocusResult": {
4555
+ "type": "object",
4556
+ "required": [
4557
+ "ok",
4558
+ "paneId",
4559
+ "focused"
4560
+ ],
4561
+ "properties": {
4562
+ "ok": {
4563
+ "const": true
4564
+ },
4565
+ "paneId": {
4566
+ "type": "string"
4567
+ },
4568
+ "panelId": {
4569
+ "type": "string"
4570
+ },
4571
+ "focused": {
4572
+ "const": true
4573
+ }
4574
+ },
4575
+ "additionalProperties": false
4576
+ },
4480
4577
  "paneArchiveResult": {
4481
4578
  "oneOf": [
4482
4579
  {
@@ -5928,6 +6025,17 @@ exports.RUNPANE_CONTRACT = {
5928
6025
  "--json"
5929
6026
  ]
5930
6027
  },
6028
+ {
6029
+ "name": "panes focus",
6030
+ "summary": "Raise the Pane window and select a Pane (and optionally a panel) on explicit user request.",
6031
+ "arguments": [
6032
+ "--pane <pane-id>",
6033
+ "--panel <panel-id>",
6034
+ "--source <user|agent>",
6035
+ "--yes",
6036
+ "--json"
6037
+ ]
6038
+ },
5931
6039
  {
5932
6040
  "name": "panels create",
5933
6041
  "summary": "Create reviewer/helper terminal tabs inside an existing Pane; they share that Pane's worktree.",
@@ -6876,6 +6984,56 @@ exports.RUNPANE_CONTRACT = {
6876
6984
  "The JSON result includes the updated pane summary so callers do not need a second panes list request."
6877
6985
  ]
6878
6986
  },
6987
+ "panes focus": {
6988
+ "name": "panes focus",
6989
+ "summary": "Raise the Pane window and select a Pane (and optionally one of its panels).",
6990
+ "details": "Brings the Pane desktop window to the foreground and selects the requested Pane exactly like clicking it in the sidebar; when --panel is given it also selects that panel/tab inside the Pane. This steals window focus, so it must only be run on an explicit user request to open, focus, or show a Pane, never proactively. Focusing does not change the Pane's worktree, branch, panels, or pinned state.",
6991
+ "requiresPaneDaemon": true,
6992
+ "mutates": true,
6993
+ "arguments": [
6994
+ {
6995
+ "name": "--pane",
6996
+ "value": "<pane-id>",
6997
+ "required": true,
6998
+ "description": "Pane/session id to focus. Must be an active (non-archived) Pane."
6999
+ },
7000
+ {
7001
+ "name": "--panel",
7002
+ "value": "<panel-id>",
7003
+ "required": false,
7004
+ "description": "Optional panel/tab id inside the Pane to select; must belong to the focused Pane."
7005
+ },
7006
+ {
7007
+ "name": "--source",
7008
+ "value": "<user|agent>",
7009
+ "required": false,
7010
+ "description": "Mutation source; does not change focus behavior."
7011
+ },
7012
+ {
7013
+ "name": "--yes",
7014
+ "required": false,
7015
+ "description": "Skip confirmation for mutating commands; required in non-interactive contexts because focusing steals window focus."
7016
+ },
7017
+ {
7018
+ "name": "--json",
7019
+ "required": false,
7020
+ "description": "Print machine-readable output."
7021
+ }
7022
+ ],
7023
+ "examples": [
7024
+ "runpane panes focus --pane <pane-id> --source user --yes --json",
7025
+ "runpane panes focus --pane <pane-id> --panel <panel-id> --source user --yes --json"
7026
+ ],
7027
+ "jsonSchemas": [
7028
+ "paneFocusRequest",
7029
+ "paneFocusResult"
7030
+ ],
7031
+ "notes": [
7032
+ "Run this only when the user explicitly asks to open, focus, show, or switch to a Pane; never focus a Pane proactively because it steals the user's window focus.",
7033
+ "Archived Panes cannot be focused; the command fails clearly instead of falling back to focusing another Pane.",
7034
+ "If --panel does not belong to the focused Pane, the command fails clearly rather than selecting a different panel."
7035
+ ]
7036
+ },
6879
7037
  "panels list": {
6880
7038
  "name": "panels list",
6881
7039
  "summary": "List tool panels inside a Pane session.",