runpane 2.3.2 → 2.3.3

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.
@@ -150,6 +150,16 @@ exports.RUNPANE_CONTRACT = {
150
150
  "repoAddResult"
151
151
  ]
152
152
  },
153
+ {
154
+ "name": "panes list",
155
+ "summary": "List Pane sessions in a saved repository.",
156
+ "usage": [
157
+ "runpane panes list [--repo <selector>] [--json]"
158
+ ],
159
+ "jsonSchemas": [
160
+ "paneListResult"
161
+ ]
162
+ },
153
163
  {
154
164
  "name": "panes create",
155
165
  "summary": "Create one or more Pane sessions in a saved repository and open a terminal-backed tool tab.",
@@ -162,6 +172,38 @@ exports.RUNPANE_CONTRACT = {
162
172
  "paneCreateRequest",
163
173
  "paneCreateResult"
164
174
  ]
175
+ },
176
+ {
177
+ "name": "panels list",
178
+ "summary": "List tool panels inside a Pane session.",
179
+ "usage": [
180
+ "runpane panels list --pane <pane-id> [--json]"
181
+ ],
182
+ "jsonSchemas": [
183
+ "panelListResult"
184
+ ]
185
+ },
186
+ {
187
+ "name": "panels output",
188
+ "summary": "Read recent terminal output from a panel.",
189
+ "usage": [
190
+ "runpane panels output --panel <panel-id> [--limit <count>] [--json]"
191
+ ],
192
+ "jsonSchemas": [
193
+ "panelOutputResult"
194
+ ]
195
+ },
196
+ {
197
+ "name": "panels input",
198
+ "summary": "Send input bytes to a terminal panel.",
199
+ "usage": [
200
+ "runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]"
201
+ ],
202
+ "mutates": true,
203
+ "jsonSchemas": [
204
+ "panelInputRequest",
205
+ "panelInputResult"
206
+ ]
165
207
  }
166
208
  ],
167
209
  "flags": {
@@ -264,6 +306,16 @@ exports.RUNPANE_CONTRACT = {
264
306
  "value": "<selector>",
265
307
  "description": "Repository selector: active, id, exact path, or saved repository name."
266
308
  },
309
+ {
310
+ "name": "--pane",
311
+ "value": "<pane-id>",
312
+ "description": "Pane/session id to inspect."
313
+ },
314
+ {
315
+ "name": "--panel",
316
+ "value": "<panel-id>",
317
+ "description": "Tool panel id to inspect or control."
318
+ },
267
319
  {
268
320
  "name": "--path",
269
321
  "value": "<path>",
@@ -321,6 +373,21 @@ exports.RUNPANE_CONTRACT = {
321
373
  "name": "--timeout-ms",
322
374
  "value": "<milliseconds>",
323
375
  "description": "Maximum time to wait for each pane creation job."
376
+ },
377
+ {
378
+ "name": "--limit",
379
+ "value": "<count>",
380
+ "description": "Maximum number of output records to read."
381
+ },
382
+ {
383
+ "name": "--text",
384
+ "value": "<text>",
385
+ "description": "Text bytes to send to a terminal panel."
386
+ },
387
+ {
388
+ "name": "--input-file",
389
+ "value": "<path|->",
390
+ "description": "Read panel input from a file or stdin."
324
391
  }
325
392
  ],
326
393
  "localBoolean": [
@@ -343,7 +410,11 @@ exports.RUNPANE_CONTRACT = {
343
410
  " runpane agent-context [--json]",
344
411
  " runpane repos list [--json]",
345
412
  " runpane repos add --path <path> [--name <name>]",
413
+ " runpane panes list [--repo <selector>] [--json]",
346
414
  " runpane panes create --repo <selector> --name <name> --agent <codex|claude>",
415
+ " runpane panels list --pane <pane-id> [--json]",
416
+ " runpane panels output --panel <panel-id> [--limit <count>] [--json]",
417
+ " runpane panels input --panel <panel-id> --text <text> --yes",
347
418
  " runpane help [command]",
348
419
  "",
349
420
  "Quick start:",
@@ -449,6 +520,17 @@ exports.RUNPANE_CONTRACT = {
449
520
  " --dry-run Validate and preview without adding the repo",
450
521
  " --yes Skip confirmation for mutating commands"
451
522
  ],
523
+ "panes list": [
524
+ "Usage:",
525
+ " runpane panes list [--repo <selector>] [--json]",
526
+ "",
527
+ "Lists Pane sessions. Pass --repo to limit results to one saved repository.",
528
+ "",
529
+ "Options:",
530
+ " --repo <selector> active, id, exact path, or saved repository name",
531
+ " --pane-dir <path> Connect to a specific Pane data directory",
532
+ " --json Print machine-readable output"
533
+ ],
452
534
  "panes create": [
453
535
  "Usage:",
454
536
  " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]",
@@ -474,6 +556,43 @@ exports.RUNPANE_CONTRACT = {
474
556
  " --dry-run Validate and preview without creating panes",
475
557
  " --yes Skip confirmation for mutating commands"
476
558
  ],
559
+ "panels list": [
560
+ "Usage:",
561
+ " runpane panels list --pane <pane-id> [--json]",
562
+ "",
563
+ "Lists tool panels in a Pane session.",
564
+ "",
565
+ "Options:",
566
+ " --pane <pane-id> Pane/session id",
567
+ " --pane-dir <path> Connect to a specific Pane data directory",
568
+ " --json Print machine-readable output"
569
+ ],
570
+ "panels output": [
571
+ "Usage:",
572
+ " runpane panels output --panel <panel-id> [--limit <count>] [--json]",
573
+ "",
574
+ "Reads recent terminal output records from a panel.",
575
+ "",
576
+ "Options:",
577
+ " --panel <panel-id> Tool panel id",
578
+ " --limit <count> Maximum output records to read",
579
+ " --pane-dir <path> Connect to a specific Pane data directory",
580
+ " --json Print machine-readable output"
581
+ ],
582
+ "panels input": [
583
+ "Usage:",
584
+ " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]",
585
+ "",
586
+ "Sends exact input bytes to a terminal panel. Include a newline in the input when you mean Enter.",
587
+ "",
588
+ "Options:",
589
+ " --panel <panel-id> Terminal panel id",
590
+ " --text <text> Text bytes to send",
591
+ " --input-file <path|-> Read input from a file or stdin",
592
+ " --pane-dir <path> Connect to a specific Pane data directory",
593
+ " --json Print machine-readable output",
594
+ " --yes Skip confirmation for mutating commands"
595
+ ],
477
596
  "agent-context": [
478
597
  "Usage:",
479
598
  " runpane agent-context [--json]",
@@ -504,7 +623,11 @@ exports.RUNPANE_CONTRACT = {
504
623
  " runpane agent-context [--json]",
505
624
  " runpane repos list [--json]",
506
625
  " runpane repos add --path <path> [--name <name>]",
626
+ " runpane panes list [--repo <selector>] [--json]",
507
627
  " runpane panes create --repo <selector> --name <name> --agent <codex|claude>",
628
+ " runpane panels list --pane <pane-id> [--json]",
629
+ " runpane panels output --panel <panel-id> [--limit <count>] [--json]",
630
+ " runpane panels input --panel <panel-id> --text <text> --yes",
508
631
  " runpane help [command]",
509
632
  "",
510
633
  "Quick start:",
@@ -598,6 +721,17 @@ exports.RUNPANE_CONTRACT = {
598
721
  " --dry-run",
599
722
  " --yes"
600
723
  ],
724
+ "panes list": [
725
+ "Usage:",
726
+ " runpane panes list [--repo <selector>] [--json]",
727
+ "",
728
+ "Lists Pane sessions. Pass --repo to limit results to one saved repository.",
729
+ "",
730
+ "Options:",
731
+ " --repo <selector>",
732
+ " --pane-dir <path>",
733
+ " --json"
734
+ ],
601
735
  "panes create": [
602
736
  "Usage:",
603
737
  " runpane panes create --repo <selector> --name <name> --agent <codex|claude> [options]",
@@ -623,6 +757,43 @@ exports.RUNPANE_CONTRACT = {
623
757
  " --dry-run",
624
758
  " --yes"
625
759
  ],
760
+ "panels list": [
761
+ "Usage:",
762
+ " runpane panels list --pane <pane-id> [--json]",
763
+ "",
764
+ "Lists tool panels in a Pane session.",
765
+ "",
766
+ "Options:",
767
+ " --pane <pane-id>",
768
+ " --pane-dir <path>",
769
+ " --json"
770
+ ],
771
+ "panels output": [
772
+ "Usage:",
773
+ " runpane panels output --panel <panel-id> [--limit <count>] [--json]",
774
+ "",
775
+ "Reads recent terminal output records from a panel.",
776
+ "",
777
+ "Options:",
778
+ " --panel <panel-id>",
779
+ " --limit <count>",
780
+ " --pane-dir <path>",
781
+ " --json"
782
+ ],
783
+ "panels input": [
784
+ "Usage:",
785
+ " runpane panels input --panel <panel-id> (--text <text>|--input-file <path|->) --yes [--json]",
786
+ "",
787
+ "Sends exact input bytes to a terminal panel. Include a newline in the input when you mean Enter.",
788
+ "",
789
+ "Options:",
790
+ " --panel <panel-id>",
791
+ " --text <text>",
792
+ " --input-file <path|->",
793
+ " --pane-dir <path>",
794
+ " --json",
795
+ " --yes"
796
+ ],
626
797
  "agent-context": [
627
798
  "Usage:",
628
799
  " runpane agent-context [--json]",
@@ -708,8 +879,12 @@ exports.RUNPANE_CONTRACT = {
708
879
  "runpane agent-context --command \"panes create\" --json",
709
880
  "runpane repos list --json",
710
881
  "runpane repos add --path /path/to/repo --name Pane --yes --json",
882
+ "runpane panes list --repo active --json",
711
883
  "runpane panes create --repo active --name issue-252 --agent codex --prompt \"Kick off the discussion skill for issue 252\" --yes",
712
884
  "runpane panes create --from-json panes.json --yes --json",
885
+ "runpane panels list --pane <pane-id> --json",
886
+ "runpane panels output --panel <panel-id> --limit 200 --json",
887
+ "runpane panels input --panel <panel-id> --text \"Continue\\n\" --yes --json",
713
888
  "runpane help",
714
889
  "runpane <command> --help"
715
890
  ],
@@ -726,11 +901,16 @@ exports.RUNPANE_CONTRACT = {
726
901
  "`runpane agent-context --command \"panes create\"` prints the detailed definition for one command. Add `--json` for machine-readable output.",
727
902
  "`runpane repos list` connects to the running local Pane daemon and prints saved repository records.",
728
903
  "`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.",
904
+ "`runpane panes list` lists Pane sessions, optionally scoped to one saved repository.",
729
905
  "`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.",
730
- "`runpane panes create --prompt` is an alias for `--initial-input`; request JSON and daemon payloads should use the canonical `initialInput` field."
906
+ "`runpane panels list` lists tool panels inside one Pane session.",
907
+ "`runpane panels output` reads recent terminal output records from one panel.",
908
+ "`runpane panels input` sends exact input bytes to one terminal panel. Include a newline in the input when the agent means Enter.",
909
+ "`runpane panes create --prompt` is an alias for `--initial-input`; request JSON and daemon payloads should use the canonical `initialInput` field.",
910
+ "When running from WSL while Pane is installed on Windows, the Linux wrapper may look for a missing `/tmp/pane-daemon.../daemon.sock`. In that case invoke the Windows wrapper through PowerShell, for example `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane repos list --json'`."
731
911
  ],
732
912
  "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.",
733
- "localControlFlagNote": "`runpane repos list` and `runpane panes create` 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.",
913
+ "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.",
734
914
  "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.",
735
915
  "downloadAttribution": [
736
916
  "The npm package uses `source=npm` for all npm-registry consumers, including `npx`, `pnpm dlx`, `yarn dlx`, `bunx`, and global npm/pnpm installs.",
@@ -835,6 +1015,13 @@ exports.RUNPANE_CONTRACT = {
835
1015
  "--pane-dir",
836
1016
  "/tmp/pane"
837
1017
  ],
1018
+ [
1019
+ "panes",
1020
+ "list",
1021
+ "--repo",
1022
+ "active",
1023
+ "--json"
1024
+ ],
838
1025
  [
839
1026
  "panes",
840
1027
  "create",
@@ -858,6 +1045,32 @@ exports.RUNPANE_CONTRACT = {
858
1045
  "--yes",
859
1046
  "--json"
860
1047
  ],
1048
+ [
1049
+ "panels",
1050
+ "list",
1051
+ "--pane",
1052
+ "session-1",
1053
+ "--json"
1054
+ ],
1055
+ [
1056
+ "panels",
1057
+ "output",
1058
+ "--panel",
1059
+ "panel-1",
1060
+ "--limit",
1061
+ "200",
1062
+ "--json"
1063
+ ],
1064
+ [
1065
+ "panels",
1066
+ "input",
1067
+ "--panel",
1068
+ "panel-1",
1069
+ "--text",
1070
+ "Continue\\n",
1071
+ "--yes",
1072
+ "--json"
1073
+ ],
861
1074
  [
862
1075
  "--version"
863
1076
  ]
@@ -871,7 +1084,11 @@ exports.RUNPANE_CONTRACT = {
871
1084
  "runpane agent-context",
872
1085
  "runpane repos list",
873
1086
  "runpane repos add",
874
- "runpane panes create"
1087
+ "runpane panes list",
1088
+ "runpane panes create",
1089
+ "runpane panels list",
1090
+ "runpane panels output",
1091
+ "runpane panels input"
875
1092
  ],
876
1093
  "npmHelpIncludes": [
877
1094
  "pnpm dlx runpane@latest",
@@ -1257,6 +1474,234 @@ exports.RUNPANE_CONTRACT = {
1257
1474
  },
1258
1475
  "additionalProperties": false
1259
1476
  },
1477
+ "paneListResult": {
1478
+ "type": "object",
1479
+ "required": [
1480
+ "ok",
1481
+ "panes"
1482
+ ],
1483
+ "properties": {
1484
+ "ok": {
1485
+ "const": true
1486
+ },
1487
+ "repo": {
1488
+ "$ref": "#/jsonSchemas/repoListResult/properties/repos/items"
1489
+ },
1490
+ "panes": {
1491
+ "type": "array",
1492
+ "items": {
1493
+ "type": "object",
1494
+ "required": [
1495
+ "id",
1496
+ "paneId",
1497
+ "name",
1498
+ "status",
1499
+ "worktreePath",
1500
+ "repoId",
1501
+ "panelCount"
1502
+ ],
1503
+ "properties": {
1504
+ "id": {
1505
+ "type": "string"
1506
+ },
1507
+ "paneId": {
1508
+ "type": "string"
1509
+ },
1510
+ "name": {
1511
+ "type": "string"
1512
+ },
1513
+ "status": {
1514
+ "type": "string"
1515
+ },
1516
+ "worktreePath": {
1517
+ "type": "string"
1518
+ },
1519
+ "repoId": {
1520
+ "type": "number"
1521
+ },
1522
+ "repoName": {
1523
+ "type": "string"
1524
+ },
1525
+ "panelCount": {
1526
+ "type": "number"
1527
+ },
1528
+ "createdAt": {
1529
+ "type": "string"
1530
+ },
1531
+ "lastActivity": {
1532
+ "type": "string"
1533
+ },
1534
+ "archived": {
1535
+ "type": "boolean"
1536
+ }
1537
+ },
1538
+ "additionalProperties": false
1539
+ }
1540
+ }
1541
+ },
1542
+ "additionalProperties": false
1543
+ },
1544
+ "panelListResult": {
1545
+ "type": "object",
1546
+ "required": [
1547
+ "ok",
1548
+ "paneId",
1549
+ "panels"
1550
+ ],
1551
+ "properties": {
1552
+ "ok": {
1553
+ "const": true
1554
+ },
1555
+ "paneId": {
1556
+ "type": "string"
1557
+ },
1558
+ "panels": {
1559
+ "type": "array",
1560
+ "items": {
1561
+ "type": "object",
1562
+ "required": [
1563
+ "id",
1564
+ "panelId",
1565
+ "paneId",
1566
+ "type",
1567
+ "title",
1568
+ "active"
1569
+ ],
1570
+ "properties": {
1571
+ "id": {
1572
+ "type": "string"
1573
+ },
1574
+ "panelId": {
1575
+ "type": "string"
1576
+ },
1577
+ "paneId": {
1578
+ "type": "string"
1579
+ },
1580
+ "type": {
1581
+ "type": "string"
1582
+ },
1583
+ "title": {
1584
+ "type": "string"
1585
+ },
1586
+ "active": {
1587
+ "type": "boolean"
1588
+ },
1589
+ "initialized": {
1590
+ "type": "boolean"
1591
+ },
1592
+ "agentType": {
1593
+ "type": "string"
1594
+ },
1595
+ "isCliPanel": {
1596
+ "type": "boolean"
1597
+ },
1598
+ "position": {
1599
+ "type": "number"
1600
+ },
1601
+ "createdAt": {
1602
+ "type": "string"
1603
+ },
1604
+ "lastActiveAt": {
1605
+ "type": "string"
1606
+ }
1607
+ },
1608
+ "additionalProperties": false
1609
+ }
1610
+ }
1611
+ },
1612
+ "additionalProperties": false
1613
+ },
1614
+ "panelOutputResult": {
1615
+ "type": "object",
1616
+ "required": [
1617
+ "ok",
1618
+ "panelId",
1619
+ "outputs",
1620
+ "text"
1621
+ ],
1622
+ "properties": {
1623
+ "ok": {
1624
+ "const": true
1625
+ },
1626
+ "panelId": {
1627
+ "type": "string"
1628
+ },
1629
+ "paneId": {
1630
+ "type": "string"
1631
+ },
1632
+ "limit": {
1633
+ "type": "number"
1634
+ },
1635
+ "outputs": {
1636
+ "type": "array",
1637
+ "items": {
1638
+ "type": "object",
1639
+ "required": [
1640
+ "type",
1641
+ "data",
1642
+ "timestamp"
1643
+ ],
1644
+ "properties": {
1645
+ "type": {
1646
+ "type": "string"
1647
+ },
1648
+ "data": {},
1649
+ "timestamp": {
1650
+ "type": "string"
1651
+ }
1652
+ },
1653
+ "additionalProperties": false
1654
+ }
1655
+ },
1656
+ "text": {
1657
+ "type": "string"
1658
+ }
1659
+ },
1660
+ "additionalProperties": false
1661
+ },
1662
+ "panelInputRequest": {
1663
+ "type": "object",
1664
+ "required": [
1665
+ "panelId",
1666
+ "input"
1667
+ ],
1668
+ "properties": {
1669
+ "panelId": {
1670
+ "type": "string"
1671
+ },
1672
+ "input": {
1673
+ "type": "string"
1674
+ }
1675
+ },
1676
+ "additionalProperties": false
1677
+ },
1678
+ "panelInputResult": {
1679
+ "type": "object",
1680
+ "required": [
1681
+ "ok",
1682
+ "panelId",
1683
+ "inputBytes",
1684
+ "sentAt"
1685
+ ],
1686
+ "properties": {
1687
+ "ok": {
1688
+ "const": true
1689
+ },
1690
+ "panelId": {
1691
+ "type": "string"
1692
+ },
1693
+ "paneId": {
1694
+ "type": "string"
1695
+ },
1696
+ "inputBytes": {
1697
+ "type": "number"
1698
+ },
1699
+ "sentAt": {
1700
+ "type": "string"
1701
+ }
1702
+ },
1703
+ "additionalProperties": false
1704
+ },
1260
1705
  "agentContextBriefResult": {
1261
1706
  "type": "object",
1262
1707
  "required": [
@@ -1399,8 +1844,10 @@ exports.RUNPANE_CONTRACT = {
1399
1844
  "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.",
1400
1845
  "rules": [
1401
1846
  "Start with `runpane repos list --json` to find the saved repository when unsure.",
1847
+ "If WSL cannot find `/tmp/pane-daemon.../daemon.sock`, the user may be running Windows Pane; try `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane repos list --json'`.",
1402
1848
  "If the repository exists on disk but is not saved in Pane, use `runpane repos add --path <repo> --yes --json` before creating panes.",
1403
1849
  "Use `runpane panes create` to create a Pane session and open a built-in agent or custom terminal command.",
1850
+ "Use `runpane panels list`, `runpane panels output`, and `runpane panels input` when you need to inspect or drive an existing Pane terminal.",
1404
1851
  "Use `runpane agent-context --command <command>` for detailed command definitions only when needed."
1405
1852
  ],
1406
1853
  "detailCommand": "runpane agent-context --command <command> [--json]",
@@ -1433,6 +1880,15 @@ exports.RUNPANE_CONTRACT = {
1433
1880
  "--pane-dir <path>"
1434
1881
  ]
1435
1882
  },
1883
+ {
1884
+ "name": "panes list",
1885
+ "summary": "List Pane sessions, optionally scoped to a saved repository.",
1886
+ "arguments": [
1887
+ "--repo <selector>",
1888
+ "--json",
1889
+ "--pane-dir <path>"
1890
+ ]
1891
+ },
1436
1892
  {
1437
1893
  "name": "panes create",
1438
1894
  "summary": "Create one or more Pane sessions in a saved repository and open a terminal-backed tool tab.",
@@ -1446,6 +1902,37 @@ exports.RUNPANE_CONTRACT = {
1446
1902
  "--yes",
1447
1903
  "--json"
1448
1904
  ]
1905
+ },
1906
+ {
1907
+ "name": "panels list",
1908
+ "summary": "List tool panels inside a Pane session.",
1909
+ "arguments": [
1910
+ "--pane <pane-id>",
1911
+ "--json",
1912
+ "--pane-dir <path>"
1913
+ ]
1914
+ },
1915
+ {
1916
+ "name": "panels output",
1917
+ "summary": "Read recent terminal output from a panel.",
1918
+ "arguments": [
1919
+ "--panel <panel-id>",
1920
+ "--limit <count>",
1921
+ "--json",
1922
+ "--pane-dir <path>"
1923
+ ]
1924
+ },
1925
+ {
1926
+ "name": "panels input",
1927
+ "summary": "Send input bytes to a terminal panel.",
1928
+ "arguments": [
1929
+ "--panel <panel-id>",
1930
+ "--text <text>",
1931
+ "--input-file <path|->",
1932
+ "--yes",
1933
+ "--json",
1934
+ "--pane-dir <path>"
1935
+ ]
1449
1936
  }
1450
1937
  ]
1451
1938
  },
@@ -1660,7 +2147,8 @@ exports.RUNPANE_CONTRACT = {
1660
2147
  "repoListResult"
1661
2148
  ],
1662
2149
  "notes": [
1663
- "Requires a running Pane app or daemon for the selected Pane data directory."
2150
+ "Requires a running Pane app or daemon for the selected Pane data directory.",
2151
+ "If this fails from WSL with a missing `/tmp/pane-daemon.../daemon.sock`, the user may be running Windows Pane. Retry via `powershell.exe -NoProfile -Command 'Set-Location $env:TEMP; runpane repos list --json'`."
1664
2152
  ]
1665
2153
  },
1666
2154
  "repos add": {
@@ -1712,7 +2200,43 @@ exports.RUNPANE_CONTRACT = {
1712
2200
  "repoAddResult"
1713
2201
  ],
1714
2202
  "notes": [
1715
- "It does not create directories or initialize git repositories by default."
2203
+ "It does not create directories or initialize git repositories by default.",
2204
+ "For a Windows Pane app managing WSL repositories, prefer a saved WSL repo from `repos list` when possible. Adding a brand-new WSL repo from Windows may require WSL-aware path handling."
2205
+ ]
2206
+ },
2207
+ "panes list": {
2208
+ "name": "panes list",
2209
+ "summary": "List Pane sessions, optionally scoped to a saved repository.",
2210
+ "details": "Use this after selecting a repository to find existing Pane sessions and their ids before inspecting panels.",
2211
+ "requiresPaneDaemon": true,
2212
+ "mutates": false,
2213
+ "arguments": [
2214
+ {
2215
+ "name": "--repo",
2216
+ "value": "<selector>",
2217
+ "required": false,
2218
+ "description": "Optional repository selector: active, id, exact path, or saved repository name."
2219
+ },
2220
+ {
2221
+ "name": "--json",
2222
+ "required": false,
2223
+ "description": "Print machine-readable output."
2224
+ },
2225
+ {
2226
+ "name": "--pane-dir",
2227
+ "value": "<path>",
2228
+ "required": false,
2229
+ "description": "Connect to a specific Pane data directory."
2230
+ }
2231
+ ],
2232
+ "examples": [
2233
+ "runpane panes list --repo active --json"
2234
+ ],
2235
+ "jsonSchemas": [
2236
+ "paneListResult"
2237
+ ],
2238
+ "notes": [
2239
+ "Without --repo, this lists sessions across saved Pane repositories."
1716
2240
  ]
1717
2241
  },
1718
2242
  "panes create": {
@@ -1785,7 +2309,139 @@ exports.RUNPANE_CONTRACT = {
1785
2309
  ],
1786
2310
  "notes": [
1787
2311
  "At least one of --agent or --tool-command is required unless --from-json is used.",
1788
- "The built-in agent templates come from the runpane contract; custom terminal commands can pass agent-specific flags when requested by the user."
2312
+ "The built-in agent templates come from the runpane contract; custom terminal commands can pass agent-specific flags when requested by the user.",
2313
+ "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'`."
2314
+ ]
2315
+ },
2316
+ "panels list": {
2317
+ "name": "panels list",
2318
+ "summary": "List tool panels inside a Pane session.",
2319
+ "details": "Use this to find the terminal panel id to inspect or control after creating or selecting a Pane session.",
2320
+ "requiresPaneDaemon": true,
2321
+ "mutates": false,
2322
+ "arguments": [
2323
+ {
2324
+ "name": "--pane",
2325
+ "value": "<pane-id>",
2326
+ "required": true,
2327
+ "description": "Pane/session id."
2328
+ },
2329
+ {
2330
+ "name": "--json",
2331
+ "required": false,
2332
+ "description": "Print machine-readable output."
2333
+ },
2334
+ {
2335
+ "name": "--pane-dir",
2336
+ "value": "<path>",
2337
+ "required": false,
2338
+ "description": "Connect to a specific Pane data directory."
2339
+ }
2340
+ ],
2341
+ "examples": [
2342
+ "runpane panels list --pane <pane-id> --json"
2343
+ ],
2344
+ "jsonSchemas": [
2345
+ "panelListResult"
2346
+ ],
2347
+ "notes": [
2348
+ "The ids returned here are stable inputs for `panels output` and `panels input`."
2349
+ ]
2350
+ },
2351
+ "panels output": {
2352
+ "name": "panels output",
2353
+ "summary": "Read recent terminal output from a panel.",
2354
+ "details": "Use this to inspect what is currently visible or recently emitted by a terminal-backed panel.",
2355
+ "requiresPaneDaemon": true,
2356
+ "mutates": false,
2357
+ "arguments": [
2358
+ {
2359
+ "name": "--panel",
2360
+ "value": "<panel-id>",
2361
+ "required": true,
2362
+ "description": "Tool panel id."
2363
+ },
2364
+ {
2365
+ "name": "--limit",
2366
+ "value": "<count>",
2367
+ "required": false,
2368
+ "description": "Maximum output records to read."
2369
+ },
2370
+ {
2371
+ "name": "--json",
2372
+ "required": false,
2373
+ "description": "Print machine-readable output."
2374
+ },
2375
+ {
2376
+ "name": "--pane-dir",
2377
+ "value": "<path>",
2378
+ "required": false,
2379
+ "description": "Connect to a specific Pane data directory."
2380
+ }
2381
+ ],
2382
+ "examples": [
2383
+ "runpane panels output --panel <panel-id> --limit 200 --json"
2384
+ ],
2385
+ "jsonSchemas": [
2386
+ "panelOutputResult"
2387
+ ],
2388
+ "notes": [
2389
+ "Default text output concatenates stdout/stderr-like records. Use --json when an agent needs timestamps and record types."
2390
+ ]
2391
+ },
2392
+ "panels input": {
2393
+ "name": "panels input",
2394
+ "summary": "Send input bytes to a terminal panel.",
2395
+ "details": "Use this to answer prompts or continue an agent inside an existing Pane terminal panel.",
2396
+ "requiresPaneDaemon": true,
2397
+ "mutates": true,
2398
+ "arguments": [
2399
+ {
2400
+ "name": "--panel",
2401
+ "value": "<panel-id>",
2402
+ "required": true,
2403
+ "description": "Terminal panel id."
2404
+ },
2405
+ {
2406
+ "name": "--text",
2407
+ "value": "<text>",
2408
+ "required": false,
2409
+ "description": "Text bytes to send."
2410
+ },
2411
+ {
2412
+ "name": "--input-file",
2413
+ "value": "<path|->",
2414
+ "required": false,
2415
+ "description": "Read input from a file or stdin."
2416
+ },
2417
+ {
2418
+ "name": "--yes",
2419
+ "required": false,
2420
+ "description": "Skip confirmation for this mutating command."
2421
+ },
2422
+ {
2423
+ "name": "--json",
2424
+ "required": false,
2425
+ "description": "Print machine-readable output."
2426
+ },
2427
+ {
2428
+ "name": "--pane-dir",
2429
+ "value": "<path>",
2430
+ "required": false,
2431
+ "description": "Connect to a specific Pane data directory."
2432
+ }
2433
+ ],
2434
+ "examples": [
2435
+ "runpane panels input --panel <panel-id> --text \"Continue\\n\" --yes --json",
2436
+ "printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes"
2437
+ ],
2438
+ "jsonSchemas": [
2439
+ "panelInputRequest",
2440
+ "panelInputResult"
2441
+ ],
2442
+ "notes": [
2443
+ "Input is sent exactly as provided. Include `\\n` or `\\r` when the terminal should receive Enter.",
2444
+ "Runpane records action metadata and errors for observability, but should not log full input text by default."
1789
2445
  ]
1790
2446
  }
1791
2447
  },
@@ -1799,7 +2455,12 @@ exports.RUNPANE_CONTRACT = {
1799
2455
  "Common commands:",
1800
2456
  "- `runpane repos list --json`",
1801
2457
  "- `runpane repos add --path <repo> --yes --json`",
1802
- "- `runpane panes create --repo active --name <name> --agent codex --prompt \"<task>\" --yes`"
2458
+ "- `runpane panes create --repo active --name <name> --agent codex --prompt \"<task>\" --yes`",
2459
+ "- `runpane panels list --pane <pane-id> --json`",
2460
+ "- `runpane panels output --panel <panel-id> --limit 200 --json`",
2461
+ "- `runpane panels input --panel <panel-id> --text \"<input>\" --yes`",
2462
+ "",
2463
+ "WSL note: if `runpane repos list` cannot find `/tmp/pane-daemon.../daemon.sock`, 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."
1803
2464
  ]
1804
2465
  }
1805
2466
  };