@voltagent/ag-ui 1.0.5 → 1.0.6
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 +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -229,13 +229,13 @@ function convertAGUIMessagesToVoltMessages(messages) {
|
|
|
229
229
|
parts.push({ type: "text", text: textContent });
|
|
230
230
|
}
|
|
231
231
|
for (const call of msg.toolCalls ?? []) {
|
|
232
|
-
const
|
|
232
|
+
const input = safelyParseJson(call.function.arguments);
|
|
233
233
|
toolNameById.set(call.id, call.function.name);
|
|
234
234
|
parts.push({
|
|
235
235
|
type: "tool-call",
|
|
236
236
|
toolCallId: call.id,
|
|
237
237
|
toolName: call.function.name,
|
|
238
|
-
|
|
238
|
+
input
|
|
239
239
|
});
|
|
240
240
|
}
|
|
241
241
|
convertedMessages.push({
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/voltagent-agent.ts","../src/copilotkit.ts"],"sourcesContent":["export { VoltAgentAGUI, createVoltAgentAGUI } from \"./voltagent-agent\";\nexport {\n createCopilotKitHandler,\n registerCopilotKitRoutes,\n type CopilotKitHandlerOptions,\n type RegisterCopilotKitRoutesOptions,\n} from \"./copilotkit\";\n","import { AbstractAgent } from \"@ag-ui/client\";\nimport type {\n AssistantMessage,\n BaseEvent,\n CustomEvent,\n DeveloperMessage,\n Message,\n RunAgentInput,\n RunErrorEvent,\n RunFinishedEvent,\n RunStartedEvent,\n StateSnapshotEvent,\n SystemMessage,\n TextMessageChunkEvent,\n TextMessageEndEvent,\n TextMessageStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n ToolCallResultEvent,\n ToolCallStartEvent,\n ToolMessage,\n UserMessage,\n} from \"@ag-ui/core\";\nimport { EventType } from \"@ag-ui/core\";\nimport type { StreamTextOptions, VoltAgentTextStreamPart } from \"@voltagent/core\";\nimport type { Agent } from \"@voltagent/core\";\nimport { safeStringify } from \"@voltagent/internal/utils\";\nimport { Observable } from \"rxjs\";\n\ntype AGUIContextValue = {\n state?: Record<string, unknown>;\n context?: RunAgentInput[\"context\"];\n forwardedProps?: RunAgentInput[\"forwardedProps\"];\n};\n\ntype VoltAgentAGUIConfig = {\n agent: Agent;\n /**\n * Optional function to derive userId for VoltAgent memory/telemetry.\n */\n deriveUserId?: (input: RunAgentInput) => string | undefined;\n};\n\nfunction debugLog(message: string, data?: Record<string, unknown>) {\n // eslint-disable-next-line no-console\n console.log(`[VoltAgentAGUI] ${message}`, data ?? {});\n}\n\n/**\n * VoltAgent adapter that speaks the AG-UI protocol.\n * and stream VoltAgent events as AG-UI BaseEvents.\n */\nexport class VoltAgentAGUI extends AbstractAgent {\n private readonly agent: Agent;\n private readonly deriveUserId?: VoltAgentAGUIConfig[\"deriveUserId\"];\n\n constructor(config: VoltAgentAGUIConfig) {\n super();\n this.agent = config.agent;\n this.deriveUserId = config.deriveUserId;\n }\n\n run(input: RunAgentInput): ReturnType<AbstractAgent[\"run\"]> {\n const stream$ = new Observable<BaseEvent>((subscriber) => {\n const abortController = new AbortController();\n let finishedSent = false;\n debugLog(\"run start\", { threadId: input.threadId, runId: input.runId });\n const runStarted: RunStartedEvent = {\n type: EventType.RUN_STARTED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(runStarted);\n\n const run = async () => {\n let currentMessageId = generateId();\n\n try {\n await this.persistStateToWorkingMemory(input);\n\n const streamOptions = this.buildStreamOptions(input, abortController);\n const voltMessages = convertAGUIMessagesToVoltMessages(input.messages);\n\n debugLog(\"calling agent.streamText\", { messagesLength: voltMessages.length });\n const result = await this.agent.streamText(voltMessages as any, streamOptions);\n\n for await (const part of result.fullStream) {\n debugLog(\"fullStream part\", { partType: part.type, id: (part as any).id });\n if ((part.type === \"start\" || part.type === \"start-step\") && part.messageId) {\n currentMessageId = part.messageId;\n }\n const events = convertVoltStreamPartToEvents(part, currentMessageId);\n if (!events) continue;\n\n for (const event of events) {\n debugLog(\"emit event\", { type: event.type, messageId: (event as any).messageId });\n\n subscriber.next(event);\n if (\n (event.type === EventType.TEXT_MESSAGE_START ||\n event.type === EventType.TEXT_MESSAGE_CHUNK ||\n event.type === EventType.TEXT_MESSAGE_END) &&\n \"messageId\" in event &&\n event.messageId\n ) {\n currentMessageId = event.messageId;\n }\n }\n }\n\n const snapshotEvent = await this.readWorkingMemorySnapshot(input);\n if (snapshotEvent) {\n subscriber.next(snapshotEvent);\n }\n\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n subscriber.complete();\n debugLog(\"run finished\", { threadId: input.threadId, runId: input.runId });\n } catch (error) {\n debugLog(\"run error\", {\n threadId: input.threadId,\n runId: input.runId,\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n\n // Emit the error event so consumers know what went wrong.\n const runError: RunErrorEvent = {\n type: EventType.RUN_ERROR,\n message: error instanceof Error ? error.message : \"Unknown error\",\n };\n subscriber.next(runError);\n\n // The AG-UI verify layer may reject further events once RUN_ERROR\n // has been emitted (the run is considered terminal). Guard the\n // RUN_FINISHED emission so the subscriber can still be completed\n // cleanly without an unhandled exception.\n try {\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n } catch {\n // Verify layer rejected the event – that's OK, mark as sent\n // so the unsubscribe handler doesn't attempt it again.\n finishedSent = true;\n }\n subscriber.complete();\n }\n };\n\n void run();\n\n return () => {\n debugLog(\"run abort/unsubscribe\", {\n threadId: input.threadId,\n runId: input.runId,\n finishedSent,\n });\n abortController.abort();\n if (!finishedSent) {\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n subscriber.complete();\n }\n };\n });\n\n // Cast through unknown to avoid rxjs type mismatches across hoisted versions\n return stream$ as unknown as ReturnType<AbstractAgent[\"run\"]>;\n }\n\n private buildStreamOptions(\n input: RunAgentInput,\n abortController: AbortController,\n ): StreamTextOptions {\n const context = new Map<string, unknown>();\n const aguiContext: AGUIContextValue = {\n state: (input.state as Record<string, unknown>) || undefined,\n context: input.context,\n forwardedProps: input.forwardedProps,\n };\n\n context.set(\"agui:context\", aguiContext);\n\n return {\n abortSignal: abortController.signal,\n conversationId: input.threadId,\n userId: this.deriveUserId?.(input),\n context,\n };\n }\n\n private async persistStateToWorkingMemory(input: RunAgentInput): Promise<void> {\n const state = input.state;\n if (!state || typeof state !== \"object\" || Object.keys(state).length === 0) {\n return;\n }\n\n const memory = this.agent.getMemory?.();\n if (!memory) {\n return;\n }\n\n try {\n await memory.updateWorkingMemory({\n conversationId: input.threadId,\n content: safeStringify(state),\n });\n } catch (error) {\n // Non-fatal: working memory might be disabled or misconfigured\n console.debug?.(\"Failed to persist AG-UI state to working memory\", error);\n }\n }\n\n private async readWorkingMemorySnapshot(\n input: RunAgentInput,\n ): Promise<StateSnapshotEvent | undefined> {\n const memory = this.agent.getMemory?.();\n if (!memory) {\n return;\n }\n\n try {\n const raw = await memory.getWorkingMemory({\n conversationId: input.threadId,\n });\n\n if (!raw) {\n return;\n }\n\n let snapshot: unknown = raw;\n try {\n snapshot = JSON.parse(raw);\n } catch {\n // keep raw string\n }\n\n return {\n type: EventType.STATE_SNAPSHOT,\n snapshot,\n };\n } catch (error) {\n console.debug?.(\"Failed to read AG-UI working memory snapshot\", error);\n return;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Message conversion helpers\n// ---------------------------------------------------------------------------\n\nconst isUserMessage = (message: Message): message is UserMessage => message.role === \"user\";\nconst isAssistantMessage = (message: Message): message is AssistantMessage =>\n message.role === \"assistant\";\nconst isSystemMessage = (message: Message): message is SystemMessage => message.role === \"system\";\nconst isDeveloperMessage = (message: Message): message is DeveloperMessage =>\n message.role === \"developer\";\nconst isToolMessage = (message: Message): message is ToolMessage => message.role === \"tool\";\n\ntype VoltUIPart =\n | { type: \"text\"; text: string }\n | { type: \"tool-call\"; toolCallId: string; toolName: string; args?: unknown }\n | { type: \"tool-result\"; toolCallId?: string; toolName?: string; output?: unknown };\n\ntype VoltUIMessage = {\n id: string;\n role: \"user\" | \"assistant\" | \"system\" | \"tool\";\n content?: string;\n parts?: VoltUIPart[];\n};\n\nconst VOLTAGENT_MESSAGE_METADATA_EVENT_NAME = \"voltagent.message_metadata\";\nfunction convertAGUIMessagesToVoltMessages(messages: Message[]): VoltUIMessage[] {\n const toolNameById = new Map<string, string>();\n const convertedMessages: VoltUIMessage[] = [];\n\n for (const msg of messages) {\n const messageId = msg.id || generateId();\n\n if (isUserMessage(msg)) {\n convertedMessages.push({\n id: messageId,\n role: \"user\",\n content: extractTextContent(msg.content),\n });\n continue;\n }\n\n if (isAssistantMessage(msg)) {\n const parts: VoltUIPart[] = [];\n const textContent = msg.content ? extractTextContent(msg.content) : \"\";\n if (textContent) {\n parts.push({ type: \"text\", text: textContent });\n }\n\n for (const call of msg.toolCalls ?? []) {\n const args = safelyParseJson(call.function.arguments);\n toolNameById.set(call.id, call.function.name);\n parts.push({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n args,\n });\n }\n\n convertedMessages.push({\n id: messageId,\n role: \"assistant\",\n parts,\n });\n continue;\n }\n\n if (isSystemMessage(msg) || isDeveloperMessage(msg)) {\n convertedMessages.push({\n id: messageId,\n role: \"system\",\n content: msg.content,\n });\n continue;\n }\n\n if (isToolMessage(msg)) {\n const toolName = msg.toolCallId ? toolNameById.get(msg.toolCallId) : undefined;\n convertedMessages.push({\n id: messageId,\n role: \"tool\",\n parts: [\n {\n type: \"tool-result\",\n toolCallId: msg.toolCallId,\n toolName: toolName ?? \"tool\",\n output: safelyParseJson(msg.content),\n },\n ],\n });\n continue;\n }\n\n // activity or any other custom role -> fold into assistant text\n convertedMessages.push({\n id: messageId,\n role: \"assistant\",\n parts: [{ type: \"text\", text: safeStringify((msg as any).content ?? \"\") }],\n });\n }\n\n return convertedMessages;\n}\n\nfunction extractTextContent(content: UserMessage[\"content\"] | AssistantMessage[\"content\"]): string {\n if (!content) return \"\";\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n\n const parts = content as Array<Record<string, unknown>>;\n\n return parts\n .map((part: Record<string, unknown>) => {\n const textValue = typeof part.text === \"string\" ? (part.text as string) : \"\";\n return textValue;\n })\n .filter((text: string) => text.length > 0)\n .join(\"\\n\");\n}\n\nfunction safelyParseJson(value: string | unknown): unknown {\n if (typeof value !== \"string\") return value;\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Stream conversion helpers\n// ---------------------------------------------------------------------------\n\ntype StreamConversionResult =\n | TextMessageStartEvent\n | TextMessageChunkEvent\n | TextMessageEndEvent\n | CustomEvent\n | ToolCallStartEvent\n | ToolCallEndEvent\n | ToolCallArgsEvent\n | ToolCallResultEvent;\n\nfunction convertVoltStreamPartToEvents(\n part: VoltAgentTextStreamPart,\n fallbackMessageId: string,\n): StreamConversionResult[] | null {\n const payload = (part as { payload?: Record<string, unknown> }).payload ?? part;\n const partType = (part as { type: string }).type;\n\n if (partType === \"message-metadata\") {\n const messageId =\n (part as { messageId?: string }).messageId ??\n (payload as { messageId?: string }).messageId ??\n fallbackMessageId;\n const messageMetadata =\n (payload as { messageMetadata?: unknown }).messageMetadata ??\n (payload as { metadata?: unknown }).metadata;\n\n if (!messageMetadata || typeof messageMetadata !== \"object\") {\n return null;\n }\n\n // Best-practice carrier for app-specific metadata on AG-UI streams.\n const customEvent: CustomEvent = {\n type: EventType.CUSTOM,\n name: VOLTAGENT_MESSAGE_METADATA_EVENT_NAME,\n value: {\n messageId: messageId || undefined,\n metadata: messageMetadata,\n },\n };\n\n return [customEvent];\n }\n\n switch (part.type) {\n case \"text-start\": {\n // Ignore explicit start; we'll synthesize start when first chunk/end arrives to avoid duplicates\n return null;\n }\n case \"text-delta\": {\n const messageId = part.messageId ?? fallbackMessageId;\n const event: TextMessageChunkEvent = {\n type: EventType.TEXT_MESSAGE_CHUNK,\n delta: part.text ?? \"\",\n messageId,\n role: \"assistant\",\n };\n return [event];\n }\n case \"text-end\": {\n // Let transformChunks close the message; avoid emitting END without a START\n return null;\n }\n case \"tool-call\": {\n const toolCallId = (payload as { toolCallId?: string }).toolCallId ?? generateId();\n const toolName = (payload as { toolName?: string }).toolName ?? \"tool\";\n const rawArgs =\n (payload as { args?: unknown }).args ??\n (payload as { input?: unknown }).input ??\n (payload as { arguments?: unknown }).arguments;\n const argsEvent: ToolCallArgsEvent = {\n type: EventType.TOOL_CALL_ARGS,\n toolCallId,\n delta: safeStringify(rawArgs ?? {}),\n };\n const startEvent: ToolCallStartEvent = {\n type: EventType.TOOL_CALL_START,\n toolCallId,\n toolCallName: toolName,\n parentMessageId: fallbackMessageId,\n };\n const endEvent: ToolCallEndEvent = {\n type: EventType.TOOL_CALL_END,\n toolCallId,\n };\n return [startEvent, argsEvent, endEvent];\n }\n case \"tool-result\": {\n const rawResult =\n (payload as { result?: unknown }).result ??\n (payload as { output?: unknown }).output ??\n (payload as { data?: unknown }).data ??\n payload;\n const resultEvent: ToolCallResultEvent = {\n type: EventType.TOOL_CALL_RESULT,\n toolCallId: (payload as { toolCallId?: string }).toolCallId ?? generateId(),\n content: safeStringify(rawResult ?? {}),\n messageId: generateId(),\n role: \"tool\",\n };\n return [resultEvent];\n }\n case \"error\": {\n const errorEvent: TextMessageChunkEvent = {\n type: EventType.TEXT_MESSAGE_CHUNK,\n delta: `Error: ${(payload as { error?: unknown }).error}`,\n messageId: fallbackMessageId,\n role: \"assistant\",\n };\n return [errorEvent];\n }\n default:\n return null;\n }\n}\n\nexport function createVoltAgentAGUI(config: VoltAgentAGUIConfig): VoltAgentAGUI {\n return new VoltAgentAGUI(config);\n}\n\nfunction generateId(): string {\n const cryptoApi = typeof globalThis !== \"undefined\" ? (globalThis as any).crypto : undefined;\n if (cryptoApi && typeof cryptoApi.randomUUID === \"function\") {\n return cryptoApi.randomUUID();\n }\n\n const random = () => Math.floor(Math.random() * 0xffff);\n let uuid = \"\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += ((random() & 0x0fff) | 0x4000).toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += ((random() & 0x3fff) | 0x8000).toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n return uuid;\n}\n","import { AbstractAgent } from \"@ag-ui/client\";\nimport type { RunAgentInput } from \"@ag-ui/core\";\nimport {\n CopilotRuntime,\n type CopilotServiceAdapter,\n ExperimentalEmptyAdapter,\n copilotRuntimeNextJSAppRouterEndpoint,\n} from \"@copilotkit/runtime\";\nimport type { Agent } from \"@voltagent/core\";\nimport { AgentRegistry } from \"@voltagent/core\";\nimport { createVoltAgentAGUI } from \"./voltagent-agent\";\n\nexport type CopilotKitHandlerOptions = {\n /**\n * Static map of AG-UI agents. Use either this or `loadAgents`.\n */\n agents?: Record<string, AbstractAgent>;\n /**\n * Lazy loader for AG-UI agents. If provided, it overrides `agents`.\n */\n loadAgents?: () => Promise<Record<string, AbstractAgent>> | Record<string, AbstractAgent>;\n /**\n * Optional service adapter. Defaults to ExperimentalEmptyAdapter.\n */\n serviceAdapter?: CopilotServiceAdapter;\n /**\n * Endpoint path used by CopilotKit clients. Defaults to \"/copilotkit\".\n */\n endpoint?: string;\n};\n\nexport type RegisterCopilotKitRoutesOptions = {\n /**\n * Hono-style app instance with `all(path, handler)` support.\n */\n app: {\n all: (path: string, handler: (c: any) => any) => any;\n post?: (path: string, handler: (c: any) => any) => any;\n };\n /**\n * VoltAgent agents to expose to CopilotKit. Will be wrapped lazily.\n */\n agents?: Record<string, Agent>;\n /**\n * Optional resource IDs to pick from the global AgentRegistry if `agents` is not provided.\n * If omitted and no agents are provided, all registered agents will be exposed.\n */\n resourceIds?: string[];\n /**\n * Path to mount CopilotKit endpoint. Defaults to \"/copilotkit\".\n */\n path?: string;\n};\n\n/**\n * Create a framework-agnostic fetch handler for CopilotKit that serves VoltAgent-backed AG-UI agents.\n *\n * @example\n * ```ts\n * import { createCopilotKitHandler } from \"@voltagent/ag-ui\";\n * import { createVoltAgentAGUI } from \"@voltagent/ag-ui\";\n * import { agent } from \"./agent\"; // VoltAgent instance\n *\n * const handler = createCopilotKitHandler({\n * agents: { assistant: createVoltAgentAGUI({ agent }) },\n * endpoint: \"/api/copilotkit\",\n * });\n *\n * export default {\n * fetch: handler,\n * };\n * ```\n */\nexport function createCopilotKitHandler(options: CopilotKitHandlerOptions) {\n const endpoint = options.endpoint ?? \"/copilotkit\";\n const serviceAdapter = options.serviceAdapter ?? new ExperimentalEmptyAdapter();\n\n return async (req: Request): Promise<Response> => {\n // We intentionally avoid logging request bodies to keep the handler silent in production.\n await req\n .clone()\n .text()\n .catch(() => undefined);\n\n const agents =\n (await options.loadAgents?.()) ??\n options.agents ??\n (() => {\n throw new Error(\"No agents provided to CopilotKit handler\");\n })();\n\n // Lightweight wrapper to add per-run/connect logging without touching the original agents\n const wrappedAgents: Record<string, AbstractAgent> = {};\n for (const [id, agent] of Object.entries(agents)) {\n wrappedAgents[id] = new (class extends AbstractAgent {\n run(input: RunAgentInput) {\n console.log(\"[CopilotKit] agent.run\", {\n agentId: id,\n threadId: input.threadId,\n runId: input.runId,\n });\n return (agent as AbstractAgent).run(input);\n }\n // Forward connect if the agent implements it\n connect(input: RunAgentInput) {\n console.log(\"[CopilotKit] agent.connect\", {\n agentId: id,\n threadId: input.threadId,\n runId: input.runId,\n });\n return (agent as any).connect?.(input);\n }\n clone() {\n return this;\n }\n })();\n }\n\n const runtime = new CopilotRuntime({ agents: wrappedAgents });\n\n const { handleRequest } = copilotRuntimeNextJSAppRouterEndpoint({\n runtime,\n serviceAdapter,\n endpoint,\n });\n\n let response: Response;\n try {\n response = await handleRequest(req);\n } catch (error) {\n console.error(\"[CopilotKit] handler failed\", {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n throw error;\n }\n return response;\n };\n}\n\n/**\n * Convenience helper: register CopilotKit routes on a Hono-like app using VoltAgent agents.\n */\nexport function registerCopilotKitRoutes(options: RegisterCopilotKitRoutesOptions) {\n const path = options.path ?? \"/copilotkit\";\n const resolveAgents = (): Record<string, Agent> => {\n if (options.agents) return options.agents;\n const registry = AgentRegistry.getInstance();\n const ids = options.resourceIds;\n if (ids && ids.length > 0) {\n return Object.fromEntries(\n ids\n .map((id) => {\n const agent = registry.getAgent(id);\n return agent ? [id, agent] : undefined;\n })\n .filter(Boolean) as [string, Agent][],\n );\n }\n return Object.fromEntries(registry.getAllAgents().map((agent) => [agent.id, agent]));\n };\n\n const handler = createCopilotKitHandler({\n loadAgents: () =>\n Object.fromEntries(\n Object.entries(resolveAgents()).map(([id, agent]) => [id, createVoltAgentAGUI({ agent })]),\n ),\n endpoint: path,\n });\n\n const routeHandler = async (c: any) => {\n const method = c.req?.method;\n if (method && method !== \"POST\") {\n return c.json?.({ success: false, error: \"Use POST with CopilotKit runtime requests.\" }, 405);\n }\n\n try {\n return await handler(c.req?.raw ?? c.request ?? c);\n } catch (error) {\n console.error(\"[copilotkit] handler error\", error);\n return c.json?.(\n { success: false, error: \"CopilotKit handler failed\", detail: `${error}` },\n 500,\n );\n }\n };\n\n const register = (p: string) => {\n if (typeof options.app.post === \"function\") {\n options.app.post(p, routeHandler);\n } else {\n options.app.all(p, routeHandler);\n }\n };\n\n [path, `${path}/*`].forEach(register);\n // Deliberately no return; route registration side-effect only\n}\n"],"mappings":"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","names":["import_client","import_runtime","import_core"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/voltagent-agent.ts","../src/copilotkit.ts"],"sourcesContent":["export { VoltAgentAGUI, createVoltAgentAGUI } from \"./voltagent-agent\";\nexport {\n createCopilotKitHandler,\n registerCopilotKitRoutes,\n type CopilotKitHandlerOptions,\n type RegisterCopilotKitRoutesOptions,\n} from \"./copilotkit\";\n","import { AbstractAgent } from \"@ag-ui/client\";\nimport type {\n AssistantMessage,\n BaseEvent,\n CustomEvent,\n DeveloperMessage,\n Message,\n RunAgentInput,\n RunErrorEvent,\n RunFinishedEvent,\n RunStartedEvent,\n StateSnapshotEvent,\n SystemMessage,\n TextMessageChunkEvent,\n TextMessageEndEvent,\n TextMessageStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n ToolCallResultEvent,\n ToolCallStartEvent,\n ToolMessage,\n UserMessage,\n} from \"@ag-ui/core\";\nimport { EventType } from \"@ag-ui/core\";\nimport type { StreamTextOptions, VoltAgentTextStreamPart } from \"@voltagent/core\";\nimport type { Agent } from \"@voltagent/core\";\nimport { safeStringify } from \"@voltagent/internal/utils\";\nimport { Observable } from \"rxjs\";\n\ntype AGUIContextValue = {\n state?: Record<string, unknown>;\n context?: RunAgentInput[\"context\"];\n forwardedProps?: RunAgentInput[\"forwardedProps\"];\n};\n\ntype VoltAgentAGUIConfig = {\n agent: Agent;\n /**\n * Optional function to derive userId for VoltAgent memory/telemetry.\n */\n deriveUserId?: (input: RunAgentInput) => string | undefined;\n};\n\nfunction debugLog(message: string, data?: Record<string, unknown>) {\n // eslint-disable-next-line no-console\n console.log(`[VoltAgentAGUI] ${message}`, data ?? {});\n}\n\n/**\n * VoltAgent adapter that speaks the AG-UI protocol.\n * and stream VoltAgent events as AG-UI BaseEvents.\n */\nexport class VoltAgentAGUI extends AbstractAgent {\n private readonly agent: Agent;\n private readonly deriveUserId?: VoltAgentAGUIConfig[\"deriveUserId\"];\n\n constructor(config: VoltAgentAGUIConfig) {\n super();\n this.agent = config.agent;\n this.deriveUserId = config.deriveUserId;\n }\n\n run(input: RunAgentInput): ReturnType<AbstractAgent[\"run\"]> {\n const stream$ = new Observable<BaseEvent>((subscriber) => {\n const abortController = new AbortController();\n let finishedSent = false;\n debugLog(\"run start\", { threadId: input.threadId, runId: input.runId });\n const runStarted: RunStartedEvent = {\n type: EventType.RUN_STARTED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(runStarted);\n\n const run = async () => {\n let currentMessageId = generateId();\n\n try {\n await this.persistStateToWorkingMemory(input);\n\n const streamOptions = this.buildStreamOptions(input, abortController);\n const voltMessages = convertAGUIMessagesToVoltMessages(input.messages);\n\n debugLog(\"calling agent.streamText\", { messagesLength: voltMessages.length });\n const result = await this.agent.streamText(voltMessages as any, streamOptions);\n\n for await (const part of result.fullStream) {\n debugLog(\"fullStream part\", { partType: part.type, id: (part as any).id });\n if ((part.type === \"start\" || part.type === \"start-step\") && part.messageId) {\n currentMessageId = part.messageId;\n }\n const events = convertVoltStreamPartToEvents(part, currentMessageId);\n if (!events) continue;\n\n for (const event of events) {\n debugLog(\"emit event\", { type: event.type, messageId: (event as any).messageId });\n\n subscriber.next(event);\n if (\n (event.type === EventType.TEXT_MESSAGE_START ||\n event.type === EventType.TEXT_MESSAGE_CHUNK ||\n event.type === EventType.TEXT_MESSAGE_END) &&\n \"messageId\" in event &&\n event.messageId\n ) {\n currentMessageId = event.messageId;\n }\n }\n }\n\n const snapshotEvent = await this.readWorkingMemorySnapshot(input);\n if (snapshotEvent) {\n subscriber.next(snapshotEvent);\n }\n\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n subscriber.complete();\n debugLog(\"run finished\", { threadId: input.threadId, runId: input.runId });\n } catch (error) {\n debugLog(\"run error\", {\n threadId: input.threadId,\n runId: input.runId,\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n\n // Emit the error event so consumers know what went wrong.\n const runError: RunErrorEvent = {\n type: EventType.RUN_ERROR,\n message: error instanceof Error ? error.message : \"Unknown error\",\n };\n subscriber.next(runError);\n\n // The AG-UI verify layer may reject further events once RUN_ERROR\n // has been emitted (the run is considered terminal). Guard the\n // RUN_FINISHED emission so the subscriber can still be completed\n // cleanly without an unhandled exception.\n try {\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n } catch {\n // Verify layer rejected the event – that's OK, mark as sent\n // so the unsubscribe handler doesn't attempt it again.\n finishedSent = true;\n }\n subscriber.complete();\n }\n };\n\n void run();\n\n return () => {\n debugLog(\"run abort/unsubscribe\", {\n threadId: input.threadId,\n runId: input.runId,\n finishedSent,\n });\n abortController.abort();\n if (!finishedSent) {\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n subscriber.complete();\n }\n };\n });\n\n // Cast through unknown to avoid rxjs type mismatches across hoisted versions\n return stream$ as unknown as ReturnType<AbstractAgent[\"run\"]>;\n }\n\n private buildStreamOptions(\n input: RunAgentInput,\n abortController: AbortController,\n ): StreamTextOptions {\n const context = new Map<string, unknown>();\n const aguiContext: AGUIContextValue = {\n state: (input.state as Record<string, unknown>) || undefined,\n context: input.context,\n forwardedProps: input.forwardedProps,\n };\n\n context.set(\"agui:context\", aguiContext);\n\n return {\n abortSignal: abortController.signal,\n conversationId: input.threadId,\n userId: this.deriveUserId?.(input),\n context,\n };\n }\n\n private async persistStateToWorkingMemory(input: RunAgentInput): Promise<void> {\n const state = input.state;\n if (!state || typeof state !== \"object\" || Object.keys(state).length === 0) {\n return;\n }\n\n const memory = this.agent.getMemory?.();\n if (!memory) {\n return;\n }\n\n try {\n await memory.updateWorkingMemory({\n conversationId: input.threadId,\n content: safeStringify(state),\n });\n } catch (error) {\n // Non-fatal: working memory might be disabled or misconfigured\n console.debug?.(\"Failed to persist AG-UI state to working memory\", error);\n }\n }\n\n private async readWorkingMemorySnapshot(\n input: RunAgentInput,\n ): Promise<StateSnapshotEvent | undefined> {\n const memory = this.agent.getMemory?.();\n if (!memory) {\n return;\n }\n\n try {\n const raw = await memory.getWorkingMemory({\n conversationId: input.threadId,\n });\n\n if (!raw) {\n return;\n }\n\n let snapshot: unknown = raw;\n try {\n snapshot = JSON.parse(raw);\n } catch {\n // keep raw string\n }\n\n return {\n type: EventType.STATE_SNAPSHOT,\n snapshot,\n };\n } catch (error) {\n console.debug?.(\"Failed to read AG-UI working memory snapshot\", error);\n return;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Message conversion helpers\n// ---------------------------------------------------------------------------\n\nconst isUserMessage = (message: Message): message is UserMessage => message.role === \"user\";\nconst isAssistantMessage = (message: Message): message is AssistantMessage =>\n message.role === \"assistant\";\nconst isSystemMessage = (message: Message): message is SystemMessage => message.role === \"system\";\nconst isDeveloperMessage = (message: Message): message is DeveloperMessage =>\n message.role === \"developer\";\nconst isToolMessage = (message: Message): message is ToolMessage => message.role === \"tool\";\n\ntype VoltUIPart =\n | { type: \"text\"; text: string }\n | { type: \"tool-call\"; toolCallId: string; toolName: string; input?: unknown }\n | { type: \"tool-result\"; toolCallId?: string; toolName?: string; output?: unknown };\n\ntype VoltUIMessage = {\n id: string;\n role: \"user\" | \"assistant\" | \"system\" | \"tool\";\n content?: string;\n parts?: VoltUIPart[];\n};\n\nconst VOLTAGENT_MESSAGE_METADATA_EVENT_NAME = \"voltagent.message_metadata\";\nfunction convertAGUIMessagesToVoltMessages(messages: Message[]): VoltUIMessage[] {\n const toolNameById = new Map<string, string>();\n const convertedMessages: VoltUIMessage[] = [];\n\n for (const msg of messages) {\n const messageId = msg.id || generateId();\n\n if (isUserMessage(msg)) {\n convertedMessages.push({\n id: messageId,\n role: \"user\",\n content: extractTextContent(msg.content),\n });\n continue;\n }\n\n if (isAssistantMessage(msg)) {\n const parts: VoltUIPart[] = [];\n const textContent = msg.content ? extractTextContent(msg.content) : \"\";\n if (textContent) {\n parts.push({ type: \"text\", text: textContent });\n }\n\n for (const call of msg.toolCalls ?? []) {\n const input = safelyParseJson(call.function.arguments);\n toolNameById.set(call.id, call.function.name);\n parts.push({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n input,\n });\n }\n\n convertedMessages.push({\n id: messageId,\n role: \"assistant\",\n parts,\n });\n continue;\n }\n\n if (isSystemMessage(msg) || isDeveloperMessage(msg)) {\n convertedMessages.push({\n id: messageId,\n role: \"system\",\n content: msg.content,\n });\n continue;\n }\n\n if (isToolMessage(msg)) {\n const toolName = msg.toolCallId ? toolNameById.get(msg.toolCallId) : undefined;\n convertedMessages.push({\n id: messageId,\n role: \"tool\",\n parts: [\n {\n type: \"tool-result\",\n toolCallId: msg.toolCallId,\n toolName: toolName ?? \"tool\",\n output: safelyParseJson(msg.content),\n },\n ],\n });\n continue;\n }\n\n // activity or any other custom role -> fold into assistant text\n convertedMessages.push({\n id: messageId,\n role: \"assistant\",\n parts: [{ type: \"text\", text: safeStringify((msg as any).content ?? \"\") }],\n });\n }\n\n return convertedMessages;\n}\n\nfunction extractTextContent(content: UserMessage[\"content\"] | AssistantMessage[\"content\"]): string {\n if (!content) return \"\";\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n\n const parts = content as Array<Record<string, unknown>>;\n\n return parts\n .map((part: Record<string, unknown>) => {\n const textValue = typeof part.text === \"string\" ? (part.text as string) : \"\";\n return textValue;\n })\n .filter((text: string) => text.length > 0)\n .join(\"\\n\");\n}\n\nfunction safelyParseJson(value: string | unknown): unknown {\n if (typeof value !== \"string\") return value;\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Stream conversion helpers\n// ---------------------------------------------------------------------------\n\ntype StreamConversionResult =\n | TextMessageStartEvent\n | TextMessageChunkEvent\n | TextMessageEndEvent\n | CustomEvent\n | ToolCallStartEvent\n | ToolCallEndEvent\n | ToolCallArgsEvent\n | ToolCallResultEvent;\n\nfunction convertVoltStreamPartToEvents(\n part: VoltAgentTextStreamPart,\n fallbackMessageId: string,\n): StreamConversionResult[] | null {\n const payload = (part as { payload?: Record<string, unknown> }).payload ?? part;\n const partType = (part as { type: string }).type;\n\n if (partType === \"message-metadata\") {\n const messageId =\n (part as { messageId?: string }).messageId ??\n (payload as { messageId?: string }).messageId ??\n fallbackMessageId;\n const messageMetadata =\n (payload as { messageMetadata?: unknown }).messageMetadata ??\n (payload as { metadata?: unknown }).metadata;\n\n if (!messageMetadata || typeof messageMetadata !== \"object\") {\n return null;\n }\n\n // Best-practice carrier for app-specific metadata on AG-UI streams.\n const customEvent: CustomEvent = {\n type: EventType.CUSTOM,\n name: VOLTAGENT_MESSAGE_METADATA_EVENT_NAME,\n value: {\n messageId: messageId || undefined,\n metadata: messageMetadata,\n },\n };\n\n return [customEvent];\n }\n\n switch (part.type) {\n case \"text-start\": {\n // Ignore explicit start; we'll synthesize start when first chunk/end arrives to avoid duplicates\n return null;\n }\n case \"text-delta\": {\n const messageId = part.messageId ?? fallbackMessageId;\n const event: TextMessageChunkEvent = {\n type: EventType.TEXT_MESSAGE_CHUNK,\n delta: part.text ?? \"\",\n messageId,\n role: \"assistant\",\n };\n return [event];\n }\n case \"text-end\": {\n // Let transformChunks close the message; avoid emitting END without a START\n return null;\n }\n case \"tool-call\": {\n const toolCallId = (payload as { toolCallId?: string }).toolCallId ?? generateId();\n const toolName = (payload as { toolName?: string }).toolName ?? \"tool\";\n const rawArgs =\n (payload as { args?: unknown }).args ??\n (payload as { input?: unknown }).input ??\n (payload as { arguments?: unknown }).arguments;\n const argsEvent: ToolCallArgsEvent = {\n type: EventType.TOOL_CALL_ARGS,\n toolCallId,\n delta: safeStringify(rawArgs ?? {}),\n };\n const startEvent: ToolCallStartEvent = {\n type: EventType.TOOL_CALL_START,\n toolCallId,\n toolCallName: toolName,\n parentMessageId: fallbackMessageId,\n };\n const endEvent: ToolCallEndEvent = {\n type: EventType.TOOL_CALL_END,\n toolCallId,\n };\n return [startEvent, argsEvent, endEvent];\n }\n case \"tool-result\": {\n const rawResult =\n (payload as { result?: unknown }).result ??\n (payload as { output?: unknown }).output ??\n (payload as { data?: unknown }).data ??\n payload;\n const resultEvent: ToolCallResultEvent = {\n type: EventType.TOOL_CALL_RESULT,\n toolCallId: (payload as { toolCallId?: string }).toolCallId ?? generateId(),\n content: safeStringify(rawResult ?? {}),\n messageId: generateId(),\n role: \"tool\",\n };\n return [resultEvent];\n }\n case \"error\": {\n const errorEvent: TextMessageChunkEvent = {\n type: EventType.TEXT_MESSAGE_CHUNK,\n delta: `Error: ${(payload as { error?: unknown }).error}`,\n messageId: fallbackMessageId,\n role: \"assistant\",\n };\n return [errorEvent];\n }\n default:\n return null;\n }\n}\n\nexport function createVoltAgentAGUI(config: VoltAgentAGUIConfig): VoltAgentAGUI {\n return new VoltAgentAGUI(config);\n}\n\nfunction generateId(): string {\n const cryptoApi = typeof globalThis !== \"undefined\" ? (globalThis as any).crypto : undefined;\n if (cryptoApi && typeof cryptoApi.randomUUID === \"function\") {\n return cryptoApi.randomUUID();\n }\n\n const random = () => Math.floor(Math.random() * 0xffff);\n let uuid = \"\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += ((random() & 0x0fff) | 0x4000).toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += ((random() & 0x3fff) | 0x8000).toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n return uuid;\n}\n","import { AbstractAgent } from \"@ag-ui/client\";\nimport type { RunAgentInput } from \"@ag-ui/core\";\nimport {\n CopilotRuntime,\n type CopilotServiceAdapter,\n ExperimentalEmptyAdapter,\n copilotRuntimeNextJSAppRouterEndpoint,\n} from \"@copilotkit/runtime\";\nimport type { Agent } from \"@voltagent/core\";\nimport { AgentRegistry } from \"@voltagent/core\";\nimport { createVoltAgentAGUI } from \"./voltagent-agent\";\n\nexport type CopilotKitHandlerOptions = {\n /**\n * Static map of AG-UI agents. Use either this or `loadAgents`.\n */\n agents?: Record<string, AbstractAgent>;\n /**\n * Lazy loader for AG-UI agents. If provided, it overrides `agents`.\n */\n loadAgents?: () => Promise<Record<string, AbstractAgent>> | Record<string, AbstractAgent>;\n /**\n * Optional service adapter. Defaults to ExperimentalEmptyAdapter.\n */\n serviceAdapter?: CopilotServiceAdapter;\n /**\n * Endpoint path used by CopilotKit clients. Defaults to \"/copilotkit\".\n */\n endpoint?: string;\n};\n\nexport type RegisterCopilotKitRoutesOptions = {\n /**\n * Hono-style app instance with `all(path, handler)` support.\n */\n app: {\n all: (path: string, handler: (c: any) => any) => any;\n post?: (path: string, handler: (c: any) => any) => any;\n };\n /**\n * VoltAgent agents to expose to CopilotKit. Will be wrapped lazily.\n */\n agents?: Record<string, Agent>;\n /**\n * Optional resource IDs to pick from the global AgentRegistry if `agents` is not provided.\n * If omitted and no agents are provided, all registered agents will be exposed.\n */\n resourceIds?: string[];\n /**\n * Path to mount CopilotKit endpoint. Defaults to \"/copilotkit\".\n */\n path?: string;\n};\n\n/**\n * Create a framework-agnostic fetch handler for CopilotKit that serves VoltAgent-backed AG-UI agents.\n *\n * @example\n * ```ts\n * import { createCopilotKitHandler } from \"@voltagent/ag-ui\";\n * import { createVoltAgentAGUI } from \"@voltagent/ag-ui\";\n * import { agent } from \"./agent\"; // VoltAgent instance\n *\n * const handler = createCopilotKitHandler({\n * agents: { assistant: createVoltAgentAGUI({ agent }) },\n * endpoint: \"/api/copilotkit\",\n * });\n *\n * export default {\n * fetch: handler,\n * };\n * ```\n */\nexport function createCopilotKitHandler(options: CopilotKitHandlerOptions) {\n const endpoint = options.endpoint ?? \"/copilotkit\";\n const serviceAdapter = options.serviceAdapter ?? new ExperimentalEmptyAdapter();\n\n return async (req: Request): Promise<Response> => {\n // We intentionally avoid logging request bodies to keep the handler silent in production.\n await req\n .clone()\n .text()\n .catch(() => undefined);\n\n const agents =\n (await options.loadAgents?.()) ??\n options.agents ??\n (() => {\n throw new Error(\"No agents provided to CopilotKit handler\");\n })();\n\n // Lightweight wrapper to add per-run/connect logging without touching the original agents\n const wrappedAgents: Record<string, AbstractAgent> = {};\n for (const [id, agent] of Object.entries(agents)) {\n wrappedAgents[id] = new (class extends AbstractAgent {\n run(input: RunAgentInput) {\n console.log(\"[CopilotKit] agent.run\", {\n agentId: id,\n threadId: input.threadId,\n runId: input.runId,\n });\n return (agent as AbstractAgent).run(input);\n }\n // Forward connect if the agent implements it\n connect(input: RunAgentInput) {\n console.log(\"[CopilotKit] agent.connect\", {\n agentId: id,\n threadId: input.threadId,\n runId: input.runId,\n });\n return (agent as any).connect?.(input);\n }\n clone() {\n return this;\n }\n })();\n }\n\n const runtime = new CopilotRuntime({ agents: wrappedAgents });\n\n const { handleRequest } = copilotRuntimeNextJSAppRouterEndpoint({\n runtime,\n serviceAdapter,\n endpoint,\n });\n\n let response: Response;\n try {\n response = await handleRequest(req);\n } catch (error) {\n console.error(\"[CopilotKit] handler failed\", {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n throw error;\n }\n return response;\n };\n}\n\n/**\n * Convenience helper: register CopilotKit routes on a Hono-like app using VoltAgent agents.\n */\nexport function registerCopilotKitRoutes(options: RegisterCopilotKitRoutesOptions) {\n const path = options.path ?? \"/copilotkit\";\n const resolveAgents = (): Record<string, Agent> => {\n if (options.agents) return options.agents;\n const registry = AgentRegistry.getInstance();\n const ids = options.resourceIds;\n if (ids && ids.length > 0) {\n return Object.fromEntries(\n ids\n .map((id) => {\n const agent = registry.getAgent(id);\n return agent ? [id, agent] : undefined;\n })\n .filter(Boolean) as [string, Agent][],\n );\n }\n return Object.fromEntries(registry.getAllAgents().map((agent) => [agent.id, agent]));\n };\n\n const handler = createCopilotKitHandler({\n loadAgents: () =>\n Object.fromEntries(\n Object.entries(resolveAgents()).map(([id, agent]) => [id, createVoltAgentAGUI({ agent })]),\n ),\n endpoint: path,\n });\n\n const routeHandler = async (c: any) => {\n const method = c.req?.method;\n if (method && method !== \"POST\") {\n return c.json?.({ success: false, error: \"Use POST with CopilotKit runtime requests.\" }, 405);\n }\n\n try {\n return await handler(c.req?.raw ?? c.request ?? c);\n } catch (error) {\n console.error(\"[copilotkit] handler error\", error);\n return c.json?.(\n { success: false, error: \"CopilotKit handler failed\", detail: `${error}` },\n 500,\n );\n }\n };\n\n const register = (p: string) => {\n if (typeof options.app.post === \"function\") {\n options.app.post(p, routeHandler);\n } else {\n options.app.all(p, routeHandler);\n }\n };\n\n [path, `${path}/*`].forEach(register);\n // Deliberately no return; route registration side-effect only\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAA8B;AAuB9B,kBAA0B;AAG1B,mBAA8B;AAC9B,kBAA2B;AAgB3B,SAAS,SAAS,SAAiB,MAAgC;AAEjE,UAAQ,IAAI,mBAAmB,OAAO,IAAI,QAAQ,CAAC,CAAC;AACtD;AAHS;AASF,IAAM,gBAAN,cAA4B,4BAAc;AAAA,EApDjD,OAoDiD;AAAA;AAAA;AAAA,EAC9B;AAAA,EACA;AAAA,EAEjB,YAAY,QAA6B;AACvC,UAAM;AACN,SAAK,QAAQ,OAAO;AACpB,SAAK,eAAe,OAAO;AAAA,EAC7B;AAAA,EAEA,IAAI,OAAwD;AAC1D,UAAM,UAAU,IAAI,uBAAsB,CAAC,eAAe;AACxD,YAAM,kBAAkB,IAAI,gBAAgB;AAC5C,UAAI,eAAe;AACnB,eAAS,aAAa,EAAE,UAAU,MAAM,UAAU,OAAO,MAAM,MAAM,CAAC;AACtE,YAAM,aAA8B;AAAA,QAClC,MAAM,sBAAU;AAAA,QAChB,UAAU,MAAM;AAAA,QAChB,OAAO,MAAM;AAAA,MACf;AACA,iBAAW,KAAK,UAAU;AAE1B,YAAM,MAAM,mCAAY;AACtB,YAAI,mBAAmB,WAAW;AAElC,YAAI;AACF,gBAAM,KAAK,4BAA4B,KAAK;AAE5C,gBAAM,gBAAgB,KAAK,mBAAmB,OAAO,eAAe;AACpE,gBAAM,eAAe,kCAAkC,MAAM,QAAQ;AAErE,mBAAS,4BAA4B,EAAE,gBAAgB,aAAa,OAAO,CAAC;AAC5E,gBAAM,SAAS,MAAM,KAAK,MAAM,WAAW,cAAqB,aAAa;AAE7E,2BAAiB,QAAQ,OAAO,YAAY;AAC1C,qBAAS,mBAAmB,EAAE,UAAU,KAAK,MAAM,IAAK,KAAa,GAAG,CAAC;AACzE,iBAAK,KAAK,SAAS,WAAW,KAAK,SAAS,iBAAiB,KAAK,WAAW;AAC3E,iCAAmB,KAAK;AAAA,YAC1B;AACA,kBAAM,SAAS,8BAA8B,MAAM,gBAAgB;AACnE,gBAAI,CAAC,OAAQ;AAEb,uBAAW,SAAS,QAAQ;AAC1B,uBAAS,cAAc,EAAE,MAAM,MAAM,MAAM,WAAY,MAAc,UAAU,CAAC;AAEhF,yBAAW,KAAK,KAAK;AACrB,mBACG,MAAM,SAAS,sBAAU,sBACxB,MAAM,SAAS,sBAAU,sBACzB,MAAM,SAAS,sBAAU,qBAC3B,eAAe,SACf,MAAM,WACN;AACA,mCAAmB,MAAM;AAAA,cAC3B;AAAA,YACF;AAAA,UACF;AAEA,gBAAM,gBAAgB,MAAM,KAAK,0BAA0B,KAAK;AAChE,cAAI,eAAe;AACjB,uBAAW,KAAK,aAAa;AAAA,UAC/B;AAEA,gBAAM,WAA6B;AAAA,YACjC,MAAM,sBAAU;AAAA,YAChB,UAAU,MAAM;AAAA,YAChB,OAAO,MAAM;AAAA,UACf;AACA,qBAAW,KAAK,QAAQ;AACxB,yBAAe;AACf,qBAAW,SAAS;AACpB,mBAAS,gBAAgB,EAAE,UAAU,MAAM,UAAU,OAAO,MAAM,MAAM,CAAC;AAAA,QAC3E,SAAS,OAAO;AACd,mBAAS,aAAa;AAAA,YACpB,UAAU,MAAM;AAAA,YAChB,OAAO,MAAM;AAAA,YACb,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,YAC5D,OAAO,iBAAiB,QAAQ,MAAM,QAAQ;AAAA,UAChD,CAAC;AAGD,gBAAM,WAA0B;AAAA,YAC9B,MAAM,sBAAU;AAAA,YAChB,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,UACpD;AACA,qBAAW,KAAK,QAAQ;AAMxB,cAAI;AACF,kBAAM,WAA6B;AAAA,cACjC,MAAM,sBAAU;AAAA,cAChB,UAAU,MAAM;AAAA,cAChB,OAAO,MAAM;AAAA,YACf;AACA,uBAAW,KAAK,QAAQ;AACxB,2BAAe;AAAA,UACjB,QAAQ;AAGN,2BAAe;AAAA,UACjB;AACA,qBAAW,SAAS;AAAA,QACtB;AAAA,MACF,GApFY;AAsFZ,WAAK,IAAI;AAET,aAAO,MAAM;AACX,iBAAS,yBAAyB;AAAA,UAChC,UAAU,MAAM;AAAA,UAChB,OAAO,MAAM;AAAA,UACb;AAAA,QACF,CAAC;AACD,wBAAgB,MAAM;AACtB,YAAI,CAAC,cAAc;AACjB,gBAAM,WAA6B;AAAA,YACjC,MAAM,sBAAU;AAAA,YAChB,UAAU,MAAM;AAAA,YAChB,OAAO,MAAM;AAAA,UACf;AACA,qBAAW,KAAK,QAAQ;AACxB,yBAAe;AACf,qBAAW,SAAS;AAAA,QACtB;AAAA,MACF;AAAA,IACF,CAAC;AAGD,WAAO;AAAA,EACT;AAAA,EAEQ,mBACN,OACA,iBACmB;AACnB,UAAM,UAAU,oBAAI,IAAqB;AACzC,UAAM,cAAgC;AAAA,MACpC,OAAQ,MAAM,SAAqC;AAAA,MACnD,SAAS,MAAM;AAAA,MACf,gBAAgB,MAAM;AAAA,IACxB;AAEA,YAAQ,IAAI,gBAAgB,WAAW;AAEvC,WAAO;AAAA,MACL,aAAa,gBAAgB;AAAA,MAC7B,gBAAgB,MAAM;AAAA,MACtB,QAAQ,KAAK,eAAe,KAAK;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,4BAA4B,OAAqC;AAC7E,UAAM,QAAQ,MAAM;AACpB,QAAI,CAAC,SAAS,OAAO,UAAU,YAAY,OAAO,KAAK,KAAK,EAAE,WAAW,GAAG;AAC1E;AAAA,IACF;AAEA,UAAM,SAAS,KAAK,MAAM,YAAY;AACtC,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAEA,QAAI;AACF,YAAM,OAAO,oBAAoB;AAAA,QAC/B,gBAAgB,MAAM;AAAA,QACtB,aAAS,4BAAc,KAAK;AAAA,MAC9B,CAAC;AAAA,IACH,SAAS,OAAO;AAEd,cAAQ,QAAQ,mDAAmD,KAAK;AAAA,IAC1E;AAAA,EACF;AAAA,EAEA,MAAc,0BACZ,OACyC;AACzC,UAAM,SAAS,KAAK,MAAM,YAAY;AACtC,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAEA,QAAI;AACF,YAAM,MAAM,MAAM,OAAO,iBAAiB;AAAA,QACxC,gBAAgB,MAAM;AAAA,MACxB,CAAC;AAED,UAAI,CAAC,KAAK;AACR;AAAA,MACF;AAEA,UAAI,WAAoB;AACxB,UAAI;AACF,mBAAW,KAAK,MAAM,GAAG;AAAA,MAC3B,QAAQ;AAAA,MAER;AAEA,aAAO;AAAA,QACL,MAAM,sBAAU;AAAA,QAChB;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,QAAQ,gDAAgD,KAAK;AACrE;AAAA,IACF;AAAA,EACF;AACF;AAMA,IAAM,gBAAgB,wBAAC,YAA6C,QAAQ,SAAS,QAA/D;AACtB,IAAM,qBAAqB,wBAAC,YAC1B,QAAQ,SAAS,aADQ;AAE3B,IAAM,kBAAkB,wBAAC,YAA+C,QAAQ,SAAS,UAAjE;AACxB,IAAM,qBAAqB,wBAAC,YAC1B,QAAQ,SAAS,aADQ;AAE3B,IAAM,gBAAgB,wBAAC,YAA6C,QAAQ,SAAS,QAA/D;AActB,IAAM,wCAAwC;AAC9C,SAAS,kCAAkC,UAAsC;AAC/E,QAAM,eAAe,oBAAI,IAAoB;AAC7C,QAAM,oBAAqC,CAAC;AAE5C,aAAW,OAAO,UAAU;AAC1B,UAAM,YAAY,IAAI,MAAM,WAAW;AAEvC,QAAI,cAAc,GAAG,GAAG;AACtB,wBAAkB,KAAK;AAAA,QACrB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,SAAS,mBAAmB,IAAI,OAAO;AAAA,MACzC,CAAC;AACD;AAAA,IACF;AAEA,QAAI,mBAAmB,GAAG,GAAG;AAC3B,YAAM,QAAsB,CAAC;AAC7B,YAAM,cAAc,IAAI,UAAU,mBAAmB,IAAI,OAAO,IAAI;AACpE,UAAI,aAAa;AACf,cAAM,KAAK,EAAE,MAAM,QAAQ,MAAM,YAAY,CAAC;AAAA,MAChD;AAEA,iBAAW,QAAQ,IAAI,aAAa,CAAC,GAAG;AACtC,cAAM,QAAQ,gBAAgB,KAAK,SAAS,SAAS;AACrD,qBAAa,IAAI,KAAK,IAAI,KAAK,SAAS,IAAI;AAC5C,cAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,YAAY,KAAK;AAAA,UACjB,UAAU,KAAK,SAAS;AAAA,UACxB;AAAA,QACF,CAAC;AAAA,MACH;AAEA,wBAAkB,KAAK;AAAA,QACrB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AACD;AAAA,IACF;AAEA,QAAI,gBAAgB,GAAG,KAAK,mBAAmB,GAAG,GAAG;AACnD,wBAAkB,KAAK;AAAA,QACrB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,SAAS,IAAI;AAAA,MACf,CAAC;AACD;AAAA,IACF;AAEA,QAAI,cAAc,GAAG,GAAG;AACtB,YAAM,WAAW,IAAI,aAAa,aAAa,IAAI,IAAI,UAAU,IAAI;AACrE,wBAAkB,KAAK;AAAA,QACrB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,OAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN,YAAY,IAAI;AAAA,YAChB,UAAU,YAAY;AAAA,YACtB,QAAQ,gBAAgB,IAAI,OAAO;AAAA,UACrC;AAAA,QACF;AAAA,MACF,CAAC;AACD;AAAA,IACF;AAGA,sBAAkB,KAAK;AAAA,MACrB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,OAAO,CAAC,EAAE,MAAM,QAAQ,UAAM,4BAAe,IAAY,WAAW,EAAE,EAAE,CAAC;AAAA,IAC3E,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AA7ES;AA+ET,SAAS,mBAAmB,SAAuE;AACjG,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,OAAO,YAAY,SAAU,QAAO;AACxC,MAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,QAAO;AAEpC,QAAM,QAAQ;AAEd,SAAO,MACJ,IAAI,CAAC,SAAkC;AACtC,UAAM,YAAY,OAAO,KAAK,SAAS,WAAY,KAAK,OAAkB;AAC1E,WAAO;AAAA,EACT,CAAC,EACA,OAAO,CAAC,SAAiB,KAAK,SAAS,CAAC,EACxC,KAAK,IAAI;AACd;AAdS;AAgBT,SAAS,gBAAgB,OAAkC;AACzD,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI;AACF,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAPS;AAuBT,SAAS,8BACP,MACA,mBACiC;AACjC,QAAM,UAAW,KAA+C,WAAW;AAC3E,QAAM,WAAY,KAA0B;AAE5C,MAAI,aAAa,oBAAoB;AACnC,UAAM,YACH,KAAgC,aAChC,QAAmC,aACpC;AACF,UAAM,kBACH,QAA0C,mBAC1C,QAAmC;AAEtC,QAAI,CAAC,mBAAmB,OAAO,oBAAoB,UAAU;AAC3D,aAAO;AAAA,IACT;AAGA,UAAM,cAA2B;AAAA,MAC/B,MAAM,sBAAU;AAAA,MAChB,MAAM;AAAA,MACN,OAAO;AAAA,QACL,WAAW,aAAa;AAAA,QACxB,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,WAAO,CAAC,WAAW;AAAA,EACrB;AAEA,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK,cAAc;AAEjB,aAAO;AAAA,IACT;AAAA,IACA,KAAK,cAAc;AACjB,YAAM,YAAY,KAAK,aAAa;AACpC,YAAM,QAA+B;AAAA,QACnC,MAAM,sBAAU;AAAA,QAChB,OAAO,KAAK,QAAQ;AAAA,QACpB;AAAA,QACA,MAAM;AAAA,MACR;AACA,aAAO,CAAC,KAAK;AAAA,IACf;AAAA,IACA,KAAK,YAAY;AAEf,aAAO;AAAA,IACT;AAAA,IACA,KAAK,aAAa;AAChB,YAAM,aAAc,QAAoC,cAAc,WAAW;AACjF,YAAM,WAAY,QAAkC,YAAY;AAChE,YAAM,UACH,QAA+B,QAC/B,QAAgC,SAChC,QAAoC;AACvC,YAAM,YAA+B;AAAA,QACnC,MAAM,sBAAU;AAAA,QAChB;AAAA,QACA,WAAO,4BAAc,WAAW,CAAC,CAAC;AAAA,MACpC;AACA,YAAM,aAAiC;AAAA,QACrC,MAAM,sBAAU;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,QACd,iBAAiB;AAAA,MACnB;AACA,YAAM,WAA6B;AAAA,QACjC,MAAM,sBAAU;AAAA,QAChB;AAAA,MACF;AACA,aAAO,CAAC,YAAY,WAAW,QAAQ;AAAA,IACzC;AAAA,IACA,KAAK,eAAe;AAClB,YAAM,YACH,QAAiC,UACjC,QAAiC,UACjC,QAA+B,QAChC;AACF,YAAM,cAAmC;AAAA,QACvC,MAAM,sBAAU;AAAA,QAChB,YAAa,QAAoC,cAAc,WAAW;AAAA,QAC1E,aAAS,4BAAc,aAAa,CAAC,CAAC;AAAA,QACtC,WAAW,WAAW;AAAA,QACtB,MAAM;AAAA,MACR;AACA,aAAO,CAAC,WAAW;AAAA,IACrB;AAAA,IACA,KAAK,SAAS;AACZ,YAAM,aAAoC;AAAA,QACxC,MAAM,sBAAU;AAAA,QAChB,OAAO,UAAW,QAAgC,KAAK;AAAA,QACvD,WAAW;AAAA,QACX,MAAM;AAAA,MACR;AACA,aAAO,CAAC,UAAU;AAAA,IACpB;AAAA,IACA;AACE,aAAO;AAAA,EACX;AACF;AAvGS;AAyGF,SAAS,oBAAoB,QAA4C;AAC9E,SAAO,IAAI,cAAc,MAAM;AACjC;AAFgB;AAIhB,SAAS,aAAqB;AAC5B,QAAM,YAAY,OAAO,eAAe,cAAe,WAAmB,SAAS;AACnF,MAAI,aAAa,OAAO,UAAU,eAAe,YAAY;AAC3D,WAAO,UAAU,WAAW;AAAA,EAC9B;AAEA,QAAM,SAAS,6BAAM,KAAK,MAAM,KAAK,OAAO,IAAI,KAAM,GAAvC;AACf,MAAI,OAAO;AACX,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,UAAQ;AACR,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,UAAQ;AACR,WAAU,OAAO,IAAI,OAAU,OAAQ,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACnE,UAAQ;AACR,WAAU,OAAO,IAAI,QAAU,OAAQ,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACnE,UAAQ;AACR,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,SAAO;AACT;AArBS;;;ACpgBT,IAAAA,iBAA8B;AAE9B,IAAAC,kBAKO;AAEP,IAAAC,eAA8B;AAgEvB,SAAS,wBAAwB,SAAmC;AACzE,QAAM,WAAW,QAAQ,YAAY;AACrC,QAAM,iBAAiB,QAAQ,kBAAkB,IAAI,yCAAyB;AAE9E,SAAO,OAAO,QAAoC;AAEhD,UAAM,IACH,MAAM,EACN,KAAK,EACL,MAAM,MAAM,MAAS;AAExB,UAAM,SACH,MAAM,QAAQ,aAAa,KAC5B,QAAQ,WACP,MAAM;AACL,YAAM,IAAI,MAAM,0CAA0C;AAAA,IAC5D,GAAG;AAGL,UAAM,gBAA+C,CAAC;AACtD,eAAW,CAAC,IAAI,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AAChD,oBAAc,EAAE,IAAI,IAAK,cAAc,6BAAc;AAAA,QACnD,IAAI,OAAsB;AACxB,kBAAQ,IAAI,0BAA0B;AAAA,YACpC,SAAS;AAAA,YACT,UAAU,MAAM;AAAA,YAChB,OAAO,MAAM;AAAA,UACf,CAAC;AACD,iBAAQ,MAAwB,IAAI,KAAK;AAAA,QAC3C;AAAA;AAAA,QAEA,QAAQ,OAAsB;AAC5B,kBAAQ,IAAI,8BAA8B;AAAA,YACxC,SAAS;AAAA,YACT,UAAU,MAAM;AAAA,YAChB,OAAO,MAAM;AAAA,UACf,CAAC;AACD,iBAAQ,MAAc,UAAU,KAAK;AAAA,QACvC;AAAA,QACA,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF,EAAG;AAAA,IACL;AAEA,UAAM,UAAU,IAAI,+BAAe,EAAE,QAAQ,cAAc,CAAC;AAE5D,UAAM,EAAE,cAAc,QAAI,uDAAsC;AAAA,MAC9D;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,QAAI;AACJ,QAAI;AACF,iBAAW,MAAM,cAAc,GAAG;AAAA,IACpC,SAAS,OAAO;AACd,cAAQ,MAAM,+BAA+B;AAAA,QAC3C,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC5D,OAAO,iBAAiB,QAAQ,MAAM,QAAQ;AAAA,MAChD,CAAC;AACD,YAAM;AAAA,IACR;AACA,WAAO;AAAA,EACT;AACF;AAjEgB;AAsET,SAAS,yBAAyB,SAA0C;AACjF,QAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAM,gBAAgB,6BAA6B;AACjD,QAAI,QAAQ,OAAQ,QAAO,QAAQ;AACnC,UAAM,WAAW,2BAAc,YAAY;AAC3C,UAAM,MAAM,QAAQ;AACpB,QAAI,OAAO,IAAI,SAAS,GAAG;AACzB,aAAO,OAAO;AAAA,QACZ,IACG,IAAI,CAAC,OAAO;AACX,gBAAM,QAAQ,SAAS,SAAS,EAAE;AAClC,iBAAO,QAAQ,CAAC,IAAI,KAAK,IAAI;AAAA,QAC/B,CAAC,EACA,OAAO,OAAO;AAAA,MACnB;AAAA,IACF;AACA,WAAO,OAAO,YAAY,SAAS,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;AAAA,EACrF,GAfsB;AAiBtB,QAAM,UAAU,wBAAwB;AAAA,IACtC,YAAY,6BACV,OAAO;AAAA,MACL,OAAO,QAAQ,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;AAAA,IAC3F,GAHU;AAAA,IAIZ,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,eAAe,8BAAO,MAAW;AACrC,UAAM,SAAS,EAAE,KAAK;AACtB,QAAI,UAAU,WAAW,QAAQ;AAC/B,aAAO,EAAE,OAAO,EAAE,SAAS,OAAO,OAAO,6CAA6C,GAAG,GAAG;AAAA,IAC9F;AAEA,QAAI;AACF,aAAO,MAAM,QAAQ,EAAE,KAAK,OAAO,EAAE,WAAW,CAAC;AAAA,IACnD,SAAS,OAAO;AACd,cAAQ,MAAM,8BAA8B,KAAK;AACjD,aAAO,EAAE;AAAA,QACP,EAAE,SAAS,OAAO,OAAO,6BAA6B,QAAQ,GAAG,KAAK,GAAG;AAAA,QACzE;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAfqB;AAiBrB,QAAM,WAAW,wBAAC,MAAc;AAC9B,QAAI,OAAO,QAAQ,IAAI,SAAS,YAAY;AAC1C,cAAQ,IAAI,KAAK,GAAG,YAAY;AAAA,IAClC,OAAO;AACL,cAAQ,IAAI,IAAI,GAAG,YAAY;AAAA,IACjC;AAAA,EACF,GANiB;AAQjB,GAAC,MAAM,GAAG,IAAI,IAAI,EAAE,QAAQ,QAAQ;AAEtC;AAtDgB;","names":["import_client","import_runtime","import_core"]}
|
package/dist/index.mjs
CHANGED
|
@@ -202,13 +202,13 @@ function convertAGUIMessagesToVoltMessages(messages) {
|
|
|
202
202
|
parts.push({ type: "text", text: textContent });
|
|
203
203
|
}
|
|
204
204
|
for (const call of msg.toolCalls ?? []) {
|
|
205
|
-
const
|
|
205
|
+
const input = safelyParseJson(call.function.arguments);
|
|
206
206
|
toolNameById.set(call.id, call.function.name);
|
|
207
207
|
parts.push({
|
|
208
208
|
type: "tool-call",
|
|
209
209
|
toolCallId: call.id,
|
|
210
210
|
toolName: call.function.name,
|
|
211
|
-
|
|
211
|
+
input
|
|
212
212
|
});
|
|
213
213
|
}
|
|
214
214
|
convertedMessages.push({
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/voltagent-agent.ts","../src/copilotkit.ts"],"sourcesContent":["import { AbstractAgent } from \"@ag-ui/client\";\nimport type {\n AssistantMessage,\n BaseEvent,\n CustomEvent,\n DeveloperMessage,\n Message,\n RunAgentInput,\n RunErrorEvent,\n RunFinishedEvent,\n RunStartedEvent,\n StateSnapshotEvent,\n SystemMessage,\n TextMessageChunkEvent,\n TextMessageEndEvent,\n TextMessageStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n ToolCallResultEvent,\n ToolCallStartEvent,\n ToolMessage,\n UserMessage,\n} from \"@ag-ui/core\";\nimport { EventType } from \"@ag-ui/core\";\nimport type { StreamTextOptions, VoltAgentTextStreamPart } from \"@voltagent/core\";\nimport type { Agent } from \"@voltagent/core\";\nimport { safeStringify } from \"@voltagent/internal/utils\";\nimport { Observable } from \"rxjs\";\n\ntype AGUIContextValue = {\n state?: Record<string, unknown>;\n context?: RunAgentInput[\"context\"];\n forwardedProps?: RunAgentInput[\"forwardedProps\"];\n};\n\ntype VoltAgentAGUIConfig = {\n agent: Agent;\n /**\n * Optional function to derive userId for VoltAgent memory/telemetry.\n */\n deriveUserId?: (input: RunAgentInput) => string | undefined;\n};\n\nfunction debugLog(message: string, data?: Record<string, unknown>) {\n // eslint-disable-next-line no-console\n console.log(`[VoltAgentAGUI] ${message}`, data ?? {});\n}\n\n/**\n * VoltAgent adapter that speaks the AG-UI protocol.\n * and stream VoltAgent events as AG-UI BaseEvents.\n */\nexport class VoltAgentAGUI extends AbstractAgent {\n private readonly agent: Agent;\n private readonly deriveUserId?: VoltAgentAGUIConfig[\"deriveUserId\"];\n\n constructor(config: VoltAgentAGUIConfig) {\n super();\n this.agent = config.agent;\n this.deriveUserId = config.deriveUserId;\n }\n\n run(input: RunAgentInput): ReturnType<AbstractAgent[\"run\"]> {\n const stream$ = new Observable<BaseEvent>((subscriber) => {\n const abortController = new AbortController();\n let finishedSent = false;\n debugLog(\"run start\", { threadId: input.threadId, runId: input.runId });\n const runStarted: RunStartedEvent = {\n type: EventType.RUN_STARTED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(runStarted);\n\n const run = async () => {\n let currentMessageId = generateId();\n\n try {\n await this.persistStateToWorkingMemory(input);\n\n const streamOptions = this.buildStreamOptions(input, abortController);\n const voltMessages = convertAGUIMessagesToVoltMessages(input.messages);\n\n debugLog(\"calling agent.streamText\", { messagesLength: voltMessages.length });\n const result = await this.agent.streamText(voltMessages as any, streamOptions);\n\n for await (const part of result.fullStream) {\n debugLog(\"fullStream part\", { partType: part.type, id: (part as any).id });\n if ((part.type === \"start\" || part.type === \"start-step\") && part.messageId) {\n currentMessageId = part.messageId;\n }\n const events = convertVoltStreamPartToEvents(part, currentMessageId);\n if (!events) continue;\n\n for (const event of events) {\n debugLog(\"emit event\", { type: event.type, messageId: (event as any).messageId });\n\n subscriber.next(event);\n if (\n (event.type === EventType.TEXT_MESSAGE_START ||\n event.type === EventType.TEXT_MESSAGE_CHUNK ||\n event.type === EventType.TEXT_MESSAGE_END) &&\n \"messageId\" in event &&\n event.messageId\n ) {\n currentMessageId = event.messageId;\n }\n }\n }\n\n const snapshotEvent = await this.readWorkingMemorySnapshot(input);\n if (snapshotEvent) {\n subscriber.next(snapshotEvent);\n }\n\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n subscriber.complete();\n debugLog(\"run finished\", { threadId: input.threadId, runId: input.runId });\n } catch (error) {\n debugLog(\"run error\", {\n threadId: input.threadId,\n runId: input.runId,\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n\n // Emit the error event so consumers know what went wrong.\n const runError: RunErrorEvent = {\n type: EventType.RUN_ERROR,\n message: error instanceof Error ? error.message : \"Unknown error\",\n };\n subscriber.next(runError);\n\n // The AG-UI verify layer may reject further events once RUN_ERROR\n // has been emitted (the run is considered terminal). Guard the\n // RUN_FINISHED emission so the subscriber can still be completed\n // cleanly without an unhandled exception.\n try {\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n } catch {\n // Verify layer rejected the event – that's OK, mark as sent\n // so the unsubscribe handler doesn't attempt it again.\n finishedSent = true;\n }\n subscriber.complete();\n }\n };\n\n void run();\n\n return () => {\n debugLog(\"run abort/unsubscribe\", {\n threadId: input.threadId,\n runId: input.runId,\n finishedSent,\n });\n abortController.abort();\n if (!finishedSent) {\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n subscriber.complete();\n }\n };\n });\n\n // Cast through unknown to avoid rxjs type mismatches across hoisted versions\n return stream$ as unknown as ReturnType<AbstractAgent[\"run\"]>;\n }\n\n private buildStreamOptions(\n input: RunAgentInput,\n abortController: AbortController,\n ): StreamTextOptions {\n const context = new Map<string, unknown>();\n const aguiContext: AGUIContextValue = {\n state: (input.state as Record<string, unknown>) || undefined,\n context: input.context,\n forwardedProps: input.forwardedProps,\n };\n\n context.set(\"agui:context\", aguiContext);\n\n return {\n abortSignal: abortController.signal,\n conversationId: input.threadId,\n userId: this.deriveUserId?.(input),\n context,\n };\n }\n\n private async persistStateToWorkingMemory(input: RunAgentInput): Promise<void> {\n const state = input.state;\n if (!state || typeof state !== \"object\" || Object.keys(state).length === 0) {\n return;\n }\n\n const memory = this.agent.getMemory?.();\n if (!memory) {\n return;\n }\n\n try {\n await memory.updateWorkingMemory({\n conversationId: input.threadId,\n content: safeStringify(state),\n });\n } catch (error) {\n // Non-fatal: working memory might be disabled or misconfigured\n console.debug?.(\"Failed to persist AG-UI state to working memory\", error);\n }\n }\n\n private async readWorkingMemorySnapshot(\n input: RunAgentInput,\n ): Promise<StateSnapshotEvent | undefined> {\n const memory = this.agent.getMemory?.();\n if (!memory) {\n return;\n }\n\n try {\n const raw = await memory.getWorkingMemory({\n conversationId: input.threadId,\n });\n\n if (!raw) {\n return;\n }\n\n let snapshot: unknown = raw;\n try {\n snapshot = JSON.parse(raw);\n } catch {\n // keep raw string\n }\n\n return {\n type: EventType.STATE_SNAPSHOT,\n snapshot,\n };\n } catch (error) {\n console.debug?.(\"Failed to read AG-UI working memory snapshot\", error);\n return;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Message conversion helpers\n// ---------------------------------------------------------------------------\n\nconst isUserMessage = (message: Message): message is UserMessage => message.role === \"user\";\nconst isAssistantMessage = (message: Message): message is AssistantMessage =>\n message.role === \"assistant\";\nconst isSystemMessage = (message: Message): message is SystemMessage => message.role === \"system\";\nconst isDeveloperMessage = (message: Message): message is DeveloperMessage =>\n message.role === \"developer\";\nconst isToolMessage = (message: Message): message is ToolMessage => message.role === \"tool\";\n\ntype VoltUIPart =\n | { type: \"text\"; text: string }\n | { type: \"tool-call\"; toolCallId: string; toolName: string; args?: unknown }\n | { type: \"tool-result\"; toolCallId?: string; toolName?: string; output?: unknown };\n\ntype VoltUIMessage = {\n id: string;\n role: \"user\" | \"assistant\" | \"system\" | \"tool\";\n content?: string;\n parts?: VoltUIPart[];\n};\n\nconst VOLTAGENT_MESSAGE_METADATA_EVENT_NAME = \"voltagent.message_metadata\";\nfunction convertAGUIMessagesToVoltMessages(messages: Message[]): VoltUIMessage[] {\n const toolNameById = new Map<string, string>();\n const convertedMessages: VoltUIMessage[] = [];\n\n for (const msg of messages) {\n const messageId = msg.id || generateId();\n\n if (isUserMessage(msg)) {\n convertedMessages.push({\n id: messageId,\n role: \"user\",\n content: extractTextContent(msg.content),\n });\n continue;\n }\n\n if (isAssistantMessage(msg)) {\n const parts: VoltUIPart[] = [];\n const textContent = msg.content ? extractTextContent(msg.content) : \"\";\n if (textContent) {\n parts.push({ type: \"text\", text: textContent });\n }\n\n for (const call of msg.toolCalls ?? []) {\n const args = safelyParseJson(call.function.arguments);\n toolNameById.set(call.id, call.function.name);\n parts.push({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n args,\n });\n }\n\n convertedMessages.push({\n id: messageId,\n role: \"assistant\",\n parts,\n });\n continue;\n }\n\n if (isSystemMessage(msg) || isDeveloperMessage(msg)) {\n convertedMessages.push({\n id: messageId,\n role: \"system\",\n content: msg.content,\n });\n continue;\n }\n\n if (isToolMessage(msg)) {\n const toolName = msg.toolCallId ? toolNameById.get(msg.toolCallId) : undefined;\n convertedMessages.push({\n id: messageId,\n role: \"tool\",\n parts: [\n {\n type: \"tool-result\",\n toolCallId: msg.toolCallId,\n toolName: toolName ?? \"tool\",\n output: safelyParseJson(msg.content),\n },\n ],\n });\n continue;\n }\n\n // activity or any other custom role -> fold into assistant text\n convertedMessages.push({\n id: messageId,\n role: \"assistant\",\n parts: [{ type: \"text\", text: safeStringify((msg as any).content ?? \"\") }],\n });\n }\n\n return convertedMessages;\n}\n\nfunction extractTextContent(content: UserMessage[\"content\"] | AssistantMessage[\"content\"]): string {\n if (!content) return \"\";\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n\n const parts = content as Array<Record<string, unknown>>;\n\n return parts\n .map((part: Record<string, unknown>) => {\n const textValue = typeof part.text === \"string\" ? (part.text as string) : \"\";\n return textValue;\n })\n .filter((text: string) => text.length > 0)\n .join(\"\\n\");\n}\n\nfunction safelyParseJson(value: string | unknown): unknown {\n if (typeof value !== \"string\") return value;\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Stream conversion helpers\n// ---------------------------------------------------------------------------\n\ntype StreamConversionResult =\n | TextMessageStartEvent\n | TextMessageChunkEvent\n | TextMessageEndEvent\n | CustomEvent\n | ToolCallStartEvent\n | ToolCallEndEvent\n | ToolCallArgsEvent\n | ToolCallResultEvent;\n\nfunction convertVoltStreamPartToEvents(\n part: VoltAgentTextStreamPart,\n fallbackMessageId: string,\n): StreamConversionResult[] | null {\n const payload = (part as { payload?: Record<string, unknown> }).payload ?? part;\n const partType = (part as { type: string }).type;\n\n if (partType === \"message-metadata\") {\n const messageId =\n (part as { messageId?: string }).messageId ??\n (payload as { messageId?: string }).messageId ??\n fallbackMessageId;\n const messageMetadata =\n (payload as { messageMetadata?: unknown }).messageMetadata ??\n (payload as { metadata?: unknown }).metadata;\n\n if (!messageMetadata || typeof messageMetadata !== \"object\") {\n return null;\n }\n\n // Best-practice carrier for app-specific metadata on AG-UI streams.\n const customEvent: CustomEvent = {\n type: EventType.CUSTOM,\n name: VOLTAGENT_MESSAGE_METADATA_EVENT_NAME,\n value: {\n messageId: messageId || undefined,\n metadata: messageMetadata,\n },\n };\n\n return [customEvent];\n }\n\n switch (part.type) {\n case \"text-start\": {\n // Ignore explicit start; we'll synthesize start when first chunk/end arrives to avoid duplicates\n return null;\n }\n case \"text-delta\": {\n const messageId = part.messageId ?? fallbackMessageId;\n const event: TextMessageChunkEvent = {\n type: EventType.TEXT_MESSAGE_CHUNK,\n delta: part.text ?? \"\",\n messageId,\n role: \"assistant\",\n };\n return [event];\n }\n case \"text-end\": {\n // Let transformChunks close the message; avoid emitting END without a START\n return null;\n }\n case \"tool-call\": {\n const toolCallId = (payload as { toolCallId?: string }).toolCallId ?? generateId();\n const toolName = (payload as { toolName?: string }).toolName ?? \"tool\";\n const rawArgs =\n (payload as { args?: unknown }).args ??\n (payload as { input?: unknown }).input ??\n (payload as { arguments?: unknown }).arguments;\n const argsEvent: ToolCallArgsEvent = {\n type: EventType.TOOL_CALL_ARGS,\n toolCallId,\n delta: safeStringify(rawArgs ?? {}),\n };\n const startEvent: ToolCallStartEvent = {\n type: EventType.TOOL_CALL_START,\n toolCallId,\n toolCallName: toolName,\n parentMessageId: fallbackMessageId,\n };\n const endEvent: ToolCallEndEvent = {\n type: EventType.TOOL_CALL_END,\n toolCallId,\n };\n return [startEvent, argsEvent, endEvent];\n }\n case \"tool-result\": {\n const rawResult =\n (payload as { result?: unknown }).result ??\n (payload as { output?: unknown }).output ??\n (payload as { data?: unknown }).data ??\n payload;\n const resultEvent: ToolCallResultEvent = {\n type: EventType.TOOL_CALL_RESULT,\n toolCallId: (payload as { toolCallId?: string }).toolCallId ?? generateId(),\n content: safeStringify(rawResult ?? {}),\n messageId: generateId(),\n role: \"tool\",\n };\n return [resultEvent];\n }\n case \"error\": {\n const errorEvent: TextMessageChunkEvent = {\n type: EventType.TEXT_MESSAGE_CHUNK,\n delta: `Error: ${(payload as { error?: unknown }).error}`,\n messageId: fallbackMessageId,\n role: \"assistant\",\n };\n return [errorEvent];\n }\n default:\n return null;\n }\n}\n\nexport function createVoltAgentAGUI(config: VoltAgentAGUIConfig): VoltAgentAGUI {\n return new VoltAgentAGUI(config);\n}\n\nfunction generateId(): string {\n const cryptoApi = typeof globalThis !== \"undefined\" ? (globalThis as any).crypto : undefined;\n if (cryptoApi && typeof cryptoApi.randomUUID === \"function\") {\n return cryptoApi.randomUUID();\n }\n\n const random = () => Math.floor(Math.random() * 0xffff);\n let uuid = \"\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += ((random() & 0x0fff) | 0x4000).toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += ((random() & 0x3fff) | 0x8000).toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n return uuid;\n}\n","import { AbstractAgent } from \"@ag-ui/client\";\nimport type { RunAgentInput } from \"@ag-ui/core\";\nimport {\n CopilotRuntime,\n type CopilotServiceAdapter,\n ExperimentalEmptyAdapter,\n copilotRuntimeNextJSAppRouterEndpoint,\n} from \"@copilotkit/runtime\";\nimport type { Agent } from \"@voltagent/core\";\nimport { AgentRegistry } from \"@voltagent/core\";\nimport { createVoltAgentAGUI } from \"./voltagent-agent\";\n\nexport type CopilotKitHandlerOptions = {\n /**\n * Static map of AG-UI agents. Use either this or `loadAgents`.\n */\n agents?: Record<string, AbstractAgent>;\n /**\n * Lazy loader for AG-UI agents. If provided, it overrides `agents`.\n */\n loadAgents?: () => Promise<Record<string, AbstractAgent>> | Record<string, AbstractAgent>;\n /**\n * Optional service adapter. Defaults to ExperimentalEmptyAdapter.\n */\n serviceAdapter?: CopilotServiceAdapter;\n /**\n * Endpoint path used by CopilotKit clients. Defaults to \"/copilotkit\".\n */\n endpoint?: string;\n};\n\nexport type RegisterCopilotKitRoutesOptions = {\n /**\n * Hono-style app instance with `all(path, handler)` support.\n */\n app: {\n all: (path: string, handler: (c: any) => any) => any;\n post?: (path: string, handler: (c: any) => any) => any;\n };\n /**\n * VoltAgent agents to expose to CopilotKit. Will be wrapped lazily.\n */\n agents?: Record<string, Agent>;\n /**\n * Optional resource IDs to pick from the global AgentRegistry if `agents` is not provided.\n * If omitted and no agents are provided, all registered agents will be exposed.\n */\n resourceIds?: string[];\n /**\n * Path to mount CopilotKit endpoint. Defaults to \"/copilotkit\".\n */\n path?: string;\n};\n\n/**\n * Create a framework-agnostic fetch handler for CopilotKit that serves VoltAgent-backed AG-UI agents.\n *\n * @example\n * ```ts\n * import { createCopilotKitHandler } from \"@voltagent/ag-ui\";\n * import { createVoltAgentAGUI } from \"@voltagent/ag-ui\";\n * import { agent } from \"./agent\"; // VoltAgent instance\n *\n * const handler = createCopilotKitHandler({\n * agents: { assistant: createVoltAgentAGUI({ agent }) },\n * endpoint: \"/api/copilotkit\",\n * });\n *\n * export default {\n * fetch: handler,\n * };\n * ```\n */\nexport function createCopilotKitHandler(options: CopilotKitHandlerOptions) {\n const endpoint = options.endpoint ?? \"/copilotkit\";\n const serviceAdapter = options.serviceAdapter ?? new ExperimentalEmptyAdapter();\n\n return async (req: Request): Promise<Response> => {\n // We intentionally avoid logging request bodies to keep the handler silent in production.\n await req\n .clone()\n .text()\n .catch(() => undefined);\n\n const agents =\n (await options.loadAgents?.()) ??\n options.agents ??\n (() => {\n throw new Error(\"No agents provided to CopilotKit handler\");\n })();\n\n // Lightweight wrapper to add per-run/connect logging without touching the original agents\n const wrappedAgents: Record<string, AbstractAgent> = {};\n for (const [id, agent] of Object.entries(agents)) {\n wrappedAgents[id] = new (class extends AbstractAgent {\n run(input: RunAgentInput) {\n console.log(\"[CopilotKit] agent.run\", {\n agentId: id,\n threadId: input.threadId,\n runId: input.runId,\n });\n return (agent as AbstractAgent).run(input);\n }\n // Forward connect if the agent implements it\n connect(input: RunAgentInput) {\n console.log(\"[CopilotKit] agent.connect\", {\n agentId: id,\n threadId: input.threadId,\n runId: input.runId,\n });\n return (agent as any).connect?.(input);\n }\n clone() {\n return this;\n }\n })();\n }\n\n const runtime = new CopilotRuntime({ agents: wrappedAgents });\n\n const { handleRequest } = copilotRuntimeNextJSAppRouterEndpoint({\n runtime,\n serviceAdapter,\n endpoint,\n });\n\n let response: Response;\n try {\n response = await handleRequest(req);\n } catch (error) {\n console.error(\"[CopilotKit] handler failed\", {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n throw error;\n }\n return response;\n };\n}\n\n/**\n * Convenience helper: register CopilotKit routes on a Hono-like app using VoltAgent agents.\n */\nexport function registerCopilotKitRoutes(options: RegisterCopilotKitRoutesOptions) {\n const path = options.path ?? \"/copilotkit\";\n const resolveAgents = (): Record<string, Agent> => {\n if (options.agents) return options.agents;\n const registry = AgentRegistry.getInstance();\n const ids = options.resourceIds;\n if (ids && ids.length > 0) {\n return Object.fromEntries(\n ids\n .map((id) => {\n const agent = registry.getAgent(id);\n return agent ? [id, agent] : undefined;\n })\n .filter(Boolean) as [string, Agent][],\n );\n }\n return Object.fromEntries(registry.getAllAgents().map((agent) => [agent.id, agent]));\n };\n\n const handler = createCopilotKitHandler({\n loadAgents: () =>\n Object.fromEntries(\n Object.entries(resolveAgents()).map(([id, agent]) => [id, createVoltAgentAGUI({ agent })]),\n ),\n endpoint: path,\n });\n\n const routeHandler = async (c: any) => {\n const method = c.req?.method;\n if (method && method !== \"POST\") {\n return c.json?.({ success: false, error: \"Use POST with CopilotKit runtime requests.\" }, 405);\n }\n\n try {\n return await handler(c.req?.raw ?? c.request ?? c);\n } catch (error) {\n console.error(\"[copilotkit] handler error\", error);\n return c.json?.(\n { success: false, error: \"CopilotKit handler failed\", detail: `${error}` },\n 500,\n );\n }\n };\n\n const register = (p: string) => {\n if (typeof options.app.post === \"function\") {\n options.app.post(p, routeHandler);\n } else {\n options.app.all(p, routeHandler);\n }\n };\n\n [path, `${path}/*`].forEach(register);\n // Deliberately no return; route registration side-effect only\n}\n"],"mappings":"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","names":["AbstractAgent","AbstractAgent"]}
|
|
1
|
+
{"version":3,"sources":["../src/voltagent-agent.ts","../src/copilotkit.ts"],"sourcesContent":["import { AbstractAgent } from \"@ag-ui/client\";\nimport type {\n AssistantMessage,\n BaseEvent,\n CustomEvent,\n DeveloperMessage,\n Message,\n RunAgentInput,\n RunErrorEvent,\n RunFinishedEvent,\n RunStartedEvent,\n StateSnapshotEvent,\n SystemMessage,\n TextMessageChunkEvent,\n TextMessageEndEvent,\n TextMessageStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n ToolCallResultEvent,\n ToolCallStartEvent,\n ToolMessage,\n UserMessage,\n} from \"@ag-ui/core\";\nimport { EventType } from \"@ag-ui/core\";\nimport type { StreamTextOptions, VoltAgentTextStreamPart } from \"@voltagent/core\";\nimport type { Agent } from \"@voltagent/core\";\nimport { safeStringify } from \"@voltagent/internal/utils\";\nimport { Observable } from \"rxjs\";\n\ntype AGUIContextValue = {\n state?: Record<string, unknown>;\n context?: RunAgentInput[\"context\"];\n forwardedProps?: RunAgentInput[\"forwardedProps\"];\n};\n\ntype VoltAgentAGUIConfig = {\n agent: Agent;\n /**\n * Optional function to derive userId for VoltAgent memory/telemetry.\n */\n deriveUserId?: (input: RunAgentInput) => string | undefined;\n};\n\nfunction debugLog(message: string, data?: Record<string, unknown>) {\n // eslint-disable-next-line no-console\n console.log(`[VoltAgentAGUI] ${message}`, data ?? {});\n}\n\n/**\n * VoltAgent adapter that speaks the AG-UI protocol.\n * and stream VoltAgent events as AG-UI BaseEvents.\n */\nexport class VoltAgentAGUI extends AbstractAgent {\n private readonly agent: Agent;\n private readonly deriveUserId?: VoltAgentAGUIConfig[\"deriveUserId\"];\n\n constructor(config: VoltAgentAGUIConfig) {\n super();\n this.agent = config.agent;\n this.deriveUserId = config.deriveUserId;\n }\n\n run(input: RunAgentInput): ReturnType<AbstractAgent[\"run\"]> {\n const stream$ = new Observable<BaseEvent>((subscriber) => {\n const abortController = new AbortController();\n let finishedSent = false;\n debugLog(\"run start\", { threadId: input.threadId, runId: input.runId });\n const runStarted: RunStartedEvent = {\n type: EventType.RUN_STARTED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(runStarted);\n\n const run = async () => {\n let currentMessageId = generateId();\n\n try {\n await this.persistStateToWorkingMemory(input);\n\n const streamOptions = this.buildStreamOptions(input, abortController);\n const voltMessages = convertAGUIMessagesToVoltMessages(input.messages);\n\n debugLog(\"calling agent.streamText\", { messagesLength: voltMessages.length });\n const result = await this.agent.streamText(voltMessages as any, streamOptions);\n\n for await (const part of result.fullStream) {\n debugLog(\"fullStream part\", { partType: part.type, id: (part as any).id });\n if ((part.type === \"start\" || part.type === \"start-step\") && part.messageId) {\n currentMessageId = part.messageId;\n }\n const events = convertVoltStreamPartToEvents(part, currentMessageId);\n if (!events) continue;\n\n for (const event of events) {\n debugLog(\"emit event\", { type: event.type, messageId: (event as any).messageId });\n\n subscriber.next(event);\n if (\n (event.type === EventType.TEXT_MESSAGE_START ||\n event.type === EventType.TEXT_MESSAGE_CHUNK ||\n event.type === EventType.TEXT_MESSAGE_END) &&\n \"messageId\" in event &&\n event.messageId\n ) {\n currentMessageId = event.messageId;\n }\n }\n }\n\n const snapshotEvent = await this.readWorkingMemorySnapshot(input);\n if (snapshotEvent) {\n subscriber.next(snapshotEvent);\n }\n\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n subscriber.complete();\n debugLog(\"run finished\", { threadId: input.threadId, runId: input.runId });\n } catch (error) {\n debugLog(\"run error\", {\n threadId: input.threadId,\n runId: input.runId,\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n\n // Emit the error event so consumers know what went wrong.\n const runError: RunErrorEvent = {\n type: EventType.RUN_ERROR,\n message: error instanceof Error ? error.message : \"Unknown error\",\n };\n subscriber.next(runError);\n\n // The AG-UI verify layer may reject further events once RUN_ERROR\n // has been emitted (the run is considered terminal). Guard the\n // RUN_FINISHED emission so the subscriber can still be completed\n // cleanly without an unhandled exception.\n try {\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n } catch {\n // Verify layer rejected the event – that's OK, mark as sent\n // so the unsubscribe handler doesn't attempt it again.\n finishedSent = true;\n }\n subscriber.complete();\n }\n };\n\n void run();\n\n return () => {\n debugLog(\"run abort/unsubscribe\", {\n threadId: input.threadId,\n runId: input.runId,\n finishedSent,\n });\n abortController.abort();\n if (!finishedSent) {\n const finished: RunFinishedEvent = {\n type: EventType.RUN_FINISHED,\n threadId: input.threadId,\n runId: input.runId,\n };\n subscriber.next(finished);\n finishedSent = true;\n subscriber.complete();\n }\n };\n });\n\n // Cast through unknown to avoid rxjs type mismatches across hoisted versions\n return stream$ as unknown as ReturnType<AbstractAgent[\"run\"]>;\n }\n\n private buildStreamOptions(\n input: RunAgentInput,\n abortController: AbortController,\n ): StreamTextOptions {\n const context = new Map<string, unknown>();\n const aguiContext: AGUIContextValue = {\n state: (input.state as Record<string, unknown>) || undefined,\n context: input.context,\n forwardedProps: input.forwardedProps,\n };\n\n context.set(\"agui:context\", aguiContext);\n\n return {\n abortSignal: abortController.signal,\n conversationId: input.threadId,\n userId: this.deriveUserId?.(input),\n context,\n };\n }\n\n private async persistStateToWorkingMemory(input: RunAgentInput): Promise<void> {\n const state = input.state;\n if (!state || typeof state !== \"object\" || Object.keys(state).length === 0) {\n return;\n }\n\n const memory = this.agent.getMemory?.();\n if (!memory) {\n return;\n }\n\n try {\n await memory.updateWorkingMemory({\n conversationId: input.threadId,\n content: safeStringify(state),\n });\n } catch (error) {\n // Non-fatal: working memory might be disabled or misconfigured\n console.debug?.(\"Failed to persist AG-UI state to working memory\", error);\n }\n }\n\n private async readWorkingMemorySnapshot(\n input: RunAgentInput,\n ): Promise<StateSnapshotEvent | undefined> {\n const memory = this.agent.getMemory?.();\n if (!memory) {\n return;\n }\n\n try {\n const raw = await memory.getWorkingMemory({\n conversationId: input.threadId,\n });\n\n if (!raw) {\n return;\n }\n\n let snapshot: unknown = raw;\n try {\n snapshot = JSON.parse(raw);\n } catch {\n // keep raw string\n }\n\n return {\n type: EventType.STATE_SNAPSHOT,\n snapshot,\n };\n } catch (error) {\n console.debug?.(\"Failed to read AG-UI working memory snapshot\", error);\n return;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Message conversion helpers\n// ---------------------------------------------------------------------------\n\nconst isUserMessage = (message: Message): message is UserMessage => message.role === \"user\";\nconst isAssistantMessage = (message: Message): message is AssistantMessage =>\n message.role === \"assistant\";\nconst isSystemMessage = (message: Message): message is SystemMessage => message.role === \"system\";\nconst isDeveloperMessage = (message: Message): message is DeveloperMessage =>\n message.role === \"developer\";\nconst isToolMessage = (message: Message): message is ToolMessage => message.role === \"tool\";\n\ntype VoltUIPart =\n | { type: \"text\"; text: string }\n | { type: \"tool-call\"; toolCallId: string; toolName: string; input?: unknown }\n | { type: \"tool-result\"; toolCallId?: string; toolName?: string; output?: unknown };\n\ntype VoltUIMessage = {\n id: string;\n role: \"user\" | \"assistant\" | \"system\" | \"tool\";\n content?: string;\n parts?: VoltUIPart[];\n};\n\nconst VOLTAGENT_MESSAGE_METADATA_EVENT_NAME = \"voltagent.message_metadata\";\nfunction convertAGUIMessagesToVoltMessages(messages: Message[]): VoltUIMessage[] {\n const toolNameById = new Map<string, string>();\n const convertedMessages: VoltUIMessage[] = [];\n\n for (const msg of messages) {\n const messageId = msg.id || generateId();\n\n if (isUserMessage(msg)) {\n convertedMessages.push({\n id: messageId,\n role: \"user\",\n content: extractTextContent(msg.content),\n });\n continue;\n }\n\n if (isAssistantMessage(msg)) {\n const parts: VoltUIPart[] = [];\n const textContent = msg.content ? extractTextContent(msg.content) : \"\";\n if (textContent) {\n parts.push({ type: \"text\", text: textContent });\n }\n\n for (const call of msg.toolCalls ?? []) {\n const input = safelyParseJson(call.function.arguments);\n toolNameById.set(call.id, call.function.name);\n parts.push({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n input,\n });\n }\n\n convertedMessages.push({\n id: messageId,\n role: \"assistant\",\n parts,\n });\n continue;\n }\n\n if (isSystemMessage(msg) || isDeveloperMessage(msg)) {\n convertedMessages.push({\n id: messageId,\n role: \"system\",\n content: msg.content,\n });\n continue;\n }\n\n if (isToolMessage(msg)) {\n const toolName = msg.toolCallId ? toolNameById.get(msg.toolCallId) : undefined;\n convertedMessages.push({\n id: messageId,\n role: \"tool\",\n parts: [\n {\n type: \"tool-result\",\n toolCallId: msg.toolCallId,\n toolName: toolName ?? \"tool\",\n output: safelyParseJson(msg.content),\n },\n ],\n });\n continue;\n }\n\n // activity or any other custom role -> fold into assistant text\n convertedMessages.push({\n id: messageId,\n role: \"assistant\",\n parts: [{ type: \"text\", text: safeStringify((msg as any).content ?? \"\") }],\n });\n }\n\n return convertedMessages;\n}\n\nfunction extractTextContent(content: UserMessage[\"content\"] | AssistantMessage[\"content\"]): string {\n if (!content) return \"\";\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n\n const parts = content as Array<Record<string, unknown>>;\n\n return parts\n .map((part: Record<string, unknown>) => {\n const textValue = typeof part.text === \"string\" ? (part.text as string) : \"\";\n return textValue;\n })\n .filter((text: string) => text.length > 0)\n .join(\"\\n\");\n}\n\nfunction safelyParseJson(value: string | unknown): unknown {\n if (typeof value !== \"string\") return value;\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Stream conversion helpers\n// ---------------------------------------------------------------------------\n\ntype StreamConversionResult =\n | TextMessageStartEvent\n | TextMessageChunkEvent\n | TextMessageEndEvent\n | CustomEvent\n | ToolCallStartEvent\n | ToolCallEndEvent\n | ToolCallArgsEvent\n | ToolCallResultEvent;\n\nfunction convertVoltStreamPartToEvents(\n part: VoltAgentTextStreamPart,\n fallbackMessageId: string,\n): StreamConversionResult[] | null {\n const payload = (part as { payload?: Record<string, unknown> }).payload ?? part;\n const partType = (part as { type: string }).type;\n\n if (partType === \"message-metadata\") {\n const messageId =\n (part as { messageId?: string }).messageId ??\n (payload as { messageId?: string }).messageId ??\n fallbackMessageId;\n const messageMetadata =\n (payload as { messageMetadata?: unknown }).messageMetadata ??\n (payload as { metadata?: unknown }).metadata;\n\n if (!messageMetadata || typeof messageMetadata !== \"object\") {\n return null;\n }\n\n // Best-practice carrier for app-specific metadata on AG-UI streams.\n const customEvent: CustomEvent = {\n type: EventType.CUSTOM,\n name: VOLTAGENT_MESSAGE_METADATA_EVENT_NAME,\n value: {\n messageId: messageId || undefined,\n metadata: messageMetadata,\n },\n };\n\n return [customEvent];\n }\n\n switch (part.type) {\n case \"text-start\": {\n // Ignore explicit start; we'll synthesize start when first chunk/end arrives to avoid duplicates\n return null;\n }\n case \"text-delta\": {\n const messageId = part.messageId ?? fallbackMessageId;\n const event: TextMessageChunkEvent = {\n type: EventType.TEXT_MESSAGE_CHUNK,\n delta: part.text ?? \"\",\n messageId,\n role: \"assistant\",\n };\n return [event];\n }\n case \"text-end\": {\n // Let transformChunks close the message; avoid emitting END without a START\n return null;\n }\n case \"tool-call\": {\n const toolCallId = (payload as { toolCallId?: string }).toolCallId ?? generateId();\n const toolName = (payload as { toolName?: string }).toolName ?? \"tool\";\n const rawArgs =\n (payload as { args?: unknown }).args ??\n (payload as { input?: unknown }).input ??\n (payload as { arguments?: unknown }).arguments;\n const argsEvent: ToolCallArgsEvent = {\n type: EventType.TOOL_CALL_ARGS,\n toolCallId,\n delta: safeStringify(rawArgs ?? {}),\n };\n const startEvent: ToolCallStartEvent = {\n type: EventType.TOOL_CALL_START,\n toolCallId,\n toolCallName: toolName,\n parentMessageId: fallbackMessageId,\n };\n const endEvent: ToolCallEndEvent = {\n type: EventType.TOOL_CALL_END,\n toolCallId,\n };\n return [startEvent, argsEvent, endEvent];\n }\n case \"tool-result\": {\n const rawResult =\n (payload as { result?: unknown }).result ??\n (payload as { output?: unknown }).output ??\n (payload as { data?: unknown }).data ??\n payload;\n const resultEvent: ToolCallResultEvent = {\n type: EventType.TOOL_CALL_RESULT,\n toolCallId: (payload as { toolCallId?: string }).toolCallId ?? generateId(),\n content: safeStringify(rawResult ?? {}),\n messageId: generateId(),\n role: \"tool\",\n };\n return [resultEvent];\n }\n case \"error\": {\n const errorEvent: TextMessageChunkEvent = {\n type: EventType.TEXT_MESSAGE_CHUNK,\n delta: `Error: ${(payload as { error?: unknown }).error}`,\n messageId: fallbackMessageId,\n role: \"assistant\",\n };\n return [errorEvent];\n }\n default:\n return null;\n }\n}\n\nexport function createVoltAgentAGUI(config: VoltAgentAGUIConfig): VoltAgentAGUI {\n return new VoltAgentAGUI(config);\n}\n\nfunction generateId(): string {\n const cryptoApi = typeof globalThis !== \"undefined\" ? (globalThis as any).crypto : undefined;\n if (cryptoApi && typeof cryptoApi.randomUUID === \"function\") {\n return cryptoApi.randomUUID();\n }\n\n const random = () => Math.floor(Math.random() * 0xffff);\n let uuid = \"\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += ((random() & 0x0fff) | 0x4000).toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += ((random() & 0x3fff) | 0x8000).toString(16).padStart(4, \"0\");\n uuid += \"-\";\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n uuid += random().toString(16).padStart(4, \"0\");\n return uuid;\n}\n","import { AbstractAgent } from \"@ag-ui/client\";\nimport type { RunAgentInput } from \"@ag-ui/core\";\nimport {\n CopilotRuntime,\n type CopilotServiceAdapter,\n ExperimentalEmptyAdapter,\n copilotRuntimeNextJSAppRouterEndpoint,\n} from \"@copilotkit/runtime\";\nimport type { Agent } from \"@voltagent/core\";\nimport { AgentRegistry } from \"@voltagent/core\";\nimport { createVoltAgentAGUI } from \"./voltagent-agent\";\n\nexport type CopilotKitHandlerOptions = {\n /**\n * Static map of AG-UI agents. Use either this or `loadAgents`.\n */\n agents?: Record<string, AbstractAgent>;\n /**\n * Lazy loader for AG-UI agents. If provided, it overrides `agents`.\n */\n loadAgents?: () => Promise<Record<string, AbstractAgent>> | Record<string, AbstractAgent>;\n /**\n * Optional service adapter. Defaults to ExperimentalEmptyAdapter.\n */\n serviceAdapter?: CopilotServiceAdapter;\n /**\n * Endpoint path used by CopilotKit clients. Defaults to \"/copilotkit\".\n */\n endpoint?: string;\n};\n\nexport type RegisterCopilotKitRoutesOptions = {\n /**\n * Hono-style app instance with `all(path, handler)` support.\n */\n app: {\n all: (path: string, handler: (c: any) => any) => any;\n post?: (path: string, handler: (c: any) => any) => any;\n };\n /**\n * VoltAgent agents to expose to CopilotKit. Will be wrapped lazily.\n */\n agents?: Record<string, Agent>;\n /**\n * Optional resource IDs to pick from the global AgentRegistry if `agents` is not provided.\n * If omitted and no agents are provided, all registered agents will be exposed.\n */\n resourceIds?: string[];\n /**\n * Path to mount CopilotKit endpoint. Defaults to \"/copilotkit\".\n */\n path?: string;\n};\n\n/**\n * Create a framework-agnostic fetch handler for CopilotKit that serves VoltAgent-backed AG-UI agents.\n *\n * @example\n * ```ts\n * import { createCopilotKitHandler } from \"@voltagent/ag-ui\";\n * import { createVoltAgentAGUI } from \"@voltagent/ag-ui\";\n * import { agent } from \"./agent\"; // VoltAgent instance\n *\n * const handler = createCopilotKitHandler({\n * agents: { assistant: createVoltAgentAGUI({ agent }) },\n * endpoint: \"/api/copilotkit\",\n * });\n *\n * export default {\n * fetch: handler,\n * };\n * ```\n */\nexport function createCopilotKitHandler(options: CopilotKitHandlerOptions) {\n const endpoint = options.endpoint ?? \"/copilotkit\";\n const serviceAdapter = options.serviceAdapter ?? new ExperimentalEmptyAdapter();\n\n return async (req: Request): Promise<Response> => {\n // We intentionally avoid logging request bodies to keep the handler silent in production.\n await req\n .clone()\n .text()\n .catch(() => undefined);\n\n const agents =\n (await options.loadAgents?.()) ??\n options.agents ??\n (() => {\n throw new Error(\"No agents provided to CopilotKit handler\");\n })();\n\n // Lightweight wrapper to add per-run/connect logging without touching the original agents\n const wrappedAgents: Record<string, AbstractAgent> = {};\n for (const [id, agent] of Object.entries(agents)) {\n wrappedAgents[id] = new (class extends AbstractAgent {\n run(input: RunAgentInput) {\n console.log(\"[CopilotKit] agent.run\", {\n agentId: id,\n threadId: input.threadId,\n runId: input.runId,\n });\n return (agent as AbstractAgent).run(input);\n }\n // Forward connect if the agent implements it\n connect(input: RunAgentInput) {\n console.log(\"[CopilotKit] agent.connect\", {\n agentId: id,\n threadId: input.threadId,\n runId: input.runId,\n });\n return (agent as any).connect?.(input);\n }\n clone() {\n return this;\n }\n })();\n }\n\n const runtime = new CopilotRuntime({ agents: wrappedAgents });\n\n const { handleRequest } = copilotRuntimeNextJSAppRouterEndpoint({\n runtime,\n serviceAdapter,\n endpoint,\n });\n\n let response: Response;\n try {\n response = await handleRequest(req);\n } catch (error) {\n console.error(\"[CopilotKit] handler failed\", {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n throw error;\n }\n return response;\n };\n}\n\n/**\n * Convenience helper: register CopilotKit routes on a Hono-like app using VoltAgent agents.\n */\nexport function registerCopilotKitRoutes(options: RegisterCopilotKitRoutesOptions) {\n const path = options.path ?? \"/copilotkit\";\n const resolveAgents = (): Record<string, Agent> => {\n if (options.agents) return options.agents;\n const registry = AgentRegistry.getInstance();\n const ids = options.resourceIds;\n if (ids && ids.length > 0) {\n return Object.fromEntries(\n ids\n .map((id) => {\n const agent = registry.getAgent(id);\n return agent ? [id, agent] : undefined;\n })\n .filter(Boolean) as [string, Agent][],\n );\n }\n return Object.fromEntries(registry.getAllAgents().map((agent) => [agent.id, agent]));\n };\n\n const handler = createCopilotKitHandler({\n loadAgents: () =>\n Object.fromEntries(\n Object.entries(resolveAgents()).map(([id, agent]) => [id, createVoltAgentAGUI({ agent })]),\n ),\n endpoint: path,\n });\n\n const routeHandler = async (c: any) => {\n const method = c.req?.method;\n if (method && method !== \"POST\") {\n return c.json?.({ success: false, error: \"Use POST with CopilotKit runtime requests.\" }, 405);\n }\n\n try {\n return await handler(c.req?.raw ?? c.request ?? c);\n } catch (error) {\n console.error(\"[copilotkit] handler error\", error);\n return c.json?.(\n { success: false, error: \"CopilotKit handler failed\", detail: `${error}` },\n 500,\n );\n }\n };\n\n const register = (p: string) => {\n if (typeof options.app.post === \"function\") {\n options.app.post(p, routeHandler);\n } else {\n options.app.all(p, routeHandler);\n }\n };\n\n [path, `${path}/*`].forEach(register);\n // Deliberately no return; route registration side-effect only\n}\n"],"mappings":";;;;AAAA,SAAS,qBAAqB;AAuB9B,SAAS,iBAAiB;AAG1B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAgB3B,SAAS,SAAS,SAAiB,MAAgC;AAEjE,UAAQ,IAAI,mBAAmB,OAAO,IAAI,QAAQ,CAAC,CAAC;AACtD;AAHS;AASF,IAAM,gBAAN,cAA4B,cAAc;AAAA,EApDjD,OAoDiD;AAAA;AAAA;AAAA,EAC9B;AAAA,EACA;AAAA,EAEjB,YAAY,QAA6B;AACvC,UAAM;AACN,SAAK,QAAQ,OAAO;AACpB,SAAK,eAAe,OAAO;AAAA,EAC7B;AAAA,EAEA,IAAI,OAAwD;AAC1D,UAAM,UAAU,IAAI,WAAsB,CAAC,eAAe;AACxD,YAAM,kBAAkB,IAAI,gBAAgB;AAC5C,UAAI,eAAe;AACnB,eAAS,aAAa,EAAE,UAAU,MAAM,UAAU,OAAO,MAAM,MAAM,CAAC;AACtE,YAAM,aAA8B;AAAA,QAClC,MAAM,UAAU;AAAA,QAChB,UAAU,MAAM;AAAA,QAChB,OAAO,MAAM;AAAA,MACf;AACA,iBAAW,KAAK,UAAU;AAE1B,YAAM,MAAM,mCAAY;AACtB,YAAI,mBAAmB,WAAW;AAElC,YAAI;AACF,gBAAM,KAAK,4BAA4B,KAAK;AAE5C,gBAAM,gBAAgB,KAAK,mBAAmB,OAAO,eAAe;AACpE,gBAAM,eAAe,kCAAkC,MAAM,QAAQ;AAErE,mBAAS,4BAA4B,EAAE,gBAAgB,aAAa,OAAO,CAAC;AAC5E,gBAAM,SAAS,MAAM,KAAK,MAAM,WAAW,cAAqB,aAAa;AAE7E,2BAAiB,QAAQ,OAAO,YAAY;AAC1C,qBAAS,mBAAmB,EAAE,UAAU,KAAK,MAAM,IAAK,KAAa,GAAG,CAAC;AACzE,iBAAK,KAAK,SAAS,WAAW,KAAK,SAAS,iBAAiB,KAAK,WAAW;AAC3E,iCAAmB,KAAK;AAAA,YAC1B;AACA,kBAAM,SAAS,8BAA8B,MAAM,gBAAgB;AACnE,gBAAI,CAAC,OAAQ;AAEb,uBAAW,SAAS,QAAQ;AAC1B,uBAAS,cAAc,EAAE,MAAM,MAAM,MAAM,WAAY,MAAc,UAAU,CAAC;AAEhF,yBAAW,KAAK,KAAK;AACrB,mBACG,MAAM,SAAS,UAAU,sBACxB,MAAM,SAAS,UAAU,sBACzB,MAAM,SAAS,UAAU,qBAC3B,eAAe,SACf,MAAM,WACN;AACA,mCAAmB,MAAM;AAAA,cAC3B;AAAA,YACF;AAAA,UACF;AAEA,gBAAM,gBAAgB,MAAM,KAAK,0BAA0B,KAAK;AAChE,cAAI,eAAe;AACjB,uBAAW,KAAK,aAAa;AAAA,UAC/B;AAEA,gBAAM,WAA6B;AAAA,YACjC,MAAM,UAAU;AAAA,YAChB,UAAU,MAAM;AAAA,YAChB,OAAO,MAAM;AAAA,UACf;AACA,qBAAW,KAAK,QAAQ;AACxB,yBAAe;AACf,qBAAW,SAAS;AACpB,mBAAS,gBAAgB,EAAE,UAAU,MAAM,UAAU,OAAO,MAAM,MAAM,CAAC;AAAA,QAC3E,SAAS,OAAO;AACd,mBAAS,aAAa;AAAA,YACpB,UAAU,MAAM;AAAA,YAChB,OAAO,MAAM;AAAA,YACb,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,YAC5D,OAAO,iBAAiB,QAAQ,MAAM,QAAQ;AAAA,UAChD,CAAC;AAGD,gBAAM,WAA0B;AAAA,YAC9B,MAAM,UAAU;AAAA,YAChB,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,UACpD;AACA,qBAAW,KAAK,QAAQ;AAMxB,cAAI;AACF,kBAAM,WAA6B;AAAA,cACjC,MAAM,UAAU;AAAA,cAChB,UAAU,MAAM;AAAA,cAChB,OAAO,MAAM;AAAA,YACf;AACA,uBAAW,KAAK,QAAQ;AACxB,2BAAe;AAAA,UACjB,QAAQ;AAGN,2BAAe;AAAA,UACjB;AACA,qBAAW,SAAS;AAAA,QACtB;AAAA,MACF,GApFY;AAsFZ,WAAK,IAAI;AAET,aAAO,MAAM;AACX,iBAAS,yBAAyB;AAAA,UAChC,UAAU,MAAM;AAAA,UAChB,OAAO,MAAM;AAAA,UACb;AAAA,QACF,CAAC;AACD,wBAAgB,MAAM;AACtB,YAAI,CAAC,cAAc;AACjB,gBAAM,WAA6B;AAAA,YACjC,MAAM,UAAU;AAAA,YAChB,UAAU,MAAM;AAAA,YAChB,OAAO,MAAM;AAAA,UACf;AACA,qBAAW,KAAK,QAAQ;AACxB,yBAAe;AACf,qBAAW,SAAS;AAAA,QACtB;AAAA,MACF;AAAA,IACF,CAAC;AAGD,WAAO;AAAA,EACT;AAAA,EAEQ,mBACN,OACA,iBACmB;AACnB,UAAM,UAAU,oBAAI,IAAqB;AACzC,UAAM,cAAgC;AAAA,MACpC,OAAQ,MAAM,SAAqC;AAAA,MACnD,SAAS,MAAM;AAAA,MACf,gBAAgB,MAAM;AAAA,IACxB;AAEA,YAAQ,IAAI,gBAAgB,WAAW;AAEvC,WAAO;AAAA,MACL,aAAa,gBAAgB;AAAA,MAC7B,gBAAgB,MAAM;AAAA,MACtB,QAAQ,KAAK,eAAe,KAAK;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,4BAA4B,OAAqC;AAC7E,UAAM,QAAQ,MAAM;AACpB,QAAI,CAAC,SAAS,OAAO,UAAU,YAAY,OAAO,KAAK,KAAK,EAAE,WAAW,GAAG;AAC1E;AAAA,IACF;AAEA,UAAM,SAAS,KAAK,MAAM,YAAY;AACtC,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAEA,QAAI;AACF,YAAM,OAAO,oBAAoB;AAAA,QAC/B,gBAAgB,MAAM;AAAA,QACtB,SAAS,cAAc,KAAK;AAAA,MAC9B,CAAC;AAAA,IACH,SAAS,OAAO;AAEd,cAAQ,QAAQ,mDAAmD,KAAK;AAAA,IAC1E;AAAA,EACF;AAAA,EAEA,MAAc,0BACZ,OACyC;AACzC,UAAM,SAAS,KAAK,MAAM,YAAY;AACtC,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AAEA,QAAI;AACF,YAAM,MAAM,MAAM,OAAO,iBAAiB;AAAA,QACxC,gBAAgB,MAAM;AAAA,MACxB,CAAC;AAED,UAAI,CAAC,KAAK;AACR;AAAA,MACF;AAEA,UAAI,WAAoB;AACxB,UAAI;AACF,mBAAW,KAAK,MAAM,GAAG;AAAA,MAC3B,QAAQ;AAAA,MAER;AAEA,aAAO;AAAA,QACL,MAAM,UAAU;AAAA,QAChB;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,QAAQ,gDAAgD,KAAK;AACrE;AAAA,IACF;AAAA,EACF;AACF;AAMA,IAAM,gBAAgB,wBAAC,YAA6C,QAAQ,SAAS,QAA/D;AACtB,IAAM,qBAAqB,wBAAC,YAC1B,QAAQ,SAAS,aADQ;AAE3B,IAAM,kBAAkB,wBAAC,YAA+C,QAAQ,SAAS,UAAjE;AACxB,IAAM,qBAAqB,wBAAC,YAC1B,QAAQ,SAAS,aADQ;AAE3B,IAAM,gBAAgB,wBAAC,YAA6C,QAAQ,SAAS,QAA/D;AActB,IAAM,wCAAwC;AAC9C,SAAS,kCAAkC,UAAsC;AAC/E,QAAM,eAAe,oBAAI,IAAoB;AAC7C,QAAM,oBAAqC,CAAC;AAE5C,aAAW,OAAO,UAAU;AAC1B,UAAM,YAAY,IAAI,MAAM,WAAW;AAEvC,QAAI,cAAc,GAAG,GAAG;AACtB,wBAAkB,KAAK;AAAA,QACrB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,SAAS,mBAAmB,IAAI,OAAO;AAAA,MACzC,CAAC;AACD;AAAA,IACF;AAEA,QAAI,mBAAmB,GAAG,GAAG;AAC3B,YAAM,QAAsB,CAAC;AAC7B,YAAM,cAAc,IAAI,UAAU,mBAAmB,IAAI,OAAO,IAAI;AACpE,UAAI,aAAa;AACf,cAAM,KAAK,EAAE,MAAM,QAAQ,MAAM,YAAY,CAAC;AAAA,MAChD;AAEA,iBAAW,QAAQ,IAAI,aAAa,CAAC,GAAG;AACtC,cAAM,QAAQ,gBAAgB,KAAK,SAAS,SAAS;AACrD,qBAAa,IAAI,KAAK,IAAI,KAAK,SAAS,IAAI;AAC5C,cAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,YAAY,KAAK;AAAA,UACjB,UAAU,KAAK,SAAS;AAAA,UACxB;AAAA,QACF,CAAC;AAAA,MACH;AAEA,wBAAkB,KAAK;AAAA,QACrB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AACD;AAAA,IACF;AAEA,QAAI,gBAAgB,GAAG,KAAK,mBAAmB,GAAG,GAAG;AACnD,wBAAkB,KAAK;AAAA,QACrB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,SAAS,IAAI;AAAA,MACf,CAAC;AACD;AAAA,IACF;AAEA,QAAI,cAAc,GAAG,GAAG;AACtB,YAAM,WAAW,IAAI,aAAa,aAAa,IAAI,IAAI,UAAU,IAAI;AACrE,wBAAkB,KAAK;AAAA,QACrB,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,OAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN,YAAY,IAAI;AAAA,YAChB,UAAU,YAAY;AAAA,YACtB,QAAQ,gBAAgB,IAAI,OAAO;AAAA,UACrC;AAAA,QACF;AAAA,MACF,CAAC;AACD;AAAA,IACF;AAGA,sBAAkB,KAAK;AAAA,MACrB,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,OAAO,CAAC,EAAE,MAAM,QAAQ,MAAM,cAAe,IAAY,WAAW,EAAE,EAAE,CAAC;AAAA,IAC3E,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AA7ES;AA+ET,SAAS,mBAAmB,SAAuE;AACjG,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,OAAO,YAAY,SAAU,QAAO;AACxC,MAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,QAAO;AAEpC,QAAM,QAAQ;AAEd,SAAO,MACJ,IAAI,CAAC,SAAkC;AACtC,UAAM,YAAY,OAAO,KAAK,SAAS,WAAY,KAAK,OAAkB;AAC1E,WAAO;AAAA,EACT,CAAC,EACA,OAAO,CAAC,SAAiB,KAAK,SAAS,CAAC,EACxC,KAAK,IAAI;AACd;AAdS;AAgBT,SAAS,gBAAgB,OAAkC;AACzD,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI;AACF,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAPS;AAuBT,SAAS,8BACP,MACA,mBACiC;AACjC,QAAM,UAAW,KAA+C,WAAW;AAC3E,QAAM,WAAY,KAA0B;AAE5C,MAAI,aAAa,oBAAoB;AACnC,UAAM,YACH,KAAgC,aAChC,QAAmC,aACpC;AACF,UAAM,kBACH,QAA0C,mBAC1C,QAAmC;AAEtC,QAAI,CAAC,mBAAmB,OAAO,oBAAoB,UAAU;AAC3D,aAAO;AAAA,IACT;AAGA,UAAM,cAA2B;AAAA,MAC/B,MAAM,UAAU;AAAA,MAChB,MAAM;AAAA,MACN,OAAO;AAAA,QACL,WAAW,aAAa;AAAA,QACxB,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,WAAO,CAAC,WAAW;AAAA,EACrB;AAEA,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK,cAAc;AAEjB,aAAO;AAAA,IACT;AAAA,IACA,KAAK,cAAc;AACjB,YAAM,YAAY,KAAK,aAAa;AACpC,YAAM,QAA+B;AAAA,QACnC,MAAM,UAAU;AAAA,QAChB,OAAO,KAAK,QAAQ;AAAA,QACpB;AAAA,QACA,MAAM;AAAA,MACR;AACA,aAAO,CAAC,KAAK;AAAA,IACf;AAAA,IACA,KAAK,YAAY;AAEf,aAAO;AAAA,IACT;AAAA,IACA,KAAK,aAAa;AAChB,YAAM,aAAc,QAAoC,cAAc,WAAW;AACjF,YAAM,WAAY,QAAkC,YAAY;AAChE,YAAM,UACH,QAA+B,QAC/B,QAAgC,SAChC,QAAoC;AACvC,YAAM,YAA+B;AAAA,QACnC,MAAM,UAAU;AAAA,QAChB;AAAA,QACA,OAAO,cAAc,WAAW,CAAC,CAAC;AAAA,MACpC;AACA,YAAM,aAAiC;AAAA,QACrC,MAAM,UAAU;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,QACd,iBAAiB;AAAA,MACnB;AACA,YAAM,WAA6B;AAAA,QACjC,MAAM,UAAU;AAAA,QAChB;AAAA,MACF;AACA,aAAO,CAAC,YAAY,WAAW,QAAQ;AAAA,IACzC;AAAA,IACA,KAAK,eAAe;AAClB,YAAM,YACH,QAAiC,UACjC,QAAiC,UACjC,QAA+B,QAChC;AACF,YAAM,cAAmC;AAAA,QACvC,MAAM,UAAU;AAAA,QAChB,YAAa,QAAoC,cAAc,WAAW;AAAA,QAC1E,SAAS,cAAc,aAAa,CAAC,CAAC;AAAA,QACtC,WAAW,WAAW;AAAA,QACtB,MAAM;AAAA,MACR;AACA,aAAO,CAAC,WAAW;AAAA,IACrB;AAAA,IACA,KAAK,SAAS;AACZ,YAAM,aAAoC;AAAA,QACxC,MAAM,UAAU;AAAA,QAChB,OAAO,UAAW,QAAgC,KAAK;AAAA,QACvD,WAAW;AAAA,QACX,MAAM;AAAA,MACR;AACA,aAAO,CAAC,UAAU;AAAA,IACpB;AAAA,IACA;AACE,aAAO;AAAA,EACX;AACF;AAvGS;AAyGF,SAAS,oBAAoB,QAA4C;AAC9E,SAAO,IAAI,cAAc,MAAM;AACjC;AAFgB;AAIhB,SAAS,aAAqB;AAC5B,QAAM,YAAY,OAAO,eAAe,cAAe,WAAmB,SAAS;AACnF,MAAI,aAAa,OAAO,UAAU,eAAe,YAAY;AAC3D,WAAO,UAAU,WAAW;AAAA,EAC9B;AAEA,QAAM,SAAS,6BAAM,KAAK,MAAM,KAAK,OAAO,IAAI,KAAM,GAAvC;AACf,MAAI,OAAO;AACX,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,UAAQ;AACR,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,UAAQ;AACR,WAAU,OAAO,IAAI,OAAU,OAAQ,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACnE,UAAQ;AACR,WAAU,OAAO,IAAI,QAAU,OAAQ,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACnE,UAAQ;AACR,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,UAAQ,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC7C,SAAO;AACT;AArBS;;;ACpgBT,SAAS,iBAAAA,sBAAqB;AAE9B;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,qBAAqB;AAgEvB,SAAS,wBAAwB,SAAmC;AACzE,QAAM,WAAW,QAAQ,YAAY;AACrC,QAAM,iBAAiB,QAAQ,kBAAkB,IAAI,yBAAyB;AAE9E,SAAO,OAAO,QAAoC;AAEhD,UAAM,IACH,MAAM,EACN,KAAK,EACL,MAAM,MAAM,MAAS;AAExB,UAAM,SACH,MAAM,QAAQ,aAAa,KAC5B,QAAQ,WACP,MAAM;AACL,YAAM,IAAI,MAAM,0CAA0C;AAAA,IAC5D,GAAG;AAGL,UAAM,gBAA+C,CAAC;AACtD,eAAW,CAAC,IAAI,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AAChD,oBAAc,EAAE,IAAI,IAAK,cAAcC,eAAc;AAAA,QACnD,IAAI,OAAsB;AACxB,kBAAQ,IAAI,0BAA0B;AAAA,YACpC,SAAS;AAAA,YACT,UAAU,MAAM;AAAA,YAChB,OAAO,MAAM;AAAA,UACf,CAAC;AACD,iBAAQ,MAAwB,IAAI,KAAK;AAAA,QAC3C;AAAA;AAAA,QAEA,QAAQ,OAAsB;AAC5B,kBAAQ,IAAI,8BAA8B;AAAA,YACxC,SAAS;AAAA,YACT,UAAU,MAAM;AAAA,YAChB,OAAO,MAAM;AAAA,UACf,CAAC;AACD,iBAAQ,MAAc,UAAU,KAAK;AAAA,QACvC;AAAA,QACA,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF,EAAG;AAAA,IACL;AAEA,UAAM,UAAU,IAAI,eAAe,EAAE,QAAQ,cAAc,CAAC;AAE5D,UAAM,EAAE,cAAc,IAAI,sCAAsC;AAAA,MAC9D;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,QAAI;AACJ,QAAI;AACF,iBAAW,MAAM,cAAc,GAAG;AAAA,IACpC,SAAS,OAAO;AACd,cAAQ,MAAM,+BAA+B;AAAA,QAC3C,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC5D,OAAO,iBAAiB,QAAQ,MAAM,QAAQ;AAAA,MAChD,CAAC;AACD,YAAM;AAAA,IACR;AACA,WAAO;AAAA,EACT;AACF;AAjEgB;AAsET,SAAS,yBAAyB,SAA0C;AACjF,QAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAM,gBAAgB,6BAA6B;AACjD,QAAI,QAAQ,OAAQ,QAAO,QAAQ;AACnC,UAAM,WAAW,cAAc,YAAY;AAC3C,UAAM,MAAM,QAAQ;AACpB,QAAI,OAAO,IAAI,SAAS,GAAG;AACzB,aAAO,OAAO;AAAA,QACZ,IACG,IAAI,CAAC,OAAO;AACX,gBAAM,QAAQ,SAAS,SAAS,EAAE;AAClC,iBAAO,QAAQ,CAAC,IAAI,KAAK,IAAI;AAAA,QAC/B,CAAC,EACA,OAAO,OAAO;AAAA,MACnB;AAAA,IACF;AACA,WAAO,OAAO,YAAY,SAAS,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;AAAA,EACrF,GAfsB;AAiBtB,QAAM,UAAU,wBAAwB;AAAA,IACtC,YAAY,6BACV,OAAO;AAAA,MACL,OAAO,QAAQ,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;AAAA,IAC3F,GAHU;AAAA,IAIZ,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,eAAe,8BAAO,MAAW;AACrC,UAAM,SAAS,EAAE,KAAK;AACtB,QAAI,UAAU,WAAW,QAAQ;AAC/B,aAAO,EAAE,OAAO,EAAE,SAAS,OAAO,OAAO,6CAA6C,GAAG,GAAG;AAAA,IAC9F;AAEA,QAAI;AACF,aAAO,MAAM,QAAQ,EAAE,KAAK,OAAO,EAAE,WAAW,CAAC;AAAA,IACnD,SAAS,OAAO;AACd,cAAQ,MAAM,8BAA8B,KAAK;AACjD,aAAO,EAAE;AAAA,QACP,EAAE,SAAS,OAAO,OAAO,6BAA6B,QAAQ,GAAG,KAAK,GAAG;AAAA,QACzE;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAfqB;AAiBrB,QAAM,WAAW,wBAAC,MAAc;AAC9B,QAAI,OAAO,QAAQ,IAAI,SAAS,YAAY;AAC1C,cAAQ,IAAI,KAAK,GAAG,YAAY;AAAA,IAClC,OAAO;AACL,cAAQ,IAAI,IAAI,GAAG,YAAY;AAAA,IACjC;AAAA,EACF,GANiB;AAQjB,GAAC,MAAM,GAAG,IAAI,IAAI,EAAE,QAAQ,QAAQ;AAEtC;AAtDgB;","names":["AbstractAgent","AbstractAgent"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voltagent/ag-ui",
|
|
3
3
|
"description": "AG-UI adapter for VoltAgent agents and CopilotKit runtimes.",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.6",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"rxjs": "^7.8.1"
|
|
7
7
|
},
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"@ag-ui/core": "^0.0.37",
|
|
11
11
|
"@copilotkit/runtime": "^1.50.0",
|
|
12
12
|
"@vitest/coverage-v8": "^3.2.4",
|
|
13
|
-
"@voltagent/core": "^2.6.
|
|
13
|
+
"@voltagent/core": "^2.6.9",
|
|
14
14
|
"@voltagent/internal": "^1.0.2",
|
|
15
15
|
"tsup": "^8.5.0",
|
|
16
16
|
"typescript": "^5.8.2",
|