agentxjs 1.4.0 → 1.5.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.js.map CHANGED
@@ -1 +1,12 @@
1
- {"version":3,"sources":["../src/createLocalAgentX.ts","../src/createAgentX.ts","../src/index.ts"],"names":["LoggerFactoryImpl","setLoggerFactory","createLogger","createLocalAgentX"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,IAAA,yBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,yBAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAcA,eAAsB,kBAAkB,MAAA,EAAsC;AAE5E,EAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,IAAA,MAAM,EAAE,mBAAAA,kBAAAA,EAAmB,gBAAA,EAAAC,mBAAiB,GAAI,MAAM,OAAO,kBAAkB,CAAA;AAE/E,IAAAD,mBAAkB,SAAA,CAAU;AAAA,MAC1B,YAAA,EAAc,OAAO,MAAA,CAAO,KAAA;AAAA,MAC5B,cAAA,EAAgB,OAAO,MAAA,CAAO;AAAA,KAC/B,CAAA;AAED,IAAA,IAAI,MAAA,CAAO,OAAO,OAAA,EAAS;AACzB,MAAAC,iBAAAA,CAAiB,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA;AAAA,IACxC;AAAA,EACF;AAGA,EAAA,MAAM,EAAE,aAAA,EAAe,iBAAA,EAAkB,GAAI,MAAM,OAAO,mBAAmB,CAAA;AAC7E,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,OAAO,IAAS,CAAA;AAC1C,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,MAAW,CAAA;AAGzC,EAAA,MAAM,WAAW,MAAA,CAAO,SAAA,IAAa,IAAA,CAAK,OAAA,IAAW,SAAS,CAAA;AAG9D,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,QAAA,EAAU,MAAA,EAAQ,WAAW,CAAA;AACtD,EAAA,MAAM,WAAA,GAAc,MAAM,iBAAA,CAAkB;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACP,CAAA;AAED,EAAA,MAAM,UAAU,aAAA,CAAc;AAAA,IAC5B,WAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,SAAS,OAAO;AAAA,QACd,MAAA,EAAQ,MAAA,CAAO,GAAA,EAAK,MAAA,IAAU,EAAA;AAAA,QAC9B,OAAA,EAAS,OAAO,GAAA,EAAK,OAAA;AAAA,QACrB,KAAA,EAAO,OAAO,GAAA,EAAK;AAAA,OACrB;AAAA,KACF;AAAA,IACA,cAAc,MAAA,CAAO;AAAA,GACtB,CAAA;AAGD,EAAA,MAAM,QAAA,GAAW,IAAI,eAAA,CAAgB;AAAA,IACnC,SAAA,EAAW,IAAA;AAAA,IACX,iBAAA,EAAmB,GAAA;AAAA,IACnB,KAAA,EAAO;AAAA,GACR,CAAA;AAGD,EAAA,QAAA,CAAS,YAAA,CAAa,CAAC,UAAA,KAAe;AAEpC,IAAA,UAAA,CAAW,SAAA,CAAU,CAAC,OAAA,KAAY;AAChC,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAChC,QAAA,MAAA,CAAO,MAAM,yBAAA,EAA2B;AAAA,UACtC,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,UAAU,KAAA,CAAM;AAAA,SACjB,CAAA;AACD,QAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,MACpB,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAGD,EAAA,OAAA,CAAQ,KAAA,CAAM,CAAC,KAAA,KAAU;AAEvB,IAAA,IAAK,KAAA,CAAc,kBAAkB,KAAA,EAAO;AAC1C,MAAA;AAAA,IACF;AAGA,IAAA,MAAA,CAAO,MAAM,oBAAA,EAAsB;AAAA,MACjC,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,MAAM,KAAA,CAAM;AAAA,KACb,CAAA;AAED,IAAA,QAAA,CAAS,SAAA,CAAU,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,EAC1C,CAAC,CAAA;AAGD,EAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,IAAA,QAAA,CAAS,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,KAAK,CAAA;AAAA,EACtC;AAEA,EAAA,OAAO;AAAA;AAAA,IAEL,OAAA,EAAS,CAAC,IAAA,EAAM,IAAA,EAAM,YAAY,OAAA,CAAQ,OAAA,CAAQ,IAAA,EAAM,IAAA,EAAM,OAAO,CAAA;AAAA,IAErE,IAAI,CAAC,IAAA,EAAM,YAAY,OAAA,CAAQ,EAAA,CAAG,MAAM,OAAO,CAAA;AAAA,IAE/C,WAAW,CAAC,IAAA,EAAM,YAAY,OAAA,CAAQ,SAAA,CAAU,MAAM,OAAO,CAAA;AAAA,IAE7D,aAAa,CAAC,IAAA,EAAM,SAAS,OAAA,CAAQ,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA;AAAA,IAG3D,MAAM,MAAA,CAAO,IAAA,EAAc,IAAA,EAAe;AACxC,MAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,QAAA,CAAS,MAAA,CAAO,IAAA,EAAM,IAAI,CAAA;AAAA,IAClC,CAAA;AAAA,IAEA,MAAM,KAAA,GAAQ;AACZ,MAAA,MAAM,SAAS,KAAA,EAAM;AAAA,IACvB,CAAA;AAAA,IAEA,MAAM,OAAA,GAAU;AACd,MAAA,MAAM,SAAS,OAAA,EAAQ;AACvB,MAAA,MAAM,QAAQ,OAAA,EAAQ;AAAA,IACxB;AAAA,GACF;AACF;AAvIA,IAYM,MAAA;AAZN,IAAA,sBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0BAAA,GAAA;AAYA,IAAM,MAAA,GAAS,aAAa,oBAAoB,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACUhD,IAAM,YAAA,GAAeC,aAAa,qBAAqB,CAAA;AAiBvD,eAAsB,aAAa,MAAA,EAAwC;AACzE,EAAA,IAAI,MAAA,IAAU,cAAA,CAAe,MAAM,CAAA,EAAG;AACpC,IAAA,OAAO,kBAAA,CAAmB,OAAO,SAAS,CAAA;AAAA,EAC5C;AAGA,EAAA,MAAM,EAAE,iBAAA,EAAAC,kBAAAA,EAAkB,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,sBAAA,EAAA,EAAA,yBAAA,CAAA,CAAA;AACpC,EAAA,OAAOA,kBAAAA,CAAkB,MAAA,IAAU,EAAE,CAAA;AACvC;AAeA,eAAsB,mBAAmB,SAAA,EAAoC;AAE3E,EAAA,MAAM,EAAE,qBAAA,EAAsB,GAAI,MAAM,OAAO,mBAAmB,CAAA;AAElE,EAAA,MAAM,MAAA,GAAS,MAAM,qBAAA,CAAsB;AAAA,IACzC,SAAA;AAAA,IACA,aAAA,EAAe,IAAA;AAAA,IACf,oBAAA,EAAsB,GAAA;AAAA,IACtB,oBAAA,EAAsB,GAAA;AAAA,IACtB,iBAAA,EAAmB,GAAA;AAAA,IACnB,UAAA,EAAY,QAAA;AAAA,IACZ,KAAA,EAAO;AAAA,GACR,CAAA;AAED,EAAA,MAAM,QAAA,uBAAe,GAAA,EAA+C;AACpE,EAAA,MAAM,eAAA,uBAAsB,GAAA,EAO1B;AAGF,EAAA,MAAA,CAAO,SAAA,CAAU,CAAC,OAAA,KAAoB;AACpC,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAEhC,MAAA,YAAA,CAAa,KAAK,gBAAA,EAAkB;AAAA,QAClC,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,SAAA,EAAY,MAAM,IAAA,EAAc;AAAA,OACjC,CAAA;AAGD,MAAA,IAAI,KAAA,CAAM,SAAS,cAAA,EAAgB;AACjC,QAAA,MAAM,YAAY,KAAA,CAAM,IAAA;AACxB,QAAA,YAAA,CAAa,KAAA,CAAM,UAAU,OAAA,EAAS;AAAA,UACpC,UAAU,SAAA,CAAU,QAAA;AAAA,UACpB,SAAA,EAAY,MAAM,IAAA,EAAc,SAAA;AAAA,UAChC,SAAS,SAAA,CAAU;AAAA,SACpB,CAAA;AAAA,MAEH;AAGA,MAAA,MAAM,SAAA,GAAa,MAAM,IAAA,EAAiC,SAAA;AAC1D,MAAA,IAAI,MAAM,QAAA,KAAa,UAAA,IAAc,aAAa,eAAA,CAAgB,GAAA,CAAI,SAAS,CAAA,EAAG;AAChF,QAAA,YAAA,CAAa,KAAK,2BAAA,EAA6B,EAAE,WAAW,SAAA,EAAW,KAAA,CAAM,MAAM,CAAA;AACnF,QAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,GAAA,CAAI,SAAS,CAAA;AAC7C,QAAA,YAAA,CAAa,QAAQ,KAAK,CAAA;AAC1B,QAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AAChC,QAAA,OAAA,CAAQ,QAAQ,KAAK,CAAA;AACrB,QAAA;AAAA,MACF;AAEA,MAAA,YAAA,CAAa,KAAK,yBAAA,EAA2B,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA;AAGjE,MAAA,MAAM,YAAA,GAAe,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA;AAC5C,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,KAAA,MAAW,WAAW,YAAA,EAAc;AAClC,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,QACf;AAAA,MACF;AAGA,MAAA,MAAM,WAAA,GAAc,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA;AACpC,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,KAAA,MAAW,WAAW,WAAA,EAAa;AACjC,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,QACf;AAAA,MACF;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,CAAC,CAAA;AAGD,EAAA,MAAA,CAAO,QAAQ,MAAM;AACnB,IAAA,YAAA,CAAa,KAAK,kBAAkB,CAAA;AAAA,EACtC,CAAC,CAAA;AAED,EAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,KAAiB;AAC/B,IAAA,YAAA,CAAa,MAAM,iBAAA,EAAmB,EAAE,KAAA,EAAO,KAAA,CAAM,SAAS,CAAA;AAAA,EAChE,CAAC,CAAA;AAED,EAAA,SAAS,SAAA,CAAU,MAAc,OAAA,EAAoD;AACnF,IAAA,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAG;AACvB,MAAA,QAAA,CAAS,GAAA,CAAI,IAAA,kBAAM,IAAI,GAAA,EAAK,CAAA;AAAA,IAC9B;AACA,IAAA,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,CAAG,GAAA,CAAI,OAAO,CAAA;AAC/B,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAG,MAAA,CAAO,OAAO,CAAA;AAAA,IACpC,CAAA;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,OAAA,CACE,IAAA,EACA,IAAA,EACA,OAAA,GAAkB,GAAA,EACY;AAC9B,MAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,QAAA,MAAM,SAAA,GAAY,CAAA,IAAA,EAAO,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,EAAO,CAAE,SAAS,EAAE,CAAA,CAAE,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAEjF,QAAA,MAAM,KAAA,GAAQ,WAAW,MAAM;AAC7B,UAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AAChC,UAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,IAAI,EAAE,CAAC,CAAA;AAAA,QAC9C,GAAG,OAAO,CAAA;AAEV,QAAA,eAAA,CAAgB,IAAI,SAAA,EAAW;AAAA,UAC7B,OAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,MAAM,KAAA,GAAqB;AAAA,UACzB,IAAA;AAAA,UACA,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,UACpB,IAAA,EAAM,EAAE,GAAG,IAAA,EAAM,SAAA,EAAU;AAAA,UAC3B,MAAA,EAAQ,SAAA;AAAA,UACR,QAAA,EAAU,SAAA;AAAA,UACV,MAAA,EAAQ;AAAA,SACV;AAEA,QAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,MACnC,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IAEA,EAAA,CACE,MACA,OAAA,EACa;AACb,MAAA,OAAO,SAAA,CAAU,MAAM,OAAuC,CAAA;AAAA,IAChE,CAAA;AAAA,IAEA,SAAA,CACE,MACA,OAAA,EACa;AACb,MAAA,OAAO,SAAA,CAAU,MAAM,OAAuC,CAAA;AAAA,IAChE,CAAA;AAAA,IAEA,WAAA,CAA6C,MAAS,IAAA,EAAwC;AAC5F,MAAA,MAAM,KAAA,GAAqB;AAAA,QACzB,IAAA;AAAA,QACA,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,QACpB,IAAA;AAAA,QACA,MAAA,EAAQ,SAAA;AAAA,QACR,UAAU,IAAA,CAAK,QAAA,GAAW,QAAA,CAAS,WAAW,IAAI,UAAA,GAAa,SAAA;AAAA,QAC/D,QAAQ,IAAA,CAAK,QAAA,GAAW,QAAA,CAAS,WAAW,IAAI,QAAA,GAAW;AAAA,OAC7D;AACA,MAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,IACnC,CAAA;AAAA,IAEA,MAAM,MAAA,GAAS;AACb,MAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA,IAChD,CAAA;AAAA,IAEA,MAAM,KAAA,GAAQ;AAAA,IAEd,CAAA;AAAA,IAEA,MAAM,OAAA,GAAU;AACd,MAAA,KAAA,MAAW,OAAA,IAAW,eAAA,CAAgB,MAAA,EAAO,EAAG;AAC9C,QAAA,YAAA,CAAa,QAAQ,KAAK,CAAA;AAC1B,QAAA,OAAA,CAAQ,MAAA,CAAO,IAAI,KAAA,CAAM,iBAAiB,CAAC,CAAA;AAAA,MAC7C;AACA,MAAA,eAAA,CAAgB,KAAA,EAAM;AACtB,MAAA,QAAA,CAAS,KAAA,EAAM;AACf,MAAA,MAAA,CAAO,OAAA,EAAQ;AAAA,IACjB;AAAA,GACF;AACF;AClKO,SAAS,YAAuC,UAAA,EAAkB;AACvE,EAAA,OAAO,UAAA;AACT","file":"index.js","sourcesContent":["/**\n * createLocalAgentX - Local mode implementation\n *\n * This file is dynamically imported to enable tree-shaking in browser builds.\n * Contains Node.js specific code (runtime, WebSocket server).\n */\n\nimport type { AgentX, LocalConfig } from \"@agentxjs/types/agentx\";\nimport type { SystemEvent } from \"@agentxjs/types/event\";\nimport { WebSocketServer } from \"@agentxjs/network\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"agentx/LocalAgentX\");\n\nexport async function createLocalAgentX(config: LocalConfig): Promise<AgentX> {\n // Apply logger configuration\n if (config.logger) {\n const { LoggerFactoryImpl, setLoggerFactory } = await import(\"@agentxjs/common\");\n\n LoggerFactoryImpl.configure({\n defaultLevel: config.logger.level,\n consoleOptions: config.logger.console,\n });\n\n if (config.logger.factory) {\n setLoggerFactory(config.logger.factory);\n }\n }\n\n // Dynamic import to avoid bundling runtime in browser\n const { createRuntime, createPersistence } = await import(\"@agentxjs/runtime\");\n const { homedir } = await import(\"node:os\");\n const { join } = await import(\"node:path\");\n\n // Determine base path for runtime data\n const basePath = config.agentxDir ?? join(homedir(), \".agentx\");\n\n // Auto-configure storage: SQLite at {agentxDir}/data/agentx.db\n const storagePath = join(basePath, \"data\", \"agentx.db\");\n const persistence = await createPersistence({\n driver: \"sqlite\",\n path: storagePath,\n });\n\n const runtime = createRuntime({\n persistence,\n basePath,\n llmProvider: {\n name: \"claude\",\n provide: () => ({\n apiKey: config.llm?.apiKey ?? \"\",\n baseUrl: config.llm?.baseUrl,\n model: config.llm?.model,\n }),\n },\n defaultAgent: config.defaultAgent,\n });\n\n // Create WebSocket server\n const wsServer = new WebSocketServer({\n heartbeat: true,\n heartbeatInterval: 30000,\n debug: false,\n });\n\n // Handle new connections\n wsServer.onConnection((connection) => {\n // Forward client messages to runtime\n connection.onMessage((message) => {\n try {\n const event = JSON.parse(message) as SystemEvent;\n logger.debug(\"Received client message\", {\n type: event.type,\n category: event.category,\n });\n runtime.emit(event);\n } catch {\n // Ignore parse errors\n }\n });\n });\n\n // Broadcast runtime events to all connected clients\n runtime.onAny((event) => {\n // Skip non-broadcastable events (internal events like DriveableEvent)\n if ((event as any).broadcastable === false) {\n return;\n }\n\n // Log event for debugging\n logger.debug(\"Broadcasting event\", {\n type: event.type,\n category: event.category,\n source: event.source,\n context: event.context,\n data: event.data,\n });\n\n wsServer.broadcast(JSON.stringify(event));\n });\n\n // If server is provided, attach WebSocket to it immediately\n if (config.server) {\n wsServer.attach(config.server, \"/ws\");\n }\n\n return {\n // Core API - delegate to runtime\n request: (type, data, timeout) => runtime.request(type, data, timeout),\n\n on: (type, handler) => runtime.on(type, handler),\n\n onCommand: (type, handler) => runtime.onCommand(type, handler),\n\n emitCommand: (type, data) => runtime.emitCommand(type, data),\n\n // Server API\n async listen(port: number, host?: string) {\n if (config.server) {\n throw new Error(\n \"Cannot listen when attached to existing server. The server should call listen() instead.\"\n );\n }\n await wsServer.listen(port, host);\n },\n\n async close() {\n await wsServer.close();\n },\n\n async dispose() {\n await wsServer.dispose();\n await runtime.dispose();\n },\n };\n}\n","/**\n * createAgentX - Factory function for creating AgentX instances\n *\n * Supports two modes:\n * - Local mode: Uses Runtime directly (Claude API) - Node.js only\n * - Remote mode: Connects to AgentX server via WebSocket - Browser & Node.js\n *\n * Local mode implementation is dynamically imported to enable tree-shaking\n * in browser builds.\n */\n\nimport type { AgentX, AgentXConfig, Unsubscribe } from \"@agentxjs/types/agentx\";\nimport { isRemoteConfig } from \"@agentxjs/types/agentx\";\nimport type {\n CommandEventMap,\n CommandRequestType,\n ResponseEventFor,\n RequestDataFor,\n SystemEvent,\n} from \"@agentxjs/types/event\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst remoteLogger = createLogger(\"agentx/RemoteClient\");\n\n/**\n * Create AgentX instance\n *\n * @param config - Configuration (LocalConfig or RemoteConfig)\n * @returns AgentX instance\n *\n * @example\n * ```typescript\n * // Remote mode (browser & Node.js)\n * const agentx = await createAgentX({ serverUrl: \"ws://localhost:5200\" });\n *\n * // Local mode (Node.js only)\n * const agentx = await createAgentX({ llm: { apiKey: \"sk-...\" } });\n * ```\n */\nexport async function createAgentX(config?: AgentXConfig): Promise<AgentX> {\n if (config && isRemoteConfig(config)) {\n return createRemoteAgentX(config.serverUrl);\n }\n\n // Dynamic import for tree-shaking in browser builds\n const { createLocalAgentX } = await import(\"./createLocalAgentX\");\n return createLocalAgentX(config ?? {});\n}\n\n// ============================================================================\n// Remote Mode Implementation (Browser & Node.js compatible)\n// ============================================================================\n\n/**\n * Create AgentX instance in remote mode\n *\n * Connects to an AgentX server via WebSocket.\n * Works in both browser and Node.js environments.\n *\n * @param serverUrl - WebSocket server URL\n * @returns AgentX instance\n */\nexport async function createRemoteAgentX(serverUrl: string): Promise<AgentX> {\n // Use @agentxjs/network for WebSocket client (handles browser/Node.js differences)\n const { createWebSocketClient } = await import(\"@agentxjs/network\");\n\n const client = await createWebSocketClient({\n serverUrl,\n autoReconnect: true,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 10000,\n connectionTimeout: 4000,\n maxRetries: Infinity,\n debug: false,\n });\n\n const handlers = new Map<string, Set<(event: SystemEvent) => void>>();\n const pendingRequests = new Map<\n string,\n {\n resolve: (event: SystemEvent) => void;\n reject: (err: Error) => void;\n timer: ReturnType<typeof setTimeout>;\n }\n >();\n\n // Handle incoming messages\n client.onMessage((message: string) => {\n try {\n const event = JSON.parse(message) as SystemEvent;\n\n remoteLogger.info(\"Received event\", {\n type: event.type,\n category: event.category,\n requestId: (event.data as any)?.requestId,\n });\n\n // Handle error events - log as error (but still dispatch to handlers)\n if (event.type === \"system_error\") {\n const errorData = event.data as { message: string; severity?: string; details?: unknown };\n remoteLogger.error(errorData.message, {\n severity: errorData.severity,\n requestId: (event.data as any)?.requestId,\n details: errorData.details,\n });\n // Continue to dispatch to handlers (don't return here)\n }\n\n // Check if it's a response to a pending request\n const requestId = (event.data as { requestId?: string })?.requestId;\n if (event.category === \"response\" && requestId && pendingRequests.has(requestId)) {\n remoteLogger.info(\"Resolving pending request\", { requestId, eventType: event.type });\n const pending = pendingRequests.get(requestId)!;\n clearTimeout(pending.timer);\n pendingRequests.delete(requestId);\n pending.resolve(event);\n return;\n }\n\n remoteLogger.info(\"Dispatching to handlers\", { type: event.type });\n\n // Dispatch to handlers\n const typeHandlers = handlers.get(event.type);\n if (typeHandlers) {\n for (const handler of typeHandlers) {\n handler(event);\n }\n }\n\n // Dispatch to \"*\" handlers\n const allHandlers = handlers.get(\"*\");\n if (allHandlers) {\n for (const handler of allHandlers) {\n handler(event);\n }\n }\n } catch {\n // Ignore parse errors\n }\n });\n\n // Handle connection events\n client.onClose(() => {\n remoteLogger.warn(\"WebSocket closed\");\n });\n\n client.onError((error: Error) => {\n remoteLogger.error(\"WebSocket error\", { error: error.message });\n });\n\n function subscribe(type: string, handler: (event: SystemEvent) => void): Unsubscribe {\n if (!handlers.has(type)) {\n handlers.set(type, new Set());\n }\n handlers.get(type)!.add(handler);\n return () => {\n handlers.get(type)?.delete(handler);\n };\n }\n\n return {\n request<T extends CommandRequestType>(\n type: T,\n data: RequestDataFor<T>,\n timeout: number = 30000\n ): Promise<ResponseEventFor<T>> {\n return new Promise((resolve, reject) => {\n const requestId = `req_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;\n\n const timer = setTimeout(() => {\n pendingRequests.delete(requestId);\n reject(new Error(`Request timeout: ${type}`));\n }, timeout);\n\n pendingRequests.set(requestId, {\n resolve: resolve as (event: SystemEvent) => void,\n reject,\n timer,\n });\n\n const event: SystemEvent = {\n type,\n timestamp: Date.now(),\n data: { ...data, requestId },\n source: \"command\",\n category: \"request\",\n intent: \"request\",\n };\n\n client.send(JSON.stringify(event));\n });\n },\n\n on<T extends string>(\n type: T,\n handler: (event: SystemEvent & { type: T }) => void\n ): Unsubscribe {\n return subscribe(type, handler as (event: SystemEvent) => void);\n },\n\n onCommand<T extends keyof CommandEventMap>(\n type: T,\n handler: (event: CommandEventMap[T]) => void\n ): Unsubscribe {\n return subscribe(type, handler as (event: SystemEvent) => void);\n },\n\n emitCommand<T extends keyof CommandEventMap>(type: T, data: CommandEventMap[T][\"data\"]): void {\n const event: SystemEvent = {\n type,\n timestamp: Date.now(),\n data,\n source: \"command\",\n category: type.toString().endsWith(\"_response\") ? \"response\" : \"request\",\n intent: type.toString().endsWith(\"_response\") ? \"result\" : \"request\",\n };\n client.send(JSON.stringify(event));\n },\n\n async listen() {\n throw new Error(\"Cannot listen in remote mode\");\n },\n\n async close() {\n // No-op in remote mode\n },\n\n async dispose() {\n for (const pending of pendingRequests.values()) {\n clearTimeout(pending.timer);\n pending.reject(new Error(\"AgentX disposed\"));\n }\n pendingRequests.clear();\n handlers.clear();\n client.dispose();\n },\n };\n}\n","/**\n * agentxjs - Unified API for AI Agents\n *\n * All public types and functions are exported from this single entry point.\n * Users only need: `import { ... } from \"agentxjs\"`\n *\n * @example\n * ```typescript\n * import { createAgentX, type AgentX, type SystemEvent } from \"agentxjs\";\n *\n * // Local mode\n * const agentx = await createAgentX();\n *\n * // Remote mode\n * const agentx = await createAgentX({ server: \"ws://localhost:5200\" });\n *\n * // Same API for both modes!\n * const res = await agentx.request(\"container_create_request\", {\n * containerId: \"my-container\"\n * });\n *\n * agentx.on(\"text_delta\", (e) => console.log(e.data.text));\n * ```\n *\n * @packageDocumentation\n */\n\n// ============================================================================\n// Factory\n// ============================================================================\n\nexport { createAgentX, createRemoteAgentX } from \"./createAgentX\";\n\n// ============================================================================\n// Core Types - AgentX API\n// ============================================================================\n\nexport type {\n AgentX,\n AgentXConfig,\n LocalConfig,\n RemoteConfig,\n LLMConfig,\n StorageConfig,\n StorageDriver,\n Unsubscribe,\n AgentDefinition,\n} from \"@agentxjs/types/agentx\";\n\nexport { isLocalConfig, isRemoteConfig } from \"@agentxjs/types/agentx\";\n\n// ============================================================================\n// defineAgent - Implementation\n// ============================================================================\n\nimport type { AgentDefinition } from \"@agentxjs/types/agentx\";\n\n/**\n * Define an Agent with type safety\n *\n * Helper function that provides type inference for AgentDefinition.\n *\n * @example\n * ```typescript\n * import { defineAgent } from \"agentxjs\";\n *\n * export const MyAgent = defineAgent({\n * name: \"MyAgent\",\n * systemPrompt: \"You are helpful.\",\n * mcpServers: {\n * filesystem: { command: \"npx\", args: [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/tmp\"] }\n * }\n * });\n * ```\n */\nexport function defineAgent<T extends AgentDefinition>(definition: T): T {\n return definition;\n}\n\n// ============================================================================\n// Event Types - SystemEvent and all event categories\n// ============================================================================\n\n// Base event\nexport type {\n SystemEvent,\n EventSource,\n EventCategory,\n EventIntent,\n EventContext,\n} from \"@agentxjs/types/event\";\n\nexport {\n isFromSource,\n hasIntent,\n isRequest,\n isResult,\n isNotification,\n} from \"@agentxjs/types/event\";\n\n// Command events (request/response)\nexport type {\n CommandEvent,\n CommandRequest,\n CommandResponse,\n CommandEventType,\n CommandRequestType,\n CommandEventMap,\n // Container commands\n ContainerCreateRequest,\n ContainerCreateResponse,\n ContainerGetRequest,\n ContainerGetResponse,\n ContainerListRequest,\n ContainerListResponse,\n // Agent commands\n AgentGetRequest,\n AgentGetResponse,\n AgentListRequest,\n AgentListResponse,\n AgentDestroyRequest,\n AgentDestroyResponse,\n MessageSendRequest,\n MessageSendResponse,\n AgentInterruptRequest,\n AgentInterruptResponse,\n // Image commands\n ImageCreateRequest,\n ImageCreateResponse,\n ImageRunRequest,\n ImageRunResponse,\n ImageStopRequest,\n ImageStopResponse,\n ImageUpdateRequest,\n ImageUpdateResponse,\n ImageListRequest,\n ImageListResponse,\n ImageListItem,\n ImageGetRequest,\n ImageGetResponse,\n ImageDeleteRequest,\n ImageDeleteResponse,\n} from \"@agentxjs/types/event\";\n\nexport { isCommandEvent, isCommandRequest, isCommandResponse } from \"@agentxjs/types/event\";\n\n// Agent events (stream/state/message/turn)\nexport type {\n AgentEvent,\n AgentEventCategory,\n // Stream events\n AgentStreamEvent,\n AgentTextDeltaEvent,\n AgentMessageStartEvent,\n AgentMessageStopEvent,\n AgentToolUseStartEvent,\n AgentToolUseStopEvent,\n AgentToolResultEvent,\n // State events\n AgentStateEvent,\n ConversationStartEvent,\n ConversationEndEvent,\n ConversationThinkingEvent,\n ConversationRespondingEvent,\n ToolExecutingEvent,\n ToolCompletedEvent,\n ErrorOccurredEvent,\n // Message events\n AgentMessageEvent,\n UserMessageEvent,\n AssistantMessageEvent,\n ToolCallMessageEvent,\n ToolResultMessageEvent,\n // Turn events\n AgentTurnEvent,\n TurnRequestEvent,\n TurnResponseEvent,\n TokenUsage,\n} from \"@agentxjs/types/event\";\n\nexport {\n isAgentEvent,\n isAgentStreamEvent,\n isAgentStateEvent,\n isAgentMessageEvent,\n isAgentTurnEvent,\n} from \"@agentxjs/types/event\";\n\n// ============================================================================\n// Data Types - Records and Messages\n// ============================================================================\n\n// Image record (for persistence)\nexport type { ImageRecord } from \"@agentxjs/types\";\n\n// Message types (for UI components)\nexport type {\n Message,\n MessageRole,\n MessageSubtype,\n UserMessage,\n AssistantMessage,\n ToolCallMessage,\n ToolResultMessage,\n ErrorMessage,\n AgentError,\n AgentState,\n ContentPart,\n UserContentPart,\n TextPart,\n ThinkingPart,\n ImagePart,\n FilePart,\n ToolCallPart,\n ToolResultPart,\n ToolResultOutput,\n} from \"@agentxjs/types/agent\";\n\n// ============================================================================\n// Logger - from @agentxjs/common\n// ============================================================================\n\nexport { createLogger, ConsoleLogger, LoggerFactoryImpl, setLoggerFactory } from \"@agentxjs/common\";\n\nexport type {\n Logger,\n LoggerFactory,\n LogContext,\n LogLevel,\n ConsoleLoggerOptions,\n LoggerFactoryConfig,\n} from \"@agentxjs/common\";\n"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/createLocalAgentX.ts", "../src/createAgentX.ts", "../src/index.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * createLocalAgentX - Local mode implementation\n *\n * This file is dynamically imported to enable tree-shaking in browser builds.\n * Contains Node.js specific code (runtime, WebSocket server).\n */\n\nimport type { AgentX, LocalConfig } from \"@agentxjs/types/agentx\";\nimport type { SystemEvent } from \"@agentxjs/types/event\";\nimport { WebSocketServer } from \"@agentxjs/network\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"agentx/LocalAgentX\");\n\nexport async function createLocalAgentX(config: LocalConfig): Promise<AgentX> {\n // Apply logger configuration\n if (config.logger) {\n const { LoggerFactoryImpl, setLoggerFactory } = await import(\"@agentxjs/common\");\n\n LoggerFactoryImpl.configure({\n defaultLevel: config.logger.level,\n consoleOptions: config.logger.console,\n });\n\n if (config.logger.factory) {\n setLoggerFactory(config.logger.factory);\n }\n }\n\n // Dynamic import to avoid bundling runtime in browser\n const { createRuntime, createPersistence } = await import(\"@agentxjs/runtime\");\n const { homedir } = await import(\"node:os\");\n const { join } = await import(\"node:path\");\n\n // Determine base path for runtime data\n const basePath = config.agentxDir ?? join(homedir(), \".agentx\");\n\n // Auto-configure storage: SQLite at {agentxDir}/data/agentx.db\n const storagePath = join(basePath, \"data\", \"agentx.db\");\n const persistence = await createPersistence({\n driver: \"sqlite\",\n path: storagePath,\n });\n\n const runtime = createRuntime({\n persistence,\n basePath,\n llmProvider: {\n name: \"claude\",\n provide: () => ({\n apiKey: config.llm?.apiKey ?? \"\",\n baseUrl: config.llm?.baseUrl,\n model: config.llm?.model,\n }),\n },\n defaultAgent: config.defaultAgent,\n });\n\n // Create WebSocket server\n const wsServer = new WebSocketServer({\n heartbeat: true,\n heartbeatInterval: 30000,\n debug: false,\n });\n\n // Handle new connections\n wsServer.onConnection((connection) => {\n // Forward client messages to runtime\n connection.onMessage((message) => {\n try {\n const event = JSON.parse(message) as SystemEvent;\n logger.debug(\"Received client message\", {\n type: event.type,\n category: event.category,\n });\n runtime.emit(event);\n } catch {\n // Ignore parse errors\n }\n });\n });\n\n // Broadcast runtime events to all connected clients\n runtime.onAny((event) => {\n // Skip non-broadcastable events (internal events like DriveableEvent)\n if ((event as any).broadcastable === false) {\n return;\n }\n\n // Log event for debugging\n logger.debug(\"Broadcasting event\", {\n type: event.type,\n category: event.category,\n source: event.source,\n context: event.context,\n data: event.data,\n });\n\n wsServer.broadcast(JSON.stringify(event));\n });\n\n // If server is provided, attach WebSocket to it immediately\n if (config.server) {\n wsServer.attach(config.server, \"/ws\");\n }\n\n return {\n // Core API - delegate to runtime\n request: (type, data, timeout) => runtime.request(type, data, timeout),\n\n on: (type, handler) => runtime.on(type, handler),\n\n onCommand: (type, handler) => runtime.onCommand(type, handler),\n\n emitCommand: (type, data) => runtime.emitCommand(type, data),\n\n // Server API\n async listen(port: number, host?: string) {\n if (config.server) {\n throw new Error(\n \"Cannot listen when attached to existing server. The server should call listen() instead.\"\n );\n }\n await wsServer.listen(port, host);\n },\n\n async close() {\n await wsServer.close();\n },\n\n async dispose() {\n await wsServer.dispose();\n await runtime.dispose();\n },\n };\n}\n",
6
+ "/**\n * createAgentX - Factory function for creating AgentX instances\n *\n * Supports two modes:\n * - Local mode: Uses Runtime directly (Claude API) - Node.js only\n * - Remote mode: Connects to AgentX server via WebSocket - Browser & Node.js\n *\n * Local mode implementation is dynamically imported to enable tree-shaking\n * in browser builds.\n */\n\nimport type { AgentX, AgentXConfig, Unsubscribe } from \"@agentxjs/types/agentx\";\nimport { isRemoteConfig } from \"@agentxjs/types/agentx\";\nimport type {\n CommandEventMap,\n CommandRequestType,\n ResponseEventFor,\n RequestDataFor,\n SystemEvent,\n} from \"@agentxjs/types/event\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst remoteLogger = createLogger(\"agentx/RemoteClient\");\n\n/**\n * Create AgentX instance\n *\n * @param config - Configuration (LocalConfig or RemoteConfig)\n * @returns AgentX instance\n *\n * @example\n * ```typescript\n * // Remote mode (browser & Node.js)\n * const agentx = await createAgentX({ serverUrl: \"ws://localhost:5200\" });\n *\n * // Local mode (Node.js only)\n * const agentx = await createAgentX({ llm: { apiKey: \"sk-...\" } });\n * ```\n */\nexport async function createAgentX(config?: AgentXConfig): Promise<AgentX> {\n if (config && isRemoteConfig(config)) {\n return createRemoteAgentX(config.serverUrl);\n }\n\n // Dynamic import for tree-shaking in browser builds\n const { createLocalAgentX } = await import(\"./createLocalAgentX\");\n return createLocalAgentX(config ?? {});\n}\n\n// ============================================================================\n// Remote Mode Implementation (Browser & Node.js compatible)\n// ============================================================================\n\n/**\n * Create AgentX instance in remote mode\n *\n * Connects to an AgentX server via WebSocket.\n * Works in both browser and Node.js environments.\n *\n * @param serverUrl - WebSocket server URL\n * @returns AgentX instance\n */\nexport async function createRemoteAgentX(serverUrl: string): Promise<AgentX> {\n // Use @agentxjs/network for WebSocket client (handles browser/Node.js differences)\n const { createWebSocketClient } = await import(\"@agentxjs/network\");\n\n const client = await createWebSocketClient({\n serverUrl,\n autoReconnect: true,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 10000,\n connectionTimeout: 4000,\n maxRetries: Infinity,\n debug: false,\n });\n\n const handlers = new Map<string, Set<(event: SystemEvent) => void>>();\n const pendingRequests = new Map<\n string,\n {\n resolve: (event: SystemEvent) => void;\n reject: (err: Error) => void;\n timer: ReturnType<typeof setTimeout>;\n }\n >();\n\n // Handle incoming messages\n client.onMessage((message: string) => {\n try {\n const event = JSON.parse(message) as SystemEvent;\n\n remoteLogger.info(\"Received event\", {\n type: event.type,\n category: event.category,\n requestId: (event.data as any)?.requestId,\n });\n\n // Handle error events - log as error (but still dispatch to handlers)\n if (event.type === \"system_error\") {\n const errorData = event.data as { message: string; severity?: string; details?: unknown };\n remoteLogger.error(errorData.message, {\n severity: errorData.severity,\n requestId: (event.data as any)?.requestId,\n details: errorData.details,\n });\n // Continue to dispatch to handlers (don't return here)\n }\n\n // Check if it's a response to a pending request\n const requestId = (event.data as { requestId?: string })?.requestId;\n if (event.category === \"response\" && requestId && pendingRequests.has(requestId)) {\n remoteLogger.info(\"Resolving pending request\", { requestId, eventType: event.type });\n const pending = pendingRequests.get(requestId)!;\n clearTimeout(pending.timer);\n pendingRequests.delete(requestId);\n pending.resolve(event);\n return;\n }\n\n remoteLogger.info(\"Dispatching to handlers\", { type: event.type });\n\n // Dispatch to handlers\n const typeHandlers = handlers.get(event.type);\n if (typeHandlers) {\n for (const handler of typeHandlers) {\n handler(event);\n }\n }\n\n // Dispatch to \"*\" handlers\n const allHandlers = handlers.get(\"*\");\n if (allHandlers) {\n for (const handler of allHandlers) {\n handler(event);\n }\n }\n } catch {\n // Ignore parse errors\n }\n });\n\n // Handle connection events\n client.onClose(() => {\n remoteLogger.warn(\"WebSocket closed\");\n });\n\n client.onError((error: Error) => {\n remoteLogger.error(\"WebSocket error\", { error: error.message });\n });\n\n function subscribe(type: string, handler: (event: SystemEvent) => void): Unsubscribe {\n if (!handlers.has(type)) {\n handlers.set(type, new Set());\n }\n handlers.get(type)!.add(handler);\n return () => {\n handlers.get(type)?.delete(handler);\n };\n }\n\n return {\n request<T extends CommandRequestType>(\n type: T,\n data: RequestDataFor<T>,\n timeout: number = 30000\n ): Promise<ResponseEventFor<T>> {\n return new Promise((resolve, reject) => {\n const requestId = `req_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;\n\n const timer = setTimeout(() => {\n pendingRequests.delete(requestId);\n reject(new Error(`Request timeout: ${type}`));\n }, timeout);\n\n pendingRequests.set(requestId, {\n resolve: resolve as (event: SystemEvent) => void,\n reject,\n timer,\n });\n\n const event: SystemEvent = {\n type,\n timestamp: Date.now(),\n data: { ...data, requestId },\n source: \"command\",\n category: \"request\",\n intent: \"request\",\n };\n\n client.send(JSON.stringify(event));\n });\n },\n\n on<T extends string>(\n type: T,\n handler: (event: SystemEvent & { type: T }) => void\n ): Unsubscribe {\n return subscribe(type, handler as (event: SystemEvent) => void);\n },\n\n onCommand<T extends keyof CommandEventMap>(\n type: T,\n handler: (event: CommandEventMap[T]) => void\n ): Unsubscribe {\n return subscribe(type, handler as (event: SystemEvent) => void);\n },\n\n emitCommand<T extends keyof CommandEventMap>(type: T, data: CommandEventMap[T][\"data\"]): void {\n const event: SystemEvent = {\n type,\n timestamp: Date.now(),\n data,\n source: \"command\",\n category: type.toString().endsWith(\"_response\") ? \"response\" : \"request\",\n intent: type.toString().endsWith(\"_response\") ? \"result\" : \"request\",\n };\n client.send(JSON.stringify(event));\n },\n\n async listen() {\n throw new Error(\"Cannot listen in remote mode\");\n },\n\n async close() {\n // No-op in remote mode\n },\n\n async dispose() {\n for (const pending of pendingRequests.values()) {\n clearTimeout(pending.timer);\n pending.reject(new Error(\"AgentX disposed\"));\n }\n pendingRequests.clear();\n handlers.clear();\n client.dispose();\n },\n };\n}\n",
7
+ "/**\n * agentxjs - Unified API for AI Agents\n *\n * All public types and functions are exported from this single entry point.\n * Users only need: `import { ... } from \"agentxjs\"`\n *\n * @example\n * ```typescript\n * import { createAgentX, type AgentX, type SystemEvent } from \"agentxjs\";\n *\n * // Local mode\n * const agentx = await createAgentX();\n *\n * // Remote mode\n * const agentx = await createAgentX({ server: \"ws://localhost:5200\" });\n *\n * // Same API for both modes!\n * const res = await agentx.request(\"container_create_request\", {\n * containerId: \"my-container\"\n * });\n *\n * agentx.on(\"text_delta\", (e) => console.log(e.data.text));\n * ```\n *\n * @packageDocumentation\n */\n\n// ============================================================================\n// Factory\n// ============================================================================\n\nexport { createAgentX, createRemoteAgentX } from \"./createAgentX\";\n\n// ============================================================================\n// Core Types - AgentX API\n// ============================================================================\n\nexport type {\n AgentX,\n AgentXConfig,\n LocalConfig,\n RemoteConfig,\n LLMConfig,\n StorageConfig,\n StorageDriver,\n Unsubscribe,\n AgentDefinition,\n} from \"@agentxjs/types/agentx\";\n\nexport { isLocalConfig, isRemoteConfig } from \"@agentxjs/types/agentx\";\n\n// ============================================================================\n// defineAgent - Implementation\n// ============================================================================\n\nimport type { AgentDefinition } from \"@agentxjs/types/agentx\";\n\n/**\n * Define an Agent with type safety\n *\n * Helper function that provides type inference for AgentDefinition.\n *\n * @example\n * ```typescript\n * import { defineAgent } from \"agentxjs\";\n *\n * export const MyAgent = defineAgent({\n * name: \"MyAgent\",\n * systemPrompt: \"You are helpful.\",\n * mcpServers: {\n * filesystem: { command: \"npx\", args: [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/tmp\"] }\n * }\n * });\n * ```\n */\nexport function defineAgent<T extends AgentDefinition>(definition: T): T {\n return definition;\n}\n\n// ============================================================================\n// Event Types - SystemEvent and all event categories\n// ============================================================================\n\n// Base event\nexport type {\n SystemEvent,\n EventSource,\n EventCategory,\n EventIntent,\n EventContext,\n} from \"@agentxjs/types/event\";\n\nexport {\n isFromSource,\n hasIntent,\n isRequest,\n isResult,\n isNotification,\n} from \"@agentxjs/types/event\";\n\n// Command events (request/response)\nexport type {\n CommandEvent,\n CommandRequest,\n CommandResponse,\n CommandEventType,\n CommandRequestType,\n CommandEventMap,\n // Container commands\n ContainerCreateRequest,\n ContainerCreateResponse,\n ContainerGetRequest,\n ContainerGetResponse,\n ContainerListRequest,\n ContainerListResponse,\n // Agent commands\n AgentGetRequest,\n AgentGetResponse,\n AgentListRequest,\n AgentListResponse,\n AgentDestroyRequest,\n AgentDestroyResponse,\n MessageSendRequest,\n MessageSendResponse,\n AgentInterruptRequest,\n AgentInterruptResponse,\n // Image commands\n ImageCreateRequest,\n ImageCreateResponse,\n ImageRunRequest,\n ImageRunResponse,\n ImageStopRequest,\n ImageStopResponse,\n ImageUpdateRequest,\n ImageUpdateResponse,\n ImageListRequest,\n ImageListResponse,\n ImageListItem,\n ImageGetRequest,\n ImageGetResponse,\n ImageDeleteRequest,\n ImageDeleteResponse,\n} from \"@agentxjs/types/event\";\n\nexport { isCommandEvent, isCommandRequest, isCommandResponse } from \"@agentxjs/types/event\";\n\n// Agent events (stream/state/message/turn)\nexport type {\n AgentEvent,\n AgentEventCategory,\n // Stream events\n AgentStreamEvent,\n AgentTextDeltaEvent,\n AgentMessageStartEvent,\n AgentMessageStopEvent,\n AgentToolUseStartEvent,\n AgentToolUseStopEvent,\n AgentToolResultEvent,\n // State events\n AgentStateEvent,\n ConversationStartEvent,\n ConversationEndEvent,\n ConversationThinkingEvent,\n ConversationRespondingEvent,\n ToolExecutingEvent,\n ToolCompletedEvent,\n ErrorOccurredEvent,\n // Message events\n AgentMessageEvent,\n UserMessageEvent,\n AssistantMessageEvent,\n ToolCallMessageEvent,\n ToolResultMessageEvent,\n // Turn events\n AgentTurnEvent,\n TurnRequestEvent,\n TurnResponseEvent,\n TokenUsage,\n} from \"@agentxjs/types/event\";\n\nexport {\n isAgentEvent,\n isAgentStreamEvent,\n isAgentStateEvent,\n isAgentMessageEvent,\n isAgentTurnEvent,\n} from \"@agentxjs/types/event\";\n\n// ============================================================================\n// Data Types - Records and Messages\n// ============================================================================\n\n// Image record (for persistence)\nexport type { ImageRecord } from \"@agentxjs/types\";\n\n// Message types (for UI components)\nexport type {\n Message,\n MessageRole,\n MessageSubtype,\n UserMessage,\n AssistantMessage,\n ToolCallMessage,\n ToolResultMessage,\n ErrorMessage,\n AgentError,\n AgentState,\n ContentPart,\n UserContentPart,\n TextPart,\n ThinkingPart,\n ImagePart,\n FilePart,\n ToolCallPart,\n ToolResultPart,\n ToolResultOutput,\n} from \"@agentxjs/types/agent\";\n\n// ============================================================================\n// Logger - from @agentxjs/common\n// ============================================================================\n\nexport { createLogger, ConsoleLogger, LoggerFactoryImpl, setLoggerFactory } from \"@agentxjs/common\";\n\nexport type {\n Logger,\n LoggerFactory,\n LogContext,\n LogLevel,\n ConsoleLoggerOptions,\n LoggerFactoryConfig,\n} from \"@agentxjs/common\";\n"
8
+ ],
9
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA;AACA;AAIA,eAAsB,iBAAiB,CAAC,QAAsC;AAAA,EAE5E,IAAI,OAAO,QAAQ;AAAA,IACjB,QAAQ,mBAAmB,qBAAqB,MAAa;AAAA,IAE7D,kBAAkB,UAAU;AAAA,MAC1B,cAAc,OAAO,OAAO;AAAA,MAC5B,gBAAgB,OAAO,OAAO;AAAA,IAChC,CAAC;AAAA,IAED,IAAI,OAAO,OAAO,SAAS;AAAA,MACzB,iBAAiB,OAAO,OAAO,OAAO;AAAA,IACxC;AAAA,EACF;AAAA,EAGA,QAAQ,eAAe,sBAAsB,MAAa;AAAA,EAC1D,QAAQ,YAAY,MAAa;AAAA,EACjC,QAAQ,SAAS,MAAa;AAAA,EAG9B,MAAM,WAAW,OAAO,aAAa,KAAK,QAAQ,GAAG,SAAS;AAAA,EAG9D,MAAM,cAAc,KAAK,UAAU,QAAQ,WAAW;AAAA,EACtD,MAAM,cAAc,MAAM,kBAAkB;AAAA,IAC1C,QAAQ;AAAA,IACR,MAAM;AAAA,EACR,CAAC;AAAA,EAED,MAAM,UAAU,cAAc;AAAA,IAC5B;AAAA,IACA;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS,OAAO;AAAA,QACd,QAAQ,OAAO,KAAK,UAAU;AAAA,QAC9B,SAAS,OAAO,KAAK;AAAA,QACrB,OAAO,OAAO,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,IACA,cAAc,OAAO;AAAA,EACvB,CAAC;AAAA,EAGD,MAAM,WAAW,IAAI,gBAAgB;AAAA,IACnC,WAAW;AAAA,IACX,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACT,CAAC;AAAA,EAGD,SAAS,aAAa,CAAC,eAAe;AAAA,IAEpC,WAAW,UAAU,CAAC,YAAY;AAAA,MAChC,IAAI;AAAA,QACF,MAAM,QAAQ,KAAK,MAAM,OAAO;AAAA,QAChC,OAAO,MAAM,2BAA2B;AAAA,UACtC,MAAM,MAAM;AAAA,UACZ,UAAU,MAAM;AAAA,QAClB,CAAC;AAAA,QACD,QAAQ,KAAK,KAAK;AAAA,QAClB,MAAM;AAAA,KAGT;AAAA,GACF;AAAA,EAGD,QAAQ,MAAM,CAAC,UAAU;AAAA,IAEvB,IAAK,MAAc,kBAAkB,OAAO;AAAA,MAC1C;AAAA,IACF;AAAA,IAGA,OAAO,MAAM,sBAAsB;AAAA,MACjC,MAAM,MAAM;AAAA,MACZ,UAAU,MAAM;AAAA,MAChB,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,MAAM,MAAM;AAAA,IACd,CAAC;AAAA,IAED,SAAS,UAAU,KAAK,UAAU,KAAK,CAAC;AAAA,GACzC;AAAA,EAGD,IAAI,OAAO,QAAQ;AAAA,IACjB,SAAS,OAAO,OAAO,QAAQ,KAAK;AAAA,EACtC;AAAA,EAEA,OAAO;AAAA,IAEL,SAAS,CAAC,MAAM,MAAM,YAAY,QAAQ,QAAQ,MAAM,MAAM,OAAO;AAAA,IAErE,IAAI,CAAC,MAAM,YAAY,QAAQ,GAAG,MAAM,OAAO;AAAA,IAE/C,WAAW,CAAC,MAAM,YAAY,QAAQ,UAAU,MAAM,OAAO;AAAA,IAE7D,aAAa,CAAC,MAAM,SAAS,QAAQ,YAAY,MAAM,IAAI;AAAA,SAGrD,OAAM,CAAC,MAAc,MAAe;AAAA,MACxC,IAAI,OAAO,QAAQ;AAAA,QACjB,MAAM,IAAI,MACR,0FACF;AAAA,MACF;AAAA,MACA,MAAM,SAAS,OAAO,MAAM,IAAI;AAAA;AAAA,SAG5B,MAAK,GAAG;AAAA,MACZ,MAAM,SAAS,MAAM;AAAA;AAAA,SAGjB,QAAO,GAAG;AAAA,MACd,MAAM,SAAS,QAAQ;AAAA,MACvB,MAAM,QAAQ,QAAQ;AAAA;AAAA,EAE1B;AAAA;AAAA,IA1HI;AAAA;AAAA,WAAS,aAAa,oBAAoB;AAAA;;;ACAhD;AAQA,yBAAS;AAET,IAAM,eAAe,cAAa,qBAAqB;AAiBvD,eAAsB,YAAY,CAAC,QAAwC;AAAA,EACzE,IAAI,UAAU,eAAe,MAAM,GAAG;AAAA,IACpC,OAAO,mBAAmB,OAAO,SAAS;AAAA,EAC5C;AAAA,EAGA,QAAQ,0CAAsB;AAAA,EAC9B,OAAO,mBAAkB,UAAU,CAAC,CAAC;AAAA;AAgBvC,eAAsB,kBAAkB,CAAC,WAAoC;AAAA,EAE3E,QAAQ,0BAA0B,MAAa;AAAA,EAE/C,MAAM,SAAS,MAAM,sBAAsB;AAAA,IACzC;AAAA,IACA,eAAe;AAAA,IACf,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,mBAAmB;AAAA,IACnB,YAAY;AAAA,IACZ,OAAO;AAAA,EACT,CAAC;AAAA,EAED,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,kBAAkB,IAAI;AAAA,EAU5B,OAAO,UAAU,CAAC,YAAoB;AAAA,IACpC,IAAI;AAAA,MACF,MAAM,QAAQ,KAAK,MAAM,OAAO;AAAA,MAEhC,aAAa,KAAK,kBAAkB;AAAA,QAClC,MAAM,MAAM;AAAA,QACZ,UAAU,MAAM;AAAA,QAChB,WAAY,MAAM,MAAc;AAAA,MAClC,CAAC;AAAA,MAGD,IAAI,MAAM,SAAS,gBAAgB;AAAA,QACjC,MAAM,YAAY,MAAM;AAAA,QACxB,aAAa,MAAM,UAAU,SAAS;AAAA,UACpC,UAAU,UAAU;AAAA,UACpB,WAAY,MAAM,MAAc;AAAA,UAChC,SAAS,UAAU;AAAA,QACrB,CAAC;AAAA,MAEH;AAAA,MAGA,MAAM,YAAa,MAAM,MAAiC;AAAA,MAC1D,IAAI,MAAM,aAAa,cAAc,aAAa,gBAAgB,IAAI,SAAS,GAAG;AAAA,QAChF,aAAa,KAAK,6BAA6B,EAAE,WAAW,WAAW,MAAM,KAAK,CAAC;AAAA,QACnF,MAAM,UAAU,gBAAgB,IAAI,SAAS;AAAA,QAC7C,aAAa,QAAQ,KAAK;AAAA,QAC1B,gBAAgB,OAAO,SAAS;AAAA,QAChC,QAAQ,QAAQ,KAAK;AAAA,QACrB;AAAA,MACF;AAAA,MAEA,aAAa,KAAK,2BAA2B,EAAE,MAAM,MAAM,KAAK,CAAC;AAAA,MAGjE,MAAM,eAAe,SAAS,IAAI,MAAM,IAAI;AAAA,MAC5C,IAAI,cAAc;AAAA,QAChB,WAAW,WAAW,cAAc;AAAA,UAClC,QAAQ,KAAK;AAAA,QACf;AAAA,MACF;AAAA,MAGA,MAAM,cAAc,SAAS,IAAI,GAAG;AAAA,MACpC,IAAI,aAAa;AAAA,QACf,WAAW,WAAW,aAAa;AAAA,UACjC,QAAQ,KAAK;AAAA,QACf;AAAA,MACF;AAAA,MACA,MAAM;AAAA,GAGT;AAAA,EAGD,OAAO,QAAQ,MAAM;AAAA,IACnB,aAAa,KAAK,kBAAkB;AAAA,GACrC;AAAA,EAED,OAAO,QAAQ,CAAC,UAAiB;AAAA,IAC/B,aAAa,MAAM,mBAAmB,EAAE,OAAO,MAAM,QAAQ,CAAC;AAAA,GAC/D;AAAA,EAED,SAAS,SAAS,CAAC,MAAc,SAAoD;AAAA,IACnF,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG;AAAA,MACvB,SAAS,IAAI,MAAM,IAAI,GAAK;AAAA,IAC9B;AAAA,IACA,SAAS,IAAI,IAAI,EAAG,IAAI,OAAO;AAAA,IAC/B,OAAO,MAAM;AAAA,MACX,SAAS,IAAI,IAAI,GAAG,OAAO,OAAO;AAAA;AAAA;AAAA,EAItC,OAAO;AAAA,IACL,OAAqC,CACnC,MACA,MACA,UAAkB,OACY;AAAA,MAC9B,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,QACtC,MAAM,YAAY,OAAO,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,GAAG,CAAC;AAAA,QAEhF,MAAM,QAAQ,WAAW,MAAM;AAAA,UAC7B,gBAAgB,OAAO,SAAS;AAAA,UAChC,OAAO,IAAI,MAAM,oBAAoB,MAAM,CAAC;AAAA,WAC3C,OAAO;AAAA,QAEV,gBAAgB,IAAI,WAAW;AAAA,UAC7B;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,QAED,MAAM,QAAqB;AAAA,UACzB;AAAA,UACA,WAAW,KAAK,IAAI;AAAA,UACpB,MAAM,KAAK,MAAM,UAAU;AAAA,UAC3B,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,QAAQ;AAAA,QACV;AAAA,QAEA,OAAO,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,OAClC;AAAA;AAAA,IAGH,EAAoB,CAClB,MACA,SACa;AAAA,MACb,OAAO,UAAU,MAAM,OAAuC;AAAA;AAAA,IAGhE,SAA0C,CACxC,MACA,SACa;AAAA,MACb,OAAO,UAAU,MAAM,OAAuC;AAAA;AAAA,IAGhE,WAA4C,CAAC,MAAS,MAAwC;AAAA,MAC5F,MAAM,QAAqB;AAAA,QACzB;AAAA,QACA,WAAW,KAAK,IAAI;AAAA,QACpB;AAAA,QACA,QAAQ;AAAA,QACR,UAAU,KAAK,SAAS,EAAE,SAAS,WAAW,IAAI,aAAa;AAAA,QAC/D,QAAQ,KAAK,SAAS,EAAE,SAAS,WAAW,IAAI,WAAW;AAAA,MAC7D;AAAA,MACA,OAAO,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA;AAAA,SAG7B,OAAM,GAAG;AAAA,MACb,MAAM,IAAI,MAAM,8BAA8B;AAAA;AAAA,SAG1C,MAAK,GAAG;AAAA,SAIR,QAAO,GAAG;AAAA,MACd,WAAW,WAAW,gBAAgB,OAAO,GAAG;AAAA,QAC9C,aAAa,QAAQ,KAAK;AAAA,QAC1B,QAAQ,OAAO,IAAI,MAAM,iBAAiB,CAAC;AAAA,MAC7C;AAAA,MACA,gBAAgB,MAAM;AAAA,MACtB,SAAS,MAAM;AAAA,MACf,OAAO,QAAQ;AAAA;AAAA,EAEnB;AAAA;;;AC3LF,0CAAwB;AA2CxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoDA;AAoCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0CA,yBAAS;AAnJF,SAAS,WAAsC,CAAC,YAAkB;AAAA,EACvE,OAAO;AAAA;",
10
+ "debugId": "861D2D8172AB3ED464756E2164756E21",
11
+ "names": []
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentxjs",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Unified API for AI Agents - Server and Browser",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -10,46 +10,37 @@
10
10
  "homepage": "https://github.com/Deepractice/AgentX",
11
11
  "type": "module",
12
12
  "main": "./dist/index.js",
13
- "module": "./dist/index.mjs",
14
13
  "types": "./dist/index.d.ts",
15
14
  "exports": {
16
15
  ".": {
17
- "types": "./dist/index.d.ts",
18
16
  "browser": "./dist/browser.js",
19
17
  "node": "./dist/index.js",
20
- "import": "./dist/index.js",
21
- "require": "./dist/index.cjs"
18
+ "types": "./dist/index.d.ts",
19
+ "default": "./dist/index.js"
22
20
  }
23
21
  },
24
22
  "files": [
25
23
  "dist"
26
24
  ],
25
+ "scripts": {
26
+ "build": "bun run build.ts",
27
+ "clean": "rm -rf dist test-results",
28
+ "lint": "eslint .",
29
+ "typecheck": "tsc --noEmit",
30
+ "test": "bun test",
31
+ "test:watch": "bun test --watch"
32
+ },
27
33
  "dependencies": {
34
+ "@agentxjs/common": "workspace:*",
35
+ "@agentxjs/network": "workspace:*",
36
+ "@agentxjs/types": "workspace:*",
28
37
  "reconnecting-websocket": "^4.4.0",
29
- "ws": "^8.18.0",
30
- "@agentxjs/common": "1.4.0",
31
- "@agentxjs/network": "1.4.0",
32
- "@agentxjs/types": "1.4.0"
38
+ "ws": "^8.18.0"
33
39
  },
34
40
  "devDependencies": {
35
- "@types/node": "^24.9.2",
36
- "@types/ws": "^8.5.13",
37
- "tsup": "^8.3.5",
38
- "typescript": "^5.7.2",
39
- "vitest": "^3.2.4",
40
- "@agentxjs/runtime": "1.4.0"
41
+ "@agentxjs/runtime": "workspace:*"
41
42
  },
42
43
  "publishConfig": {
43
44
  "access": "public"
44
- },
45
- "scripts": {
46
- "build": "tsup",
47
- "dev": "tsup --watch",
48
- "clean": "rm -rf dist test-results",
49
- "lint": "eslint .",
50
- "typecheck": "tsc --noEmit",
51
- "test": "vitest run",
52
- "test:watch": "vitest",
53
- "test:ui": "vitest --ui"
54
45
  }
55
- }
46
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Deepractice
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
package/dist/browser.cjs DELETED
@@ -1,209 +0,0 @@
1
- 'use strict';
2
-
3
- var agentx = require('@agentxjs/types/agentx');
4
- var event = require('@agentxjs/types/event');
5
- var common = require('@agentxjs/common');
6
-
7
- // src/browser.ts
8
- var remoteLogger = common.createLogger("agentx/RemoteClient");
9
- async function createRemoteAgentX(serverUrl) {
10
- const { createWebSocketClient } = await import('@agentxjs/network');
11
- const client = await createWebSocketClient({
12
- serverUrl,
13
- autoReconnect: true,
14
- minReconnectionDelay: 1e3,
15
- maxReconnectionDelay: 1e4,
16
- connectionTimeout: 4e3,
17
- maxRetries: Infinity,
18
- debug: false
19
- });
20
- const handlers = /* @__PURE__ */ new Map();
21
- const pendingRequests = /* @__PURE__ */ new Map();
22
- client.onMessage((message) => {
23
- try {
24
- const event = JSON.parse(message);
25
- remoteLogger.info("Received event", {
26
- type: event.type,
27
- category: event.category,
28
- requestId: event.data?.requestId
29
- });
30
- if (event.type === "system_error") {
31
- const errorData = event.data;
32
- remoteLogger.error(errorData.message, {
33
- severity: errorData.severity,
34
- requestId: event.data?.requestId,
35
- details: errorData.details
36
- });
37
- }
38
- const requestId = event.data?.requestId;
39
- if (event.category === "response" && requestId && pendingRequests.has(requestId)) {
40
- remoteLogger.info("Resolving pending request", { requestId, eventType: event.type });
41
- const pending = pendingRequests.get(requestId);
42
- clearTimeout(pending.timer);
43
- pendingRequests.delete(requestId);
44
- pending.resolve(event);
45
- return;
46
- }
47
- remoteLogger.info("Dispatching to handlers", { type: event.type });
48
- const typeHandlers = handlers.get(event.type);
49
- if (typeHandlers) {
50
- for (const handler of typeHandlers) {
51
- handler(event);
52
- }
53
- }
54
- const allHandlers = handlers.get("*");
55
- if (allHandlers) {
56
- for (const handler of allHandlers) {
57
- handler(event);
58
- }
59
- }
60
- } catch {
61
- }
62
- });
63
- client.onClose(() => {
64
- remoteLogger.warn("WebSocket closed");
65
- });
66
- client.onError((error) => {
67
- remoteLogger.error("WebSocket error", { error: error.message });
68
- });
69
- function subscribe(type, handler) {
70
- if (!handlers.has(type)) {
71
- handlers.set(type, /* @__PURE__ */ new Set());
72
- }
73
- handlers.get(type).add(handler);
74
- return () => {
75
- handlers.get(type)?.delete(handler);
76
- };
77
- }
78
- return {
79
- request(type, data, timeout = 3e4) {
80
- return new Promise((resolve, reject) => {
81
- const requestId = `req_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;
82
- const timer = setTimeout(() => {
83
- pendingRequests.delete(requestId);
84
- reject(new Error(`Request timeout: ${type}`));
85
- }, timeout);
86
- pendingRequests.set(requestId, {
87
- resolve,
88
- reject,
89
- timer
90
- });
91
- const event = {
92
- type,
93
- timestamp: Date.now(),
94
- data: { ...data, requestId },
95
- source: "command",
96
- category: "request",
97
- intent: "request"
98
- };
99
- client.send(JSON.stringify(event));
100
- });
101
- },
102
- on(type, handler) {
103
- return subscribe(type, handler);
104
- },
105
- onCommand(type, handler) {
106
- return subscribe(type, handler);
107
- },
108
- emitCommand(type, data) {
109
- const event = {
110
- type,
111
- timestamp: Date.now(),
112
- data,
113
- source: "command",
114
- category: type.toString().endsWith("_response") ? "response" : "request",
115
- intent: type.toString().endsWith("_response") ? "result" : "request"
116
- };
117
- client.send(JSON.stringify(event));
118
- },
119
- async listen() {
120
- throw new Error("Cannot listen in remote mode");
121
- },
122
- async close() {
123
- },
124
- async dispose() {
125
- for (const pending of pendingRequests.values()) {
126
- clearTimeout(pending.timer);
127
- pending.reject(new Error("AgentX disposed"));
128
- }
129
- pendingRequests.clear();
130
- handlers.clear();
131
- client.dispose();
132
- }
133
- };
134
- }
135
-
136
- // src/browser.ts
137
- async function createAgentX(config) {
138
- if (!config || !agentx.isRemoteConfig(config)) {
139
- throw new Error(
140
- 'Browser environment only supports remote mode. Please provide { serverUrl: "ws://..." } configuration.'
141
- );
142
- }
143
- return createRemoteAgentX(config.serverUrl);
144
- }
145
-
146
- Object.defineProperty(exports, "isLocalConfig", {
147
- enumerable: true,
148
- get: function () { return agentx.isLocalConfig; }
149
- });
150
- Object.defineProperty(exports, "isRemoteConfig", {
151
- enumerable: true,
152
- get: function () { return agentx.isRemoteConfig; }
153
- });
154
- Object.defineProperty(exports, "hasIntent", {
155
- enumerable: true,
156
- get: function () { return event.hasIntent; }
157
- });
158
- Object.defineProperty(exports, "isAgentEvent", {
159
- enumerable: true,
160
- get: function () { return event.isAgentEvent; }
161
- });
162
- Object.defineProperty(exports, "isAgentMessageEvent", {
163
- enumerable: true,
164
- get: function () { return event.isAgentMessageEvent; }
165
- });
166
- Object.defineProperty(exports, "isAgentStateEvent", {
167
- enumerable: true,
168
- get: function () { return event.isAgentStateEvent; }
169
- });
170
- Object.defineProperty(exports, "isAgentStreamEvent", {
171
- enumerable: true,
172
- get: function () { return event.isAgentStreamEvent; }
173
- });
174
- Object.defineProperty(exports, "isAgentTurnEvent", {
175
- enumerable: true,
176
- get: function () { return event.isAgentTurnEvent; }
177
- });
178
- Object.defineProperty(exports, "isCommandEvent", {
179
- enumerable: true,
180
- get: function () { return event.isCommandEvent; }
181
- });
182
- Object.defineProperty(exports, "isCommandRequest", {
183
- enumerable: true,
184
- get: function () { return event.isCommandRequest; }
185
- });
186
- Object.defineProperty(exports, "isCommandResponse", {
187
- enumerable: true,
188
- get: function () { return event.isCommandResponse; }
189
- });
190
- Object.defineProperty(exports, "isFromSource", {
191
- enumerable: true,
192
- get: function () { return event.isFromSource; }
193
- });
194
- Object.defineProperty(exports, "isNotification", {
195
- enumerable: true,
196
- get: function () { return event.isNotification; }
197
- });
198
- Object.defineProperty(exports, "isRequest", {
199
- enumerable: true,
200
- get: function () { return event.isRequest; }
201
- });
202
- Object.defineProperty(exports, "isResult", {
203
- enumerable: true,
204
- get: function () { return event.isResult; }
205
- });
206
- exports.createAgentX = createAgentX;
207
- exports.createRemoteAgentX = createRemoteAgentX;
208
- //# sourceMappingURL=browser.cjs.map
209
- //# sourceMappingURL=browser.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/createAgentX.ts","../src/browser.ts"],"names":["createLogger","isRemoteConfig"],"mappings":"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","file":"browser.cjs","sourcesContent":["/**\n * createAgentX - Factory function for creating AgentX instances\n *\n * Supports two modes:\n * - Local mode: Uses Runtime directly (Claude API) - Node.js only\n * - Remote mode: Connects to AgentX server via WebSocket - Browser & Node.js\n *\n * Local mode implementation is dynamically imported to enable tree-shaking\n * in browser builds.\n */\n\nimport type { AgentX, AgentXConfig, Unsubscribe } from \"@agentxjs/types/agentx\";\nimport { isRemoteConfig } from \"@agentxjs/types/agentx\";\nimport type {\n CommandEventMap,\n CommandRequestType,\n ResponseEventFor,\n RequestDataFor,\n SystemEvent,\n} from \"@agentxjs/types/event\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst remoteLogger = createLogger(\"agentx/RemoteClient\");\n\n/**\n * Create AgentX instance\n *\n * @param config - Configuration (LocalConfig or RemoteConfig)\n * @returns AgentX instance\n *\n * @example\n * ```typescript\n * // Remote mode (browser & Node.js)\n * const agentx = await createAgentX({ serverUrl: \"ws://localhost:5200\" });\n *\n * // Local mode (Node.js only)\n * const agentx = await createAgentX({ llm: { apiKey: \"sk-...\" } });\n * ```\n */\nexport async function createAgentX(config?: AgentXConfig): Promise<AgentX> {\n if (config && isRemoteConfig(config)) {\n return createRemoteAgentX(config.serverUrl);\n }\n\n // Dynamic import for tree-shaking in browser builds\n const { createLocalAgentX } = await import(\"./createLocalAgentX\");\n return createLocalAgentX(config ?? {});\n}\n\n// ============================================================================\n// Remote Mode Implementation (Browser & Node.js compatible)\n// ============================================================================\n\n/**\n * Create AgentX instance in remote mode\n *\n * Connects to an AgentX server via WebSocket.\n * Works in both browser and Node.js environments.\n *\n * @param serverUrl - WebSocket server URL\n * @returns AgentX instance\n */\nexport async function createRemoteAgentX(serverUrl: string): Promise<AgentX> {\n // Use @agentxjs/network for WebSocket client (handles browser/Node.js differences)\n const { createWebSocketClient } = await import(\"@agentxjs/network\");\n\n const client = await createWebSocketClient({\n serverUrl,\n autoReconnect: true,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 10000,\n connectionTimeout: 4000,\n maxRetries: Infinity,\n debug: false,\n });\n\n const handlers = new Map<string, Set<(event: SystemEvent) => void>>();\n const pendingRequests = new Map<\n string,\n {\n resolve: (event: SystemEvent) => void;\n reject: (err: Error) => void;\n timer: ReturnType<typeof setTimeout>;\n }\n >();\n\n // Handle incoming messages\n client.onMessage((message: string) => {\n try {\n const event = JSON.parse(message) as SystemEvent;\n\n remoteLogger.info(\"Received event\", {\n type: event.type,\n category: event.category,\n requestId: (event.data as any)?.requestId,\n });\n\n // Handle error events - log as error (but still dispatch to handlers)\n if (event.type === \"system_error\") {\n const errorData = event.data as { message: string; severity?: string; details?: unknown };\n remoteLogger.error(errorData.message, {\n severity: errorData.severity,\n requestId: (event.data as any)?.requestId,\n details: errorData.details,\n });\n // Continue to dispatch to handlers (don't return here)\n }\n\n // Check if it's a response to a pending request\n const requestId = (event.data as { requestId?: string })?.requestId;\n if (event.category === \"response\" && requestId && pendingRequests.has(requestId)) {\n remoteLogger.info(\"Resolving pending request\", { requestId, eventType: event.type });\n const pending = pendingRequests.get(requestId)!;\n clearTimeout(pending.timer);\n pendingRequests.delete(requestId);\n pending.resolve(event);\n return;\n }\n\n remoteLogger.info(\"Dispatching to handlers\", { type: event.type });\n\n // Dispatch to handlers\n const typeHandlers = handlers.get(event.type);\n if (typeHandlers) {\n for (const handler of typeHandlers) {\n handler(event);\n }\n }\n\n // Dispatch to \"*\" handlers\n const allHandlers = handlers.get(\"*\");\n if (allHandlers) {\n for (const handler of allHandlers) {\n handler(event);\n }\n }\n } catch {\n // Ignore parse errors\n }\n });\n\n // Handle connection events\n client.onClose(() => {\n remoteLogger.warn(\"WebSocket closed\");\n });\n\n client.onError((error: Error) => {\n remoteLogger.error(\"WebSocket error\", { error: error.message });\n });\n\n function subscribe(type: string, handler: (event: SystemEvent) => void): Unsubscribe {\n if (!handlers.has(type)) {\n handlers.set(type, new Set());\n }\n handlers.get(type)!.add(handler);\n return () => {\n handlers.get(type)?.delete(handler);\n };\n }\n\n return {\n request<T extends CommandRequestType>(\n type: T,\n data: RequestDataFor<T>,\n timeout: number = 30000\n ): Promise<ResponseEventFor<T>> {\n return new Promise((resolve, reject) => {\n const requestId = `req_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;\n\n const timer = setTimeout(() => {\n pendingRequests.delete(requestId);\n reject(new Error(`Request timeout: ${type}`));\n }, timeout);\n\n pendingRequests.set(requestId, {\n resolve: resolve as (event: SystemEvent) => void,\n reject,\n timer,\n });\n\n const event: SystemEvent = {\n type,\n timestamp: Date.now(),\n data: { ...data, requestId },\n source: \"command\",\n category: \"request\",\n intent: \"request\",\n };\n\n client.send(JSON.stringify(event));\n });\n },\n\n on<T extends string>(\n type: T,\n handler: (event: SystemEvent & { type: T }) => void\n ): Unsubscribe {\n return subscribe(type, handler as (event: SystemEvent) => void);\n },\n\n onCommand<T extends keyof CommandEventMap>(\n type: T,\n handler: (event: CommandEventMap[T]) => void\n ): Unsubscribe {\n return subscribe(type, handler as (event: SystemEvent) => void);\n },\n\n emitCommand<T extends keyof CommandEventMap>(type: T, data: CommandEventMap[T][\"data\"]): void {\n const event: SystemEvent = {\n type,\n timestamp: Date.now(),\n data,\n source: \"command\",\n category: type.toString().endsWith(\"_response\") ? \"response\" : \"request\",\n intent: type.toString().endsWith(\"_response\") ? \"result\" : \"request\",\n };\n client.send(JSON.stringify(event));\n },\n\n async listen() {\n throw new Error(\"Cannot listen in remote mode\");\n },\n\n async close() {\n // No-op in remote mode\n },\n\n async dispose() {\n for (const pending of pendingRequests.values()) {\n clearTimeout(pending.timer);\n pending.reject(new Error(\"AgentX disposed\"));\n }\n pendingRequests.clear();\n handlers.clear();\n client.dispose();\n },\n };\n}\n","/**\n * agentxjs - Browser Entry Point\n *\n * This entry is automatically selected by bundlers (Vite, Webpack, etc.)\n * when building for browser environments.\n *\n * Only includes remote mode (WebSocket client).\n * Does not include Node.js specific code (runtime, fs, sqlite, etc.)\n */\n\n// Re-export everything from index except createAgentX\nexport type {\n AgentX,\n AgentXConfig,\n LocalConfig,\n RemoteConfig,\n LLMConfig,\n StorageConfig,\n StorageDriver,\n Unsubscribe,\n} from \"@agentxjs/types/agentx\";\n\nexport { isLocalConfig, isRemoteConfig } from \"@agentxjs/types/agentx\";\n\n// Event types\nexport type {\n SystemEvent,\n EventSource,\n EventCategory,\n EventIntent,\n EventContext,\n} from \"@agentxjs/types/event\";\n\nexport {\n isFromSource,\n hasIntent,\n isRequest,\n isResult,\n isNotification,\n} from \"@agentxjs/types/event\";\n\n// Command events\nexport type {\n CommandEvent,\n CommandRequest,\n CommandResponse,\n CommandEventType,\n CommandRequestType,\n CommandEventMap,\n ContainerCreateRequest,\n ContainerCreateResponse,\n ContainerGetRequest,\n ContainerGetResponse,\n ContainerListRequest,\n ContainerListResponse,\n AgentGetRequest,\n AgentGetResponse,\n AgentListRequest,\n AgentListResponse,\n AgentDestroyRequest,\n AgentDestroyResponse,\n MessageSendRequest,\n MessageSendResponse,\n AgentInterruptRequest,\n AgentInterruptResponse,\n ImageCreateRequest,\n ImageCreateResponse,\n ImageRunRequest,\n ImageRunResponse,\n ImageStopRequest,\n ImageStopResponse,\n ImageUpdateRequest,\n ImageUpdateResponse,\n ImageListRequest,\n ImageListResponse,\n ImageListItem,\n ImageGetRequest,\n ImageGetResponse,\n ImageDeleteRequest,\n ImageDeleteResponse,\n} from \"@agentxjs/types/event\";\n\nexport { isCommandEvent, isCommandRequest, isCommandResponse } from \"@agentxjs/types/event\";\n\n// Agent events\nexport type {\n AgentEvent,\n AgentEventCategory,\n AgentStreamEvent,\n AgentTextDeltaEvent,\n AgentMessageStartEvent,\n AgentMessageStopEvent,\n AgentToolUseStartEvent,\n AgentToolUseStopEvent,\n AgentToolResultEvent,\n AgentStateEvent,\n ConversationStartEvent,\n ConversationEndEvent,\n ConversationThinkingEvent,\n ConversationRespondingEvent,\n ToolExecutingEvent,\n ToolCompletedEvent,\n ErrorOccurredEvent,\n AgentMessageEvent,\n UserMessageEvent,\n AssistantMessageEvent,\n ToolCallMessageEvent,\n ToolResultMessageEvent,\n AgentTurnEvent,\n TurnRequestEvent,\n TurnResponseEvent,\n TokenUsage,\n} from \"@agentxjs/types/event\";\n\nexport {\n isAgentEvent,\n isAgentStreamEvent,\n isAgentStateEvent,\n isAgentMessageEvent,\n isAgentTurnEvent,\n} from \"@agentxjs/types/event\";\n\n// Data types\nexport type { ImageRecord } from \"@agentxjs/types\";\n\nexport type {\n Message,\n UserMessage,\n AssistantMessage,\n ToolCallMessage,\n ToolResultMessage,\n AgentError,\n ContentPart,\n TextPart,\n ToolCallPart,\n ToolResultPart,\n ToolResultOutput,\n} from \"@agentxjs/types/agent\";\n\n// Browser-only createAgentX (remote mode only)\nimport type { AgentX, AgentXConfig } from \"@agentxjs/types/agentx\";\nimport { isRemoteConfig } from \"@agentxjs/types/agentx\";\nimport { createRemoteAgentX } from \"./createAgentX\";\n\n/**\n * Create AgentX instance (Browser version - remote mode only)\n *\n * @param config - Must be RemoteConfig with server URL\n * @returns AgentX instance\n *\n * @example\n * ```typescript\n * const agentx = await createAgentX({ server: \"ws://localhost:5200\" });\n * ```\n */\nexport async function createAgentX(config: AgentXConfig): Promise<AgentX> {\n if (!config || !isRemoteConfig(config)) {\n throw new Error(\n \"Browser environment only supports remote mode. \" +\n 'Please provide { serverUrl: \"ws://...\" } configuration.'\n );\n }\n return createRemoteAgentX(config.serverUrl);\n}\n\n// Also export createRemoteAgentX for explicit usage\nexport { createRemoteAgentX } from \"./createAgentX\";\n"]}
@@ -1,31 +0,0 @@
1
- import { AgentXConfig, AgentX } from '@agentxjs/types/agentx';
2
- export { AgentX, AgentXConfig, LLMConfig, LocalConfig, RemoteConfig, StorageConfig, StorageDriver, Unsubscribe, isLocalConfig, isRemoteConfig } from '@agentxjs/types/agentx';
3
- export { AgentDestroyRequest, AgentDestroyResponse, AgentEvent, AgentEventCategory, AgentGetRequest, AgentGetResponse, AgentInterruptRequest, AgentInterruptResponse, AgentListRequest, AgentListResponse, AgentMessageEvent, AgentMessageStartEvent, AgentMessageStopEvent, AgentStateEvent, AgentStreamEvent, AgentTextDeltaEvent, AgentToolResultEvent, AgentToolUseStartEvent, AgentToolUseStopEvent, AgentTurnEvent, AssistantMessageEvent, CommandEvent, CommandEventMap, CommandEventType, CommandRequest, CommandRequestType, CommandResponse, ContainerCreateRequest, ContainerCreateResponse, ContainerGetRequest, ContainerGetResponse, ContainerListRequest, ContainerListResponse, ConversationEndEvent, ConversationRespondingEvent, ConversationStartEvent, ConversationThinkingEvent, ErrorOccurredEvent, EventCategory, EventContext, EventIntent, EventSource, ImageCreateRequest, ImageCreateResponse, ImageDeleteRequest, ImageDeleteResponse, ImageGetRequest, ImageGetResponse, ImageListItem, ImageListRequest, ImageListResponse, ImageRunRequest, ImageRunResponse, ImageStopRequest, ImageStopResponse, ImageUpdateRequest, ImageUpdateResponse, MessageSendRequest, MessageSendResponse, SystemEvent, TokenUsage, ToolCallMessageEvent, ToolCompletedEvent, ToolExecutingEvent, ToolResultMessageEvent, TurnRequestEvent, TurnResponseEvent, UserMessageEvent, hasIntent, isAgentEvent, isAgentMessageEvent, isAgentStateEvent, isAgentStreamEvent, isAgentTurnEvent, isCommandEvent, isCommandRequest, isCommandResponse, isFromSource, isNotification, isRequest, isResult } from '@agentxjs/types/event';
4
- export { ImageRecord } from '@agentxjs/types';
5
- export { AgentError, AssistantMessage, ContentPart, Message, TextPart, ToolCallMessage, ToolCallPart, ToolResultMessage, ToolResultOutput, ToolResultPart, UserMessage } from '@agentxjs/types/agent';
6
- export { a as createRemoteAgentX } from './createAgentX-BlZzJ2OM.cjs';
7
-
8
- /**
9
- * agentxjs - Browser Entry Point
10
- *
11
- * This entry is automatically selected by bundlers (Vite, Webpack, etc.)
12
- * when building for browser environments.
13
- *
14
- * Only includes remote mode (WebSocket client).
15
- * Does not include Node.js specific code (runtime, fs, sqlite, etc.)
16
- */
17
-
18
- /**
19
- * Create AgentX instance (Browser version - remote mode only)
20
- *
21
- * @param config - Must be RemoteConfig with server URL
22
- * @returns AgentX instance
23
- *
24
- * @example
25
- * ```typescript
26
- * const agentx = await createAgentX({ server: "ws://localhost:5200" });
27
- * ```
28
- */
29
- declare function createAgentX(config: AgentXConfig): Promise<AgentX>;
30
-
31
- export { createAgentX };
package/dist/browser.d.ts DELETED
@@ -1,31 +0,0 @@
1
- import { AgentXConfig, AgentX } from '@agentxjs/types/agentx';
2
- export { AgentX, AgentXConfig, LLMConfig, LocalConfig, RemoteConfig, StorageConfig, StorageDriver, Unsubscribe, isLocalConfig, isRemoteConfig } from '@agentxjs/types/agentx';
3
- export { AgentDestroyRequest, AgentDestroyResponse, AgentEvent, AgentEventCategory, AgentGetRequest, AgentGetResponse, AgentInterruptRequest, AgentInterruptResponse, AgentListRequest, AgentListResponse, AgentMessageEvent, AgentMessageStartEvent, AgentMessageStopEvent, AgentStateEvent, AgentStreamEvent, AgentTextDeltaEvent, AgentToolResultEvent, AgentToolUseStartEvent, AgentToolUseStopEvent, AgentTurnEvent, AssistantMessageEvent, CommandEvent, CommandEventMap, CommandEventType, CommandRequest, CommandRequestType, CommandResponse, ContainerCreateRequest, ContainerCreateResponse, ContainerGetRequest, ContainerGetResponse, ContainerListRequest, ContainerListResponse, ConversationEndEvent, ConversationRespondingEvent, ConversationStartEvent, ConversationThinkingEvent, ErrorOccurredEvent, EventCategory, EventContext, EventIntent, EventSource, ImageCreateRequest, ImageCreateResponse, ImageDeleteRequest, ImageDeleteResponse, ImageGetRequest, ImageGetResponse, ImageListItem, ImageListRequest, ImageListResponse, ImageRunRequest, ImageRunResponse, ImageStopRequest, ImageStopResponse, ImageUpdateRequest, ImageUpdateResponse, MessageSendRequest, MessageSendResponse, SystemEvent, TokenUsage, ToolCallMessageEvent, ToolCompletedEvent, ToolExecutingEvent, ToolResultMessageEvent, TurnRequestEvent, TurnResponseEvent, UserMessageEvent, hasIntent, isAgentEvent, isAgentMessageEvent, isAgentStateEvent, isAgentStreamEvent, isAgentTurnEvent, isCommandEvent, isCommandRequest, isCommandResponse, isFromSource, isNotification, isRequest, isResult } from '@agentxjs/types/event';
4
- export { ImageRecord } from '@agentxjs/types';
5
- export { AgentError, AssistantMessage, ContentPart, Message, TextPart, ToolCallMessage, ToolCallPart, ToolResultMessage, ToolResultOutput, ToolResultPart, UserMessage } from '@agentxjs/types/agent';
6
- export { a as createRemoteAgentX } from './createAgentX-BlZzJ2OM.js';
7
-
8
- /**
9
- * agentxjs - Browser Entry Point
10
- *
11
- * This entry is automatically selected by bundlers (Vite, Webpack, etc.)
12
- * when building for browser environments.
13
- *
14
- * Only includes remote mode (WebSocket client).
15
- * Does not include Node.js specific code (runtime, fs, sqlite, etc.)
16
- */
17
-
18
- /**
19
- * Create AgentX instance (Browser version - remote mode only)
20
- *
21
- * @param config - Must be RemoteConfig with server URL
22
- * @returns AgentX instance
23
- *
24
- * @example
25
- * ```typescript
26
- * const agentx = await createAgentX({ server: "ws://localhost:5200" });
27
- * ```
28
- */
29
- declare function createAgentX(config: AgentXConfig): Promise<AgentX>;
30
-
31
- export { createAgentX };
@@ -1,41 +0,0 @@
1
- import { AgentXConfig, AgentX } from '@agentxjs/types/agentx';
2
-
3
- /**
4
- * createAgentX - Factory function for creating AgentX instances
5
- *
6
- * Supports two modes:
7
- * - Local mode: Uses Runtime directly (Claude API) - Node.js only
8
- * - Remote mode: Connects to AgentX server via WebSocket - Browser & Node.js
9
- *
10
- * Local mode implementation is dynamically imported to enable tree-shaking
11
- * in browser builds.
12
- */
13
-
14
- /**
15
- * Create AgentX instance
16
- *
17
- * @param config - Configuration (LocalConfig or RemoteConfig)
18
- * @returns AgentX instance
19
- *
20
- * @example
21
- * ```typescript
22
- * // Remote mode (browser & Node.js)
23
- * const agentx = await createAgentX({ serverUrl: "ws://localhost:5200" });
24
- *
25
- * // Local mode (Node.js only)
26
- * const agentx = await createAgentX({ llm: { apiKey: "sk-..." } });
27
- * ```
28
- */
29
- declare function createAgentX(config?: AgentXConfig): Promise<AgentX>;
30
- /**
31
- * Create AgentX instance in remote mode
32
- *
33
- * Connects to an AgentX server via WebSocket.
34
- * Works in both browser and Node.js environments.
35
- *
36
- * @param serverUrl - WebSocket server URL
37
- * @returns AgentX instance
38
- */
39
- declare function createRemoteAgentX(serverUrl: string): Promise<AgentX>;
40
-
41
- export { createRemoteAgentX as a, createAgentX as c };
@@ -1,41 +0,0 @@
1
- import { AgentXConfig, AgentX } from '@agentxjs/types/agentx';
2
-
3
- /**
4
- * createAgentX - Factory function for creating AgentX instances
5
- *
6
- * Supports two modes:
7
- * - Local mode: Uses Runtime directly (Claude API) - Node.js only
8
- * - Remote mode: Connects to AgentX server via WebSocket - Browser & Node.js
9
- *
10
- * Local mode implementation is dynamically imported to enable tree-shaking
11
- * in browser builds.
12
- */
13
-
14
- /**
15
- * Create AgentX instance
16
- *
17
- * @param config - Configuration (LocalConfig or RemoteConfig)
18
- * @returns AgentX instance
19
- *
20
- * @example
21
- * ```typescript
22
- * // Remote mode (browser & Node.js)
23
- * const agentx = await createAgentX({ serverUrl: "ws://localhost:5200" });
24
- *
25
- * // Local mode (Node.js only)
26
- * const agentx = await createAgentX({ llm: { apiKey: "sk-..." } });
27
- * ```
28
- */
29
- declare function createAgentX(config?: AgentXConfig): Promise<AgentX>;
30
- /**
31
- * Create AgentX instance in remote mode
32
- *
33
- * Connects to an AgentX server via WebSocket.
34
- * Works in both browser and Node.js environments.
35
- *
36
- * @param serverUrl - WebSocket server URL
37
- * @returns AgentX instance
38
- */
39
- declare function createRemoteAgentX(serverUrl: string): Promise<AgentX>;
40
-
41
- export { createRemoteAgentX as a, createAgentX as c };