@voltagent/serverless-hono 1.0.3 → 1.0.4

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 CHANGED
@@ -587,6 +587,31 @@ function detectServerlessRuntime() {
587
587
  return "unknown";
588
588
  }
589
589
 
590
+ // src/utils/wait-until-wrapper.ts
591
+ function withWaitUntil(context) {
592
+ const globals = globalThis;
593
+ const previousWaitUntil = globals.___voltagent_wait_until;
594
+ const waitUntil = context?.waitUntil;
595
+ if (waitUntil && typeof waitUntil === "function") {
596
+ globals.___voltagent_wait_until = (promise) => {
597
+ try {
598
+ waitUntil(promise);
599
+ } catch {
600
+ void promise;
601
+ }
602
+ };
603
+ }
604
+ return () => {
605
+ if (waitUntil) {
606
+ if (previousWaitUntil) {
607
+ globals.___voltagent_wait_until = previousWaitUntil;
608
+ } else {
609
+ globals.___voltagent_wait_until = void 0;
610
+ }
611
+ }
612
+ };
613
+ }
614
+
590
615
  // src/serverless-provider.ts
591
616
  var HonoServerlessProvider = class {
592
617
  deps;
@@ -616,46 +641,39 @@ var HonoServerlessProvider = class {
616
641
  toCloudflareWorker() {
617
642
  return {
618
643
  fetch: async (request, env, executionCtx) => {
619
- const waitUntil = executionCtx && typeof executionCtx?.waitUntil === "function" ? executionCtx.waitUntil.bind(executionCtx) : void 0;
620
- const globals = globalThis;
621
- const previousWaitUntil = globals.___voltagent_wait_until;
622
- if (waitUntil) {
623
- globals.___voltagent_wait_until = (promise) => {
624
- try {
625
- waitUntil(promise);
626
- } catch {
627
- void promise;
628
- }
629
- };
630
- }
644
+ const cleanup = withWaitUntil(executionCtx);
631
645
  try {
632
646
  await this.ensureEnvironmentTarget(env);
633
647
  const app = await this.getApp();
634
648
  return await app.fetch(request, env, executionCtx);
635
649
  } finally {
636
- if (waitUntil) {
637
- if (previousWaitUntil) {
638
- globals.___voltagent_wait_until = previousWaitUntil;
639
- } else {
640
- globals.___voltagent_wait_until = void 0;
641
- }
642
- }
650
+ cleanup();
643
651
  }
644
652
  }
645
653
  };
646
654
  }
647
655
  toVercelEdge() {
648
656
  return async (request, context) => {
649
- await this.ensureEnvironmentTarget(context);
650
- const app = await this.getApp();
651
- return app.fetch(request, context);
657
+ const cleanup = withWaitUntil(context);
658
+ try {
659
+ await this.ensureEnvironmentTarget(context);
660
+ const app = await this.getApp();
661
+ return await app.fetch(request, context);
662
+ } finally {
663
+ cleanup();
664
+ }
652
665
  };
653
666
  }
654
667
  toDeno() {
655
668
  return async (request, info) => {
656
- await this.ensureEnvironmentTarget(info);
657
- const app = await this.getApp();
658
- return app.fetch(request, info);
669
+ const cleanup = withWaitUntil(info);
670
+ try {
671
+ await this.ensureEnvironmentTarget(info);
672
+ const app = await this.getApp();
673
+ return await app.fetch(request, info);
674
+ } finally {
675
+ cleanup();
676
+ }
659
677
  };
660
678
  }
661
679
  auto() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/app-factory.ts","../src/routes.ts","../src/utils/runtime-detection.ts","../src/serverless-provider.ts","../src/netlify-function.ts","../src/index.ts"],"sourcesContent":["import type { ServerProviderDeps } from \"@voltagent/core\";\nimport type { Logger } from \"@voltagent/internal\";\nimport { getOrCreateLogger } from \"@voltagent/server-core\";\nimport { Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\nimport {\n registerA2ARoutes,\n registerAgentRoutes,\n registerLogRoutes,\n registerObservabilityRoutes,\n registerUpdateRoutes,\n registerWorkflowRoutes,\n} from \"./routes\";\nimport type { ServerlessConfig } from \"./types\";\n\nfunction resolveCorsConfig(config?: ServerlessConfig) {\n const origin = config?.corsOrigin ?? \"*\";\n const allowMethods = config?.corsAllowMethods ?? [\n \"GET\",\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\",\n \"OPTIONS\",\n ];\n const allowHeaders = config?.corsAllowHeaders ?? [\"Content-Type\", \"Authorization\"];\n\n return {\n origin,\n allowMethods,\n allowHeaders,\n };\n}\n\nexport async function createServerlessApp(deps: ServerProviderDeps, config?: ServerlessConfig) {\n const app = new Hono();\n const logger: Logger = getOrCreateLogger(deps, \"serverless\");\n\n const corsConfig = resolveCorsConfig(config);\n app.use(\"*\", cors(corsConfig));\n\n app.get(\"/\", (c) =>\n c.json({\n name: \"VoltAgent Serverless\",\n message: \"VoltAgent serverless runtime is running\",\n }),\n );\n\n // Provide a friendly response for WebSocket probes (Console UI polls /ws)\n app.get(\"/ws\", (c) =>\n c.json(\n {\n success: false,\n error:\n \"WebSocket streaming is not implemented in the serverless runtime yet. Falling back to HTTP polling.\",\n },\n 200,\n ),\n );\n\n registerAgentRoutes(app, deps, logger);\n registerWorkflowRoutes(app, deps, logger);\n registerLogRoutes(app, deps, logger);\n registerUpdateRoutes(app, deps, logger);\n registerObservabilityRoutes(app, deps, logger);\n registerA2ARoutes(app, deps, logger);\n\n if (config?.configureApp) {\n await config.configureApp(app, deps);\n }\n\n return app;\n}\n","import type { A2AServerRegistry, ServerProviderDeps } from \"@voltagent/core\";\nimport type { Logger } from \"@voltagent/internal\";\nimport { safeStringify } from \"@voltagent/internal\";\nimport {\n getLogsBySpanIdHandler,\n getLogsByTraceIdHandler,\n getObservabilityStatusHandler,\n getSpanByIdHandler,\n getTraceByIdHandler,\n getTracesHandler,\n getWorkingMemoryHandler,\n listMemoryConversationsHandler,\n listMemoryUsersHandler,\n queryLogsHandler,\n} from \"@voltagent/server-core\";\nimport type {\n A2AServerLikeWithHandlers,\n JsonRpcRequest,\n JsonRpcResponse,\n} from \"@voltagent/server-core\";\nimport {\n type A2ARequestContext,\n A2A_ROUTES,\n AGENT_ROUTES,\n OBSERVABILITY_MEMORY_ROUTES,\n OBSERVABILITY_ROUTES,\n UPDATE_ROUTES,\n WORKFLOW_ROUTES,\n executeA2ARequest,\n getConversationMessagesHandler,\n handleChatStream,\n handleCheckUpdates,\n handleExecuteWorkflow,\n handleGenerateObject,\n handleGenerateText,\n handleGetAgent,\n handleGetAgentHistory,\n handleGetAgents,\n handleGetLogs,\n handleGetWorkflow,\n handleGetWorkflowState,\n handleGetWorkflows,\n handleInstallUpdates,\n handleResumeWorkflow,\n handleStreamObject,\n handleStreamText,\n handleStreamWorkflow,\n handleSuspendWorkflow,\n isErrorResponse,\n mapLogResponse,\n parseJsonRpcRequest,\n resolveAgentCard,\n} from \"@voltagent/server-core\";\nimport type { Hono } from \"hono\";\n\nfunction parseJsonSafe<T>(raw: string, logger: Logger): T | undefined {\n try {\n return JSON.parse(raw) as T;\n } catch (error) {\n logger.warn(\"Failed to parse JSON payload\", { error });\n return undefined;\n }\n}\n\nasync function readJsonBody<T>(c: any, logger: Logger): Promise<T | undefined> {\n try {\n return (await c.req.json()) as T;\n } catch (error) {\n logger.warn(\"Invalid JSON body received\", { error, path: c.req.path });\n return undefined;\n }\n}\n\nfunction parseContextCandidate(candidate: unknown): A2ARequestContext | undefined {\n if (!candidate || typeof candidate !== \"object\" || Array.isArray(candidate)) {\n return undefined;\n }\n\n const { userId, sessionId, metadata } = candidate as Record<string, unknown>;\n const context: A2ARequestContext = {};\n\n if (typeof userId === \"string\") {\n context.userId = userId;\n }\n\n if (typeof sessionId === \"string\") {\n context.sessionId = sessionId;\n }\n\n if (metadata && typeof metadata === \"object\" && !Array.isArray(metadata)) {\n context.metadata = metadata as Record<string, unknown>;\n }\n\n return Object.keys(context).length > 0 ? context : undefined;\n}\n\nfunction mergeContexts(\n base: A2ARequestContext | undefined,\n next: A2ARequestContext | undefined,\n): A2ARequestContext | undefined {\n if (!base) {\n return next;\n }\n if (!next) {\n return base;\n }\n\n const merged: A2ARequestContext = {\n ...base,\n ...next,\n };\n\n if (base.metadata || next.metadata) {\n merged.metadata = {\n ...(base.metadata ?? {}),\n ...(next.metadata ?? {}),\n };\n }\n\n return merged;\n}\n\nexport function registerAgentRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.get(AGENT_ROUTES.listAgents.path, async (c) => {\n const response = await handleGetAgents(deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.get(AGENT_ROUTES.getAgent.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const response = await handleGetAgent(agentId, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(AGENT_ROUTES.generateText.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n const signal = c.req.raw.signal;\n const response = await handleGenerateText(agentId, body, deps, logger, signal);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(AGENT_ROUTES.streamText.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ error: \"Invalid JSON body\" }, 400);\n }\n const signal = c.req.raw.signal;\n const response = await handleStreamText(agentId, body, deps, logger, signal);\n return response;\n });\n\n app.post(AGENT_ROUTES.chatStream.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ error: \"Invalid JSON body\" }, 400);\n }\n const signal = c.req.raw.signal;\n return handleChatStream(agentId, body, deps, logger, signal);\n });\n\n app.post(AGENT_ROUTES.generateObject.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n const signal = c.req.raw.signal;\n const response = await handleGenerateObject(agentId, body, deps, logger, signal);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(AGENT_ROUTES.streamObject.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ error: \"Invalid JSON body\" }, 400);\n }\n const signal = c.req.raw.signal;\n return handleStreamObject(agentId, body, deps, logger, signal);\n });\n\n app.get(AGENT_ROUTES.getAgentHistory.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const page = Number.parseInt(c.req.query(\"page\") || \"0\", 10);\n const limit = Number.parseInt(c.req.query(\"limit\") || \"10\", 10);\n const response = await handleGetAgentHistory(agentId, page, limit, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n}\n\nexport function registerWorkflowRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.get(WORKFLOW_ROUTES.listWorkflows.path, async (c) => {\n const response = await handleGetWorkflows(deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.get(WORKFLOW_ROUTES.getWorkflow.path, async (c) => {\n const workflowId = c.req.param(\"id\");\n const response = await handleGetWorkflow(workflowId, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(WORKFLOW_ROUTES.executeWorkflow.path, async (c) => {\n const workflowId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n const response = await handleExecuteWorkflow(workflowId, body, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(WORKFLOW_ROUTES.streamWorkflow.path, async (c) => {\n const workflowId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ error: \"Invalid JSON body\" }, 400);\n }\n\n const response = await handleStreamWorkflow(workflowId, body, deps, logger);\n\n if (isErrorResponse(response)) {\n return c.json(response, 500);\n }\n\n return c.body(response, 200, {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n });\n });\n\n app.post(WORKFLOW_ROUTES.suspendWorkflow.path, async (c) => {\n const executionId = c.req.param(\"executionId\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n const response = await handleSuspendWorkflow(executionId, body, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(WORKFLOW_ROUTES.resumeWorkflow.path, async (c) => {\n const workflowId = c.req.param(\"id\");\n const executionId = c.req.param(\"executionId\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n const response = await handleResumeWorkflow(workflowId, executionId, body, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.get(WORKFLOW_ROUTES.getWorkflowState.path, async (c) => {\n const workflowId = c.req.param(\"id\");\n const executionId = c.req.param(\"executionId\");\n const response = await handleGetWorkflowState(workflowId, executionId, deps, logger);\n const status = response.success ? 200 : response.error?.includes(\"not found\") ? 404 : 500;\n return c.json(response, status);\n });\n}\n\nexport function registerLogRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.get(\"/logs\", async (c) => {\n const query = c.req.query();\n const options = {\n limit: query.limit ? Number(query.limit) : undefined,\n level: query.level as any,\n agentId: query.agentId,\n workflowId: query.workflowId,\n conversationId: query.conversationId,\n executionId: query.executionId,\n since: query.since,\n until: query.until,\n };\n\n const response = await handleGetLogs(options, deps, logger);\n if (!response.success) {\n return c.json(response, 500);\n }\n\n const mapped = mapLogResponse(response);\n return c.json(mapped, 200);\n });\n}\n\nexport function registerUpdateRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.get(UPDATE_ROUTES.checkUpdates.path, async (c) => {\n const response = await handleCheckUpdates(deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(UPDATE_ROUTES.installUpdates.path, async (c) => {\n const body = (await readJsonBody<{ packageName?: string }>(c, logger)) ?? {};\n const response = await handleInstallUpdates(body.packageName, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n}\n\nexport function registerObservabilityRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.post(OBSERVABILITY_ROUTES.setupObservability.path, (c) =>\n c.json(\n {\n success: false,\n error: \"Observability setup is not available in the serverless runtime.\",\n },\n 501,\n ),\n );\n\n app.get(OBSERVABILITY_ROUTES.getTraces.path, async (c) => {\n const query = c.req.query();\n logger.debug(\"[serverless] GET /observability/traces\", { query });\n const result = await getTracesHandler(deps, query);\n return c.json(result, result.success ? 200 : 500);\n });\n\n app.get(OBSERVABILITY_ROUTES.getTraceById.path, async (c) => {\n const traceId = c.req.param(\"traceId\");\n logger.debug(\"[serverless] GET /observability/traces/:traceId\", { traceId });\n const result = await getTraceByIdHandler(traceId, deps);\n return c.json(result, result.success ? 200 : 404);\n });\n\n app.get(OBSERVABILITY_ROUTES.getSpanById.path, async (c) => {\n const spanId = c.req.param(\"spanId\");\n logger.debug(\"[serverless] GET /observability/spans/:spanId\", { spanId });\n const result = await getSpanByIdHandler(spanId, deps);\n return c.json(result, result.success ? 200 : 404);\n });\n\n app.get(OBSERVABILITY_ROUTES.getObservabilityStatus.path, async (c) => {\n logger.debug(\"[serverless] GET /observability/status\");\n const result = await getObservabilityStatusHandler(deps);\n return c.json(result, result.success ? 200 : 500);\n });\n\n app.get(OBSERVABILITY_ROUTES.getLogsByTraceId.path, async (c) => {\n const traceId = c.req.param(\"traceId\");\n logger.debug(\"[serverless] GET /observability/traces/:traceId/logs\", { traceId });\n const result = await getLogsByTraceIdHandler(traceId, deps);\n return c.json(result, result.success ? 200 : 404);\n });\n\n app.get(OBSERVABILITY_ROUTES.getLogsBySpanId.path, async (c) => {\n const spanId = c.req.param(\"spanId\");\n logger.debug(\"[serverless] GET /observability/spans/:spanId/logs\", { spanId });\n const result = await getLogsBySpanIdHandler(spanId, deps);\n return c.json(result, result.success ? 200 : 404);\n });\n\n app.get(OBSERVABILITY_ROUTES.queryLogs.path, async (c) => {\n const query = c.req.query();\n logger.debug(\"[serverless] GET /observability/logs\", { query });\n const result = await queryLogsHandler(query, deps);\n return c.json(result, result.success ? 200 : 400);\n });\n\n app.get(OBSERVABILITY_MEMORY_ROUTES.listMemoryUsers.path, async (c) => {\n const query = c.req.query();\n logger.debug(\"[serverless] GET /observability/memory/users\", { query });\n const result = await listMemoryUsersHandler(deps, {\n agentId: query.agentId,\n limit: query.limit ? Number.parseInt(query.limit, 10) : undefined,\n offset: query.offset ? Number.parseInt(query.offset, 10) : undefined,\n search: query.search,\n });\n\n return c.json(result, result.success ? 200 : 500);\n });\n\n app.get(OBSERVABILITY_MEMORY_ROUTES.listMemoryConversations.path, async (c) => {\n const query = c.req.query();\n logger.debug(\"[serverless] GET /observability/memory/conversations\", { query });\n const result = await listMemoryConversationsHandler(deps, {\n agentId: query.agentId,\n userId: query.userId,\n limit: query.limit ? Number.parseInt(query.limit, 10) : undefined,\n offset: query.offset ? Number.parseInt(query.offset, 10) : undefined,\n orderBy: query.orderBy as \"created_at\" | \"updated_at\" | \"title\" | undefined,\n orderDirection: query.orderDirection as \"ASC\" | \"DESC\" | undefined,\n });\n\n return c.json(result, result.success ? 200 : 500);\n });\n\n app.get(OBSERVABILITY_MEMORY_ROUTES.getMemoryConversationMessages.path, async (c) => {\n const conversationId = c.req.param(\"conversationId\");\n const query = c.req.query();\n logger.debug(\n `[serverless] GET /observability/memory/conversations/${conversationId}/messages`,\n { query },\n );\n\n const before = query.before ? new Date(query.before) : undefined;\n const after = query.after ? new Date(query.after) : undefined;\n\n const result = await getConversationMessagesHandler(deps, conversationId, {\n agentId: query.agentId,\n limit: query.limit ? Number.parseInt(query.limit, 10) : undefined,\n before: before && !Number.isNaN(before.getTime()) ? before : undefined,\n after: after && !Number.isNaN(after.getTime()) ? after : undefined,\n roles: query.roles ? query.roles.split(\",\") : undefined,\n });\n\n if (!result.success) {\n return c.json(result, result.error === \"Conversation not found\" ? 404 : 500);\n }\n\n return c.json(result, 200);\n });\n\n app.get(OBSERVABILITY_MEMORY_ROUTES.getWorkingMemory.path, async (c) => {\n const query = c.req.query();\n logger.debug(\"[serverless] GET /observability/memory/working-memory\", { query });\n\n const scope =\n query.scope === \"user\" ? \"user\" : query.scope === \"conversation\" ? \"conversation\" : undefined;\n\n if (!scope) {\n return c.json(\n { success: false, error: \"Invalid scope. Expected 'conversation' or 'user'.\" },\n 400,\n );\n }\n\n const result = await getWorkingMemoryHandler(deps, {\n agentId: query.agentId,\n scope,\n conversationId: query.conversationId,\n userId: query.userId,\n });\n\n if (!result.success) {\n return c.json(result, result.error === \"Working memory not found\" ? 404 : 500);\n }\n\n return c.json(result, 200);\n });\n}\n\nexport function registerA2ARoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n const registry = deps.a2a?.registry as A2AServerRegistry<A2AServerLikeWithHandlers> | undefined;\n\n if (!registry) {\n logger.debug(\"A2A server registry not available on server deps; skipping A2A routes\");\n return;\n }\n\n app.get(A2A_ROUTES.agentCard.path, (c) => {\n const serverId = c.req.param(\"serverId\");\n if (!serverId) {\n return c.json({ success: false, error: \"Missing serverId parameter\" }, 400);\n }\n try {\n const card = resolveAgentCard(registry, serverId, serverId, {});\n return c.json(card, 200);\n } catch (error) {\n const status = error instanceof Error && error.message.includes(\"not found\") ? 404 : 400;\n return c.json(\n { success: false, error: error instanceof Error ? error.message : String(error) },\n status,\n );\n }\n });\n\n app.post(A2A_ROUTES.jsonRpc.path, async (c) => {\n const serverId = c.req.param(\"serverId\");\n if (!serverId) {\n return c.json(\n { jsonrpc: \"2.0\", error: { code: -32600, message: \"Missing serverId\" }, id: null },\n 400,\n );\n }\n type JsonRpcPayload = ReturnType<typeof parseJsonRpcRequest>;\n let request: JsonRpcPayload | undefined;\n let context: A2ARequestContext | undefined;\n\n try {\n const queryContext = c.req.query(\"context\") ?? c.req.query(\"runtimeContext\");\n if (queryContext) {\n const parsedQueryContext = parseJsonSafe<Record<string, unknown>>(queryContext, logger);\n context = mergeContexts(context, parseContextCandidate(parsedQueryContext));\n }\n\n const body = await readJsonBody<Record<string, unknown> | JsonRpcRequest | JsonRpcRequest[]>(\n c,\n logger,\n );\n if (!body) {\n return c.json(\n { jsonrpc: \"2.0\", error: { code: -32600, message: \"Invalid request\" }, id: null },\n 400,\n );\n }\n\n if (typeof (body as Record<string, unknown>).context !== \"undefined\") {\n const { context: bodyContext, ...rest } = body as Record<string, unknown>;\n context = mergeContexts(context, parseContextCandidate(bodyContext));\n request = parseJsonRpcRequest(rest as unknown);\n } else {\n request = parseJsonRpcRequest(body as unknown);\n }\n } catch (error) {\n return c.json(\n { jsonrpc: \"2.0\", error: { code: -32600, message: String(error) }, id: null },\n 400,\n );\n }\n\n const response = await executeA2ARequest({\n registry,\n serverId,\n request,\n context,\n logger,\n });\n\n if (\"kind\" in response && response.kind === \"stream\") {\n const { stream, id } = response;\n const encoder = new TextEncoder();\n const abortSignal = c.req.raw.signal;\n let abortListener: (() => void) | undefined;\n let cleanedUp = false;\n\n const cleanup = async () => {\n if (abortSignal && abortListener) {\n abortSignal.removeEventListener(\"abort\", abortListener);\n abortListener = undefined;\n }\n if (!cleanedUp && typeof stream.return === \"function\") {\n cleanedUp = true;\n try {\n await stream.return(undefined as any);\n } catch {\n // ignore completion errors\n }\n }\n };\n\n const sseStream = new ReadableStream<Uint8Array>({\n async start(controller) {\n if (abortSignal) {\n if (abortSignal.aborted) {\n await cleanup();\n controller.close();\n return;\n }\n\n abortListener = () => {\n controller.close();\n void cleanup();\n };\n\n abortSignal.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n for await (const chunk of stream) {\n const payload = safeStringify(chunk);\n controller.enqueue(encoder.encode(`data: \\u001E${payload}\\n\\n`));\n }\n } catch (error) {\n const payload = safeStringify({\n jsonrpc: \"2.0\",\n error: { code: -32603, message: String(error) },\n id,\n });\n controller.enqueue(encoder.encode(`data: \\u001E${payload}\\n\\n`));\n } finally {\n await cleanup();\n controller.close();\n }\n },\n async cancel() {\n await cleanup();\n },\n });\n\n return new Response(sseStream, {\n status: 200,\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n \"X-Accel-Buffering\": \"no\",\n },\n });\n }\n\n const jsonResponse = response as JsonRpcResponse;\n return c.json(jsonResponse, jsonResponse.error ? 400 : 200);\n });\n}\n","import type { ServerlessRuntime } from \"../types\";\n\nexport function detectServerlessRuntime(): ServerlessRuntime {\n // @ts-ignore - Cloudflare Workers expose globalThis.Deno but with specific flags\n if (typeof globalThis.Deno !== \"undefined\") {\n return \"deno\";\n }\n\n // @ts-ignore - Vercel Edge Runtime sets EdgeRuntime global\n if (typeof globalThis.EdgeRuntime !== \"undefined\") {\n return \"vercel\";\n }\n\n // @ts-ignore - Cloudflare Workers include navigator.userAgent\n if (globalThis.navigator?.userAgent?.includes(\"Cloudflare\")) {\n return \"cloudflare\";\n }\n\n return \"unknown\";\n}\n","import type { IServerlessProvider, ServerProviderDeps } from \"@voltagent/core\";\nimport type { Hono } from \"hono\";\nimport { createServerlessApp } from \"./app-factory\";\nimport type { ServerlessConfig, ServerlessRuntime } from \"./types\";\nimport { detectServerlessRuntime } from \"./utils/runtime-detection\";\n\ntype VoltAgentGlobal = typeof globalThis & {\n ___voltagent_wait_until?: (promise: Promise<unknown>) => void;\n};\nexport class HonoServerlessProvider implements IServerlessProvider {\n private readonly deps: ServerProviderDeps;\n private readonly config?: ServerlessConfig;\n private readonly appPromise: Promise<Hono>;\n\n constructor(deps: ServerProviderDeps, config?: ServerlessConfig) {\n this.deps = deps;\n this.config = config;\n this.appPromise = this.initializeApp();\n }\n\n private async initializeApp(): Promise<Hono> {\n return createServerlessApp(this.deps, this.config);\n }\n\n private async getApp(): Promise<Hono> {\n return this.appPromise;\n }\n\n private async ensureEnvironmentTarget(target?: Record<string, unknown>): Promise<void> {\n if (this.deps.ensureEnvironment) {\n await Promise.resolve(this.deps.ensureEnvironment(target));\n }\n }\n\n async handleRequest(request: Request): Promise<Response> {\n await this.ensureEnvironmentTarget();\n const app = await this.getApp();\n return app.fetch(request);\n }\n\n toCloudflareWorker() {\n return {\n fetch: async (\n request: Request,\n env: Record<string, unknown>,\n executionCtx: unknown,\n ): Promise<Response> => {\n const waitUntil =\n executionCtx && typeof (executionCtx as any)?.waitUntil === \"function\"\n ? (executionCtx as any).waitUntil.bind(executionCtx)\n : undefined;\n\n const globals = globalThis as VoltAgentGlobal;\n const previousWaitUntil = globals.___voltagent_wait_until;\n\n if (waitUntil) {\n globals.___voltagent_wait_until = (promise) => {\n try {\n waitUntil(promise);\n } catch {\n void promise;\n }\n };\n }\n\n try {\n await this.ensureEnvironmentTarget(env);\n const app = await this.getApp();\n return await app.fetch(request, env as Record<string, unknown>, executionCtx as any);\n } finally {\n if (waitUntil) {\n if (previousWaitUntil) {\n globals.___voltagent_wait_until = previousWaitUntil;\n } else {\n globals.___voltagent_wait_until = undefined;\n }\n }\n }\n },\n };\n }\n\n toVercelEdge(): (request: Request, context?: unknown) => Promise<Response> {\n return async (request: Request, context?: unknown) => {\n await this.ensureEnvironmentTarget(context as Record<string, unknown> | undefined);\n const app = await this.getApp();\n return app.fetch(request, context as Record<string, unknown> | undefined);\n };\n }\n\n toDeno(): (request: Request, info?: unknown) => Promise<Response> {\n return async (request: Request, info?: unknown) => {\n await this.ensureEnvironmentTarget(info as Record<string, unknown> | undefined);\n const app = await this.getApp();\n return app.fetch(request, info as Record<string, unknown> | undefined);\n };\n }\n\n auto():\n | { fetch: (req: Request, env: Record<string, unknown>, ctx: unknown) => Promise<Response> }\n | ((req: Request, ctx?: unknown) => Promise<Response>) {\n const runtime: ServerlessRuntime = detectServerlessRuntime();\n\n switch (runtime) {\n case \"cloudflare\":\n return this.toCloudflareWorker();\n case \"vercel\":\n return this.toVercelEdge();\n case \"deno\":\n return this.toDeno();\n default:\n return this.toCloudflareWorker();\n }\n }\n}\n","import { Buffer } from \"node:buffer\";\nimport type { VoltAgent } from \"@voltagent/core\";\n\ninterface NetlifyFunctionEvent {\n httpMethod?: string;\n headers?: Record<string, string | undefined>;\n multiValueHeaders?: Record<string, (string | undefined)[] | undefined>;\n rawUrl?: string;\n rawQuery?: string;\n rawPath?: string;\n path?: string;\n body?: string | null;\n isBase64Encoded?: boolean;\n}\n\ninterface NetlifyFunctionResult {\n statusCode: number;\n headers?: Record<string, string>;\n multiValueHeaders?: Record<string, string[]>;\n body: string;\n isBase64Encoded: boolean;\n}\n\ntype NetlifyFunctionHandler = (\n event: NetlifyFunctionEvent,\n context: unknown,\n) => Promise<NetlifyFunctionResult>;\n\nconst TEXT_BODY_METHODS = new Set([\"GET\", \"HEAD\"]);\n\nfunction buildUrl(event: NetlifyFunctionEvent): string {\n const scheme = event.headers?.[\"x-forwarded-proto\"] || \"https\";\n const host = event.headers?.host || \"localhost\";\n const path = event.rawPath || event.path || \"/\";\n const query = event.rawQuery ? `?${event.rawQuery}` : \"\";\n return `${scheme}://${host}${path}${query}`;\n}\n\nfunction createRequest(event: NetlifyFunctionEvent): Request {\n const method = (event.httpMethod || \"GET\").toUpperCase();\n const headers = new Headers();\n\n if (event.multiValueHeaders) {\n for (const [key, values] of Object.entries(event.multiValueHeaders)) {\n if (!values) continue;\n for (const value of values) {\n if (value !== undefined) {\n headers.append(key, value);\n }\n }\n }\n }\n\n if (event.headers) {\n for (const [key, value] of Object.entries(event.headers)) {\n if (value !== undefined) {\n headers.set(key, value);\n }\n }\n }\n\n const url = event.rawUrl || buildUrl(event);\n\n const init: Record<string, unknown> = { method, headers };\n\n if (!TEXT_BODY_METHODS.has(method) && event.body) {\n init.body = event.isBase64Encoded ? Buffer.from(event.body, \"base64\") : event.body;\n }\n\n return new Request(url, init as RequestInit);\n}\n\nfunction toNetlifyResponse(response: Response): Promise<NetlifyFunctionResult> {\n const single: Record<string, string> = {};\n const multi: Record<string, string[]> = {};\n\n response.headers.forEach((value, key) => {\n if (single[key]) {\n multi[key] = [single[key], value];\n delete single[key];\n } else if (multi[key]) {\n multi[key].push(value);\n } else {\n single[key] = value;\n }\n });\n\n return response.arrayBuffer().then((buffer) => ({\n statusCode: response.status,\n headers: Object.keys(single).length > 0 ? single : undefined,\n multiValueHeaders: Object.keys(multi).length > 0 ? multi : undefined,\n body: Buffer.from(buffer).toString(\"base64\"),\n isBase64Encoded: true,\n }));\n}\n\nexport function createNetlifyFunctionHandler(voltAgent: VoltAgent): NetlifyFunctionHandler {\n const provider = voltAgent.serverless();\n\n return async (event) => {\n const request = createRequest(event);\n const response = await provider.handleRequest(request);\n return toNetlifyResponse(response);\n };\n}\n\nexport type { NetlifyFunctionHandler, NetlifyFunctionEvent, NetlifyFunctionResult };\n","import type { ServerProviderDeps } from \"@voltagent/core\";\nimport { HonoServerlessProvider } from \"./serverless-provider\";\nimport type { ServerlessConfig } from \"./types\";\n\nexport function serverlessHono(config?: ServerlessConfig) {\n return (deps: ServerProviderDeps) => new HonoServerlessProvider(deps, config);\n}\n\nexport { HonoServerlessProvider } from \"./serverless-provider\";\nexport type { ServerlessConfig, ServerlessRuntime } from \"./types\";\nexport { detectServerlessRuntime } from \"./utils/runtime-detection\";\nexport {\n createNetlifyFunctionHandler,\n type NetlifyFunctionEvent,\n type NetlifyFunctionHandler,\n type NetlifyFunctionResult,\n} from \"./netlify-function\";\nexport default serverlessHono;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/app-factory.ts","../src/routes.ts","../src/utils/runtime-detection.ts","../src/utils/wait-until-wrapper.ts","../src/serverless-provider.ts","../src/netlify-function.ts","../src/index.ts"],"sourcesContent":["import type { ServerProviderDeps } from \"@voltagent/core\";\nimport type { Logger } from \"@voltagent/internal\";\nimport { getOrCreateLogger } from \"@voltagent/server-core\";\nimport { Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\nimport {\n registerA2ARoutes,\n registerAgentRoutes,\n registerLogRoutes,\n registerObservabilityRoutes,\n registerUpdateRoutes,\n registerWorkflowRoutes,\n} from \"./routes\";\nimport type { ServerlessConfig } from \"./types\";\n\nfunction resolveCorsConfig(config?: ServerlessConfig) {\n const origin = config?.corsOrigin ?? \"*\";\n const allowMethods = config?.corsAllowMethods ?? [\n \"GET\",\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\",\n \"OPTIONS\",\n ];\n const allowHeaders = config?.corsAllowHeaders ?? [\"Content-Type\", \"Authorization\"];\n\n return {\n origin,\n allowMethods,\n allowHeaders,\n };\n}\n\nexport async function createServerlessApp(deps: ServerProviderDeps, config?: ServerlessConfig) {\n const app = new Hono();\n const logger: Logger = getOrCreateLogger(deps, \"serverless\");\n\n const corsConfig = resolveCorsConfig(config);\n app.use(\"*\", cors(corsConfig));\n\n app.get(\"/\", (c) =>\n c.json({\n name: \"VoltAgent Serverless\",\n message: \"VoltAgent serverless runtime is running\",\n }),\n );\n\n // Provide a friendly response for WebSocket probes (Console UI polls /ws)\n app.get(\"/ws\", (c) =>\n c.json(\n {\n success: false,\n error:\n \"WebSocket streaming is not implemented in the serverless runtime yet. Falling back to HTTP polling.\",\n },\n 200,\n ),\n );\n\n registerAgentRoutes(app, deps, logger);\n registerWorkflowRoutes(app, deps, logger);\n registerLogRoutes(app, deps, logger);\n registerUpdateRoutes(app, deps, logger);\n registerObservabilityRoutes(app, deps, logger);\n registerA2ARoutes(app, deps, logger);\n\n if (config?.configureApp) {\n await config.configureApp(app, deps);\n }\n\n return app;\n}\n","import type { A2AServerRegistry, ServerProviderDeps } from \"@voltagent/core\";\nimport type { Logger } from \"@voltagent/internal\";\nimport { safeStringify } from \"@voltagent/internal\";\nimport {\n getLogsBySpanIdHandler,\n getLogsByTraceIdHandler,\n getObservabilityStatusHandler,\n getSpanByIdHandler,\n getTraceByIdHandler,\n getTracesHandler,\n getWorkingMemoryHandler,\n listMemoryConversationsHandler,\n listMemoryUsersHandler,\n queryLogsHandler,\n} from \"@voltagent/server-core\";\nimport type {\n A2AServerLikeWithHandlers,\n JsonRpcRequest,\n JsonRpcResponse,\n} from \"@voltagent/server-core\";\nimport {\n type A2ARequestContext,\n A2A_ROUTES,\n AGENT_ROUTES,\n OBSERVABILITY_MEMORY_ROUTES,\n OBSERVABILITY_ROUTES,\n UPDATE_ROUTES,\n WORKFLOW_ROUTES,\n executeA2ARequest,\n getConversationMessagesHandler,\n handleChatStream,\n handleCheckUpdates,\n handleExecuteWorkflow,\n handleGenerateObject,\n handleGenerateText,\n handleGetAgent,\n handleGetAgentHistory,\n handleGetAgents,\n handleGetLogs,\n handleGetWorkflow,\n handleGetWorkflowState,\n handleGetWorkflows,\n handleInstallUpdates,\n handleResumeWorkflow,\n handleStreamObject,\n handleStreamText,\n handleStreamWorkflow,\n handleSuspendWorkflow,\n isErrorResponse,\n mapLogResponse,\n parseJsonRpcRequest,\n resolveAgentCard,\n} from \"@voltagent/server-core\";\nimport type { Hono } from \"hono\";\n\nfunction parseJsonSafe<T>(raw: string, logger: Logger): T | undefined {\n try {\n return JSON.parse(raw) as T;\n } catch (error) {\n logger.warn(\"Failed to parse JSON payload\", { error });\n return undefined;\n }\n}\n\nasync function readJsonBody<T>(c: any, logger: Logger): Promise<T | undefined> {\n try {\n return (await c.req.json()) as T;\n } catch (error) {\n logger.warn(\"Invalid JSON body received\", { error, path: c.req.path });\n return undefined;\n }\n}\n\nfunction parseContextCandidate(candidate: unknown): A2ARequestContext | undefined {\n if (!candidate || typeof candidate !== \"object\" || Array.isArray(candidate)) {\n return undefined;\n }\n\n const { userId, sessionId, metadata } = candidate as Record<string, unknown>;\n const context: A2ARequestContext = {};\n\n if (typeof userId === \"string\") {\n context.userId = userId;\n }\n\n if (typeof sessionId === \"string\") {\n context.sessionId = sessionId;\n }\n\n if (metadata && typeof metadata === \"object\" && !Array.isArray(metadata)) {\n context.metadata = metadata as Record<string, unknown>;\n }\n\n return Object.keys(context).length > 0 ? context : undefined;\n}\n\nfunction mergeContexts(\n base: A2ARequestContext | undefined,\n next: A2ARequestContext | undefined,\n): A2ARequestContext | undefined {\n if (!base) {\n return next;\n }\n if (!next) {\n return base;\n }\n\n const merged: A2ARequestContext = {\n ...base,\n ...next,\n };\n\n if (base.metadata || next.metadata) {\n merged.metadata = {\n ...(base.metadata ?? {}),\n ...(next.metadata ?? {}),\n };\n }\n\n return merged;\n}\n\nexport function registerAgentRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.get(AGENT_ROUTES.listAgents.path, async (c) => {\n const response = await handleGetAgents(deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.get(AGENT_ROUTES.getAgent.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const response = await handleGetAgent(agentId, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(AGENT_ROUTES.generateText.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n const signal = c.req.raw.signal;\n const response = await handleGenerateText(agentId, body, deps, logger, signal);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(AGENT_ROUTES.streamText.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ error: \"Invalid JSON body\" }, 400);\n }\n const signal = c.req.raw.signal;\n const response = await handleStreamText(agentId, body, deps, logger, signal);\n return response;\n });\n\n app.post(AGENT_ROUTES.chatStream.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ error: \"Invalid JSON body\" }, 400);\n }\n const signal = c.req.raw.signal;\n return handleChatStream(agentId, body, deps, logger, signal);\n });\n\n app.post(AGENT_ROUTES.generateObject.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n const signal = c.req.raw.signal;\n const response = await handleGenerateObject(agentId, body, deps, logger, signal);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(AGENT_ROUTES.streamObject.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ error: \"Invalid JSON body\" }, 400);\n }\n const signal = c.req.raw.signal;\n return handleStreamObject(agentId, body, deps, logger, signal);\n });\n\n app.get(AGENT_ROUTES.getAgentHistory.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const page = Number.parseInt(c.req.query(\"page\") || \"0\", 10);\n const limit = Number.parseInt(c.req.query(\"limit\") || \"10\", 10);\n const response = await handleGetAgentHistory(agentId, page, limit, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n}\n\nexport function registerWorkflowRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.get(WORKFLOW_ROUTES.listWorkflows.path, async (c) => {\n const response = await handleGetWorkflows(deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.get(WORKFLOW_ROUTES.getWorkflow.path, async (c) => {\n const workflowId = c.req.param(\"id\");\n const response = await handleGetWorkflow(workflowId, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(WORKFLOW_ROUTES.executeWorkflow.path, async (c) => {\n const workflowId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n const response = await handleExecuteWorkflow(workflowId, body, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(WORKFLOW_ROUTES.streamWorkflow.path, async (c) => {\n const workflowId = c.req.param(\"id\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ error: \"Invalid JSON body\" }, 400);\n }\n\n const response = await handleStreamWorkflow(workflowId, body, deps, logger);\n\n if (isErrorResponse(response)) {\n return c.json(response, 500);\n }\n\n return c.body(response, 200, {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n });\n });\n\n app.post(WORKFLOW_ROUTES.suspendWorkflow.path, async (c) => {\n const executionId = c.req.param(\"executionId\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n const response = await handleSuspendWorkflow(executionId, body, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(WORKFLOW_ROUTES.resumeWorkflow.path, async (c) => {\n const workflowId = c.req.param(\"id\");\n const executionId = c.req.param(\"executionId\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n const response = await handleResumeWorkflow(workflowId, executionId, body, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.get(WORKFLOW_ROUTES.getWorkflowState.path, async (c) => {\n const workflowId = c.req.param(\"id\");\n const executionId = c.req.param(\"executionId\");\n const response = await handleGetWorkflowState(workflowId, executionId, deps, logger);\n const status = response.success ? 200 : response.error?.includes(\"not found\") ? 404 : 500;\n return c.json(response, status);\n });\n}\n\nexport function registerLogRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.get(\"/logs\", async (c) => {\n const query = c.req.query();\n const options = {\n limit: query.limit ? Number(query.limit) : undefined,\n level: query.level as any,\n agentId: query.agentId,\n workflowId: query.workflowId,\n conversationId: query.conversationId,\n executionId: query.executionId,\n since: query.since,\n until: query.until,\n };\n\n const response = await handleGetLogs(options, deps, logger);\n if (!response.success) {\n return c.json(response, 500);\n }\n\n const mapped = mapLogResponse(response);\n return c.json(mapped, 200);\n });\n}\n\nexport function registerUpdateRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.get(UPDATE_ROUTES.checkUpdates.path, async (c) => {\n const response = await handleCheckUpdates(deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n\n app.post(UPDATE_ROUTES.installUpdates.path, async (c) => {\n const body = (await readJsonBody<{ packageName?: string }>(c, logger)) ?? {};\n const response = await handleInstallUpdates(body.packageName, deps, logger);\n return c.json(response, response.success ? 200 : 500);\n });\n}\n\nexport function registerObservabilityRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.post(OBSERVABILITY_ROUTES.setupObservability.path, (c) =>\n c.json(\n {\n success: false,\n error: \"Observability setup is not available in the serverless runtime.\",\n },\n 501,\n ),\n );\n\n app.get(OBSERVABILITY_ROUTES.getTraces.path, async (c) => {\n const query = c.req.query();\n logger.debug(\"[serverless] GET /observability/traces\", { query });\n const result = await getTracesHandler(deps, query);\n return c.json(result, result.success ? 200 : 500);\n });\n\n app.get(OBSERVABILITY_ROUTES.getTraceById.path, async (c) => {\n const traceId = c.req.param(\"traceId\");\n logger.debug(\"[serverless] GET /observability/traces/:traceId\", { traceId });\n const result = await getTraceByIdHandler(traceId, deps);\n return c.json(result, result.success ? 200 : 404);\n });\n\n app.get(OBSERVABILITY_ROUTES.getSpanById.path, async (c) => {\n const spanId = c.req.param(\"spanId\");\n logger.debug(\"[serverless] GET /observability/spans/:spanId\", { spanId });\n const result = await getSpanByIdHandler(spanId, deps);\n return c.json(result, result.success ? 200 : 404);\n });\n\n app.get(OBSERVABILITY_ROUTES.getObservabilityStatus.path, async (c) => {\n logger.debug(\"[serverless] GET /observability/status\");\n const result = await getObservabilityStatusHandler(deps);\n return c.json(result, result.success ? 200 : 500);\n });\n\n app.get(OBSERVABILITY_ROUTES.getLogsByTraceId.path, async (c) => {\n const traceId = c.req.param(\"traceId\");\n logger.debug(\"[serverless] GET /observability/traces/:traceId/logs\", { traceId });\n const result = await getLogsByTraceIdHandler(traceId, deps);\n return c.json(result, result.success ? 200 : 404);\n });\n\n app.get(OBSERVABILITY_ROUTES.getLogsBySpanId.path, async (c) => {\n const spanId = c.req.param(\"spanId\");\n logger.debug(\"[serverless] GET /observability/spans/:spanId/logs\", { spanId });\n const result = await getLogsBySpanIdHandler(spanId, deps);\n return c.json(result, result.success ? 200 : 404);\n });\n\n app.get(OBSERVABILITY_ROUTES.queryLogs.path, async (c) => {\n const query = c.req.query();\n logger.debug(\"[serverless] GET /observability/logs\", { query });\n const result = await queryLogsHandler(query, deps);\n return c.json(result, result.success ? 200 : 400);\n });\n\n app.get(OBSERVABILITY_MEMORY_ROUTES.listMemoryUsers.path, async (c) => {\n const query = c.req.query();\n logger.debug(\"[serverless] GET /observability/memory/users\", { query });\n const result = await listMemoryUsersHandler(deps, {\n agentId: query.agentId,\n limit: query.limit ? Number.parseInt(query.limit, 10) : undefined,\n offset: query.offset ? Number.parseInt(query.offset, 10) : undefined,\n search: query.search,\n });\n\n return c.json(result, result.success ? 200 : 500);\n });\n\n app.get(OBSERVABILITY_MEMORY_ROUTES.listMemoryConversations.path, async (c) => {\n const query = c.req.query();\n logger.debug(\"[serverless] GET /observability/memory/conversations\", { query });\n const result = await listMemoryConversationsHandler(deps, {\n agentId: query.agentId,\n userId: query.userId,\n limit: query.limit ? Number.parseInt(query.limit, 10) : undefined,\n offset: query.offset ? Number.parseInt(query.offset, 10) : undefined,\n orderBy: query.orderBy as \"created_at\" | \"updated_at\" | \"title\" | undefined,\n orderDirection: query.orderDirection as \"ASC\" | \"DESC\" | undefined,\n });\n\n return c.json(result, result.success ? 200 : 500);\n });\n\n app.get(OBSERVABILITY_MEMORY_ROUTES.getMemoryConversationMessages.path, async (c) => {\n const conversationId = c.req.param(\"conversationId\");\n const query = c.req.query();\n logger.debug(\n `[serverless] GET /observability/memory/conversations/${conversationId}/messages`,\n { query },\n );\n\n const before = query.before ? new Date(query.before) : undefined;\n const after = query.after ? new Date(query.after) : undefined;\n\n const result = await getConversationMessagesHandler(deps, conversationId, {\n agentId: query.agentId,\n limit: query.limit ? Number.parseInt(query.limit, 10) : undefined,\n before: before && !Number.isNaN(before.getTime()) ? before : undefined,\n after: after && !Number.isNaN(after.getTime()) ? after : undefined,\n roles: query.roles ? query.roles.split(\",\") : undefined,\n });\n\n if (!result.success) {\n return c.json(result, result.error === \"Conversation not found\" ? 404 : 500);\n }\n\n return c.json(result, 200);\n });\n\n app.get(OBSERVABILITY_MEMORY_ROUTES.getWorkingMemory.path, async (c) => {\n const query = c.req.query();\n logger.debug(\"[serverless] GET /observability/memory/working-memory\", { query });\n\n const scope =\n query.scope === \"user\" ? \"user\" : query.scope === \"conversation\" ? \"conversation\" : undefined;\n\n if (!scope) {\n return c.json(\n { success: false, error: \"Invalid scope. Expected 'conversation' or 'user'.\" },\n 400,\n );\n }\n\n const result = await getWorkingMemoryHandler(deps, {\n agentId: query.agentId,\n scope,\n conversationId: query.conversationId,\n userId: query.userId,\n });\n\n if (!result.success) {\n return c.json(result, result.error === \"Working memory not found\" ? 404 : 500);\n }\n\n return c.json(result, 200);\n });\n}\n\nexport function registerA2ARoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n const registry = deps.a2a?.registry as A2AServerRegistry<A2AServerLikeWithHandlers> | undefined;\n\n if (!registry) {\n logger.debug(\"A2A server registry not available on server deps; skipping A2A routes\");\n return;\n }\n\n app.get(A2A_ROUTES.agentCard.path, (c) => {\n const serverId = c.req.param(\"serverId\");\n if (!serverId) {\n return c.json({ success: false, error: \"Missing serverId parameter\" }, 400);\n }\n try {\n const card = resolveAgentCard(registry, serverId, serverId, {});\n return c.json(card, 200);\n } catch (error) {\n const status = error instanceof Error && error.message.includes(\"not found\") ? 404 : 400;\n return c.json(\n { success: false, error: error instanceof Error ? error.message : String(error) },\n status,\n );\n }\n });\n\n app.post(A2A_ROUTES.jsonRpc.path, async (c) => {\n const serverId = c.req.param(\"serverId\");\n if (!serverId) {\n return c.json(\n { jsonrpc: \"2.0\", error: { code: -32600, message: \"Missing serverId\" }, id: null },\n 400,\n );\n }\n type JsonRpcPayload = ReturnType<typeof parseJsonRpcRequest>;\n let request: JsonRpcPayload | undefined;\n let context: A2ARequestContext | undefined;\n\n try {\n const queryContext = c.req.query(\"context\") ?? c.req.query(\"runtimeContext\");\n if (queryContext) {\n const parsedQueryContext = parseJsonSafe<Record<string, unknown>>(queryContext, logger);\n context = mergeContexts(context, parseContextCandidate(parsedQueryContext));\n }\n\n const body = await readJsonBody<Record<string, unknown> | JsonRpcRequest | JsonRpcRequest[]>(\n c,\n logger,\n );\n if (!body) {\n return c.json(\n { jsonrpc: \"2.0\", error: { code: -32600, message: \"Invalid request\" }, id: null },\n 400,\n );\n }\n\n if (typeof (body as Record<string, unknown>).context !== \"undefined\") {\n const { context: bodyContext, ...rest } = body as Record<string, unknown>;\n context = mergeContexts(context, parseContextCandidate(bodyContext));\n request = parseJsonRpcRequest(rest as unknown);\n } else {\n request = parseJsonRpcRequest(body as unknown);\n }\n } catch (error) {\n return c.json(\n { jsonrpc: \"2.0\", error: { code: -32600, message: String(error) }, id: null },\n 400,\n );\n }\n\n const response = await executeA2ARequest({\n registry,\n serverId,\n request,\n context,\n logger,\n });\n\n if (\"kind\" in response && response.kind === \"stream\") {\n const { stream, id } = response;\n const encoder = new TextEncoder();\n const abortSignal = c.req.raw.signal;\n let abortListener: (() => void) | undefined;\n let cleanedUp = false;\n\n const cleanup = async () => {\n if (abortSignal && abortListener) {\n abortSignal.removeEventListener(\"abort\", abortListener);\n abortListener = undefined;\n }\n if (!cleanedUp && typeof stream.return === \"function\") {\n cleanedUp = true;\n try {\n await stream.return(undefined as any);\n } catch {\n // ignore completion errors\n }\n }\n };\n\n const sseStream = new ReadableStream<Uint8Array>({\n async start(controller) {\n if (abortSignal) {\n if (abortSignal.aborted) {\n await cleanup();\n controller.close();\n return;\n }\n\n abortListener = () => {\n controller.close();\n void cleanup();\n };\n\n abortSignal.addEventListener(\"abort\", abortListener, { once: true });\n }\n\n try {\n for await (const chunk of stream) {\n const payload = safeStringify(chunk);\n controller.enqueue(encoder.encode(`data: \\u001E${payload}\\n\\n`));\n }\n } catch (error) {\n const payload = safeStringify({\n jsonrpc: \"2.0\",\n error: { code: -32603, message: String(error) },\n id,\n });\n controller.enqueue(encoder.encode(`data: \\u001E${payload}\\n\\n`));\n } finally {\n await cleanup();\n controller.close();\n }\n },\n async cancel() {\n await cleanup();\n },\n });\n\n return new Response(sseStream, {\n status: 200,\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n \"X-Accel-Buffering\": \"no\",\n },\n });\n }\n\n const jsonResponse = response as JsonRpcResponse;\n return c.json(jsonResponse, jsonResponse.error ? 400 : 200);\n });\n}\n","import type { ServerlessRuntime } from \"../types\";\n\nexport function detectServerlessRuntime(): ServerlessRuntime {\n // @ts-ignore - Cloudflare Workers expose globalThis.Deno but with specific flags\n if (typeof globalThis.Deno !== \"undefined\") {\n return \"deno\";\n }\n\n // @ts-ignore - Vercel Edge Runtime sets EdgeRuntime global\n if (typeof globalThis.EdgeRuntime !== \"undefined\") {\n return \"vercel\";\n }\n\n // @ts-ignore - Cloudflare Workers include navigator.userAgent\n if (globalThis.navigator?.userAgent?.includes(\"Cloudflare\")) {\n return \"cloudflare\";\n }\n\n return \"unknown\";\n}\n","type VoltAgentGlobal = typeof globalThis & {\n ___voltagent_wait_until?: (promise: Promise<unknown>) => void;\n};\n\n/**\n * Context that may contain a waitUntil function\n */\nexport interface WaitUntilContext {\n waitUntil?: (promise: Promise<unknown>) => void;\n}\n\n/**\n * Extracts waitUntil from context and sets it as global for observability\n * Returns a cleanup function to restore previous state\n *\n * @param context - Context object that may contain waitUntil\n * @returns Cleanup function to restore previous state\n *\n * @example\n * ```ts\n * const cleanup = withWaitUntil(executionCtx);\n * try {\n * return await processRequest(request);\n * } finally {\n * cleanup();\n * }\n * ```\n */\nexport function withWaitUntil(context?: WaitUntilContext | null): () => void {\n const globals = globalThis as VoltAgentGlobal;\n const previousWaitUntil = globals.___voltagent_wait_until;\n\n const waitUntil = context?.waitUntil;\n\n if (waitUntil && typeof waitUntil === \"function\") {\n globals.___voltagent_wait_until = (promise) => {\n try {\n waitUntil(promise);\n } catch {\n // Silently fail if waitUntil throws\n void promise;\n }\n };\n }\n\n // Return cleanup function\n return () => {\n if (waitUntil) {\n if (previousWaitUntil) {\n globals.___voltagent_wait_until = previousWaitUntil;\n } else {\n globals.___voltagent_wait_until = undefined;\n }\n }\n };\n}\n","import type { IServerlessProvider, ServerProviderDeps } from \"@voltagent/core\";\nimport type { Hono } from \"hono\";\nimport { createServerlessApp } from \"./app-factory\";\nimport type { ServerlessConfig, ServerlessRuntime } from \"./types\";\nimport { detectServerlessRuntime } from \"./utils/runtime-detection\";\nimport { withWaitUntil } from \"./utils/wait-until-wrapper\";\nexport class HonoServerlessProvider implements IServerlessProvider {\n private readonly deps: ServerProviderDeps;\n private readonly config?: ServerlessConfig;\n private readonly appPromise: Promise<Hono>;\n\n constructor(deps: ServerProviderDeps, config?: ServerlessConfig) {\n this.deps = deps;\n this.config = config;\n this.appPromise = this.initializeApp();\n }\n\n private async initializeApp(): Promise<Hono> {\n return createServerlessApp(this.deps, this.config);\n }\n\n private async getApp(): Promise<Hono> {\n return this.appPromise;\n }\n\n private async ensureEnvironmentTarget(target?: Record<string, unknown>): Promise<void> {\n if (this.deps.ensureEnvironment) {\n await Promise.resolve(this.deps.ensureEnvironment(target));\n }\n }\n\n async handleRequest(request: Request): Promise<Response> {\n await this.ensureEnvironmentTarget();\n const app = await this.getApp();\n return app.fetch(request);\n }\n\n toCloudflareWorker() {\n return {\n fetch: async (\n request: Request,\n env: Record<string, unknown>,\n executionCtx: unknown,\n ): Promise<Response> => {\n const cleanup = withWaitUntil(executionCtx as any);\n\n try {\n await this.ensureEnvironmentTarget(env);\n const app = await this.getApp();\n return await app.fetch(request, env as Record<string, unknown>, executionCtx as any);\n } finally {\n cleanup();\n }\n },\n };\n }\n\n toVercelEdge(): (request: Request, context?: unknown) => Promise<Response> {\n return async (request: Request, context?: unknown) => {\n const cleanup = withWaitUntil(context as any);\n\n try {\n await this.ensureEnvironmentTarget(context as Record<string, unknown> | undefined);\n const app = await this.getApp();\n return await app.fetch(request, context as Record<string, unknown> | undefined);\n } finally {\n cleanup();\n }\n };\n }\n\n toDeno(): (request: Request, info?: unknown) => Promise<Response> {\n return async (request: Request, info?: unknown) => {\n const cleanup = withWaitUntil(info as any);\n\n try {\n await this.ensureEnvironmentTarget(info as Record<string, unknown> | undefined);\n const app = await this.getApp();\n return await app.fetch(request, info as Record<string, unknown> | undefined);\n } finally {\n cleanup();\n }\n };\n }\n\n auto():\n | { fetch: (req: Request, env: Record<string, unknown>, ctx: unknown) => Promise<Response> }\n | ((req: Request, ctx?: unknown) => Promise<Response>) {\n const runtime: ServerlessRuntime = detectServerlessRuntime();\n\n switch (runtime) {\n case \"cloudflare\":\n return this.toCloudflareWorker();\n case \"vercel\":\n return this.toVercelEdge();\n case \"deno\":\n return this.toDeno();\n default:\n return this.toCloudflareWorker();\n }\n }\n}\n","import { Buffer } from \"node:buffer\";\nimport type { VoltAgent } from \"@voltagent/core\";\n\ninterface NetlifyFunctionEvent {\n httpMethod?: string;\n headers?: Record<string, string | undefined>;\n multiValueHeaders?: Record<string, (string | undefined)[] | undefined>;\n rawUrl?: string;\n rawQuery?: string;\n rawPath?: string;\n path?: string;\n body?: string | null;\n isBase64Encoded?: boolean;\n}\n\ninterface NetlifyFunctionResult {\n statusCode: number;\n headers?: Record<string, string>;\n multiValueHeaders?: Record<string, string[]>;\n body: string;\n isBase64Encoded: boolean;\n}\n\ntype NetlifyFunctionHandler = (\n event: NetlifyFunctionEvent,\n context: unknown,\n) => Promise<NetlifyFunctionResult>;\n\nconst TEXT_BODY_METHODS = new Set([\"GET\", \"HEAD\"]);\n\nfunction buildUrl(event: NetlifyFunctionEvent): string {\n const scheme = event.headers?.[\"x-forwarded-proto\"] || \"https\";\n const host = event.headers?.host || \"localhost\";\n const path = event.rawPath || event.path || \"/\";\n const query = event.rawQuery ? `?${event.rawQuery}` : \"\";\n return `${scheme}://${host}${path}${query}`;\n}\n\nfunction createRequest(event: NetlifyFunctionEvent): Request {\n const method = (event.httpMethod || \"GET\").toUpperCase();\n const headers = new Headers();\n\n if (event.multiValueHeaders) {\n for (const [key, values] of Object.entries(event.multiValueHeaders)) {\n if (!values) continue;\n for (const value of values) {\n if (value !== undefined) {\n headers.append(key, value);\n }\n }\n }\n }\n\n if (event.headers) {\n for (const [key, value] of Object.entries(event.headers)) {\n if (value !== undefined) {\n headers.set(key, value);\n }\n }\n }\n\n const url = event.rawUrl || buildUrl(event);\n\n const init: Record<string, unknown> = { method, headers };\n\n if (!TEXT_BODY_METHODS.has(method) && event.body) {\n init.body = event.isBase64Encoded ? Buffer.from(event.body, \"base64\") : event.body;\n }\n\n return new Request(url, init as RequestInit);\n}\n\nfunction toNetlifyResponse(response: Response): Promise<NetlifyFunctionResult> {\n const single: Record<string, string> = {};\n const multi: Record<string, string[]> = {};\n\n response.headers.forEach((value, key) => {\n if (single[key]) {\n multi[key] = [single[key], value];\n delete single[key];\n } else if (multi[key]) {\n multi[key].push(value);\n } else {\n single[key] = value;\n }\n });\n\n return response.arrayBuffer().then((buffer) => ({\n statusCode: response.status,\n headers: Object.keys(single).length > 0 ? single : undefined,\n multiValueHeaders: Object.keys(multi).length > 0 ? multi : undefined,\n body: Buffer.from(buffer).toString(\"base64\"),\n isBase64Encoded: true,\n }));\n}\n\nexport function createNetlifyFunctionHandler(voltAgent: VoltAgent): NetlifyFunctionHandler {\n const provider = voltAgent.serverless();\n\n return async (event) => {\n const request = createRequest(event);\n const response = await provider.handleRequest(request);\n return toNetlifyResponse(response);\n };\n}\n\nexport type { NetlifyFunctionHandler, NetlifyFunctionEvent, NetlifyFunctionResult };\n","import type { ServerProviderDeps } from \"@voltagent/core\";\nimport { HonoServerlessProvider } from \"./serverless-provider\";\nimport type { ServerlessConfig } from \"./types\";\n\nexport function serverlessHono(config?: ServerlessConfig) {\n return (deps: ServerProviderDeps) => new HonoServerlessProvider(deps, config);\n}\n\nexport { HonoServerlessProvider } from \"./serverless-provider\";\nexport type { ServerlessConfig, ServerlessRuntime } from \"./types\";\nexport { detectServerlessRuntime } from \"./utils/runtime-detection\";\nexport {\n createNetlifyFunctionHandler,\n type NetlifyFunctionEvent,\n type NetlifyFunctionHandler,\n type NetlifyFunctionResult,\n} from \"./netlify-function\";\nexport default serverlessHono;\n"],"mappings":";AAEA,SAAS,yBAAyB;AAClC,SAAS,YAAY;AACrB,SAAS,YAAY;;;ACFrB,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,cAAiB,KAAa,QAA+B;AACpE,MAAI;AACF,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,SAAS,OAAO;AACd,WAAO,KAAK,gCAAgC,EAAE,MAAM,CAAC;AACrD,WAAO;AAAA,EACT;AACF;AAEA,eAAe,aAAgB,GAAQ,QAAwC;AAC7E,MAAI;AACF,WAAQ,MAAM,EAAE,IAAI,KAAK;AAAA,EAC3B,SAAS,OAAO;AACd,WAAO,KAAK,8BAA8B,EAAE,OAAO,MAAM,EAAE,IAAI,KAAK,CAAC;AACrE,WAAO;AAAA,EACT;AACF;AAEA,SAAS,sBAAsB,WAAmD;AAChF,MAAI,CAAC,aAAa,OAAO,cAAc,YAAY,MAAM,QAAQ,SAAS,GAAG;AAC3E,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,QAAQ,WAAW,SAAS,IAAI;AACxC,QAAM,UAA6B,CAAC;AAEpC,MAAI,OAAO,WAAW,UAAU;AAC9B,YAAQ,SAAS;AAAA,EACnB;AAEA,MAAI,OAAO,cAAc,UAAU;AACjC,YAAQ,YAAY;AAAA,EACtB;AAEA,MAAI,YAAY,OAAO,aAAa,YAAY,CAAC,MAAM,QAAQ,QAAQ,GAAG;AACxE,YAAQ,WAAW;AAAA,EACrB;AAEA,SAAO,OAAO,KAAK,OAAO,EAAE,SAAS,IAAI,UAAU;AACrD;AAEA,SAAS,cACP,MACA,MAC+B;AAC/B,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,SAA4B;AAAA,IAChC,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,MAAI,KAAK,YAAY,KAAK,UAAU;AAClC,WAAO,WAAW;AAAA,MAChB,GAAI,KAAK,YAAY,CAAC;AAAA,MACtB,GAAI,KAAK,YAAY,CAAC;AAAA,IACxB;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,oBAAoB,KAAW,MAA0B,QAAgB;AACvF,MAAI,IAAI,aAAa,WAAW,MAAM,OAAO,MAAM;AACjD,UAAM,WAAW,MAAM,gBAAgB,MAAM,MAAM;AACnD,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AAED,MAAI,IAAI,aAAa,SAAS,MAAM,OAAO,MAAM;AAC/C,UAAM,UAAU,EAAE,IAAI,MAAM,IAAI;AAChC,UAAM,WAAW,MAAM,eAAe,SAAS,MAAM,MAAM;AAC3D,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AAED,MAAI,KAAK,aAAa,aAAa,MAAM,OAAO,MAAM;AACpD,UAAM,UAAU,EAAE,IAAI,MAAM,IAAI;AAChC,UAAM,OAAO,MAAM,aAAa,GAAG,MAAM;AACzC,QAAI,CAAC,MAAM;AACT,aAAO,EAAE,KAAK,EAAE,SAAS,OAAO,OAAO,oBAAoB,GAAG,GAAG;AAAA,IACnE;AACA,UAAM,SAAS,EAAE,IAAI,IAAI;AACzB,UAAM,WAAW,MAAM,mBAAmB,SAAS,MAAM,MAAM,QAAQ,MAAM;AAC7E,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AAED,MAAI,KAAK,aAAa,WAAW,MAAM,OAAO,MAAM;AAClD,UAAM,UAAU,EAAE,IAAI,MAAM,IAAI;AAChC,UAAM,OAAO,MAAM,aAAa,GAAG,MAAM;AACzC,QAAI,CAAC,MAAM;AACT,aAAO,EAAE,KAAK,EAAE,OAAO,oBAAoB,GAAG,GAAG;AAAA,IACnD;AACA,UAAM,SAAS,EAAE,IAAI,IAAI;AACzB,UAAM,WAAW,MAAM,iBAAiB,SAAS,MAAM,MAAM,QAAQ,MAAM;AAC3E,WAAO;AAAA,EACT,CAAC;AAED,MAAI,KAAK,aAAa,WAAW,MAAM,OAAO,MAAM;AAClD,UAAM,UAAU,EAAE,IAAI,MAAM,IAAI;AAChC,UAAM,OAAO,MAAM,aAAa,GAAG,MAAM;AACzC,QAAI,CAAC,MAAM;AACT,aAAO,EAAE,KAAK,EAAE,OAAO,oBAAoB,GAAG,GAAG;AAAA,IACnD;AACA,UAAM,SAAS,EAAE,IAAI,IAAI;AACzB,WAAO,iBAAiB,SAAS,MAAM,MAAM,QAAQ,MAAM;AAAA,EAC7D,CAAC;AAED,MAAI,KAAK,aAAa,eAAe,MAAM,OAAO,MAAM;AACtD,UAAM,UAAU,EAAE,IAAI,MAAM,IAAI;AAChC,UAAM,OAAO,MAAM,aAAa,GAAG,MAAM;AACzC,QAAI,CAAC,MAAM;AACT,aAAO,EAAE,KAAK,EAAE,SAAS,OAAO,OAAO,oBAAoB,GAAG,GAAG;AAAA,IACnE;AACA,UAAM,SAAS,EAAE,IAAI,IAAI;AACzB,UAAM,WAAW,MAAM,qBAAqB,SAAS,MAAM,MAAM,QAAQ,MAAM;AAC/E,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AAED,MAAI,KAAK,aAAa,aAAa,MAAM,OAAO,MAAM;AACpD,UAAM,UAAU,EAAE,IAAI,MAAM,IAAI;AAChC,UAAM,OAAO,MAAM,aAAa,GAAG,MAAM;AACzC,QAAI,CAAC,MAAM;AACT,aAAO,EAAE,KAAK,EAAE,OAAO,oBAAoB,GAAG,GAAG;AAAA,IACnD;AACA,UAAM,SAAS,EAAE,IAAI,IAAI;AACzB,WAAO,mBAAmB,SAAS,MAAM,MAAM,QAAQ,MAAM;AAAA,EAC/D,CAAC;AAED,MAAI,IAAI,aAAa,gBAAgB,MAAM,OAAO,MAAM;AACtD,UAAM,UAAU,EAAE,IAAI,MAAM,IAAI;AAChC,UAAM,OAAO,OAAO,SAAS,EAAE,IAAI,MAAM,MAAM,KAAK,KAAK,EAAE;AAC3D,UAAM,QAAQ,OAAO,SAAS,EAAE,IAAI,MAAM,OAAO,KAAK,MAAM,EAAE;AAC9D,UAAM,WAAW,MAAM,sBAAsB,SAAS,MAAM,OAAO,MAAM,MAAM;AAC/E,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AACH;AAEO,SAAS,uBAAuB,KAAW,MAA0B,QAAgB;AAC1F,MAAI,IAAI,gBAAgB,cAAc,MAAM,OAAO,MAAM;AACvD,UAAM,WAAW,MAAM,mBAAmB,MAAM,MAAM;AACtD,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AAED,MAAI,IAAI,gBAAgB,YAAY,MAAM,OAAO,MAAM;AACrD,UAAM,aAAa,EAAE,IAAI,MAAM,IAAI;AACnC,UAAM,WAAW,MAAM,kBAAkB,YAAY,MAAM,MAAM;AACjE,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AAED,MAAI,KAAK,gBAAgB,gBAAgB,MAAM,OAAO,MAAM;AAC1D,UAAM,aAAa,EAAE,IAAI,MAAM,IAAI;AACnC,UAAM,OAAO,MAAM,aAAa,GAAG,MAAM;AACzC,QAAI,CAAC,MAAM;AACT,aAAO,EAAE,KAAK,EAAE,SAAS,OAAO,OAAO,oBAAoB,GAAG,GAAG;AAAA,IACnE;AACA,UAAM,WAAW,MAAM,sBAAsB,YAAY,MAAM,MAAM,MAAM;AAC3E,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AAED,MAAI,KAAK,gBAAgB,eAAe,MAAM,OAAO,MAAM;AACzD,UAAM,aAAa,EAAE,IAAI,MAAM,IAAI;AACnC,UAAM,OAAO,MAAM,aAAa,GAAG,MAAM;AACzC,QAAI,CAAC,MAAM;AACT,aAAO,EAAE,KAAK,EAAE,OAAO,oBAAoB,GAAG,GAAG;AAAA,IACnD;AAEA,UAAM,WAAW,MAAM,qBAAqB,YAAY,MAAM,MAAM,MAAM;AAE1E,QAAI,gBAAgB,QAAQ,GAAG;AAC7B,aAAO,EAAE,KAAK,UAAU,GAAG;AAAA,IAC7B;AAEA,WAAO,EAAE,KAAK,UAAU,KAAK;AAAA,MAC3B,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC;AAED,MAAI,KAAK,gBAAgB,gBAAgB,MAAM,OAAO,MAAM;AAC1D,UAAM,cAAc,EAAE,IAAI,MAAM,aAAa;AAC7C,UAAM,OAAO,MAAM,aAAa,GAAG,MAAM;AACzC,QAAI,CAAC,MAAM;AACT,aAAO,EAAE,KAAK,EAAE,SAAS,OAAO,OAAO,oBAAoB,GAAG,GAAG;AAAA,IACnE;AACA,UAAM,WAAW,MAAM,sBAAsB,aAAa,MAAM,MAAM,MAAM;AAC5E,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AAED,MAAI,KAAK,gBAAgB,eAAe,MAAM,OAAO,MAAM;AACzD,UAAM,aAAa,EAAE,IAAI,MAAM,IAAI;AACnC,UAAM,cAAc,EAAE,IAAI,MAAM,aAAa;AAC7C,UAAM,OAAO,MAAM,aAAa,GAAG,MAAM;AACzC,QAAI,CAAC,MAAM;AACT,aAAO,EAAE,KAAK,EAAE,SAAS,OAAO,OAAO,oBAAoB,GAAG,GAAG;AAAA,IACnE;AACA,UAAM,WAAW,MAAM,qBAAqB,YAAY,aAAa,MAAM,MAAM,MAAM;AACvF,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AAED,MAAI,IAAI,gBAAgB,iBAAiB,MAAM,OAAO,MAAM;AAC1D,UAAM,aAAa,EAAE,IAAI,MAAM,IAAI;AACnC,UAAM,cAAc,EAAE,IAAI,MAAM,aAAa;AAC7C,UAAM,WAAW,MAAM,uBAAuB,YAAY,aAAa,MAAM,MAAM;AACnF,UAAM,SAAS,SAAS,UAAU,MAAM,SAAS,OAAO,SAAS,WAAW,IAAI,MAAM;AACtF,WAAO,EAAE,KAAK,UAAU,MAAM;AAAA,EAChC,CAAC;AACH;AAEO,SAAS,kBAAkB,KAAW,MAA0B,QAAgB;AACrF,MAAI,IAAI,SAAS,OAAO,MAAM;AAC5B,UAAM,QAAQ,EAAE,IAAI,MAAM;AAC1B,UAAM,UAAU;AAAA,MACd,OAAO,MAAM,QAAQ,OAAO,MAAM,KAAK,IAAI;AAAA,MAC3C,OAAO,MAAM;AAAA,MACb,SAAS,MAAM;AAAA,MACf,YAAY,MAAM;AAAA,MAClB,gBAAgB,MAAM;AAAA,MACtB,aAAa,MAAM;AAAA,MACnB,OAAO,MAAM;AAAA,MACb,OAAO,MAAM;AAAA,IACf;AAEA,UAAM,WAAW,MAAM,cAAc,SAAS,MAAM,MAAM;AAC1D,QAAI,CAAC,SAAS,SAAS;AACrB,aAAO,EAAE,KAAK,UAAU,GAAG;AAAA,IAC7B;AAEA,UAAM,SAAS,eAAe,QAAQ;AACtC,WAAO,EAAE,KAAK,QAAQ,GAAG;AAAA,EAC3B,CAAC;AACH;AAEO,SAAS,qBAAqB,KAAW,MAA0B,QAAgB;AACxF,MAAI,IAAI,cAAc,aAAa,MAAM,OAAO,MAAM;AACpD,UAAM,WAAW,MAAM,mBAAmB,MAAM,MAAM;AACtD,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AAED,MAAI,KAAK,cAAc,eAAe,MAAM,OAAO,MAAM;AACvD,UAAM,OAAQ,MAAM,aAAuC,GAAG,MAAM,KAAM,CAAC;AAC3E,UAAM,WAAW,MAAM,qBAAqB,KAAK,aAAa,MAAM,MAAM;AAC1E,WAAO,EAAE,KAAK,UAAU,SAAS,UAAU,MAAM,GAAG;AAAA,EACtD,CAAC;AACH;AAEO,SAAS,4BAA4B,KAAW,MAA0B,QAAgB;AAC/F,MAAI;AAAA,IAAK,qBAAqB,mBAAmB;AAAA,IAAM,CAAC,MACtD,EAAE;AAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,IAAI,qBAAqB,UAAU,MAAM,OAAO,MAAM;AACxD,UAAM,QAAQ,EAAE,IAAI,MAAM;AAC1B,WAAO,MAAM,0CAA0C,EAAE,MAAM,CAAC;AAChE,UAAM,SAAS,MAAM,iBAAiB,MAAM,KAAK;AACjD,WAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG;AAAA,EAClD,CAAC;AAED,MAAI,IAAI,qBAAqB,aAAa,MAAM,OAAO,MAAM;AAC3D,UAAM,UAAU,EAAE,IAAI,MAAM,SAAS;AACrC,WAAO,MAAM,mDAAmD,EAAE,QAAQ,CAAC;AAC3E,UAAM,SAAS,MAAM,oBAAoB,SAAS,IAAI;AACtD,WAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG;AAAA,EAClD,CAAC;AAED,MAAI,IAAI,qBAAqB,YAAY,MAAM,OAAO,MAAM;AAC1D,UAAM,SAAS,EAAE,IAAI,MAAM,QAAQ;AACnC,WAAO,MAAM,iDAAiD,EAAE,OAAO,CAAC;AACxE,UAAM,SAAS,MAAM,mBAAmB,QAAQ,IAAI;AACpD,WAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG;AAAA,EAClD,CAAC;AAED,MAAI,IAAI,qBAAqB,uBAAuB,MAAM,OAAO,MAAM;AACrE,WAAO,MAAM,wCAAwC;AACrD,UAAM,SAAS,MAAM,8BAA8B,IAAI;AACvD,WAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG;AAAA,EAClD,CAAC;AAED,MAAI,IAAI,qBAAqB,iBAAiB,MAAM,OAAO,MAAM;AAC/D,UAAM,UAAU,EAAE,IAAI,MAAM,SAAS;AACrC,WAAO,MAAM,wDAAwD,EAAE,QAAQ,CAAC;AAChF,UAAM,SAAS,MAAM,wBAAwB,SAAS,IAAI;AAC1D,WAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG;AAAA,EAClD,CAAC;AAED,MAAI,IAAI,qBAAqB,gBAAgB,MAAM,OAAO,MAAM;AAC9D,UAAM,SAAS,EAAE,IAAI,MAAM,QAAQ;AACnC,WAAO,MAAM,sDAAsD,EAAE,OAAO,CAAC;AAC7E,UAAM,SAAS,MAAM,uBAAuB,QAAQ,IAAI;AACxD,WAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG;AAAA,EAClD,CAAC;AAED,MAAI,IAAI,qBAAqB,UAAU,MAAM,OAAO,MAAM;AACxD,UAAM,QAAQ,EAAE,IAAI,MAAM;AAC1B,WAAO,MAAM,wCAAwC,EAAE,MAAM,CAAC;AAC9D,UAAM,SAAS,MAAM,iBAAiB,OAAO,IAAI;AACjD,WAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG;AAAA,EAClD,CAAC;AAED,MAAI,IAAI,4BAA4B,gBAAgB,MAAM,OAAO,MAAM;AACrE,UAAM,QAAQ,EAAE,IAAI,MAAM;AAC1B,WAAO,MAAM,gDAAgD,EAAE,MAAM,CAAC;AACtE,UAAM,SAAS,MAAM,uBAAuB,MAAM;AAAA,MAChD,SAAS,MAAM;AAAA,MACf,OAAO,MAAM,QAAQ,OAAO,SAAS,MAAM,OAAO,EAAE,IAAI;AAAA,MACxD,QAAQ,MAAM,SAAS,OAAO,SAAS,MAAM,QAAQ,EAAE,IAAI;AAAA,MAC3D,QAAQ,MAAM;AAAA,IAChB,CAAC;AAED,WAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG;AAAA,EAClD,CAAC;AAED,MAAI,IAAI,4BAA4B,wBAAwB,MAAM,OAAO,MAAM;AAC7E,UAAM,QAAQ,EAAE,IAAI,MAAM;AAC1B,WAAO,MAAM,wDAAwD,EAAE,MAAM,CAAC;AAC9E,UAAM,SAAS,MAAM,+BAA+B,MAAM;AAAA,MACxD,SAAS,MAAM;AAAA,MACf,QAAQ,MAAM;AAAA,MACd,OAAO,MAAM,QAAQ,OAAO,SAAS,MAAM,OAAO,EAAE,IAAI;AAAA,MACxD,QAAQ,MAAM,SAAS,OAAO,SAAS,MAAM,QAAQ,EAAE,IAAI;AAAA,MAC3D,SAAS,MAAM;AAAA,MACf,gBAAgB,MAAM;AAAA,IACxB,CAAC;AAED,WAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,MAAM,GAAG;AAAA,EAClD,CAAC;AAED,MAAI,IAAI,4BAA4B,8BAA8B,MAAM,OAAO,MAAM;AACnF,UAAM,iBAAiB,EAAE,IAAI,MAAM,gBAAgB;AACnD,UAAM,QAAQ,EAAE,IAAI,MAAM;AAC1B,WAAO;AAAA,MACL,wDAAwD,cAAc;AAAA,MACtE,EAAE,MAAM;AAAA,IACV;AAEA,UAAM,SAAS,MAAM,SAAS,IAAI,KAAK,MAAM,MAAM,IAAI;AACvD,UAAM,QAAQ,MAAM,QAAQ,IAAI,KAAK,MAAM,KAAK,IAAI;AAEpD,UAAM,SAAS,MAAM,+BAA+B,MAAM,gBAAgB;AAAA,MACxE,SAAS,MAAM;AAAA,MACf,OAAO,MAAM,QAAQ,OAAO,SAAS,MAAM,OAAO,EAAE,IAAI;AAAA,MACxD,QAAQ,UAAU,CAAC,OAAO,MAAM,OAAO,QAAQ,CAAC,IAAI,SAAS;AAAA,MAC7D,OAAO,SAAS,CAAC,OAAO,MAAM,MAAM,QAAQ,CAAC,IAAI,QAAQ;AAAA,MACzD,OAAO,MAAM,QAAQ,MAAM,MAAM,MAAM,GAAG,IAAI;AAAA,IAChD,CAAC;AAED,QAAI,CAAC,OAAO,SAAS;AACnB,aAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,2BAA2B,MAAM,GAAG;AAAA,IAC7E;AAEA,WAAO,EAAE,KAAK,QAAQ,GAAG;AAAA,EAC3B,CAAC;AAED,MAAI,IAAI,4BAA4B,iBAAiB,MAAM,OAAO,MAAM;AACtE,UAAM,QAAQ,EAAE,IAAI,MAAM;AAC1B,WAAO,MAAM,yDAAyD,EAAE,MAAM,CAAC;AAE/E,UAAM,QACJ,MAAM,UAAU,SAAS,SAAS,MAAM,UAAU,iBAAiB,iBAAiB;AAEtF,QAAI,CAAC,OAAO;AACV,aAAO,EAAE;AAAA,QACP,EAAE,SAAS,OAAO,OAAO,oDAAoD;AAAA,QAC7E;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAAS,MAAM,wBAAwB,MAAM;AAAA,MACjD,SAAS,MAAM;AAAA,MACf;AAAA,MACA,gBAAgB,MAAM;AAAA,MACtB,QAAQ,MAAM;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,OAAO,SAAS;AACnB,aAAO,EAAE,KAAK,QAAQ,OAAO,UAAU,6BAA6B,MAAM,GAAG;AAAA,IAC/E;AAEA,WAAO,EAAE,KAAK,QAAQ,GAAG;AAAA,EAC3B,CAAC;AACH;AAEO,SAAS,kBAAkB,KAAW,MAA0B,QAAgB;AACrF,QAAM,WAAW,KAAK,KAAK;AAE3B,MAAI,CAAC,UAAU;AACb,WAAO,MAAM,uEAAuE;AACpF;AAAA,EACF;AAEA,MAAI,IAAI,WAAW,UAAU,MAAM,CAAC,MAAM;AACxC,UAAM,WAAW,EAAE,IAAI,MAAM,UAAU;AACvC,QAAI,CAAC,UAAU;AACb,aAAO,EAAE,KAAK,EAAE,SAAS,OAAO,OAAO,6BAA6B,GAAG,GAAG;AAAA,IAC5E;AACA,QAAI;AACF,YAAM,OAAO,iBAAiB,UAAU,UAAU,UAAU,CAAC,CAAC;AAC9D,aAAO,EAAE,KAAK,MAAM,GAAG;AAAA,IACzB,SAAS,OAAO;AACd,YAAM,SAAS,iBAAiB,SAAS,MAAM,QAAQ,SAAS,WAAW,IAAI,MAAM;AACrF,aAAO,EAAE;AAAA,QACP,EAAE,SAAS,OAAO,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE;AAAA,QAChF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,MAAI,KAAK,WAAW,QAAQ,MAAM,OAAO,MAAM;AAC7C,UAAM,WAAW,EAAE,IAAI,MAAM,UAAU;AACvC,QAAI,CAAC,UAAU;AACb,aAAO,EAAE;AAAA,QACP,EAAE,SAAS,OAAO,OAAO,EAAE,MAAM,QAAQ,SAAS,mBAAmB,GAAG,IAAI,KAAK;AAAA,QACjF;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACJ,QAAI;AAEJ,QAAI;AACF,YAAM,eAAe,EAAE,IAAI,MAAM,SAAS,KAAK,EAAE,IAAI,MAAM,gBAAgB;AAC3E,UAAI,cAAc;AAChB,cAAM,qBAAqB,cAAuC,cAAc,MAAM;AACtF,kBAAU,cAAc,SAAS,sBAAsB,kBAAkB,CAAC;AAAA,MAC5E;AAEA,YAAM,OAAO,MAAM;AAAA,QACjB;AAAA,QACA;AAAA,MACF;AACA,UAAI,CAAC,MAAM;AACT,eAAO,EAAE;AAAA,UACP,EAAE,SAAS,OAAO,OAAO,EAAE,MAAM,QAAQ,SAAS,kBAAkB,GAAG,IAAI,KAAK;AAAA,UAChF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,OAAQ,KAAiC,YAAY,aAAa;AACpE,cAAM,EAAE,SAAS,aAAa,GAAG,KAAK,IAAI;AAC1C,kBAAU,cAAc,SAAS,sBAAsB,WAAW,CAAC;AACnE,kBAAU,oBAAoB,IAAe;AAAA,MAC/C,OAAO;AACL,kBAAU,oBAAoB,IAAe;AAAA,MAC/C;AAAA,IACF,SAAS,OAAO;AACd,aAAO,EAAE;AAAA,QACP,EAAE,SAAS,OAAO,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAO,KAAK,EAAE,GAAG,IAAI,KAAK;AAAA,QAC5E;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,kBAAkB;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,QAAI,UAAU,YAAY,SAAS,SAAS,UAAU;AACpD,YAAM,EAAE,QAAQ,GAAG,IAAI;AACvB,YAAM,UAAU,IAAI,YAAY;AAChC,YAAM,cAAc,EAAE,IAAI,IAAI;AAC9B,UAAI;AACJ,UAAI,YAAY;AAEhB,YAAM,UAAU,YAAY;AAC1B,YAAI,eAAe,eAAe;AAChC,sBAAY,oBAAoB,SAAS,aAAa;AACtD,0BAAgB;AAAA,QAClB;AACA,YAAI,CAAC,aAAa,OAAO,OAAO,WAAW,YAAY;AACrD,sBAAY;AACZ,cAAI;AACF,kBAAM,OAAO,OAAO,MAAgB;AAAA,UACtC,QAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AAEA,YAAM,YAAY,IAAI,eAA2B;AAAA,QAC/C,MAAM,MAAM,YAAY;AACtB,cAAI,aAAa;AACf,gBAAI,YAAY,SAAS;AACvB,oBAAM,QAAQ;AACd,yBAAW,MAAM;AACjB;AAAA,YACF;AAEA,4BAAgB,MAAM;AACpB,yBAAW,MAAM;AACjB,mBAAK,QAAQ;AAAA,YACf;AAEA,wBAAY,iBAAiB,SAAS,eAAe,EAAE,MAAM,KAAK,CAAC;AAAA,UACrE;AAEA,cAAI;AACF,6BAAiB,SAAS,QAAQ;AAChC,oBAAM,UAAU,cAAc,KAAK;AACnC,yBAAW,QAAQ,QAAQ,OAAO,UAAe,OAAO;AAAA;AAAA,CAAM,CAAC;AAAA,YACjE;AAAA,UACF,SAAS,OAAO;AACd,kBAAM,UAAU,cAAc;AAAA,cAC5B,SAAS;AAAA,cACT,OAAO,EAAE,MAAM,QAAQ,SAAS,OAAO,KAAK,EAAE;AAAA,cAC9C;AAAA,YACF,CAAC;AACD,uBAAW,QAAQ,QAAQ,OAAO,UAAe,OAAO;AAAA;AAAA,CAAM,CAAC;AAAA,UACjE,UAAE;AACA,kBAAM,QAAQ;AACd,uBAAW,MAAM;AAAA,UACnB;AAAA,QACF;AAAA,QACA,MAAM,SAAS;AACb,gBAAM,QAAQ;AAAA,QAChB;AAAA,MACF,CAAC;AAED,aAAO,IAAI,SAAS,WAAW;AAAA,QAC7B,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,YAAY;AAAA,UACZ,qBAAqB;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,eAAe;AACrB,WAAO,EAAE,KAAK,cAAc,aAAa,QAAQ,MAAM,GAAG;AAAA,EAC5D,CAAC;AACH;;;ADxkBA,SAAS,kBAAkB,QAA2B;AACpD,QAAM,SAAS,QAAQ,cAAc;AACrC,QAAM,eAAe,QAAQ,oBAAoB;AAAA,IAC/C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,eAAe,QAAQ,oBAAoB,CAAC,gBAAgB,eAAe;AAEjF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAsB,oBAAoB,MAA0B,QAA2B;AAC7F,QAAM,MAAM,IAAI,KAAK;AACrB,QAAM,SAAiB,kBAAkB,MAAM,YAAY;AAE3D,QAAM,aAAa,kBAAkB,MAAM;AAC3C,MAAI,IAAI,KAAK,KAAK,UAAU,CAAC;AAE7B,MAAI;AAAA,IAAI;AAAA,IAAK,CAAC,MACZ,EAAE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAGA,MAAI;AAAA,IAAI;AAAA,IAAO,CAAC,MACd,EAAE;AAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,OACE;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,sBAAoB,KAAK,MAAM,MAAM;AACrC,yBAAuB,KAAK,MAAM,MAAM;AACxC,oBAAkB,KAAK,MAAM,MAAM;AACnC,uBAAqB,KAAK,MAAM,MAAM;AACtC,8BAA4B,KAAK,MAAM,MAAM;AAC7C,oBAAkB,KAAK,MAAM,MAAM;AAEnC,MAAI,QAAQ,cAAc;AACxB,UAAM,OAAO,aAAa,KAAK,IAAI;AAAA,EACrC;AAEA,SAAO;AACT;;;AEtEO,SAAS,0BAA6C;AAE3D,MAAI,OAAO,WAAW,SAAS,aAAa;AAC1C,WAAO;AAAA,EACT;AAGA,MAAI,OAAO,WAAW,gBAAgB,aAAa;AACjD,WAAO;AAAA,EACT;AAGA,MAAI,WAAW,WAAW,WAAW,SAAS,YAAY,GAAG;AAC3D,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ACSO,SAAS,cAAc,SAA+C;AAC3E,QAAM,UAAU;AAChB,QAAM,oBAAoB,QAAQ;AAElC,QAAM,YAAY,SAAS;AAE3B,MAAI,aAAa,OAAO,cAAc,YAAY;AAChD,YAAQ,0BAA0B,CAAC,YAAY;AAC7C,UAAI;AACF,kBAAU,OAAO;AAAA,MACnB,QAAQ;AAEN,aAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAGA,SAAO,MAAM;AACX,QAAI,WAAW;AACb,UAAI,mBAAmB;AACrB,gBAAQ,0BAA0B;AAAA,MACpC,OAAO;AACL,gBAAQ,0BAA0B;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AACF;;;ACjDO,IAAM,yBAAN,MAA4D;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EAEjB,YAAY,MAA0B,QAA2B;AAC/D,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,aAAa,KAAK,cAAc;AAAA,EACvC;AAAA,EAEA,MAAc,gBAA+B;AAC3C,WAAO,oBAAoB,KAAK,MAAM,KAAK,MAAM;AAAA,EACnD;AAAA,EAEA,MAAc,SAAwB;AACpC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAc,wBAAwB,QAAiD;AACrF,QAAI,KAAK,KAAK,mBAAmB;AAC/B,YAAM,QAAQ,QAAQ,KAAK,KAAK,kBAAkB,MAAM,CAAC;AAAA,IAC3D;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,SAAqC;AACvD,UAAM,KAAK,wBAAwB;AACnC,UAAM,MAAM,MAAM,KAAK,OAAO;AAC9B,WAAO,IAAI,MAAM,OAAO;AAAA,EAC1B;AAAA,EAEA,qBAAqB;AACnB,WAAO;AAAA,MACL,OAAO,OACL,SACA,KACA,iBACsB;AACtB,cAAM,UAAU,cAAc,YAAmB;AAEjD,YAAI;AACF,gBAAM,KAAK,wBAAwB,GAAG;AACtC,gBAAM,MAAM,MAAM,KAAK,OAAO;AAC9B,iBAAO,MAAM,IAAI,MAAM,SAAS,KAAgC,YAAmB;AAAA,QACrF,UAAE;AACA,kBAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eAA2E;AACzE,WAAO,OAAO,SAAkB,YAAsB;AACpD,YAAM,UAAU,cAAc,OAAc;AAE5C,UAAI;AACF,cAAM,KAAK,wBAAwB,OAA8C;AACjF,cAAM,MAAM,MAAM,KAAK,OAAO;AAC9B,eAAO,MAAM,IAAI,MAAM,SAAS,OAA8C;AAAA,MAChF,UAAE;AACA,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAkE;AAChE,WAAO,OAAO,SAAkB,SAAmB;AACjD,YAAM,UAAU,cAAc,IAAW;AAEzC,UAAI;AACF,cAAM,KAAK,wBAAwB,IAA2C;AAC9E,cAAM,MAAM,MAAM,KAAK,OAAO;AAC9B,eAAO,MAAM,IAAI,MAAM,SAAS,IAA2C;AAAA,MAC7E,UAAE;AACA,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAEyD;AACvD,UAAM,UAA6B,wBAAwB;AAE3D,YAAQ,SAAS;AAAA,MACf,KAAK;AACH,eAAO,KAAK,mBAAmB;AAAA,MACjC,KAAK;AACH,eAAO,KAAK,aAAa;AAAA,MAC3B,KAAK;AACH,eAAO,KAAK,OAAO;AAAA,MACrB;AACE,eAAO,KAAK,mBAAmB;AAAA,IACnC;AAAA,EACF;AACF;;;ACrGA,SAAS,cAAc;AA4BvB,IAAM,oBAAoB,oBAAI,IAAI,CAAC,OAAO,MAAM,CAAC;AAEjD,SAAS,SAAS,OAAqC;AACrD,QAAM,SAAS,MAAM,UAAU,mBAAmB,KAAK;AACvD,QAAM,OAAO,MAAM,SAAS,QAAQ;AACpC,QAAM,OAAO,MAAM,WAAW,MAAM,QAAQ;AAC5C,QAAM,QAAQ,MAAM,WAAW,IAAI,MAAM,QAAQ,KAAK;AACtD,SAAO,GAAG,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,KAAK;AAC3C;AAEA,SAAS,cAAc,OAAsC;AAC3D,QAAM,UAAU,MAAM,cAAc,OAAO,YAAY;AACvD,QAAM,UAAU,IAAI,QAAQ;AAE5B,MAAI,MAAM,mBAAmB;AAC3B,eAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,MAAM,iBAAiB,GAAG;AACnE,UAAI,CAAC,OAAQ;AACb,iBAAW,SAAS,QAAQ;AAC1B,YAAI,UAAU,QAAW;AACvB,kBAAQ,OAAO,KAAK,KAAK;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,MAAM,SAAS;AACjB,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,OAAO,GAAG;AACxD,UAAI,UAAU,QAAW;AACvB,gBAAQ,IAAI,KAAK,KAAK;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,MAAM,MAAM,UAAU,SAAS,KAAK;AAE1C,QAAM,OAAgC,EAAE,QAAQ,QAAQ;AAExD,MAAI,CAAC,kBAAkB,IAAI,MAAM,KAAK,MAAM,MAAM;AAChD,SAAK,OAAO,MAAM,kBAAkB,OAAO,KAAK,MAAM,MAAM,QAAQ,IAAI,MAAM;AAAA,EAChF;AAEA,SAAO,IAAI,QAAQ,KAAK,IAAmB;AAC7C;AAEA,SAAS,kBAAkB,UAAoD;AAC7E,QAAM,SAAiC,CAAC;AACxC,QAAM,QAAkC,CAAC;AAEzC,WAAS,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AACvC,QAAI,OAAO,GAAG,GAAG;AACf,YAAM,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,KAAK;AAChC,aAAO,OAAO,GAAG;AAAA,IACnB,WAAW,MAAM,GAAG,GAAG;AACrB,YAAM,GAAG,EAAE,KAAK,KAAK;AAAA,IACvB,OAAO;AACL,aAAO,GAAG,IAAI;AAAA,IAChB;AAAA,EACF,CAAC;AAED,SAAO,SAAS,YAAY,EAAE,KAAK,CAAC,YAAY;AAAA,IAC9C,YAAY,SAAS;AAAA,IACrB,SAAS,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,SAAS;AAAA,IACnD,mBAAmB,OAAO,KAAK,KAAK,EAAE,SAAS,IAAI,QAAQ;AAAA,IAC3D,MAAM,OAAO,KAAK,MAAM,EAAE,SAAS,QAAQ;AAAA,IAC3C,iBAAiB;AAAA,EACnB,EAAE;AACJ;AAEO,SAAS,6BAA6B,WAA8C;AACzF,QAAM,WAAW,UAAU,WAAW;AAEtC,SAAO,OAAO,UAAU;AACtB,UAAM,UAAU,cAAc,KAAK;AACnC,UAAM,WAAW,MAAM,SAAS,cAAc,OAAO;AACrD,WAAO,kBAAkB,QAAQ;AAAA,EACnC;AACF;;;ACpGO,SAAS,eAAe,QAA2B;AACxD,SAAO,CAAC,SAA6B,IAAI,uBAAuB,MAAM,MAAM;AAC9E;AAWA,IAAO,gBAAQ;","names":[]}
package/package.json CHANGED
@@ -1,17 +1,13 @@
1
1
  {
2
2
  "name": "@voltagent/serverless-hono",
3
3
  "description": "Serverless (fetch-based) runtime provider for VoltAgent using Hono",
4
- "version": "1.0.3",
4
+ "version": "1.0.4",
5
5
  "dependencies": {
6
6
  "@voltagent/internal": "^0.0.11",
7
7
  "@voltagent/server-core": "^1.0.14",
8
8
  "hono": "^4.7.7"
9
9
  },
10
- "devDependencies": {
11
- "tsup": "^8.5.0",
12
- "typescript": "^5.8.2",
13
- "vitest": "^3.2.4"
14
- },
10
+ "devDependencies": {},
15
11
  "exports": {
16
12
  ".": {
17
13
  "types": "./dist/index.d.ts",