agentxjs 1.3.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/browser.js CHANGED
@@ -1,23 +1,63 @@
1
- import { isRemoteConfig } from '@agentxjs/types/agentx';
2
- export { isLocalConfig, isRemoteConfig } from '@agentxjs/types/agentx';
3
- export { hasIntent, isAgentEvent, isAgentMessageEvent, isAgentStateEvent, isAgentStreamEvent, isAgentTurnEvent, isCommandEvent, isCommandRequest, isCommandResponse, isFromSource, isNotification, isRequest, isResult } from '@agentxjs/types/event';
4
- import { createLogger } from '@agentxjs/common';
1
+ var __create = Object.create;
2
+ var __getProtoOf = Object.getPrototypeOf;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __toESM = (mod, isNodeMode, target) => {
7
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
8
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
9
+ for (let key of __getOwnPropNames(mod))
10
+ if (!__hasOwnProp.call(to, key))
11
+ __defProp(to, key, {
12
+ get: () => mod[key],
13
+ enumerable: true
14
+ });
15
+ return to;
16
+ };
17
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
18
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
19
+ }) : x)(function(x) {
20
+ if (typeof require !== "undefined")
21
+ return require.apply(this, arguments);
22
+ throw Error('Dynamic require of "' + x + '" is not supported');
23
+ });
5
24
 
6
25
  // src/browser.ts
26
+ import { isLocalConfig, isRemoteConfig as isRemoteConfig2 } from "@agentxjs/types/agentx";
27
+ import {
28
+ isFromSource,
29
+ hasIntent,
30
+ isRequest,
31
+ isResult,
32
+ isNotification
33
+ } from "@agentxjs/types/event";
34
+ import { isCommandEvent, isCommandRequest, isCommandResponse } from "@agentxjs/types/event";
35
+ import {
36
+ isAgentEvent,
37
+ isAgentStreamEvent,
38
+ isAgentStateEvent,
39
+ isAgentMessageEvent,
40
+ isAgentTurnEvent
41
+ } from "@agentxjs/types/event";
42
+ import { isRemoteConfig as isRemoteConfig3 } from "@agentxjs/types/agentx";
43
+
44
+ // src/createAgentX.ts
45
+ import { isRemoteConfig } from "@agentxjs/types/agentx";
46
+ import { createLogger } from "@agentxjs/common";
7
47
  var remoteLogger = createLogger("agentx/RemoteClient");
8
48
  async function createRemoteAgentX(serverUrl) {
9
- const { createWebSocketClient } = await import('@agentxjs/network');
49
+ const { createWebSocketClient } = await import("@agentxjs/network");
10
50
  const client = await createWebSocketClient({
11
51
  serverUrl,
12
52
  autoReconnect: true,
13
- minReconnectionDelay: 1e3,
53
+ minReconnectionDelay: 1000,
14
54
  maxReconnectionDelay: 1e4,
15
- connectionTimeout: 4e3,
55
+ connectionTimeout: 4000,
16
56
  maxRetries: Infinity,
17
57
  debug: false
18
58
  });
19
- const handlers = /* @__PURE__ */ new Map();
20
- const pendingRequests = /* @__PURE__ */ new Map();
59
+ const handlers = new Map;
60
+ const pendingRequests = new Map;
21
61
  client.onMessage((message) => {
22
62
  try {
23
63
  const event = JSON.parse(message);
@@ -56,8 +96,7 @@ async function createRemoteAgentX(serverUrl) {
56
96
  handler(event);
57
97
  }
58
98
  }
59
- } catch {
60
- }
99
+ } catch {}
61
100
  });
62
101
  client.onClose(() => {
63
102
  remoteLogger.warn("WebSocket closed");
@@ -67,7 +106,7 @@ async function createRemoteAgentX(serverUrl) {
67
106
  });
68
107
  function subscribe(type, handler) {
69
108
  if (!handlers.has(type)) {
70
- handlers.set(type, /* @__PURE__ */ new Set());
109
+ handlers.set(type, new Set);
71
110
  }
72
111
  handlers.get(type).add(handler);
73
112
  return () => {
@@ -75,7 +114,7 @@ async function createRemoteAgentX(serverUrl) {
75
114
  };
76
115
  }
77
116
  return {
78
- request(type, data, timeout = 3e4) {
117
+ request(type, data, timeout = 30000) {
79
118
  return new Promise((resolve, reject) => {
80
119
  const requestId = `req_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;
81
120
  const timer = setTimeout(() => {
@@ -118,8 +157,7 @@ async function createRemoteAgentX(serverUrl) {
118
157
  async listen() {
119
158
  throw new Error("Cannot listen in remote mode");
120
159
  },
121
- async close() {
122
- },
160
+ async close() {},
123
161
  async dispose() {
124
162
  for (const pending of pendingRequests.values()) {
125
163
  clearTimeout(pending.timer);
@@ -134,14 +172,29 @@ async function createRemoteAgentX(serverUrl) {
134
172
 
135
173
  // src/browser.ts
136
174
  async function createAgentX(config) {
137
- if (!config || !isRemoteConfig(config)) {
138
- throw new Error(
139
- 'Browser environment only supports remote mode. Please provide { serverUrl: "ws://..." } configuration.'
140
- );
175
+ if (!config || !isRemoteConfig3(config)) {
176
+ throw new Error("Browser environment only supports remote mode. " + 'Please provide { serverUrl: "ws://..." } configuration.');
141
177
  }
142
178
  return createRemoteAgentX(config.serverUrl);
143
179
  }
180
+ export {
181
+ isResult,
182
+ isRequest,
183
+ isRemoteConfig2 as isRemoteConfig,
184
+ isNotification,
185
+ isLocalConfig,
186
+ isFromSource,
187
+ isCommandResponse,
188
+ isCommandRequest,
189
+ isCommandEvent,
190
+ isAgentTurnEvent,
191
+ isAgentStreamEvent,
192
+ isAgentStateEvent,
193
+ isAgentMessageEvent,
194
+ isAgentEvent,
195
+ hasIntent,
196
+ createRemoteAgentX,
197
+ createAgentX
198
+ };
144
199
 
145
- export { createAgentX, createRemoteAgentX };
146
- //# sourceMappingURL=browser.js.map
147
- //# sourceMappingURL=browser.js.map
200
+ //# debugId=ACC9F328BB04A51C64756E2164756E21
@@ -1 +1,11 @@
1
- {"version":3,"sources":["../src/createAgentX.ts","../src/browser.ts"],"names":["isRemoteConfig"],"mappings":"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","file":"browser.js","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
+ {
2
+ "version": 3,
3
+ "sources": ["../src/browser.ts", "../src/createAgentX.ts"],
4
+ "sourcesContent": [
5
+ "/**\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",
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
+ ],
8
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,0CAAwB;AAWxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiDA;AAgCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BA,2BAAS;;;ACjIT;AAQA;AAEA,IAAM,eAAe,aAAa,qBAAqB;AAwCvD,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;;;ADjFF,eAAsB,YAAY,CAAC,QAAuC;AAAA,EACxE,IAAI,CAAC,UAAU,CAAC,gBAAe,MAAM,GAAG;AAAA,IACtC,MAAM,IAAI,MACR,oDACE,yDACJ;AAAA,EACF;AAAA,EACA,OAAO,mBAAmB,OAAO,SAAS;AAAA;",
9
+ "debugId": "ACC9F328BB04A51C64756E2164756E21",
10
+ "names": []
11
+ }
package/dist/index.d.ts CHANGED
@@ -1,56 +1,60 @@
1
- export { c as createAgentX, a as createRemoteAgentX } from './createAgentX-BlZzJ2OM.js';
2
- import { AgentDefinition } from '@agentxjs/types/agentx';
3
- export { AgentDefinition, AgentX, AgentXConfig, LLMConfig, LocalConfig, RemoteConfig, StorageConfig, StorageDriver, Unsubscribe, isLocalConfig, isRemoteConfig } from '@agentxjs/types/agentx';
4
- 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';
5
- export { ImageRecord } from '@agentxjs/types';
6
- export { AgentError, AgentState, AssistantMessage, ContentPart, ErrorMessage, FilePart, ImagePart, Message, MessageRole, MessageSubtype, TextPart, ThinkingPart, ToolCallMessage, ToolCallPart, ToolResultMessage, ToolResultOutput, ToolResultPart, UserMessage } from '@agentxjs/types/agent';
7
- export { ConsoleLogger, ConsoleLoggerOptions, LogContext, LogLevel, Logger, LoggerFactory, LoggerFactoryConfig, LoggerFactoryImpl, createLogger, setLoggerFactory } from '@agentxjs/common';
8
-
1
+ import { AgentX, AgentXConfig } from "@agentxjs/types/agentx";
9
2
  /**
10
- * agentxjs - Unified API for AI Agents
11
- *
12
- * All public types and functions are exported from this single entry point.
13
- * Users only need: `import { ... } from "agentxjs"`
14
- *
15
- * @example
16
- * ```typescript
17
- * import { createAgentX, type AgentX, type SystemEvent } from "agentxjs";
18
- *
19
- * // Local mode
20
- * const agentx = await createAgentX();
21
- *
22
- * // Remote mode
23
- * const agentx = await createAgentX({ server: "ws://localhost:5200" });
24
- *
25
- * // Same API for both modes!
26
- * const res = await agentx.request("container_create_request", {
27
- * containerId: "my-container"
28
- * });
29
- *
30
- * agentx.on("text_delta", (e) => console.log(e.data.text));
31
- * ```
32
- *
33
- * @packageDocumentation
34
- */
35
-
3
+ * Create AgentX instance
4
+ *
5
+ * @param config - Configuration (LocalConfig or RemoteConfig)
6
+ * @returns AgentX instance
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // Remote mode (browser & Node.js)
11
+ * const agentx = await createAgentX({ serverUrl: "ws://localhost:5200" });
12
+ *
13
+ * // Local mode (Node.js only)
14
+ * const agentx = await createAgentX({ llm: { apiKey: "sk-..." } });
15
+ * ```
16
+ */
17
+ declare function createAgentX(config?: AgentXConfig): Promise<AgentX>;
36
18
  /**
37
- * Define an Agent with type safety
38
- *
39
- * Helper function that provides type inference for AgentDefinition.
40
- *
41
- * @example
42
- * ```typescript
43
- * import { defineAgent } from "agentxjs";
44
- *
45
- * export const MyAgent = defineAgent({
46
- * name: "MyAgent",
47
- * systemPrompt: "You are helpful.",
48
- * mcpServers: {
49
- * filesystem: { command: "npx", args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"] }
50
- * }
51
- * });
52
- * ```
53
- */
54
- declare function defineAgent<T extends AgentDefinition>(definition: T): T;
55
-
56
- export { defineAgent };
19
+ * Create AgentX instance in remote mode
20
+ *
21
+ * Connects to an AgentX server via WebSocket.
22
+ * Works in both browser and Node.js environments.
23
+ *
24
+ * @param serverUrl - WebSocket server URL
25
+ * @returns AgentX instance
26
+ */
27
+ declare function createRemoteAgentX(serverUrl: string): Promise<AgentX>;
28
+ import { AgentX as AgentX2, AgentXConfig as AgentXConfig2, LocalConfig, RemoteConfig, LLMConfig, StorageConfig, StorageDriver, Unsubscribe, AgentDefinition } from "@agentxjs/types/agentx";
29
+ import { isLocalConfig, isRemoteConfig } from "@agentxjs/types/agentx";
30
+ import { AgentDefinition as AgentDefinition2 } from "@agentxjs/types/agentx";
31
+ import { SystemEvent, EventSource, EventCategory, EventIntent, EventContext } from "@agentxjs/types/event";
32
+ import { isFromSource, hasIntent, isRequest, isResult, isNotification } from "@agentxjs/types/event";
33
+ import { CommandEvent, CommandRequest, CommandResponse, CommandEventType, CommandRequestType, CommandEventMap, ContainerCreateRequest, ContainerCreateResponse, ContainerGetRequest, ContainerGetResponse, ContainerListRequest, ContainerListResponse, AgentGetRequest, AgentGetResponse, AgentListRequest, AgentListResponse, AgentDestroyRequest, AgentDestroyResponse, MessageSendRequest, MessageSendResponse, AgentInterruptRequest, AgentInterruptResponse, ImageCreateRequest, ImageCreateResponse, ImageRunRequest, ImageRunResponse, ImageStopRequest, ImageStopResponse, ImageUpdateRequest, ImageUpdateResponse, ImageListRequest, ImageListResponse, ImageListItem, ImageGetRequest, ImageGetResponse, ImageDeleteRequest, ImageDeleteResponse } from "@agentxjs/types/event";
34
+ import { isCommandEvent, isCommandRequest, isCommandResponse } from "@agentxjs/types/event";
35
+ import { AgentEvent, AgentEventCategory, AgentStreamEvent, AgentTextDeltaEvent, AgentMessageStartEvent, AgentMessageStopEvent, AgentToolUseStartEvent, AgentToolUseStopEvent, AgentToolResultEvent, AgentStateEvent, ConversationStartEvent, ConversationEndEvent, ConversationThinkingEvent, ConversationRespondingEvent, ToolExecutingEvent, ToolCompletedEvent, ErrorOccurredEvent, AgentMessageEvent, UserMessageEvent, AssistantMessageEvent, ToolCallMessageEvent, ToolResultMessageEvent, AgentTurnEvent, TurnRequestEvent, TurnResponseEvent, TokenUsage } from "@agentxjs/types/event";
36
+ import { isAgentEvent, isAgentStreamEvent, isAgentStateEvent, isAgentMessageEvent, isAgentTurnEvent } from "@agentxjs/types/event";
37
+ import { ImageRecord } from "@agentxjs/types";
38
+ import { Message, MessageRole, MessageSubtype, UserMessage, AssistantMessage, ToolCallMessage, ToolResultMessage, ErrorMessage, AgentError, AgentState, ContentPart, UserContentPart, TextPart, ThinkingPart, ImagePart, FilePart, ToolCallPart, ToolResultPart, ToolResultOutput } from "@agentxjs/types/agent";
39
+ import { createLogger, ConsoleLogger, LoggerFactoryImpl, setLoggerFactory } from "@agentxjs/common";
40
+ import { Logger, LoggerFactory, LogContext, LogLevel, ConsoleLoggerOptions, LoggerFactoryConfig } from "@agentxjs/common";
41
+ /**
42
+ * Define an Agent with type safety
43
+ *
44
+ * Helper function that provides type inference for AgentDefinition.
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * import { defineAgent } from "agentxjs";
49
+ *
50
+ * const MyAgent = defineAgent({
51
+ * name: "MyAgent",
52
+ * systemPrompt: "You are helpful.",
53
+ * mcpServers: {
54
+ * filesystem: { command: "npx", args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"] }
55
+ * }
56
+ * });
57
+ * ```
58
+ */
59
+ declare function defineAgent<T extends AgentDefinition2>(definition: T): T;
60
+ export { setLoggerFactory, isResult, isRequest, isRemoteConfig, isNotification, isLocalConfig, isFromSource, isCommandResponse, isCommandRequest, isCommandEvent, isAgentTurnEvent, isAgentStreamEvent, isAgentStateEvent, isAgentMessageEvent, isAgentEvent, hasIntent, defineAgent, createRemoteAgentX, createLogger, createAgentX, UserMessageEvent, UserMessage, UserContentPart, Unsubscribe, TurnResponseEvent, TurnRequestEvent, ToolResultPart, ToolResultOutput, ToolResultMessageEvent, ToolResultMessage, ToolExecutingEvent, ToolCompletedEvent, ToolCallPart, ToolCallMessageEvent, ToolCallMessage, TokenUsage, ThinkingPart, TextPart, SystemEvent, StorageDriver, StorageConfig, RemoteConfig, MessageSubtype, MessageSendResponse, MessageSendRequest, MessageRole, Message, LoggerFactoryImpl, LoggerFactoryConfig, LoggerFactory, Logger, LogLevel, LogContext, LocalConfig, LLMConfig, ImageUpdateResponse, ImageUpdateRequest, ImageStopResponse, ImageStopRequest, ImageRunResponse, ImageRunRequest, ImageRecord, ImagePart, ImageListResponse, ImageListRequest, ImageListItem, ImageGetResponse, ImageGetRequest, ImageDeleteResponse, ImageDeleteRequest, ImageCreateResponse, ImageCreateRequest, FilePart, EventSource, EventIntent, EventContext, EventCategory, ErrorOccurredEvent, ErrorMessage, ConversationThinkingEvent, ConversationStartEvent, ConversationRespondingEvent, ConversationEndEvent, ContentPart, ContainerListResponse, ContainerListRequest, ContainerGetResponse, ContainerGetRequest, ContainerCreateResponse, ContainerCreateRequest, ConsoleLoggerOptions, ConsoleLogger, CommandResponse, CommandRequestType, CommandRequest, CommandEventType, CommandEventMap, CommandEvent, AssistantMessageEvent, AssistantMessage, AgentXConfig2 as AgentXConfig, AgentX2 as AgentX, AgentTurnEvent, AgentToolUseStopEvent, AgentToolUseStartEvent, AgentToolResultEvent, AgentTextDeltaEvent, AgentStreamEvent, AgentStateEvent, AgentState, AgentMessageStopEvent, AgentMessageStartEvent, AgentMessageEvent, AgentListResponse, AgentListRequest, AgentInterruptResponse, AgentInterruptRequest, AgentGetResponse, AgentGetRequest, AgentEventCategory, AgentEvent, AgentError, AgentDestroyResponse, AgentDestroyRequest, AgentDefinition };
package/dist/index.js CHANGED
@@ -1,39 +1,53 @@
1
- import { WebSocketServer } from '@agentxjs/network';
2
- import { createLogger } from '@agentxjs/common';
3
- export { ConsoleLogger, LoggerFactoryImpl, createLogger, setLoggerFactory } from '@agentxjs/common';
4
- import { isRemoteConfig } from '@agentxjs/types/agentx';
5
- export { isLocalConfig, isRemoteConfig } from '@agentxjs/types/agentx';
6
- export { hasIntent, isAgentEvent, isAgentMessageEvent, isAgentStateEvent, isAgentStreamEvent, isAgentTurnEvent, isCommandEvent, isCommandRequest, isCommandResponse, isFromSource, isNotification, isRequest, isResult } from '@agentxjs/types/event';
7
-
1
+ import { createRequire } from "node:module";
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
8
4
  var __defProp = Object.defineProperty;
9
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
10
- var __esm = (fn, res) => function __init() {
11
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
12
17
  };
13
18
  var __export = (target, all) => {
14
19
  for (var name in all)
15
- __defProp(target, name, { get: all[name], enumerable: true });
20
+ __defProp(target, name, {
21
+ get: all[name],
22
+ enumerable: true,
23
+ configurable: true,
24
+ set: (newValue) => all[name] = () => newValue
25
+ });
16
26
  };
27
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
28
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
17
29
 
18
30
  // src/createLocalAgentX.ts
19
- var createLocalAgentX_exports = {};
20
- __export(createLocalAgentX_exports, {
31
+ var exports_createLocalAgentX = {};
32
+ __export(exports_createLocalAgentX, {
21
33
  createLocalAgentX: () => createLocalAgentX
22
34
  });
35
+ import { WebSocketServer } from "@agentxjs/network";
36
+ import { createLogger } from "@agentxjs/common";
23
37
  async function createLocalAgentX(config) {
24
38
  if (config.logger) {
25
- const { LoggerFactoryImpl: LoggerFactoryImpl2, setLoggerFactory: setLoggerFactory2 } = await import('@agentxjs/common');
26
- LoggerFactoryImpl2.configure({
39
+ const { LoggerFactoryImpl, setLoggerFactory } = await import("@agentxjs/common");
40
+ LoggerFactoryImpl.configure({
27
41
  defaultLevel: config.logger.level,
28
42
  consoleOptions: config.logger.console
29
43
  });
30
44
  if (config.logger.factory) {
31
- setLoggerFactory2(config.logger.factory);
45
+ setLoggerFactory(config.logger.factory);
32
46
  }
33
47
  }
34
- const { createRuntime, createPersistence } = await import('@agentxjs/runtime');
35
- const { homedir } = await import('os');
36
- const { join } = await import('path');
48
+ const { createRuntime, createPersistence } = await import("@agentxjs/runtime");
49
+ const { homedir } = await import("node:os");
50
+ const { join } = await import("node:path");
37
51
  const basePath = config.agentxDir ?? join(homedir(), ".agentx");
38
52
  const storagePath = join(basePath, "data", "agentx.db");
39
53
  const persistence = await createPersistence({
@@ -55,7 +69,7 @@ async function createLocalAgentX(config) {
55
69
  });
56
70
  const wsServer = new WebSocketServer({
57
71
  heartbeat: true,
58
- heartbeatInterval: 3e4,
72
+ heartbeatInterval: 30000,
59
73
  debug: false
60
74
  });
61
75
  wsServer.onConnection((connection) => {
@@ -67,8 +81,7 @@ async function createLocalAgentX(config) {
67
81
  category: event.category
68
82
  });
69
83
  runtime.emit(event);
70
- } catch {
71
- }
84
+ } catch {}
72
85
  });
73
86
  });
74
87
  runtime.onAny((event) => {
@@ -88,17 +101,13 @@ async function createLocalAgentX(config) {
88
101
  wsServer.attach(config.server, "/ws");
89
102
  }
90
103
  return {
91
- // Core API - delegate to runtime
92
104
  request: (type, data, timeout) => runtime.request(type, data, timeout),
93
105
  on: (type, handler) => runtime.on(type, handler),
94
106
  onCommand: (type, handler) => runtime.onCommand(type, handler),
95
107
  emitCommand: (type, data) => runtime.emitCommand(type, data),
96
- // Server API
97
108
  async listen(port, host) {
98
109
  if (config.server) {
99
- throw new Error(
100
- "Cannot listen when attached to existing server. The server should call listen() instead."
101
- );
110
+ throw new Error("Cannot listen when attached to existing server. The server should call listen() instead.");
102
111
  }
103
112
  await wsServer.listen(port, host);
104
113
  },
@@ -112,32 +121,34 @@ async function createLocalAgentX(config) {
112
121
  };
113
122
  }
114
123
  var logger;
115
- var init_createLocalAgentX = __esm({
116
- "src/createLocalAgentX.ts"() {
117
- logger = createLogger("agentx/LocalAgentX");
118
- }
124
+ var init_createLocalAgentX = __esm(() => {
125
+ logger = createLogger("agentx/LocalAgentX");
119
126
  });
120
- var remoteLogger = createLogger("agentx/RemoteClient");
127
+
128
+ // src/createAgentX.ts
129
+ import { isRemoteConfig } from "@agentxjs/types/agentx";
130
+ import { createLogger as createLogger2 } from "@agentxjs/common";
131
+ var remoteLogger = createLogger2("agentx/RemoteClient");
121
132
  async function createAgentX(config) {
122
133
  if (config && isRemoteConfig(config)) {
123
134
  return createRemoteAgentX(config.serverUrl);
124
135
  }
125
- const { createLocalAgentX: createLocalAgentX2 } = await Promise.resolve().then(() => (init_createLocalAgentX(), createLocalAgentX_exports));
136
+ const { createLocalAgentX: createLocalAgentX2 } = await Promise.resolve().then(() => (init_createLocalAgentX(), exports_createLocalAgentX));
126
137
  return createLocalAgentX2(config ?? {});
127
138
  }
128
139
  async function createRemoteAgentX(serverUrl) {
129
- const { createWebSocketClient } = await import('@agentxjs/network');
140
+ const { createWebSocketClient } = await import("@agentxjs/network");
130
141
  const client = await createWebSocketClient({
131
142
  serverUrl,
132
143
  autoReconnect: true,
133
- minReconnectionDelay: 1e3,
144
+ minReconnectionDelay: 1000,
134
145
  maxReconnectionDelay: 1e4,
135
- connectionTimeout: 4e3,
146
+ connectionTimeout: 4000,
136
147
  maxRetries: Infinity,
137
148
  debug: false
138
149
  });
139
- const handlers = /* @__PURE__ */ new Map();
140
- const pendingRequests = /* @__PURE__ */ new Map();
150
+ const handlers = new Map;
151
+ const pendingRequests = new Map;
141
152
  client.onMessage((message) => {
142
153
  try {
143
154
  const event = JSON.parse(message);
@@ -176,8 +187,7 @@ async function createRemoteAgentX(serverUrl) {
176
187
  handler(event);
177
188
  }
178
189
  }
179
- } catch {
180
- }
190
+ } catch {}
181
191
  });
182
192
  client.onClose(() => {
183
193
  remoteLogger.warn("WebSocket closed");
@@ -187,7 +197,7 @@ async function createRemoteAgentX(serverUrl) {
187
197
  });
188
198
  function subscribe(type, handler) {
189
199
  if (!handlers.has(type)) {
190
- handlers.set(type, /* @__PURE__ */ new Set());
200
+ handlers.set(type, new Set);
191
201
  }
192
202
  handlers.get(type).add(handler);
193
203
  return () => {
@@ -195,7 +205,7 @@ async function createRemoteAgentX(serverUrl) {
195
205
  };
196
206
  }
197
207
  return {
198
- request(type, data, timeout = 3e4) {
208
+ request(type, data, timeout = 30000) {
199
209
  return new Promise((resolve, reject) => {
200
210
  const requestId = `req_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;
201
211
  const timer = setTimeout(() => {
@@ -238,8 +248,7 @@ async function createRemoteAgentX(serverUrl) {
238
248
  async listen() {
239
249
  throw new Error("Cannot listen in remote mode");
240
250
  },
241
- async close() {
242
- },
251
+ async close() {},
243
252
  async dispose() {
244
253
  for (const pending of pendingRequests.values()) {
245
254
  clearTimeout(pending.timer);
@@ -251,10 +260,51 @@ async function createRemoteAgentX(serverUrl) {
251
260
  }
252
261
  };
253
262
  }
263
+
264
+ // src/index.ts
265
+ import { isLocalConfig, isRemoteConfig as isRemoteConfig2 } from "@agentxjs/types/agentx";
266
+ import {
267
+ isFromSource,
268
+ hasIntent,
269
+ isRequest,
270
+ isResult,
271
+ isNotification
272
+ } from "@agentxjs/types/event";
273
+ import { isCommandEvent, isCommandRequest, isCommandResponse } from "@agentxjs/types/event";
274
+ import {
275
+ isAgentEvent,
276
+ isAgentStreamEvent,
277
+ isAgentStateEvent,
278
+ isAgentMessageEvent,
279
+ isAgentTurnEvent
280
+ } from "@agentxjs/types/event";
281
+ import { createLogger as createLogger3, ConsoleLogger, LoggerFactoryImpl, setLoggerFactory } from "@agentxjs/common";
254
282
  function defineAgent(definition) {
255
283
  return definition;
256
284
  }
285
+ export {
286
+ setLoggerFactory,
287
+ isResult,
288
+ isRequest,
289
+ isRemoteConfig2 as isRemoteConfig,
290
+ isNotification,
291
+ isLocalConfig,
292
+ isFromSource,
293
+ isCommandResponse,
294
+ isCommandRequest,
295
+ isCommandEvent,
296
+ isAgentTurnEvent,
297
+ isAgentStreamEvent,
298
+ isAgentStateEvent,
299
+ isAgentMessageEvent,
300
+ isAgentEvent,
301
+ hasIntent,
302
+ defineAgent,
303
+ createRemoteAgentX,
304
+ createLogger3 as createLogger,
305
+ createAgentX,
306
+ LoggerFactoryImpl,
307
+ ConsoleLogger
308
+ };
257
309
 
258
- export { createAgentX, createRemoteAgentX, defineAgent };
259
- //# sourceMappingURL=index.js.map
260
- //# sourceMappingURL=index.js.map
310
+ //# debugId=861D2D8172AB3ED464756E2164756E21