@masons/runtime-broker 0.2.19 → 0.2.20

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.
@@ -46,6 +46,7 @@ export declare class ConnectorWS {
46
46
  off<E extends ConnectorWSEvent["event"]>(event: E, listener: ListenerFor<E>): this;
47
47
  _emitForTesting(e: ConnectorWSEvent): void;
48
48
  private wireForwarders;
49
+ private emitBus;
49
50
  }
50
51
  export { ConnectorError };
51
52
  //# sourceMappingURL=connector-ws.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connector-ws.d.ts","sourceRoot":"","sources":["../../src/broker/connector-ws.ts"],"names":[],"mappings":"AAaA,OAAO,EAAmB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,qBAAqB,CAAA;CAAE,GAC7D;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAC5C;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,GAC5D;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAC1D;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,GAC5D;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,GACzB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AAEvC,KAAK,WAAW,CAAC,CAAC,SAAS,gBAAgB,CAAC,OAAO,CAAC,IAAI,CACtD,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC,KACvC,IAAI,CAAC;AAEV,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAsB;gBAE9B,IAAI,EAAE,kBAAkB;IAMpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,UAAU,IAAI,IAAI;IASlB,IAAI,CACF,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,WAAW,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC;IAKxB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKlC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKpC,iBAAiB,IAAI,MAAM,GAAG,SAAS;IAKvC,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK3D,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxD,EAAE,CAAC,CAAC,SAAS,gBAAgB,CAAC,OAAO,CAAC,EACpC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,IAAI;IAKP,GAAG,CAAC,CAAC,SAAS,gBAAgB,CAAC,OAAO,CAAC,EACrC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,IAAI;IAMS,eAAe,CAAC,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAI1D,OAAO,CAAC,cAAc;CA0BvB;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"connector-ws.d.ts","sourceRoot":"","sources":["../../src/broker/connector-ws.ts"],"names":[],"mappings":"AAaA,OAAO,EAAmB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,qBAAqB,CAAA;CAAE,GAC7D;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAC5C;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,GAC5D;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAC1D;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,GAC5D;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,GACzB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AAEvC,KAAK,WAAW,CAAC,CAAC,SAAS,gBAAgB,CAAC,OAAO,CAAC,IAAI,CACtD,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC,KACvC,IAAI,CAAC;AAEV,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAsB;gBAE9B,IAAI,EAAE,kBAAkB;IAMpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,UAAU,IAAI,IAAI;IASlB,IAAI,CACF,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,WAAW,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC;IAKxB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKlC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKpC,iBAAiB,IAAI,MAAM,GAAG,SAAS;IAKvC,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK3D,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxD,EAAE,CAAC,CAAC,SAAS,gBAAgB,CAAC,OAAO,CAAC,EACpC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,IAAI;IAKP,GAAG,CAAC,CAAC,SAAS,gBAAgB,CAAC,OAAO,CAAC,EACrC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,IAAI;IAMS,eAAe,CAAC,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAI1D,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,OAAO;CAMhB;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -40,33 +40,39 @@ export class ConnectorWS {
40
40
  return this;
41
41
  }
42
42
  _emitForTesting(e) {
43
- this.bus.emit(e.event, e);
43
+ this.emitBus(e);
44
44
  }
45
45
  wireForwarders() {
46
46
  this.client.on("message_received", (payload) => {
47
- this.bus.emit("message_received", { event: "message_received", payload });
47
+ this.emitBus({ event: "message_received", payload });
48
48
  });
49
49
  this.client.on("send_ack", (payload) => {
50
- this.bus.emit("send_ack", { event: "send_ack", payload });
50
+ this.emitBus({ event: "send_ack", payload });
51
51
  });
52
52
  this.client.on("delivery_pending", (payload) => {
53
- this.bus.emit("delivery_pending", { event: "delivery_pending", payload });
53
+ this.emitBus({ event: "delivery_pending", payload });
54
54
  });
55
55
  this.client.on("delivery_status", (payload) => {
56
- this.bus.emit("delivery_status", { event: "delivery_status", payload });
56
+ this.emitBus({ event: "delivery_status", payload });
57
57
  });
58
58
  this.client.on("structured_error", (payload) => {
59
- this.bus.emit("structured_error", { event: "structured_error", payload });
59
+ this.emitBus({ event: "structured_error", payload });
60
60
  });
61
61
  this.client.on("connected", () => {
62
- this.bus.emit("connected", { event: "connected" });
62
+ this.emitBus({ event: "connected" });
63
63
  });
64
64
  this.client.on("disconnected", () => {
65
- this.bus.emit("disconnected", { event: "disconnected" });
65
+ this.emitBus({ event: "disconnected" });
66
66
  });
67
67
  this.client.on("error", (err) => {
68
- this.bus.emit("error", { event: "error", payload: err });
68
+ this.emitBus({ event: "error", payload: err });
69
69
  });
70
70
  }
71
+ emitBus(e) {
72
+ if (e.event === "error" && this.bus.listenerCount("error") === 0) {
73
+ return false;
74
+ }
75
+ return this.bus.emit(e.event, e);
76
+ }
71
77
  }
72
78
  export { ConnectorError };
@@ -14,6 +14,14 @@ interface RuntimePrincipal {
14
14
  }
15
15
  export declare function resolveCredentialsFromFile(filePath: string, accountId: string, envApiHost: string | undefined): Promise<ResolvedCredentials>;
16
16
  export declare function resolveRuntimePrincipal(apiHost: string, runtimeKey: string, fetchImpl?: typeof globalThis.fetch): Promise<RuntimePrincipal>;
17
+ export interface ResolveRuntimePrincipalRetryOptions {
18
+ attempts?: number;
19
+ initialDelayMs?: number;
20
+ maxDelayMs?: number;
21
+ fetchImpl?: typeof globalThis.fetch;
22
+ logger?: BrokerLogger;
23
+ }
24
+ export declare function resolveRuntimePrincipalWithRetry(apiHost: string, runtimeKey: string, opts?: ResolveRuntimePrincipalRetryOptions): Promise<RuntimePrincipal>;
17
25
  export declare function buildApiPort(apiHost: string, runtimeKey: string, logger: BrokerLogger): RuntimeEndpointPort;
18
26
  export declare function installFatalExitHandlers(logger: BrokerLogger): void;
19
27
  export declare function main(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/broker/entry.ts"],"names":[],"mappings":"AAyFA,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,aAAa,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAOtE,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA8F9B;AA2DD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC,gBAAgB,CAAC,CA4B3B;AAaD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,YAAY,GACnB,mBAAmB,CA8IrB;AAyCD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAenE;AAED,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiG1C"}
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/broker/entry.ts"],"names":[],"mappings":"AAyFA,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,aAAa,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAOtE,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA8F9B;AA2DD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC,gBAAgB,CAAC,CA4B3B;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACpC,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAWD,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,mCAAwC,GAC7C,OAAO,CAAC,gBAAgB,CAAC,CA4B3B;AAgCD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,YAAY,GACnB,mBAAmB,CA8IrB;AAyCD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAenE;AAED,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqG1C"}
@@ -123,6 +123,52 @@ export async function resolveRuntimePrincipal(apiHost, runtimeKey, fetchImpl = g
123
123
  ...(typeof raw.carrier === "string" && { carrier: raw.carrier }),
124
124
  };
125
125
  }
126
+ export async function resolveRuntimePrincipalWithRetry(apiHost, runtimeKey, opts = {}) {
127
+ const attempts = Math.max(1, Math.floor(opts.attempts ?? 5));
128
+ const initialDelayMs = Math.max(0, opts.initialDelayMs ?? 500);
129
+ const maxDelayMs = Math.max(initialDelayMs, opts.maxDelayMs ?? 5_000);
130
+ const fetchImpl = opts.fetchImpl ?? globalThis.fetch;
131
+ let delayMs = initialDelayMs;
132
+ let lastErr;
133
+ for (let attempt = 1; attempt <= attempts; attempt++) {
134
+ try {
135
+ return await resolveRuntimePrincipal(apiHost, runtimeKey, fetchImpl);
136
+ }
137
+ catch (err) {
138
+ lastErr = err;
139
+ if (attempt >= attempts || !isRetryableRuntimePrincipalError(err)) {
140
+ throw err;
141
+ }
142
+ opts.logger?.warn("runtime_principal_resolve_retry", {
143
+ attempt,
144
+ next_attempt: attempt + 1,
145
+ delay_ms: delayMs,
146
+ err: err instanceof Error ? err.message : String(err),
147
+ });
148
+ if (delayMs > 0)
149
+ await sleep(delayMs);
150
+ delayMs = delayMs === 0 ? 0 : Math.min(maxDelayMs, delayMs * 2);
151
+ }
152
+ }
153
+ throw lastErr instanceof Error ? lastErr : new Error(String(lastErr));
154
+ }
155
+ function isRetryableRuntimePrincipalError(err) {
156
+ if (!(err instanceof Error))
157
+ return false;
158
+ const cause = err.cause;
159
+ if (cause instanceof Error)
160
+ return true;
161
+ if (err.name === "TypeError" ||
162
+ err.name === "AbortError" ||
163
+ /fetch failed|network|ECONNRESET|ECONNREFUSED|ETIMEDOUT|EAI_AGAIN/i.test(err.message)) {
164
+ return true;
165
+ }
166
+ const status = /^whoami failed: (\d+)$/.exec(err.message)?.[1];
167
+ if (!status)
168
+ return false;
169
+ const code = Number(status);
170
+ return code === 408 || code === 429 || code >= 500;
171
+ }
126
172
  export function buildApiPort(apiHost, runtimeKey, logger) {
127
173
  return {
128
174
  async register(params) {
@@ -245,7 +291,7 @@ export async function main() {
245
291
  });
246
292
  const logger = createBrokerLogger(paths.logDir);
247
293
  installFatalExitHandlers(logger);
248
- const principal = await resolveRuntimePrincipal(creds.apiHost, creds.token);
294
+ const principal = await resolveRuntimePrincipalWithRetry(creds.apiHost, creds.token, { logger });
249
295
  logger.info("broker_entry_starting", {
250
296
  accountId: creds.accountId,
251
297
  subjectId: principal.subjectId,
@@ -124,8 +124,12 @@ type Events = {
124
124
  error: (err: Error) => void;
125
125
  };
126
126
  export declare class BrokerClient extends EventEmitter {
127
- private readonly handle;
127
+ private handle;
128
+ private readonly discoverOptions;
128
129
  private ws;
130
+ private autoRecoverEnabled;
131
+ private recoverInFlight;
132
+ private connectOptions;
129
133
  private heartbeatInterval;
130
134
  private heartbeatTimeout;
131
135
  private heartbeatMisses;
@@ -139,6 +143,8 @@ export declare class BrokerClient extends EventEmitter {
139
143
  private _clientKind;
140
144
  private _clientVersion;
141
145
  private readonly endpointOwnerTokens;
146
+ private readonly endpointAliases;
147
+ private readonly endpointRegistrations;
142
148
  private constructor();
143
149
  static discover(opts: BrokerClientDiscoverOptions): Promise<BrokerClient>;
144
150
  get spawnedNew(): boolean;
@@ -148,7 +154,9 @@ export declare class BrokerClient extends EventEmitter {
148
154
  get serverCapabilities(): Readonly<IpcCapabilities>;
149
155
  get serverVersion(): string | null;
150
156
  connect(opts: BrokerClientConnectOptions): Promise<InitializeResponseBody>;
157
+ private connectCurrentHandle;
151
158
  registerEndpoint(args: RegisterEndpointArgs): Promise<RegisterEndpointOutcome>;
159
+ private registerEndpointOnCurrentBroker;
152
160
  send(endpointId: string, to: string, content: string, contentType?: string, metadata?: Record<string, unknown>): Promise<{
153
161
  messageId: string;
154
162
  status: string;
@@ -172,7 +180,13 @@ export declare class BrokerClient extends EventEmitter {
172
180
  emit<K extends keyof Events>(event: K, ...args: Parameters<Events[K]>): boolean;
173
181
  emit(event: string | symbol, ...args: unknown[]): boolean;
174
182
  private httpJson;
183
+ private recoverBrokerConnection;
184
+ private recoverBrokerConnectionOnce;
185
+ private teardownWsForRecovery;
186
+ private reregisterCachedEndpoints;
187
+ private resolveEndpointId;
175
188
  private requireEndpointOwnerToken;
189
+ private emitErrorIfObserved;
176
190
  private handleFrame;
177
191
  private sendPushAck;
178
192
  private startHeartbeat;
@@ -1 +1 @@
1
- {"version":3,"file":"broker-client.d.ts","sourceRoot":"","sources":["../../src/broker-client/broker-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker-client.d.ts","sourceRoot":"","sources":["../../src/broker-client/broker-client.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import WebSocket from "ws";
3
3
  import { resolveBrokerPaths } from "../broker/paths.js";
4
4
  import { IPC_PROTOCOL_VERSION, } from "../broker/version-handshake.js";
5
5
  import { PLUGIN_VERSION } from "../version.js";
6
- import { discoverBroker } from "./lazy-spawn.js";
6
+ import { discoverBroker, } from "./lazy-spawn.js";
7
7
  export class ConnectorUnavailableError extends Error {
8
8
  code = "connector_unavailable";
9
9
  retryable = true;
@@ -60,9 +60,29 @@ function normalizeRuntimeAssignmentFailureCategory(category) {
60
60
  }
61
61
  return null;
62
62
  }
63
+ function isIpcTransportError(err) {
64
+ if (!(err instanceof Error))
65
+ return false;
66
+ const cause = err.cause;
67
+ if (cause instanceof Error) {
68
+ return isIpcTransportError(cause);
69
+ }
70
+ return (err.name === "TypeError" ||
71
+ err.name === "AbortError" ||
72
+ /fetch failed|ECONNRESET|ECONNREFUSED|ECONNABORTED|EPIPE|ETIMEDOUT|socket|WebSocket/i.test(err.message));
73
+ }
74
+ function cacheRegistrationArgs(args) {
75
+ const cached = { ...args };
76
+ delete cached.spawnToken;
77
+ return cached;
78
+ }
63
79
  export class BrokerClient extends EventEmitter {
64
80
  handle;
81
+ discoverOptions;
65
82
  ws = null;
83
+ autoRecoverEnabled = true;
84
+ recoverInFlight = null;
85
+ connectOptions = null;
66
86
  heartbeatInterval = null;
67
87
  heartbeatTimeout = null;
68
88
  heartbeatMisses = 0;
@@ -76,15 +96,18 @@ export class BrokerClient extends EventEmitter {
76
96
  _clientKind = null;
77
97
  _clientVersion = null;
78
98
  endpointOwnerTokens = new Map();
79
- constructor(handle) {
99
+ endpointAliases = new Map();
100
+ endpointRegistrations = new Map();
101
+ constructor(handle, discoverOptions) {
80
102
  super();
81
103
  this.handle = handle;
104
+ this.discoverOptions = discoverOptions;
82
105
  }
83
106
  static async discover(opts) {
84
107
  const paths = resolveBrokerPaths(opts.accountId, opts.runtimeToken, {
85
108
  userDataDir: opts.userDataDir,
86
109
  });
87
- const handle = await discoverBroker({
110
+ const discoverOptions = {
88
111
  discoveryFile: paths.discoveryFile,
89
112
  timeoutMs: opts.timeoutMs,
90
113
  brokerEntry: opts.brokerEntry,
@@ -97,8 +120,9 @@ export class BrokerClient extends EventEmitter {
97
120
  : {}),
98
121
  ...(opts.env ?? {}),
99
122
  },
100
- });
101
- return new BrokerClient(handle);
123
+ };
124
+ const handle = await discoverBroker(discoverOptions);
125
+ return new BrokerClient(handle, discoverOptions);
102
126
  }
103
127
  get spawnedNew() {
104
128
  return this.handle.spawned;
@@ -122,6 +146,11 @@ export class BrokerClient extends EventEmitter {
122
146
  if (this.ws) {
123
147
  throw new Error("BrokerClient already connected");
124
148
  }
149
+ this.autoRecoverEnabled = true;
150
+ this.connectOptions = { ...opts };
151
+ return this.connectCurrentHandle(opts, true);
152
+ }
153
+ async connectCurrentHandle(opts, allowRecover) {
125
154
  this.pluginPid = opts.pluginPid;
126
155
  this._clientKind = opts.clientKind;
127
156
  this._clientVersion = opts.clientVersion;
@@ -136,12 +165,21 @@ export class BrokerClient extends EventEmitter {
136
165
  .filter(([, enabled]) => enabled === true)
137
166
  .map(([name]) => name)
138
167
  .join(",");
139
- const initRes = await this.httpJson("POST", "/v1/initialize", {
140
- client_protocol_version: IPC_PROTOCOL_VERSION,
141
- client_kind: opts.clientKind,
142
- client_version: opts.clientVersion,
143
- capabilities: clientCapabilities,
144
- });
168
+ let initRes;
169
+ try {
170
+ initRes = await this.httpJson("POST", "/v1/initialize", {
171
+ client_protocol_version: IPC_PROTOCOL_VERSION,
172
+ client_kind: opts.clientKind,
173
+ client_version: opts.clientVersion,
174
+ capabilities: clientCapabilities,
175
+ }, { allowRecover: false });
176
+ }
177
+ catch (err) {
178
+ if (!allowRecover || !isIpcTransportError(err))
179
+ throw err;
180
+ await this.recoverBrokerConnection("initialize_failed", false);
181
+ return this.connectCurrentHandle(opts, false);
182
+ }
145
183
  this._sessionId = initRes.session_id;
146
184
  this._serverCapabilities = initRes.server_capabilities;
147
185
  this._serverVersion =
@@ -158,26 +196,59 @@ export class BrokerClient extends EventEmitter {
158
196
  },
159
197
  });
160
198
  this.ws = ws;
161
- await new Promise((resolve, reject) => {
162
- const onOpen = () => {
163
- ws.off("error", onError);
164
- resolve();
165
- };
166
- const onError = (err) => {
167
- ws.off("open", onOpen);
168
- reject(err);
169
- };
170
- ws.once("open", onOpen);
171
- ws.once("error", onError);
199
+ try {
200
+ await new Promise((resolve, reject) => {
201
+ const onOpen = () => {
202
+ ws.off("error", onError);
203
+ resolve();
204
+ };
205
+ const onError = (err) => {
206
+ ws.off("open", onOpen);
207
+ reject(err);
208
+ };
209
+ ws.once("open", onOpen);
210
+ ws.once("error", onError);
211
+ });
212
+ }
213
+ catch (err) {
214
+ this.ws = null;
215
+ try {
216
+ ws.close();
217
+ }
218
+ catch {
219
+ }
220
+ if (!allowRecover || !isIpcTransportError(err))
221
+ throw err;
222
+ await this.recoverBrokerConnection("stream_open_failed", false);
223
+ return this.connectCurrentHandle(opts, false);
224
+ }
225
+ ws.on("message", (data) => {
226
+ if (this.ws !== ws)
227
+ return;
228
+ this.handleFrame(data.toString());
229
+ });
230
+ ws.on("pong", () => {
231
+ if (this.ws !== ws)
232
+ return;
233
+ this.markHeartbeatAlive();
172
234
  });
173
- ws.on("message", (data) => this.handleFrame(data.toString()));
174
- ws.on("pong", () => this.markHeartbeatAlive());
175
235
  ws.on("close", () => {
236
+ if (this.ws !== ws)
237
+ return;
176
238
  this.clearHeartbeat();
177
239
  this.ws = null;
178
240
  this.emit("disconnected");
241
+ setTimeout(() => {
242
+ if (!this.autoRecoverEnabled || this.connectOptions === null)
243
+ return;
244
+ void this.recoverBrokerConnection("stream_closed", true).catch((err) => this.emitErrorIfObserved(err instanceof Error ? err : new Error(String(err))));
245
+ }, 0);
246
+ });
247
+ ws.on("error", (err) => {
248
+ if (this.ws !== ws)
249
+ return;
250
+ this.emitErrorIfObserved(err);
179
251
  });
180
- ws.on("error", (err) => this.emit("error", err));
181
252
  this.startHeartbeat(opts.heartbeatIntervalMs ?? 30_000);
182
253
  return initRes;
183
254
  }
@@ -185,6 +256,11 @@ export class BrokerClient extends EventEmitter {
185
256
  if (this.pluginPid === null) {
186
257
  throw new Error("BrokerClient.connect must be called before registerEndpoint");
187
258
  }
259
+ const outcome = await this.registerEndpointOnCurrentBroker(args, true);
260
+ this.endpointRegistrations.set(outcome.endpoint_id, cacheRegistrationArgs(args));
261
+ return outcome;
262
+ }
263
+ async registerEndpointOnCurrentBroker(args, allowRecover) {
188
264
  const outcome = await this.httpJson("POST", "/v1/endpoint/register", {
189
265
  agent_id: args.agentId,
190
266
  plugin_pid: this.pluginPid,
@@ -200,15 +276,16 @@ export class BrokerClient extends EventEmitter {
200
276
  execution_surface: args.executionSurface,
201
277
  background_exchange_mode: args.backgroundExchangeMode,
202
278
  spawn_token: args.spawnToken,
203
- });
279
+ }, { allowRecover });
204
280
  if (typeof outcome.endpoint_owner_token === "string") {
205
281
  this.endpointOwnerTokens.set(outcome.endpoint_id, outcome.endpoint_owner_token);
206
282
  }
207
283
  return outcome;
208
284
  }
209
285
  async send(endpointId, to, content, contentType = "text", metadata) {
286
+ const resolvedEndpointId = this.resolveEndpointId(endpointId);
210
287
  return this.httpJson("POST", "/v1/send", {
211
- endpoint_id: endpointId,
288
+ endpoint_id: resolvedEndpointId,
212
289
  to,
213
290
  content,
214
291
  contentType,
@@ -219,10 +296,11 @@ export class BrokerClient extends EventEmitter {
219
296
  if (this.pluginPid === null) {
220
297
  throw new Error("BrokerClient.connect must be called before sendRuntimeAssignmentReply");
221
298
  }
299
+ const endpointId = this.resolveEndpointId(args.endpointId);
222
300
  return this.httpJson("POST", "/v1/runtime/assignment-reply", {
223
- endpoint_id: args.endpointId,
301
+ endpoint_id: endpointId,
224
302
  plugin_pid: this.pluginPid,
225
- endpoint_owner_token: this.requireEndpointOwnerToken(args.endpointId),
303
+ endpoint_owner_token: this.requireEndpointOwnerToken(endpointId),
226
304
  source_message_id: args.sourceMessageId,
227
305
  assignment_id: args.assignmentId,
228
306
  reply_request_id: args.replyRequestId,
@@ -234,10 +312,11 @@ export class BrokerClient extends EventEmitter {
234
312
  if (this.pluginPid === null) {
235
313
  throw new Error("BrokerClient.connect must be called before claimRuntimeAssignment");
236
314
  }
315
+ const endpointId = this.resolveEndpointId(args.endpointId);
237
316
  return this.httpJson("POST", "/v1/runtime/assignment-claim", {
238
- endpoint_id: args.endpointId,
317
+ endpoint_id: endpointId,
239
318
  plugin_pid: this.pluginPid,
240
- endpoint_owner_token: this.requireEndpointOwnerToken(args.endpointId),
319
+ endpoint_owner_token: this.requireEndpointOwnerToken(endpointId),
241
320
  undispatched_id: args.undispatchedId,
242
321
  ...(args.recoverExisting === true && { recover_existing: true }),
243
322
  });
@@ -247,7 +326,7 @@ export class BrokerClient extends EventEmitter {
247
326
  throw new Error("BrokerClient.connect must be called before listUndispatched");
248
327
  }
249
328
  const path = args?.endpointId
250
- ? `/v1/undispatched?endpoint_id=${encodeURIComponent(args.endpointId)}`
329
+ ? `/v1/undispatched?endpoint_id=${encodeURIComponent(this.resolveEndpointId(args.endpointId))}`
251
330
  : "/v1/undispatched";
252
331
  const res = await this.httpJson("GET", path);
253
332
  return res.items ?? [];
@@ -256,10 +335,11 @@ export class BrokerClient extends EventEmitter {
256
335
  if (this.pluginPid === null) {
257
336
  throw new Error("BrokerClient.connect must be called before reportRuntimeProcessingState");
258
337
  }
338
+ const endpointId = this.resolveEndpointId(args.endpointId);
259
339
  await this.httpJson("POST", "/v1/runtime/processing-state", {
260
- endpoint_id: args.endpointId,
340
+ endpoint_id: endpointId,
261
341
  plugin_pid: this.pluginPid,
262
- endpoint_owner_token: this.requireEndpointOwnerToken(args.endpointId),
342
+ endpoint_owner_token: this.requireEndpointOwnerToken(endpointId),
263
343
  source_message_id: args.sourceMessageId,
264
344
  assignment_id: args.assignmentId,
265
345
  state_event_id: args.stateEventId,
@@ -275,9 +355,11 @@ export class BrokerClient extends EventEmitter {
275
355
  });
276
356
  }
277
357
  async close(endpointId) {
358
+ this.autoRecoverEnabled = false;
278
359
  if (endpointId) {
279
360
  try {
280
- await this.httpJson("DELETE", `/v1/endpoint/${encodeURIComponent(endpointId)}`);
361
+ const resolvedEndpointId = this.resolveEndpointId(endpointId);
362
+ await this.httpJson("DELETE", `/v1/endpoint/${encodeURIComponent(resolvedEndpointId)}`, undefined, { allowRecover: false });
281
363
  }
282
364
  catch {
283
365
  }
@@ -302,18 +384,27 @@ export class BrokerClient extends EventEmitter {
302
384
  emit(event, ...args) {
303
385
  return super.emit(event, ...args);
304
386
  }
305
- async httpJson(method, path, body) {
306
- const res = await fetch(`${this.handle.record.ipcUrl}${path}`, {
307
- method,
308
- headers: {
309
- Authorization: `Bearer ${this.handle.record.bearerToken}`,
310
- ...(this.pluginPid !== null
311
- ? { "x-plugin-pid": String(this.pluginPid) }
312
- : {}),
313
- ...(body ? { "Content-Type": "application/json" } : {}),
314
- },
315
- body: body ? JSON.stringify(body) : undefined,
316
- });
387
+ async httpJson(method, path, body, opts = {}) {
388
+ let res;
389
+ try {
390
+ res = await fetch(`${this.handle.record.ipcUrl}${path}`, {
391
+ method,
392
+ headers: {
393
+ Authorization: `Bearer ${this.handle.record.bearerToken}`,
394
+ ...(this.pluginPid !== null
395
+ ? { "x-plugin-pid": String(this.pluginPid) }
396
+ : {}),
397
+ ...(body ? { "Content-Type": "application/json" } : {}),
398
+ },
399
+ body: body ? JSON.stringify(body) : undefined,
400
+ });
401
+ }
402
+ catch (err) {
403
+ if (opts.allowRecover !== false && isIpcTransportError(err)) {
404
+ await this.recoverBrokerConnection("ipc_fetch_failed", true);
405
+ }
406
+ throw err;
407
+ }
317
408
  if (!res.ok) {
318
409
  const errText = await res.text().catch(() => "");
319
410
  const parsed = safeJsonParse(errText);
@@ -375,6 +466,69 @@ export class BrokerClient extends EventEmitter {
375
466
  }
376
467
  return (await res.json());
377
468
  }
469
+ async recoverBrokerConnection(reason, reconnect) {
470
+ if (this.recoverInFlight)
471
+ return this.recoverInFlight;
472
+ this.recoverInFlight = this.recoverBrokerConnectionOnce(reason, reconnect).finally(() => {
473
+ this.recoverInFlight = null;
474
+ });
475
+ return this.recoverInFlight;
476
+ }
477
+ async recoverBrokerConnectionOnce(_reason, reconnect) {
478
+ const previousAutoRecover = this.autoRecoverEnabled;
479
+ this.autoRecoverEnabled = false;
480
+ try {
481
+ this.teardownWsForRecovery();
482
+ const handle = await discoverBroker(this.discoverOptions);
483
+ this.handle = handle;
484
+ this._sessionId = null;
485
+ this._serverCapabilities = {};
486
+ this._serverVersion = null;
487
+ this._networkPresence = null;
488
+ this.endpointOwnerTokens.clear();
489
+ const connectOptions = this.connectOptions;
490
+ if (!reconnect || connectOptions === null)
491
+ return;
492
+ await this.connectCurrentHandle(connectOptions, false);
493
+ await this.reregisterCachedEndpoints();
494
+ }
495
+ finally {
496
+ this.autoRecoverEnabled = previousAutoRecover;
497
+ }
498
+ }
499
+ teardownWsForRecovery() {
500
+ this.clearHeartbeat();
501
+ const ws = this.ws;
502
+ this.ws = null;
503
+ if (ws &&
504
+ (ws.readyState === WebSocket.OPEN ||
505
+ ws.readyState === WebSocket.CONNECTING)) {
506
+ try {
507
+ ws.close(1012, "broker_recover");
508
+ }
509
+ catch {
510
+ }
511
+ }
512
+ }
513
+ async reregisterCachedEndpoints() {
514
+ const entries = Array.from(this.endpointRegistrations.entries()).filter(([endpointId]) => this.resolveEndpointId(endpointId) === endpointId);
515
+ for (const [previousEndpointId, args] of entries) {
516
+ const outcome = await this.registerEndpointOnCurrentBroker(args, false);
517
+ this.endpointRegistrations.set(outcome.endpoint_id, cacheRegistrationArgs(args));
518
+ if (outcome.endpoint_id !== previousEndpointId) {
519
+ this.endpointAliases.set(previousEndpointId, outcome.endpoint_id);
520
+ }
521
+ }
522
+ }
523
+ resolveEndpointId(endpointId) {
524
+ let current = endpointId;
525
+ const seen = new Set();
526
+ while (this.endpointAliases.has(current) && !seen.has(current)) {
527
+ seen.add(current);
528
+ current = this.endpointAliases.get(current) ?? current;
529
+ }
530
+ return current;
531
+ }
378
532
  requireEndpointOwnerToken(endpointId) {
379
533
  const token = this.endpointOwnerTokens.get(endpointId);
380
534
  if (!token) {
@@ -382,6 +536,11 @@ export class BrokerClient extends EventEmitter {
382
536
  }
383
537
  return token;
384
538
  }
539
+ emitErrorIfObserved(err) {
540
+ if (this.listenerCount("error") === 0)
541
+ return false;
542
+ return this.emit("error", err);
543
+ }
385
544
  handleFrame(raw) {
386
545
  let parsed;
387
546
  try {
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const PLUGIN_VERSION = "0.2.19";
1
+ export declare const PLUGIN_VERSION = "0.2.20";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const PLUGIN_VERSION = "0.2.19";
1
+ export const PLUGIN_VERSION = "0.2.20";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masons/runtime-broker",
3
- "version": "0.2.19",
3
+ "version": "0.2.20",
4
4
  "description": "MASONS Runtime Broker — local daemon and BrokerClient SDK for multi-session agent runtime coordination.",
5
5
  "license": "MIT",
6
6
  "author": "MASONS.ai <hello@masons.ai> (https://masons.ai)",