@agentxjs/network 1.6.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -24,6 +24,7 @@ import { ChannelClient, ChannelClientOptions, Unsubscribe as Unsubscribe2 } from
24
24
  declare class WebSocketClient implements ChannelClient {
25
25
  private ws;
26
26
  private serverUrl;
27
+ private headers?;
27
28
  private messageHandlers;
28
29
  private openHandlers;
29
30
  private closeHandlers;
package/dist/index.js CHANGED
@@ -211,6 +211,7 @@ var isBrowser = typeof globalThis !== "undefined" && typeof globalThis.window !=
211
211
  class WebSocketClient {
212
212
  ws = null;
213
213
  serverUrl;
214
+ headers;
214
215
  messageHandlers = new Set;
215
216
  openHandlers = new Set;
216
217
  closeHandlers = new Set;
@@ -220,6 +221,7 @@ class WebSocketClient {
220
221
  throw new Error("Use createBrowserWebSocketClient() in browser environment for auto-reconnect support");
221
222
  }
222
223
  this.serverUrl = options.serverUrl;
224
+ this.headers = options.headers;
223
225
  }
224
226
  get readyState() {
225
227
  if (!this.ws)
@@ -238,7 +240,17 @@ class WebSocketClient {
238
240
  throw new Error("Already connected or connecting");
239
241
  }
240
242
  const { WebSocket: NodeWebSocket } = await import("ws");
241
- this.ws = new NodeWebSocket(this.serverUrl);
243
+ let resolvedHeaders;
244
+ if (this.headers) {
245
+ if (typeof this.headers === "function") {
246
+ resolvedHeaders = await Promise.resolve(this.headers());
247
+ } else {
248
+ resolvedHeaders = this.headers;
249
+ }
250
+ }
251
+ this.ws = new NodeWebSocket(this.serverUrl, {
252
+ headers: resolvedHeaders
253
+ });
242
254
  return new Promise((resolve, reject) => {
243
255
  const onOpen = () => {
244
256
  logger2.info("WebSocket connected", { serverUrl: this.serverUrl });
@@ -361,8 +373,22 @@ class BrowserWebSocketClient {
361
373
  if (this.ws) {
362
374
  throw new Error("Already connected or connecting");
363
375
  }
376
+ let resolvedHeaders;
377
+ if (this.options.headers) {
378
+ if (typeof this.options.headers === "function") {
379
+ resolvedHeaders = await Promise.resolve(this.options.headers());
380
+ } else {
381
+ resolvedHeaders = this.options.headers;
382
+ }
383
+ }
384
+ logger2.debug("Connecting to WebSocket", {
385
+ serverUrl: this.serverUrl,
386
+ autoReconnect: this.options.autoReconnect,
387
+ connectionTimeout: this.options.connectionTimeout
388
+ });
364
389
  if (this.options.autoReconnect) {
365
390
  const ReconnectingWebSocket = (await import("reconnecting-websocket")).default;
391
+ logger2.debug("Using ReconnectingWebSocket");
366
392
  this.ws = new ReconnectingWebSocket(this.serverUrl, [], {
367
393
  maxReconnectionDelay: this.options.maxReconnectionDelay,
368
394
  minReconnectionDelay: this.options.minReconnectionDelay,
@@ -372,16 +398,29 @@ class BrowserWebSocketClient {
372
398
  debug: this.options.debug
373
399
  });
374
400
  } else {
401
+ logger2.debug("Using native WebSocket");
375
402
  this.ws = new WebSocket(this.serverUrl);
376
403
  }
377
404
  return new Promise((resolve, reject) => {
378
- const onOpen = () => {
405
+ const onOpen = async () => {
379
406
  if (this.hasConnectedBefore) {
380
407
  logger2.info("WebSocket reconnected successfully", { serverUrl: this.serverUrl });
381
408
  } else {
382
409
  logger2.info("WebSocket connected", { serverUrl: this.serverUrl });
383
410
  this.hasConnectedBefore = true;
384
411
  }
412
+ if (resolvedHeaders && Object.keys(resolvedHeaders).length > 0) {
413
+ try {
414
+ const authMessage = JSON.stringify({
415
+ type: "auth",
416
+ headers: resolvedHeaders
417
+ });
418
+ this.ws.send(authMessage);
419
+ logger2.info("Sent authentication message to server");
420
+ } catch (error) {
421
+ logger2.error("Failed to send authentication message", { error });
422
+ }
423
+ }
385
424
  for (const handler of this.openHandlers) {
386
425
  handler();
387
426
  }
@@ -479,4 +518,4 @@ export {
479
518
  WebSocketClient
480
519
  };
481
520
 
482
- //# debugId=A86BECFEEAD30A2564756E2164756E21
521
+ //# debugId=11069204D1FF528964756E2164756E21
package/dist/index.js.map CHANGED
@@ -3,9 +3,9 @@
3
3
  "sources": ["../src/WebSocketServer.ts", "../src/WebSocketClient.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * WebSocket Server implementation of ChannelServer\n */\n\nimport type { WebSocket as WS, WebSocketServer as WSS } from \"ws\";\nimport type {\n ChannelServer,\n ChannelConnection,\n ChannelServerOptions,\n MinimalHTTPServer,\n Unsubscribe,\n} from \"@agentxjs/types/network\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"network/WebSocketServer\");\n\n/**\n * WebSocket connection implementation\n */\nclass WebSocketConnection implements ChannelConnection {\n public readonly id: string;\n private ws: WS;\n private messageHandlers = new Set<(message: string) => void>();\n private closeHandlers = new Set<() => void>();\n private errorHandlers = new Set<(error: Error) => void>();\n private heartbeatInterval?: ReturnType<typeof setInterval>;\n private isAlive = true;\n\n constructor(ws: WS, options: ChannelServerOptions) {\n this.ws = ws;\n this.id = `conn_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;\n\n // Setup heartbeat if enabled\n if (options.heartbeat !== false) {\n const interval = options.heartbeatInterval || 30000;\n\n ws.on(\"pong\", () => {\n this.isAlive = true;\n logger.debug(\"Heartbeat pong received\", { id: this.id });\n });\n\n this.heartbeatInterval = setInterval(() => {\n if (!this.isAlive) {\n logger.warn(\"Client heartbeat timeout, terminating connection\", { id: this.id });\n clearInterval(this.heartbeatInterval);\n ws.terminate();\n return;\n }\n this.isAlive = false;\n ws.ping();\n logger.debug(\"Heartbeat ping sent\", { id: this.id });\n }, interval);\n }\n\n // Setup message handler\n ws.on(\"message\", (data: Buffer) => {\n const message = data.toString();\n for (const handler of this.messageHandlers) {\n handler(message);\n }\n });\n\n // Setup close handler\n ws.on(\"close\", () => {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n }\n for (const handler of this.closeHandlers) {\n handler();\n }\n });\n\n // Setup error handler\n ws.on(\"error\", (err: Error) => {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n }\n for (const handler of this.errorHandlers) {\n handler(err);\n }\n });\n }\n\n send(message: string): void {\n if (this.ws.readyState === 1) {\n // WebSocket.OPEN\n this.ws.send(message);\n }\n }\n\n onMessage(handler: (message: string) => void): Unsubscribe {\n this.messageHandlers.add(handler);\n return () => {\n this.messageHandlers.delete(handler);\n };\n }\n\n onClose(handler: () => void): Unsubscribe {\n this.closeHandlers.add(handler);\n return () => {\n this.closeHandlers.delete(handler);\n };\n }\n\n onError(handler: (error: Error) => void): Unsubscribe {\n this.errorHandlers.add(handler);\n return () => {\n this.errorHandlers.delete(handler);\n };\n }\n\n close(): void {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n }\n this.ws.close();\n }\n}\n\n/**\n * WebSocket Server\n */\nexport class WebSocketServer implements ChannelServer {\n private wss: WSS | null = null;\n private connections = new Set<WebSocketConnection>();\n private connectionHandlers = new Set<(connection: ChannelConnection) => void>();\n private options: ChannelServerOptions;\n private attachedToServer = false;\n\n constructor(options: ChannelServerOptions = {}) {\n this.options = options;\n }\n\n async listen(port: number, host: string = \"0.0.0.0\"): Promise<void> {\n if (this.wss) {\n throw new Error(\"Server already listening\");\n }\n if (this.attachedToServer) {\n throw new Error(\n \"Cannot listen when attached to existing server. The server should call listen() instead.\"\n );\n }\n\n const { WebSocketServer: WSS } = await import(\"ws\");\n this.wss = new WSS({ port, host });\n\n this.wss.on(\"connection\", (ws: WS) => {\n this.handleConnection(ws);\n });\n\n logger.info(\"WebSocket server listening\", { port, host });\n }\n\n attach(server: MinimalHTTPServer, path: string = \"/ws\"): void {\n if (this.wss) {\n throw new Error(\"Server already initialized\");\n }\n\n import(\"ws\").then(({ WebSocketServer: WSS }) => {\n this.wss = new WSS({ noServer: true });\n\n // Handle WebSocket upgrade on the HTTP server\n server.on(\"upgrade\", (request, socket, head) => {\n const url = new URL(request.url || \"\", `http://${request.headers.host}`);\n if (url.pathname === path) {\n this.wss!.handleUpgrade(request as any, socket as any, head as any, (ws: WS) => {\n this.wss!.emit(\"connection\", ws, request);\n });\n } else {\n (socket as any).destroy();\n }\n });\n\n this.wss.on(\"connection\", (ws: WS) => {\n this.handleConnection(ws);\n });\n\n this.attachedToServer = true;\n logger.info(\"WebSocket attached to existing HTTP server\", { path });\n });\n }\n\n private handleConnection(ws: WS): void {\n const connection = new WebSocketConnection(ws, this.options);\n this.connections.add(connection);\n\n logger.info(\"Client connected\", {\n connectionId: connection.id,\n totalConnections: this.connections.size,\n });\n\n connection.onClose(() => {\n this.connections.delete(connection);\n logger.info(\"Client disconnected\", {\n connectionId: connection.id,\n totalConnections: this.connections.size,\n });\n });\n\n // Notify handlers\n for (const handler of this.connectionHandlers) {\n handler(connection);\n }\n }\n\n onConnection(handler: (connection: ChannelConnection) => void): Unsubscribe {\n this.connectionHandlers.add(handler);\n return () => {\n this.connectionHandlers.delete(handler);\n };\n }\n\n broadcast(message: string): void {\n for (const connection of this.connections) {\n connection.send(message);\n }\n }\n\n async close(): Promise<void> {\n if (!this.wss) return;\n\n for (const connection of this.connections) {\n connection.close();\n }\n this.connections.clear();\n\n // Don't close the server if attached to existing HTTP server\n if (!this.attachedToServer) {\n await new Promise<void>((resolve) => {\n this.wss!.close(() => resolve());\n });\n }\n this.wss = null;\n }\n\n async dispose(): Promise<void> {\n await this.close();\n this.connectionHandlers.clear();\n }\n}\n",
6
- "/**\n * WebSocket Client implementation of ChannelClient\n */\n\nimport type { ChannelClient, ChannelClientOptions, Unsubscribe } from \"@agentxjs/types/network\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"network/WebSocketClient\");\n\n// Detect browser environment\nconst isBrowser =\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as any).window !== \"undefined\" &&\n typeof (globalThis as any).window.WebSocket !== \"undefined\";\n\n/**\n * WebSocket Client (Node.js version - no auto-reconnect)\n */\nexport class WebSocketClient implements ChannelClient {\n private ws: WebSocket | null = null;\n private serverUrl: string;\n private messageHandlers = new Set<(message: string) => void>();\n private openHandlers = new Set<() => void>();\n private closeHandlers = new Set<() => void>();\n private errorHandlers = new Set<(error: Error) => void>();\n\n constructor(options: ChannelClientOptions) {\n if (isBrowser) {\n throw new Error(\n \"Use createBrowserWebSocketClient() in browser environment for auto-reconnect support\"\n );\n }\n\n this.serverUrl = options.serverUrl;\n }\n\n get readyState(): \"connecting\" | \"open\" | \"closing\" | \"closed\" {\n if (!this.ws) return \"closed\";\n const state = this.ws.readyState;\n if (state === 0) return \"connecting\";\n if (state === 1) return \"open\";\n if (state === 2) return \"closing\";\n return \"closed\";\n }\n\n async connect(): Promise<void> {\n if (this.ws) {\n throw new Error(\"Already connected or connecting\");\n }\n\n const { WebSocket: NodeWebSocket } = await import(\"ws\");\n this.ws = new NodeWebSocket(this.serverUrl) as unknown as WebSocket;\n\n return new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n logger.info(\"WebSocket connected\", { serverUrl: this.serverUrl });\n for (const handler of this.openHandlers) {\n handler();\n }\n resolve();\n };\n\n const onError = (err?: Error) => {\n logger.error(\"WebSocket connection failed\", {\n serverUrl: this.serverUrl,\n error: err?.message,\n });\n reject(err || new Error(\"WebSocket connection failed\"));\n };\n\n (this.ws as any).once(\"open\", onOpen);\n (this.ws as any).once(\"error\", onError);\n\n // Setup permanent handlers\n (this.ws as any).on(\"message\", (data: Buffer) => {\n const message = data.toString();\n for (const handler of this.messageHandlers) {\n handler(message);\n }\n });\n\n (this.ws as any).on(\"close\", () => {\n logger.warn(\"WebSocket closed\");\n for (const handler of this.closeHandlers) {\n handler();\n }\n });\n\n (this.ws as any).on(\"error\", (err: Error) => {\n logger.error(\"WebSocket error\", { error: err.message });\n for (const handler of this.errorHandlers) {\n handler(err);\n }\n });\n });\n }\n\n send(message: string): void {\n if (!this.ws || this.ws.readyState !== 1) {\n throw new Error(\"WebSocket is not open\");\n }\n this.ws.send(message);\n }\n\n onMessage(handler: (message: string) => void): Unsubscribe {\n this.messageHandlers.add(handler);\n return () => {\n this.messageHandlers.delete(handler);\n };\n }\n\n onOpen(handler: () => void): Unsubscribe {\n this.openHandlers.add(handler);\n return () => {\n this.openHandlers.delete(handler);\n };\n }\n\n onClose(handler: () => void): Unsubscribe {\n this.closeHandlers.add(handler);\n return () => {\n this.closeHandlers.delete(handler);\n };\n }\n\n onError(handler: (error: Error) => void): Unsubscribe {\n this.errorHandlers.add(handler);\n return () => {\n this.errorHandlers.delete(handler);\n };\n }\n\n close(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n dispose(): void {\n this.close();\n this.messageHandlers.clear();\n this.openHandlers.clear();\n this.closeHandlers.clear();\n this.errorHandlers.clear();\n }\n}\n\n/**\n * Browser WebSocket Client with auto-reconnect\n */\nexport class BrowserWebSocketClient implements ChannelClient {\n private ws: WebSocket | null = null;\n private serverUrl: string;\n private options: ChannelClientOptions;\n private messageHandlers = new Set<(message: string) => void>();\n private openHandlers = new Set<() => void>();\n private closeHandlers = new Set<() => void>();\n private errorHandlers = new Set<(error: Error) => void>();\n private hasConnectedBefore = false; // Track if this is a reconnection\n\n constructor(options: ChannelClientOptions) {\n if (!isBrowser) {\n throw new Error(\"BrowserWebSocketClient can only be used in browser environment\");\n }\n\n this.serverUrl = options.serverUrl;\n this.options = {\n autoReconnect: true,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 10000,\n maxRetries: Infinity,\n connectionTimeout: 4000,\n debug: false,\n ...options,\n };\n }\n\n get readyState(): \"connecting\" | \"open\" | \"closing\" | \"closed\" {\n if (!this.ws) return \"closed\";\n const state = this.ws.readyState;\n if (state === 0) return \"connecting\";\n if (state === 1) return \"open\";\n if (state === 2) return \"closing\";\n return \"closed\";\n }\n\n async connect(): Promise<void> {\n if (this.ws) {\n throw new Error(\"Already connected or connecting\");\n }\n\n if (this.options.autoReconnect) {\n // Use reconnecting-websocket for auto-reconnect\n const ReconnectingWebSocket = (await import(\"reconnecting-websocket\")).default;\n this.ws = new ReconnectingWebSocket(this.serverUrl, [], {\n maxReconnectionDelay: this.options.maxReconnectionDelay,\n minReconnectionDelay: this.options.minReconnectionDelay,\n reconnectionDelayGrowFactor: 1.3,\n connectionTimeout: this.options.connectionTimeout,\n maxRetries: this.options.maxRetries,\n debug: this.options.debug,\n });\n } else {\n // Use native WebSocket\n this.ws = new WebSocket(this.serverUrl);\n }\n\n return new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n if (this.hasConnectedBefore) {\n logger.info(\"WebSocket reconnected successfully\", { serverUrl: this.serverUrl });\n } else {\n logger.info(\"WebSocket connected\", { serverUrl: this.serverUrl });\n this.hasConnectedBefore = true;\n }\n for (const handler of this.openHandlers) {\n handler();\n }\n resolve();\n };\n\n const onError = (_event: Event) => {\n logger.error(\"WebSocket connection failed\", { serverUrl: this.serverUrl });\n const error = new Error(\"WebSocket connection failed\");\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n reject(error);\n };\n\n this.ws!.addEventListener(\"open\", onOpen as any, { once: true });\n this.ws!.addEventListener(\"error\", onError as any, { once: true });\n\n // Setup permanent handlers\n this.ws!.addEventListener(\"message\", ((event: any) => {\n const message = event.data;\n for (const handler of this.messageHandlers) {\n handler(message);\n }\n }) as any);\n\n this.ws!.addEventListener(\"close\", (() => {\n logger.info(\"WebSocket closed, attempting to reconnect...\");\n for (const handler of this.closeHandlers) {\n handler();\n }\n }) as any);\n\n this.ws!.addEventListener(\"error\", ((_event: Event) => {\n logger.error(\"WebSocket error\");\n const error = new Error(\"WebSocket error\");\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n }) as any);\n });\n }\n\n send(message: string): void {\n if (!this.ws || this.ws.readyState !== 1) {\n throw new Error(\"WebSocket is not open\");\n }\n this.ws.send(message);\n }\n\n onMessage(handler: (message: string) => void): Unsubscribe {\n this.messageHandlers.add(handler);\n return () => {\n this.messageHandlers.delete(handler);\n };\n }\n\n onOpen(handler: () => void): Unsubscribe {\n this.openHandlers.add(handler);\n return () => {\n this.openHandlers.delete(handler);\n };\n }\n\n onClose(handler: () => void): Unsubscribe {\n this.closeHandlers.add(handler);\n return () => {\n this.closeHandlers.delete(handler);\n };\n }\n\n onError(handler: (error: Error) => void): Unsubscribe {\n this.errorHandlers.add(handler);\n return () => {\n this.errorHandlers.delete(handler);\n };\n }\n\n close(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n dispose(): void {\n this.close();\n this.messageHandlers.clear();\n this.openHandlers.clear();\n this.closeHandlers.clear();\n this.errorHandlers.clear();\n }\n}\n\n/**\n * Factory function to create the appropriate WebSocket client\n */\nexport async function createWebSocketClient(options: ChannelClientOptions): Promise<ChannelClient> {\n if (isBrowser) {\n const client = new BrowserWebSocketClient(options);\n await client.connect();\n return client;\n } else {\n const client = new WebSocketClient(options);\n await client.connect();\n return client;\n }\n}\n"
6
+ "/**\n * WebSocket Client implementation of ChannelClient\n */\n\nimport type { ChannelClient, ChannelClientOptions, Unsubscribe } from \"@agentxjs/types/network\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"network/WebSocketClient\");\n\n// Detect browser environment\nconst isBrowser =\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as any).window !== \"undefined\" &&\n typeof (globalThis as any).window.WebSocket !== \"undefined\";\n\n/**\n * WebSocket Client (Node.js version - no auto-reconnect)\n */\nexport class WebSocketClient implements ChannelClient {\n private ws: WebSocket | null = null;\n private serverUrl: string;\n private headers?:\n | Record<string, string>\n | (() => Record<string, string> | Promise<Record<string, string>>);\n private messageHandlers = new Set<(message: string) => void>();\n private openHandlers = new Set<() => void>();\n private closeHandlers = new Set<() => void>();\n private errorHandlers = new Set<(error: Error) => void>();\n\n constructor(options: ChannelClientOptions) {\n if (isBrowser) {\n throw new Error(\n \"Use createBrowserWebSocketClient() in browser environment for auto-reconnect support\"\n );\n }\n\n this.serverUrl = options.serverUrl;\n this.headers = options.headers;\n }\n\n get readyState(): \"connecting\" | \"open\" | \"closing\" | \"closed\" {\n if (!this.ws) return \"closed\";\n const state = this.ws.readyState;\n if (state === 0) return \"connecting\";\n if (state === 1) return \"open\";\n if (state === 2) return \"closing\";\n return \"closed\";\n }\n\n async connect(): Promise<void> {\n if (this.ws) {\n throw new Error(\"Already connected or connecting\");\n }\n\n const { WebSocket: NodeWebSocket } = await import(\"ws\");\n\n // Resolve headers (support static, sync function, and async function)\n let resolvedHeaders: Record<string, string> | undefined;\n if (this.headers) {\n if (typeof this.headers === \"function\") {\n resolvedHeaders = await Promise.resolve(this.headers());\n } else {\n resolvedHeaders = this.headers;\n }\n }\n\n // Create WebSocket with headers (Node.js ws library supports this)\n this.ws = new NodeWebSocket(this.serverUrl, {\n headers: resolvedHeaders,\n }) as unknown as WebSocket;\n\n return new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n logger.info(\"WebSocket connected\", { serverUrl: this.serverUrl });\n for (const handler of this.openHandlers) {\n handler();\n }\n resolve();\n };\n\n const onError = (err?: Error) => {\n logger.error(\"WebSocket connection failed\", {\n serverUrl: this.serverUrl,\n error: err?.message,\n });\n reject(err || new Error(\"WebSocket connection failed\"));\n };\n\n (this.ws as any).once(\"open\", onOpen);\n (this.ws as any).once(\"error\", onError);\n\n // Setup permanent handlers\n (this.ws as any).on(\"message\", (data: Buffer) => {\n const message = data.toString();\n for (const handler of this.messageHandlers) {\n handler(message);\n }\n });\n\n (this.ws as any).on(\"close\", () => {\n logger.warn(\"WebSocket closed\");\n for (const handler of this.closeHandlers) {\n handler();\n }\n });\n\n (this.ws as any).on(\"error\", (err: Error) => {\n logger.error(\"WebSocket error\", { error: err.message });\n for (const handler of this.errorHandlers) {\n handler(err);\n }\n });\n });\n }\n\n send(message: string): void {\n if (!this.ws || this.ws.readyState !== 1) {\n throw new Error(\"WebSocket is not open\");\n }\n this.ws.send(message);\n }\n\n onMessage(handler: (message: string) => void): Unsubscribe {\n this.messageHandlers.add(handler);\n return () => {\n this.messageHandlers.delete(handler);\n };\n }\n\n onOpen(handler: () => void): Unsubscribe {\n this.openHandlers.add(handler);\n return () => {\n this.openHandlers.delete(handler);\n };\n }\n\n onClose(handler: () => void): Unsubscribe {\n this.closeHandlers.add(handler);\n return () => {\n this.closeHandlers.delete(handler);\n };\n }\n\n onError(handler: (error: Error) => void): Unsubscribe {\n this.errorHandlers.add(handler);\n return () => {\n this.errorHandlers.delete(handler);\n };\n }\n\n close(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n dispose(): void {\n this.close();\n this.messageHandlers.clear();\n this.openHandlers.clear();\n this.closeHandlers.clear();\n this.errorHandlers.clear();\n }\n}\n\n/**\n * Browser WebSocket Client with auto-reconnect\n */\nexport class BrowserWebSocketClient implements ChannelClient {\n private ws: WebSocket | null = null;\n private serverUrl: string;\n private options: ChannelClientOptions;\n private messageHandlers = new Set<(message: string) => void>();\n private openHandlers = new Set<() => void>();\n private closeHandlers = new Set<() => void>();\n private errorHandlers = new Set<(error: Error) => void>();\n private hasConnectedBefore = false; // Track if this is a reconnection\n\n constructor(options: ChannelClientOptions) {\n if (!isBrowser) {\n throw new Error(\"BrowserWebSocketClient can only be used in browser environment\");\n }\n\n this.serverUrl = options.serverUrl;\n this.options = {\n autoReconnect: true,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 10000,\n maxRetries: Infinity,\n connectionTimeout: 4000,\n debug: false,\n ...options,\n };\n }\n\n get readyState(): \"connecting\" | \"open\" | \"closing\" | \"closed\" {\n if (!this.ws) return \"closed\";\n const state = this.ws.readyState;\n if (state === 0) return \"connecting\";\n if (state === 1) return \"open\";\n if (state === 2) return \"closing\";\n return \"closed\";\n }\n\n async connect(): Promise<void> {\n if (this.ws) {\n throw new Error(\"Already connected or connecting\");\n }\n\n // Resolve headers before creating WebSocket (if any)\n let resolvedHeaders: Record<string, string> | undefined;\n if (this.options.headers) {\n if (typeof this.options.headers === \"function\") {\n resolvedHeaders = await Promise.resolve(this.options.headers());\n } else {\n resolvedHeaders = this.options.headers;\n }\n }\n\n logger.debug(\"Connecting to WebSocket\", {\n serverUrl: this.serverUrl,\n autoReconnect: this.options.autoReconnect,\n connectionTimeout: this.options.connectionTimeout,\n });\n\n if (this.options.autoReconnect) {\n // Use reconnecting-websocket for auto-reconnect\n const ReconnectingWebSocket = (await import(\"reconnecting-websocket\")).default;\n logger.debug(\"Using ReconnectingWebSocket\");\n this.ws = new ReconnectingWebSocket(this.serverUrl, [], {\n maxReconnectionDelay: this.options.maxReconnectionDelay,\n minReconnectionDelay: this.options.minReconnectionDelay,\n reconnectionDelayGrowFactor: 1.3,\n connectionTimeout: this.options.connectionTimeout,\n maxRetries: this.options.maxRetries,\n debug: this.options.debug,\n });\n } else {\n // Use native WebSocket\n logger.debug(\"Using native WebSocket\");\n this.ws = new WebSocket(this.serverUrl);\n }\n\n return new Promise<void>((resolve, reject) => {\n const onOpen = async () => {\n if (this.hasConnectedBefore) {\n logger.info(\"WebSocket reconnected successfully\", { serverUrl: this.serverUrl });\n } else {\n logger.info(\"WebSocket connected\", { serverUrl: this.serverUrl });\n this.hasConnectedBefore = true;\n }\n\n // Browser WebSocket API doesn't support custom headers in handshake\n // Send authentication message as first message instead\n if (resolvedHeaders && Object.keys(resolvedHeaders).length > 0) {\n try {\n const authMessage = JSON.stringify({\n type: \"auth\",\n headers: resolvedHeaders,\n });\n this.ws!.send(authMessage);\n logger.info(\"Sent authentication message to server\");\n } catch (error) {\n logger.error(\"Failed to send authentication message\", { error });\n }\n }\n\n for (const handler of this.openHandlers) {\n handler();\n }\n resolve();\n };\n\n const onError = (_event: Event) => {\n logger.error(\"WebSocket connection failed\", { serverUrl: this.serverUrl });\n const error = new Error(\"WebSocket connection failed\");\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n reject(error);\n };\n\n this.ws!.addEventListener(\"open\", onOpen as any, { once: true });\n this.ws!.addEventListener(\"error\", onError as any, { once: true });\n\n // Setup permanent handlers\n this.ws!.addEventListener(\"message\", ((event: any) => {\n const message = event.data;\n for (const handler of this.messageHandlers) {\n handler(message);\n }\n }) as any);\n\n this.ws!.addEventListener(\"close\", (() => {\n logger.info(\"WebSocket closed, attempting to reconnect...\");\n for (const handler of this.closeHandlers) {\n handler();\n }\n }) as any);\n\n this.ws!.addEventListener(\"error\", ((_event: Event) => {\n logger.error(\"WebSocket error\");\n const error = new Error(\"WebSocket error\");\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n }) as any);\n });\n }\n\n send(message: string): void {\n if (!this.ws || this.ws.readyState !== 1) {\n throw new Error(\"WebSocket is not open\");\n }\n this.ws.send(message);\n }\n\n onMessage(handler: (message: string) => void): Unsubscribe {\n this.messageHandlers.add(handler);\n return () => {\n this.messageHandlers.delete(handler);\n };\n }\n\n onOpen(handler: () => void): Unsubscribe {\n this.openHandlers.add(handler);\n return () => {\n this.openHandlers.delete(handler);\n };\n }\n\n onClose(handler: () => void): Unsubscribe {\n this.closeHandlers.add(handler);\n return () => {\n this.closeHandlers.delete(handler);\n };\n }\n\n onError(handler: (error: Error) => void): Unsubscribe {\n this.errorHandlers.add(handler);\n return () => {\n this.errorHandlers.delete(handler);\n };\n }\n\n close(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n dispose(): void {\n this.close();\n this.messageHandlers.clear();\n this.openHandlers.clear();\n this.closeHandlers.clear();\n this.errorHandlers.clear();\n }\n}\n\n/**\n * Factory function to create the appropriate WebSocket client\n */\nexport async function createWebSocketClient(options: ChannelClientOptions): Promise<ChannelClient> {\n if (isBrowser) {\n const client = new BrowserWebSocketClient(options);\n await client.connect();\n return client;\n } else {\n const client = new WebSocketClient(options);\n await client.connect();\n return client;\n }\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "A86BECFEEAD30A2564756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "11069204D1FF528964756E2164756E21",
10
10
  "names": []
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentxjs/network",
3
- "version": "1.6.0",
3
+ "version": "1.8.0",
4
4
  "description": "Network layer abstraction for AgentX platform - WebSocket client/server with heartbeat and auto-reconnect",
5
5
  "keywords": [
6
6
  "agentx",
@@ -38,8 +38,8 @@
38
38
  "clean": "rm -rf dist"
39
39
  },
40
40
  "dependencies": {
41
- "@agentxjs/common": "^1.6.0",
42
- "@agentxjs/types": "^1.6.0",
41
+ "@agentxjs/common": "^1.8.0",
42
+ "@agentxjs/types": "^1.8.0",
43
43
  "reconnecting-websocket": "^4.4.0",
44
44
  "ws": "^8.18.0"
45
45
  },