remote-pi-app 0.7.1 → 0.7.2
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 +62 -61
- package/dist/daemon/rpc_child.d.ts +24 -0
- package/dist/daemon/rpc_child.js +42 -0
- package/dist/daemon/rpc_child.js.map +1 -1
- package/dist/daemon/supervisor.d.ts +17 -0
- package/dist/daemon/supervisor.js +125 -0
- package/dist/daemon/supervisor.js.map +1 -1
- package/dist/daemon/ui_bridge.d.ts +73 -0
- package/dist/daemon/ui_bridge.js +164 -0
- package/dist/daemon/ui_bridge.js.map +1 -0
- package/dist/index.d.ts +27 -1
- package/dist/index.js +179 -0
- package/dist/index.js.map +1 -1
- package/dist/protocol/types.d.ts +24 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -80,7 +80,7 @@ both:
|
|
|
80
80
|
|
|
81
81
|
Several Pi instances running side-by-side in different terminals can discover
|
|
82
82
|
each other and exchange messages. Each instance is a peer in a named
|
|
83
|
-
|
|
83
|
+
_session_. The LLM uses:
|
|
84
84
|
|
|
85
85
|
- `list_peers` — discover current peer routing addresses
|
|
86
86
|
- `agent_send` — unicast waits for the broker delivery ACK; broadcast is
|
|
@@ -98,8 +98,8 @@ addresses over the relay; local-only use stays on UDS when relay access is off.
|
|
|
98
98
|
Useful for splitting work across roles (`backend`, `frontend`, `tests`,
|
|
99
99
|
`orchestrator`, …) and letting them coordinate.
|
|
100
100
|
|
|
101
|
-
The first agent to enter a session becomes the
|
|
102
|
-
the rest are
|
|
101
|
+
The first agent to enter a session becomes the _leader_ (hosts the broker);
|
|
102
|
+
the rest are _followers_. If the leader exits, a follower automatically takes
|
|
103
103
|
over — the failover is invisible to the LLMs.
|
|
104
104
|
|
|
105
105
|
### 2) Mobile app (over the relay)
|
|
@@ -129,12 +129,12 @@ Beyond the chat, the app surfaces a small set of typed actions you can run
|
|
|
129
129
|
on the paired Pi session. Tap the ⚙ button next to the message input (visible
|
|
130
130
|
when the input is empty) to open the Quick Actions sheet:
|
|
131
131
|
|
|
132
|
-
| Action
|
|
133
|
-
|
|
134
|
-
| **Compact context** | Runs `ctx.compact()` — same as `/compact` in the TUI.
|
|
135
|
-
| **New session**
|
|
136
|
-
| **Model**
|
|
137
|
-
| **Thinking**
|
|
132
|
+
| Action | What it does |
|
|
133
|
+
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
134
|
+
| **Compact context** | Runs `ctx.compact()` — same as `/compact` in the TUI. |
|
|
135
|
+
| **New session** | Runs `ctx.newSession()` — equivalent to `/new`, asks for confirmation first. |
|
|
136
|
+
| **Model** | Opens a model picker fed by your authenticated providers (same source the TUI uses) and switches via `pi.setModel(model)`. |
|
|
137
|
+
| **Thinking** | Segmented control with the 6 SDK levels (`off` · `minimal` · `low` · `medium` · `high` · `xhigh`). Changes via `pi.setThinkingLevel(level)`. |
|
|
138
138
|
|
|
139
139
|
Each action gets a structured `action_ok` / `action_error` reply so the app
|
|
140
140
|
can show a SnackBar on failure. Visible side-effects (chat output, model
|
|
@@ -202,11 +202,11 @@ The bare command is the everyday entry point:
|
|
|
202
202
|
|
|
203
203
|
Behavior depends on whether there's a local config for this directory:
|
|
204
204
|
|
|
205
|
-
| State
|
|
206
|
-
|
|
205
|
+
| State | What happens |
|
|
206
|
+
| ------------------------------------------ | ---------------------------------------------------------------------------------------- |
|
|
207
207
|
| First run (no `.pi/remote-pi/config.json`) | Interactive wizard → saves config → joins agent session → starts relay (if you opted in) |
|
|
208
|
-
| Returning user, auto-start enabled
|
|
209
|
-
| Returning user, auto-start disabled
|
|
208
|
+
| Returning user, auto-start enabled | Joins agent session + starts relay automatically, then prints status |
|
|
209
|
+
| Returning user, auto-start disabled | Prints status only; join/relay must be run manually |
|
|
210
210
|
|
|
211
211
|
The wizard asks three questions:
|
|
212
212
|
|
|
@@ -393,12 +393,12 @@ log at `~/.pi/remote/sessions/<name>/audit.jsonl` for postmortem inspection.
|
|
|
393
393
|
|
|
394
394
|
Useful commands:
|
|
395
395
|
|
|
396
|
-
| Command
|
|
397
|
-
|
|
398
|
-
| `/remote-pi`
|
|
399
|
-
| `/remote-pi peers`
|
|
400
|
-
| `/remote-pi rename <new>` | Rename this agent in the current session
|
|
401
|
-
| `/remote-pi stop`
|
|
396
|
+
| Command | What it does |
|
|
397
|
+
| ------------------------- | ----------------------------------------------------- |
|
|
398
|
+
| `/remote-pi` | Join the local mesh (and start the relay, if enabled) |
|
|
399
|
+
| `/remote-pi peers` | List local + cross-PC mesh peers, grouped by PC |
|
|
400
|
+
| `/remote-pi rename <new>` | Rename this agent in the current session |
|
|
401
|
+
| `/remote-pi stop` | Leave the local mesh and disconnect the relay |
|
|
402
402
|
|
|
403
403
|
Name collisions inside a session get a numeric suffix automatically
|
|
404
404
|
(`backend`, `backend#2`, `backend#3`). The broker assigns it and returns the
|
|
@@ -410,40 +410,40 @@ real name to the peer.
|
|
|
410
410
|
|
|
411
411
|
### Local session (one Pi, one terminal)
|
|
412
412
|
|
|
413
|
-
| Command
|
|
414
|
-
|
|
415
|
-
| `/remote-pi`
|
|
416
|
-
| `/remote-pi setup`
|
|
417
|
-
| `/remote-pi status`
|
|
418
|
-
| `/remote-pi stop`
|
|
419
|
-
| `/remote-pi pair`
|
|
420
|
-
| `/remote-pi devices`
|
|
421
|
-
| `/remote-pi revoke <shortid>`
|
|
422
|
-
| `/remote-pi set-relay <url>`
|
|
413
|
+
| Command | Description |
|
|
414
|
+
| ---------------------------------------- | ------------------------------------------------------------------------------ |
|
|
415
|
+
| `/remote-pi` | Connect (join local mesh + start relay), or run setup on first use |
|
|
416
|
+
| `/remote-pi setup` | Run the setup wizard and update local config |
|
|
417
|
+
| `/remote-pi status` | Show local mesh + relay status |
|
|
418
|
+
| `/remote-pi stop` | Stop everything for **this** terminal (mesh + relay) |
|
|
419
|
+
| `/remote-pi pair` | Show QR code + copy-paste pairing URI for a new mobile device |
|
|
420
|
+
| `/remote-pi devices` | List paired mobile devices (online/offline per device) |
|
|
421
|
+
| `/remote-pi revoke <shortid>` | Revoke a paired device by its shortid |
|
|
422
|
+
| `/remote-pi set-relay <url>` | Persist a new relay URL (http:// or https://) |
|
|
423
423
|
| `/remote-pi relay [start\|stop\|status]` | Relay-only control — leaves local mesh membership untouched (no verb = toggle) |
|
|
424
|
-
| `/remote-pi relay url <url>`
|
|
425
|
-
| `/remote-pi config`
|
|
424
|
+
| `/remote-pi relay url <url>` | Same as `set-relay` |
|
|
425
|
+
| `/remote-pi config` | Show the effective relay URL and its source (env / config / default) |
|
|
426
426
|
|
|
427
427
|
### Daemon fleet (one supervisor, N background Pis — see [Daemon mode](#daemon-mode))
|
|
428
428
|
|
|
429
|
-
| Command
|
|
430
|
-
|
|
431
|
-
| `/remote-pi create <cwd> [--name X]`
|
|
432
|
-
| `/remote-pi remove <id>`
|
|
433
|
-
| `/remote-pi daemons`
|
|
434
|
-
| `/remote-pi daemon start`
|
|
435
|
-
| `/remote-pi daemon stop`
|
|
436
|
-
| `/remote-pi daemon restart`
|
|
437
|
-
| `/remote-pi daemon status`
|
|
438
|
-
| `/remote-pi daemon send <id> "<text>"`
|
|
429
|
+
| Command | Description |
|
|
430
|
+
| ---------------------------------------------- | ----------------------------------------------------------------------------- |
|
|
431
|
+
| `/remote-pi create <cwd> [--name X]` | Register a folder as a daemon |
|
|
432
|
+
| `/remote-pi remove <id>` | Unregister a daemon (local config preserved) |
|
|
433
|
+
| `/remote-pi daemons` | List registered daemons + state |
|
|
434
|
+
| `/remote-pi daemon start` | Start every registered daemon |
|
|
435
|
+
| `/remote-pi daemon stop` | Stop every running daemon (`/remote-pi stop` stops only the local terminal) |
|
|
436
|
+
| `/remote-pi daemon restart` | Stop + start all daemons |
|
|
437
|
+
| `/remote-pi daemon status` | Detailed runtime status (pid, uptime, restart count) |
|
|
438
|
+
| `/remote-pi daemon send <id> "<text>"` | Send a prompt to a specific daemon |
|
|
439
439
|
| `/remote-pi cron add <id> "<expr>" "<prompt>"` | Schedule a recurring prompt (`--tz`, `--wake`, `--no-skip-busy`, `--catchup`) |
|
|
440
|
-
| `/remote-pi cron list`
|
|
441
|
-
| `/remote-pi cron run <jobId>`
|
|
442
|
-
| `/remote-pi cron enable\|disable <jobId>`
|
|
443
|
-
| `/remote-pi cron remove <jobId>`
|
|
444
|
-
| `/remote-pi cron log [<jobId>] [--tail N]`
|
|
445
|
-
| `/remote-pi install`
|
|
446
|
-
| `/remote-pi uninstall`
|
|
440
|
+
| `/remote-pi cron list` | List scheduled jobs (schedule, enabled, next run, last status) |
|
|
441
|
+
| `/remote-pi cron run <jobId>` | Fire a job now (ignores its schedule) |
|
|
442
|
+
| `/remote-pi cron enable\|disable <jobId>` | Toggle a job on/off |
|
|
443
|
+
| `/remote-pi cron remove <jobId>` | Delete a job |
|
|
444
|
+
| `/remote-pi cron log [<jobId>] [--tail N]` | Read the fire/skip audit log |
|
|
445
|
+
| `/remote-pi install` | Install `pi-supervisord` as a system service |
|
|
446
|
+
| `/remote-pi uninstall` | Remove the system service (registry preserved) |
|
|
447
447
|
|
|
448
448
|
All commands above work both as Pi slash commands (interactive) and as
|
|
449
449
|
shell-level `remote-pi <subcommand>` when the package is installed
|
|
@@ -455,7 +455,7 @@ globally (`npm install -g remote-pi`).
|
|
|
455
455
|
supervisor — e.g. a daily "summarise new PRs". Output flows fire-and-forget to
|
|
456
456
|
the mesh/app like any prompt; the cron layer only audits the dispatch.
|
|
457
457
|
|
|
458
|
-
- **Schedule** is a cron expression (croner syntax; an optional 6th
|
|
458
|
+
- **Schedule** is a cron expression (croner syntax; an optional 6th _seconds_
|
|
459
459
|
field is supported), with an optional IANA timezone via `--tz`:
|
|
460
460
|
|
|
461
461
|
```sh
|
|
@@ -514,6 +514,7 @@ remote-pi install
|
|
|
514
514
|
```
|
|
515
515
|
|
|
516
516
|
The `install` command:
|
|
517
|
+
|
|
517
518
|
- Writes `~/.config/systemd/user/remote-pi-supervisord.service` (Linux)
|
|
518
519
|
or `~/Library/LaunchAgents/dev.remotepi.supervisord.plist` (macOS)
|
|
519
520
|
- Activates it via `systemctl --user enable --now` or `launchctl bootstrap`
|
|
@@ -565,10 +566,10 @@ registered daemon back. To wipe the registry entirely, `rm
|
|
|
565
566
|
|
|
566
567
|
### Where to find logs
|
|
567
568
|
|
|
568
|
-
| Platform | Command
|
|
569
|
-
|
|
570
|
-
| Linux
|
|
571
|
-
| macOS
|
|
569
|
+
| Platform | Command |
|
|
570
|
+
| -------- | ----------------------------------------------- |
|
|
571
|
+
| Linux | `journalctl --user -u remote-pi-supervisord -f` |
|
|
572
|
+
| macOS | `tail -f ~/.pi/remote/supervisord.log` |
|
|
572
573
|
|
|
573
574
|
Each spawned daemon's stderr is forwarded into the supervisor's log
|
|
574
575
|
with a `[<cwd>]` prefix, so a single log stream shows every agent.
|
|
@@ -592,13 +593,13 @@ with a `[<cwd>]` prefix, so a single log stream shows every agent.
|
|
|
592
593
|
|
|
593
594
|
## Configuration files
|
|
594
595
|
|
|
595
|
-
| Path
|
|
596
|
-
|
|
597
|
-
| `<cwd>/.pi/remote-pi/config.json`
|
|
598
|
-
| `~/.pi/remote/config.json`
|
|
599
|
-
| `~/.pi/remote/peers.json`
|
|
600
|
-
| `~/.pi/remote/sessions/<name>/`
|
|
601
|
-
| `~/.pi/remote/skills/agent-network/SKILL.md` | Per-user
|
|
596
|
+
| Path | Scope | What's in it |
|
|
597
|
+
| -------------------------------------------- | ------------- | ------------------------------------------------ |
|
|
598
|
+
| `<cwd>/.pi/remote-pi/config.json` | Per-directory | `agent_name`, `session_name`, `auto_start_relay` |
|
|
599
|
+
| `~/.pi/remote/config.json` | Per-user | `relay` URL |
|
|
600
|
+
| `~/.pi/remote/peers.json` | Per-machine | Paired mobile devices |
|
|
601
|
+
| `~/.pi/remote/sessions/<name>/` | Per-session | Broker socket + `audit.jsonl` |
|
|
602
|
+
| `~/.pi/remote/skills/agent-network/SKILL.md` | Per-user | Agent skill the LLM reads |
|
|
602
603
|
|
|
603
604
|
Override the relay for a single run without persisting:
|
|
604
605
|
|
|
@@ -611,7 +612,7 @@ REMOTE_PI_RELAY=https://staging.example.tld pi
|
|
|
611
612
|
## Troubleshooting
|
|
612
613
|
|
|
613
614
|
**Footer says `🟡 relay waiting for pairing` even though I paired a device.**
|
|
614
|
-
The icon reflects whether
|
|
615
|
+
The icon reflects whether _any_ device has been paired on this machine, not
|
|
615
616
|
whether one is connected right now. If you really have a paired device in
|
|
616
617
|
`/remote-pi devices`, restart Pi — the cache may be stale (fixed in current
|
|
617
618
|
release; report a bug if it recurs).
|
|
@@ -98,6 +98,18 @@ export declare function _npmShimTarget(cmdPath: string): string | null;
|
|
|
98
98
|
* is `get_state.isStreaming` (see `RpcChild.refreshBusy`).
|
|
99
99
|
*/
|
|
100
100
|
export declare function busyTransition(line: string): boolean | null;
|
|
101
|
+
/**
|
|
102
|
+
* Parses an RPC `extension_ui_request` line emitted by the Pi child.
|
|
103
|
+
*
|
|
104
|
+
* Pi's RPC UI context writes these frames to stdout for every `ctx.ui.*` call
|
|
105
|
+
* (select/confirm/input/editor/notify/setStatus/setWidget/setTitle/
|
|
106
|
+
* set_editor_text). The supervisor forwards them to the paired app over the UI
|
|
107
|
+
* socket; before this they were dropped, so a plugin's UI call hung forever.
|
|
108
|
+
*/
|
|
109
|
+
export declare function parseUiRequestLine(line: string): ({
|
|
110
|
+
type: "extension_ui_request";
|
|
111
|
+
id: string;
|
|
112
|
+
} & Record<string, unknown>) | null;
|
|
101
113
|
/**
|
|
102
114
|
* CLI args for the daemon's `pi --mode rpc` child.
|
|
103
115
|
*
|
|
@@ -170,6 +182,18 @@ export declare class RpcChild extends EventEmitter {
|
|
|
170
182
|
* Returns false if the child isn't running (caller decides how to report).
|
|
171
183
|
*/
|
|
172
184
|
sendPrompt(text: string, requestId?: string): boolean;
|
|
185
|
+
/**
|
|
186
|
+
* Answers an RPC `extension_ui_request` the child emitted (select / confirm /
|
|
187
|
+
* input / editor / notify). The supervisor forwards these from a paired app
|
|
188
|
+
* over the UI socket; the response must carry the request's `id`. Returns
|
|
189
|
+
* false when the child isn't running.
|
|
190
|
+
*/
|
|
191
|
+
sendUiResponse(response: {
|
|
192
|
+
id: string;
|
|
193
|
+
value?: string;
|
|
194
|
+
confirmed?: boolean;
|
|
195
|
+
cancelled?: boolean;
|
|
196
|
+
}): boolean;
|
|
173
197
|
/**
|
|
174
198
|
* Asks the child to exit gracefully. Sends SIGTERM; if the child doesn't
|
|
175
199
|
* exit within `timeoutMs`, escalates to SIGKILL. Resolves when the
|
package/dist/daemon/rpc_child.js
CHANGED
|
@@ -127,6 +127,27 @@ function parseGetStateResponse(line) {
|
|
|
127
127
|
isStreaming: typeof data?.isStreaming === "boolean" ? data.isStreaming : undefined,
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Parses an RPC `extension_ui_request` line emitted by the Pi child.
|
|
132
|
+
*
|
|
133
|
+
* Pi's RPC UI context writes these frames to stdout for every `ctx.ui.*` call
|
|
134
|
+
* (select/confirm/input/editor/notify/setStatus/setWidget/setTitle/
|
|
135
|
+
* set_editor_text). The supervisor forwards them to the paired app over the UI
|
|
136
|
+
* socket; before this they were dropped, so a plugin's UI call hung forever.
|
|
137
|
+
*/
|
|
138
|
+
export function parseUiRequestLine(line) {
|
|
139
|
+
let obj;
|
|
140
|
+
try {
|
|
141
|
+
obj = JSON.parse(line);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const o = obj;
|
|
147
|
+
if (!o || o.type !== "extension_ui_request" || typeof o.id !== "string")
|
|
148
|
+
return null;
|
|
149
|
+
return o;
|
|
150
|
+
}
|
|
130
151
|
/**
|
|
131
152
|
* CLI args for the daemon's `pi --mode rpc` child.
|
|
132
153
|
*
|
|
@@ -276,6 +297,24 @@ export class RpcChild extends EventEmitter {
|
|
|
276
297
|
return false;
|
|
277
298
|
}
|
|
278
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* Answers an RPC `extension_ui_request` the child emitted (select / confirm /
|
|
302
|
+
* input / editor / notify). The supervisor forwards these from a paired app
|
|
303
|
+
* over the UI socket; the response must carry the request's `id`. Returns
|
|
304
|
+
* false when the child isn't running.
|
|
305
|
+
*/
|
|
306
|
+
sendUiResponse(response) {
|
|
307
|
+
if (!this.child || !this.child.stdin || this._state !== "running")
|
|
308
|
+
return false;
|
|
309
|
+
const cmd = { type: "extension_ui_response", ...response };
|
|
310
|
+
try {
|
|
311
|
+
this.child.stdin.write(JSON.stringify(cmd) + "\n");
|
|
312
|
+
return true;
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
return false;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
279
318
|
/**
|
|
280
319
|
* Asks the child to exit gracefully. Sends SIGTERM; if the child doesn't
|
|
281
320
|
* exit within `timeoutMs`, escalates to SIGKILL. Resolves when the
|
|
@@ -328,6 +367,9 @@ export class RpcChild extends EventEmitter {
|
|
|
328
367
|
pending.resolve(this._busy);
|
|
329
368
|
}
|
|
330
369
|
}
|
|
370
|
+
const uiRequest = parseUiRequestLine(line);
|
|
371
|
+
if (uiRequest)
|
|
372
|
+
this.emit("ui_request", uiRequest);
|
|
331
373
|
this.emit("stdout", line);
|
|
332
374
|
}
|
|
333
375
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc_child.js","sourceRoot":"","sources":["../../src/daemon/rpc_child.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rpc_child.js","sourceRoot":"","sources":["../../src/daemon/rpc_child.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,10 @@ export declare function decideFireAction(o: {
|
|
|
25
25
|
export declare class Supervisor {
|
|
26
26
|
private readonly opts;
|
|
27
27
|
private server;
|
|
28
|
+
/** Persistent UI socket: one long-lived connection per running daemon child,
|
|
29
|
+
* keyed by daemon id. See `ui_bridge.ts` for the child side. */
|
|
30
|
+
private uiServer;
|
|
31
|
+
private readonly uiClients;
|
|
28
32
|
private readonly children;
|
|
29
33
|
/** Live croner schedules, keyed by cron job id (plan/39). */
|
|
30
34
|
private readonly cronJobs;
|
|
@@ -37,6 +41,17 @@ export declare class Supervisor {
|
|
|
37
41
|
private _mkdirParent;
|
|
38
42
|
private _bindUds;
|
|
39
43
|
private _onConnection;
|
|
44
|
+
/**
|
|
45
|
+
* Bind the persistent UI socket. Unlike the control socket (one request →
|
|
46
|
+
* one reply → close), each extension child holds its connection open for its
|
|
47
|
+
* whole life so `ctx.ui.*` frames can stream in both directions.
|
|
48
|
+
*/
|
|
49
|
+
private _bindUiUds;
|
|
50
|
+
private _onUiConnection;
|
|
51
|
+
/** Forward one `extension_ui_request` frame from a daemon child to its
|
|
52
|
+
* connected app bridge. No-op when no bridge is attached — the RPC call
|
|
53
|
+
* then hits its own timeout, matching pre-primitive-B behavior. */
|
|
54
|
+
private _pushUiFrame;
|
|
40
55
|
private _handleRequest;
|
|
41
56
|
private _listInfo;
|
|
42
57
|
private _opStartAll;
|
|
@@ -91,3 +106,5 @@ export declare function _idForCwdForTest(cwd: string): string;
|
|
|
91
106
|
/** Exported for the bin/supervisord entry + tests to know where the
|
|
92
107
|
* supervisor will bind. */
|
|
93
108
|
export declare function getSupervisorSockPath(): string;
|
|
109
|
+
/** Exported for `daemon/ui_bridge.ts` (the child side) + tests. */
|
|
110
|
+
export declare function getSupervisorUiSockPath(): string;
|
|
@@ -31,6 +31,7 @@ import { appendCronLog, readCronLog } from "./cron_log.js";
|
|
|
31
31
|
* the registry and re-spawns everything.
|
|
32
32
|
*/
|
|
33
33
|
const SUPERVISOR_SOCK_NAME = "supervisor.sock";
|
|
34
|
+
const SUPERVISOR_UI_SOCK_NAME = "supervisor-ui.sock";
|
|
34
35
|
/** Backoff schedule for auto-restart after a crash. After exhausting, the
|
|
35
36
|
* child stays in `crashed` state until manual `restart_all` or fresh
|
|
36
37
|
* registry add. Keeps logs sane when the agent dies on every boot. */
|
|
@@ -40,6 +41,14 @@ function supervisorSockPath() {
|
|
|
40
41
|
// POSIX → ~/.pi/remote/supervisor.sock; Windows → per-user named pipe (plan/40).
|
|
41
42
|
return ipcAddress("supervisor", join(root, ".pi", "remote", SUPERVISOR_SOCK_NAME));
|
|
42
43
|
}
|
|
44
|
+
/** Persistent newline-JSON UDS the daemon extension children connect to so the
|
|
45
|
+
* supervisor can forward their `ctx.ui.*` frames to the paired app and route
|
|
46
|
+
* the app's answers back. Separate from the request/reply control socket
|
|
47
|
+
* because these connections stay open for the child's whole life. */
|
|
48
|
+
function uiSockPath() {
|
|
49
|
+
const root = process.env["REMOTE_PI_HOME"] || homedir();
|
|
50
|
+
return ipcAddress("supervisor-ui", join(root, ".pi", "remote", SUPERVISOR_UI_SOCK_NAME));
|
|
51
|
+
}
|
|
43
52
|
/** Thrown by `start()` when another live supervisor already holds the UDS.
|
|
44
53
|
* Prevents a second supervisor from orphaning the first's children. */
|
|
45
54
|
export class SupervisorAlreadyRunningError extends Error {
|
|
@@ -78,6 +87,10 @@ export function decideFireAction(o) {
|
|
|
78
87
|
export class Supervisor {
|
|
79
88
|
opts;
|
|
80
89
|
server = null;
|
|
90
|
+
/** Persistent UI socket: one long-lived connection per running daemon child,
|
|
91
|
+
* keyed by daemon id. See `ui_bridge.ts` for the child side. */
|
|
92
|
+
uiServer = null;
|
|
93
|
+
uiClients = new Map();
|
|
81
94
|
children = new Map();
|
|
82
95
|
/** Live croner schedules, keyed by cron job id (plan/39). */
|
|
83
96
|
cronJobs = new Map();
|
|
@@ -92,6 +105,7 @@ export class Supervisor {
|
|
|
92
105
|
// field) so every daemon has a stable name to inject via env.
|
|
93
106
|
migrateRegistryNames();
|
|
94
107
|
await this._bindUds();
|
|
108
|
+
await this._bindUiUds();
|
|
95
109
|
this._spawnAllFromRegistry();
|
|
96
110
|
// Cron (plan/39): schedule all enabled jobs, then run any missed catchup.
|
|
97
111
|
this._reconcileCron();
|
|
@@ -127,6 +141,20 @@ export class Supervisor {
|
|
|
127
141
|
}
|
|
128
142
|
catch { /* ignored */ }
|
|
129
143
|
}
|
|
144
|
+
// Close the persistent UI socket + drop every attached extension client.
|
|
145
|
+
await new Promise((resolve) => {
|
|
146
|
+
if (!this.uiServer)
|
|
147
|
+
return resolve();
|
|
148
|
+
this.uiServer.close(() => resolve());
|
|
149
|
+
});
|
|
150
|
+
this.uiServer = null;
|
|
151
|
+
this.uiClients.clear();
|
|
152
|
+
if (!usesNamedPipe()) {
|
|
153
|
+
try {
|
|
154
|
+
unlinkSync(uiSockPath());
|
|
155
|
+
}
|
|
156
|
+
catch { /* ignored */ }
|
|
157
|
+
}
|
|
130
158
|
}
|
|
131
159
|
// ── UDS binding ──────────────────────────────────────────────────────────
|
|
132
160
|
_mkdirParent() {
|
|
@@ -179,6 +207,100 @@ export class Supervisor {
|
|
|
179
207
|
});
|
|
180
208
|
socket.on("error", () => { });
|
|
181
209
|
}
|
|
210
|
+
// ── Extension UI socket (plan/58 primitive B) ────────────────────────────
|
|
211
|
+
/**
|
|
212
|
+
* Bind the persistent UI socket. Unlike the control socket (one request →
|
|
213
|
+
* one reply → close), each extension child holds its connection open for its
|
|
214
|
+
* whole life so `ctx.ui.*` frames can stream in both directions.
|
|
215
|
+
*/
|
|
216
|
+
async _bindUiUds() {
|
|
217
|
+
const path = uiSockPath();
|
|
218
|
+
const pipe = usesNamedPipe();
|
|
219
|
+
// A stale file from a crashed supervisor would make `listen` fail; the
|
|
220
|
+
// control-socket single-instance guard already ran, so it is safe to clear.
|
|
221
|
+
if (!pipe && existsSync(path)) {
|
|
222
|
+
try {
|
|
223
|
+
unlinkSync(path);
|
|
224
|
+
}
|
|
225
|
+
catch { /* will throw on bind if still held */ }
|
|
226
|
+
}
|
|
227
|
+
const server = createServer((socket) => this._onUiConnection(socket));
|
|
228
|
+
await new Promise((resolve, reject) => {
|
|
229
|
+
server.once("error", reject);
|
|
230
|
+
server.listen(path, () => resolve());
|
|
231
|
+
});
|
|
232
|
+
this.uiServer = server;
|
|
233
|
+
}
|
|
234
|
+
_onUiConnection(socket) {
|
|
235
|
+
let buf = "";
|
|
236
|
+
// The daemon id this socket announced via `ui_hello`; set once, then used
|
|
237
|
+
// to route every `ui_response` line back to the right child.
|
|
238
|
+
let daemonId = null;
|
|
239
|
+
socket.setEncoding("utf8");
|
|
240
|
+
socket.on("data", (chunk) => {
|
|
241
|
+
buf += chunk;
|
|
242
|
+
let nl;
|
|
243
|
+
while ((nl = buf.indexOf("\n")) >= 0) {
|
|
244
|
+
const line = buf.slice(0, nl);
|
|
245
|
+
buf = buf.slice(nl + 1);
|
|
246
|
+
if (!line.trim())
|
|
247
|
+
continue;
|
|
248
|
+
let obj;
|
|
249
|
+
try {
|
|
250
|
+
obj = JSON.parse(line);
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
if (!obj || typeof obj !== "object")
|
|
256
|
+
continue;
|
|
257
|
+
const o = obj;
|
|
258
|
+
if (o["op"] === "ui_hello") {
|
|
259
|
+
const id = o["daemon_id"];
|
|
260
|
+
if (typeof id !== "string")
|
|
261
|
+
continue;
|
|
262
|
+
daemonId = id;
|
|
263
|
+
this.uiClients.set(id, socket);
|
|
264
|
+
}
|
|
265
|
+
else if (o["op"] === "ui_response") {
|
|
266
|
+
if (!daemonId)
|
|
267
|
+
continue;
|
|
268
|
+
const rpcId = o["id"];
|
|
269
|
+
if (typeof rpcId !== "string")
|
|
270
|
+
continue;
|
|
271
|
+
const response = { id: rpcId };
|
|
272
|
+
if (typeof o["value"] === "string")
|
|
273
|
+
response.value = o["value"];
|
|
274
|
+
if (typeof o["confirmed"] === "boolean")
|
|
275
|
+
response.confirmed = o["confirmed"];
|
|
276
|
+
if (o["cancelled"] === true)
|
|
277
|
+
response.cancelled = true;
|
|
278
|
+
this.children.get(daemonId)?.child.sendUiResponse(response);
|
|
279
|
+
}
|
|
280
|
+
// Unknown op → ignore (forward-compat).
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
socket.on("close", () => {
|
|
284
|
+
// Only drop the mapping if it still points at THIS socket (a reconnect
|
|
285
|
+
// for the same daemon replaces the map entry before the old close fires).
|
|
286
|
+
if (daemonId && this.uiClients.get(daemonId) === socket) {
|
|
287
|
+
this.uiClients.delete(daemonId);
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
socket.on("error", () => { });
|
|
291
|
+
}
|
|
292
|
+
/** Forward one `extension_ui_request` frame from a daemon child to its
|
|
293
|
+
* connected app bridge. No-op when no bridge is attached — the RPC call
|
|
294
|
+
* then hits its own timeout, matching pre-primitive-B behavior. */
|
|
295
|
+
_pushUiFrame(daemonId, frame) {
|
|
296
|
+
const sock = this.uiClients.get(daemonId);
|
|
297
|
+
if (!sock)
|
|
298
|
+
return;
|
|
299
|
+
try {
|
|
300
|
+
sock.write(JSON.stringify({ op: "ui_request", frame }) + "\n");
|
|
301
|
+
}
|
|
302
|
+
catch { /* client gone; drop the frame */ }
|
|
303
|
+
}
|
|
182
304
|
// ── Request dispatch ─────────────────────────────────────────────────────
|
|
183
305
|
async _handleRequest(line) {
|
|
184
306
|
let req;
|
|
@@ -552,6 +674,7 @@ export class Supervisor {
|
|
|
552
674
|
const slot = { id, cwd, child, restartTimer: null, restartAttempt: 0 };
|
|
553
675
|
this.children.set(id, slot);
|
|
554
676
|
child.on("exit", (evt) => this._onChildExit(id, evt));
|
|
677
|
+
child.on("ui_request", (frame) => this._pushUiFrame(id, frame));
|
|
555
678
|
child.spawn();
|
|
556
679
|
}
|
|
557
680
|
_onChildExit(id, evt) {
|
|
@@ -593,4 +716,6 @@ export function _idForCwdForTest(cwd) { return daemonIdForCwd(cwd); }
|
|
|
593
716
|
/** Exported for the bin/supervisord entry + tests to know where the
|
|
594
717
|
* supervisor will bind. */
|
|
595
718
|
export function getSupervisorSockPath() { return supervisorSockPath(); }
|
|
719
|
+
/** Exported for `daemon/ui_bridge.ts` (the child side) + tests. */
|
|
720
|
+
export function getSupervisorUiSockPath() { return uiSockPath(); }
|
|
596
721
|
//# sourceMappingURL=supervisor.js.map
|