agent-comms 9.1.0 → 9.1.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/dist/bridges/user/web/request-handling.d.ts +26 -0
- package/dist/bridges/user/web/request-handling.d.ts.map +1 -0
- package/dist/bridges/user/web/request-handling.js +92 -0
- package/dist/bridges/user/web/request-handling.js.map +1 -0
- package/dist/bridges/user/web/server.d.ts +4 -0
- package/dist/bridges/user/web/server.d.ts.map +1 -1
- package/dist/bridges/user/web/server.js +88 -53
- package/dist/bridges/user/web/server.js.map +1 -1
- package/dist/bridges/user/web/web-access.d.ts.map +1 -1
- package/dist/bridges/user/web/web-access.js +14 -1
- package/dist/bridges/user/web/web-access.js.map +1 -1
- package/dist/bridges/user/web/web-assets.d.ts +2 -1
- package/dist/bridges/user/web/web-assets.d.ts.map +1 -1
- package/dist/bridges/user/web/web-assets.js +2 -2
- package/dist/bridges/user/web/web-assets.js.map +1 -1
- package/dist/bridges/user/web/web-console-static.d.ts.map +1 -1
- package/dist/bridges/user/web/web-console-static.js +34 -22
- package/dist/bridges/user/web/web-console-static.js.map +1 -1
- package/dist/core/coordinator-role.d.ts +15 -2
- package/dist/core/coordinator-role.d.ts.map +1 -1
- package/dist/core/coordinator-role.js +109 -11
- package/dist/core/coordinator-role.js.map +1 -1
- package/dist/core/detached-work.d.ts +14 -0
- package/dist/core/detached-work.d.ts.map +1 -0
- package/dist/core/detached-work.js +40 -0
- package/dist/core/detached-work.js.map +1 -0
- package/dist/core/election-sessions.d.ts.map +1 -1
- package/dist/core/election-sessions.js +6 -6
- package/dist/core/election-sessions.js.map +1 -1
- package/dist/core/hub-session.d.ts +10 -1
- package/dist/core/hub-session.d.ts.map +1 -1
- package/dist/core/hub-session.js +34 -32
- package/dist/core/hub-session.js.map +1 -1
- package/dist/core/message-limits.d.ts +14 -0
- package/dist/core/message-limits.d.ts.map +1 -0
- package/dist/core/message-limits.js +22 -0
- package/dist/core/message-limits.js.map +1 -0
- package/dist/core/peer-lifecycle.d.ts +2 -0
- package/dist/core/peer-lifecycle.d.ts.map +1 -1
- package/dist/core/peer-lifecycle.js +9 -4
- package/dist/core/peer-lifecycle.js.map +1 -1
- package/dist/core/pending-connection.d.ts +20 -1
- package/dist/core/pending-connection.d.ts.map +1 -1
- package/dist/core/pending-connection.js +27 -0
- package/dist/core/pending-connection.js.map +1 -1
- package/dist/core/relay-server.d.ts +15 -1
- package/dist/core/relay-server.d.ts.map +1 -1
- package/dist/core/relay-server.js +70 -16
- package/dist/core/relay-server.js.map +1 -1
- package/dist/core/room-router.d.ts.map +1 -1
- package/dist/core/room-router.js +31 -10
- package/dist/core/room-router.js.map +1 -1
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +3 -0
- package/dist/core/tool.js.map +1 -1
- package/dist/core/transport-events.d.ts.map +1 -1
- package/dist/core/transport-events.js +9 -5
- package/dist/core/transport-events.js.map +1 -1
- package/dist/core/wire-mesh-transport.d.ts +2 -2
- package/dist/core/wire-mesh-transport.d.ts.map +1 -1
- package/dist/core/wire-mesh-transport.js +96 -115
- package/dist/core/wire-mesh-transport.js.map +1 -1
- package/package.json +1 -1
- package/src/bridges/user/web/request-handling.ts +118 -0
- package/src/bridges/user/web/server.ts +109 -54
- package/src/bridges/user/web/web-access.ts +14 -1
- package/src/bridges/user/web/web-assets.ts +7 -3
- package/src/bridges/user/web/web-console-static.ts +34 -26
- package/src/core/coordinator-role.ts +126 -7
- package/src/core/detached-work.ts +55 -0
- package/src/core/election-sessions.ts +8 -4
- package/src/core/hub-session.ts +63 -41
- package/src/core/message-limits.ts +29 -0
- package/src/core/peer-lifecycle.ts +10 -4
- package/src/core/pending-connection.ts +48 -1
- package/src/core/relay-server.ts +110 -23
- package/src/core/room-router.ts +36 -9
- package/src/core/tool.ts +3 -0
- package/src/core/transport-events.ts +9 -5
- package/src/core/wire-mesh-transport.ts +58 -63
package/README.md
CHANGED
|
@@ -342,7 +342,7 @@ A bridge's web server listens on loopback only unless told otherwise, and a brow
|
|
|
342
342
|
AGENT_COMMS_WEB_HOST=0.0.0.0 npx agent-comms chat
|
|
343
343
|
```
|
|
344
344
|
|
|
345
|
-
The server exposes every mutating action (`POST /api/action` and the `/ws/mesh` socket), so a bind beyond loopback always comes with a per-process secret token, generated at start and printed once to stderr (never stdout, which can be an MCP channel) as ready-to-open URLs of the form `http://<address>:<port>/?token=<token>`. Every client not on this machine must present it, as an `Authorization: Bearer <token>` header or as the cookie that opening the URL sets (the server then redirects to the same path without the token, so it does not stay in the address bar). The cookie is named `agent_comms_web_token_<port>`, because browsers scope cookies to a host and not a port, and two bridges on one machine each have their own token. Requests without the token get 401 and the comparison is constant-time. A client on this machine, meaning loopback or one of this machine's own interface addresses, needs no token, so the `web_url` an agent is given works even for a server bound to one interface address. Every request from every client, loopback included, must carry a `Host` header naming an address the server is bound to, a loopback name or this machine's own name, which blocks DNS rebinding; any `Origin` header, from any client and loopback included, must name the server itself over http, which blocks cross-site requests and cross-site WebSocket hijacking from a page open in the operator's own browser (the server sends no CORS headers). The one exception is the dashboard hosted on GitHub Pages, which reaches a local bridge by probing loopback ports: its origin is admitted from a client on this machine only. The access cookie is `SameSite=Lax`, so opening the printed URL from a link on another site still sets it; Lax cookies are not sent on cross-site POSTs or WebSocket upgrades, and the Origin check covers the rest. The token lives in memory and changes on every start.
|
|
345
|
+
The server exposes every mutating action (`POST /api/action` and the `/ws/mesh` socket), so a bind beyond loopback always comes with a per-process secret token, generated at start and printed once to stderr (never stdout, which can be an MCP channel) as ready-to-open URLs of the form `http://<address>:<port>/?token=<token>`. Every client not on this machine must present it, as an `Authorization: Bearer <token>` header or as the cookie that opening the URL sets (the server then redirects to the same path without the token, so it does not stay in the address bar). The cookie is named `agent_comms_web_token_<port>`, because browsers scope cookies to a host and not a port, and two bridges on one machine each have their own token. Requests without the token get 401 and the comparison is constant-time. A client on this machine, meaning loopback or one of this machine's own interface addresses, needs no token, so the `web_url` an agent is given works even for a server bound to one interface address. Every request from every client, loopback included, must carry a `Host` header naming an address the server is bound to, a loopback name or this machine's own name, which blocks DNS rebinding; any `Origin` header, from any client and loopback included, must name the server itself over http, which blocks cross-site requests and cross-site WebSocket hijacking from a page open in the operator's own browser (the server sends no CORS headers). The one exception is the dashboard hosted on GitHub Pages, which reaches a local bridge by probing loopback ports: its origin is admitted from a client on this machine only. The access cookie is `SameSite=Lax`, so opening the printed URL from a link on another site still sets it; Lax cookies are not sent on cross-site POSTs or WebSocket upgrades, and the Origin check covers the rest. The token lives in memory and changes on every start. A request body and a WebSocket message are limited to one mebibyte (the largest legitimate request is a chat message a person typed or pasted): a larger body is answered `413` and the connection closed, and a larger socket message closes that socket with status 1009. A body that is not a JSON object (an array included) is answered `400`, a route whose work fails is answered `500` with fixed text, a request not completely received in the time a body of the largest size takes at a slow but steady rate (thirty-two seconds) is answered `408` and its connection closed, which Node checks at intervals of thirty seconds, so the answer comes within about a minute of the request starting, and an upgraded WebSocket is not subject to it, every response forbids content sniffing, and no request can end the bridge. The `content` of a message sent through the tool's `send` or `dm` action has the same limit, counted in UTF-8 bytes, and a longer one is refused before anything is sent. A relay a bridge serves accepts a WebSocket message of at most 16 MiB, which is above the largest frame a conforming peer sends; a larger one closes that connection with status 1009 and nothing else. No client of the relay is held open without a deadline: a request that is not a WebSocket upgrade is answered `426` and its connection closed, a request whose headers or body stop arriving is cut off after ten seconds (answered `408` where Node can), and a WebSocket that has not gossiped an advert for an admitted device within thirty seconds is closed.
|
|
346
346
|
|
|
347
347
|
Plain `http` also means the token, and everything the dashboard shows or sends, crosses the network unencrypted: anyone who can observe traffic on that network segment can read the token and then act as the operator. Bind to an interface address on a network you trust (a home or office LAN, a private Tailscale interface address) rather than to `0.0.0.0` on a shared or public network. A reverse proxy running on the same machine reaches the server from loopback and so counts as a client on this machine: it bypasses the token check, which leaves the proxy's own authentication as the only protection, although the `Host` check still applies.
|
|
348
348
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the web bridge reads a request body and answers a route whose work fails: every body has a maximum size, every failure of a route's asynchronous work becomes a response, and nothing a client sends can end the process.
|
|
3
|
+
*/
|
|
4
|
+
import type * as http from "node:http";
|
|
5
|
+
/** A request the bridge refuses with a specific status and message, rather than failing it as a server fault. */
|
|
6
|
+
export declare class RequestRefusedError extends Error {
|
|
7
|
+
readonly status: number;
|
|
8
|
+
constructor(status: number, message: string);
|
|
9
|
+
}
|
|
10
|
+
/** A body that is not valid JSON, or not a JSON object. */
|
|
11
|
+
export declare function invalidJsonBody(): RequestRefusedError;
|
|
12
|
+
/**
|
|
13
|
+
* Reads a request body of at most MAX_MESSAGE_BYTES. Rejects with RequestRefusedError (413) as soon as the declared length, or the bytes actually received, pass the limit, without reading on: the caller answers and the connection is closed, so the rest of an oversized body is never buffered.
|
|
14
|
+
*/
|
|
15
|
+
export declare function readBoundedBody(req: http.IncomingMessage): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* How long a client has to send a whole request, headers and body: the time a body of the largest size takes at the slowest accepted rate. A request not complete by then is answered 408 and its connection closed, so a client that declares a body and stops sending cannot hold a handler and its buffered bytes for Node's default of five minutes.
|
|
18
|
+
*/
|
|
19
|
+
export declare const REQUEST_TIMEOUT_MS: number;
|
|
20
|
+
/**
|
|
21
|
+
* Runs a route's asynchronous work and answers the request with its failure, so no rejection is left unhandled. A refusal keeps its status and message; anything else is a 500 with a fixed message (the error itself goes to `report`), since an unexpected error's text is not for the client. An answer that has already begun is ended, not started again. A refusal for size also closes the connection, so the rest of the body is not read.
|
|
22
|
+
*/
|
|
23
|
+
export declare function serveRoute(req: http.IncomingMessage, res: http.ServerResponse, work: () => Promise<void>, report?: (error: Error) => void): void;
|
|
24
|
+
/** The message of a failure a client may be told: a CommsError states what was refused and why, so it is shown. Anything else can quote a path or an address, so a client gets fixed text. */
|
|
25
|
+
export declare function meshErrorMessage(err: unknown): string;
|
|
26
|
+
//# sourceMappingURL=request-handling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-handling.d.ts","sourceRoot":"","sources":["../../../../src/bridges/user/web/request-handling.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAC;AAevC,iHAAiH;AACjH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM;CAKlB;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,IAAI,mBAAmB,CAErD;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,IAAI,CAAC,eAAe,GACxB,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,QACuC,CAAC;AASvE;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACzB,MAAM,GAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAqB,GAC9C,IAAI,CAuBN;AAMD,8LAA8L;AAC9L,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the web bridge reads a request body and answers a route whose work fails: every body has a maximum size, every failure of a route's asynchronous work becomes a response, and nothing a client sends can end the process.
|
|
3
|
+
*/
|
|
4
|
+
import { MAX_MESSAGE_BYTES } from "../../../core/message-limits.js";
|
|
5
|
+
import { CommsError } from "../../../core/store.js";
|
|
6
|
+
const HTTP_BAD_REQUEST = 400;
|
|
7
|
+
const BYTES_PER_KIB = 1024;
|
|
8
|
+
const HTTP_PAYLOAD_TOO_LARGE = 413;
|
|
9
|
+
const HTTP_INTERNAL_SERVER_ERROR = 500;
|
|
10
|
+
const MS_PER_SECOND = 1000;
|
|
11
|
+
/** The slowest rate at which a client is still given time to send a body: 32 KiB a second, about a hundredth of a modest uplink, so a slow but moving client is served and one that sends a few bytes and stops is not. */
|
|
12
|
+
const MIN_BODY_RATE_KIB_PER_SECOND = 32;
|
|
13
|
+
const MIN_BODY_RATE_BYTES_PER_SECOND = MIN_BODY_RATE_KIB_PER_SECOND * BYTES_PER_KIB;
|
|
14
|
+
/** A request the bridge refuses with a specific status and message, rather than failing it as a server fault. */
|
|
15
|
+
export class RequestRefusedError extends Error {
|
|
16
|
+
status;
|
|
17
|
+
constructor(status, message) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.status = status;
|
|
20
|
+
this.name = "RequestRefusedError";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** A body that is not valid JSON, or not a JSON object. */
|
|
24
|
+
export function invalidJsonBody() {
|
|
25
|
+
return new RequestRefusedError(HTTP_BAD_REQUEST, "Invalid JSON");
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Reads a request body of at most MAX_MESSAGE_BYTES. Rejects with RequestRefusedError (413) as soon as the declared length, or the bytes actually received, pass the limit, without reading on: the caller answers and the connection is closed, so the rest of an oversized body is never buffered.
|
|
29
|
+
*/
|
|
30
|
+
export async function readBoundedBody(req) {
|
|
31
|
+
const declared = Number(req.headers["content-length"]);
|
|
32
|
+
if (Number.isFinite(declared) && declared > MAX_MESSAGE_BYTES) {
|
|
33
|
+
throw tooLarge();
|
|
34
|
+
}
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const chunks = [];
|
|
37
|
+
let received = 0;
|
|
38
|
+
req.on("data", (chunk) => {
|
|
39
|
+
received += chunk.length;
|
|
40
|
+
if (received > MAX_MESSAGE_BYTES) {
|
|
41
|
+
chunks.length = 0;
|
|
42
|
+
reject(tooLarge());
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
chunks.push(chunk);
|
|
46
|
+
});
|
|
47
|
+
req.on("end", () => {
|
|
48
|
+
resolve(Buffer.concat(chunks).toString());
|
|
49
|
+
});
|
|
50
|
+
req.on("error", reject);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* How long a client has to send a whole request, headers and body: the time a body of the largest size takes at the slowest accepted rate. A request not complete by then is answered 408 and its connection closed, so a client that declares a body and stops sending cannot hold a handler and its buffered bytes for Node's default of five minutes.
|
|
55
|
+
*/
|
|
56
|
+
export const REQUEST_TIMEOUT_MS = (MAX_MESSAGE_BYTES / MIN_BODY_RATE_BYTES_PER_SECOND) * MS_PER_SECOND;
|
|
57
|
+
function tooLarge() {
|
|
58
|
+
return new RequestRefusedError(HTTP_PAYLOAD_TOO_LARGE, `Request body exceeds ${String(MAX_MESSAGE_BYTES)} bytes`);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Runs a route's asynchronous work and answers the request with its failure, so no rejection is left unhandled. A refusal keeps its status and message; anything else is a 500 with a fixed message (the error itself goes to `report`), since an unexpected error's text is not for the client. An answer that has already begun is ended, not started again. A refusal for size also closes the connection, so the rest of the body is not read.
|
|
62
|
+
*/
|
|
63
|
+
export function serveRoute(req, res, work, report = reportToStderr) {
|
|
64
|
+
work().catch((err) => {
|
|
65
|
+
const refused = err instanceof RequestRefusedError ? err : undefined;
|
|
66
|
+
if (refused === undefined) {
|
|
67
|
+
report(err instanceof Error ? err : new Error(String(err)));
|
|
68
|
+
}
|
|
69
|
+
if (res.headersSent || res.writableEnded) {
|
|
70
|
+
res.end();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
res.writeHead(refused?.status ?? HTTP_INTERNAL_SERVER_ERROR, {
|
|
74
|
+
"Content-Type": "application/json",
|
|
75
|
+
...(refused?.status === HTTP_PAYLOAD_TOO_LARGE
|
|
76
|
+
? { Connection: "close" }
|
|
77
|
+
: {}),
|
|
78
|
+
});
|
|
79
|
+
res.end(JSON.stringify({ error: refused?.message ?? "Internal server error" }), () => {
|
|
80
|
+
if (refused?.status === HTTP_PAYLOAD_TOO_LARGE)
|
|
81
|
+
req.destroy();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
function reportToStderr(error) {
|
|
86
|
+
process.stderr.write(`agent-comms web UI: ${error.message}\n`);
|
|
87
|
+
}
|
|
88
|
+
/** The message of a failure a client may be told: a CommsError states what was refused and why, so it is shown. Anything else can quote a path or an address, so a client gets fixed text. */
|
|
89
|
+
export function meshErrorMessage(err) {
|
|
90
|
+
return err instanceof CommsError ? err.message : "Internal server error";
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=request-handling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-handling.js","sourceRoot":"","sources":["../../../../src/bridges/user/web/request-handling.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,10 @@ export declare function createWebServer(options?: {
|
|
|
62
62
|
firstContactPort?: number | undefined;
|
|
63
63
|
/** Overrides the hub a fresh controller's own coordinator role dials on takeover -- ChatController's own hubUrl, ignored when existingController is supplied since that controller already made its own choice. See ChatController's own hubUrl doc comment. */
|
|
64
64
|
hubUrl?: string | undefined;
|
|
65
|
+
/** Overrides REQUEST_TIMEOUT_MS, the time a client has to send a whole request. A test sets it small to see the 408. */
|
|
66
|
+
requestTimeoutMs?: number | undefined;
|
|
67
|
+
/** Overrides how often Node checks connections against that timeout (its default is thirty seconds, so a timeout takes effect up to that much after it is due). A test sets it small. */
|
|
68
|
+
connectionsCheckingIntervalMs?: number | undefined;
|
|
65
69
|
}): Promise<WebServerHandle>;
|
|
66
70
|
export declare function runWeb(userName: string, port?: number): Promise<void>;
|
|
67
71
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/bridges/user/web/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/bridges/user/web/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAsB1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA6E1D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,UAAU,EAAE,cAAc,CAAC;IAC3B,GAAG,EAAE,eAAe,CAAC;IACrB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,2HAA2H;IAC3H,IAAI,EAAE,MAAM,CAAC;IACb,uIAAuI;IACvI,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,8JAA8J;AAC9J,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAGtE;AAED,0VAA0V;AAC1V,wBAAgB,eAAe,CAC7B,MAAM,EAAE,eAAe,GAAG,SAAS,GAClC,YAAY,CAKd;AAMD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,QAAQ,CAAC;IAAE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,GAC1D,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAUtC;AAgED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE;IAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,sOAAsO;IACtO,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,iMAAiM;IACjM,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,uQAAuQ;IACvQ,oBAAoB,CAAC,EAAE,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/D,2JAA2J;IAC3J,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,kBAAkB,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAChD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,6KAA6K;IAC7K,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,gQAAgQ;IAChQ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,wHAAwH;IACxH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,yLAAyL;IACzL,6BAA6B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpD,GAAG,OAAO,CAAC,eAAe,CAAC,CAoJ3B;AAyFD,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB3E"}
|
|
@@ -14,6 +14,7 @@ import { WebSocketServer } from "ws";
|
|
|
14
14
|
import { RPCHandler } from "@orpc/server/websocket";
|
|
15
15
|
import { ChatController } from "../controller.js";
|
|
16
16
|
import { CommsError } from "../../../core/store.js";
|
|
17
|
+
import { MAX_MESSAGE_BYTES } from "../../../core/message-limits.js";
|
|
17
18
|
import { createRoomAction, declineInviteAction, destroyRoomAction, dmAction, inviteAction, joinRoomAction, kickAction, leaveRoomAction, listAgentsAction, listRoomsAction, readRoomAction, renameAgentAction, sendAction, } from "./actions.js";
|
|
18
19
|
import { getMeshGraphRead, getMeshTraceRead, getRoomMessagesRead, } from "./reads.js";
|
|
19
20
|
import { MeshEventPublisher } from "./event-publisher.js";
|
|
@@ -22,6 +23,7 @@ import { resolveWebConsoleDist, serveWebConsole, } from "./web-console-static.js
|
|
|
22
23
|
import { ACCESS_QUERY_PARAM, accessUrls, authorise, generateAccessToken, localWebUrl, ownInterfaceAddresses, requiresAccessToken, resolveWebBindHost, } from "./web-access.js";
|
|
23
24
|
import { bridgePortRange } from "./bridge-port-range.js";
|
|
24
25
|
import { startWebBeacon } from "./web-beacon.js";
|
|
26
|
+
import { REQUEST_TIMEOUT_MS, meshErrorMessage, invalidJsonBody, readBoundedBody, serveRoute, } from "./request-handling.js";
|
|
25
27
|
import { createFrontendAssetLoader, FrontendNotBuiltError, } from "./web-assets.js";
|
|
26
28
|
const HTTP_OK = 200;
|
|
27
29
|
const HTTP_BAD_REQUEST = 400;
|
|
@@ -34,6 +36,8 @@ const HTTP_SERVICE_UNAVAILABLE = 503;
|
|
|
34
36
|
// Static assets — read from the frontend build on first request
|
|
35
37
|
// ---------------------------------------------------------------------------
|
|
36
38
|
const frontendAssets = createFrontendAssetLoader(fileURLToPath(new URL("./dist", import.meta.url)));
|
|
39
|
+
/** The body of the 503 for a frontend that was never built. */
|
|
40
|
+
const FRONTEND_NOT_BUILT_BODY = "The web frontend is not built. A git checkout does not include the build output; install the npm package, or run `pnpm build:frontend` in a checkout with its development dependencies installed.";
|
|
37
41
|
/**
|
|
38
42
|
* The frontend build output, or undefined after answering 503 because the build is absent. The server module is imported by every bridge, so a checkout without the build must still start; only the routes that serve the frontend are unavailable.
|
|
39
43
|
*/
|
|
@@ -47,7 +51,8 @@ function frontendOrUnavailable(res) {
|
|
|
47
51
|
res.writeHead(HTTP_SERVICE_UNAVAILABLE, {
|
|
48
52
|
"Content-Type": "text/plain; charset=utf-8",
|
|
49
53
|
});
|
|
50
|
-
|
|
54
|
+
// Fixed text: the error's own message names the install path of this machine, which is not for a client.
|
|
55
|
+
res.end(FRONTEND_NOT_BUILT_BODY);
|
|
51
56
|
return undefined;
|
|
52
57
|
}
|
|
53
58
|
}
|
|
@@ -144,7 +149,7 @@ function boundPortOf(server) {
|
|
|
144
149
|
* Dashboard controller is created.
|
|
145
150
|
*/
|
|
146
151
|
export async function createWebServer(options) {
|
|
147
|
-
const { port, bridgePortBase, host: requestedHost, localClientAddresses = ownInterfaceAddresses, beaconPort, existingController, coordinatorPort, firstContactPort, hubUrl, } = options ?? {};
|
|
152
|
+
const { port, bridgePortBase, host: requestedHost, localClientAddresses = ownInterfaceAddresses, beaconPort, existingController, coordinatorPort, firstContactPort, hubUrl, requestTimeoutMs = REQUEST_TIMEOUT_MS, connectionsCheckingIntervalMs, } = options ?? {};
|
|
148
153
|
const controller = existingController ??
|
|
149
154
|
new ChatController("Dashboard", {
|
|
150
155
|
coordinatorPort,
|
|
@@ -166,10 +171,30 @@ export async function createWebServer(options) {
|
|
|
166
171
|
port: port ?? 0,
|
|
167
172
|
localClientAddresses,
|
|
168
173
|
};
|
|
169
|
-
const server = http.createServer(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
174
|
+
const server = http.createServer({
|
|
175
|
+
requestTimeout: requestTimeoutMs,
|
|
176
|
+
headersTimeout: requestTimeoutMs,
|
|
177
|
+
...(connectionsCheckingIntervalMs !== undefined && {
|
|
178
|
+
connectionsCheckingInterval: connectionsCheckingIntervalMs,
|
|
179
|
+
}),
|
|
180
|
+
}, (req, res) => {
|
|
181
|
+
// Every response, the fixed routes and the operator's web-console files alike, forbids a browser to guess a type other than the one declared.
|
|
182
|
+
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
183
|
+
try {
|
|
184
|
+
if (!admitRequest(accessPolicy, req, res))
|
|
185
|
+
return;
|
|
186
|
+
handleRequest(req, res, controller, webConsoleDist);
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
// A request the synchronous routing cannot handle is answered, not thrown: an exception out of this listener would end the process.
|
|
190
|
+
process.stderr.write(`agent-comms web UI: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
191
|
+
if (!res.headersSent) {
|
|
192
|
+
jsonError(res, "Internal server error", HTTP_INTERNAL_SERVER_ERROR);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
res.end();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
173
198
|
});
|
|
174
199
|
let boundPort;
|
|
175
200
|
try {
|
|
@@ -187,9 +212,14 @@ export async function createWebServer(options) {
|
|
|
187
212
|
controller.on("message", (event) => {
|
|
188
213
|
publisher.publish({ kind: "delivery", event });
|
|
189
214
|
});
|
|
190
|
-
const wss = new WebSocketServer({
|
|
215
|
+
const wss = new WebSocketServer({
|
|
216
|
+
noServer: true,
|
|
217
|
+
maxPayload: MAX_MESSAGE_BYTES,
|
|
218
|
+
});
|
|
191
219
|
const rpcHandler = new RPCHandler(meshRouter);
|
|
192
220
|
server.on("upgrade", (req, socket, head) => {
|
|
221
|
+
// A socket error before or after the upgrade (a peer that resets, say) is that connection's alone.
|
|
222
|
+
socket.on("error", reportSocketError);
|
|
193
223
|
const decision = authorise(accessPolicy, requestOf(req));
|
|
194
224
|
if (decision.kind !== "allow") {
|
|
195
225
|
const status = decision.kind === "deny" ? decision.status : HTTP_UNAUTHORIZED;
|
|
@@ -208,6 +238,8 @@ export async function createWebServer(options) {
|
|
|
208
238
|
}
|
|
209
239
|
});
|
|
210
240
|
wss.on("connection", (ws) => {
|
|
241
|
+
// A socket error (a message over the size limit closes the socket with code 1009 and raises one) is handled here: an error event with no listener would end the process.
|
|
242
|
+
ws.on("error", reportSocketError);
|
|
211
243
|
// RPCHandler.upgrade() wants a DOM-shaped WebSocket (addEventListener's overload set), which "ws"'s own type declarations don't structurally satisfy (its addEventListener options param is narrower than DOM's) -- .message()/.close() accept the looser { send } shape "ws" does satisfy, and are the documented manual equivalent to .upgrade().
|
|
212
244
|
const context = { controller, publisher };
|
|
213
245
|
ws.on("message", (data, isBinary) => {
|
|
@@ -216,10 +248,10 @@ export async function createWebServer(options) {
|
|
|
216
248
|
const bytes = raw instanceof ArrayBuffer ? Buffer.from(raw) : raw;
|
|
217
249
|
// Buffer's .buffer is typed ArrayBufferLike (Buffer can wrap a SharedArrayBuffer); RPCHandler.message() wants the narrower Uint8Array<ArrayBuffer> -- a fresh Uint8Array.from() copy is always backed by a plain ArrayBuffer, satisfying that exactly.
|
|
218
250
|
const payload = isBinary ? Uint8Array.from(bytes) : bytes.toString();
|
|
219
|
-
|
|
251
|
+
rpcHandler.message(ws, payload, { context }).catch(reportSocketError);
|
|
220
252
|
});
|
|
221
253
|
ws.on("close", () => {
|
|
222
|
-
|
|
254
|
+
rpcHandler.close(ws).catch(reportSocketError);
|
|
223
255
|
});
|
|
224
256
|
});
|
|
225
257
|
// stderr, not stdout: a stdio MCP bridge owns stdout for JSON-RPC, so any other line there is protocol noise to a strictly framed client.
|
|
@@ -229,6 +261,10 @@ export async function createWebServer(options) {
|
|
|
229
261
|
}
|
|
230
262
|
return { server, controller, wss, publisher, host, accessToken };
|
|
231
263
|
}
|
|
264
|
+
/** Reports a failure of one WebSocket connection to stderr: it only ever affects that connection. */
|
|
265
|
+
function reportSocketError(err) {
|
|
266
|
+
process.stderr.write(`agent-comms web UI: socket error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
267
|
+
}
|
|
232
268
|
function requestOf(req) {
|
|
233
269
|
return {
|
|
234
270
|
method: req.method ?? "GET",
|
|
@@ -298,18 +334,28 @@ export async function runWeb(userName, port) {
|
|
|
298
334
|
await handle.controller.shutdown();
|
|
299
335
|
process.exit(0);
|
|
300
336
|
};
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
}
|
|
337
|
+
const shutDown = () => {
|
|
338
|
+
cleanup().catch((err) => {
|
|
339
|
+
process.stderr.write(`agent-comms web UI: shutdown failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
340
|
+
process.exit(1);
|
|
341
|
+
});
|
|
342
|
+
};
|
|
343
|
+
process.on("SIGINT", shutDown);
|
|
344
|
+
process.on("SIGTERM", shutDown);
|
|
307
345
|
}
|
|
308
346
|
// ---------------------------------------------------------------------------
|
|
309
347
|
// HTTP handler
|
|
310
348
|
// ---------------------------------------------------------------------------
|
|
311
349
|
function handleRequest(req, res, controller, webConsoleDist) {
|
|
312
|
-
|
|
350
|
+
let url;
|
|
351
|
+
try {
|
|
352
|
+
url = new URL(req.url ?? "/", `http://localhost`);
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
// A request target that names no URL (an empty authority, say) is a bad request, not a fault.
|
|
356
|
+
jsonError(res, "Bad request", HTTP_BAD_REQUEST);
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
313
359
|
// wire-mesh's web-console — an alternate, generic reference-client UI, served only when AGENT_COMMS_WEB_CONSOLE_DIST resolves to a real build.
|
|
314
360
|
if (webConsoleDist !== undefined &&
|
|
315
361
|
req.method === "GET" &&
|
|
@@ -382,8 +428,8 @@ function handleRequest(req, res, controller, webConsoleDist) {
|
|
|
382
428
|
const assets = frontendOrUnavailable(res);
|
|
383
429
|
if (assets === undefined)
|
|
384
430
|
return;
|
|
385
|
-
const icon = assets.icons
|
|
386
|
-
if (icon) {
|
|
431
|
+
const icon = assets.icons.get(filename);
|
|
432
|
+
if (icon !== undefined) {
|
|
387
433
|
res.writeHead(HTTP_OK, {
|
|
388
434
|
"Content-Type": "image/svg+xml",
|
|
389
435
|
"Cache-Control": "public, max-age=604800",
|
|
@@ -394,23 +440,21 @@ function handleRequest(req, res, controller, webConsoleDist) {
|
|
|
394
440
|
}
|
|
395
441
|
// API routes
|
|
396
442
|
if (url.pathname === "/api/agents" && req.method === "GET") {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
})();
|
|
443
|
+
serveRoute(req, res, async () => {
|
|
444
|
+
json(res, await controller.getAgents());
|
|
445
|
+
});
|
|
401
446
|
return;
|
|
402
447
|
}
|
|
403
448
|
if (url.pathname === "/api/rooms" && req.method === "GET") {
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
})();
|
|
449
|
+
serveRoute(req, res, async () => {
|
|
450
|
+
json(res, await controller.getRooms());
|
|
451
|
+
});
|
|
408
452
|
return;
|
|
409
453
|
}
|
|
410
454
|
if (url.pathname.startsWith("/api/rooms/") &&
|
|
411
455
|
url.pathname.endsWith("/messages") &&
|
|
412
456
|
req.method === "GET") {
|
|
413
|
-
|
|
457
|
+
serveRoute(req, res, async () => {
|
|
414
458
|
const roomId = url.pathname.split("/")[3];
|
|
415
459
|
if (roomId === undefined || roomId === "") {
|
|
416
460
|
jsonError(res, "Room ID required", HTTP_BAD_REQUEST);
|
|
@@ -422,7 +466,7 @@ function handleRequest(req, res, controller, webConsoleDist) {
|
|
|
422
466
|
since,
|
|
423
467
|
});
|
|
424
468
|
json(res, messages);
|
|
425
|
-
})
|
|
469
|
+
});
|
|
426
470
|
return;
|
|
427
471
|
}
|
|
428
472
|
if (url.pathname === "/api/mesh/graph" && req.method === "GET") {
|
|
@@ -435,7 +479,7 @@ function handleRequest(req, res, controller, webConsoleDist) {
|
|
|
435
479
|
return;
|
|
436
480
|
}
|
|
437
481
|
if (url.pathname === "/api/mesh/trace" && req.method === "GET") {
|
|
438
|
-
|
|
482
|
+
serveRoute(req, res, async () => {
|
|
439
483
|
const target = url.searchParams.get("target");
|
|
440
484
|
if (target === null || target === "") {
|
|
441
485
|
jsonError(res, "target query parameter required", HTTP_BAD_REQUEST);
|
|
@@ -453,21 +497,28 @@ function handleRequest(req, res, controller, webConsoleDist) {
|
|
|
453
497
|
catch (err) {
|
|
454
498
|
jsonError(res, meshErrorMessage(err), meshErrorStatus(err, HTTP_BAD_REQUEST));
|
|
455
499
|
}
|
|
456
|
-
})
|
|
500
|
+
});
|
|
457
501
|
return;
|
|
458
502
|
}
|
|
459
503
|
if (url.pathname === "/api/action" && req.method === "POST") {
|
|
460
|
-
|
|
461
|
-
const body = await
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
504
|
+
serveRoute(req, res, async () => {
|
|
505
|
+
const body = await readBoundedBody(req);
|
|
506
|
+
let parsed;
|
|
507
|
+
try {
|
|
508
|
+
parsed = JSON.parse(body);
|
|
509
|
+
}
|
|
510
|
+
catch {
|
|
511
|
+
throw invalidJsonBody();
|
|
512
|
+
}
|
|
513
|
+
if (typeof parsed !== "object" ||
|
|
514
|
+
parsed === null ||
|
|
515
|
+
Array.isArray(parsed)) {
|
|
516
|
+
throw invalidJsonBody();
|
|
466
517
|
}
|
|
467
518
|
const params = Object.fromEntries(Object.entries(parsed));
|
|
468
519
|
const result = await executeAction(controller, params);
|
|
469
520
|
json(res, result);
|
|
470
|
-
})
|
|
521
|
+
});
|
|
471
522
|
return;
|
|
472
523
|
}
|
|
473
524
|
res.writeHead(HTTP_NOT_FOUND);
|
|
@@ -578,10 +629,6 @@ function jsonError(res, message, status) {
|
|
|
578
629
|
res.writeHead(status, { "Content-Type": "application/json" });
|
|
579
630
|
res.end(JSON.stringify({ error: message }));
|
|
580
631
|
}
|
|
581
|
-
/** Extracts a reportable message from whatever meshGraph()/meshTrace() threw -- a CommsError has a real message, anything else is reported generically rather than leaking an unexpected error shape to the client. */
|
|
582
|
-
function meshErrorMessage(err) {
|
|
583
|
-
return err instanceof Error ? err.message : "Unknown error";
|
|
584
|
-
}
|
|
585
632
|
/** A transport that doesn't support mesh_graph/mesh_trace (CommsError code NOT_SUPPORTED, e.g. this bridge is running on FileStore rather than a real mesh) is a client-visible "this endpoint isn't available here" rather than a server fault. Any other error falls back to `otherwise` -- HTTP_BAD_REQUEST for mesh_trace, since its only other realistic failure is a malformed client-supplied target; HTTP_INTERNAL_SERVER_ERROR for mesh_graph, which takes no client input at all. */
|
|
586
633
|
function meshErrorStatus(err, otherwise) {
|
|
587
634
|
if (err instanceof CommsError && err.code === "NOT_SUPPORTED") {
|
|
@@ -589,16 +636,4 @@ function meshErrorStatus(err, otherwise) {
|
|
|
589
636
|
}
|
|
590
637
|
return otherwise;
|
|
591
638
|
}
|
|
592
|
-
async function readBody(req) {
|
|
593
|
-
return new Promise((resolve, reject) => {
|
|
594
|
-
const chunks = [];
|
|
595
|
-
req.on("data", (chunk) => {
|
|
596
|
-
chunks.push(chunk);
|
|
597
|
-
});
|
|
598
|
-
req.on("end", () => {
|
|
599
|
-
resolve(Buffer.concat(chunks).toString());
|
|
600
|
-
});
|
|
601
|
-
req.on("error", reject);
|
|
602
|
-
});
|
|
603
|
-
}
|
|
604
639
|
//# sourceMappingURL=server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/bridges/user/web/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/bridges/user/web/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-access.d.ts","sourceRoot":"","sources":["../../../../src/bridges/user/web/web-access.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B,yMAAyM;AACzM,eAAO,MAAM,YAAY,yBAAyB,CAAC;AAEnD,kEAAkE;AAClE,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,+TAA+T;AAC/T,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"web-access.d.ts","sourceRoot":"","sources":["../../../../src/bridges/user/web/web-access.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export const ACCESS_QUERY_PARAM = "token";
|
|
|
23
23
|
const ACCESS_TOKEN_BYTES = 32;
|
|
24
24
|
/** The port a Host header with no explicit port names (HTTP). */
|
|
25
25
|
const HTTP_DEFAULT_PORT = 80;
|
|
26
|
+
const HTTP_BAD_REQUEST = 400;
|
|
26
27
|
const HTTP_UNAUTHORIZED = 401;
|
|
27
28
|
const HTTP_FORBIDDEN = 403;
|
|
28
29
|
const HTTP_FOUND = 302;
|
|
@@ -272,7 +273,10 @@ export function authorise(policy, request) {
|
|
|
272
273
|
return { kind: "allow" };
|
|
273
274
|
}
|
|
274
275
|
if (request.method === "GET") {
|
|
275
|
-
const url =
|
|
276
|
+
const url = parseRequestUrl(request.url);
|
|
277
|
+
if (url === undefined) {
|
|
278
|
+
return { kind: "deny", status: HTTP_BAD_REQUEST, message: "Bad request" };
|
|
279
|
+
}
|
|
276
280
|
const offered = url.searchParams.get(ACCESS_QUERY_PARAM);
|
|
277
281
|
if (offered !== null && tokensMatch(offered, token)) {
|
|
278
282
|
url.searchParams.delete(ACCESS_QUERY_PARAM);
|
|
@@ -286,6 +290,15 @@ export function authorise(policy, request) {
|
|
|
286
290
|
}
|
|
287
291
|
return { kind: "deny", status: HTTP_UNAUTHORIZED, message: "Unauthorized" };
|
|
288
292
|
}
|
|
293
|
+
/** The URL a request line names, or undefined when it names none: a request target that cannot be parsed is refused, never thrown out of the request listener, which would end the process. */
|
|
294
|
+
function parseRequestUrl(target) {
|
|
295
|
+
try {
|
|
296
|
+
return new URL(target, "http://placeholder");
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
return undefined;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
289
302
|
/** The URLs an operator can open on the LAN, each carrying the token for the one-time exchange. A wildcard bind lists every external, non-link-local address of this machine that the bind family can reach (IPv6 bracketed, and only under `::`, since `0.0.0.0` accepts IPv4 alone); a specific bind lists that address. The list is empty when a wildcard bind finds no such address. */
|
|
290
303
|
export function accessUrls(policy, interfaces = os.networkInterfaces) {
|
|
291
304
|
const hosts = [];
|