runpane 2.4.104 → 2.4.106
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +24 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +7 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +50 -11
- package/dist/commands.js.map +1 -1
- package/dist/doctor.d.ts +7 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +14 -0
- package/dist/doctor.js.map +1 -1
- package/dist/generated/contract.d.ts +346 -18
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +711 -14
- package/dist/generated/contract.js.map +1 -1
- package/dist/localControl.d.ts +9 -1
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +263 -1
- package/dist/localControl.js.map +1 -1
- package/package.json +1 -1
|
@@ -33,6 +33,10 @@ exports.RUNPANE_CONTRACT = {
|
|
|
33
33
|
"format": "lines",
|
|
34
34
|
"heartbeatSeconds": 60,
|
|
35
35
|
"idleAfterMs": 600000,
|
|
36
|
+
"settleMs": 0,
|
|
37
|
+
"blockedSettleMs": 0,
|
|
38
|
+
"minIntervalMs": 0,
|
|
39
|
+
"idleBackoff": false,
|
|
36
40
|
"agentsOnly": true,
|
|
37
41
|
"includeHeldInputPresence": true
|
|
38
42
|
}
|
|
@@ -223,7 +227,7 @@ exports.RUNPANE_CONTRACT = {
|
|
|
223
227
|
"name": "watch",
|
|
224
228
|
"summary": "Wait for workspace agent and Pane transitions using a daemon-held cursor.",
|
|
225
229
|
"usage": [
|
|
226
|
-
"runpane watch [--as <name>|--since <generation>] [--follow] [--format <lines|json>] [--heartbeat <seconds>] [--idle-after <ms>] [--all-managed|--pane <id>] [--include-shells] [--self-test] [--kinds <kind,...>] [--repo <selector>] [--name-contains <text>] [--timeout-ms <ms>] [--from <now|earliest>] [--json]"
|
|
230
|
+
"runpane watch [--as <name>|--since <generation>] [--follow] [--format <lines|json>] [--heartbeat <seconds>] [--idle-after <ms>] [--settle <ms>] [--blocked-settle <ms>] [--min-interval <ms>] [--idle-backoff] [--all-managed|--pane <id>] [--include-shells] [--self-test] [--kinds <kind,...>] [--repo <selector>] [--name-contains <text>] [--timeout-ms <ms>] [--from <now|earliest>] [--json]"
|
|
227
231
|
],
|
|
228
232
|
"jsonSchemas": [
|
|
229
233
|
"workspaceWaitRequest",
|
|
@@ -390,6 +394,91 @@ exports.RUNPANE_CONTRACT = {
|
|
|
390
394
|
"jsonSchemas": [
|
|
391
395
|
"panelWaitResult"
|
|
392
396
|
]
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"name": "sessions list",
|
|
400
|
+
"summary": "List durable named orchestration Sessions.",
|
|
401
|
+
"usage": [
|
|
402
|
+
"runpane sessions list [--json] [--pane-dir <path>]"
|
|
403
|
+
],
|
|
404
|
+
"jsonSchemas": [
|
|
405
|
+
"sessionListResult"
|
|
406
|
+
]
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
"name": "sessions create",
|
|
410
|
+
"summary": "Create a durable named orchestration Session and its hidden terminal owner.",
|
|
411
|
+
"usage": [
|
|
412
|
+
"runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]"
|
|
413
|
+
],
|
|
414
|
+
"mutates": true,
|
|
415
|
+
"jsonSchemas": [
|
|
416
|
+
"sessionResult"
|
|
417
|
+
]
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"name": "sessions get",
|
|
421
|
+
"summary": "Read one durable named orchestration Session.",
|
|
422
|
+
"usage": [
|
|
423
|
+
"runpane sessions get --session <id|name> [--json] [--pane-dir <path>]"
|
|
424
|
+
],
|
|
425
|
+
"jsonSchemas": [
|
|
426
|
+
"sessionResult"
|
|
427
|
+
]
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"name": "sessions update",
|
|
431
|
+
"summary": "Update a Session overview from structured JSON.",
|
|
432
|
+
"usage": [
|
|
433
|
+
"runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]"
|
|
434
|
+
],
|
|
435
|
+
"mutates": true,
|
|
436
|
+
"jsonSchemas": [
|
|
437
|
+
"sessionResult"
|
|
438
|
+
]
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"name": "sessions set-agent",
|
|
442
|
+
"summary": "Switch the durable terminal agent for a named Session.",
|
|
443
|
+
"usage": [
|
|
444
|
+
"runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]"
|
|
445
|
+
],
|
|
446
|
+
"mutates": true,
|
|
447
|
+
"jsonSchemas": [
|
|
448
|
+
"sessionResult"
|
|
449
|
+
]
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"name": "sessions associate",
|
|
453
|
+
"summary": "Associate a user-visible Pane with a named Session.",
|
|
454
|
+
"usage": [
|
|
455
|
+
"runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]"
|
|
456
|
+
],
|
|
457
|
+
"mutates": true,
|
|
458
|
+
"jsonSchemas": [
|
|
459
|
+
"sessionResult"
|
|
460
|
+
]
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
"name": "sessions detach",
|
|
464
|
+
"summary": "Detach a Pane from a named Session.",
|
|
465
|
+
"usage": [
|
|
466
|
+
"runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]"
|
|
467
|
+
],
|
|
468
|
+
"mutates": true,
|
|
469
|
+
"jsonSchemas": [
|
|
470
|
+
"sessionResult"
|
|
471
|
+
]
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"name": "sessions overview",
|
|
475
|
+
"summary": "Read a live status, activity, git, and pull request overview for a named Session.",
|
|
476
|
+
"usage": [
|
|
477
|
+
"runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]"
|
|
478
|
+
],
|
|
479
|
+
"jsonSchemas": [
|
|
480
|
+
"sessionOverviewResult"
|
|
481
|
+
]
|
|
393
482
|
}
|
|
394
483
|
],
|
|
395
484
|
"flags": {
|
|
@@ -563,7 +652,7 @@ exports.RUNPANE_CONTRACT = {
|
|
|
563
652
|
{
|
|
564
653
|
"name": "--from-json",
|
|
565
654
|
"value": "<path|->",
|
|
566
|
-
"description": "Read a
|
|
655
|
+
"description": "Read a structured JSON request payload from a file or stdin."
|
|
567
656
|
},
|
|
568
657
|
{
|
|
569
658
|
"name": "--timeout-ms",
|
|
@@ -665,10 +754,30 @@ exports.RUNPANE_CONTRACT = {
|
|
|
665
754
|
"value": "<milliseconds>",
|
|
666
755
|
"description": "Emit agent.idle after this READY duration; 0 disables idle events."
|
|
667
756
|
},
|
|
757
|
+
{
|
|
758
|
+
"name": "--settle",
|
|
759
|
+
"value": "<milliseconds>",
|
|
760
|
+
"description": "Follow-only opt-in: emit READY only after the panel stays idle this long; a BUSY inside the window cancels it silently."
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
"name": "--blocked-settle",
|
|
764
|
+
"value": "<milliseconds>",
|
|
765
|
+
"description": "Follow-only opt-in: emit BLOCKED only after the panel stays blocked this long; an in-pane answer inside the window cancels it silently."
|
|
766
|
+
},
|
|
767
|
+
{
|
|
768
|
+
"name": "--min-interval",
|
|
769
|
+
"value": "<milliseconds>",
|
|
770
|
+
"description": "Follow-only opt-in: hold non-urgent lines and flush them together at most once per interval; BLOCKED bypasses it."
|
|
771
|
+
},
|
|
668
772
|
{
|
|
669
773
|
"name": "--body-file",
|
|
670
774
|
"value": "<path|->",
|
|
671
775
|
"description": "Read diagnostic report evidence from a file or stdin."
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
"name": "--session",
|
|
779
|
+
"value": "<id|name>",
|
|
780
|
+
"description": "Named orchestration Session id or exact name."
|
|
672
781
|
}
|
|
673
782
|
],
|
|
674
783
|
"localBoolean": [
|
|
@@ -736,6 +845,10 @@ exports.RUNPANE_CONTRACT = {
|
|
|
736
845
|
"name": "--self-test",
|
|
737
846
|
"description": "Probe the current daemon watch path without advancing a named cursor."
|
|
738
847
|
},
|
|
848
|
+
{
|
|
849
|
+
"name": "--idle-backoff",
|
|
850
|
+
"description": "Follow-only opt-in: IDLE fires at --idle-after, then 30m, 1h, 3h, then daily per panel; any activity resets it."
|
|
851
|
+
},
|
|
739
852
|
{
|
|
740
853
|
"name": "--report",
|
|
741
854
|
"description": "Prepare a redacted doctor report; external filing still requires --yes."
|
|
@@ -758,6 +871,14 @@ exports.RUNPANE_CONTRACT = {
|
|
|
758
871
|
" runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json]",
|
|
759
872
|
" runpane repos list [--json]",
|
|
760
873
|
" runpane repos add --path <path> [--name <name>]",
|
|
874
|
+
" runpane sessions list [--json] [--pane-dir <path>]",
|
|
875
|
+
" runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]",
|
|
876
|
+
" runpane sessions get --session <id|name> [--json] [--pane-dir <path>]",
|
|
877
|
+
" runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]",
|
|
878
|
+
" runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]",
|
|
879
|
+
" runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]",
|
|
880
|
+
" runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]",
|
|
881
|
+
" runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]",
|
|
761
882
|
" runpane panes list [--repo <selector>] [--json]",
|
|
762
883
|
" runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json]",
|
|
763
884
|
" runpane workspace state [--repo <selector>] [--json]",
|
|
@@ -983,6 +1104,10 @@ exports.RUNPANE_CONTRACT = {
|
|
|
983
1104
|
" --format <lines|json> Output format; lines is the follow default",
|
|
984
1105
|
" --heartbeat <seconds> Healthy-silence bound; defaults to 60 under --follow",
|
|
985
1106
|
" --idle-after <ms> Re-firing READY idle interval; defaults to 600000 under --follow",
|
|
1107
|
+
" --settle <ms> Opt-in: emit READY only after this quiet window (--follow only)",
|
|
1108
|
+
" --blocked-settle <ms> Opt-in: emit BLOCKED only after this window (--follow only)",
|
|
1109
|
+
" --min-interval <ms> Opt-in: batch non-urgent lines per interval; BLOCKED bypasses (--follow only)",
|
|
1110
|
+
" --idle-backoff Opt-in: IDLE at --idle-after, 30m, 1h, 3h, then daily (--follow only)",
|
|
986
1111
|
" --all-managed Explicitly watch all managed panes",
|
|
987
1112
|
" --include-shells Include ordinary shell panels",
|
|
988
1113
|
" --agents-only Limit to CLI agent panels",
|
|
@@ -997,7 +1122,13 @@ exports.RUNPANE_CONTRACT = {
|
|
|
997
1122
|
" --ack-now Use at-most-once named-cursor delivery",
|
|
998
1123
|
" --include-held-input Include unsubmitted composer text in JSON",
|
|
999
1124
|
" --no-held-input Disable redacted STUCK detection",
|
|
1000
|
-
" --json Alias for --format json"
|
|
1125
|
+
" --json Alias for --format json",
|
|
1126
|
+
"",
|
|
1127
|
+
"Defaults are responsive: no settle, no batching, all kinds, IDLE every --idle-after. BUSY carries no action; drop it with --kinds.",
|
|
1128
|
+
"Expensive consumers opt in: --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff",
|
|
1129
|
+
"Pane Chat arms those flags itself through its skill; pass them only for your own scripts.",
|
|
1130
|
+
"STUCK means real unsubmitted composer text; an agent prompt suggestion never counts.",
|
|
1131
|
+
"Dead watch: HEARTBEAT is proof of life only. Judge death by a non-zero exit or a WATCH ERROR line, not by silence."
|
|
1001
1132
|
],
|
|
1002
1133
|
"panes create": [
|
|
1003
1134
|
"Usage:",
|
|
@@ -1253,6 +1384,100 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1253
1384
|
" --strategy <strategy> Defaults to auto; Codex sends Ctrl+Enter and other panels send Enter.",
|
|
1254
1385
|
" --yes Skip confirmation prompts.",
|
|
1255
1386
|
" --json Print JSON output."
|
|
1387
|
+
],
|
|
1388
|
+
"sessions list": [
|
|
1389
|
+
"Usage:",
|
|
1390
|
+
"runpane sessions list [--json] [--pane-dir <path>]",
|
|
1391
|
+
"",
|
|
1392
|
+
"Options:",
|
|
1393
|
+
" --session <id|name> Named Session id or exact name.",
|
|
1394
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
1395
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
1396
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
1397
|
+
" --json Print JSON output."
|
|
1398
|
+
],
|
|
1399
|
+
"sessions create": [
|
|
1400
|
+
"Usage:",
|
|
1401
|
+
"runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]",
|
|
1402
|
+
"",
|
|
1403
|
+
"Options:",
|
|
1404
|
+
" --session <id|name> Named Session id or exact name.",
|
|
1405
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
1406
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
1407
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
1408
|
+
" --json Print JSON output."
|
|
1409
|
+
],
|
|
1410
|
+
"sessions get": [
|
|
1411
|
+
"Usage:",
|
|
1412
|
+
"runpane sessions get --session <id|name> [--json] [--pane-dir <path>]",
|
|
1413
|
+
"",
|
|
1414
|
+
"Options:",
|
|
1415
|
+
" --session <id|name> Named Session id or exact name.",
|
|
1416
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
1417
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
1418
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
1419
|
+
" --json Print JSON output."
|
|
1420
|
+
],
|
|
1421
|
+
"sessions update": [
|
|
1422
|
+
"Usage:",
|
|
1423
|
+
"runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]",
|
|
1424
|
+
"",
|
|
1425
|
+
"Options:",
|
|
1426
|
+
" --session <id|name> Named Session id or exact name.",
|
|
1427
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
1428
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
1429
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
1430
|
+
" --json Print JSON output."
|
|
1431
|
+
],
|
|
1432
|
+
"sessions set-agent": [
|
|
1433
|
+
"Usage:",
|
|
1434
|
+
"runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]",
|
|
1435
|
+
"",
|
|
1436
|
+
"Options:",
|
|
1437
|
+
" --session <id|name> Named Session id or exact name.",
|
|
1438
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
1439
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
1440
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
1441
|
+
" --json Print JSON output."
|
|
1442
|
+
],
|
|
1443
|
+
"sessions associate": [
|
|
1444
|
+
"Usage:",
|
|
1445
|
+
"runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]",
|
|
1446
|
+
"",
|
|
1447
|
+
"Options:",
|
|
1448
|
+
" --session <id|name> Named Session id or exact name.",
|
|
1449
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
1450
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
1451
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
1452
|
+
" --json Print JSON output."
|
|
1453
|
+
],
|
|
1454
|
+
"sessions detach": [
|
|
1455
|
+
"Usage:",
|
|
1456
|
+
"runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]",
|
|
1457
|
+
"",
|
|
1458
|
+
"Options:",
|
|
1459
|
+
" --session <id|name> Named Session id or exact name.",
|
|
1460
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
1461
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
1462
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
1463
|
+
" --json Print JSON output."
|
|
1464
|
+
],
|
|
1465
|
+
"sessions overview": [
|
|
1466
|
+
"Usage:",
|
|
1467
|
+
"runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]",
|
|
1468
|
+
"",
|
|
1469
|
+
"Options:",
|
|
1470
|
+
" --session <id|name> Named Session id or exact name.",
|
|
1471
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
1472
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
1473
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
1474
|
+
" --json Print JSON output."
|
|
1475
|
+
],
|
|
1476
|
+
"sessions": [
|
|
1477
|
+
"Usage:",
|
|
1478
|
+
" runpane sessions <list|create|get|update|set-agent|associate|detach|overview> [options]",
|
|
1479
|
+
"",
|
|
1480
|
+
"Use a named Session to keep context, activity, and evidence attached to one orchestration thread."
|
|
1256
1481
|
]
|
|
1257
1482
|
},
|
|
1258
1483
|
"pip": {
|
|
@@ -1484,6 +1709,10 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1484
1709
|
" --format <lines|json>",
|
|
1485
1710
|
" --heartbeat <seconds>",
|
|
1486
1711
|
" --idle-after <ms>",
|
|
1712
|
+
" --settle <ms> Opt-in READY quiet window (--follow only)",
|
|
1713
|
+
" --blocked-settle <ms> Opt-in BLOCKED window (--follow only)",
|
|
1714
|
+
" --min-interval <ms> Opt-in batching; BLOCKED bypasses (--follow only)",
|
|
1715
|
+
" --idle-backoff Opt-in IDLE backoff (--follow only)",
|
|
1487
1716
|
" --all-managed",
|
|
1488
1717
|
" --include-shells",
|
|
1489
1718
|
" --agents-only",
|
|
@@ -1498,7 +1727,13 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1498
1727
|
" --ack-now",
|
|
1499
1728
|
" --include-held-input",
|
|
1500
1729
|
" --no-held-input",
|
|
1501
|
-
" --json Alias for --format json"
|
|
1730
|
+
" --json Alias for --format json",
|
|
1731
|
+
"",
|
|
1732
|
+
"Defaults are responsive: no settle, no batching, all kinds, IDLE every --idle-after. BUSY carries no action; drop it with --kinds.",
|
|
1733
|
+
"Expensive consumers opt in: --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff",
|
|
1734
|
+
"Pane Chat arms those flags itself through its skill; pass them only for your own scripts.",
|
|
1735
|
+
"STUCK means real unsubmitted composer text; an agent prompt suggestion never counts.",
|
|
1736
|
+
"Dead watch: HEARTBEAT is proof of life only. Judge death by a non-zero exit or a WATCH ERROR line, not by silence."
|
|
1502
1737
|
],
|
|
1503
1738
|
"panes create": [
|
|
1504
1739
|
"Usage:",
|
|
@@ -1754,6 +1989,100 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1754
1989
|
" --strategy <strategy> Defaults to auto; Codex sends Ctrl+Enter and other panels send Enter.",
|
|
1755
1990
|
" --yes Skip confirmation prompts.",
|
|
1756
1991
|
" --json Print JSON output."
|
|
1992
|
+
],
|
|
1993
|
+
"sessions list": [
|
|
1994
|
+
"Usage:",
|
|
1995
|
+
"python -m runpane sessions list [--json] [--pane-dir <path>]",
|
|
1996
|
+
"",
|
|
1997
|
+
"Options:",
|
|
1998
|
+
" --session <id|name> Named Session id or exact name.",
|
|
1999
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
2000
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
2001
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
2002
|
+
" --json Print JSON output."
|
|
2003
|
+
],
|
|
2004
|
+
"sessions create": [
|
|
2005
|
+
"Usage:",
|
|
2006
|
+
"python -m runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]",
|
|
2007
|
+
"",
|
|
2008
|
+
"Options:",
|
|
2009
|
+
" --session <id|name> Named Session id or exact name.",
|
|
2010
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
2011
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
2012
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
2013
|
+
" --json Print JSON output."
|
|
2014
|
+
],
|
|
2015
|
+
"sessions get": [
|
|
2016
|
+
"Usage:",
|
|
2017
|
+
"python -m runpane sessions get --session <id|name> [--json] [--pane-dir <path>]",
|
|
2018
|
+
"",
|
|
2019
|
+
"Options:",
|
|
2020
|
+
" --session <id|name> Named Session id or exact name.",
|
|
2021
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
2022
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
2023
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
2024
|
+
" --json Print JSON output."
|
|
2025
|
+
],
|
|
2026
|
+
"sessions update": [
|
|
2027
|
+
"Usage:",
|
|
2028
|
+
"python -m runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]",
|
|
2029
|
+
"",
|
|
2030
|
+
"Options:",
|
|
2031
|
+
" --session <id|name> Named Session id or exact name.",
|
|
2032
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
2033
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
2034
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
2035
|
+
" --json Print JSON output."
|
|
2036
|
+
],
|
|
2037
|
+
"sessions set-agent": [
|
|
2038
|
+
"Usage:",
|
|
2039
|
+
"python -m runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]",
|
|
2040
|
+
"",
|
|
2041
|
+
"Options:",
|
|
2042
|
+
" --session <id|name> Named Session id or exact name.",
|
|
2043
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
2044
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
2045
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
2046
|
+
" --json Print JSON output."
|
|
2047
|
+
],
|
|
2048
|
+
"sessions associate": [
|
|
2049
|
+
"Usage:",
|
|
2050
|
+
"python -m runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]",
|
|
2051
|
+
"",
|
|
2052
|
+
"Options:",
|
|
2053
|
+
" --session <id|name> Named Session id or exact name.",
|
|
2054
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
2055
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
2056
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
2057
|
+
" --json Print JSON output."
|
|
2058
|
+
],
|
|
2059
|
+
"sessions detach": [
|
|
2060
|
+
"Usage:",
|
|
2061
|
+
"python -m runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]",
|
|
2062
|
+
"",
|
|
2063
|
+
"Options:",
|
|
2064
|
+
" --session <id|name> Named Session id or exact name.",
|
|
2065
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
2066
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
2067
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
2068
|
+
" --json Print JSON output."
|
|
2069
|
+
],
|
|
2070
|
+
"sessions overview": [
|
|
2071
|
+
"Usage:",
|
|
2072
|
+
"python -m runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]",
|
|
2073
|
+
"",
|
|
2074
|
+
"Options:",
|
|
2075
|
+
" --session <id|name> Named Session id or exact name.",
|
|
2076
|
+
" --from-json <path|-> Read structured JSON from a file or stdin.",
|
|
2077
|
+
" --pane <pane-id> User-visible Pane to associate or detach.",
|
|
2078
|
+
" --agent <codex|claude|cursor> Agent terminal to use.",
|
|
2079
|
+
" --json Print JSON output."
|
|
2080
|
+
],
|
|
2081
|
+
"sessions": [
|
|
2082
|
+
"Usage:",
|
|
2083
|
+
" runpane sessions <list|create|get|update|set-agent|associate|detach|overview> [options]",
|
|
2084
|
+
"",
|
|
2085
|
+
"Use a named Session to keep context, activity, and evidence attached to one orchestration thread."
|
|
1757
2086
|
]
|
|
1758
2087
|
}
|
|
1759
2088
|
},
|
|
@@ -1834,6 +2163,17 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1834
2163
|
"runpane panels list --pane <pane-id> --json",
|
|
1835
2164
|
"runpane panels output --panel <panel-id> --limit 200 --json",
|
|
1836
2165
|
"printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes --json",
|
|
2166
|
+
"runpane watch --self-test",
|
|
2167
|
+
"runpane watch --follow",
|
|
2168
|
+
"runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff",
|
|
2169
|
+
"runpane sessions list [--json] [--pane-dir <path>]",
|
|
2170
|
+
"runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]",
|
|
2171
|
+
"runpane sessions get --session <id|name> [--json] [--pane-dir <path>]",
|
|
2172
|
+
"runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]",
|
|
2173
|
+
"runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]",
|
|
2174
|
+
"runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]",
|
|
2175
|
+
"runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]",
|
|
2176
|
+
"runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]",
|
|
1837
2177
|
"runpane help",
|
|
1838
2178
|
"runpane <command> --help"
|
|
1839
2179
|
],
|
|
@@ -1862,7 +2202,16 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1862
2202
|
"`runpane panels input` sends exact input bytes to one terminal panel. Prefer `--input-file` for newlines, Ctrl-C, quotes, or shell-sensitive text.",
|
|
1863
2203
|
"`runpane panes create --prompt` is an alias for `--initial-input`; request JSON and daemon payloads should use the canonical `initialInput` field.",
|
|
1864
2204
|
"If composer submission cannot be verified without risking a duplicate, the create item is unsuccessful with `initialInput.staged`, `initialInput.attempts`, `initialInput.blocked.kind: submission_unverified`, and an actionable `nextCommand`. The CLI-facing `--prompt` alias maps to this canonical `initialInput` result.",
|
|
1865
|
-
"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'`."
|
|
2205
|
+
"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'`.",
|
|
2206
|
+
"`runpane watch` waits for workspace transitions from the daemon journal without polling. `--follow` keeps waiting and prints one line per event: READY, BLOCKED, IDLE, STUCK, NEW, GONE, EXIT, plus HEARTBEAT every 60 seconds as proof of life. Defaults are responsive: no settle, no batching, all kinds, IDLE every `--idle-after`. Expensive consumers opt into `--kinds` (drop `agent.busy`; BUSY carries no action), `--settle <ms>` (READY only after a quiet window; a BUSY inside it cancels the line), `--blocked-settle <ms>`, `--min-interval <ms>` (batch non-urgent lines; BLOCKED bypasses it), and `--idle-backoff` (10m, 30m, 1h, 3h, then daily). The recommended orchestrator invocation is `runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff`, which budgets about 6 wake-ups per active pane per hour worst case, usually 1-3. Pane Chat arms it automatically through its skill; only your own scripts need the flags. STUCK means real unsubmitted composer text, never an agent prompt suggestion. Judge a dead watch by a non-zero exit or a WATCH ERROR line, not by silence.",
|
|
2207
|
+
"`sessions list` list durable named orchestration Sessions.",
|
|
2208
|
+
"`sessions create` create a durable named orchestration Session and its hidden terminal owner.",
|
|
2209
|
+
"`sessions get` read one durable named orchestration Session.",
|
|
2210
|
+
"`sessions update` update a Session overview from structured JSON.",
|
|
2211
|
+
"`sessions set-agent` switch the durable terminal agent for a named Session.",
|
|
2212
|
+
"`sessions associate` associate a user-visible Pane with a named Session.",
|
|
2213
|
+
"`sessions detach` detach a Pane from a named Session.",
|
|
2214
|
+
"`sessions overview` read a live status, activity, git, and pull request overview for a named Session."
|
|
1866
2215
|
],
|
|
1867
2216
|
"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.",
|
|
1868
2217
|
"localControlFlagNote": "`runpane doctor --json`, `runpane repos list`, `runpane panes ...`, 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. In a Pane repository checkout, if `runpane` is not on PATH, use the built local wrapper with Node 22, for example `PATH=/opt/homebrew/opt/node@22/bin:$PATH node packages/runpane/dist/cli.js doctor --json`. 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.",
|
|
@@ -1972,6 +2321,13 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1972
2321
|
"60",
|
|
1973
2322
|
"--idle-after",
|
|
1974
2323
|
"600000",
|
|
2324
|
+
"--settle",
|
|
2325
|
+
"180000",
|
|
2326
|
+
"--blocked-settle",
|
|
2327
|
+
"30000",
|
|
2328
|
+
"--min-interval",
|
|
2329
|
+
"600000",
|
|
2330
|
+
"--idle-backoff",
|
|
1975
2331
|
"--all-managed",
|
|
1976
2332
|
"--agents-only",
|
|
1977
2333
|
"--exclude-pane",
|
|
@@ -2237,6 +2593,26 @@ exports.RUNPANE_CONTRACT = {
|
|
|
2237
2593
|
"auto",
|
|
2238
2594
|
"--yes",
|
|
2239
2595
|
"--json"
|
|
2596
|
+
],
|
|
2597
|
+
[
|
|
2598
|
+
"sessions",
|
|
2599
|
+
"list",
|
|
2600
|
+
"--json"
|
|
2601
|
+
],
|
|
2602
|
+
[
|
|
2603
|
+
"sessions",
|
|
2604
|
+
"get",
|
|
2605
|
+
"--session",
|
|
2606
|
+
"demo",
|
|
2607
|
+
"--json"
|
|
2608
|
+
],
|
|
2609
|
+
[
|
|
2610
|
+
"sessions",
|
|
2611
|
+
"update",
|
|
2612
|
+
"--session",
|
|
2613
|
+
"demo",
|
|
2614
|
+
"--from-json",
|
|
2615
|
+
"-"
|
|
2240
2616
|
]
|
|
2241
2617
|
],
|
|
2242
2618
|
"topLevelHelpIncludes": [
|
|
@@ -3889,6 +4265,18 @@ exports.RUNPANE_CONTRACT = {
|
|
|
3889
4265
|
},
|
|
3890
4266
|
"idleWindowStartMs": {
|
|
3891
4267
|
"type": "number"
|
|
4268
|
+
},
|
|
4269
|
+
"settleMs": {
|
|
4270
|
+
"type": "number"
|
|
4271
|
+
},
|
|
4272
|
+
"blockedSettleMs": {
|
|
4273
|
+
"type": "number"
|
|
4274
|
+
},
|
|
4275
|
+
"minIntervalMs": {
|
|
4276
|
+
"type": "number"
|
|
4277
|
+
},
|
|
4278
|
+
"idleBackoff": {
|
|
4279
|
+
"type": "boolean"
|
|
3892
4280
|
}
|
|
3893
4281
|
},
|
|
3894
4282
|
"additionalProperties": false
|
|
@@ -5302,6 +5690,82 @@ exports.RUNPANE_CONTRACT = {
|
|
|
5302
5690
|
}
|
|
5303
5691
|
},
|
|
5304
5692
|
"additionalProperties": false
|
|
5693
|
+
},
|
|
5694
|
+
"sessionListResult": {
|
|
5695
|
+
"type": "object",
|
|
5696
|
+
"required": [
|
|
5697
|
+
"ok",
|
|
5698
|
+
"sessions"
|
|
5699
|
+
],
|
|
5700
|
+
"properties": {
|
|
5701
|
+
"ok": {
|
|
5702
|
+
"const": true
|
|
5703
|
+
},
|
|
5704
|
+
"sessions": {
|
|
5705
|
+
"type": "array",
|
|
5706
|
+
"items": {
|
|
5707
|
+
"type": "object"
|
|
5708
|
+
}
|
|
5709
|
+
},
|
|
5710
|
+
"selectedSessionId": {
|
|
5711
|
+
"type": "string"
|
|
5712
|
+
}
|
|
5713
|
+
},
|
|
5714
|
+
"additionalProperties": false
|
|
5715
|
+
},
|
|
5716
|
+
"sessionResult": {
|
|
5717
|
+
"type": "object",
|
|
5718
|
+
"required": [
|
|
5719
|
+
"ok",
|
|
5720
|
+
"session"
|
|
5721
|
+
],
|
|
5722
|
+
"properties": {
|
|
5723
|
+
"ok": {
|
|
5724
|
+
"const": true
|
|
5725
|
+
},
|
|
5726
|
+
"session": {
|
|
5727
|
+
"type": "object"
|
|
5728
|
+
},
|
|
5729
|
+
"panelId": {
|
|
5730
|
+
"type": "string"
|
|
5731
|
+
},
|
|
5732
|
+
"internalSessionId": {
|
|
5733
|
+
"type": "string"
|
|
5734
|
+
}
|
|
5735
|
+
},
|
|
5736
|
+
"additionalProperties": false
|
|
5737
|
+
},
|
|
5738
|
+
"sessionOverviewResult": {
|
|
5739
|
+
"type": "object",
|
|
5740
|
+
"required": [
|
|
5741
|
+
"ok",
|
|
5742
|
+
"session",
|
|
5743
|
+
"status",
|
|
5744
|
+
"panes",
|
|
5745
|
+
"activity",
|
|
5746
|
+
"refreshedAt"
|
|
5747
|
+
],
|
|
5748
|
+
"properties": {
|
|
5749
|
+
"ok": {
|
|
5750
|
+
"const": true
|
|
5751
|
+
},
|
|
5752
|
+
"session": {
|
|
5753
|
+
"type": "object"
|
|
5754
|
+
},
|
|
5755
|
+
"status": {
|
|
5756
|
+
"type": "string"
|
|
5757
|
+
},
|
|
5758
|
+
"panes": {
|
|
5759
|
+
"type": "array"
|
|
5760
|
+
},
|
|
5761
|
+
"activity": {
|
|
5762
|
+
"type": "array"
|
|
5763
|
+
},
|
|
5764
|
+
"refreshedAt": {
|
|
5765
|
+
"type": "string"
|
|
5766
|
+
}
|
|
5767
|
+
},
|
|
5768
|
+
"additionalProperties": false
|
|
5305
5769
|
}
|
|
5306
5770
|
},
|
|
5307
5771
|
"agentContext": {
|
|
@@ -5554,6 +6018,20 @@ exports.RUNPANE_CONTRACT = {
|
|
|
5554
6018
|
"--json",
|
|
5555
6019
|
"--pane-dir <path>"
|
|
5556
6020
|
]
|
|
6021
|
+
},
|
|
6022
|
+
{
|
|
6023
|
+
"name": "watch",
|
|
6024
|
+
"summary": "Wait for workspace transitions (READY, BLOCKED, IDLE, STUCK, NEW, GONE, EXIT) from the daemon journal without polling; responsive by default, with opt-in cadence flags for expensive consumers.",
|
|
6025
|
+
"arguments": [
|
|
6026
|
+
"--follow",
|
|
6027
|
+
"--self-test",
|
|
6028
|
+
"--kinds <kind,...>",
|
|
6029
|
+
"--settle <ms>",
|
|
6030
|
+
"--blocked-settle <ms>",
|
|
6031
|
+
"--min-interval <ms>",
|
|
6032
|
+
"--idle-backoff",
|
|
6033
|
+
"--json"
|
|
6034
|
+
]
|
|
5557
6035
|
}
|
|
5558
6036
|
]
|
|
5559
6037
|
},
|
|
@@ -6908,7 +7386,7 @@ exports.RUNPANE_CONTRACT = {
|
|
|
6908
7386
|
"watch": {
|
|
6909
7387
|
"name": "watch",
|
|
6910
7388
|
"summary": "Wait for workspace transitions using the daemon journal.",
|
|
6911
|
-
"details": "`runpane watch --follow` is the
|
|
7389
|
+
"details": "`runpane watch --follow` is the responsive monitor: lines, 60-second heartbeats, IDLE every 10 minutes, managed-agent scope, redacted STUCK detection, no settle, no batching, all kinds. Expensive consumers (one wake-up per line) opt into the cadence flags. Pane Chat arms them automatically through its pane-orchestrator skill; only your own scripts need to pass them. Named cursors persist in the Pane data directory.",
|
|
6912
7390
|
"requiresPaneDaemon": true,
|
|
6913
7391
|
"mutates": false,
|
|
6914
7392
|
"arguments": [
|
|
@@ -6916,36 +7394,100 @@ exports.RUNPANE_CONTRACT = {
|
|
|
6916
7394
|
"name": "--as",
|
|
6917
7395
|
"value": "<consumer-name>",
|
|
6918
7396
|
"required": false,
|
|
6919
|
-
"description": "Use a persisted named cursor."
|
|
7397
|
+
"description": "Use a persisted named cursor (at-least-once delivery). Default: PANE_PANEL_ID under --follow when set, otherwise anonymous."
|
|
6920
7398
|
},
|
|
6921
7399
|
{
|
|
6922
7400
|
"name": "--since",
|
|
6923
7401
|
"value": "<generation>",
|
|
6924
7402
|
"required": false,
|
|
6925
|
-
"description": "Use an explicit generation cursor."
|
|
7403
|
+
"description": "Use an explicit generation cursor instead of a name. Cannot be combined with --as, or with --settle, --blocked-settle, --min-interval."
|
|
7404
|
+
},
|
|
7405
|
+
{
|
|
7406
|
+
"name": "--from",
|
|
7407
|
+
"required": false,
|
|
7408
|
+
"value": "<now|earliest>",
|
|
7409
|
+
"description": "Starting point for a new named cursor. Default now (silent baseline); earliest replays the journal."
|
|
6926
7410
|
},
|
|
6927
7411
|
{
|
|
6928
7412
|
"name": "--follow",
|
|
6929
7413
|
"required": false,
|
|
6930
|
-
"description": "Continue waiting until interrupted."
|
|
7414
|
+
"description": "Continue waiting until interrupted. Required by every cadence flag."
|
|
6931
7415
|
},
|
|
6932
7416
|
{
|
|
6933
7417
|
"name": "--format",
|
|
6934
7418
|
"value": "<lines|json>",
|
|
6935
7419
|
"required": false,
|
|
6936
|
-
"description": "Output format
|
|
7420
|
+
"description": "Output format. Default lines in every mode; --json selects json."
|
|
6937
7421
|
},
|
|
6938
7422
|
{
|
|
6939
7423
|
"name": "--heartbeat",
|
|
6940
7424
|
"value": "<seconds>",
|
|
6941
7425
|
"required": false,
|
|
6942
|
-
"description": "Healthy-silence bound;
|
|
7426
|
+
"description": "Healthy-silence bound; a HEARTBEAT line proves the watcher is alive. Default 60 under --follow, 0 otherwise. Filter it out of any monitor that wakes an agent."
|
|
6943
7427
|
},
|
|
6944
7428
|
{
|
|
6945
7429
|
"name": "--idle-after",
|
|
6946
7430
|
"value": "<milliseconds>",
|
|
6947
7431
|
"required": false,
|
|
6948
|
-
"description": "
|
|
7432
|
+
"description": "IDLE fires after a READY panel has stayed idle this long, then re-fires every multiple. Default 600000 under --follow, 0 otherwise."
|
|
7433
|
+
},
|
|
7434
|
+
{
|
|
7435
|
+
"name": "--settle",
|
|
7436
|
+
"value": "<milliseconds>",
|
|
7437
|
+
"required": false,
|
|
7438
|
+
"description": "Opt-in (follow only): emit READY only after the panel stays idle this long; a BUSY, BLOCKED, UNKNOWN, EXIT, or GONE inside the window cancels it silently. Default 0. Use when a pane flips idle/working while it waits on subagents; the orchestrator value is 180000."
|
|
7439
|
+
},
|
|
7440
|
+
{
|
|
7441
|
+
"name": "--blocked-settle",
|
|
7442
|
+
"value": "<milliseconds>",
|
|
7443
|
+
"required": false,
|
|
7444
|
+
"description": "Opt-in (follow only): emit BLOCKED only after this window; an in-pane answer inside it cancels the line. Default 0. The orchestrator value is 30000."
|
|
7445
|
+
},
|
|
7446
|
+
{
|
|
7447
|
+
"name": "--min-interval",
|
|
7448
|
+
"value": "<milliseconds>",
|
|
7449
|
+
"required": false,
|
|
7450
|
+
"description": "Opt-in (follow only): hold READY, IDLE, NEW, GONE, EXIT, and UNKNOWN lines and flush them together at most once per interval; BLOCKED bypasses it and carries the held lines with it. Default 0. The orchestrator value is 600000."
|
|
7451
|
+
},
|
|
7452
|
+
{
|
|
7453
|
+
"name": "--idle-backoff",
|
|
7454
|
+
"required": false,
|
|
7455
|
+
"description": "Opt-in (follow only): IDLE fires at --idle-after, then 30m, 1h, 3h, then daily per panel; any activity resets the schedule. Default off (fixed multiples of --idle-after)."
|
|
7456
|
+
},
|
|
7457
|
+
{
|
|
7458
|
+
"name": "--kinds",
|
|
7459
|
+
"required": false,
|
|
7460
|
+
"value": "<kind,...>",
|
|
7461
|
+
"description": "Limit event kinds: agent.ready, agent.busy, agent.blocked, agent.unknown, agent.idle, pane.created, pane.gone, panel.exited. Default all. Drop agent.busy for any consumer that acts on lines; BUSY carries no action."
|
|
7462
|
+
},
|
|
7463
|
+
{
|
|
7464
|
+
"name": "--pane",
|
|
7465
|
+
"required": false,
|
|
7466
|
+
"value": "<pane-id>",
|
|
7467
|
+
"description": "Limit to a Pane; repeatable. Default all managed panes."
|
|
7468
|
+
},
|
|
7469
|
+
{
|
|
7470
|
+
"name": "--exclude-pane",
|
|
7471
|
+
"required": false,
|
|
7472
|
+
"value": "<pane-id>",
|
|
7473
|
+
"description": "Exclude a Pane; repeatable."
|
|
7474
|
+
},
|
|
7475
|
+
{
|
|
7476
|
+
"name": "--repo",
|
|
7477
|
+
"required": false,
|
|
7478
|
+
"value": "<selector>",
|
|
7479
|
+
"description": "Limit to a saved repository (active, id, path, or name). Default all repositories."
|
|
7480
|
+
},
|
|
7481
|
+
{
|
|
7482
|
+
"name": "--name-contains",
|
|
7483
|
+
"required": false,
|
|
7484
|
+
"value": "<text>",
|
|
7485
|
+
"description": "Limit by Pane name substring."
|
|
7486
|
+
},
|
|
7487
|
+
{
|
|
7488
|
+
"name": "--agents-only",
|
|
7489
|
+
"required": false,
|
|
7490
|
+
"description": "Limit to CLI agent panels. Default on under --follow."
|
|
6949
7491
|
},
|
|
6950
7492
|
{
|
|
6951
7493
|
"name": "--all-managed",
|
|
@@ -6957,10 +7499,37 @@ exports.RUNPANE_CONTRACT = {
|
|
|
6957
7499
|
"required": false,
|
|
6958
7500
|
"description": "Include ordinary shell panels."
|
|
6959
7501
|
},
|
|
7502
|
+
{
|
|
7503
|
+
"name": "--timeout-ms",
|
|
7504
|
+
"required": false,
|
|
7505
|
+
"value": "<milliseconds>",
|
|
7506
|
+
"description": "Wait timeout per request; 0 polls once. Default 60000, capped at 120000 (the follow loop re-issues requests)."
|
|
7507
|
+
},
|
|
7508
|
+
{
|
|
7509
|
+
"name": "--limit",
|
|
7510
|
+
"required": false,
|
|
7511
|
+
"value": "<count>",
|
|
7512
|
+
"description": "Maximum entries per response. Default 256."
|
|
7513
|
+
},
|
|
7514
|
+
{
|
|
7515
|
+
"name": "--ack-now",
|
|
7516
|
+
"required": false,
|
|
7517
|
+
"description": "At-most-once named-cursor delivery (advance before you act). Default at-least-once."
|
|
7518
|
+
},
|
|
7519
|
+
{
|
|
7520
|
+
"name": "--include-held-input",
|
|
7521
|
+
"required": false,
|
|
7522
|
+
"description": "Include up to 120 characters of unsubmitted composer text in JSON entries. Default off (presence only)."
|
|
7523
|
+
},
|
|
7524
|
+
{
|
|
7525
|
+
"name": "--no-held-input",
|
|
7526
|
+
"required": false,
|
|
7527
|
+
"description": "Disable redacted STUCK detection in lines follow mode."
|
|
7528
|
+
},
|
|
6960
7529
|
{
|
|
6961
7530
|
"name": "--self-test",
|
|
6962
7531
|
"required": false,
|
|
6963
|
-
"description": "Probe the watch path anonymously without advancing a named cursor."
|
|
7532
|
+
"description": "Probe the watch path anonymously without advancing a named cursor; run it before arming --follow."
|
|
6964
7533
|
},
|
|
6965
7534
|
{
|
|
6966
7535
|
"name": "--json",
|
|
@@ -6969,13 +7538,141 @@ exports.RUNPANE_CONTRACT = {
|
|
|
6969
7538
|
}
|
|
6970
7539
|
],
|
|
6971
7540
|
"examples": [
|
|
7541
|
+
"runpane watch --self-test",
|
|
6972
7542
|
"runpane watch --follow",
|
|
6973
|
-
"runpane watch --as monitor --follow --json"
|
|
7543
|
+
"runpane watch --as monitor --follow --json",
|
|
7544
|
+
"runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff"
|
|
6974
7545
|
],
|
|
6975
7546
|
"notes": [
|
|
7547
|
+
"Defaults stay responsive: no settle, no batching, all kinds, IDLE every --idle-after. Cadence flags are opt-in for expensive consumers and require --follow.",
|
|
7548
|
+
"Recommended orchestrator invocation (what Pane Chat arms automatically): runpane watch --self-test, then runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff. Budget: about 6 wake-ups per active pane per hour worst case, usually 1-3.",
|
|
7549
|
+
"BUSY carries no action; drop it with --kinds. HEARTBEAT is client-side proof of life, is never shaped by cadence flags, and should be filtered out of any monitor that wakes an agent.",
|
|
7550
|
+
"STUCK means real unsubmitted composer text. An agent prompt suggestion (for example a grey Try \"...\" hint) never counts.",
|
|
7551
|
+
"Dead watch: judge death by a non-zero exit or a WATCH ERROR line, not by silence. Re-arm once; if it dies again, file runpane doctor --report.",
|
|
7552
|
+
"Cadence state is held per named consumer; an anonymous --follow with a cadence flag names itself follow-<pid>. Held lines survive a reconnect of the same consumer; a changed filter re-delivers them under the new filter.",
|
|
6976
7553
|
"Journal loss is surfaced through reset and dropped metadata.",
|
|
6977
7554
|
"The daemon treats omitted idleAfterMs as disabled so older clients never receive agent.idle unexpectedly."
|
|
6978
7555
|
]
|
|
7556
|
+
},
|
|
7557
|
+
"sessions list": {
|
|
7558
|
+
"name": "sessions list",
|
|
7559
|
+
"summary": "List durable named orchestration Sessions.",
|
|
7560
|
+
"details": "List durable named orchestration Sessions.",
|
|
7561
|
+
"requiresPaneDaemon": true,
|
|
7562
|
+
"mutates": false,
|
|
7563
|
+
"arguments": [],
|
|
7564
|
+
"examples": [
|
|
7565
|
+
"runpane sessions list [--json] [--pane-dir <path>]"
|
|
7566
|
+
],
|
|
7567
|
+
"jsonSchemas": [
|
|
7568
|
+
"sessionListResult"
|
|
7569
|
+
],
|
|
7570
|
+
"notes": []
|
|
7571
|
+
},
|
|
7572
|
+
"sessions create": {
|
|
7573
|
+
"name": "sessions create",
|
|
7574
|
+
"summary": "Create a durable named orchestration Session and its hidden terminal owner.",
|
|
7575
|
+
"details": "Create a durable named orchestration Session and its hidden terminal owner.",
|
|
7576
|
+
"requiresPaneDaemon": true,
|
|
7577
|
+
"mutates": true,
|
|
7578
|
+
"arguments": [],
|
|
7579
|
+
"examples": [
|
|
7580
|
+
"runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]"
|
|
7581
|
+
],
|
|
7582
|
+
"jsonSchemas": [
|
|
7583
|
+
"sessionResult"
|
|
7584
|
+
],
|
|
7585
|
+
"notes": []
|
|
7586
|
+
},
|
|
7587
|
+
"sessions get": {
|
|
7588
|
+
"name": "sessions get",
|
|
7589
|
+
"summary": "Read one durable named orchestration Session.",
|
|
7590
|
+
"details": "Read one durable named orchestration Session.",
|
|
7591
|
+
"requiresPaneDaemon": true,
|
|
7592
|
+
"mutates": false,
|
|
7593
|
+
"arguments": [],
|
|
7594
|
+
"examples": [
|
|
7595
|
+
"runpane sessions get --session <id|name> [--json] [--pane-dir <path>]"
|
|
7596
|
+
],
|
|
7597
|
+
"jsonSchemas": [
|
|
7598
|
+
"sessionResult"
|
|
7599
|
+
],
|
|
7600
|
+
"notes": []
|
|
7601
|
+
},
|
|
7602
|
+
"sessions update": {
|
|
7603
|
+
"name": "sessions update",
|
|
7604
|
+
"summary": "Update a Session overview from structured JSON.",
|
|
7605
|
+
"details": "Update a Session overview from structured JSON.",
|
|
7606
|
+
"requiresPaneDaemon": true,
|
|
7607
|
+
"mutates": true,
|
|
7608
|
+
"arguments": [],
|
|
7609
|
+
"examples": [
|
|
7610
|
+
"runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]"
|
|
7611
|
+
],
|
|
7612
|
+
"jsonSchemas": [
|
|
7613
|
+
"sessionResult"
|
|
7614
|
+
],
|
|
7615
|
+
"notes": []
|
|
7616
|
+
},
|
|
7617
|
+
"sessions set-agent": {
|
|
7618
|
+
"name": "sessions set-agent",
|
|
7619
|
+
"summary": "Switch the durable terminal agent for a named Session.",
|
|
7620
|
+
"details": "Switch the durable terminal agent for a named Session.",
|
|
7621
|
+
"requiresPaneDaemon": true,
|
|
7622
|
+
"mutates": true,
|
|
7623
|
+
"arguments": [],
|
|
7624
|
+
"examples": [
|
|
7625
|
+
"runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]"
|
|
7626
|
+
],
|
|
7627
|
+
"jsonSchemas": [
|
|
7628
|
+
"sessionResult"
|
|
7629
|
+
],
|
|
7630
|
+
"notes": []
|
|
7631
|
+
},
|
|
7632
|
+
"sessions associate": {
|
|
7633
|
+
"name": "sessions associate",
|
|
7634
|
+
"summary": "Associate a user-visible Pane with a named Session.",
|
|
7635
|
+
"details": "Associate a user-visible Pane with a named Session.",
|
|
7636
|
+
"requiresPaneDaemon": true,
|
|
7637
|
+
"mutates": true,
|
|
7638
|
+
"arguments": [],
|
|
7639
|
+
"examples": [
|
|
7640
|
+
"runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]"
|
|
7641
|
+
],
|
|
7642
|
+
"jsonSchemas": [
|
|
7643
|
+
"sessionResult"
|
|
7644
|
+
],
|
|
7645
|
+
"notes": []
|
|
7646
|
+
},
|
|
7647
|
+
"sessions detach": {
|
|
7648
|
+
"name": "sessions detach",
|
|
7649
|
+
"summary": "Detach a Pane from a named Session.",
|
|
7650
|
+
"details": "Detach a Pane from a named Session.",
|
|
7651
|
+
"requiresPaneDaemon": true,
|
|
7652
|
+
"mutates": true,
|
|
7653
|
+
"arguments": [],
|
|
7654
|
+
"examples": [
|
|
7655
|
+
"runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]"
|
|
7656
|
+
],
|
|
7657
|
+
"jsonSchemas": [
|
|
7658
|
+
"sessionResult"
|
|
7659
|
+
],
|
|
7660
|
+
"notes": []
|
|
7661
|
+
},
|
|
7662
|
+
"sessions overview": {
|
|
7663
|
+
"name": "sessions overview",
|
|
7664
|
+
"summary": "Read a live status, activity, git, and pull request overview for a named Session.",
|
|
7665
|
+
"details": "Read a live status, activity, git, and pull request overview for a named Session.",
|
|
7666
|
+
"requiresPaneDaemon": true,
|
|
7667
|
+
"mutates": false,
|
|
7668
|
+
"arguments": [],
|
|
7669
|
+
"examples": [
|
|
7670
|
+
"runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]"
|
|
7671
|
+
],
|
|
7672
|
+
"jsonSchemas": [
|
|
7673
|
+
"sessionOverviewResult"
|
|
7674
|
+
],
|
|
7675
|
+
"notes": []
|
|
6979
7676
|
}
|
|
6980
7677
|
},
|
|
6981
7678
|
"managedBlock": [
|