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.
Files changed (83) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +1 -1
  4. package/dist/bridges/user/web/request-handling.d.ts +26 -0
  5. package/dist/bridges/user/web/request-handling.d.ts.map +1 -0
  6. package/dist/bridges/user/web/request-handling.js +92 -0
  7. package/dist/bridges/user/web/request-handling.js.map +1 -0
  8. package/dist/bridges/user/web/server.d.ts +4 -0
  9. package/dist/bridges/user/web/server.d.ts.map +1 -1
  10. package/dist/bridges/user/web/server.js +88 -53
  11. package/dist/bridges/user/web/server.js.map +1 -1
  12. package/dist/bridges/user/web/web-access.d.ts.map +1 -1
  13. package/dist/bridges/user/web/web-access.js +14 -1
  14. package/dist/bridges/user/web/web-access.js.map +1 -1
  15. package/dist/bridges/user/web/web-assets.d.ts +2 -1
  16. package/dist/bridges/user/web/web-assets.d.ts.map +1 -1
  17. package/dist/bridges/user/web/web-assets.js +2 -2
  18. package/dist/bridges/user/web/web-assets.js.map +1 -1
  19. package/dist/bridges/user/web/web-console-static.d.ts.map +1 -1
  20. package/dist/bridges/user/web/web-console-static.js +34 -22
  21. package/dist/bridges/user/web/web-console-static.js.map +1 -1
  22. package/dist/core/coordinator-role.d.ts +15 -2
  23. package/dist/core/coordinator-role.d.ts.map +1 -1
  24. package/dist/core/coordinator-role.js +109 -11
  25. package/dist/core/coordinator-role.js.map +1 -1
  26. package/dist/core/detached-work.d.ts +14 -0
  27. package/dist/core/detached-work.d.ts.map +1 -0
  28. package/dist/core/detached-work.js +40 -0
  29. package/dist/core/detached-work.js.map +1 -0
  30. package/dist/core/election-sessions.d.ts.map +1 -1
  31. package/dist/core/election-sessions.js +6 -6
  32. package/dist/core/election-sessions.js.map +1 -1
  33. package/dist/core/hub-session.d.ts +10 -1
  34. package/dist/core/hub-session.d.ts.map +1 -1
  35. package/dist/core/hub-session.js +34 -32
  36. package/dist/core/hub-session.js.map +1 -1
  37. package/dist/core/message-limits.d.ts +14 -0
  38. package/dist/core/message-limits.d.ts.map +1 -0
  39. package/dist/core/message-limits.js +22 -0
  40. package/dist/core/message-limits.js.map +1 -0
  41. package/dist/core/peer-lifecycle.d.ts +2 -0
  42. package/dist/core/peer-lifecycle.d.ts.map +1 -1
  43. package/dist/core/peer-lifecycle.js +9 -4
  44. package/dist/core/peer-lifecycle.js.map +1 -1
  45. package/dist/core/pending-connection.d.ts +20 -1
  46. package/dist/core/pending-connection.d.ts.map +1 -1
  47. package/dist/core/pending-connection.js +27 -0
  48. package/dist/core/pending-connection.js.map +1 -1
  49. package/dist/core/relay-server.d.ts +15 -1
  50. package/dist/core/relay-server.d.ts.map +1 -1
  51. package/dist/core/relay-server.js +70 -16
  52. package/dist/core/relay-server.js.map +1 -1
  53. package/dist/core/room-router.d.ts.map +1 -1
  54. package/dist/core/room-router.js +31 -10
  55. package/dist/core/room-router.js.map +1 -1
  56. package/dist/core/tool.d.ts.map +1 -1
  57. package/dist/core/tool.js +3 -0
  58. package/dist/core/tool.js.map +1 -1
  59. package/dist/core/transport-events.d.ts.map +1 -1
  60. package/dist/core/transport-events.js +9 -5
  61. package/dist/core/transport-events.js.map +1 -1
  62. package/dist/core/wire-mesh-transport.d.ts +2 -2
  63. package/dist/core/wire-mesh-transport.d.ts.map +1 -1
  64. package/dist/core/wire-mesh-transport.js +96 -115
  65. package/dist/core/wire-mesh-transport.js.map +1 -1
  66. package/package.json +1 -1
  67. package/src/bridges/user/web/request-handling.ts +118 -0
  68. package/src/bridges/user/web/server.ts +109 -54
  69. package/src/bridges/user/web/web-access.ts +14 -1
  70. package/src/bridges/user/web/web-assets.ts +7 -3
  71. package/src/bridges/user/web/web-console-static.ts +34 -26
  72. package/src/core/coordinator-role.ts +126 -7
  73. package/src/core/detached-work.ts +55 -0
  74. package/src/core/election-sessions.ts +8 -4
  75. package/src/core/hub-session.ts +63 -41
  76. package/src/core/message-limits.ts +29 -0
  77. package/src/core/peer-lifecycle.ts +10 -4
  78. package/src/core/pending-connection.ts +48 -1
  79. package/src/core/relay-server.ts +110 -23
  80. package/src/core/room-router.ts +36 -9
  81. package/src/core/tool.ts +3 -0
  82. package/src/core/transport-events.ts +9 -5
  83. package/src/core/wire-mesh-transport.ts +58 -63
@@ -7,6 +7,7 @@
7
7
  *
8
8
  * connect_request's accept/reject flow maps onto sendManageRequest's own request/response round trip directly, rather than a separate pair of connect_accepted/connect_rejected messages: manage-request-frame already tolerates arbitrary latency between a request and its response, so "waiting for a human to approve" is simply a manage-response that hasn't been sent yet, not a protocol gap needing its own mechanism. connect_request therefore holds its own IncomingManageRequest open (rather than responding immediately) until acceptConnection/rejectConnection is actually called.
9
9
  */
10
+ import { consumeEach, reportRejection } from "./detached-work.js";
10
11
  import { createTlsTransport } from "wire-mesh-core/adapters/tls-transport";
11
12
  import { ROOM_JOIN_APPROVAL_TIMEOUT_MS, ROOM_REQUEST_TIMEOUT_MS, manageRequestTimeoutMs, } from "./request-timeouts.js";
12
13
  import { dialRemote } from "./ws-dial.js";
@@ -21,7 +22,7 @@ import { ElectionSessions } from "./election-sessions.js";
21
22
  import { isLoopbackAddress } from "./loopback-address.js";
22
23
  import { RelayRole } from "./relay-role.js";
23
24
  import { ALL_INTERFACES_HOST } from "./relay-server.js";
24
- import { DEFAULT_PENDING_CONNECTION_TIMEOUT_MS, expirePendingConnection, } from "./pending-connection.js";
25
+ import { DEFAULT_PENDING_CONNECTION_TIMEOUT_MS, holdConnectRequest, } from "./pending-connection.js";
25
26
  import { acceptMeshSession, } from "wire-mesh-core/domain/mesh-session";
26
27
  import { deviceIdToHex } from "wire-mesh-core/domain/device-id";
27
28
  import { computeMeshGraph, handlePathTraceRequest, traceMeshPath, } from "./mesh-graph.js";
@@ -264,73 +265,56 @@ export class WireMeshTransport {
264
265
  consumeQuarantined(session, handle, machineLocal) {
265
266
  // Watched from the start, so any claim this session gossips before it introduces itself is read and dropped rather than held back and replayed once it is trusted.
266
267
  this.electionSessions.watch(session, handle);
267
- void (async () => {
268
- let approved = false;
269
- for await (const request of session.incomingManageRequests) {
270
- if (this.shutDown)
271
- break;
272
- if (approved) {
273
- await this.roomRouter.handleLocalRequest(request, handle);
274
- continue;
275
- }
276
- const message = extractMessage(request.command);
277
- if (message === undefined) {
278
- await request.respond({ result: "ok" }).catch(() => undefined);
279
- continue;
280
- }
281
- if (message.method === "introduce") {
282
- this.trackSession(handle.id, session);
283
- // Trusted from here on, so its coordinator claims count from here on, and only from here on.
284
- if (machineLocal)
285
- this.electionSessions.enrol(session, handle);
286
- this.events.onIntroduction(handle, {
287
- peerId: handle.id,
288
- dataPort: message.dataPort,
289
- });
290
- await request.respond({ result: "ok" }).catch(() => undefined);
291
- approved = true;
292
- continue;
293
- }
294
- if (message.method === "connect_request") {
295
- // Held open deliberately (see this file's own header comment). Answered later by acceptConnection/rejectConnection, or by expirePendingConnection if neither happens within pendingConnectionTimeoutMs.
296
- const decision = await new Promise((resolve) => {
297
- this.pendingConnections.set(handle.id, {
298
- respond: request.respond,
299
- dataPort: message.dataPort,
300
- name: message.name,
301
- fingerprint: message.fingerprint,
302
- policy: handle.policy,
303
- session,
304
- resolve,
305
- // unref()'d so a stray pending connection (this timer failing to be cleared through some path not yet covered) can never by itself keep the process alive for up to pendingConnectionTimeoutMs after everything else is done -- confirmed necessary directly: shutdown() originally cleared every pendingConnections entry without clearing its timer, and the whole test process hung for the full default timeout before exiting.
306
- timeoutHandle: setTimeout(() => {
307
- expirePendingConnection(this.pendingConnections, handle.id);
308
- }, this.pendingConnectionTimeoutMs).unref(),
309
- });
310
- this.events.onConnectionRequest(handle, {
311
- peerId: handle.id,
312
- dataPort: message.dataPort,
313
- name: message.name,
314
- fingerprint: message.fingerprint,
315
- });
316
- });
317
- if (decision === "reject") {
318
- // Rejection can arrive via rejectConnection (session still open) or via shutdown/disconnect (session already closing) -- catch rather than assume which.
319
- await session.close().catch(() => undefined);
320
- return;
321
- }
322
- // acceptConnection has already called trackSession synchronously, before firing onIntroduction -- nothing left to do here beyond trusting subsequent requests on this same session.
323
- approved = true;
324
- continue;
268
+ let approved = false;
269
+ // A request that cannot be handled is reported and the next is still read; the loop ends only where the session itself is being ended, and says so with "stop".
270
+ void consumeEach(session.incomingManageRequests, async (request) => {
271
+ if (this.shutDown)
272
+ return "stop";
273
+ if (approved) {
274
+ await this.roomRouter.handleLocalRequest(request, handle);
275
+ return "continue";
276
+ }
277
+ const message = extractMessage(request.command);
278
+ if (message === undefined) {
279
+ await request.respond({ result: "ok" }).catch(() => undefined);
280
+ return "continue";
281
+ }
282
+ if (message.method === "introduce") {
283
+ this.trackSession(handle.id, session);
284
+ // Trusted from here on, so its coordinator claims count from here on, and only from here on.
285
+ if (machineLocal)
286
+ this.electionSessions.enrol(session, handle);
287
+ this.events.onIntroduction(handle, {
288
+ peerId: handle.id,
289
+ dataPort: message.dataPort,
290
+ });
291
+ await request.respond({ result: "ok" }).catch(() => undefined);
292
+ approved = true;
293
+ return "continue";
294
+ }
295
+ if (message.method === "connect_request") {
296
+ // Held open deliberately (see this file's own header comment).
297
+ const decision = await holdConnectRequest({
298
+ pendingConnections: this.pendingConnections,
299
+ timeoutMs: this.pendingConnectionTimeoutMs,
300
+ events: this.events,
301
+ }, { request, message, handle, session });
302
+ if (decision === "reject") {
303
+ // Rejection can arrive via rejectConnection (session still open) or via shutdown/disconnect (session already closing) -- catch rather than assume which.
304
+ await session.close().catch(() => undefined);
305
+ return "stop";
325
306
  }
326
- // Any other message before introduce/connect_request is a protocol violation from an unapproved peer -- refuse and terminate rather than route it.
327
- await request
328
- .respond({ result: "error", code: "not_approved" })
329
- .catch(() => undefined);
330
- await session.close().catch(() => undefined);
331
- return;
307
+ // acceptConnection has already called trackSession synchronously, before firing onIntroduction -- nothing left to do here beyond trusting subsequent requests on this same session.
308
+ approved = true;
309
+ return "continue";
332
310
  }
333
- })();
311
+ // Any other message before introduce/connect_request is a protocol violation from an unapproved peer -- refuse and terminate rather than route it.
312
+ await request
313
+ .respond({ result: "error", code: "not_approved" })
314
+ .catch(() => undefined);
315
+ await session.close().catch(() => undefined);
316
+ return "stop";
317
+ }, () => this.events.onError);
334
318
  }
335
319
  /** Opens a mesh session over an already-established connection, wired to this transport's own frame dispatch and advertised addresses. Every session this transport owns is built exactly this way, whether the connection was accepted by a listener or dialled at a peer, at the coordinator, or at a remote gateway, so the wiring lives here rather than being restated at each call site. Resolves undefined, with the session closed, when shutdown() has begun by the time the session is open, whether it began before the connection arrived or while the session was opening: shutdown() closes only the sessions it can see, so one opened after it started would stay open, and its peer would never learn that this side had gone (agent-comms#372). */
336
320
  async openSession(connection) {
@@ -350,63 +334,64 @@ export class WireMeshTransport {
350
334
  /** Delegates the whole post-approval drain loop to roomRouter: this transport no longer decodes or routes a MeshMessage itself, only hands the session off. Also starts this session's own independent revocationAnnouncements drain, since a gossiped revocation is not a manage-request and has no verb for roomRouter to dispatch, and its coordinator-frame watch for the same reason, enrolling the session in the election only when machineLocal says it reaches this machine. */
351
335
  consumeIncoming(session, handle, machineLocal) {
352
336
  this.roomRouter.drainSession(session, handle);
353
- this.drainRevocationAnnouncements(session);
337
+ // Reads every revocation-entry this session's peer announces, for as long as the session lives, handing each one to MeshStore via onRevocationAnnounce, one call per entry, matching revocationAnnouncements' own per-entry flattening of a revocation-announce frame's entries array. A gossiped revocation is not a manage-request and has no verb for roomRouter to dispatch, so it has its own independent drain.
338
+ // A revocation that cannot be handled is reported and the next one is still read: one bad entry must not end revocation intake on this session.
339
+ void consumeEach(session.revocationAnnouncements, (entry) => {
340
+ this.events.onRevocationAnnounce(entry);
341
+ return "continue";
342
+ }, () => this.events.onError);
354
343
  this.electionSessions.watch(session, handle);
355
344
  if (machineLocal)
356
345
  this.electionSessions.enrol(session, handle);
357
346
  }
358
- /** Reads every revocation-entry this session's peer announces, for as long as the session lives, handing each one to MeshStore via onRevocationAnnounce -- one call per entry, matching revocationAnnouncements' own per-entry flattening of a revocation-announce frame's entries array. */
359
- drainRevocationAnnouncements(session) {
360
- void (async () => {
361
- for await (const entry of session.revocationAnnouncements) {
362
- this.events.onRevocationAnnounce(entry);
363
- }
364
- })();
347
+ /** The callback a listener calls with each connection it accepts, handling it without awaiting it: a failure goes to the transport's error handler, or stderr, and is never left as an unhandled rejection that would end the process. */
348
+ accepting(accept) {
349
+ return (connection) => {
350
+ reportRejection(this.handleAcceptedConnection(connection, accept), () => this.events.onError);
351
+ };
365
352
  }
366
353
  watchForDisconnect(session, handle, deviceIdHex) {
367
- void (async () => {
368
- // The presence this session last reported. Every session event carries the whole directory, including events this side causes by sending a frame and the final closed event, so the peer's advert repeats long after the peer sent it. Only a change is news: re-reporting a stale advert would mark a departed peer's agent running again after the coordinator has set it offline, and nothing would ever correct that.
369
- let reportedPresence;
370
- for await (const event of session.events) {
371
- this.knownDevices.mergeLocal(event.directory);
372
- const presence = findPresenceAdvert(deviceIdHex, event.directory);
373
- if (presence !== undefined && presence !== reportedPresence) {
374
- reportedPresence = presence;
375
- this.events.onPresenceAdvert(handle, presence);
354
+ // The presence this session last reported. Every session event carries the whole directory, including events this side causes by sending a frame and the final closed event, so the peer's advert repeats long after the peer sent it. Only a change is news: re-reporting a stale advert would mark a departed peer's agent running again after the coordinator has set it offline, and nothing would ever correct that.
355
+ let reportedPresence;
356
+ // A session event that cannot be handled is reported and the next is still read, so the closed event that ends this session's bookkeeping is never missed.
357
+ void consumeEach(session.events, (event) => {
358
+ this.knownDevices.mergeLocal(event.directory);
359
+ const presence = findPresenceAdvert(deviceIdHex, event.directory);
360
+ if (presence !== undefined && presence !== reportedPresence) {
361
+ reportedPresence = presence;
362
+ this.events.onPresenceAdvert(handle, presence);
363
+ }
364
+ if (event.state.status === "closed") {
365
+ const wasTracked = this.peerSessions.get(deviceIdHex) === session;
366
+ if (wasTracked)
367
+ this.peerSessions.delete(deviceIdHex);
368
+ this.allSessions.delete(session);
369
+ this.electionSessions.delete(session);
370
+ // Dropping the closed coordinator session is what makes hasCoordinatorConnection answer honestly once the coordinator process is gone; coordinatorDeviceHex deliberately survives, so the onPeerDisconnected fired just below can still be recognised as the coordinator's own departure rather than an ordinary peer's.
371
+ if (this.coordinatorSession === session)
372
+ this.coordinatorSession = undefined;
373
+ // A requester disconnecting before a human decides must unblock consumeQuarantined's own still-suspended loop iteration -- otherwise that promise, and the closure awaiting it, never settle.
374
+ const pending = this.pendingConnections.get(deviceIdHex);
375
+ if (pending !== undefined) {
376
+ clearTimeout(pending.timeoutHandle);
377
+ pending.resolve("reject");
378
+ this.pendingConnections.delete(deviceIdHex);
376
379
  }
377
- if (event.state.status === "closed") {
378
- const wasTracked = this.peerSessions.get(deviceIdHex) === session;
379
- if (wasTracked)
380
- this.peerSessions.delete(deviceIdHex);
381
- this.allSessions.delete(session);
382
- this.electionSessions.delete(session);
383
- // Dropping the closed coordinator session is what makes hasCoordinatorConnection answer honestly once the coordinator process is gone; coordinatorDeviceHex deliberately survives, so the onPeerDisconnected fired just below can still be recognised as the coordinator's own departure rather than an ordinary peer's.
384
- if (this.coordinatorSession === session)
385
- this.coordinatorSession = undefined;
386
- // A requester disconnecting before a human decides must unblock consumeQuarantined's own still-suspended loop iteration -- otherwise that promise, and the closure awaiting it, never settle.
387
- const pending = this.pendingConnections.get(deviceIdHex);
388
- if (pending !== undefined) {
389
- clearTimeout(pending.timeoutHandle);
390
- pending.resolve("reject");
391
- this.pendingConnections.delete(deviceIdHex);
392
- }
393
- // A no-op when this session was never a connectToPeer dial (e.g. the coordinator-client or an accepted connection) -- Set.delete on an absent key is always safe.
394
- this.dataDials.delete(deviceIdHex);
395
- if (wasTracked && !this.shutDown) {
396
- this.events.onPeerDisconnected(handle);
397
- }
398
- return;
380
+ // A no-op when this session was never a connectToPeer dial (e.g. the coordinator-client or an accepted connection) -- Set.delete on an absent key is always safe.
381
+ this.dataDials.delete(deviceIdHex);
382
+ if (wasTracked && !this.shutDown) {
383
+ this.events.onPeerDisconnected(handle);
399
384
  }
385
+ return "stop";
400
386
  }
401
- })();
387
+ return "continue";
388
+ }, () => this.events.onError);
402
389
  }
403
390
  // -----------------------------------------------------------------------
404
391
  // MeshTransport -- Data server
405
392
  // -----------------------------------------------------------------------
406
393
  async startDataServer() {
407
- this.dataListener = await this.wireTransport.listen(`${COORDINATOR_HOST}:0`, (connection) => {
408
- void this.handleAcceptedConnection(connection, DATA_SERVER_ACCEPT);
409
- });
394
+ this.dataListener = await this.wireTransport.listen(`${COORDINATOR_HOST}:0`, this.accepting(DATA_SERVER_ACCEPT));
410
395
  this._dataPort = listenerPort(this.dataListener);
411
396
  }
412
397
  // -----------------------------------------------------------------------
@@ -442,9 +427,7 @@ export class WireMeshTransport {
442
427
  coordinatorListeners: this.coordinatorListeners,
443
428
  host,
444
429
  port,
445
- onAccepted: (connection) => {
446
- void this.handleAcceptedConnection(connection, DEFAULT_LISTENER_ACCEPT);
447
- },
430
+ onAccepted: this.accepting(DEFAULT_LISTENER_ACCEPT),
448
431
  isShuttingDown: () => this.isShuttingDown(),
449
432
  });
450
433
  this._isCoordinator = true;
@@ -624,9 +607,7 @@ export class WireMeshTransport {
624
607
  host,
625
608
  port,
626
609
  policy,
627
- onAccepted: (connection) => {
628
- void this.handleAcceptedConnection(connection, operatorListenerAccept(policy));
629
- },
610
+ onAccepted: this.accepting(operatorListenerAccept(policy)),
630
611
  });
631
612
  }
632
613
  async removeListener(id) {
@@ -1 +1 @@
1
- {"version":3,"file":"wire-mesh-transport.js","sourceRoot":"","sources":["../../src/core/wire-mesh-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wire-mesh-transport.js","sourceRoot":"","sources":["../../src/core/wire-mesh-transport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agent-comms",
3
3
  "description": "Cross-harness communication mesh for LLM agents — rooms, DMs, presence, and real-time push delivery over TCP",
4
- "version": "9.1.0",
4
+ "version": "9.1.2",
5
5
  "bin": {
6
6
  "agent-comms": "dist/cli.js"
7
7
  },
@@ -0,0 +1,118 @@
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
+
5
+ import type * as http from "node:http";
6
+ import { MAX_MESSAGE_BYTES } from "../../../core/message-limits.js";
7
+ import { CommsError } from "../../../core/store.js";
8
+
9
+ const HTTP_BAD_REQUEST = 400;
10
+ const BYTES_PER_KIB = 1024;
11
+ const HTTP_PAYLOAD_TOO_LARGE = 413;
12
+ const HTTP_INTERNAL_SERVER_ERROR = 500;
13
+
14
+ const MS_PER_SECOND = 1000;
15
+ /** 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. */
16
+ const MIN_BODY_RATE_KIB_PER_SECOND = 32;
17
+ const MIN_BODY_RATE_BYTES_PER_SECOND =
18
+ MIN_BODY_RATE_KIB_PER_SECOND * BYTES_PER_KIB;
19
+
20
+ /** A request the bridge refuses with a specific status and message, rather than failing it as a server fault. */
21
+ export class RequestRefusedError extends Error {
22
+ constructor(
23
+ public readonly status: number,
24
+ message: string,
25
+ ) {
26
+ super(message);
27
+ this.name = "RequestRefusedError";
28
+ }
29
+ }
30
+
31
+ /** A body that is not valid JSON, or not a JSON object. */
32
+ export function invalidJsonBody(): RequestRefusedError {
33
+ return new RequestRefusedError(HTTP_BAD_REQUEST, "Invalid JSON");
34
+ }
35
+
36
+ /**
37
+ * 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.
38
+ */
39
+ export async function readBoundedBody(
40
+ req: http.IncomingMessage,
41
+ ): Promise<string> {
42
+ const declared = Number(req.headers["content-length"]);
43
+ if (Number.isFinite(declared) && declared > MAX_MESSAGE_BYTES) {
44
+ throw tooLarge();
45
+ }
46
+ return new Promise((resolve, reject) => {
47
+ const chunks: Buffer[] = [];
48
+ let received = 0;
49
+ req.on("data", (chunk: Buffer) => {
50
+ received += chunk.length;
51
+ if (received > MAX_MESSAGE_BYTES) {
52
+ chunks.length = 0;
53
+ reject(tooLarge());
54
+ return;
55
+ }
56
+ chunks.push(chunk);
57
+ });
58
+ req.on("end", () => {
59
+ resolve(Buffer.concat(chunks).toString());
60
+ });
61
+ req.on("error", reject);
62
+ });
63
+ }
64
+
65
+ /**
66
+ * 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.
67
+ */
68
+ export const REQUEST_TIMEOUT_MS =
69
+ (MAX_MESSAGE_BYTES / MIN_BODY_RATE_BYTES_PER_SECOND) * MS_PER_SECOND;
70
+
71
+ function tooLarge(): RequestRefusedError {
72
+ return new RequestRefusedError(
73
+ HTTP_PAYLOAD_TOO_LARGE,
74
+ `Request body exceeds ${String(MAX_MESSAGE_BYTES)} bytes`,
75
+ );
76
+ }
77
+
78
+ /**
79
+ * 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.
80
+ */
81
+ export function serveRoute(
82
+ req: http.IncomingMessage,
83
+ res: http.ServerResponse,
84
+ work: () => Promise<void>,
85
+ report: (error: Error) => void = reportToStderr,
86
+ ): void {
87
+ work().catch((err: unknown) => {
88
+ const refused = err instanceof RequestRefusedError ? err : undefined;
89
+ if (refused === undefined) {
90
+ report(err instanceof Error ? err : new Error(String(err)));
91
+ }
92
+ if (res.headersSent || res.writableEnded) {
93
+ res.end();
94
+ return;
95
+ }
96
+ res.writeHead(refused?.status ?? HTTP_INTERNAL_SERVER_ERROR, {
97
+ "Content-Type": "application/json",
98
+ ...(refused?.status === HTTP_PAYLOAD_TOO_LARGE
99
+ ? { Connection: "close" }
100
+ : {}),
101
+ });
102
+ res.end(
103
+ JSON.stringify({ error: refused?.message ?? "Internal server error" }),
104
+ () => {
105
+ if (refused?.status === HTTP_PAYLOAD_TOO_LARGE) req.destroy();
106
+ },
107
+ );
108
+ });
109
+ }
110
+
111
+ function reportToStderr(error: Error): void {
112
+ process.stderr.write(`agent-comms web UI: ${error.message}\n`);
113
+ }
114
+
115
+ /** 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. */
116
+ export function meshErrorMessage(err: unknown): string {
117
+ return err instanceof CommsError ? err.message : "Internal server error";
118
+ }