@thenewlabs/entangle-serve 2.12.2 → 2.13.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/daemon-client.d.ts +30 -0
- package/dist/daemon-client.d.ts.map +1 -0
- package/dist/daemon-client.js +76 -0
- package/dist/daemon-client.js.map +1 -0
- package/dist/daemon-server.d.ts +57 -0
- package/dist/daemon-server.d.ts.map +1 -0
- package/dist/daemon-server.js +253 -0
- package/dist/daemon-server.js.map +1 -0
- package/dist/daemon.d.ts +6 -6
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +15 -230
- package/dist/daemon.js.map +1 -1
- package/dist/host-session.d.ts +8 -0
- package/dist/host-session.d.ts.map +1 -1
- package/dist/host-session.js +2 -1
- package/dist/host-session.js.map +1 -1
- package/dist/host-terminal.js +48 -4
- package/dist/host-terminal.js.map +1 -1
- package/dist/index.js +44 -67
- package/dist/index.js.map +1 -1
- package/dist/session-registry.d.ts +22 -0
- package/dist/session-registry.d.ts.map +1 -1
- package/dist/session-registry.js +38 -1
- package/dist/session-registry.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import * as net from 'net';
|
|
3
2
|
import * as fs from 'fs';
|
|
4
|
-
import { spawn } from 'child_process';
|
|
5
3
|
import { fileURLToPath } from 'url';
|
|
6
4
|
import { Command } from 'commander';
|
|
7
5
|
import { getConfig, getVersionInfo, OutputHandler, parseOutputMode } from '@thenewlabs/entangle-utils';
|
|
@@ -11,8 +9,8 @@ import { promptHidden } from './prompt.js';
|
|
|
11
9
|
import { SharedWorkspace } from './shared-workspace.js';
|
|
12
10
|
import { LocalHostSession } from './host-session.js';
|
|
13
11
|
import { attachHostTerminal } from './host-terminal.js';
|
|
14
|
-
import {
|
|
15
|
-
import { cleanupStale, defaultSessionName, ensureRunDir, findSession, isAlive, listSessions, logPath, removeSession, socketPath, } from './session-registry.js';
|
|
12
|
+
import { attachToSocket, connectSocket, pollSocket, spawnDetached } from './daemon-client.js';
|
|
13
|
+
import { assertSocketPathUsable, cleanupStale, defaultSessionName, ensureRunDir, findSession, isAlive, listSessions, logPath, removeSession, socketPath, waitForSessionUrl, } from './session-registry.js';
|
|
16
14
|
// Hidden daemon entry: the interactive shared path spawns this same binary as
|
|
17
15
|
// `node <index.js> __daemon` (detached), which must run the headless daemon
|
|
18
16
|
// (see daemon.ts) rather than the CLI. Detected before the commander program is
|
|
@@ -29,42 +27,6 @@ if (process.argv[2] === '__daemon') {
|
|
|
29
27
|
else {
|
|
30
28
|
runCli();
|
|
31
29
|
}
|
|
32
|
-
/** How long to wait for a freshly spawned daemon's socket to become connectable. */
|
|
33
|
-
const SOCKET_POLL_INTERVAL_MS = 100;
|
|
34
|
-
const SOCKET_POLL_TIMEOUT_MS = 8000;
|
|
35
|
-
/** Resolve after `ms`. */
|
|
36
|
-
function delay(ms) {
|
|
37
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
38
|
-
}
|
|
39
|
-
/** Connect to a unix socket, rejecting on connection error. */
|
|
40
|
-
function connectSocket(path) {
|
|
41
|
-
return new Promise((resolve, reject) => {
|
|
42
|
-
const socket = net.connect(path);
|
|
43
|
-
const onError = (err) => reject(err);
|
|
44
|
-
socket.once('error', onError);
|
|
45
|
-
socket.once('connect', () => { socket.removeListener('error', onError); resolve(socket); });
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Poll a socket path until it accepts a connection, resolving the connected
|
|
50
|
-
* socket. Rejects with a pointer to `logFile` if it never comes up in time. The
|
|
51
|
-
* socket is left flowing-paused (no 'data' listener) so no daemon frames are
|
|
52
|
-
* lost before the RemoteHostSession attaches its reader.
|
|
53
|
-
*/
|
|
54
|
-
async function pollSocket(path, logFile) {
|
|
55
|
-
const deadline = Date.now() + SOCKET_POLL_TIMEOUT_MS;
|
|
56
|
-
for (;;) {
|
|
57
|
-
try {
|
|
58
|
-
return await connectSocket(path);
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
if (Date.now() >= deadline) {
|
|
62
|
-
throw new Error(`Session daemon did not come up within ${SOCKET_POLL_TIMEOUT_MS / 1000}s (socket ${path}); see log: ${logFile}`);
|
|
63
|
-
}
|
|
64
|
-
await delay(SOCKET_POLL_INTERVAL_MS);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
30
|
/**
|
|
69
31
|
* Spawn the detached daemon for `sessionName` (this same binary re-invoked with
|
|
70
32
|
* the hidden `__daemon` arg) and poll its socket, resolving the connected socket
|
|
@@ -74,12 +36,14 @@ async function spawnDaemon(opts) {
|
|
|
74
36
|
const { sessionName, serverUrl, cap, password } = opts;
|
|
75
37
|
ensureRunDir();
|
|
76
38
|
const sock = socketPath(sessionName);
|
|
39
|
+
// Fail here, in the foreground, rather than letting the detached daemon die
|
|
40
|
+
// on the same check and time the socket poll out.
|
|
41
|
+
assertSocketPathUsable(sock);
|
|
77
42
|
const logFile = logPath(sessionName);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
stdio: ['ignore', logFd, logFd],
|
|
43
|
+
spawnDetached({
|
|
44
|
+
entry: fileURLToPath(import.meta.url),
|
|
45
|
+
args: ['__daemon'],
|
|
46
|
+
logFile,
|
|
83
47
|
env: {
|
|
84
48
|
...process.env,
|
|
85
49
|
ENTANGLE_DAEMON_SESSION: sessionName,
|
|
@@ -89,23 +53,8 @@ async function spawnDaemon(opts) {
|
|
|
89
53
|
...(password ? { ENTANGLE_DAEMON_PASSWORD: password } : {}),
|
|
90
54
|
},
|
|
91
55
|
});
|
|
92
|
-
child.unref();
|
|
93
|
-
fs.closeSync(logFd); // the child holds its own fd
|
|
94
56
|
return pollSocket(sock, logFile);
|
|
95
57
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Attach this terminal to a daemon over its (already connected) socket: wrap it
|
|
98
|
-
* in a RemoteHostSession sized to the current terminal and hand it to the host
|
|
99
|
-
* UI. host-terminal keeps the process alive and calls process.exit on the
|
|
100
|
-
* session's exit/detach path.
|
|
101
|
-
*/
|
|
102
|
-
function attachToSocket(socket, output) {
|
|
103
|
-
const session = new RemoteHostSession(socket, {
|
|
104
|
-
cols: process.stdout.columns || 80,
|
|
105
|
-
rows: process.stdout.rows || 24,
|
|
106
|
-
});
|
|
107
|
-
attachHostTerminal(session, output);
|
|
108
|
-
}
|
|
109
58
|
/** Reduce a session URL to a short, secret-free form (drops the `#S=` fragment). */
|
|
110
59
|
function shortUrl(url) {
|
|
111
60
|
if (!url)
|
|
@@ -152,6 +101,7 @@ function runCli() {
|
|
|
152
101
|
.option('--shared', 'Serve one shared terminal that everyone with the URL attaches to (default when run in a terminal)')
|
|
153
102
|
.option('--headless', 'Run headless: each connection gets its own shell instead of a shared terminal')
|
|
154
103
|
.option('--session <name>', 'Name of the detachable session to start or reattach to (defaults to one derived from the capability)')
|
|
104
|
+
.option('-d, --detach', 'Start the session in the background and print its URL instead of attaching')
|
|
155
105
|
.action(async (url, options) => {
|
|
156
106
|
try {
|
|
157
107
|
// Propagate output mode to all loggers in this process
|
|
@@ -187,27 +137,50 @@ function runCli() {
|
|
|
187
137
|
const shared = options.headless === true ? false
|
|
188
138
|
: options.shared === true ? true
|
|
189
139
|
: isTty && outputMode === 'text';
|
|
140
|
+
if (options.detach === true && options.headless === true) {
|
|
141
|
+
output.error('--detach cannot be combined with --headless (a detached session is always shared)');
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
190
144
|
// The interactive shared path (a real terminal serving one shared session
|
|
191
145
|
// in text mode) is daemonized tmux-style: a detached daemon owns the
|
|
192
146
|
// session + relay connection and this process is just a client that
|
|
193
147
|
// attaches to it, so closing the terminal (or Ctrl-B d) leaves the session
|
|
194
|
-
// running.
|
|
195
|
-
|
|
148
|
+
// running. `--detach` takes the same path but exits after starting the
|
|
149
|
+
// daemon instead of attaching. Every other path keeps today's
|
|
150
|
+
// in-foreground behavior below.
|
|
151
|
+
if (options.detach === true || (shared && isTty && outputMode === 'text')) {
|
|
196
152
|
// The daemon must pin a concrete capability, so mint the ephemeral one
|
|
197
153
|
// here (instead of letting startAgent mint it) when none was pinned.
|
|
198
154
|
const cap = pinnedCapability ?? await createCapability({ singleRun: false });
|
|
199
155
|
const sessionName = options.session || defaultSessionName(cap.capId);
|
|
200
156
|
cleanupStale();
|
|
201
157
|
const existing = findSession(sessionName);
|
|
158
|
+
const live = existing && isAlive(existing) ? existing : undefined;
|
|
159
|
+
if (options.detach === true) {
|
|
160
|
+
if (live) {
|
|
161
|
+
output.info(`Session "${sessionName}" is already running; reattach with: entangle attach ${sessionName}`);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const socket = await spawnDaemon({ sessionName, serverUrl, cap, ...(password ? { password } : {}) });
|
|
165
|
+
socket.end(); // liveness probe only — the daemon drops this viewport on close
|
|
166
|
+
const sessionUrl = await waitForSessionUrl(sessionName);
|
|
167
|
+
output.info(`Session "${sessionName}" started in the background.`);
|
|
168
|
+
if (sessionUrl)
|
|
169
|
+
output.info(` ${sessionUrl}`);
|
|
170
|
+
else
|
|
171
|
+
output.info(' URL pending — run `entangle ls` once the relay connects.');
|
|
172
|
+
output.info(`Reattach with: entangle attach ${sessionName}`);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
202
175
|
let socket;
|
|
203
|
-
if (
|
|
176
|
+
if (live) {
|
|
204
177
|
// Reattach to the live daemon. It may be serving a different
|
|
205
178
|
// capability than the one we just resolved (e.g. a reused --session
|
|
206
179
|
// name); attaching to the running one is the least surprising choice.
|
|
207
|
-
if (
|
|
180
|
+
if (live.capId !== cap.capId) {
|
|
208
181
|
output.info(`A session named "${sessionName}" is already running with a different capability; attaching to it.`);
|
|
209
182
|
}
|
|
210
|
-
socket = await connectSocket(
|
|
183
|
+
socket = await connectSocket(live.socket);
|
|
211
184
|
}
|
|
212
185
|
else {
|
|
213
186
|
socket = await spawnDaemon({ sessionName, serverUrl, cap, ...(password ? { password } : {}) });
|
|
@@ -298,7 +271,8 @@ function runCli() {
|
|
|
298
271
|
const alive = isAlive(s) ? `alive(${s.pid})` : 'dead';
|
|
299
272
|
const created = new Date(s.createdAt).toISOString();
|
|
300
273
|
const where = shortUrl(s.url) || s.capId;
|
|
301
|
-
|
|
274
|
+
const kind = s.kind ?? 'entangle';
|
|
275
|
+
output.text(`${s.name}\t${kind}\t${alive}\t${created}\t${where}${s.workspaceRoot ? `\t${s.workspaceRoot}` : ''}`);
|
|
302
276
|
}
|
|
303
277
|
});
|
|
304
278
|
program
|
|
@@ -390,7 +364,10 @@ Examples:
|
|
|
390
364
|
# Mint on the configured/default relay
|
|
391
365
|
entangle serve
|
|
392
366
|
|
|
393
|
-
#
|
|
367
|
+
# Start a session in the background (detached) and print its URL
|
|
368
|
+
entangle serve --detach
|
|
369
|
+
|
|
370
|
+
# List / attach / kill detachable sessions (also: entangle ls|attach|kill)
|
|
394
371
|
entangle serve ls
|
|
395
372
|
entangle serve attach <name>
|
|
396
373
|
entangle serve kill <name>
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,10 @@ export interface SessionInfo {
|
|
|
7
7
|
capId: string;
|
|
8
8
|
url: string;
|
|
9
9
|
createdAt: number;
|
|
10
|
+
/** What runs the session. Absent on entries written by older builds = 'entangle'. */
|
|
11
|
+
kind?: 'entangle' | 'locus';
|
|
12
|
+
/** The workspace directory a locus session serves. */
|
|
13
|
+
workspaceRoot?: string;
|
|
10
14
|
}
|
|
11
15
|
/**
|
|
12
16
|
* Resolve the runtime directory holding sockets, logs and the registry.
|
|
@@ -22,6 +26,17 @@ export declare function resolveRunDir(): string;
|
|
|
22
26
|
export declare function ensureRunDir(): string;
|
|
23
27
|
/** Reduce an arbitrary name to a filesystem-safe token ([A-Za-z0-9._-]). */
|
|
24
28
|
export declare function sanitizeName(name: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Maximum usable byte length of a unix socket path: sun_path is 108 bytes on
|
|
31
|
+
* Linux and 104 on macOS/BSD, both including the trailing NUL. A longer path
|
|
32
|
+
* is silently TRUNCATED by bind/connect — the daemon ends up listening on a
|
|
33
|
+
* different file than the registry records, so liveness checks report dead
|
|
34
|
+
* sessions and reattach logic double-spawns. Fail closed at the conservative
|
|
35
|
+
* cross-platform bound instead.
|
|
36
|
+
*/
|
|
37
|
+
export declare const MAX_SOCKET_PATH_BYTES = 103;
|
|
38
|
+
/** Throw a clear configuration error if `path` cannot be bound un-truncated. */
|
|
39
|
+
export declare function assertSocketPathUsable(sockPath: string): void;
|
|
25
40
|
/** Absolute path of the unix socket for a session. */
|
|
26
41
|
export declare function socketPath(name: string): string;
|
|
27
42
|
/** Absolute path of the log file for a session. */
|
|
@@ -41,6 +56,13 @@ export declare function addSession(info: SessionInfo): void;
|
|
|
41
56
|
export declare function removeSession(name: string): void;
|
|
42
57
|
/** Find a registered session by name. */
|
|
43
58
|
export declare function findSession(name: string): SessionInfo | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Poll the registry until the named session has a URL (the daemon re-registers
|
|
61
|
+
* with the link once the relay announces the capability). Resolves the URL, or
|
|
62
|
+
* '' if none appears within `timeoutMs` — callers treat that as "URL pending",
|
|
63
|
+
* not an error, since the daemon may still be connecting to its relay.
|
|
64
|
+
*/
|
|
65
|
+
export declare function waitForSessionUrl(name: string, timeoutMs?: number): Promise<string>;
|
|
44
66
|
/** True if the pid is alive AND the session's socket file still exists. */
|
|
45
67
|
export declare function isAlive(info: SessionInfo): boolean;
|
|
46
68
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-registry.d.ts","sourceRoot":"","sources":["../src/session-registry.ts"],"names":[],"mappings":"AAeA,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"session-registry.d.ts","sourceRoot":"","sources":["../src/session-registry.ts"],"names":[],"mappings":"AAeA,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC5B,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;;GAQG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQ7D;AAED,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,mDAAmD;AACnD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGxD;AAyBD,wEAAwE;AACxE,wBAAgB,YAAY,IAAI,WAAW,EAAE,CAc5C;AAaD,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAIlD;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEjE;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAQvF;AAID,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAElD;AAcD;;;GAGG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAoBnC"}
|
package/dist/session-registry.js
CHANGED
|
@@ -32,6 +32,23 @@ export function sanitizeName(name) {
|
|
|
32
32
|
// Avoid an empty basename or a name that resolves to a directory entry.
|
|
33
33
|
return safe.length > 0 && safe !== '.' && safe !== '..' ? safe : 'session';
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Maximum usable byte length of a unix socket path: sun_path is 108 bytes on
|
|
37
|
+
* Linux and 104 on macOS/BSD, both including the trailing NUL. A longer path
|
|
38
|
+
* is silently TRUNCATED by bind/connect — the daemon ends up listening on a
|
|
39
|
+
* different file than the registry records, so liveness checks report dead
|
|
40
|
+
* sessions and reattach logic double-spawns. Fail closed at the conservative
|
|
41
|
+
* cross-platform bound instead.
|
|
42
|
+
*/
|
|
43
|
+
export const MAX_SOCKET_PATH_BYTES = 103;
|
|
44
|
+
/** Throw a clear configuration error if `path` cannot be bound un-truncated. */
|
|
45
|
+
export function assertSocketPathUsable(sockPath) {
|
|
46
|
+
const bytes = Buffer.byteLength(sockPath);
|
|
47
|
+
if (bytes > MAX_SOCKET_PATH_BYTES) {
|
|
48
|
+
throw new Error(`Unix socket path too long (${bytes} > ${MAX_SOCKET_PATH_BYTES} bytes): ${sockPath} — ` +
|
|
49
|
+
'set ENTANGLE_RUN_DIR to a shorter directory');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
35
52
|
/** Absolute path of the unix socket for a session. */
|
|
36
53
|
export function socketPath(name) {
|
|
37
54
|
return path.join(resolveRunDir(), `${sanitizeName(name)}.sock`);
|
|
@@ -64,7 +81,10 @@ function isSessionInfo(value) {
|
|
|
64
81
|
typeof v.pid === 'number' &&
|
|
65
82
|
typeof v.capId === 'string' &&
|
|
66
83
|
typeof v.url === 'string' &&
|
|
67
|
-
typeof v.createdAt === 'number'
|
|
84
|
+
typeof v.createdAt === 'number' &&
|
|
85
|
+
// Optional additive fields (absent on entries from older builds).
|
|
86
|
+
(v.kind === undefined || v.kind === 'entangle' || v.kind === 'locus') &&
|
|
87
|
+
(v.workspaceRoot === undefined || typeof v.workspaceRoot === 'string'));
|
|
68
88
|
}
|
|
69
89
|
/** Read the registry. A missing or corrupt file is treated as empty. */
|
|
70
90
|
export function listSessions() {
|
|
@@ -116,6 +136,23 @@ export function removeSession(name) {
|
|
|
116
136
|
export function findSession(name) {
|
|
117
137
|
return listSessions().find((s) => s.name === name);
|
|
118
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Poll the registry until the named session has a URL (the daemon re-registers
|
|
141
|
+
* with the link once the relay announces the capability). Resolves the URL, or
|
|
142
|
+
* '' if none appears within `timeoutMs` — callers treat that as "URL pending",
|
|
143
|
+
* not an error, since the daemon may still be connecting to its relay.
|
|
144
|
+
*/
|
|
145
|
+
export async function waitForSessionUrl(name, timeoutMs = 8000) {
|
|
146
|
+
const deadline = Date.now() + timeoutMs;
|
|
147
|
+
for (;;) {
|
|
148
|
+
const url = findSession(name)?.url;
|
|
149
|
+
if (url)
|
|
150
|
+
return url;
|
|
151
|
+
if (Date.now() >= deadline)
|
|
152
|
+
return '';
|
|
153
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
119
156
|
// --- liveness --------------------------------------------------------------
|
|
120
157
|
/** True if the pid is alive AND the session's socket file still exists. */
|
|
121
158
|
export function isAlive(info) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../src/session-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../src/session-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AA4B7B,MAAM,aAAa,GAAG,eAAe,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC9C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACnD,wEAAwE;IACxE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,gFAAgF;AAChF,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,KAAK,GAAG,qBAAqB,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,MAAM,qBAAqB,YAAY,QAAQ,KAAK;YACvF,6CAA6C,CAC9C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;IAC/E,OAAO,OAAO,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,8EAA8E;AAE9E,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC5B,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAC7B,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QACzB,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAC3B,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QACzB,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,kEAAkE;QAClE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;QACrE,CAAC,CAAC,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,YAAY;IAC1B,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,6CAA6C;IAC1D,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,gCAAgC;IAC7C,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,QAAuB;IAC5C,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,GAAG,YAAY,EAAE,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IACnD,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CAAC,IAAiB;IAC1C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,aAAa,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,SAAS,GAAG,IAAI;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,SAAS,CAAC;QACR,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QACnC,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACpB,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YAAE,OAAO,EAAE,CAAC;QACtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E,2EAA2E;AAC3E,MAAM,UAAU,OAAO,CAAC,IAAiB;IACvC,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED,mEAAmE;AACnE,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yEAAyE;QACzE,OAAQ,GAA6B,CAAC,IAAI,KAAK,OAAO,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAEzD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvD,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,+BAA+B;IACzC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,0BAA0B;QAC/D,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
|