runpane 2.4.104 → 2.4.105
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/commands.d.ts +6 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +37 -10
- 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 +126 -16
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +192 -13
- package/dist/generated/contract.js.map +1 -1
- package/dist/localControl.d.ts +1 -1
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +9 -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",
|
|
@@ -665,6 +669,21 @@ exports.RUNPANE_CONTRACT = {
|
|
|
665
669
|
"value": "<milliseconds>",
|
|
666
670
|
"description": "Emit agent.idle after this READY duration; 0 disables idle events."
|
|
667
671
|
},
|
|
672
|
+
{
|
|
673
|
+
"name": "--settle",
|
|
674
|
+
"value": "<milliseconds>",
|
|
675
|
+
"description": "Follow-only opt-in: emit READY only after the panel stays idle this long; a BUSY inside the window cancels it silently."
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
"name": "--blocked-settle",
|
|
679
|
+
"value": "<milliseconds>",
|
|
680
|
+
"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."
|
|
681
|
+
},
|
|
682
|
+
{
|
|
683
|
+
"name": "--min-interval",
|
|
684
|
+
"value": "<milliseconds>",
|
|
685
|
+
"description": "Follow-only opt-in: hold non-urgent lines and flush them together at most once per interval; BLOCKED bypasses it."
|
|
686
|
+
},
|
|
668
687
|
{
|
|
669
688
|
"name": "--body-file",
|
|
670
689
|
"value": "<path|->",
|
|
@@ -736,6 +755,10 @@ exports.RUNPANE_CONTRACT = {
|
|
|
736
755
|
"name": "--self-test",
|
|
737
756
|
"description": "Probe the current daemon watch path without advancing a named cursor."
|
|
738
757
|
},
|
|
758
|
+
{
|
|
759
|
+
"name": "--idle-backoff",
|
|
760
|
+
"description": "Follow-only opt-in: IDLE fires at --idle-after, then 30m, 1h, 3h, then daily per panel; any activity resets it."
|
|
761
|
+
},
|
|
739
762
|
{
|
|
740
763
|
"name": "--report",
|
|
741
764
|
"description": "Prepare a redacted doctor report; external filing still requires --yes."
|
|
@@ -983,6 +1006,10 @@ exports.RUNPANE_CONTRACT = {
|
|
|
983
1006
|
" --format <lines|json> Output format; lines is the follow default",
|
|
984
1007
|
" --heartbeat <seconds> Healthy-silence bound; defaults to 60 under --follow",
|
|
985
1008
|
" --idle-after <ms> Re-firing READY idle interval; defaults to 600000 under --follow",
|
|
1009
|
+
" --settle <ms> Opt-in: emit READY only after this quiet window (--follow only)",
|
|
1010
|
+
" --blocked-settle <ms> Opt-in: emit BLOCKED only after this window (--follow only)",
|
|
1011
|
+
" --min-interval <ms> Opt-in: batch non-urgent lines per interval; BLOCKED bypasses (--follow only)",
|
|
1012
|
+
" --idle-backoff Opt-in: IDLE at --idle-after, 30m, 1h, 3h, then daily (--follow only)",
|
|
986
1013
|
" --all-managed Explicitly watch all managed panes",
|
|
987
1014
|
" --include-shells Include ordinary shell panels",
|
|
988
1015
|
" --agents-only Limit to CLI agent panels",
|
|
@@ -997,7 +1024,13 @@ exports.RUNPANE_CONTRACT = {
|
|
|
997
1024
|
" --ack-now Use at-most-once named-cursor delivery",
|
|
998
1025
|
" --include-held-input Include unsubmitted composer text in JSON",
|
|
999
1026
|
" --no-held-input Disable redacted STUCK detection",
|
|
1000
|
-
" --json Alias for --format json"
|
|
1027
|
+
" --json Alias for --format json",
|
|
1028
|
+
"",
|
|
1029
|
+
"Defaults are responsive: no settle, no batching, all kinds, IDLE every --idle-after. BUSY carries no action; drop it with --kinds.",
|
|
1030
|
+
"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",
|
|
1031
|
+
"Pane Chat arms those flags itself through its skill; pass them only for your own scripts.",
|
|
1032
|
+
"STUCK means real unsubmitted composer text; an agent prompt suggestion never counts.",
|
|
1033
|
+
"Dead watch: HEARTBEAT is proof of life only. Judge death by a non-zero exit or a WATCH ERROR line, not by silence."
|
|
1001
1034
|
],
|
|
1002
1035
|
"panes create": [
|
|
1003
1036
|
"Usage:",
|
|
@@ -1484,6 +1517,10 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1484
1517
|
" --format <lines|json>",
|
|
1485
1518
|
" --heartbeat <seconds>",
|
|
1486
1519
|
" --idle-after <ms>",
|
|
1520
|
+
" --settle <ms> Opt-in READY quiet window (--follow only)",
|
|
1521
|
+
" --blocked-settle <ms> Opt-in BLOCKED window (--follow only)",
|
|
1522
|
+
" --min-interval <ms> Opt-in batching; BLOCKED bypasses (--follow only)",
|
|
1523
|
+
" --idle-backoff Opt-in IDLE backoff (--follow only)",
|
|
1487
1524
|
" --all-managed",
|
|
1488
1525
|
" --include-shells",
|
|
1489
1526
|
" --agents-only",
|
|
@@ -1498,7 +1535,13 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1498
1535
|
" --ack-now",
|
|
1499
1536
|
" --include-held-input",
|
|
1500
1537
|
" --no-held-input",
|
|
1501
|
-
" --json Alias for --format json"
|
|
1538
|
+
" --json Alias for --format json",
|
|
1539
|
+
"",
|
|
1540
|
+
"Defaults are responsive: no settle, no batching, all kinds, IDLE every --idle-after. BUSY carries no action; drop it with --kinds.",
|
|
1541
|
+
"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",
|
|
1542
|
+
"Pane Chat arms those flags itself through its skill; pass them only for your own scripts.",
|
|
1543
|
+
"STUCK means real unsubmitted composer text; an agent prompt suggestion never counts.",
|
|
1544
|
+
"Dead watch: HEARTBEAT is proof of life only. Judge death by a non-zero exit or a WATCH ERROR line, not by silence."
|
|
1502
1545
|
],
|
|
1503
1546
|
"panes create": [
|
|
1504
1547
|
"Usage:",
|
|
@@ -1834,6 +1877,9 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1834
1877
|
"runpane panels list --pane <pane-id> --json",
|
|
1835
1878
|
"runpane panels output --panel <panel-id> --limit 200 --json",
|
|
1836
1879
|
"printf 'Continue\\n' | runpane panels input --panel <panel-id> --input-file - --yes --json",
|
|
1880
|
+
"runpane watch --self-test",
|
|
1881
|
+
"runpane watch --follow",
|
|
1882
|
+
"runpane watch --follow --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff",
|
|
1837
1883
|
"runpane help",
|
|
1838
1884
|
"runpane <command> --help"
|
|
1839
1885
|
],
|
|
@@ -1862,7 +1908,8 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1862
1908
|
"`runpane panels input` sends exact input bytes to one terminal panel. Prefer `--input-file` for newlines, Ctrl-C, quotes, or shell-sensitive text.",
|
|
1863
1909
|
"`runpane panes create --prompt` is an alias for `--initial-input`; request JSON and daemon payloads should use the canonical `initialInput` field.",
|
|
1864
1910
|
"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'`."
|
|
1911
|
+
"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'`.",
|
|
1912
|
+
"`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."
|
|
1866
1913
|
],
|
|
1867
1914
|
"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
1915
|
"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 +2019,13 @@ exports.RUNPANE_CONTRACT = {
|
|
|
1972
2019
|
"60",
|
|
1973
2020
|
"--idle-after",
|
|
1974
2021
|
"600000",
|
|
2022
|
+
"--settle",
|
|
2023
|
+
"180000",
|
|
2024
|
+
"--blocked-settle",
|
|
2025
|
+
"30000",
|
|
2026
|
+
"--min-interval",
|
|
2027
|
+
"600000",
|
|
2028
|
+
"--idle-backoff",
|
|
1975
2029
|
"--all-managed",
|
|
1976
2030
|
"--agents-only",
|
|
1977
2031
|
"--exclude-pane",
|
|
@@ -3889,6 +3943,18 @@ exports.RUNPANE_CONTRACT = {
|
|
|
3889
3943
|
},
|
|
3890
3944
|
"idleWindowStartMs": {
|
|
3891
3945
|
"type": "number"
|
|
3946
|
+
},
|
|
3947
|
+
"settleMs": {
|
|
3948
|
+
"type": "number"
|
|
3949
|
+
},
|
|
3950
|
+
"blockedSettleMs": {
|
|
3951
|
+
"type": "number"
|
|
3952
|
+
},
|
|
3953
|
+
"minIntervalMs": {
|
|
3954
|
+
"type": "number"
|
|
3955
|
+
},
|
|
3956
|
+
"idleBackoff": {
|
|
3957
|
+
"type": "boolean"
|
|
3892
3958
|
}
|
|
3893
3959
|
},
|
|
3894
3960
|
"additionalProperties": false
|
|
@@ -5554,6 +5620,20 @@ exports.RUNPANE_CONTRACT = {
|
|
|
5554
5620
|
"--json",
|
|
5555
5621
|
"--pane-dir <path>"
|
|
5556
5622
|
]
|
|
5623
|
+
},
|
|
5624
|
+
{
|
|
5625
|
+
"name": "watch",
|
|
5626
|
+
"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.",
|
|
5627
|
+
"arguments": [
|
|
5628
|
+
"--follow",
|
|
5629
|
+
"--self-test",
|
|
5630
|
+
"--kinds <kind,...>",
|
|
5631
|
+
"--settle <ms>",
|
|
5632
|
+
"--blocked-settle <ms>",
|
|
5633
|
+
"--min-interval <ms>",
|
|
5634
|
+
"--idle-backoff",
|
|
5635
|
+
"--json"
|
|
5636
|
+
]
|
|
5557
5637
|
}
|
|
5558
5638
|
]
|
|
5559
5639
|
},
|
|
@@ -6908,7 +6988,7 @@ exports.RUNPANE_CONTRACT = {
|
|
|
6908
6988
|
"watch": {
|
|
6909
6989
|
"name": "watch",
|
|
6910
6990
|
"summary": "Wait for workspace transitions using the daemon journal.",
|
|
6911
|
-
"details": "`runpane watch --follow` is the
|
|
6991
|
+
"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
6992
|
"requiresPaneDaemon": true,
|
|
6913
6993
|
"mutates": false,
|
|
6914
6994
|
"arguments": [
|
|
@@ -6916,36 +6996,100 @@ exports.RUNPANE_CONTRACT = {
|
|
|
6916
6996
|
"name": "--as",
|
|
6917
6997
|
"value": "<consumer-name>",
|
|
6918
6998
|
"required": false,
|
|
6919
|
-
"description": "Use a persisted named cursor."
|
|
6999
|
+
"description": "Use a persisted named cursor (at-least-once delivery). Default: PANE_PANEL_ID under --follow when set, otherwise anonymous."
|
|
6920
7000
|
},
|
|
6921
7001
|
{
|
|
6922
7002
|
"name": "--since",
|
|
6923
7003
|
"value": "<generation>",
|
|
6924
7004
|
"required": false,
|
|
6925
|
-
"description": "Use an explicit generation cursor."
|
|
7005
|
+
"description": "Use an explicit generation cursor instead of a name. Cannot be combined with --as, or with --settle, --blocked-settle, --min-interval."
|
|
7006
|
+
},
|
|
7007
|
+
{
|
|
7008
|
+
"name": "--from",
|
|
7009
|
+
"required": false,
|
|
7010
|
+
"value": "<now|earliest>",
|
|
7011
|
+
"description": "Starting point for a new named cursor. Default now (silent baseline); earliest replays the journal."
|
|
6926
7012
|
},
|
|
6927
7013
|
{
|
|
6928
7014
|
"name": "--follow",
|
|
6929
7015
|
"required": false,
|
|
6930
|
-
"description": "Continue waiting until interrupted."
|
|
7016
|
+
"description": "Continue waiting until interrupted. Required by every cadence flag."
|
|
6931
7017
|
},
|
|
6932
7018
|
{
|
|
6933
7019
|
"name": "--format",
|
|
6934
7020
|
"value": "<lines|json>",
|
|
6935
7021
|
"required": false,
|
|
6936
|
-
"description": "Output format
|
|
7022
|
+
"description": "Output format. Default lines in every mode; --json selects json."
|
|
6937
7023
|
},
|
|
6938
7024
|
{
|
|
6939
7025
|
"name": "--heartbeat",
|
|
6940
7026
|
"value": "<seconds>",
|
|
6941
7027
|
"required": false,
|
|
6942
|
-
"description": "Healthy-silence bound;
|
|
7028
|
+
"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
7029
|
},
|
|
6944
7030
|
{
|
|
6945
7031
|
"name": "--idle-after",
|
|
6946
7032
|
"value": "<milliseconds>",
|
|
6947
7033
|
"required": false,
|
|
6948
|
-
"description": "
|
|
7034
|
+
"description": "IDLE fires after a READY panel has stayed idle this long, then re-fires every multiple. Default 600000 under --follow, 0 otherwise."
|
|
7035
|
+
},
|
|
7036
|
+
{
|
|
7037
|
+
"name": "--settle",
|
|
7038
|
+
"value": "<milliseconds>",
|
|
7039
|
+
"required": false,
|
|
7040
|
+
"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."
|
|
7041
|
+
},
|
|
7042
|
+
{
|
|
7043
|
+
"name": "--blocked-settle",
|
|
7044
|
+
"value": "<milliseconds>",
|
|
7045
|
+
"required": false,
|
|
7046
|
+
"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."
|
|
7047
|
+
},
|
|
7048
|
+
{
|
|
7049
|
+
"name": "--min-interval",
|
|
7050
|
+
"value": "<milliseconds>",
|
|
7051
|
+
"required": false,
|
|
7052
|
+
"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."
|
|
7053
|
+
},
|
|
7054
|
+
{
|
|
7055
|
+
"name": "--idle-backoff",
|
|
7056
|
+
"required": false,
|
|
7057
|
+
"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)."
|
|
7058
|
+
},
|
|
7059
|
+
{
|
|
7060
|
+
"name": "--kinds",
|
|
7061
|
+
"required": false,
|
|
7062
|
+
"value": "<kind,...>",
|
|
7063
|
+
"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."
|
|
7064
|
+
},
|
|
7065
|
+
{
|
|
7066
|
+
"name": "--pane",
|
|
7067
|
+
"required": false,
|
|
7068
|
+
"value": "<pane-id>",
|
|
7069
|
+
"description": "Limit to a Pane; repeatable. Default all managed panes."
|
|
7070
|
+
},
|
|
7071
|
+
{
|
|
7072
|
+
"name": "--exclude-pane",
|
|
7073
|
+
"required": false,
|
|
7074
|
+
"value": "<pane-id>",
|
|
7075
|
+
"description": "Exclude a Pane; repeatable."
|
|
7076
|
+
},
|
|
7077
|
+
{
|
|
7078
|
+
"name": "--repo",
|
|
7079
|
+
"required": false,
|
|
7080
|
+
"value": "<selector>",
|
|
7081
|
+
"description": "Limit to a saved repository (active, id, path, or name). Default all repositories."
|
|
7082
|
+
},
|
|
7083
|
+
{
|
|
7084
|
+
"name": "--name-contains",
|
|
7085
|
+
"required": false,
|
|
7086
|
+
"value": "<text>",
|
|
7087
|
+
"description": "Limit by Pane name substring."
|
|
7088
|
+
},
|
|
7089
|
+
{
|
|
7090
|
+
"name": "--agents-only",
|
|
7091
|
+
"required": false,
|
|
7092
|
+
"description": "Limit to CLI agent panels. Default on under --follow."
|
|
6949
7093
|
},
|
|
6950
7094
|
{
|
|
6951
7095
|
"name": "--all-managed",
|
|
@@ -6957,10 +7101,37 @@ exports.RUNPANE_CONTRACT = {
|
|
|
6957
7101
|
"required": false,
|
|
6958
7102
|
"description": "Include ordinary shell panels."
|
|
6959
7103
|
},
|
|
7104
|
+
{
|
|
7105
|
+
"name": "--timeout-ms",
|
|
7106
|
+
"required": false,
|
|
7107
|
+
"value": "<milliseconds>",
|
|
7108
|
+
"description": "Wait timeout per request; 0 polls once. Default 60000, capped at 120000 (the follow loop re-issues requests)."
|
|
7109
|
+
},
|
|
7110
|
+
{
|
|
7111
|
+
"name": "--limit",
|
|
7112
|
+
"required": false,
|
|
7113
|
+
"value": "<count>",
|
|
7114
|
+
"description": "Maximum entries per response. Default 256."
|
|
7115
|
+
},
|
|
7116
|
+
{
|
|
7117
|
+
"name": "--ack-now",
|
|
7118
|
+
"required": false,
|
|
7119
|
+
"description": "At-most-once named-cursor delivery (advance before you act). Default at-least-once."
|
|
7120
|
+
},
|
|
7121
|
+
{
|
|
7122
|
+
"name": "--include-held-input",
|
|
7123
|
+
"required": false,
|
|
7124
|
+
"description": "Include up to 120 characters of unsubmitted composer text in JSON entries. Default off (presence only)."
|
|
7125
|
+
},
|
|
7126
|
+
{
|
|
7127
|
+
"name": "--no-held-input",
|
|
7128
|
+
"required": false,
|
|
7129
|
+
"description": "Disable redacted STUCK detection in lines follow mode."
|
|
7130
|
+
},
|
|
6960
7131
|
{
|
|
6961
7132
|
"name": "--self-test",
|
|
6962
7133
|
"required": false,
|
|
6963
|
-
"description": "Probe the watch path anonymously without advancing a named cursor."
|
|
7134
|
+
"description": "Probe the watch path anonymously without advancing a named cursor; run it before arming --follow."
|
|
6964
7135
|
},
|
|
6965
7136
|
{
|
|
6966
7137
|
"name": "--json",
|
|
@@ -6969,10 +7140,18 @@ exports.RUNPANE_CONTRACT = {
|
|
|
6969
7140
|
}
|
|
6970
7141
|
],
|
|
6971
7142
|
"examples": [
|
|
7143
|
+
"runpane watch --self-test",
|
|
6972
7144
|
"runpane watch --follow",
|
|
6973
|
-
"runpane watch --as monitor --follow --json"
|
|
7145
|
+
"runpane watch --as monitor --follow --json",
|
|
7146
|
+
"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
7147
|
],
|
|
6975
7148
|
"notes": [
|
|
7149
|
+
"Defaults stay responsive: no settle, no batching, all kinds, IDLE every --idle-after. Cadence flags are opt-in for expensive consumers and require --follow.",
|
|
7150
|
+
"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.",
|
|
7151
|
+
"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.",
|
|
7152
|
+
"STUCK means real unsubmitted composer text. An agent prompt suggestion (for example a grey Try \"...\" hint) never counts.",
|
|
7153
|
+
"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.",
|
|
7154
|
+
"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
7155
|
"Journal loss is surfaced through reset and dropped metadata.",
|
|
6977
7156
|
"The daemon treats omitted idleAfterMs as disabled so older clients never receive agent.idle unexpectedly."
|
|
6978
7157
|
]
|