aicodeman 1.30.0 → 1.31.0
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/dist/config/cli-registry/schema.d.ts +8 -0
- package/dist/config/cli-registry/schema.d.ts.map +1 -1
- package/dist/config/cli-registry/schema.js +29 -0
- package/dist/config/cli-registry/schema.js.map +1 -1
- package/dist/config/cli-registry/stock.d.ts.map +1 -1
- package/dist/config/cli-registry/stock.js +62 -7
- package/dist/config/cli-registry/stock.js.map +1 -1
- package/dist/config/cli-registry/types.d.ts +62 -0
- package/dist/config/cli-registry/types.d.ts.map +1 -1
- package/dist/config/remote-wake-limits.d.ts +23 -0
- package/dist/config/remote-wake-limits.d.ts.map +1 -0
- package/dist/config/remote-wake-limits.js +23 -0
- package/dist/config/remote-wake-limits.js.map +1 -0
- package/dist/custom-model-hosts.d.ts +32 -0
- package/dist/custom-model-hosts.d.ts.map +1 -1
- package/dist/custom-model-hosts.js.map +1 -1
- package/dist/custom-model-injection-apply.d.ts +29 -1
- package/dist/custom-model-injection-apply.d.ts.map +1 -1
- package/dist/custom-model-injection-apply.js +191 -5
- package/dist/custom-model-injection-apply.js.map +1 -1
- package/dist/custom-model-injection.d.ts +35 -9
- package/dist/custom-model-injection.d.ts.map +1 -1
- package/dist/custom-model-injection.js +37 -16
- package/dist/custom-model-injection.js.map +1 -1
- package/dist/mux-interface.d.ts +12 -0
- package/dist/mux-interface.d.ts.map +1 -1
- package/dist/remote-hosts.d.ts +20 -0
- package/dist/remote-hosts.d.ts.map +1 -1
- package/dist/remote-hosts.js +33 -0
- package/dist/remote-hosts.js.map +1 -1
- package/dist/remote-wake.d.ts +446 -0
- package/dist/remote-wake.d.ts.map +1 -0
- package/dist/remote-wake.js +880 -0
- package/dist/remote-wake.js.map +1 -0
- package/dist/session-env-clamp.d.ts +12 -7
- package/dist/session-env-clamp.d.ts.map +1 -1
- package/dist/session-env-clamp.js +12 -7
- package/dist/session-env-clamp.js.map +1 -1
- package/dist/session-submit-verifier.d.ts +44 -0
- package/dist/session-submit-verifier.d.ts.map +1 -0
- package/dist/session-submit-verifier.js +122 -0
- package/dist/session-submit-verifier.js.map +1 -0
- package/dist/session.d.ts +9 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +42 -1
- package/dist/session.js.map +1 -1
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +9 -0
- package/dist/tmux-manager.js.map +1 -1
- package/dist/types/session.d.ts +26 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js.map +1 -1
- package/dist/web/public/admin-ui.js.gz +0 -0
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/app.8df358cd.js +38 -0
- package/dist/web/public/app.8df358cd.js.br +0 -0
- package/dist/web/public/app.8df358cd.js.gz +0 -0
- package/dist/web/public/approvals-ui.js.gz +0 -0
- package/dist/web/public/{constants.258b140f.js → constants.85ed12f3.js} +74 -0
- package/dist/web/public/constants.85ed12f3.js.br +0 -0
- package/dist/web/public/constants.85ed12f3.js.gz +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/entrance-animations.js.gz +0 -0
- package/dist/web/public/home-sessions.js.gz +0 -0
- package/dist/web/public/host-wake-ui.js +440 -0
- package/dist/web/public/host-wake-ui.js.br +0 -0
- package/dist/web/public/host-wake-ui.js.gz +0 -0
- package/dist/web/public/i18n.83924614.js +1 -0
- package/dist/web/public/i18n.83924614.js.br +0 -0
- package/dist/web/public/i18n.83924614.js.gz +0 -0
- package/dist/web/public/image-input.cd4b97c4.js.gz +0 -0
- package/dist/web/public/index.html +186 -10
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.2cf04f17.js.gz +0 -0
- package/dist/web/public/mobile-handlers.6f354a87.js.gz +0 -0
- package/dist/web/public/mobile-overview.js.gz +0 -0
- package/dist/web/public/mobile.6caaa28a.css.gz +0 -0
- package/dist/web/public/notification-manager.36ea4624.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/{panels-ui.5b07ad14.js → panels-ui.28df5053.js} +5 -5
- package/dist/web/public/panels-ui.28df5053.js.br +0 -0
- package/dist/web/public/panels-ui.28df5053.js.gz +0 -0
- package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
- package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
- package/dist/web/public/readmymind-ui.js.gz +0 -0
- package/dist/web/public/reboot-restore-ui.js.gz +0 -0
- package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
- package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
- package/dist/web/public/session-lineage.js.gz +0 -0
- package/dist/web/public/session-ui.d4aea71a.js +88 -0
- package/dist/web/public/session-ui.d4aea71a.js.br +0 -0
- package/dist/web/public/session-ui.d4aea71a.js.gz +0 -0
- package/dist/web/public/settings-ui.4762f480.js +78 -0
- package/dist/web/public/settings-ui.4762f480.js.br +0 -0
- package/dist/web/public/settings-ui.4762f480.js.gz +0 -0
- package/dist/web/public/styles.e34fea04.css +1 -0
- package/dist/web/public/styles.e34fea04.css.br +0 -0
- package/dist/web/public/styles.e34fea04.css.gz +0 -0
- package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/tab-rail-resize.42c24949.js.gz +0 -0
- package/dist/web/public/terminal-keycode229-recovery.fb91b25b.js.gz +0 -0
- package/dist/web/public/terminal-ui.35812aa2.js +2 -0
- package/dist/web/public/terminal-ui.35812aa2.js.br +0 -0
- package/dist/web/public/terminal-ui.35812aa2.js.gz +0 -0
- package/dist/web/public/ultracode-panel.js.gz +0 -0
- package/dist/web/public/ultracode-windows.js.gz +0 -0
- package/dist/web/public/upload.html.gz +0 -0
- package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/marked.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.bd6882b8.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
- package/dist/web/public/vendor/xterm.css.gz +0 -0
- package/dist/web/public/vendor/xterm.min.js.gz +0 -0
- package/dist/web/public/voice-input.c4b51eb6.js.gz +0 -0
- package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
- package/dist/web/public/webview-tabs.js.gz +0 -0
- package/dist/web/routes/custom-model-routes.d.ts +173 -0
- package/dist/web/routes/custom-model-routes.d.ts.map +1 -1
- package/dist/web/routes/custom-model-routes.js +628 -11
- package/dist/web/routes/custom-model-routes.js.map +1 -1
- package/dist/web/routes/index.d.ts +1 -1
- package/dist/web/routes/index.d.ts.map +1 -1
- package/dist/web/routes/index.js +1 -1
- package/dist/web/routes/index.js.map +1 -1
- package/dist/web/routes/session-routes.d.ts +6 -1
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +448 -17
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/schemas.d.ts +15 -0
- package/dist/web/schemas.d.ts.map +1 -1
- package/dist/web/schemas.js +76 -0
- package/dist/web/schemas.js.map +1 -1
- package/dist/web/server.d.ts +21 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +130 -5
- package/dist/web/server.js.map +1 -1
- package/dist/web/sse-events.d.ts +25 -2
- package/dist/web/sse-events.d.ts.map +1 -1
- package/dist/web/sse-events.js +30 -3
- package/dist/web/sse-events.js.map +1 -1
- package/package.json +1 -1
- package/skills/codeman/SKILL.md +75 -26
- package/skills/codeman/preamble.sh +66 -19
- package/skills/codeman/reference/recipes.md +1 -1
- package/dist/web/public/app.6d2dc4e8.js +0 -38
- package/dist/web/public/app.6d2dc4e8.js.br +0 -0
- package/dist/web/public/app.6d2dc4e8.js.gz +0 -0
- package/dist/web/public/constants.258b140f.js.br +0 -0
- package/dist/web/public/constants.258b140f.js.gz +0 -0
- package/dist/web/public/i18n.5f897ed5.js +0 -1
- package/dist/web/public/i18n.5f897ed5.js.br +0 -0
- package/dist/web/public/i18n.5f897ed5.js.gz +0 -0
- package/dist/web/public/panels-ui.5b07ad14.js.br +0 -0
- package/dist/web/public/panels-ui.5b07ad14.js.gz +0 -0
- package/dist/web/public/session-ui.42b81477.js +0 -77
- package/dist/web/public/session-ui.42b81477.js.br +0 -0
- package/dist/web/public/session-ui.42b81477.js.gz +0 -0
- package/dist/web/public/settings-ui.58f1d756.js +0 -67
- package/dist/web/public/settings-ui.58f1d756.js.br +0 -0
- package/dist/web/public/settings-ui.58f1d756.js.gz +0 -0
- package/dist/web/public/styles.e6edfb0b.css +0 -1
- package/dist/web/public/styles.e6edfb0b.css.br +0 -0
- package/dist/web/public/styles.e6edfb0b.css.gz +0 -0
- package/dist/web/public/terminal-ui.4f8d5820.js +0 -2
- package/dist/web/public/terminal-ui.4f8d5820.js.br +0 -0
- package/dist/web/public/terminal-ui.4f8d5820.js.gz +0 -0
package/dist/remote-hosts.js
CHANGED
|
@@ -496,6 +496,31 @@ export function remoteDisplayPath(remote) {
|
|
|
496
496
|
const path = 'remotePath' in remote ? remote.remotePath : remote.path;
|
|
497
497
|
return `${remote.username}@${remote.host}:${path}`;
|
|
498
498
|
}
|
|
499
|
+
/**
|
|
500
|
+
* Refresh HOST-level config on a RESTORED `SessionRemote`.
|
|
501
|
+
*
|
|
502
|
+
* A session's `remote` block is persisted at launch time (mux-sessions.json /
|
|
503
|
+
* state.json) and recovery uses that snapshot, so a field ADDED to the host config
|
|
504
|
+
* later never reaches an already-running session — not even across a Codeman
|
|
505
|
+
* restart. That is exactly how a `wakeCommand` added to `remote-hosts.json` would
|
|
506
|
+
* silently do nothing until the session is relaunched (which for an owned remote
|
|
507
|
+
* session means killing the remote tmux).
|
|
508
|
+
*
|
|
509
|
+
* Deliberately narrow: ONLY `wakeCommand`/`wakeMac` are taken from the host config,
|
|
510
|
+
* and the host is authoritative for them (removing one in the config turns that
|
|
511
|
+
* wake path off again). The other host-level fields (`commands`, ssh options) stay as
|
|
512
|
+
* persisted so this cannot silently change how an existing pane connects.
|
|
513
|
+
*/
|
|
514
|
+
export function rehydrateRemoteHostFields(remote, hostsById) {
|
|
515
|
+
if (!remote)
|
|
516
|
+
return remote;
|
|
517
|
+
const host = hostsById.get(remote.hostId);
|
|
518
|
+
if (!host)
|
|
519
|
+
return remote;
|
|
520
|
+
if (remote.wakeCommand === host.wakeCommand && remote.wakeMac === host.wakeMac)
|
|
521
|
+
return remote;
|
|
522
|
+
return { ...remote, wakeCommand: host.wakeCommand, wakeMac: host.wakeMac };
|
|
523
|
+
}
|
|
499
524
|
export function toSessionRemote(host, remoteCase) {
|
|
500
525
|
return {
|
|
501
526
|
hostId: host.id,
|
|
@@ -505,6 +530,10 @@ export function toSessionRemote(host, remoteCase) {
|
|
|
505
530
|
port: host.port,
|
|
506
531
|
remotePath: remoteCase.remotePath,
|
|
507
532
|
commands: host.commands,
|
|
533
|
+
// Wake-on-LAN command/MAC travel with the session so the input route can wake a
|
|
534
|
+
// sleeping host without a second config read (see remote-wake.ts).
|
|
535
|
+
wakeCommand: host.wakeCommand,
|
|
536
|
+
wakeMac: host.wakeMac,
|
|
508
537
|
// COD-105 — the COD-104 launch path creates the remote session, so we own it
|
|
509
538
|
// (an explicit kill may propagate a remote kill-session). Discovered+attached
|
|
510
539
|
// sessions go through `toAttachedSessionRemote` with `owned: false`.
|
|
@@ -538,6 +567,10 @@ export function toAttachedSessionRemote(host, remoteSessionName, remotePath) {
|
|
|
538
567
|
port: host.port,
|
|
539
568
|
remotePath,
|
|
540
569
|
commands: host.commands,
|
|
570
|
+
// An attached session can be woken exactly the same way — the identity of the
|
|
571
|
+
// creator does not change whether the host is asleep.
|
|
572
|
+
wakeCommand: host.wakeCommand,
|
|
573
|
+
wakeMac: host.wakeMac,
|
|
541
574
|
// Discovered + attached — another Codeman created it. Detach-not-kill.
|
|
542
575
|
owned: false,
|
|
543
576
|
remoteSessionName,
|
package/dist/remote-hosts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-hosts.js","sourceRoot":"","sources":["../src/remote-hosts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"remote-hosts.js","sourceRoot":"","sources":["../src/remote-hosts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Wake a SLEEPING remote host from user input (user-triggered Wake-on-LAN).
|
|
3
|
+
*
|
|
4
|
+
* A durable remote session survives SSH drops (COD-104) and auto-reconnects
|
|
5
|
+
* (COD-108), but nothing brings the HOST back: if the remote machine suspended,
|
|
6
|
+
* the local tmux pane's `ssh` child stalls silently. `tmux send-keys` then
|
|
7
|
+
* SUCCEEDS against a pane that will never deliver the bytes, so typed input is
|
|
8
|
+
* lost with no error anywhere — the failure this module exists to close.
|
|
9
|
+
*
|
|
10
|
+
* Design (deliberately narrow, see docs/remote-sessions.md §Wake-on-LAN):
|
|
11
|
+
* - An EXPLICIT request wakes a host, and nothing else: user input on an
|
|
12
|
+
* established session (`handleInput`), the wake button (`ensureAwake`), or the
|
|
13
|
+
* user's own session create/attach request (`ensureHostAwake`, wired in the HTTP
|
|
14
|
+
* routes). Everything that runs on a TIMER — the auto-reconnect watcher, boot
|
|
15
|
+
* recovery, the reachability probe, session discovery — must never wake one, or
|
|
16
|
+
* a host would be re-woken ~45 s after each suspend and could never stay asleep
|
|
17
|
+
* (the "keepalive pings a sleeping host" failure already solved for a different
|
|
18
|
+
* consumer by `hufflepuff-mcp-lazy`). The create path is deliberately wired in
|
|
19
|
+
* `session-routes.ts` and NOT in the shared session service, because
|
|
20
|
+
* `cron-service.ts` builds sessions there without a user waiting on the answer.
|
|
21
|
+
* - Detection is a cheap TCP connect to the SSH port (no auth, no ssh client,
|
|
22
|
+
* a few hundred bytes — below any meaningful activity threshold), throttled
|
|
23
|
+
* per session. No SSH keepalive is added to the launch command: keepalives
|
|
24
|
+
* would move bytes into an otherwise idle connection every interval, which is
|
|
25
|
+
* exactly the "an open pipe keeps the host awake" bug the remote-side idle
|
|
26
|
+
* detector was rewritten to avoid.
|
|
27
|
+
* - While a wake is in flight, input is BUFFERED and flushed in order once the
|
|
28
|
+
* pane is reattached, so the user's first characters after a long pause are
|
|
29
|
+
* not the ones that get eaten.
|
|
30
|
+
*
|
|
31
|
+
* The pure decisions and the IO are separated so the decision table can be
|
|
32
|
+
* unit-tested without tmux, ssh, or a real host.
|
|
33
|
+
*
|
|
34
|
+
* @module remote-wake
|
|
35
|
+
*/
|
|
36
|
+
/** Minimum spacing between two reachability probes for the same session. */
|
|
37
|
+
export declare const REMOTE_WAKE_PROBE_MIN_INTERVAL_MS = 30000;
|
|
38
|
+
/** TCP-connect timeout for a reachability probe (host awake ≈ a few ms). */
|
|
39
|
+
export declare const REMOTE_WAKE_PROBE_TIMEOUT_MS = 1500;
|
|
40
|
+
/** Poll spacing while waiting for a woken host to accept SSH again. */
|
|
41
|
+
export declare const REMOTE_WAKE_READY_INTERVAL_MS = 1500;
|
|
42
|
+
/** Bounded wait for the host to come back after the wake command ran. */
|
|
43
|
+
export declare const REMOTE_WAKE_READY_TIMEOUT_MS = 90000;
|
|
44
|
+
/**
|
|
45
|
+
* Budget for a wake that an HTTP REQUEST is waiting on (session create/attach).
|
|
46
|
+
* Deliberately shorter than {@link REMOTE_WAKE_READY_TIMEOUT_MS}: the dashboard is
|
|
47
|
+
* served through a reverse proxy whose default `proxy_read_timeout` is 60 s, so a
|
|
48
|
+
* 90 s wait would be cut off AT THE PROXY while the session was still being built —
|
|
49
|
+
* the browser reports a failure for a session that exists. The budget has to cover
|
|
50
|
+
* the WHOLE request, not just the wait: 40 s here + the 1.5 s reachability probe +
|
|
51
|
+
* the tmux prereq probe's own 15 s timeout = 56.5 s worst case, still under 60 s.
|
|
52
|
+
* ⚠ The wake ITSELF counts against this, which the original arithmetic omitted: a
|
|
53
|
+
* `command` target can spend REMOTE_WAKE_COMMAND_TIMEOUT_MS before the readiness poll
|
|
54
|
+
* begins, which would have made the real worst case ~68 s. `_wakeAndWait` therefore
|
|
55
|
+
* subtracts the wake's measured elapsed time from this budget rather than adding to it.
|
|
56
|
+
* A warm S3 resume measures ~12 s, so 40 s is >3× the observed wake.
|
|
57
|
+
*/
|
|
58
|
+
export declare const REMOTE_WAKE_REQUEST_READY_TIMEOUT_MS = 40000;
|
|
59
|
+
/** The wake command itself must not hang the wake flow. */
|
|
60
|
+
export declare const REMOTE_WAKE_COMMAND_TIMEOUT_MS = 10000;
|
|
61
|
+
/**
|
|
62
|
+
* Settle time between respawning the ssh pane and flushing buffered input: the
|
|
63
|
+
* respawned `ssh` needs a moment to run `tmux -L codeman-remote … -A` and attach,
|
|
64
|
+
* and bytes written into a still-connecting pane land in nothing.
|
|
65
|
+
*/
|
|
66
|
+
export declare const REMOTE_WAKE_ATTACH_SETTLE_MS = 1500;
|
|
67
|
+
/**
|
|
68
|
+
* Cap on buffered input per session while a host is being woken. 4 KB is a lot
|
|
69
|
+
* of typing for a ~10 s wake; beyond it the OLDEST bytes are dropped (keeping the
|
|
70
|
+
* tail preserves what the user just typed, and a silently unbounded buffer would
|
|
71
|
+
* be a memory leak keyed on user input).
|
|
72
|
+
*/
|
|
73
|
+
export declare const REMOTE_WAKE_PENDING_MAX_BYTES = 4096;
|
|
74
|
+
/** Default SSH port used when the host config has no explicit `port`. */
|
|
75
|
+
export declare const DEFAULT_SSH_PORT = 22;
|
|
76
|
+
/** What the input path should do with a chunk of user input. Pure. */
|
|
77
|
+
export type RemoteInputAction = 'deliver' | 'probe' | 'buffer';
|
|
78
|
+
/**
|
|
79
|
+
* The caller-facing outcome of {@link RemoteWakeRegistry.handleInput}: either the
|
|
80
|
+
* caller writes the bytes as usual, or the registry took ownership of them.
|
|
81
|
+
*/
|
|
82
|
+
export type RemoteInputOutcome = 'deliver' | 'buffered' | 'dropped';
|
|
83
|
+
/**
|
|
84
|
+
* Decide what to do with an input chunk on an input route. Mirrors
|
|
85
|
+
* {@link RemoteWakeRegistry.handleInput} so the throttle table has exactly ONE
|
|
86
|
+
* definition and is unit-testable:
|
|
87
|
+
*
|
|
88
|
+
* - a wake already in flight → buffer (the flush owns delivery),
|
|
89
|
+
* - no wake command configured → deliver (feature off, today's behavior),
|
|
90
|
+
* - the last probe said "down" → buffer (no second probe; re-probing a known
|
|
91
|
+
* sleeping host on every keystroke would add seconds of latency per character),
|
|
92
|
+
* - never probed / throttle window elapsed → probe,
|
|
93
|
+
* - probed "up" inside the window → deliver.
|
|
94
|
+
*
|
|
95
|
+
* Pure — no clock, no IO.
|
|
96
|
+
*/
|
|
97
|
+
export declare function decideRemoteInputAction(args: {
|
|
98
|
+
hasWakeTarget: boolean;
|
|
99
|
+
waking: boolean;
|
|
100
|
+
probeAgeMs: number;
|
|
101
|
+
lastReachable?: boolean;
|
|
102
|
+
minProbeIntervalMs?: number;
|
|
103
|
+
}): RemoteInputAction;
|
|
104
|
+
/**
|
|
105
|
+
* Append `data` to the pending buffer, dropping the OLDEST whole chunks when the cap
|
|
106
|
+
* is exceeded. Returns the resulting buffer — the SAME array reference when the chunk
|
|
107
|
+
* was rejected, so the caller can tell the two apart. Pure.
|
|
108
|
+
*
|
|
109
|
+
* A chunk LARGER than the cap is dropped outright rather than trimmed: one paste is
|
|
110
|
+
* one `input` value, and it was never typed character by character, so delivering its
|
|
111
|
+
* tail would execute a fragment of it (with the trailing carriage return, if the paste
|
|
112
|
+
* had one) — a partial command the user never sent. Keeping the tail is right for
|
|
113
|
+
* typing, where the newest bytes are the ones the user just produced, and wrong for a
|
|
114
|
+
* chunk that arrived whole.
|
|
115
|
+
*/
|
|
116
|
+
export declare function appendBoundedPending(pending: string[], data: string, maxBytes?: number): string[];
|
|
117
|
+
/** The remote fields the wake flow needs. Structurally satisfied by `SessionRemote`. */
|
|
118
|
+
export interface WakeableRemote {
|
|
119
|
+
wakeCommand?: string;
|
|
120
|
+
wakeMac?: string;
|
|
121
|
+
hostId: string;
|
|
122
|
+
label: string;
|
|
123
|
+
host: string;
|
|
124
|
+
port?: number;
|
|
125
|
+
/** SSH jump host (`-J`): the host is reached THROUGH it, never directly. */
|
|
126
|
+
jumpHost?: string;
|
|
127
|
+
/** SOCKS5 proxy (`ProxyCommand=nc -X 5 …`): same, the direct address may not even route. */
|
|
128
|
+
socksProxy?: string;
|
|
129
|
+
/** Extra `-o KEY=VALUE` options; a `ProxyCommand`/`ProxyJump` in here proxies the host too. */
|
|
130
|
+
extraSshOptions?: string[];
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Whether the bare TCP probe can answer for this host at all. Pure.
|
|
134
|
+
*
|
|
135
|
+
* The probe connects straight to `host:port`. A host behind a jump host or a SOCKS
|
|
136
|
+
* proxy (the cloudflared case) is reachable ONLY through that proxy, so the direct
|
|
137
|
+
* connect fails while ssh works — and every consumer of the verdict would then act on
|
|
138
|
+
* a "sleeping" host that is fine: a permanent banner, a create-path gate that hides the
|
|
139
|
+
* real ssh error, and (with a wake target) input buffered for the life of the session
|
|
140
|
+
* because the readiness poll can never succeed. Such a host is reachability-UNKNOWN:
|
|
141
|
+
* the registry never buffers for it, never gates on it, and reports `null` rather than
|
|
142
|
+
* `false`. A wake target can still be fired for it, blind.
|
|
143
|
+
*/
|
|
144
|
+
export declare function isProbeable(remote: WakeableRemote): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* A resolved wake path for a host. `command` wins over `mac` (an explicit override
|
|
147
|
+
* beats the default path), and `null` means the host cannot be woken at all — which
|
|
148
|
+
* is what the UI turns into "configure WoL" instead of "wake".
|
|
149
|
+
*/
|
|
150
|
+
export type WakeTarget = {
|
|
151
|
+
kind: 'command';
|
|
152
|
+
command: string;
|
|
153
|
+
} | {
|
|
154
|
+
kind: 'mac';
|
|
155
|
+
macs: number[][];
|
|
156
|
+
} | null;
|
|
157
|
+
/**
|
|
158
|
+
* Resolve the wake target from host config. Pure.
|
|
159
|
+
*
|
|
160
|
+
* A malformed `wakeMac` resolves to `null` rather than throwing: the schema
|
|
161
|
+
* already rejects one at config time, so this can only be reached with a config
|
|
162
|
+
* written by hand, and a broken MAC must not break the input route.
|
|
163
|
+
*/
|
|
164
|
+
export declare function resolveWakeTarget(remote: WakeableRemote | undefined): WakeTarget;
|
|
165
|
+
/**
|
|
166
|
+
* Parse a comma-separated MAC list into byte arrays. Pure; returns null when any
|
|
167
|
+
* entry is malformed (all-or-nothing, so a typo cannot half-arm a host).
|
|
168
|
+
*/
|
|
169
|
+
export declare function parseMacList(value: string, maxMacs?: number): number[][] | null;
|
|
170
|
+
/**
|
|
171
|
+
* Build a Wake-on-LAN "magic packet": six `0xFF` bytes then the MAC repeated 16
|
|
172
|
+
* times. Pure — the shape is asserted byte-for-byte in the tests because a packet
|
|
173
|
+
* that is off by one byte simply never wakes anything.
|
|
174
|
+
*/
|
|
175
|
+
export declare function buildMagicPacket(mac: number[]): Buffer;
|
|
176
|
+
/**
|
|
177
|
+
* The slice of `Session` the wake flow uses — an interface rather than the
|
|
178
|
+
* concrete class so the registry is testable without a tmux server.
|
|
179
|
+
*/
|
|
180
|
+
export interface WakeableSession {
|
|
181
|
+
readonly id: string;
|
|
182
|
+
readonly remote: WakeableRemote | undefined;
|
|
183
|
+
/** COD-108 reattach: respawns the local ssh pane, idempotently attaching the durable remote tmux. */
|
|
184
|
+
reattachRemote(): Promise<boolean>;
|
|
185
|
+
/** Write bytes to the session's pane. `fromUser` marks input a person typed (or an agent sent for them). */
|
|
186
|
+
writeViaMux(data: string, options?: {
|
|
187
|
+
fromUser?: boolean;
|
|
188
|
+
}): Promise<boolean>;
|
|
189
|
+
}
|
|
190
|
+
/** Injected IO so the registry holds no direct dependency on ssh/net/child_process in tests. */
|
|
191
|
+
export interface RemoteWakeDeps {
|
|
192
|
+
/** Cheap reachability probe. Must resolve false (never throw) for a sleeping host. */
|
|
193
|
+
probe(remote: WakeableRemote): Promise<boolean>;
|
|
194
|
+
/** Run the resolved wake target (magic packet or host command). Resolves false on failure. */
|
|
195
|
+
wake(target: NonNullable<WakeTarget>): Promise<boolean>;
|
|
196
|
+
/** Poll until the woken host accepts connections again. */
|
|
197
|
+
waitUntilReady(remote: WakeableRemote, opts?: {
|
|
198
|
+
timeoutMs?: number;
|
|
199
|
+
signal?: AbortSignal;
|
|
200
|
+
}): Promise<boolean>;
|
|
201
|
+
/** Sleep helper (injected for tests). */
|
|
202
|
+
delay(ms: number): Promise<void>;
|
|
203
|
+
/** Notify the COD-108 watcher so an exhausted backoff is reset. */
|
|
204
|
+
noteReconnected?(sessionId: string, success: boolean): void;
|
|
205
|
+
/** SSE broadcast. */
|
|
206
|
+
broadcast?(event: 'remote:hostWaking' | 'remote:hostWakeFailed' | 'remote:sessionReconnected', payload: Record<string, unknown>): void;
|
|
207
|
+
/** Structured diagnostics. */
|
|
208
|
+
log?(message: string): void;
|
|
209
|
+
/**
|
|
210
|
+
* Resolve the host's CURRENT wake config for a session whose persisted `remote`
|
|
211
|
+
* snapshot predates it (or was configured after launch). Called at most once per
|
|
212
|
+
* `REMOTE_WAKE_RESOLVE_TTL_MS` per session, and only when the session's own copy
|
|
213
|
+
* has no wake target — so a config saved in the UI works without restarting the
|
|
214
|
+
* session, without a per-keystroke config read.
|
|
215
|
+
*/
|
|
216
|
+
resolveRemote?(session: WakeableSession): Promise<WakeableRemote | undefined>;
|
|
217
|
+
}
|
|
218
|
+
/** Probe freshness for the UI's reachability check (a tab switch is not a hammer). */
|
|
219
|
+
export declare const REMOTE_WAKE_REACHABILITY_TTL_MS = 5000;
|
|
220
|
+
/** How long a resolved host config is trusted before asking the resolver again. */
|
|
221
|
+
export declare const REMOTE_WAKE_RESOLVE_TTL_MS = 30000;
|
|
222
|
+
/**
|
|
223
|
+
* What the UI is allowed to offer for a host: how it can be woken, if at all. The
|
|
224
|
+
* `'none'` case is what the banner turns into "configure WoL" instead of "wake".
|
|
225
|
+
*/
|
|
226
|
+
export type WakeConfigured = 'command' | 'mac' | 'none';
|
|
227
|
+
/** Which wake path a host config provides (mirrors {@link resolveWakeTarget}). Pure. */
|
|
228
|
+
export declare function wakeConfigured(remote: WakeableRemote | undefined): WakeConfigured;
|
|
229
|
+
/**
|
|
230
|
+
* Outcome of waking a host for a caller that has NO session yet (the create/attach
|
|
231
|
+
* routes). A union rather than a boolean because the cases need different handling:
|
|
232
|
+
* `'no-target'` must leave the caller's behavior byte-identical (no probe, no extra
|
|
233
|
+
* latency for a host without WoL), `'unprobeable'` likewise (a proxied host, see
|
|
234
|
+
* {@link isProbeable} — the probe cannot tell asleep from awake, so nothing is gated on
|
|
235
|
+
* it), and only `'failed'` is an error that deserves its own message instead of the
|
|
236
|
+
* caller's usual one.
|
|
237
|
+
*/
|
|
238
|
+
export type HostWakeOutcome = 'no-target' | 'unprobeable' | 'ready' | 'failed';
|
|
239
|
+
/**
|
|
240
|
+
* Per-session wake state + single-flight wake flow.
|
|
241
|
+
*
|
|
242
|
+
* One instance per web server (module singleton in the routes file, like the
|
|
243
|
+
* signal-wait registry). State is keyed by session id and dropped with the
|
|
244
|
+
* session.
|
|
245
|
+
*/
|
|
246
|
+
export declare class RemoteWakeRegistry {
|
|
247
|
+
private readonly deps;
|
|
248
|
+
private readonly states;
|
|
249
|
+
/**
|
|
250
|
+
* Aborted by {@link stop} on shutdown. Every in-flight readiness poll is holding an
|
|
251
|
+
* HTTP request open (the wake route blocks on it), and Fastify's `close()` waits for
|
|
252
|
+
* in-flight requests — so without this a restart during a wake sits out the full 90 s
|
|
253
|
+
* budget. The same problem `sessionWaits.cancelEverything()` exists for.
|
|
254
|
+
*/
|
|
255
|
+
private readonly shutdown;
|
|
256
|
+
private stopped;
|
|
257
|
+
constructor(deps: RemoteWakeDeps);
|
|
258
|
+
/** Drop a session's state (session closed/killed). The pending buffer goes with it. */
|
|
259
|
+
drop(sessionId: string): void;
|
|
260
|
+
/**
|
|
261
|
+
* Resolve every in-flight wake as failed and refuse new ones (server shutdown).
|
|
262
|
+
*
|
|
263
|
+
* Called from `WebServer.stop()`: an in-flight wake is awaited by a request, and the
|
|
264
|
+
* server's own `app.close()` does not abort in-flight requests, so shutdown would wait
|
|
265
|
+
* out the poll. Nothing is lost by failing them — the state flush happens earlier in
|
|
266
|
+
* `stop()`, and the process is going away.
|
|
267
|
+
*/
|
|
268
|
+
stop(): void;
|
|
269
|
+
/** Whether a wake is currently in flight (diagnostics/tests). */
|
|
270
|
+
isWaking(sessionId: string): boolean;
|
|
271
|
+
/** Buffered input bytes for a session (diagnostics/tests). */
|
|
272
|
+
pendingBytes(sessionId: string): number;
|
|
273
|
+
/**
|
|
274
|
+
* Number of keys with wake state (diagnostics/tests). Pins that a LOCAL session never
|
|
275
|
+
* gets an entry: the input gate runs on every keystroke, so an entry per local session
|
|
276
|
+
* would be a map the size of the session list, swept only on cleanup.
|
|
277
|
+
*/
|
|
278
|
+
stateCount(): number;
|
|
279
|
+
/** Whether this session's host has any wake path configured at all. */
|
|
280
|
+
hasWakeTarget(session: WakeableSession): Promise<boolean>;
|
|
281
|
+
/** Which wake path is configured (`'none'` when the UI should offer configuration). */
|
|
282
|
+
wakeConfigured(session: WakeableSession): Promise<WakeConfigured>;
|
|
283
|
+
/**
|
|
284
|
+
* Reachability for the UI: probe unless a recent result is still fresh. `null` for a
|
|
285
|
+
* host the probe cannot reach (see {@link isProbeable}): unknown is not unreachable.
|
|
286
|
+
*
|
|
287
|
+
* Shares the per-session probe state with the input path on purpose — a fresh
|
|
288
|
+
* answer is exactly what the input ladder wants, and an `unreachable` verdict here
|
|
289
|
+
* makes the next keystroke buffer + wake instead of vanishing into a stalled pane.
|
|
290
|
+
*/
|
|
291
|
+
checkReachable(session: WakeableSession, opts?: {
|
|
292
|
+
force?: boolean;
|
|
293
|
+
ttlMs?: number;
|
|
294
|
+
}): Promise<boolean | null>;
|
|
295
|
+
/**
|
|
296
|
+
* Decide + act for one input chunk.
|
|
297
|
+
*
|
|
298
|
+
* `'deliver'` means the caller writes it as usual (today's path, zero added
|
|
299
|
+
* cost). `'buffered'` means the registry took ownership of the bytes: it either
|
|
300
|
+
* queued them behind an in-flight wake or started a wake, and will flush them
|
|
301
|
+
* in order once the pane is reattached.
|
|
302
|
+
*/
|
|
303
|
+
handleInput(session: WakeableSession, data: string): Promise<RemoteInputOutcome>;
|
|
304
|
+
/**
|
|
305
|
+
* Block until the host is reachable and the pane is reattached — the
|
|
306
|
+
* send-and-wait path, where the HTTP response stays open anyway and buffering
|
|
307
|
+
* would break the wait contract.
|
|
308
|
+
*/
|
|
309
|
+
ensureAwake(session: WakeableSession, opts?: {
|
|
310
|
+
force?: boolean;
|
|
311
|
+
timeoutMs?: number;
|
|
312
|
+
}): Promise<boolean>;
|
|
313
|
+
/**
|
|
314
|
+
* Host-scoped reachability, for a caller that has no session yet (create/attach).
|
|
315
|
+
* Shares the per-HOST probe state with {@link ensureHostAwake}, so the probe the
|
|
316
|
+
* wake flow just paid for also answers "was that ssh failure really a sleeping
|
|
317
|
+
* machine?". Never wakes anything — it is a question, not an action. `null` when the
|
|
318
|
+
* question cannot be answered (see {@link isProbeable}).
|
|
319
|
+
*/
|
|
320
|
+
checkHostReachable(remote: WakeableRemote, opts?: {
|
|
321
|
+
force?: boolean;
|
|
322
|
+
ttlMs?: number;
|
|
323
|
+
}): Promise<boolean | null>;
|
|
324
|
+
/**
|
|
325
|
+
* Wake a host for a REQUEST that is waiting on it — the session create/attach
|
|
326
|
+
* routes, where there is no session to reattach and no input to buffer yet.
|
|
327
|
+
*
|
|
328
|
+
* `'no-target'` returns without probing, so a host without WoL config costs
|
|
329
|
+
* nothing and behaves exactly as before. Single-flight per host, so a double click
|
|
330
|
+
* (or two cases on the same host) sends one packet and shares one readiness poll.
|
|
331
|
+
*/
|
|
332
|
+
ensureHostAwake(remote: WakeableRemote, opts?: {
|
|
333
|
+
timeoutMs?: number;
|
|
334
|
+
requestedBy?: string;
|
|
335
|
+
}): Promise<HostWakeOutcome>;
|
|
336
|
+
/**
|
|
337
|
+
* Single-flight wake for a host with no session (see {@link ensureHostAwake}). Uses the
|
|
338
|
+
* same single-flight `waking` slot the session flow uses — but a DIFFERENT key
|
|
339
|
+
* (`host:<id>` vs the session id), so a session wake and a create-path wake for the same
|
|
340
|
+
* host are two independent flows rather than one shared poll. Harmless (both are
|
|
341
|
+
* user-initiated and the host only wakes once), and keying them together would mean a
|
|
342
|
+
* create request joining an unrelated session's wake and inheriting its budget.
|
|
343
|
+
*/
|
|
344
|
+
private wakeHost;
|
|
345
|
+
/**
|
|
346
|
+
* Single-flight wake: probe-free (the caller already knows the host is down),
|
|
347
|
+
* run the wake command, poll for readiness, reattach the pane, flush the buffer.
|
|
348
|
+
*/
|
|
349
|
+
wake(session: WakeableSession, opts?: {
|
|
350
|
+
timeoutMs?: number;
|
|
351
|
+
}): Promise<boolean>;
|
|
352
|
+
/**
|
|
353
|
+
* Fire the wake target for a host whose readiness cannot be verified (see
|
|
354
|
+
* {@link isProbeable}): no readiness poll (it could never succeed), no reattach (the
|
|
355
|
+
* COD-108 watcher owns the pane once ssh works again), no `hostWaking` broadcast (its
|
|
356
|
+
* toast promises a wait that does not happen). The caller learns only whether the
|
|
357
|
+
* packet/command went out — and a wake IO that throws is a failed wake, never a
|
|
358
|
+
* rejected route.
|
|
359
|
+
*/
|
|
360
|
+
private _wakeBlind;
|
|
361
|
+
/**
|
|
362
|
+
* Broadcast + run the wake target + wait for SSH. Shared by the session flow (which
|
|
363
|
+
* then reattaches and flushes the buffer) and the create/attach flow (which has no
|
|
364
|
+
* pane yet). On failure the probe state is reset so the NEXT attempt probes and
|
|
365
|
+
* retries instead of trusting a stale "down" verdict forever.
|
|
366
|
+
*/
|
|
367
|
+
private _wakeAndWait;
|
|
368
|
+
private _state;
|
|
369
|
+
/**
|
|
370
|
+
* The host config to act on: the session's own `remote` when it is fresh enough, else a
|
|
371
|
+
* freshly resolved one.
|
|
372
|
+
*
|
|
373
|
+
* The persisted `remote` snapshot is taken at launch, so a wake target configured AFTER
|
|
374
|
+
* the session started (e.g. through the banner's config dialog, or by adding `wakeMac`
|
|
375
|
+
* to `remote-hosts.json`) is invisible to it. Recovery rehydration (server.ts) covers
|
|
376
|
+
* restarts; this covers the live session, and it is why saving the dialog takes effect
|
|
377
|
+
* without restarting anything.
|
|
378
|
+
*
|
|
379
|
+
* ⚠️ The host config wins in BOTH directions, so the resolver is consulted on the TTL
|
|
380
|
+
* regardless of whether the session already carries a target. Preferring the snapshot
|
|
381
|
+
* whenever it HAD one meant removing a MAC/command in the config (or the dialog) never
|
|
382
|
+
* took effect for a running session — the feature stayed on with a target nobody could
|
|
383
|
+
* see in the config any more, which is exactly the "host config is authoritative"
|
|
384
|
+
* promise failing in the one direction a user can observe.
|
|
385
|
+
*/
|
|
386
|
+
private _effectiveRemote;
|
|
387
|
+
/** Queue a chunk; `'dropped'` when it was over the cap and never entered the buffer. */
|
|
388
|
+
private _enqueue;
|
|
389
|
+
private _flush;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Cheap reachability probe: a bare TCP connect to the SSH port. Only meaningful for a
|
|
393
|
+
* host the registry deems probeable (see {@link isProbeable}); the registry never asks
|
|
394
|
+
* it about a proxied host.
|
|
395
|
+
*
|
|
396
|
+
* Deliberately NOT an `ssh … true` probe: that opens a full session (auth,
|
|
397
|
+
* remote log, process) every throttle window for a question a SYN already
|
|
398
|
+
* answers. Any byte count it does move is a few hundred bytes per probe, far
|
|
399
|
+
* below the remote idle detector's traffic threshold, so probing cannot keep a
|
|
400
|
+
* host awake.
|
|
401
|
+
*/
|
|
402
|
+
export declare function probeRemoteHostReachable(remote: WakeableRemote, timeoutMs?: number): Promise<boolean>;
|
|
403
|
+
/**
|
|
404
|
+
* Run a host's wake command (e.g. a Wake-on-LAN wrapper script). No shell — the
|
|
405
|
+
* value is a single executable path, so nothing in it can be interpreted.
|
|
406
|
+
* Resolves false on any failure (missing binary, non-zero exit, timeout) rather
|
|
407
|
+
* than throwing: a broken wake command must not break the input route.
|
|
408
|
+
*/
|
|
409
|
+
export declare function runRemoteWakeCommand(command: string, timeoutMs?: number): Promise<boolean>;
|
|
410
|
+
/**
|
|
411
|
+
* Send Wake-on-LAN magic packets for every MAC, over UDP to the broadcast address.
|
|
412
|
+
*
|
|
413
|
+
* This is the whole reason `wakeMac` exists: the common case needs no external
|
|
414
|
+
* script. Broadcast on 255.255.255.255 is what the CLI `wakeonlan` does and what the
|
|
415
|
+
* NICs here answer to; the socket is closed as soon as the packets are queued, so a
|
|
416
|
+
* sleeping host cannot leave a handle behind. Resolves false on any failure (no
|
|
417
|
+
* interface to broadcast on, permission) rather than throwing — a broken network
|
|
418
|
+
* must not break the wake flow, which reports the failure itself.
|
|
419
|
+
*/
|
|
420
|
+
export declare function sendWakePackets(addresses: number[][], port?: number, createSocket?: WakeSocketFactory): Promise<boolean>;
|
|
421
|
+
/** The `dgram` surface {@link sendWakePackets} uses — injectable so the bind/setBroadcast ORDER is testable. */
|
|
422
|
+
export interface WakeSocket {
|
|
423
|
+
bind(callback: () => void): void;
|
|
424
|
+
setBroadcast(flag: boolean): void;
|
|
425
|
+
send(msg: Buffer, port: number, address: string, callback: (err?: Error | null) => void): void;
|
|
426
|
+
close(): void;
|
|
427
|
+
once(event: 'error', listener: (err: Error) => void): void;
|
|
428
|
+
}
|
|
429
|
+
export type WakeSocketFactory = () => WakeSocket;
|
|
430
|
+
/** Poll the host until it accepts connections again, or the bound is hit. */
|
|
431
|
+
export declare function waitUntilRemoteReady(remote: WakeableRemote, opts?: {
|
|
432
|
+
intervalMs?: number;
|
|
433
|
+
timeoutMs?: number;
|
|
434
|
+
signal?: AbortSignal;
|
|
435
|
+
probe?: (remote: WakeableRemote) => Promise<boolean>;
|
|
436
|
+
}): Promise<boolean>;
|
|
437
|
+
/**
|
|
438
|
+
* Production wiring: all IO defaults, overridable for tests.
|
|
439
|
+
*
|
|
440
|
+
* The readiness poll uses the SAME probe as the rest of the deps, overridden or not.
|
|
441
|
+
* Wiring it to the module default instead let a caller that injected `probe` still
|
|
442
|
+
* poll the real host during the wait — under vitest, a TCP connect to a production
|
|
443
|
+
* address on every shutdown test (which the vitest guard is what finally caught).
|
|
444
|
+
*/
|
|
445
|
+
export declare function createDefaultRemoteWakeDeps(overrides?: Partial<RemoteWakeDeps>): RemoteWakeDeps;
|
|
446
|
+
//# sourceMappingURL=remote-wake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-wake.d.ts","sourceRoot":"","sources":["../src/remote-wake.ts"],"names":[],"mappings":"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"}
|