@voltagent/serverless-hono 2.0.4 → 2.0.5

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.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ServerProviderDeps, IServerlessProvider, VoltAgent } from '@voltagent/core';
1
+ import { ResumableStreamAdapter, ServerProviderDeps, IServerlessProvider, VoltAgent } from '@voltagent/core';
2
2
  import { Hono } from 'hono';
3
3
 
4
4
  type ServerlessRuntime = "cloudflare" | "vercel" | "deno" | "unknown";
@@ -7,6 +7,10 @@ interface ServerlessConfig {
7
7
  corsAllowMethods?: string[];
8
8
  corsAllowHeaders?: string[];
9
9
  maxRequestSize?: number;
10
+ resumableStream?: {
11
+ adapter: ResumableStreamAdapter;
12
+ defaultEnabled?: boolean;
13
+ };
10
14
  configureApp?: (app: Hono, deps: ServerProviderDeps) => void | Promise<void>;
11
15
  }
12
16
 
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // src/app-factory.ts
2
+ import { resolveResumableStreamDeps } from "@voltagent/resumable-streams";
2
3
  import { getOrCreateLogger } from "@voltagent/server-core";
3
4
  import { Hono } from "hono";
4
5
  import { cors } from "hono/cors";
@@ -48,6 +49,7 @@ import {
48
49
  handleInstallUpdates,
49
50
  handleListTools,
50
51
  handleListWorkflowRuns,
52
+ handleResumeChatStream,
51
53
  handleResumeWorkflow,
52
54
  handleStreamObject,
53
55
  handleStreamText,
@@ -225,6 +227,18 @@ function registerAgentRoutes(app, deps, logger) {
225
227
  signal
226
228
  );
227
229
  });
230
+ app.get(AGENT_ROUTES.resumeChatStream.path, async (c) => {
231
+ const agentId = c.req.param("id");
232
+ const conversationId = c.req.param("conversationId");
233
+ const userId = c.req.query("userId");
234
+ if (!agentId || !conversationId) {
235
+ return c.json({ error: "Missing agent or conversation id parameter" }, 400);
236
+ }
237
+ if (!userId) {
238
+ return c.json({ error: "Missing userId parameter" }, 400);
239
+ }
240
+ return handleResumeChatStream(agentId, conversationId, deps, logger, userId);
241
+ });
228
242
  app.post(AGENT_ROUTES.generateObject.path, async (c) => {
229
243
  const agentId = c.req.param("id");
230
244
  const body = await readJsonBody(c, logger);
@@ -739,6 +753,13 @@ function resolveCorsConfig(config) {
739
753
  async function createServerlessApp(deps, config) {
740
754
  const app = new Hono();
741
755
  const logger = getOrCreateLogger(deps, "serverless");
756
+ const resumableStreamConfig = config?.resumableStream;
757
+ const baseDeps = await resolveResumableStreamDeps(deps, resumableStreamConfig?.adapter, logger);
758
+ const resumableStreamDefault = typeof resumableStreamConfig?.defaultEnabled === "boolean" ? resumableStreamConfig.defaultEnabled : baseDeps.resumableStreamDefault;
759
+ const resolvedDeps = {
760
+ ...baseDeps,
761
+ ...resumableStreamDefault !== void 0 ? { resumableStreamDefault } : {}
762
+ };
742
763
  const corsConfig = resolveCorsConfig(config);
743
764
  app.use("*", cors(corsConfig));
744
765
  app.get(
@@ -758,16 +779,16 @@ async function createServerlessApp(deps, config) {
758
779
  200
759
780
  )
760
781
  );
761
- registerAgentRoutes(app, deps, logger);
762
- registerWorkflowRoutes(app, deps, logger);
763
- registerToolRoutes(app, deps, logger);
764
- registerLogRoutes(app, deps, logger);
765
- registerUpdateRoutes(app, deps, logger);
766
- registerObservabilityRoutes(app, deps, logger);
767
- registerTriggerRoutes(app, deps, logger);
768
- registerA2ARoutes(app, deps, logger);
782
+ registerAgentRoutes(app, resolvedDeps, logger);
783
+ registerWorkflowRoutes(app, resolvedDeps, logger);
784
+ registerToolRoutes(app, resolvedDeps, logger);
785
+ registerLogRoutes(app, resolvedDeps, logger);
786
+ registerUpdateRoutes(app, resolvedDeps, logger);
787
+ registerObservabilityRoutes(app, resolvedDeps, logger);
788
+ registerTriggerRoutes(app, resolvedDeps, logger);
789
+ registerA2ARoutes(app, resolvedDeps, logger);
769
790
  if (config?.configureApp) {
770
- await config.configureApp(app, deps);
791
+ await config.configureApp(app, resolvedDeps);
771
792
  }
772
793
  return app;
773
794
  }
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/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 registerToolRoutes,\n registerTriggerRoutes,\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 ?? [\n \"Content-Type\",\n \"Authorization\",\n \"x-voltagent-dev\",\n \"x-console-access-key\",\n ];\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 registerToolRoutes(app, deps, logger);\n registerLogRoutes(app, deps, logger);\n registerUpdateRoutes(app, deps, logger);\n registerObservabilityRoutes(app, deps, logger);\n registerTriggerRoutes(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 {\n type A2AServerRegistry,\n SERVERLESS_ENV_CONTEXT_KEY,\n type ServerProviderDeps,\n} 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 TOOL_ROUTES,\n type TriggerHttpRequestContext,\n UPDATE_ROUTES,\n WORKFLOW_ROUTES,\n executeA2ARequest,\n executeTriggerHandler,\n getConversationMessagesHandler,\n getConversationStepsHandler,\n handleChatStream,\n handleCheckUpdates,\n handleExecuteTool,\n handleExecuteWorkflow,\n handleGenerateObject,\n handleGenerateText,\n handleGetAgent,\n handleGetAgentHistory,\n handleGetAgents,\n handleGetLogs,\n handleGetWorkflow,\n handleGetWorkflowState,\n handleGetWorkflows,\n handleInstallUpdates,\n handleListTools,\n handleListWorkflowRuns,\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 extractHeaders(\n headers: Headers | NodeJS.Dict<string | string[] | undefined>,\n): Record<string, string> {\n if (headers instanceof Headers) {\n return Object.fromEntries(headers.entries());\n }\n\n const result: Record<string, string> = {};\n Object.entries(headers).forEach(([key, value]) => {\n if (typeof value === \"string\") {\n result[key] = value;\n } else if (Array.isArray(value)) {\n result[key] = value.join(\", \");\n }\n });\n return result;\n}\n\ntype ServerlessEnv = Record<string, unknown>;\n\nfunction getServerlessEnv(c: { env?: unknown }): ServerlessEnv | undefined {\n const env = c?.env;\n if (!env || typeof env !== \"object\" || Array.isArray(env)) {\n return undefined;\n }\n return env as ServerlessEnv;\n}\n\nfunction mergeContextWithServerlessEnv(\n context: unknown,\n env: ServerlessEnv | undefined,\n): Map<string | symbol, unknown> | undefined {\n if (!env) {\n return context instanceof Map ? context : undefined;\n }\n\n const contextMap =\n context instanceof Map\n ? context\n : context && typeof context === \"object\" && !Array.isArray(context)\n ? new Map(Object.entries(context as Record<string, unknown>))\n : new Map<string | symbol, unknown>();\n\n if (!contextMap.has(SERVERLESS_ENV_CONTEXT_KEY)) {\n contextMap.set(SERVERLESS_ENV_CONTEXT_KEY, env);\n }\n\n return contextMap;\n}\n\nfunction withServerlessEnvInOptions(body: any, env: ServerlessEnv | undefined) {\n if (!env || !body || typeof body !== \"object\") {\n return body;\n }\n\n const options =\n body.options && typeof body.options === \"object\" && !Array.isArray(body.options)\n ? body.options\n : {};\n\n const context = mergeContextWithServerlessEnv(options.context, env);\n\n return {\n ...body,\n options: {\n ...options,\n context: context ?? options.context,\n },\n };\n}\n\nfunction withServerlessEnvInContext(body: any, env: ServerlessEnv | undefined) {\n if (!env || !body || typeof body !== \"object\") {\n return body;\n }\n\n const context = mergeContextWithServerlessEnv(body.context, env);\n\n return {\n ...body,\n context: context ?? body.context,\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 runtimeEnv = getServerlessEnv(c);\n const response = await handleGenerateText(\n agentId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n signal,\n );\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 runtimeEnv = getServerlessEnv(c);\n const response = await handleStreamText(\n agentId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n signal,\n );\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 const runtimeEnv = getServerlessEnv(c);\n return handleChatStream(\n agentId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n signal,\n );\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 runtimeEnv = getServerlessEnv(c);\n const response = await handleGenerateObject(\n agentId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n signal,\n );\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 const runtimeEnv = getServerlessEnv(c);\n return handleStreamObject(\n agentId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n signal,\n );\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 runtimeEnv = getServerlessEnv(c);\n const response = await handleExecuteWorkflow(\n workflowId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n );\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 runtimeEnv = getServerlessEnv(c);\n const response = await handleStreamWorkflow(\n workflowId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n );\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.listWorkflowRuns.path, async (c) => {\n const query = c.req.query();\n const response = await handleListWorkflowRuns(undefined, query, deps, logger);\n const status = response.success ? 200 : response.error?.includes(\"not found\") ? 404 : 500;\n return c.json(response, status);\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 registerToolRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.get(TOOL_ROUTES.listTools.path, async (c) => {\n const response = await handleListTools(deps, logger);\n const status = response.success ? 200 : response.httpStatus || 500;\n return c.json(response, status);\n });\n\n app.post(TOOL_ROUTES.executeTool.path, async (c) => {\n const toolName = c.req.param(\"name\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n\n const runtimeEnv = getServerlessEnv(c);\n const response = await handleExecuteTool(\n toolName,\n withServerlessEnvInContext(body, runtimeEnv),\n deps,\n logger,\n );\n const status = response.success ? 200 : response.httpStatus || 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.getConversationSteps.path, async (c) => {\n const conversationId = c.req.param(\"conversationId\");\n const query = c.req.query();\n logger.debug(`[serverless] GET /observability/memory/conversations/${conversationId}/steps`, {\n query,\n });\n\n const result = await getConversationStepsHandler(deps, conversationId, {\n agentId: query.agentId,\n limit: query.limit ? Number.parseInt(query.limit, 10) : undefined,\n operationId: query.operationId,\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 registerTriggerRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n const triggers = deps.triggerRegistry.list();\n triggers.forEach((trigger) => {\n const method = trigger.method ?? \"post\";\n const handler = async (c: any) => {\n const body = await readJsonBody<unknown>(c, logger);\n const queryParams = c.req.query();\n const context: TriggerHttpRequestContext = {\n body,\n headers: extractHeaders(c.req.raw?.headers ?? new Headers()),\n query:\n queryParams && typeof queryParams === \"object\"\n ? { ...queryParams }\n : ({} as Record<string, string>),\n raw: c.req.raw,\n };\n\n const response = await executeTriggerHandler(trigger, context, deps, logger);\n\n // Ensure spans are flushed (using waitUntil if available)\n // This is critical for serverless environments to avoid orphan spans\n const observability = deps.observability as any;\n if (observability?.flushOnFinish) {\n await observability.flushOnFinish();\n } else if (observability?.forceFlush) {\n await observability.forceFlush();\n }\n\n return c.json(response.body ?? { success: true }, response.status, response.headers);\n };\n\n if (typeof (app as any)[method] !== \"function\") {\n logger.warn(\n `Skipping trigger ${trigger.name}: method ${method} is not supported in the serverless adapter`,\n );\n return;\n }\n\n (app as any)[method](trigger.path, handler);\n logger.info(\"[volt] Trigger route registered\", {\n trigger: trigger.name,\n method: method.toUpperCase(),\n path: trigger.path,\n });\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 currentWaitUntil = context?.waitUntil;\n\n if (currentWaitUntil && typeof currentWaitUntil === \"function\") {\n // Bind to context to avoid \"Illegal invocation\" errors\n // And allow errors (like DataCloneError) to propagate so caller can handle fallback\n globals.___voltagent_wait_until = currentWaitUntil.bind(context);\n } else {\n globals.___voltagent_wait_until = undefined;\n }\n\n // Return cleanup function\n return () => {\n if (currentWaitUntil) {\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":"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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 { resolveResumableStreamDeps } from \"@voltagent/resumable-streams\";\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 registerToolRoutes,\n registerTriggerRoutes,\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 ?? [\n \"Content-Type\",\n \"Authorization\",\n \"x-voltagent-dev\",\n \"x-console-access-key\",\n ];\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 const resumableStreamConfig = config?.resumableStream;\n const baseDeps = await resolveResumableStreamDeps(deps, resumableStreamConfig?.adapter, logger);\n const resumableStreamDefault =\n typeof resumableStreamConfig?.defaultEnabled === \"boolean\"\n ? resumableStreamConfig.defaultEnabled\n : baseDeps.resumableStreamDefault;\n const resolvedDeps: ServerProviderDeps = {\n ...baseDeps,\n ...(resumableStreamDefault !== undefined ? { resumableStreamDefault } : {}),\n };\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, resolvedDeps, logger);\n registerWorkflowRoutes(app, resolvedDeps, logger);\n registerToolRoutes(app, resolvedDeps, logger);\n registerLogRoutes(app, resolvedDeps, logger);\n registerUpdateRoutes(app, resolvedDeps, logger);\n registerObservabilityRoutes(app, resolvedDeps, logger);\n registerTriggerRoutes(app, resolvedDeps, logger);\n registerA2ARoutes(app, resolvedDeps, logger);\n\n if (config?.configureApp) {\n await config.configureApp(app, resolvedDeps);\n }\n\n return app;\n}\n","import {\n type A2AServerRegistry,\n SERVERLESS_ENV_CONTEXT_KEY,\n type ServerProviderDeps,\n} 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 TOOL_ROUTES,\n type TriggerHttpRequestContext,\n UPDATE_ROUTES,\n WORKFLOW_ROUTES,\n executeA2ARequest,\n executeTriggerHandler,\n getConversationMessagesHandler,\n getConversationStepsHandler,\n handleChatStream,\n handleCheckUpdates,\n handleExecuteTool,\n handleExecuteWorkflow,\n handleGenerateObject,\n handleGenerateText,\n handleGetAgent,\n handleGetAgentHistory,\n handleGetAgents,\n handleGetLogs,\n handleGetWorkflow,\n handleGetWorkflowState,\n handleGetWorkflows,\n handleInstallUpdates,\n handleListTools,\n handleListWorkflowRuns,\n handleResumeChatStream,\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 extractHeaders(\n headers: Headers | NodeJS.Dict<string | string[] | undefined>,\n): Record<string, string> {\n if (headers instanceof Headers) {\n return Object.fromEntries(headers.entries());\n }\n\n const result: Record<string, string> = {};\n Object.entries(headers).forEach(([key, value]) => {\n if (typeof value === \"string\") {\n result[key] = value;\n } else if (Array.isArray(value)) {\n result[key] = value.join(\", \");\n }\n });\n return result;\n}\n\ntype ServerlessEnv = Record<string, unknown>;\n\nfunction getServerlessEnv(c: { env?: unknown }): ServerlessEnv | undefined {\n const env = c?.env;\n if (!env || typeof env !== \"object\" || Array.isArray(env)) {\n return undefined;\n }\n return env as ServerlessEnv;\n}\n\nfunction mergeContextWithServerlessEnv(\n context: unknown,\n env: ServerlessEnv | undefined,\n): Map<string | symbol, unknown> | undefined {\n if (!env) {\n return context instanceof Map ? context : undefined;\n }\n\n const contextMap =\n context instanceof Map\n ? context\n : context && typeof context === \"object\" && !Array.isArray(context)\n ? new Map(Object.entries(context as Record<string, unknown>))\n : new Map<string | symbol, unknown>();\n\n if (!contextMap.has(SERVERLESS_ENV_CONTEXT_KEY)) {\n contextMap.set(SERVERLESS_ENV_CONTEXT_KEY, env);\n }\n\n return contextMap;\n}\n\nfunction withServerlessEnvInOptions(body: any, env: ServerlessEnv | undefined) {\n if (!env || !body || typeof body !== \"object\") {\n return body;\n }\n\n const options =\n body.options && typeof body.options === \"object\" && !Array.isArray(body.options)\n ? body.options\n : {};\n\n const context = mergeContextWithServerlessEnv(options.context, env);\n\n return {\n ...body,\n options: {\n ...options,\n context: context ?? options.context,\n },\n };\n}\n\nfunction withServerlessEnvInContext(body: any, env: ServerlessEnv | undefined) {\n if (!env || !body || typeof body !== \"object\") {\n return body;\n }\n\n const context = mergeContextWithServerlessEnv(body.context, env);\n\n return {\n ...body,\n context: context ?? body.context,\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 runtimeEnv = getServerlessEnv(c);\n const response = await handleGenerateText(\n agentId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n signal,\n );\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 runtimeEnv = getServerlessEnv(c);\n const response = await handleStreamText(\n agentId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n signal,\n );\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 const runtimeEnv = getServerlessEnv(c);\n return handleChatStream(\n agentId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n signal,\n );\n });\n\n app.get(AGENT_ROUTES.resumeChatStream.path, async (c) => {\n const agentId = c.req.param(\"id\");\n const conversationId = c.req.param(\"conversationId\");\n const userId = c.req.query(\"userId\");\n if (!agentId || !conversationId) {\n return c.json({ error: \"Missing agent or conversation id parameter\" }, 400);\n }\n if (!userId) {\n return c.json({ error: \"Missing userId parameter\" }, 400);\n }\n return handleResumeChatStream(agentId, conversationId, deps, logger, userId);\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 runtimeEnv = getServerlessEnv(c);\n const response = await handleGenerateObject(\n agentId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n signal,\n );\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 const runtimeEnv = getServerlessEnv(c);\n return handleStreamObject(\n agentId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n signal,\n );\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 runtimeEnv = getServerlessEnv(c);\n const response = await handleExecuteWorkflow(\n workflowId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n );\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 runtimeEnv = getServerlessEnv(c);\n const response = await handleStreamWorkflow(\n workflowId,\n withServerlessEnvInOptions(body, runtimeEnv),\n deps,\n logger,\n );\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.listWorkflowRuns.path, async (c) => {\n const query = c.req.query();\n const response = await handleListWorkflowRuns(undefined, query, deps, logger);\n const status = response.success ? 200 : response.error?.includes(\"not found\") ? 404 : 500;\n return c.json(response, status);\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 registerToolRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n app.get(TOOL_ROUTES.listTools.path, async (c) => {\n const response = await handleListTools(deps, logger);\n const status = response.success ? 200 : response.httpStatus || 500;\n return c.json(response, status);\n });\n\n app.post(TOOL_ROUTES.executeTool.path, async (c) => {\n const toolName = c.req.param(\"name\");\n const body = await readJsonBody(c, logger);\n if (!body) {\n return c.json({ success: false, error: \"Invalid JSON body\" }, 400);\n }\n\n const runtimeEnv = getServerlessEnv(c);\n const response = await handleExecuteTool(\n toolName,\n withServerlessEnvInContext(body, runtimeEnv),\n deps,\n logger,\n );\n const status = response.success ? 200 : response.httpStatus || 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.getConversationSteps.path, async (c) => {\n const conversationId = c.req.param(\"conversationId\");\n const query = c.req.query();\n logger.debug(`[serverless] GET /observability/memory/conversations/${conversationId}/steps`, {\n query,\n });\n\n const result = await getConversationStepsHandler(deps, conversationId, {\n agentId: query.agentId,\n limit: query.limit ? Number.parseInt(query.limit, 10) : undefined,\n operationId: query.operationId,\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 registerTriggerRoutes(app: Hono, deps: ServerProviderDeps, logger: Logger) {\n const triggers = deps.triggerRegistry.list();\n triggers.forEach((trigger) => {\n const method = trigger.method ?? \"post\";\n const handler = async (c: any) => {\n const body = await readJsonBody<unknown>(c, logger);\n const queryParams = c.req.query();\n const context: TriggerHttpRequestContext = {\n body,\n headers: extractHeaders(c.req.raw?.headers ?? new Headers()),\n query:\n queryParams && typeof queryParams === \"object\"\n ? { ...queryParams }\n : ({} as Record<string, string>),\n raw: c.req.raw,\n };\n\n const response = await executeTriggerHandler(trigger, context, deps, logger);\n\n // Ensure spans are flushed (using waitUntil if available)\n // This is critical for serverless environments to avoid orphan spans\n const observability = deps.observability as any;\n if (observability?.flushOnFinish) {\n await observability.flushOnFinish();\n } else if (observability?.forceFlush) {\n await observability.forceFlush();\n }\n\n return c.json(response.body ?? { success: true }, response.status, response.headers);\n };\n\n if (typeof (app as any)[method] !== \"function\") {\n logger.warn(\n `Skipping trigger ${trigger.name}: method ${method} is not supported in the serverless adapter`,\n );\n return;\n }\n\n (app as any)[method](trigger.path, handler);\n logger.info(\"[volt] Trigger route registered\", {\n trigger: trigger.name,\n method: method.toUpperCase(),\n path: trigger.path,\n });\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 currentWaitUntil = context?.waitUntil;\n\n if (currentWaitUntil && typeof currentWaitUntil === \"function\") {\n // Bind to context to avoid \"Illegal invocation\" errors\n // And allow errors (like DataCloneError) to propagate so caller can handle fallback\n globals.___voltagent_wait_until = currentWaitUntil.bind(context);\n } else {\n globals.___voltagent_wait_until = undefined;\n }\n\n // Return cleanup function\n return () => {\n if (currentWaitUntil) {\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":"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","names":[]}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@voltagent/serverless-hono",
3
3
  "description": "Serverless (fetch-based) runtime provider for VoltAgent using Hono",
4
- "version": "2.0.4",
4
+ "version": "2.0.5",
5
5
  "dependencies": {
6
6
  "@voltagent/internal": "^1.0.2",
7
- "@voltagent/server-core": "^2.1.1",
7
+ "@voltagent/resumable-streams": "^2.0.1",
8
+ "@voltagent/server-core": "^2.1.2",
8
9
  "hono": "^4.7.7"
9
10
  },
10
11
  "devDependencies": {},