agentxjs 2.8.1-dev-20260316090321 → 2.9.0-dev-20260316094416

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.
@@ -95,24 +95,21 @@ var CommandHandler = class {
95
95
  { imageRepository, sessionRepository }
96
96
  );
97
97
  return ok({
98
- record: image.toRecord(),
99
- __subscriptions: [image.sessionId]
98
+ record: image.toRecord()
100
99
  });
101
100
  }
102
101
  async handleImageGet(params) {
103
102
  const { imageId } = params;
104
103
  const record = await this.runtime.platform.imageRepository.findImageById(imageId);
105
104
  return ok({
106
- record,
107
- __subscriptions: record?.sessionId ? [record.sessionId] : void 0
105
+ record
108
106
  });
109
107
  }
110
108
  async handleImageList(params) {
111
109
  const { containerId } = params;
112
110
  const records = containerId ? await this.runtime.platform.imageRepository.findImagesByContainerId(containerId) : await this.runtime.platform.imageRepository.findAllImages();
113
111
  return ok({
114
- records,
115
- __subscriptions: records.map((r) => r.sessionId)
112
+ records
116
113
  });
117
114
  }
118
115
  async handleImageDelete(params) {
@@ -411,4 +408,4 @@ var CommandHandler = class {
411
408
  export {
412
409
  CommandHandler
413
410
  };
414
- //# sourceMappingURL=chunk-5CG2WPTC.js.map
411
+ //# sourceMappingURL=chunk-CA7HH2XW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/CommandHandler.ts"],"sourcesContent":["/**\n * CommandHandler - Handles JSON-RPC requests directly\n *\n * No longer uses EventBus for request/response. Instead:\n * - Receives RPC requests directly\n * - Returns RPC responses directly\n * - EventBus is only used for stream events (notifications)\n */\n\nimport type { UserContentPart } from \"@agentxjs/core/agent\";\nimport { DEFAULT_CONTAINER_ID } from \"@agentxjs/core/container\";\nimport type { RpcMethod } from \"@agentxjs/core/network\";\nimport type { AgentXRuntime } from \"@agentxjs/core/runtime\";\nimport { createLogger } from \"@deepracticex/logger\";\n\nconst logger = createLogger(\"server/CommandHandler\");\n\n/**\n * RPC Result type\n */\nexport interface RpcResult<T = unknown> {\n success: true;\n data: T;\n}\n\nexport interface RpcError {\n success: false;\n code: number;\n message: string;\n}\n\nexport type RpcResponse<T = unknown> = RpcResult<T> | RpcError;\n\n/**\n * Helper to create success result\n */\nfunction ok<T>(data: T): RpcResult<T> {\n return { success: true, data };\n}\n\n/**\n * Helper to create error result\n */\nfunction err(code: number, message: string): RpcError {\n return { success: false, code, message };\n}\n\n/**\n * CommandHandler - Processes RPC requests directly\n */\nexport class CommandHandler {\n private readonly runtime: AgentXRuntime;\n\n constructor(runtime: AgentXRuntime) {\n this.runtime = runtime;\n logger.debug(\"CommandHandler created\");\n }\n\n /**\n * Handle an RPC request and return response\n */\n async handle(method: RpcMethod, params: unknown): Promise<RpcResponse> {\n logger.debug(\"Handling RPC request\", { method });\n\n try {\n switch (method) {\n // Image\n case \"image.create\":\n return await this.handleImageCreate(params);\n case \"image.get\":\n return await this.handleImageGet(params);\n case \"image.list\":\n return await this.handleImageList(params);\n case \"image.delete\":\n return await this.handleImageDelete(params);\n case \"image.run\":\n return await this.handleImageRun(params);\n case \"image.stop\":\n return await this.handleImageStop(params);\n case \"image.update\":\n return await this.handleImageUpdate(params);\n case \"image.messages\":\n return await this.handleImageMessages(params);\n\n // Instance\n case \"instance.get\":\n return await this.handleAgentGet(params);\n case \"instance.list\":\n return await this.handleAgentList(params);\n case \"instance.destroy\":\n return await this.handleAgentDestroy(params);\n case \"instance.destroyAll\":\n return await this.handleAgentDestroyAll(params);\n case \"instance.interrupt\":\n return await this.handleAgentInterrupt(params);\n\n // Message\n case \"message.send\":\n return await this.handleMessageSend(params);\n case \"message.truncateAfter\":\n return await this.handleMessageTruncateAfter(params);\n\n // LLM Provider\n case \"llm.create\":\n return await this.handleLLMCreate(params);\n case \"llm.get\":\n return await this.handleLLMGet(params);\n case \"llm.list\":\n return await this.handleLLMList(params);\n case \"llm.update\":\n return await this.handleLLMUpdate(params);\n case \"llm.delete\":\n return await this.handleLLMDelete(params);\n case \"llm.default\":\n return await this.handleLLMDefault(params);\n\n default:\n return err(-32601, `Method not found: ${method}`);\n }\n } catch (error) {\n logger.error(\"RPC handler error\", { method, error });\n return err(-32000, error instanceof Error ? error.message : String(error));\n }\n }\n\n // ==================== Image Commands ====================\n\n private async handleImageCreate(params: unknown): Promise<RpcResponse> {\n const {\n containerId: _cid,\n name,\n description,\n contextId,\n model,\n systemPrompt,\n mcpServers,\n customData,\n } = params as {\n containerId?: string;\n name?: string;\n description?: string;\n contextId?: string;\n model?: string;\n systemPrompt?: string;\n mcpServers?: Record<string, unknown>;\n customData?: Record<string, unknown>;\n };\n\n const { imageRepository, sessionRepository } = this.runtime.platform;\n const { createImage } = await import(\"@agentxjs/core/image\");\n\n const embody =\n model || systemPrompt || mcpServers\n ? ({ model, systemPrompt, mcpServers } as import(\"@agentxjs/core/persistence\").Embodiment)\n : undefined;\n\n const image = await createImage(\n { containerId: DEFAULT_CONTAINER_ID, name, description, contextId, embody, customData },\n { imageRepository, sessionRepository }\n );\n\n return ok({\n record: image.toRecord(),\n });\n }\n\n private async handleImageGet(params: unknown): Promise<RpcResponse> {\n const { imageId } = params as { imageId: string };\n const record = await this.runtime.platform.imageRepository.findImageById(imageId);\n return ok({\n record,\n });\n }\n\n private async handleImageList(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId?: string };\n const records = containerId\n ? await this.runtime.platform.imageRepository.findImagesByContainerId(containerId)\n : await this.runtime.platform.imageRepository.findAllImages();\n\n return ok({\n records,\n });\n }\n\n private async handleImageDelete(params: unknown): Promise<RpcResponse> {\n const { imageId } = params as { imageId: string };\n const { loadImage } = await import(\"@agentxjs/core/image\");\n const { imageRepository, sessionRepository } = this.runtime.platform;\n\n const image = await loadImage(imageId, { imageRepository, sessionRepository });\n if (image) {\n await image.delete();\n }\n\n return ok({ imageId });\n }\n\n private async handleImageRun(params: unknown): Promise<RpcResponse> {\n const { imageId, instanceId: requestedInstanceId } = params as {\n imageId: string;\n instanceId?: string;\n };\n\n // Check if already have a running agent for this image\n const existingAgent = this.runtime\n .getAgents()\n .find((a) => a.imageId === imageId && a.lifecycle === \"running\");\n\n if (existingAgent) {\n logger.debug(\"Reusing existing agent for image\", {\n imageId,\n instanceId: existingAgent.instanceId,\n });\n return ok({\n imageId,\n instanceId: existingAgent.instanceId,\n sessionId: existingAgent.sessionId,\n containerId: existingAgent.containerId,\n reused: true,\n });\n }\n\n // Create new agent (with optional custom instanceId)\n const agent = await this.runtime.createAgent({\n imageId,\n instanceId: requestedInstanceId,\n });\n logger.info(\"Created new agent for image\", {\n imageId,\n instanceId: agent.instanceId,\n });\n\n return ok({\n imageId,\n instanceId: agent.instanceId,\n sessionId: agent.sessionId,\n containerId: agent.containerId,\n reused: false,\n });\n }\n\n private async handleImageStop(params: unknown): Promise<RpcResponse> {\n const { imageId } = params as { imageId: string };\n\n // Find running agent for this image\n const agent = this.runtime\n .getAgents()\n .find((a) => a.imageId === imageId && a.lifecycle === \"running\");\n\n if (agent) {\n await this.runtime.stopAgent(agent.instanceId);\n logger.info(\"Stopped agent for image\", { imageId, instanceId: agent.instanceId });\n } else {\n logger.debug(\"No running agent found for image\", { imageId });\n }\n\n return ok({ imageId });\n }\n\n private async handleImageUpdate(params: unknown): Promise<RpcResponse> {\n const { imageId, updates } = params as {\n imageId: string;\n updates: {\n name?: string;\n description?: string;\n model?: string;\n systemPrompt?: string;\n mcpServers?: Record<string, unknown>;\n customData?: Record<string, unknown>;\n };\n };\n\n // Get existing image\n const imageRecord = await this.runtime.platform.imageRepository.findImageById(imageId);\n if (!imageRecord) {\n return err(404, `Image not found: ${imageId}`);\n }\n\n // Extract embody fields from flat updates\n const { model, systemPrompt, mcpServers, ...otherUpdates } = updates;\n const embodyUpdates =\n model !== undefined || systemPrompt !== undefined || mcpServers !== undefined\n ? ({\n ...imageRecord.embody,\n model,\n systemPrompt,\n mcpServers,\n } as import(\"@agentxjs/core/persistence\").Embodiment)\n : imageRecord.embody;\n\n const updatedRecord = {\n ...imageRecord,\n ...otherUpdates,\n embody: embodyUpdates,\n updatedAt: Date.now(),\n };\n\n await this.runtime.platform.imageRepository.saveImage(updatedRecord);\n\n logger.info(\"Updated image\", { imageId, updates });\n\n return ok({ record: updatedRecord });\n }\n\n private async handleImageMessages(params: unknown): Promise<RpcResponse> {\n const { imageId } = params as { imageId: string };\n\n // Get image record to find sessionId\n const imageRecord = await this.runtime.platform.imageRepository.findImageById(imageId);\n if (!imageRecord) {\n return err(404, `Image not found: ${imageId}`);\n }\n\n // Get messages from session\n const messages = await this.runtime.platform.sessionRepository.getMessages(\n imageRecord.sessionId\n );\n\n logger.debug(\"Got messages for image\", { imageId, count: messages.length });\n\n return ok({ imageId, messages });\n }\n\n // ==================== Agent Commands ====================\n\n private async handleAgentGet(params: unknown): Promise<RpcResponse> {\n const { instanceId } = params as { instanceId: string };\n const agent = this.runtime.getAgent(instanceId);\n\n return ok({\n agent: agent\n ? {\n instanceId: agent.instanceId,\n imageId: agent.imageId,\n containerId: agent.containerId,\n sessionId: agent.sessionId,\n lifecycle: agent.lifecycle,\n }\n : null,\n exists: !!agent,\n });\n }\n\n private async handleAgentList(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId?: string };\n const agents = containerId\n ? this.runtime.getAgentsByContainer(containerId)\n : this.runtime.getAgents();\n\n return ok({\n agents: agents.map((a) => ({\n instanceId: a.instanceId,\n imageId: a.imageId,\n containerId: a.containerId,\n sessionId: a.sessionId,\n lifecycle: a.lifecycle,\n })),\n });\n }\n\n private async handleAgentDestroy(params: unknown): Promise<RpcResponse> {\n const { instanceId } = params as { instanceId: string };\n\n // Check if agent exists first\n const agent = this.runtime.getAgent(instanceId);\n if (!agent) {\n return ok({ instanceId, success: false });\n }\n\n await this.runtime.destroyAgent(instanceId);\n return ok({ instanceId, success: true });\n }\n\n private async handleAgentDestroyAll(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId: string };\n const agents = this.runtime.getAgentsByContainer(containerId);\n for (const agent of agents) {\n await this.runtime.destroyAgent(agent.instanceId);\n }\n return ok({ containerId });\n }\n\n /**\n * Resolve instanceId from either instanceId or imageId.\n * With imageId, finds existing agent or auto-creates one.\n */\n private async resolveInstanceId(params: {\n instanceId?: string;\n imageId?: string;\n }): Promise<string> {\n const { instanceId, imageId } = params;\n\n if (instanceId) {\n // Check if agent exists, if not try imageId fallback\n const agent = this.runtime.getAgent(instanceId);\n if (agent) return instanceId;\n // Agent gone (server restart?) — try to find by imageId from stored agents\n }\n\n if (imageId) {\n const existingAgent = this.runtime\n .getAgents()\n .find((a) => a.imageId === imageId && a.lifecycle === \"running\");\n\n if (existingAgent) {\n return existingAgent.instanceId;\n }\n\n // Auto-create agent for this image\n const agent = await this.runtime.createAgent({ imageId });\n logger.info(\"Auto-created agent\", { imageId, instanceId: agent.instanceId });\n return agent.instanceId;\n }\n\n throw new Error(\"Either instanceId or imageId is required\");\n }\n\n private async handleAgentInterrupt(params: unknown): Promise<RpcResponse> {\n const { instanceId, imageId } = params as { instanceId?: string; imageId?: string };\n const resolved = await this.resolveInstanceId({ instanceId, imageId });\n this.runtime.interrupt(resolved);\n return ok({ instanceId: resolved });\n }\n\n // ==================== Message Commands ====================\n\n private async handleMessageSend(params: unknown): Promise<RpcResponse> {\n const { instanceId, imageId, content } = params as {\n instanceId?: string;\n imageId?: string;\n content: string | UserContentPart[];\n };\n\n const resolved = await this.resolveInstanceId({ instanceId, imageId });\n await this.runtime.receive(resolved, content);\n return ok({ instanceId: resolved, imageId });\n }\n\n private async handleMessageTruncateAfter(params: unknown): Promise<RpcResponse> {\n const { instanceId, imageId, messageId } = params as {\n instanceId?: string;\n imageId?: string;\n messageId: string;\n };\n\n if (!messageId) {\n return err(-32602, \"messageId is required\");\n }\n\n const resolved = await this.resolveInstanceId({ instanceId, imageId });\n const agent = this.runtime.getAgent(resolved);\n if (!agent) {\n return err(-32602, `Agent not found: ${resolved}`);\n }\n\n const { sessionRepository } = this.runtime.platform;\n\n // Get messages, find the target, truncate\n const messages = await sessionRepository.getMessages(agent.sessionId);\n const idx = messages.findIndex((m) => m.id === messageId);\n if (idx === -1) {\n return err(-32602, `Message not found: ${messageId}`);\n }\n\n // Keep messages up to and including messageId\n const kept = messages.slice(0, idx + 1);\n await sessionRepository.clearMessages(agent.sessionId);\n for (const msg of kept) {\n await sessionRepository.addMessage(agent.sessionId, msg);\n }\n\n return ok({ truncatedCount: messages.length - kept.length });\n }\n\n // ==================== LLM Provider Commands ====================\n\n private async handleLLMCreate(params: unknown): Promise<RpcResponse> {\n const {\n containerId: _cid,\n name,\n vendor,\n protocol,\n apiKey,\n baseUrl,\n model,\n } = params as {\n containerId?: string;\n name: string;\n vendor: string;\n protocol: string;\n apiKey: string;\n baseUrl?: string;\n model?: string;\n };\n\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n const { generateId } = await import(\"@deepracticex/id\");\n const now = Date.now();\n const record = {\n id: generateId(\"llm\"),\n containerId: DEFAULT_CONTAINER_ID,\n name,\n vendor,\n protocol: protocol as \"anthropic\" | \"openai\",\n apiKey,\n baseUrl,\n model,\n isDefault: false,\n createdAt: now,\n updatedAt: now,\n };\n\n await repo.saveLLMProvider(record);\n return ok({ record });\n }\n\n private async handleLLMGet(params: unknown): Promise<RpcResponse> {\n const { id } = params as { id: string };\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n const record = await repo.findLLMProviderById(id);\n return ok({ record });\n }\n\n private async handleLLMList(params: unknown): Promise<RpcResponse> {\n const { containerId } = params as { containerId: string };\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n const records = await repo.findLLMProvidersByContainerId(containerId);\n return ok({ records });\n }\n\n private async handleLLMUpdate(params: unknown): Promise<RpcResponse> {\n const { id, updates } = params as {\n id: string;\n updates: Record<string, unknown>;\n };\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n const existing = await repo.findLLMProviderById(id);\n if (!existing) {\n return err(404, `LLM provider not found: ${id}`);\n }\n\n const updated = {\n ...existing,\n ...updates,\n id: existing.id,\n containerId: existing.containerId,\n createdAt: existing.createdAt,\n updatedAt: Date.now(),\n };\n\n await repo.saveLLMProvider(updated);\n return ok({ record: updated });\n }\n\n private async handleLLMDelete(params: unknown): Promise<RpcResponse> {\n const { id } = params as { id: string };\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n await repo.deleteLLMProvider(id);\n return ok({ id });\n }\n\n private async handleLLMDefault(params: unknown): Promise<RpcResponse> {\n const { id, containerId } = params as { id?: string; containerId?: string };\n const repo = this.runtime.platform.llmProviderRepository;\n if (!repo) {\n return err(-32000, \"LLM provider repository not available\");\n }\n\n if (id) {\n // Set default\n await repo.setDefaultLLMProvider(id);\n return ok({ id });\n }\n if (containerId) {\n // Get default\n const record = await repo.findDefaultLLMProvider(containerId);\n return ok({ record });\n }\n return err(-32602, \"Either id or containerId is required\");\n }\n\n // ==================== Lifecycle ====================\n\n dispose(): void {\n logger.debug(\"CommandHandler disposed\");\n }\n}\n"],"mappings":";AAUA,SAAS,4BAA4B;AAGrC,SAAS,oBAAoB;AAE7B,IAAM,SAAS,aAAa,uBAAuB;AAqBnD,SAAS,GAAM,MAAuB;AACpC,SAAO,EAAE,SAAS,MAAM,KAAK;AAC/B;AAKA,SAAS,IAAI,MAAc,SAA2B;AACpD,SAAO,EAAE,SAAS,OAAO,MAAM,QAAQ;AACzC;AAKO,IAAM,iBAAN,MAAqB;AAAA,EACT;AAAA,EAEjB,YAAY,SAAwB;AAClC,SAAK,UAAU;AACf,WAAO,MAAM,wBAAwB;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,QAAmB,QAAuC;AACrE,WAAO,MAAM,wBAAwB,EAAE,OAAO,CAAC;AAE/C,QAAI;AACF,cAAQ,QAAQ;AAAA;AAAA,QAEd,KAAK;AACH,iBAAO,MAAM,KAAK,kBAAkB,MAAM;AAAA,QAC5C,KAAK;AACH,iBAAO,MAAM,KAAK,eAAe,MAAM;AAAA,QACzC,KAAK;AACH,iBAAO,MAAM,KAAK,gBAAgB,MAAM;AAAA,QAC1C,KAAK;AACH,iBAAO,MAAM,KAAK,kBAAkB,MAAM;AAAA,QAC5C,KAAK;AACH,iBAAO,MAAM,KAAK,eAAe,MAAM;AAAA,QACzC,KAAK;AACH,iBAAO,MAAM,KAAK,gBAAgB,MAAM;AAAA,QAC1C,KAAK;AACH,iBAAO,MAAM,KAAK,kBAAkB,MAAM;AAAA,QAC5C,KAAK;AACH,iBAAO,MAAM,KAAK,oBAAoB,MAAM;AAAA;AAAA,QAG9C,KAAK;AACH,iBAAO,MAAM,KAAK,eAAe,MAAM;AAAA,QACzC,KAAK;AACH,iBAAO,MAAM,KAAK,gBAAgB,MAAM;AAAA,QAC1C,KAAK;AACH,iBAAO,MAAM,KAAK,mBAAmB,MAAM;AAAA,QAC7C,KAAK;AACH,iBAAO,MAAM,KAAK,sBAAsB,MAAM;AAAA,QAChD,KAAK;AACH,iBAAO,MAAM,KAAK,qBAAqB,MAAM;AAAA;AAAA,QAG/C,KAAK;AACH,iBAAO,MAAM,KAAK,kBAAkB,MAAM;AAAA,QAC5C,KAAK;AACH,iBAAO,MAAM,KAAK,2BAA2B,MAAM;AAAA;AAAA,QAGrD,KAAK;AACH,iBAAO,MAAM,KAAK,gBAAgB,MAAM;AAAA,QAC1C,KAAK;AACH,iBAAO,MAAM,KAAK,aAAa,MAAM;AAAA,QACvC,KAAK;AACH,iBAAO,MAAM,KAAK,cAAc,MAAM;AAAA,QACxC,KAAK;AACH,iBAAO,MAAM,KAAK,gBAAgB,MAAM;AAAA,QAC1C,KAAK;AACH,iBAAO,MAAM,KAAK,gBAAgB,MAAM;AAAA,QAC1C,KAAK;AACH,iBAAO,MAAM,KAAK,iBAAiB,MAAM;AAAA,QAE3C;AACE,iBAAO,IAAI,QAAQ,qBAAqB,MAAM,EAAE;AAAA,MACpD;AAAA,IACF,SAAS,OAAO;AACd,aAAO,MAAM,qBAAqB,EAAE,QAAQ,MAAM,CAAC;AACnD,aAAO,IAAI,OAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IAC3E;AAAA,EACF;AAAA;AAAA,EAIA,MAAc,kBAAkB,QAAuC;AACrE,UAAM;AAAA,MACJ,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAWJ,UAAM,EAAE,iBAAiB,kBAAkB,IAAI,KAAK,QAAQ;AAC5D,UAAM,EAAE,YAAY,IAAI,MAAM,OAAO,sBAAsB;AAE3D,UAAM,SACJ,SAAS,gBAAgB,aACpB,EAAE,OAAO,cAAc,WAAW,IACnC;AAEN,UAAM,QAAQ,MAAM;AAAA,MAClB,EAAE,aAAa,sBAAsB,MAAM,aAAa,WAAW,QAAQ,WAAW;AAAA,MACtF,EAAE,iBAAiB,kBAAkB;AAAA,IACvC;AAEA,WAAO,GAAG;AAAA,MACR,QAAQ,MAAM,SAAS;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,eAAe,QAAuC;AAClE,UAAM,EAAE,QAAQ,IAAI;AACpB,UAAM,SAAS,MAAM,KAAK,QAAQ,SAAS,gBAAgB,cAAc,OAAO;AAChF,WAAO,GAAG;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,gBAAgB,QAAuC;AACnE,UAAM,EAAE,YAAY,IAAI;AACxB,UAAM,UAAU,cACZ,MAAM,KAAK,QAAQ,SAAS,gBAAgB,wBAAwB,WAAW,IAC/E,MAAM,KAAK,QAAQ,SAAS,gBAAgB,cAAc;AAE9D,WAAO,GAAG;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,kBAAkB,QAAuC;AACrE,UAAM,EAAE,QAAQ,IAAI;AACpB,UAAM,EAAE,UAAU,IAAI,MAAM,OAAO,sBAAsB;AACzD,UAAM,EAAE,iBAAiB,kBAAkB,IAAI,KAAK,QAAQ;AAE5D,UAAM,QAAQ,MAAM,UAAU,SAAS,EAAE,iBAAiB,kBAAkB,CAAC;AAC7E,QAAI,OAAO;AACT,YAAM,MAAM,OAAO;AAAA,IACrB;AAEA,WAAO,GAAG,EAAE,QAAQ,CAAC;AAAA,EACvB;AAAA,EAEA,MAAc,eAAe,QAAuC;AAClE,UAAM,EAAE,SAAS,YAAY,oBAAoB,IAAI;AAMrD,UAAM,gBAAgB,KAAK,QACxB,UAAU,EACV,KAAK,CAAC,MAAM,EAAE,YAAY,WAAW,EAAE,cAAc,SAAS;AAEjE,QAAI,eAAe;AACjB,aAAO,MAAM,oCAAoC;AAAA,QAC/C;AAAA,QACA,YAAY,cAAc;AAAA,MAC5B,CAAC;AACD,aAAO,GAAG;AAAA,QACR;AAAA,QACA,YAAY,cAAc;AAAA,QAC1B,WAAW,cAAc;AAAA,QACzB,aAAa,cAAc;AAAA,QAC3B,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAGA,UAAM,QAAQ,MAAM,KAAK,QAAQ,YAAY;AAAA,MAC3C;AAAA,MACA,YAAY;AAAA,IACd,CAAC;AACD,WAAO,KAAK,+BAA+B;AAAA,MACzC;AAAA,MACA,YAAY,MAAM;AAAA,IACpB,CAAC;AAED,WAAO,GAAG;AAAA,MACR;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,WAAW,MAAM;AAAA,MACjB,aAAa,MAAM;AAAA,MACnB,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,gBAAgB,QAAuC;AACnE,UAAM,EAAE,QAAQ,IAAI;AAGpB,UAAM,QAAQ,KAAK,QAChB,UAAU,EACV,KAAK,CAAC,MAAM,EAAE,YAAY,WAAW,EAAE,cAAc,SAAS;AAEjE,QAAI,OAAO;AACT,YAAM,KAAK,QAAQ,UAAU,MAAM,UAAU;AAC7C,aAAO,KAAK,2BAA2B,EAAE,SAAS,YAAY,MAAM,WAAW,CAAC;AAAA,IAClF,OAAO;AACL,aAAO,MAAM,oCAAoC,EAAE,QAAQ,CAAC;AAAA,IAC9D;AAEA,WAAO,GAAG,EAAE,QAAQ,CAAC;AAAA,EACvB;AAAA,EAEA,MAAc,kBAAkB,QAAuC;AACrE,UAAM,EAAE,SAAS,QAAQ,IAAI;AAa7B,UAAM,cAAc,MAAM,KAAK,QAAQ,SAAS,gBAAgB,cAAc,OAAO;AACrF,QAAI,CAAC,aAAa;AAChB,aAAO,IAAI,KAAK,oBAAoB,OAAO,EAAE;AAAA,IAC/C;AAGA,UAAM,EAAE,OAAO,cAAc,YAAY,GAAG,aAAa,IAAI;AAC7D,UAAM,gBACJ,UAAU,UAAa,iBAAiB,UAAa,eAAe,SAC/D;AAAA,MACC,GAAG,YAAY;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF,IACA,YAAY;AAElB,UAAM,gBAAgB;AAAA,MACpB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,WAAW,KAAK,IAAI;AAAA,IACtB;AAEA,UAAM,KAAK,QAAQ,SAAS,gBAAgB,UAAU,aAAa;AAEnE,WAAO,KAAK,iBAAiB,EAAE,SAAS,QAAQ,CAAC;AAEjD,WAAO,GAAG,EAAE,QAAQ,cAAc,CAAC;AAAA,EACrC;AAAA,EAEA,MAAc,oBAAoB,QAAuC;AACvE,UAAM,EAAE,QAAQ,IAAI;AAGpB,UAAM,cAAc,MAAM,KAAK,QAAQ,SAAS,gBAAgB,cAAc,OAAO;AACrF,QAAI,CAAC,aAAa;AAChB,aAAO,IAAI,KAAK,oBAAoB,OAAO,EAAE;AAAA,IAC/C;AAGA,UAAM,WAAW,MAAM,KAAK,QAAQ,SAAS,kBAAkB;AAAA,MAC7D,YAAY;AAAA,IACd;AAEA,WAAO,MAAM,0BAA0B,EAAE,SAAS,OAAO,SAAS,OAAO,CAAC;AAE1E,WAAO,GAAG,EAAE,SAAS,SAAS,CAAC;AAAA,EACjC;AAAA;AAAA,EAIA,MAAc,eAAe,QAAuC;AAClE,UAAM,EAAE,WAAW,IAAI;AACvB,UAAM,QAAQ,KAAK,QAAQ,SAAS,UAAU;AAE9C,WAAO,GAAG;AAAA,MACR,OAAO,QACH;AAAA,QACE,YAAY,MAAM;AAAA,QAClB,SAAS,MAAM;AAAA,QACf,aAAa,MAAM;AAAA,QACnB,WAAW,MAAM;AAAA,QACjB,WAAW,MAAM;AAAA,MACnB,IACA;AAAA,MACJ,QAAQ,CAAC,CAAC;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,gBAAgB,QAAuC;AACnE,UAAM,EAAE,YAAY,IAAI;AACxB,UAAM,SAAS,cACX,KAAK,QAAQ,qBAAqB,WAAW,IAC7C,KAAK,QAAQ,UAAU;AAE3B,WAAO,GAAG;AAAA,MACR,QAAQ,OAAO,IAAI,CAAC,OAAO;AAAA,QACzB,YAAY,EAAE;AAAA,QACd,SAAS,EAAE;AAAA,QACX,aAAa,EAAE;AAAA,QACf,WAAW,EAAE;AAAA,QACb,WAAW,EAAE;AAAA,MACf,EAAE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,mBAAmB,QAAuC;AACtE,UAAM,EAAE,WAAW,IAAI;AAGvB,UAAM,QAAQ,KAAK,QAAQ,SAAS,UAAU;AAC9C,QAAI,CAAC,OAAO;AACV,aAAO,GAAG,EAAE,YAAY,SAAS,MAAM,CAAC;AAAA,IAC1C;AAEA,UAAM,KAAK,QAAQ,aAAa,UAAU;AAC1C,WAAO,GAAG,EAAE,YAAY,SAAS,KAAK,CAAC;AAAA,EACzC;AAAA,EAEA,MAAc,sBAAsB,QAAuC;AACzE,UAAM,EAAE,YAAY,IAAI;AACxB,UAAM,SAAS,KAAK,QAAQ,qBAAqB,WAAW;AAC5D,eAAW,SAAS,QAAQ;AAC1B,YAAM,KAAK,QAAQ,aAAa,MAAM,UAAU;AAAA,IAClD;AACA,WAAO,GAAG,EAAE,YAAY,CAAC;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,kBAAkB,QAGZ;AAClB,UAAM,EAAE,YAAY,QAAQ,IAAI;AAEhC,QAAI,YAAY;AAEd,YAAM,QAAQ,KAAK,QAAQ,SAAS,UAAU;AAC9C,UAAI,MAAO,QAAO;AAAA,IAEpB;AAEA,QAAI,SAAS;AACX,YAAM,gBAAgB,KAAK,QACxB,UAAU,EACV,KAAK,CAAC,MAAM,EAAE,YAAY,WAAW,EAAE,cAAc,SAAS;AAEjE,UAAI,eAAe;AACjB,eAAO,cAAc;AAAA,MACvB;AAGA,YAAM,QAAQ,MAAM,KAAK,QAAQ,YAAY,EAAE,QAAQ,CAAC;AACxD,aAAO,KAAK,sBAAsB,EAAE,SAAS,YAAY,MAAM,WAAW,CAAC;AAC3E,aAAO,MAAM;AAAA,IACf;AAEA,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAAA,EAEA,MAAc,qBAAqB,QAAuC;AACxE,UAAM,EAAE,YAAY,QAAQ,IAAI;AAChC,UAAM,WAAW,MAAM,KAAK,kBAAkB,EAAE,YAAY,QAAQ,CAAC;AACrE,SAAK,QAAQ,UAAU,QAAQ;AAC/B,WAAO,GAAG,EAAE,YAAY,SAAS,CAAC;AAAA,EACpC;AAAA;AAAA,EAIA,MAAc,kBAAkB,QAAuC;AACrE,UAAM,EAAE,YAAY,SAAS,QAAQ,IAAI;AAMzC,UAAM,WAAW,MAAM,KAAK,kBAAkB,EAAE,YAAY,QAAQ,CAAC;AACrE,UAAM,KAAK,QAAQ,QAAQ,UAAU,OAAO;AAC5C,WAAO,GAAG,EAAE,YAAY,UAAU,QAAQ,CAAC;AAAA,EAC7C;AAAA,EAEA,MAAc,2BAA2B,QAAuC;AAC9E,UAAM,EAAE,YAAY,SAAS,UAAU,IAAI;AAM3C,QAAI,CAAC,WAAW;AACd,aAAO,IAAI,QAAQ,uBAAuB;AAAA,IAC5C;AAEA,UAAM,WAAW,MAAM,KAAK,kBAAkB,EAAE,YAAY,QAAQ,CAAC;AACrE,UAAM,QAAQ,KAAK,QAAQ,SAAS,QAAQ;AAC5C,QAAI,CAAC,OAAO;AACV,aAAO,IAAI,QAAQ,oBAAoB,QAAQ,EAAE;AAAA,IACnD;AAEA,UAAM,EAAE,kBAAkB,IAAI,KAAK,QAAQ;AAG3C,UAAM,WAAW,MAAM,kBAAkB,YAAY,MAAM,SAAS;AACpE,UAAM,MAAM,SAAS,UAAU,CAAC,MAAM,EAAE,OAAO,SAAS;AACxD,QAAI,QAAQ,IAAI;AACd,aAAO,IAAI,QAAQ,sBAAsB,SAAS,EAAE;AAAA,IACtD;AAGA,UAAM,OAAO,SAAS,MAAM,GAAG,MAAM,CAAC;AACtC,UAAM,kBAAkB,cAAc,MAAM,SAAS;AACrD,eAAW,OAAO,MAAM;AACtB,YAAM,kBAAkB,WAAW,MAAM,WAAW,GAAG;AAAA,IACzD;AAEA,WAAO,GAAG,EAAE,gBAAgB,SAAS,SAAS,KAAK,OAAO,CAAC;AAAA,EAC7D;AAAA;AAAA,EAIA,MAAc,gBAAgB,QAAuC;AACnE,UAAM;AAAA,MACJ,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAUJ,UAAM,OAAO,KAAK,QAAQ,SAAS;AACnC,QAAI,CAAC,MAAM;AACT,aAAO,IAAI,OAAQ,uCAAuC;AAAA,IAC5D;AAEA,UAAM,EAAE,WAAW,IAAI,MAAM,OAAO,kBAAkB;AACtD,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,SAAS;AAAA,MACb,IAAI,WAAW,KAAK;AAAA,MACpB,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,IACb;AAEA,UAAM,KAAK,gBAAgB,MAAM;AACjC,WAAO,GAAG,EAAE,OAAO,CAAC;AAAA,EACtB;AAAA,EAEA,MAAc,aAAa,QAAuC;AAChE,UAAM,EAAE,GAAG,IAAI;AACf,UAAM,OAAO,KAAK,QAAQ,SAAS;AACnC,QAAI,CAAC,MAAM;AACT,aAAO,IAAI,OAAQ,uCAAuC;AAAA,IAC5D;AAEA,UAAM,SAAS,MAAM,KAAK,oBAAoB,EAAE;AAChD,WAAO,GAAG,EAAE,OAAO,CAAC;AAAA,EACtB;AAAA,EAEA,MAAc,cAAc,QAAuC;AACjE,UAAM,EAAE,YAAY,IAAI;AACxB,UAAM,OAAO,KAAK,QAAQ,SAAS;AACnC,QAAI,CAAC,MAAM;AACT,aAAO,IAAI,OAAQ,uCAAuC;AAAA,IAC5D;AAEA,UAAM,UAAU,MAAM,KAAK,8BAA8B,WAAW;AACpE,WAAO,GAAG,EAAE,QAAQ,CAAC;AAAA,EACvB;AAAA,EAEA,MAAc,gBAAgB,QAAuC;AACnE,UAAM,EAAE,IAAI,QAAQ,IAAI;AAIxB,UAAM,OAAO,KAAK,QAAQ,SAAS;AACnC,QAAI,CAAC,MAAM;AACT,aAAO,IAAI,OAAQ,uCAAuC;AAAA,IAC5D;AAEA,UAAM,WAAW,MAAM,KAAK,oBAAoB,EAAE;AAClD,QAAI,CAAC,UAAU;AACb,aAAO,IAAI,KAAK,2BAA2B,EAAE,EAAE;AAAA,IACjD;AAEA,UAAM,UAAU;AAAA,MACd,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI,SAAS;AAAA,MACb,aAAa,SAAS;AAAA,MACtB,WAAW,SAAS;AAAA,MACpB,WAAW,KAAK,IAAI;AAAA,IACtB;AAEA,UAAM,KAAK,gBAAgB,OAAO;AAClC,WAAO,GAAG,EAAE,QAAQ,QAAQ,CAAC;AAAA,EAC/B;AAAA,EAEA,MAAc,gBAAgB,QAAuC;AACnE,UAAM,EAAE,GAAG,IAAI;AACf,UAAM,OAAO,KAAK,QAAQ,SAAS;AACnC,QAAI,CAAC,MAAM;AACT,aAAO,IAAI,OAAQ,uCAAuC;AAAA,IAC5D;AAEA,UAAM,KAAK,kBAAkB,EAAE;AAC/B,WAAO,GAAG,EAAE,GAAG,CAAC;AAAA,EAClB;AAAA,EAEA,MAAc,iBAAiB,QAAuC;AACpE,UAAM,EAAE,IAAI,YAAY,IAAI;AAC5B,UAAM,OAAO,KAAK,QAAQ,SAAS;AACnC,QAAI,CAAC,MAAM;AACT,aAAO,IAAI,OAAQ,uCAAuC;AAAA,IAC5D;AAEA,QAAI,IAAI;AAEN,YAAM,KAAK,sBAAsB,EAAE;AACnC,aAAO,GAAG,EAAE,GAAG,CAAC;AAAA,IAClB;AACA,QAAI,aAAa;AAEf,YAAM,SAAS,MAAM,KAAK,uBAAuB,WAAW;AAC5D,aAAO,GAAG,EAAE,OAAO,CAAC;AAAA,IACtB;AACA,WAAO,IAAI,QAAQ,sCAAsC;AAAA,EAC3D;AAAA;AAAA,EAIA,UAAgB;AACd,WAAO,MAAM,yBAAyB;AAAA,EACxC;AACF;","names":[]}
package/dist/index.d.ts CHANGED
@@ -332,21 +332,18 @@ interface InstanceListResponse extends BaseResponse {
332
332
  */
333
333
  interface ImageCreateResponse extends BaseResponse {
334
334
  record: ImageRecord;
335
- __subscriptions?: string[];
336
335
  }
337
336
  /**
338
337
  * Image get response
339
338
  */
340
339
  interface ImageGetResponse extends BaseResponse {
341
340
  record: ImageRecord | null;
342
- __subscriptions?: string[];
343
341
  }
344
342
  /**
345
343
  * Image list response
346
344
  */
347
345
  interface ImageListResponse extends BaseResponse {
348
346
  records: ImageRecord[];
349
- __subscriptions?: string[];
350
347
  }
351
348
  /**
352
349
  * Image update response
@@ -650,7 +647,6 @@ interface AgentX {
650
647
  type: T;
651
648
  }>): Unsubscribe;
652
649
  onAny(handler: BusEventHandler): Unsubscribe;
653
- subscribe(sessionId: string): void;
654
650
  onError(handler: (error: AgentXError) => void): Unsubscribe;
655
651
  /**
656
652
  * Universal JSON-RPC entry point
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CommandHandler
3
- } from "./chunk-5CG2WPTC.js";
3
+ } from "./chunk-CA7HH2XW.js";
4
4
 
5
5
  // src/index.ts
6
6
  import { createAgentXRuntime } from "@agentxjs/core/runtime";
@@ -149,7 +149,6 @@ function createLocalImages(platform) {
149
149
  );
150
150
  return {
151
151
  record: image.toRecord(),
152
- __subscriptions: [image.sessionId],
153
152
  requestId: ""
154
153
  };
155
154
  },
@@ -157,7 +156,6 @@ function createLocalImages(platform) {
157
156
  const record = await platform.imageRepository.findImageById(imageId);
158
157
  return {
159
158
  record,
160
- __subscriptions: record?.sessionId ? [record.sessionId] : void 0,
161
159
  requestId: ""
162
160
  };
163
161
  },
@@ -165,7 +163,6 @@ function createLocalImages(platform) {
165
163
  const records = await platform.imageRepository.findAllImages();
166
164
  return {
167
165
  records,
168
- __subscriptions: records.map((r) => r.sessionId),
169
166
  requestId: ""
170
167
  };
171
168
  },
@@ -195,36 +192,21 @@ function createLocalImages(platform) {
195
192
  }
196
193
  };
197
194
  }
198
- function createRemoteImages(rpcClient, subscribeFn) {
195
+ function createRemoteImages(rpcClient) {
199
196
  return {
200
197
  async create(params) {
201
198
  const result = await rpcClient.call("image.create", {
202
199
  ...params,
203
200
  containerId: DEFAULT_CONTAINER_ID
204
201
  });
205
- if (result.__subscriptions) {
206
- for (const sessionId of result.__subscriptions) {
207
- subscribeFn(sessionId);
208
- }
209
- }
210
202
  return { ...result, requestId: "" };
211
203
  },
212
204
  async get(imageId) {
213
205
  const result = await rpcClient.call("image.get", { imageId });
214
- if (result.__subscriptions) {
215
- for (const sessionId of result.__subscriptions) {
216
- subscribeFn(sessionId);
217
- }
218
- }
219
206
  return { ...result, requestId: "" };
220
207
  },
221
208
  async list() {
222
209
  const result = await rpcClient.call("image.list", {});
223
- if (result.__subscriptions) {
224
- for (const sessionId of result.__subscriptions) {
225
- subscribeFn(sessionId);
226
- }
227
- }
228
210
  return { ...result, requestId: "" };
229
211
  },
230
212
  async update(imageId, updates) {
@@ -1025,8 +1007,6 @@ var LocalClient = class {
1025
1007
  onAny(handler) {
1026
1008
  return this._runtime.platform.eventBus.onAny(handler);
1027
1009
  }
1028
- subscribe(_sessionId) {
1029
- }
1030
1010
  // ==================== Error Handling ====================
1031
1011
  onError(handler) {
1032
1012
  return this._runtime.platform.eventBus.on("agentx_error", (event) => {
@@ -1119,7 +1099,7 @@ var RemoteClient = class {
1119
1099
  logger2.debug("Received stream event", { topic, type: event.type });
1120
1100
  this.eventBus.emit(event);
1121
1101
  });
1122
- const image = createRemoteImages(this.rpcClient, (sessionId) => this.subscribe(sessionId));
1102
+ const image = createRemoteImages(this.rpcClient);
1123
1103
  const instance = createRemoteInstances(this.rpcClient);
1124
1104
  const session = createRemoteSessions(this.rpcClient);
1125
1105
  const llm = createRemoteLLM(this.rpcClient);
@@ -1156,10 +1136,6 @@ var RemoteClient = class {
1156
1136
  onAny(handler) {
1157
1137
  return this.eventBus.onAny(handler);
1158
1138
  }
1159
- subscribe(sessionId) {
1160
- this.rpcClient.subscribe(sessionId);
1161
- logger2.debug("Subscribed to session", { sessionId });
1162
- }
1163
1139
  // ==================== Error Handling ====================
1164
1140
  onError(handler) {
1165
1141
  return this.eventBus.on("agentx_error", (event) => {
@@ -1286,9 +1262,6 @@ function createAgentX(config) {
1286
1262
  onAny(handler) {
1287
1263
  return getLocalClient().onAny(handler);
1288
1264
  },
1289
- subscribe(sessionId) {
1290
- getLocalClient().subscribe(sessionId);
1291
- },
1292
1265
  onError(handler) {
1293
1266
  return getLocalClient().onError(handler);
1294
1267
  },
@@ -1322,7 +1295,7 @@ function createAgentX(config) {
1322
1295
  "serve() requires platform.channelServer. Ensure your platform supports server mode."
1323
1296
  );
1324
1297
  }
1325
- const { createServer } = await import("./server-3AQMXPVF.js");
1298
+ const { createServer } = await import("./server-AHOFZDDN.js");
1326
1299
  return createServer({
1327
1300
  platform: config.platform,
1328
1301
  createDriver: config.createDriver,