@voltagent/serverless-hono 1.0.8 → 1.0.9
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 +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -41,6 +41,7 @@ import {
|
|
|
41
41
|
handleGetWorkflowState,
|
|
42
42
|
handleGetWorkflows,
|
|
43
43
|
handleInstallUpdates,
|
|
44
|
+
handleListWorkflowRuns,
|
|
44
45
|
handleResumeWorkflow,
|
|
45
46
|
handleStreamObject,
|
|
46
47
|
handleStreamText,
|
|
@@ -237,6 +238,12 @@ function registerWorkflowRoutes(app, deps, logger) {
|
|
|
237
238
|
const response = await handleResumeWorkflow(workflowId, executionId, body, deps, logger);
|
|
238
239
|
return c.json(response, response.success ? 200 : 500);
|
|
239
240
|
});
|
|
241
|
+
app.get(WORKFLOW_ROUTES.listWorkflowRuns.path, async (c) => {
|
|
242
|
+
const query = c.req.query();
|
|
243
|
+
const response = await handleListWorkflowRuns(void 0, query, deps, logger);
|
|
244
|
+
const status = response.success ? 200 : response.error?.includes("not found") ? 404 : 500;
|
|
245
|
+
return c.json(response, status);
|
|
246
|
+
});
|
|
240
247
|
app.get(WORKFLOW_ROUTES.getWorkflowState.path, async (c) => {
|
|
241
248
|
const workflowId = c.req.param("id");
|
|
242
249
|
const executionId = c.req.param("executionId");
|
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 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 ?? [\"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 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 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 type TriggerHttpRequestContext,\n UPDATE_ROUTES,\n WORKFLOW_ROUTES,\n executeA2ARequest,\n executeTriggerHandler,\n getConversationMessagesHandler,\n getConversationStepsHandler,\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 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\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.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 { getOrCreateLogger } from \"@voltagent/server-core\";\nimport { Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\nimport {\n registerA2ARoutes,\n registerAgentRoutes,\n registerLogRoutes,\n registerObservabilityRoutes,\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 ?? [\"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 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 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 type TriggerHttpRequestContext,\n UPDATE_ROUTES,\n WORKFLOW_ROUTES,\n executeA2ARequest,\n executeTriggerHandler,\n getConversationMessagesHandler,\n getConversationStepsHandler,\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 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\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.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 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,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voltagent/serverless-hono",
|
|
3
3
|
"description": "Serverless (fetch-based) runtime provider for VoltAgent using Hono",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.9",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@voltagent/internal": "^0.0.12",
|
|
7
|
-
"@voltagent/server-core": "^1.0.
|
|
7
|
+
"@voltagent/server-core": "^1.0.32",
|
|
8
8
|
"hono": "^4.7.7"
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {},
|