@mastra/deployer 1.0.0-beta.1 → 1.0.0-beta.3

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/.pnpm/@hono+node-server@1.19.6_hono@4.10.3/node_modules/@hono/node-server/dist/index.mjs","../../../../node_modules/.pnpm/@hono+node-server@1.19.6_hono@4.10.3/node_modules/@hono/node-server/dist/serve-static.mjs","../../../../node_modules/.pnpm/@hono+swagger-ui@0.5.2_hono@4.10.3/node_modules/@hono/swagger-ui/dist/index.js","../../../../node_modules/.pnpm/hono-openapi@0.4.8_hono@4.10.3_openapi-types@12.1.3_zod@3.25.76/node_modules/hono-openapi/utils.js","../../../../node_modules/.pnpm/hono-openapi@0.4.8_hono@4.10.3_openapi-types@12.1.3_zod@3.25.76/node_modules/hono-openapi/index.js","../../src/server/handlers/a2a.ts","../../src/server/handlers/auth/defaults.ts","../../src/server/handlers/auth/helpers.ts","../../src/server/handlers/auth/index.ts","../../src/server/handlers/client.ts","../../src/server/handlers/error.ts","../../src/server/handlers/health.ts","../../src/server/handlers/root.ts","../../src/server/handlers/routes/agent-builder/handlers.ts","../../src/server/handlers/routes/agent-builder/router.ts","../../src/server/handlers/prompt.ts","../../src/server/handlers/routes/tools/handlers.ts","../../src/server/handlers/routes/agents/handlers.ts","../../src/server/handlers/routes/agents/voice.ts","../../src/server/handlers/routes/agents/router.ts","../../src/server/handlers/routes/logs/handlers.ts","../../src/server/handlers/routes/logs/router.ts","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/utils/errors.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-incoming.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/utils/types.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/internal-http.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/internal-streams-state.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-common.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-outgoing.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-server.js","../../src/server/handlers/routes/mcp/handlers.ts","../../src/server/handlers/routes/mcp/router.ts","../../src/server/handlers/utils/query-parsers.ts","../../src/server/handlers/routes/memory/handlers.ts","../../src/server/handlers/routes/memory/router.ts","../../src/server/handlers/routes/observability/handlers.ts","../../src/server/handlers/routes/observability/router.ts","../../src/server/handlers/routes/scores/handlers.ts","../../src/server/handlers/routes/scores/router.ts","../../src/server/handlers/routes/tools/router.ts","../../src/server/handlers/routes/vector/handlers.ts","../../src/server/handlers/routes/vector/router.ts","../../src/server/handlers/routes/workflows/handlers.ts","../../src/server/handlers/routes/workflows/router.ts","../../src/server/welcome.ts","../../src/server/index.ts"],"names":["e","i","Readable","Http2ServerRequest","stream","crypto","Http2ServerRequest2","createServer","createServerHTTP","lstatSync","existsSync","c","path","join","getMimeType","createReadStream","html","s","t","n","a","o","r","f","m","getOriginalAgentCardByIdHandler","logger","getOriginalAgentExecutionHandler","randomUUID","p","HTTPException","getOriginalAgentBuilderActionsHandler","getOriginalAgentBuilderActionByIdHandler","getOriginalCreateAgentBuilderActionRunHandler","getOriginalStartAsyncAgentBuilderActionHandler","getOriginalStartAgentBuilderActionRunHandler","getOriginalStreamAgentBuilderActionHandler","getOriginalStreamVNextAgentBuilderActionHandler","getOriginalResumeAsyncAgentBuilderActionHandler","getOriginalResumeAgentBuilderActionHandler","getOriginalGetAgentBuilderActionRunsHandler","getOriginalGetAgentBuilderActionRunByIdHandler","getOriginalGetAgentBuilderActionRunExecutionResultHandler","getOriginalCancelAgentBuilderActionRunHandler","getOriginalStreamLegacyAgentBuilderActionHandler","getOriginalObserveStreamLegacyAgentBuilderActionHandler","getOriginalObserveStreamAgentBuilderActionHandler","getOriginalObserveStreamVNextAgentBuilderActionHandler","getOriginalResumeStreamAgentBuilderActionHandler","Hono","bodyLimit","agent","Agent","z","getOriginalToolsHandler","getOriginalToolByIdHandler","getOriginalExecuteToolHandler","getOriginalAgentToolHandler","getOriginalExecuteAgentToolHandler","getOriginalListAgentsHandler","PROVIDER_REGISTRY","getProviderConfig","getOriginalAgentByIdHandler","getOriginalGenerateLegacyHandler","getOriginalGenerateHandler","getOriginalStreamGenerateLegacyHandler","getOriginalStreamGenerateHandler","ChunkFrom","getErrorFromUnknown","getOriginalApproveToolCallHandler","getOriginalDeclineToolCallHandler","getOriginalGetAgentFromSystem","MastraError","ErrorDomain","ErrorCategory","getOriginalStreamNetworkHandler","getOriginalStreamUIMessageHandler","getOriginalUpdateAgentModelHandler","getOriginalResetAgentModelHandler","getOriginalUpdateAgentModelInModelListHandler","getOriginalReorderAgentModelListHandler","getOriginalSpeakersHandler","getOriginalSpeakHandler","getOriginalListenerHandler","getOriginalListenHandler","logs","getOriginalListLogsHandler","getOriginalListLogsByRunIdHandler","getOriginalListLogTransportsHandler","util","Writable","l","onError","Buffer","headerCharRegex","checkInvalidHeaderChar","incoming","getOriginalMemoryStatusHandler","getOriginalMemoryConfigHandler","getOriginalListThreadsHandler","getOriginalThreadByIdHandler","getOriginalSaveMessagesHandler","getOriginalCreateThreadHandler","getOriginalUpdateThreadHandler","getOriginalDeleteThreadHandler","getOriginalListMessagesHandler","getOriginalUpdateWorkingMemoryHandler","getOriginalGetWorkingMemoryHandler","getOriginalSearchMemoryHandler","getOriginalDeleteMessagesHandler","getOriginalTraceHandler","SpanType","getOriginalTracesPaginatedHandler","getOriginalScoreTracesHandler","getOriginalScoresBySpanHandler","getOriginalListScorersHandler","getOriginalScorerHandler","scores","getOriginalScoresByRunIdHandler","getOriginalScoresByScorerIdHandler","getOriginalScoresByEntityIdHandler","getOriginalSaveScoreHandler","getOriginalUpsertVectorsHandler","getOriginalCreateIndexHandler","getOriginalQueryVectorsHandler","getOriginalListIndexesHandler","getOriginalDescribeIndexHandler","getOriginalDeleteIndexHandler","workflows","getOriginalWorkflowsHandler","getOriginalWorkflowByIdHandler","getOriginalCreateWorkflowRunHandler","getOriginalStartAsyncWorkflowHandler","getOriginalStartWorkflowRunHandler","getOriginalStreamVNextWorkflowHandler","getOriginalObserveStreamVNextWorkflowHandler","getOriginalStreamLegacyWorkflowHandler","getOriginalObserveStreamLegacyWorkflowHandler","getOriginalResumeStreamWorkflowHandler","getOriginalResumeAsyncWorkflowHandler","getOriginalResumeWorkflowHandler","getOriginalListWorkflowRunsHandler","getOriginalGetWorkflowRunByIdHandler","getOriginalGetWorkflowRunExecutionResultHandler","getOriginalCancelWorkflowRunHandler","tools","Tool","InMemoryTaskStore","requestContext","RequestContext","timeout","cors","middleware","readFile","https"],"mappings":"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","file":"index.cjs","sourcesContent":["// src/server.ts\nimport { createServer as createServerHTTP } from \"http\";\n\n// src/listener.ts\nimport { Http2ServerRequest as Http2ServerRequest2 } from \"http2\";\n\n// src/request.ts\nimport { Http2ServerRequest } from \"http2\";\nimport { Readable } from \"stream\";\nvar RequestError = class extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"RequestError\";\n }\n};\nvar toRequestError = (e) => {\n if (e instanceof RequestError) {\n return e;\n }\n return new RequestError(e.message, { cause: e });\n};\nvar GlobalRequest = global.Request;\nvar Request = class extends GlobalRequest {\n constructor(input, options) {\n if (typeof input === \"object\" && getRequestCache in input) {\n input = input[getRequestCache]();\n }\n if (typeof options?.body?.getReader !== \"undefined\") {\n ;\n options.duplex ??= \"half\";\n }\n super(input, options);\n }\n};\nvar newHeadersFromIncoming = (incoming) => {\n const headerRecord = [];\n const rawHeaders = incoming.rawHeaders;\n for (let i = 0; i < rawHeaders.length; i += 2) {\n const { [i]: key, [i + 1]: value } = rawHeaders;\n if (key.charCodeAt(0) !== /*:*/\n 58) {\n headerRecord.push([key, value]);\n }\n }\n return new Headers(headerRecord);\n};\nvar wrapBodyStream = Symbol(\"wrapBodyStream\");\nvar newRequestFromIncoming = (method, url, headers, incoming, abortController) => {\n const init = {\n method,\n headers,\n signal: abortController.signal\n };\n if (method === \"TRACE\") {\n init.method = \"GET\";\n const req = new Request(url, init);\n Object.defineProperty(req, \"method\", {\n get() {\n return \"TRACE\";\n }\n });\n return req;\n }\n if (!(method === \"GET\" || method === \"HEAD\")) {\n if (\"rawBody\" in incoming && incoming.rawBody instanceof Buffer) {\n init.body = new ReadableStream({\n start(controller) {\n controller.enqueue(incoming.rawBody);\n controller.close();\n }\n });\n } else if (incoming[wrapBodyStream]) {\n let reader;\n init.body = new ReadableStream({\n async pull(controller) {\n try {\n reader ||= Readable.toWeb(incoming).getReader();\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n }\n });\n } else {\n init.body = Readable.toWeb(incoming);\n }\n }\n return new Request(url, init);\n};\nvar getRequestCache = Symbol(\"getRequestCache\");\nvar requestCache = Symbol(\"requestCache\");\nvar incomingKey = Symbol(\"incomingKey\");\nvar urlKey = Symbol(\"urlKey\");\nvar headersKey = Symbol(\"headersKey\");\nvar abortControllerKey = Symbol(\"abortControllerKey\");\nvar getAbortController = Symbol(\"getAbortController\");\nvar requestPrototype = {\n get method() {\n return this[incomingKey].method || \"GET\";\n },\n get url() {\n return this[urlKey];\n },\n get headers() {\n return this[headersKey] ||= newHeadersFromIncoming(this[incomingKey]);\n },\n [getAbortController]() {\n this[getRequestCache]();\n return this[abortControllerKey];\n },\n [getRequestCache]() {\n this[abortControllerKey] ||= new AbortController();\n return this[requestCache] ||= newRequestFromIncoming(\n this.method,\n this[urlKey],\n this.headers,\n this[incomingKey],\n this[abortControllerKey]\n );\n }\n};\n[\n \"body\",\n \"bodyUsed\",\n \"cache\",\n \"credentials\",\n \"destination\",\n \"integrity\",\n \"mode\",\n \"redirect\",\n \"referrer\",\n \"referrerPolicy\",\n \"signal\",\n \"keepalive\"\n].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n get() {\n return this[getRequestCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n value: function() {\n return this[getRequestCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(requestPrototype, Request.prototype);\nvar newRequest = (incoming, defaultHostname) => {\n const req = Object.create(requestPrototype);\n req[incomingKey] = incoming;\n const incomingUrl = incoming.url || \"\";\n if (incomingUrl[0] !== \"/\" && // short-circuit for performance. most requests are relative URL.\n (incomingUrl.startsWith(\"http://\") || incomingUrl.startsWith(\"https://\"))) {\n if (incoming instanceof Http2ServerRequest) {\n throw new RequestError(\"Absolute URL for :path is not allowed in HTTP/2\");\n }\n try {\n const url2 = new URL(incomingUrl);\n req[urlKey] = url2.href;\n } catch (e) {\n throw new RequestError(\"Invalid absolute URL\", { cause: e });\n }\n return req;\n }\n const host = (incoming instanceof Http2ServerRequest ? incoming.authority : incoming.headers.host) || defaultHostname;\n if (!host) {\n throw new RequestError(\"Missing host header\");\n }\n let scheme;\n if (incoming instanceof Http2ServerRequest) {\n scheme = incoming.scheme;\n if (!(scheme === \"http\" || scheme === \"https\")) {\n throw new RequestError(\"Unsupported scheme\");\n }\n } else {\n scheme = incoming.socket && incoming.socket.encrypted ? \"https\" : \"http\";\n }\n const url = new URL(`${scheme}://${host}${incomingUrl}`);\n if (url.hostname.length !== host.length && url.hostname !== host.replace(/:\\d+$/, \"\")) {\n throw new RequestError(\"Invalid host header\");\n }\n req[urlKey] = url.href;\n return req;\n};\n\n// src/response.ts\nvar responseCache = Symbol(\"responseCache\");\nvar getResponseCache = Symbol(\"getResponseCache\");\nvar cacheKey = Symbol(\"cache\");\nvar GlobalResponse = global.Response;\nvar Response2 = class _Response {\n #body;\n #init;\n [getResponseCache]() {\n delete this[cacheKey];\n return this[responseCache] ||= new GlobalResponse(this.#body, this.#init);\n }\n constructor(body, init) {\n let headers;\n this.#body = body;\n if (init instanceof _Response) {\n const cachedGlobalResponse = init[responseCache];\n if (cachedGlobalResponse) {\n this.#init = cachedGlobalResponse;\n this[getResponseCache]();\n return;\n } else {\n this.#init = init.#init;\n headers = new Headers(init.#init.headers);\n }\n } else {\n this.#init = init;\n }\n if (typeof body === \"string\" || typeof body?.getReader !== \"undefined\" || body instanceof Blob || body instanceof Uint8Array) {\n headers ||= init?.headers || { \"content-type\": \"text/plain; charset=UTF-8\" };\n this[cacheKey] = [init?.status || 200, body, headers];\n }\n }\n get headers() {\n const cache = this[cacheKey];\n if (cache) {\n if (!(cache[2] instanceof Headers)) {\n cache[2] = new Headers(cache[2]);\n }\n return cache[2];\n }\n return this[getResponseCache]().headers;\n }\n get status() {\n return this[cacheKey]?.[0] ?? this[getResponseCache]().status;\n }\n get ok() {\n const status = this.status;\n return status >= 200 && status < 300;\n }\n};\n[\"body\", \"bodyUsed\", \"redirected\", \"statusText\", \"trailers\", \"type\", \"url\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n get() {\n return this[getResponseCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n value: function() {\n return this[getResponseCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(Response2, GlobalResponse);\nObject.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);\n\n// src/utils.ts\nasync function readWithoutBlocking(readPromise) {\n return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]);\n}\nfunction writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) {\n const cancel = (error) => {\n reader.cancel(error).catch(() => {\n });\n };\n writable.on(\"close\", cancel);\n writable.on(\"error\", cancel);\n (currentReadPromise ?? reader.read()).then(flow, handleStreamError);\n return reader.closed.finally(() => {\n writable.off(\"close\", cancel);\n writable.off(\"error\", cancel);\n });\n function handleStreamError(error) {\n if (error) {\n writable.destroy(error);\n }\n }\n function onDrain() {\n reader.read().then(flow, handleStreamError);\n }\n function flow({ done, value }) {\n try {\n if (done) {\n writable.end();\n } else if (!writable.write(value)) {\n writable.once(\"drain\", onDrain);\n } else {\n return reader.read().then(flow, handleStreamError);\n }\n } catch (e) {\n handleStreamError(e);\n }\n }\n}\nfunction writeFromReadableStream(stream, writable) {\n if (stream.locked) {\n throw new TypeError(\"ReadableStream is locked.\");\n } else if (writable.destroyed) {\n return;\n }\n return writeFromReadableStreamDefaultReader(stream.getReader(), writable);\n}\nvar buildOutgoingHttpHeaders = (headers) => {\n const res = {};\n if (!(headers instanceof Headers)) {\n headers = new Headers(headers ?? void 0);\n }\n const cookies = [];\n for (const [k, v] of headers) {\n if (k === \"set-cookie\") {\n cookies.push(v);\n } else {\n res[k] = v;\n }\n }\n if (cookies.length > 0) {\n res[\"set-cookie\"] = cookies;\n }\n res[\"content-type\"] ??= \"text/plain; charset=UTF-8\";\n return res;\n};\n\n// src/utils/response/constants.ts\nvar X_ALREADY_SENT = \"x-hono-already-sent\";\n\n// src/globals.ts\nimport crypto from \"crypto\";\nvar webFetch = global.fetch;\nif (typeof global.crypto === \"undefined\") {\n global.crypto = crypto;\n}\nglobal.fetch = (info, init) => {\n init = {\n // Disable compression handling so people can return the result of a fetch\n // directly in the loader without messing with the Content-Encoding header.\n compress: false,\n ...init\n };\n return webFetch(info, init);\n};\n\n// src/listener.ts\nvar outgoingEnded = Symbol(\"outgoingEnded\");\nvar handleRequestError = () => new Response(null, {\n status: 400\n});\nvar handleFetchError = (e) => new Response(null, {\n status: e instanceof Error && (e.name === \"TimeoutError\" || e.constructor.name === \"TimeoutError\") ? 504 : 500\n});\nvar handleResponseError = (e, outgoing) => {\n const err = e instanceof Error ? e : new Error(\"unknown error\", { cause: e });\n if (err.code === \"ERR_STREAM_PREMATURE_CLOSE\") {\n console.info(\"The user aborted a request.\");\n } else {\n console.error(e);\n if (!outgoing.headersSent) {\n outgoing.writeHead(500, { \"Content-Type\": \"text/plain\" });\n }\n outgoing.end(`Error: ${err.message}`);\n outgoing.destroy(err);\n }\n};\nvar flushHeaders = (outgoing) => {\n if (\"flushHeaders\" in outgoing && outgoing.writable) {\n outgoing.flushHeaders();\n }\n};\nvar responseViaCache = async (res, outgoing) => {\n let [status, body, header] = res[cacheKey];\n if (header instanceof Headers) {\n header = buildOutgoingHttpHeaders(header);\n }\n if (typeof body === \"string\") {\n header[\"Content-Length\"] = Buffer.byteLength(body);\n } else if (body instanceof Uint8Array) {\n header[\"Content-Length\"] = body.byteLength;\n } else if (body instanceof Blob) {\n header[\"Content-Length\"] = body.size;\n }\n outgoing.writeHead(status, header);\n if (typeof body === \"string\" || body instanceof Uint8Array) {\n outgoing.end(body);\n } else if (body instanceof Blob) {\n outgoing.end(new Uint8Array(await body.arrayBuffer()));\n } else {\n flushHeaders(outgoing);\n await writeFromReadableStream(body, outgoing)?.catch(\n (e) => handleResponseError(e, outgoing)\n );\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar isPromise = (res) => typeof res.then === \"function\";\nvar responseViaResponseObject = async (res, outgoing, options = {}) => {\n if (isPromise(res)) {\n if (options.errorHandler) {\n try {\n res = await res;\n } catch (err) {\n const errRes = await options.errorHandler(err);\n if (!errRes) {\n return;\n }\n res = errRes;\n }\n } else {\n res = await res.catch(handleFetchError);\n }\n }\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n const resHeaderRecord = buildOutgoingHttpHeaders(res.headers);\n if (res.body) {\n const reader = res.body.getReader();\n const values = [];\n let done = false;\n let currentReadPromise = void 0;\n if (resHeaderRecord[\"transfer-encoding\"] !== \"chunked\") {\n let maxReadCount = 2;\n for (let i = 0; i < maxReadCount; i++) {\n currentReadPromise ||= reader.read();\n const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => {\n console.error(e);\n done = true;\n });\n if (!chunk) {\n if (i === 1) {\n await new Promise((resolve) => setTimeout(resolve));\n maxReadCount = 3;\n continue;\n }\n break;\n }\n currentReadPromise = void 0;\n if (chunk.value) {\n values.push(chunk.value);\n }\n if (chunk.done) {\n done = true;\n break;\n }\n }\n if (done && !(\"content-length\" in resHeaderRecord)) {\n resHeaderRecord[\"content-length\"] = values.reduce((acc, value) => acc + value.length, 0);\n }\n }\n outgoing.writeHead(res.status, resHeaderRecord);\n values.forEach((value) => {\n ;\n outgoing.write(value);\n });\n if (done) {\n outgoing.end();\n } else {\n if (values.length === 0) {\n flushHeaders(outgoing);\n }\n await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise);\n }\n } else if (resHeaderRecord[X_ALREADY_SENT]) {\n } else {\n outgoing.writeHead(res.status, resHeaderRecord);\n outgoing.end();\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar getRequestListener = (fetchCallback, options = {}) => {\n const autoCleanupIncoming = options.autoCleanupIncoming ?? true;\n if (options.overrideGlobalObjects !== false && global.Request !== Request) {\n Object.defineProperty(global, \"Request\", {\n value: Request\n });\n Object.defineProperty(global, \"Response\", {\n value: Response2\n });\n }\n return async (incoming, outgoing) => {\n let res, req;\n try {\n req = newRequest(incoming, options.hostname);\n let incomingEnded = !autoCleanupIncoming || incoming.method === \"GET\" || incoming.method === \"HEAD\";\n if (!incomingEnded) {\n ;\n incoming[wrapBodyStream] = true;\n incoming.on(\"end\", () => {\n incomingEnded = true;\n });\n if (incoming instanceof Http2ServerRequest2) {\n ;\n outgoing[outgoingEnded] = () => {\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n outgoing.destroy();\n });\n }\n });\n }\n };\n }\n }\n outgoing.on(\"close\", () => {\n const abortController = req[abortControllerKey];\n if (abortController) {\n if (incoming.errored) {\n req[abortControllerKey].abort(incoming.errored.toString());\n } else if (!outgoing.writableFinished) {\n req[abortControllerKey].abort(\"Client connection prematurely closed.\");\n }\n }\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n });\n }\n });\n }\n });\n res = fetchCallback(req, { incoming, outgoing });\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n } catch (e) {\n if (!res) {\n if (options.errorHandler) {\n res = await options.errorHandler(req ? e : toRequestError(e));\n if (!res) {\n return;\n }\n } else if (!req) {\n res = handleRequestError();\n } else {\n res = handleFetchError(e);\n }\n } else {\n return handleResponseError(e, outgoing);\n }\n }\n try {\n return await responseViaResponseObject(res, outgoing, options);\n } catch (e) {\n return handleResponseError(e, outgoing);\n }\n };\n};\n\n// src/server.ts\nvar createAdaptorServer = (options) => {\n const fetchCallback = options.fetch;\n const requestListener = getRequestListener(fetchCallback, {\n hostname: options.hostname,\n overrideGlobalObjects: options.overrideGlobalObjects,\n autoCleanupIncoming: options.autoCleanupIncoming\n });\n const createServer = options.createServer || createServerHTTP;\n const server = createServer(options.serverOptions || {}, requestListener);\n return server;\n};\nvar serve = (options, listeningListener) => {\n const server = createAdaptorServer(options);\n server.listen(options?.port ?? 3e3, options.hostname, () => {\n const serverInfo = server.address();\n listeningListener && listeningListener(serverInfo);\n });\n return server;\n};\nexport {\n RequestError,\n createAdaptorServer,\n getRequestListener,\n serve\n};\n","// src/serve-static.ts\nimport { getMimeType } from \"hono/utils/mime\";\nimport { createReadStream, lstatSync, existsSync } from \"fs\";\nimport { join } from \"path\";\nvar COMPRESSIBLE_CONTENT_TYPE_REGEX = /^\\s*(?:text\\/[^;\\s]+|application\\/(?:javascript|json|xml|xml-dtd|ecmascript|dart|postscript|rtf|tar|toml|vnd\\.dart|vnd\\.ms-fontobject|vnd\\.ms-opentype|wasm|x-httpd-php|x-javascript|x-ns-proxy-autoconfig|x-sh|x-tar|x-virtualbox-hdd|x-virtualbox-ova|x-virtualbox-ovf|x-virtualbox-vbox|x-virtualbox-vdi|x-virtualbox-vhd|x-virtualbox-vmdk|x-www-form-urlencoded)|font\\/(?:otf|ttf)|image\\/(?:bmp|vnd\\.adobe\\.photoshop|vnd\\.microsoft\\.icon|vnd\\.ms-dds|x-icon|x-ms-bmp)|message\\/rfc822|model\\/gltf-binary|x-shader\\/x-fragment|x-shader\\/x-vertex|[^;\\s]+?\\+(?:json|text|xml|yaml))(?:[;\\s]|$)/i;\nvar ENCODINGS = {\n br: \".br\",\n zstd: \".zst\",\n gzip: \".gz\"\n};\nvar ENCODINGS_ORDERED_KEYS = Object.keys(ENCODINGS);\nvar createStreamBody = (stream) => {\n const body = new ReadableStream({\n start(controller) {\n stream.on(\"data\", (chunk) => {\n controller.enqueue(chunk);\n });\n stream.on(\"error\", (err) => {\n controller.error(err);\n });\n stream.on(\"end\", () => {\n controller.close();\n });\n },\n cancel() {\n stream.destroy();\n }\n });\n return body;\n};\nvar getStats = (path) => {\n let stats;\n try {\n stats = lstatSync(path);\n } catch {\n }\n return stats;\n};\nvar serveStatic = (options = { root: \"\" }) => {\n const root = options.root || \"\";\n const optionPath = options.path;\n if (root !== \"\" && !existsSync(root)) {\n console.error(`serveStatic: root path '${root}' is not found, are you sure it's correct?`);\n }\n return async (c, next) => {\n if (c.finalized) {\n return next();\n }\n let filename;\n if (optionPath) {\n filename = optionPath;\n } else {\n try {\n filename = decodeURIComponent(c.req.path);\n if (/(?:^|[\\/\\\\])\\.\\.(?:$|[\\/\\\\])/.test(filename)) {\n throw new Error();\n }\n } catch {\n await options.onNotFound?.(c.req.path, c);\n return next();\n }\n }\n let path = join(\n root,\n !optionPath && options.rewriteRequestPath ? options.rewriteRequestPath(filename, c) : filename\n );\n let stats = getStats(path);\n if (stats && stats.isDirectory()) {\n const indexFile = options.index ?? \"index.html\";\n path = join(path, indexFile);\n stats = getStats(path);\n }\n if (!stats) {\n await options.onNotFound?.(path, c);\n return next();\n }\n const mimeType = getMimeType(path);\n c.header(\"Content-Type\", mimeType || \"application/octet-stream\");\n if (options.precompressed && (!mimeType || COMPRESSIBLE_CONTENT_TYPE_REGEX.test(mimeType))) {\n const acceptEncodingSet = new Set(\n c.req.header(\"Accept-Encoding\")?.split(\",\").map((encoding) => encoding.trim())\n );\n for (const encoding of ENCODINGS_ORDERED_KEYS) {\n if (!acceptEncodingSet.has(encoding)) {\n continue;\n }\n const precompressedStats = getStats(path + ENCODINGS[encoding]);\n if (precompressedStats) {\n c.header(\"Content-Encoding\", encoding);\n c.header(\"Vary\", \"Accept-Encoding\", { append: true });\n stats = precompressedStats;\n path = path + ENCODINGS[encoding];\n break;\n }\n }\n }\n let result;\n const size = stats.size;\n const range = c.req.header(\"range\") || \"\";\n if (c.req.method == \"HEAD\" || c.req.method == \"OPTIONS\") {\n c.header(\"Content-Length\", size.toString());\n c.status(200);\n result = c.body(null);\n } else if (!range) {\n c.header(\"Content-Length\", size.toString());\n result = c.body(createStreamBody(createReadStream(path)), 200);\n } else {\n c.header(\"Accept-Ranges\", \"bytes\");\n c.header(\"Date\", stats.birthtime.toUTCString());\n const parts = range.replace(/bytes=/, \"\").split(\"-\", 2);\n const start = parseInt(parts[0], 10) || 0;\n let end = parseInt(parts[1], 10) || size - 1;\n if (size < end - start + 1) {\n end = size - 1;\n }\n const chunksize = end - start + 1;\n const stream = createReadStream(path, { start, end });\n c.header(\"Content-Length\", chunksize.toString());\n c.header(\"Content-Range\", `bytes ${start}-${end}/${stats.size}`);\n result = c.body(createStreamBody(stream), 206);\n }\n await options.onFound?.(path, c);\n return result;\n };\n};\nexport {\n serveStatic\n};\n","// src/index.ts\nimport { html } from \"hono/html\";\n\n// src/swagger/renderer.ts\nvar RENDER_TYPE = {\n STRING_ARRAY: \"string_array\",\n STRING: \"string\",\n JSON_STRING: \"json_string\",\n RAW: \"raw\"\n};\nvar RENDER_TYPE_MAP = {\n configUrl: RENDER_TYPE.STRING,\n deepLinking: RENDER_TYPE.RAW,\n presets: RENDER_TYPE.STRING_ARRAY,\n plugins: RENDER_TYPE.STRING_ARRAY,\n spec: RENDER_TYPE.JSON_STRING,\n url: RENDER_TYPE.STRING,\n urls: RENDER_TYPE.JSON_STRING,\n layout: RENDER_TYPE.STRING,\n docExpansion: RENDER_TYPE.STRING,\n maxDisplayedTags: RENDER_TYPE.RAW,\n operationsSorter: RENDER_TYPE.RAW,\n requestInterceptor: RENDER_TYPE.RAW,\n responseInterceptor: RENDER_TYPE.RAW,\n persistAuthorization: RENDER_TYPE.RAW,\n defaultModelsExpandDepth: RENDER_TYPE.RAW,\n defaultModelExpandDepth: RENDER_TYPE.RAW,\n defaultModelRendering: RENDER_TYPE.STRING,\n displayRequestDuration: RENDER_TYPE.RAW,\n filter: RENDER_TYPE.RAW,\n showExtensions: RENDER_TYPE.RAW,\n showCommonExtensions: RENDER_TYPE.RAW,\n queryConfigEnabled: RENDER_TYPE.RAW,\n displayOperationId: RENDER_TYPE.RAW,\n tagsSorter: RENDER_TYPE.RAW,\n onComplete: RENDER_TYPE.RAW,\n syntaxHighlight: RENDER_TYPE.JSON_STRING,\n tryItOutEnabled: RENDER_TYPE.RAW,\n requestSnippetsEnabled: RENDER_TYPE.RAW,\n requestSnippets: RENDER_TYPE.JSON_STRING,\n oauth2RedirectUrl: RENDER_TYPE.STRING,\n showMutabledRequest: RENDER_TYPE.RAW,\n request: RENDER_TYPE.JSON_STRING,\n supportedSubmitMethods: RENDER_TYPE.JSON_STRING,\n validatorUrl: RENDER_TYPE.STRING,\n withCredentials: RENDER_TYPE.RAW,\n modelPropertyMacro: RENDER_TYPE.RAW,\n parameterMacro: RENDER_TYPE.RAW\n};\nvar renderSwaggerUIOptions = (options) => {\n const optionsStrings = Object.entries(options).map(([k, v]) => {\n const key = k;\n if (!RENDER_TYPE_MAP[key] || v === void 0) {\n return \"\";\n }\n switch (RENDER_TYPE_MAP[key]) {\n case RENDER_TYPE.STRING:\n return `${key}: '${v}'`;\n case RENDER_TYPE.STRING_ARRAY:\n if (!Array.isArray(v)) {\n return \"\";\n }\n return `${key}: [${v.map((ve) => `${ve}`).join(\",\")}]`;\n case RENDER_TYPE.JSON_STRING:\n return `${key}: ${JSON.stringify(v)}`;\n case RENDER_TYPE.RAW:\n return `${key}: ${v}`;\n default:\n return \"\";\n }\n }).filter((item) => item !== \"\").join(\",\");\n return optionsStrings;\n};\n\n// src/swagger/resource.ts\nvar remoteAssets = ({ version }) => {\n const url = `https://cdn.jsdelivr.net/npm/swagger-ui-dist${version !== void 0 ? `@${version}` : \"\"}`;\n return {\n css: [`${url}/swagger-ui.css`],\n js: [`${url}/swagger-ui-bundle.js`]\n };\n};\n\n// src/index.ts\nvar SwaggerUI = (options) => {\n const asset = remoteAssets({ version: options?.version });\n delete options.version;\n if (options.manuallySwaggerUIHtml) {\n return options.manuallySwaggerUIHtml(asset);\n }\n const optionsStrings = renderSwaggerUIOptions(options);\n return `\n <div>\n <div id=\"swagger-ui\"></div>\n ${asset.css.map((url) => html`<link rel=\"stylesheet\" href=\"${url}\" />`)}\n ${asset.js.map((url) => html`<script src=\"${url}\" crossorigin=\"anonymous\"></script>`)}\n <script>\n window.onload = () => {\n window.ui = SwaggerUIBundle({\n dom_id: '#swagger-ui',${optionsStrings},\n })\n }\n </script>\n </div>\n `;\n};\nvar middleware = (options) => async (c) => {\n const title = options?.title ?? \"SwaggerUI\";\n return c.html(\n /* html */\n `\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"description\" content=\"SwaggerUI\" />\n <title>${title}</title>\n </head>\n <body>\n ${SwaggerUI(options)}\n </body>\n </html>\n `\n );\n};\nexport {\n SwaggerUI,\n middleware as swaggerUI\n};\n","const e=Symbol(\"openapi\");async function s(e,s){const n=await s,o={};if(\"form\"===e||\"json\"===e){const s=\"json\"===e?\"application/json\":\"multipart/form-data\";o.requestBody&&\"content\"in o.requestBody&&o.requestBody.content?o.requestBody.content[s]={schema:n.schema}:o.requestBody={content:{[s]:{schema:n.schema}}}}else{const s=[];if(\"$ref\"in n.schema)s.push({in:e,name:n.schema.$ref,schema:n.schema});else for(const[o,t]of Object.entries(n.schema.properties??{}))s.push({in:e,name:o,schema:t,required:n.schema.required?.includes(o)});o.parameters=s}return{docs:o,components:n.components}}export{s as g,e as u};\n","import{u as e}from\"./utils.js\";export{g as generateValidatorDocs}from\"./utils.js\";import{HTTPException as t}from\"hono/http-exception\";const n=[\"GET\",\"PUT\",\"POST\",\"DELETE\",\"OPTIONS\",\"HEAD\",\"PATCH\",\"TRACE\"],s=e=>e.charAt(0).toUpperCase()+e.slice(1),o=new Map,a=(e,t)=>{const n=`${e}:${t}`;if(o.has(n))return o.get(n);let a=e;if(\"/\"===t)return`${a}Index`;for(const e of t.split(\"/\"))123===e.charCodeAt(0)?a+=`By${s(e.slice(1,-1))}`:a+=s(e);return o.set(n,a),a},r=new Map;function c(e,t,n){return e&&t in e?e[t]??n:n}function i(...e){return e.reduce(((e,t)=>{if(!t)return e;let n;return(\"tags\"in e&&e.tags||\"tags\"in t&&t.tags)&&(n=Array.from(new Set([...c(e,\"tags\",[]),...c(t,\"tags\",[])]))),{...e,...t,tags:n,responses:{...c(e,\"responses\",{}),...c(t,\"responses\",{})},parameters:m(e.parameters,t.parameters)}}),{})}function p({path:e,method:t,data:n,schema:s}){e=(e=>e.split(\"/\").map((e=>{let t=e;if(t.startsWith(\":\")){const e=t.match(/^:([^{?]+)(?:{(.+)})?(\\?)?$/);e?t=`{${e[1]}}`:(t=t.slice(1,t.length),t.endsWith(\"?\")&&(t=t.slice(0,-1)),t=`{${t}}`)}return t})).join(\"/\"))(e);const o=t.toLowerCase();if(\"all\"===o){if(!n)return;if(r.has(e)){const t=r.get(e)??{};r.set(e,{...t,...n,parameters:m(t.parameters,n.parameters)})}else r.set(e,n)}else{const t=function(e){const t=Array.from(r.keys());let n={};for(const s of t)e.match(s)&&(n=i(n,r.get(s)??{}));return n}(e);s[e]={...s[e]?s[e]:{},[o]:{responses:{},operationId:a(o,e),...i(t,s[e]?.[o],n)}}}}const f=e=>\"$ref\"in e?e.$ref:`${e.in} ${e.name}`;function m(...e){const t=e.flatMap((e=>e??[])).reduce(((e,t)=>(e.set(f(t),t),e)),new Map);return Array.from(t.values())}function l(e,{excludeStaticFile:t=!0,exclude:n=[]}){const s={},o=Array.isArray(n)?n:[n];for(const[n,a]of Object.entries(e))if(!o.some((e=>\"string\"==typeof e?n===e:e.test(n)))&&(!n.includes(\"*\")||n.includes(\"{\"))&&(!t||(!n.includes(\".\")||n.includes(\"{\")))){for(const e of Object.keys(a)){const t=a[e];if(n.includes(\"{\")){t.parameters||(t.parameters=[]);const e=n.split(\"/\").filter((e=>e.startsWith(\"{\")&&!t.parameters.find((t=>\"path\"===t.in&&t.name===e.slice(1,e.length-1)))));for(const n of e){const e=n.slice(1,n.length-1),s=t.parameters.findIndex((t=>\"param\"===t.in&&t.name===e));-1!==s?t.parameters[s].in=\"path\":t.parameters.push({schema:{type:\"string\"},in:\"path\",name:e,required:!0})}}t.responses||(t.responses={200:{}})}s[n]=a}return s}const u={documentation:{},excludeStaticFile:!0,exclude:[],excludeMethods:[\"OPTIONS\"],excludeTags:[]},d={version:\"3.1.0\",components:{}};function h(e,t){const n={version:\"3.1.0\",components:{}};let s;return async o=>(s||(s=await y(e,t,n,o)),o.json(s))}async function y(t,s=u,o=d,a){const r={...u,...s},c={...d,...o},i=r.documentation??{},f=await async function(t,s,o){const a={};for(const r of t.routes){if(!(e in r.handler)){s.includeEmptyPaths&&p({method:r.method,path:r.path,schema:a});continue}if(s.excludeMethods.includes(r.method))continue;if(!1===n.includes(r.method)&&\"ALL\"!==r.method)continue;const{resolver:t,metadata:c={}}=r.handler[e],i=s.defaultOptions?.[r.method],{docs:f,components:m}=await t({...o,...c},i);o.components={...o.components,...m??{}},p({method:r.method,path:r.path,data:f,schema:a})}return a}(t,r,c);for(const e in f)for(const t in f[e]){const n=f[e][t]?.hide;if(n){let s=!1;\"boolean\"==typeof n?s=n:\"function\"==typeof n&&(a?s=n(a):console.warn(`'c' is not defined, cannot evaluate hide function for ${t} ${e}`)),s&&delete f[e][t]}}return{openapi:c.version,...{...i,tags:i.tags?.filter((e=>!r.excludeTags?.includes(e?.name))),info:{title:\"Hono Documentation\",description:\"Development documentation\",version:\"0.0.0\",...i.info},paths:{...l(f,r),...i.paths},components:{...i.components,schemas:{...c.components,...i.components?.schemas}}}}}function w(n){const{validateResponse:s,...o}=n;return Object.assign((async(e,o)=>{if(await o(),s&&n.responses){const o=e.res.status,a=e.res.headers.get(\"content-type\");if(o&&a){const r=n.responses[o];if(r&&\"content\"in r&&r.content){const n=a.split(\";\")[0],o=r.content[n];if(o?.schema&&\"validator\"in o.schema)try{let t;const s=e.res.clone();if(\"application/json\"===n?t=await s.json():\"text/plain\"===n&&(t=await s.text()),!t)throw new Error(\"No data to validate!\");await o.schema.validator(t)}catch(e){let n={status:500,message:\"Response validation failed!\"};throw\"object\"==typeof s&&(n={...n,...s}),new t(n.status,{message:n.message,cause:e})}}}}}),{[e]:{resolver:(e,t)=>x(e,o,t)}})}async function x(e,t,n={}){let s={};const o={...n,...t,responses:{...n?.responses,...t.responses}};if(o.responses)for(const t of Object.keys(o.responses)){const n=o.responses[t];if(n&&\"content\"in n)for(const t of Object.keys(n.content??{})){const o=n.content?.[t];if(o&&(o.schema&&\"builder\"in o.schema)){const t=await o.schema.builder(e);o.schema=t.schema,t.components&&(s={...s,...t.components})}}}return{docs:o,components:s}}export{w as describeRoute,x as generateRouteSpecs,y as generateSpecs,h as openAPISpecs,e as uniqueSymbol};\n","import { randomUUID } from 'crypto';\nimport type { MessageSendParams, TaskQueryParams, TaskIdParams } from '@mastra/core/a2a';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport {\n getAgentCardByIdHandler as getOriginalAgentCardByIdHandler,\n getAgentExecutionHandler as getOriginalAgentExecutionHandler,\n} from '@mastra/server/handlers/a2a';\n\nimport type { Context } from 'hono';\nimport { stream } from 'hono/streaming';\n\nexport async function getAgentCardByIdHandler(c: Context) {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n\n const result = await getOriginalAgentCardByIdHandler({\n mastra,\n agentId,\n requestContext,\n });\n\n return c.json(result);\n}\n\nexport async function getAgentExecutionHandler(c: Context) {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const taskStore: InMemoryTaskStore = c.get('taskStore');\n const logger = mastra.getLogger();\n const body = await c.req.json();\n\n // Validate the method is one of the allowed A2A methods\n if (!['message/send', 'message/stream', 'tasks/get', 'tasks/cancel'].includes(body.method)) {\n return c.json({ error: { message: `Unsupported method: ${body.method}`, code: 'invalid_method' } }, 400);\n }\n\n const result = await getOriginalAgentExecutionHandler({\n mastra,\n agentId,\n requestContext,\n requestId: randomUUID(),\n method: body.method as 'message/send' | 'message/stream' | 'tasks/get' | 'tasks/cancel',\n params: body.params as MessageSendParams | TaskQueryParams | TaskIdParams,\n taskStore,\n logger,\n });\n\n if (body.method === 'message/stream') {\n return stream(\n c,\n async stream => {\n try {\n stream.onAbort(() => {\n if (!result.locked) {\n return result.cancel();\n }\n });\n\n for await (const chunk of result) {\n await stream.write(JSON.stringify(chunk) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in message/stream stream: ' + (err as Error)?.message);\n }\n },\n async err => {\n logger.error('Error in message/stream stream: ' + (err as Error)?.message);\n },\n );\n }\n\n return c.json(result);\n}\n","import type { MastraAuthConfig } from '@mastra/core/server';\n\n// Default configuration that can be extended by clients\nexport const defaultAuthConfig: MastraAuthConfig = {\n protected: ['/api/*'],\n public: ['/api'],\n // Simple rule system\n rules: [\n // Admin users can do anything\n {\n condition: user => {\n if (typeof user === 'object' && user !== null) {\n if ('isAdmin' in user) {\n return !!user.isAdmin;\n }\n\n if ('role' in user) {\n return user.role === 'admin';\n }\n }\n return false;\n },\n allow: true,\n },\n ],\n};\n","import type { MastraAuthConfig } from '@mastra/core/server';\nimport type { HonoRequest } from 'hono';\nimport { defaultAuthConfig } from './defaults';\n\nexport const isDevPlaygroundRequest = (req: HonoRequest): boolean => {\n return req.header('x-mastra-dev-playground') === 'true' && process.env.MASTRA_DEV === 'true';\n};\n\nexport const isCustomRoutePublic = (\n path: string,\n method: string,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n if (!customRouteAuthConfig) {\n return false;\n }\n\n // Check exact match first\n const routeKey = `${method}:${path}`;\n if (customRouteAuthConfig.has(routeKey)) {\n return !customRouteAuthConfig.get(routeKey); // Return true if requiresAuth is false\n }\n\n // Check ALL method\n const allRouteKey = `ALL:${path}`;\n if (customRouteAuthConfig.has(allRouteKey)) {\n return !customRouteAuthConfig.get(allRouteKey);\n }\n\n return false;\n};\n\nexport const isProtectedPath = (\n path: string,\n method: string,\n authConfig: MastraAuthConfig,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n const protectedAccess = [...(defaultAuthConfig.protected || []), ...(authConfig.protected || [])];\n return isAnyMatch(path, method, protectedAccess) || !isCustomRoutePublic(path, method, customRouteAuthConfig);\n};\n\nexport const canAccessPublicly = (path: string, method: string, authConfig: MastraAuthConfig): boolean => {\n // Check if this path+method combination is publicly accessible\n const publicAccess = [...(defaultAuthConfig.public || []), ...(authConfig.public || [])];\n\n return isAnyMatch(path, method, publicAccess);\n};\n\nconst isAnyMatch = (\n path: string,\n method: string,\n patterns: MastraAuthConfig['protected'] | MastraAuthConfig['public'],\n): boolean => {\n if (!patterns) {\n return false;\n }\n\n for (const patternPathOrMethod of patterns) {\n if (patternPathOrMethod instanceof RegExp) {\n if (patternPathOrMethod.test(path)) {\n return true;\n }\n }\n\n if (typeof patternPathOrMethod === 'string' && pathMatchesPattern(path, patternPathOrMethod)) {\n return true;\n }\n\n if (Array.isArray(patternPathOrMethod) && patternPathOrMethod.length === 2) {\n const [pattern, methodOrMethods] = patternPathOrMethod;\n if (pathMatchesPattern(path, pattern) && matchesOrIncludes(methodOrMethods, method)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nexport const pathMatchesPattern = (path: string, pattern: string): boolean => {\n // Simple pattern matching that supports wildcards\n // e.g., '/api/agents/*' matches '/api/agents/123'\n if (pattern.endsWith('*')) {\n const prefix = pattern.slice(0, -1);\n return path.startsWith(prefix);\n }\n return path === pattern;\n};\n\nexport const pathMatchesRule = (path: string, rulePath: string | RegExp | string[] | undefined): boolean => {\n if (!rulePath) return true; // No path specified means all paths\n\n if (typeof rulePath === 'string') {\n return pathMatchesPattern(path, rulePath);\n }\n\n if (rulePath instanceof RegExp) {\n return rulePath.test(path);\n }\n\n if (Array.isArray(rulePath)) {\n return rulePath.some(p => pathMatchesPattern(path, p));\n }\n\n return false;\n};\n\nexport const matchesOrIncludes = (values: string | string[], value: string): boolean => {\n if (typeof values === 'string') {\n return values === value;\n }\n\n if (Array.isArray(values)) {\n return values.includes(value);\n }\n\n return false;\n};\n\n// Check authorization rules\nexport const checkRules = async (\n rules: MastraAuthConfig['rules'],\n path: string,\n method: string,\n user: unknown,\n): Promise<boolean> => {\n // Go through rules in order (first match wins)\n for (const i in rules || []) {\n const rule = rules?.[i]!;\n // Check if rule applies to this path\n if (!pathMatchesRule(path, rule.path)) {\n continue;\n }\n\n // Check if rule applies to this method\n if (rule.methods && !matchesOrIncludes(rule.methods, method)) {\n continue;\n }\n\n // Rule matches, check conditions\n const condition = rule.condition;\n if (typeof condition === 'function') {\n const allowed = await Promise.resolve()\n .then(() => condition(user))\n .catch(() => false);\n\n if (allowed) {\n return true;\n }\n } else if (rule.allow) {\n return true;\n }\n }\n\n // No matching rules, deny by default\n return false;\n};\n","import type { ContextWithMastra } from '@mastra/core/server';\nimport type { Next } from 'hono';\nimport { defaultAuthConfig } from './defaults';\nimport { canAccessPublicly, checkRules, isProtectedPath, isDevPlaygroundRequest } from './helpers';\n\nexport const authenticationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authentication\n return next();\n }\n\n if (isDevPlaygroundRequest(c.req)) {\n // Skip authentication for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip authentication for public routes\n if (canAccessPublicly(c.req.path, c.req.method, authConfig)) {\n return next();\n }\n\n // Get token from header or query\n const authHeader = c.req.header('Authorization');\n let token: string | null = authHeader ? authHeader.replace('Bearer ', '') : null;\n\n if (!token && c.req.query('apiKey')) {\n token = c.req.query('apiKey') || null;\n }\n\n // Handle missing token\n if (!token) {\n return c.json({ error: 'Authentication required' }, 401);\n }\n\n try {\n // Verify token and get user data\n let user: unknown;\n\n // Client provided verify function\n if (typeof authConfig.authenticateToken === 'function') {\n user = await authConfig.authenticateToken(token, c.req);\n } else {\n throw new Error('No token verification method configured');\n }\n\n if (!user) {\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n\n // Store user in context\n c.get('requestContext').set('user', user);\n\n return next();\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n};\n\nexport const authorizationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authorization\n return next();\n }\n\n const path = c.req.path;\n const method = c.req.method;\n\n if (isDevPlaygroundRequest(c.req)) {\n // Skip authorization for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip for public routes\n if (canAccessPublicly(path, method, authConfig)) {\n return next();\n }\n\n const user = c.get('requestContext').get('user');\n\n if ('authorizeUser' in authConfig && typeof authConfig.authorizeUser === 'function') {\n try {\n const isAuthorized = await authConfig.authorizeUser(user, c.req);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Client-provided authorization function\n if ('authorize' in authConfig && typeof authConfig.authorize === 'function') {\n try {\n const isAuthorized = await authConfig.authorize(path, method, user, c);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Custom rule-based authorization\n if ('rules' in authConfig && authConfig.rules && authConfig.rules.length > 0) {\n const isAuthorized = await checkRules(authConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n }\n\n // Default rule-based authorization\n if (defaultAuthConfig.rules && defaultAuthConfig.rules.length > 0) {\n const isAuthorized = await checkRules(defaultAuthConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n }\n\n return c.json({ error: 'Access denied' }, 403);\n};\n","import type { Context } from 'hono';\n\nconst clients = new Set<ReadableStreamDefaultController>();\nlet hotReloadDisabled = false;\n\nexport function handleClientsRefresh(c: Context): Response {\n const stream = new ReadableStream({\n start(controller) {\n clients.add(controller);\n controller.enqueue('data: connected\\n\\n');\n\n c.req.raw.signal.addEventListener('abort', () => {\n clients.delete(controller);\n });\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'Access-Control-Allow-Origin': '*',\n },\n });\n}\n\nexport function handleTriggerClientsRefresh(c: Context) {\n clients.forEach(controller => {\n try {\n controller.enqueue('data: refresh\\n\\n');\n } catch {\n clients.delete(controller);\n }\n });\n return c.json({ success: true, clients: clients.size });\n}\n\n// Functions to control hot reload during template installation\nexport function disableHotReload() {\n hotReloadDisabled = true;\n console.info('🔒 Hot reload disabled for template installation');\n}\n\nexport function enableHotReload() {\n hotReloadDisabled = false;\n console.info('🔓 Hot reload re-enabled after template installation');\n}\n\nexport function isHotReloadDisabled(): boolean {\n return hotReloadDisabled;\n}\n","import type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\nimport type { ContentfulStatusCode } from 'hono/utils/http-status';\n\nimport type { ApiError } from '../types';\n\n// Helper to handle errors consistently\nexport function handleError(error: unknown, defaultMessage: string): Promise<Response> {\n const apiError = error as ApiError;\n throw new HTTPException((apiError.status || 500) as ContentfulStatusCode, {\n message: apiError.message || defaultMessage,\n cause: apiError.cause,\n });\n}\nexport function errorHandler(err: Error, c: Context, isDev?: boolean): Response {\n if (err instanceof HTTPException) {\n if (isDev) {\n return c.json({ error: err.message, cause: err.cause, stack: err.stack }, err.status);\n }\n return c.json({ error: err.message }, err.status);\n }\n\n c.get('mastra').getLogger().error(err);\n return c.json({ error: 'Internal Server Error' }, 500);\n}\n","import type { Context } from 'hono';\n\n// Health check handler\nexport async function healthHandler(c: Context) {\n return c.json({ success: true }, 200);\n}\n","import type { Context } from 'hono';\n\n// Root handler\nexport async function rootHandler(c: Context) {\n const baseUrl = new URL(c.req.url).origin;\n\n return c.html(\n /* html */\n `\n <!doctype html>\n <html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Mastra API</title>\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/inter-ui/3.19.3/inter.min.css\" />\n <style>\n body {\n margin: 0;\n padding: 0;\n background-color: #0d0d0d;\n color: #ffffff;\n font-family:\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n system-ui,\n sans-serif;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n main {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n text-align: center;\n }\n\n h1 {\n font-size: 4rem;\n font-weight: 600;\n margin: 0 0 1rem 0;\n background: linear-gradient(to right, #fff, #ccc);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n line-height: 1.2;\n }\n\n .subtitle {\n color: #9ca3af;\n font-size: 1.25rem;\n max-width: 600px;\n margin: 0 auto 3rem auto;\n line-height: 1.6;\n }\n\n .link {\n color: #ffffff;\n }\n\n .link:hover {\n text-decoration: none;\n }\n\n .docs-link {\n background-color: #1a1a1a;\n padding: 1rem 2rem;\n border-radius: 0.5rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n font-family: monospace;\n font-size: 1rem;\n color: #ffffff;\n text-decoration: none;\n transition: background-color 0.2s;\n }\n\n .docs-link:hover {\n background-color: #252525;\n }\n\n .arrow-icon {\n transition: transform 0.2s;\n }\n\n .docs-link:hover .arrow-icon {\n transform: translateX(4px);\n }\n </style>\n </head>\n <body>\n <main>\n <h1>Welcome to the Mastra API</h1>\n <p class=\"subtitle\">\n Discover all available endpoints through Swagger UI. You can also define your own <a href=\"https://mastra.ai/docs/server-db/custom-api-routes\" target=\"_blank\" class=\"link\">API routes</a>.\n </p>\n <a href=\"${baseUrl}/swagger-ui\" target=\"_blank\" class=\"docs-link\">\n Browse Swagger UI\n <svg\n class=\"arrow-icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\n </svg>\n </a>\n </main>\n </body>\n </html>\n `,\n );\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport {\n getAgentBuilderActionsHandler as getOriginalAgentBuilderActionsHandler,\n getAgentBuilderActionByIdHandler as getOriginalAgentBuilderActionByIdHandler,\n startAsyncAgentBuilderActionHandler as getOriginalStartAsyncAgentBuilderActionHandler,\n createAgentBuilderActionRunHandler as getOriginalCreateAgentBuilderActionRunHandler,\n startAgentBuilderActionRunHandler as getOriginalStartAgentBuilderActionRunHandler,\n streamAgentBuilderActionHandler as getOriginalStreamAgentBuilderActionHandler,\n streamLegacyAgentBuilderActionHandler as getOriginalStreamLegacyAgentBuilderActionHandler,\n streamVNextAgentBuilderActionHandler as getOriginalStreamVNextAgentBuilderActionHandler,\n observeStreamLegacyAgentBuilderActionHandler as getOriginalObserveStreamLegacyAgentBuilderActionHandler,\n observeStreamAgentBuilderActionHandler as getOriginalObserveStreamAgentBuilderActionHandler,\n observeStreamVNextAgentBuilderActionHandler as getOriginalObserveStreamVNextAgentBuilderActionHandler,\n resumeAsyncAgentBuilderActionHandler as getOriginalResumeAsyncAgentBuilderActionHandler,\n resumeAgentBuilderActionHandler as getOriginalResumeAgentBuilderActionHandler,\n resumeStreamAgentBuilderActionHandler as getOriginalResumeStreamAgentBuilderActionHandler,\n getAgentBuilderActionRunsHandler as getOriginalGetAgentBuilderActionRunsHandler,\n getAgentBuilderActionRunByIdHandler as getOriginalGetAgentBuilderActionRunByIdHandler,\n getAgentBuilderActionRunExecutionResultHandler as getOriginalGetAgentBuilderActionRunExecutionResultHandler,\n cancelAgentBuilderActionRunHandler as getOriginalCancelAgentBuilderActionRunHandler,\n} from '@mastra/server/handlers/agent-builder';\nimport type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\nimport { stream } from 'hono/streaming';\n\nimport { disableHotReload, enableHotReload } from '../../client';\nimport { handleError } from '../../error';\n\nexport async function getAgentBuilderActionsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n\n const actions = await getOriginalAgentBuilderActionsHandler({\n mastra,\n });\n\n return c.json(actions);\n } catch (error) {\n return handleError(error, 'Error getting agent builder actions');\n }\n}\n\nexport async function getAgentBuilderActionByIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n\n const action = await getOriginalAgentBuilderActionByIdHandler({\n mastra,\n actionId,\n });\n\n return c.json(action);\n } catch (error) {\n return handleError(error, 'Error getting agent builder action by ID');\n }\n}\n\nexport async function createAgentBuilderActionRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n\n const result = await getOriginalCreateAgentBuilderActionRunHandler({\n mastra,\n actionId,\n runId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error creating agent builder action run');\n }\n}\n\nexport async function startAsyncAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const actionId = c.req.param('actionId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n disableHotReload();\n const result = await getOriginalStartAsyncAgentBuilderActionHandler({\n mastra,\n requestContext,\n actionId,\n runId,\n inputData,\n tracingOptions,\n });\n\n enableHotReload();\n return c.json(result);\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error starting async agent builder action');\n }\n}\n\nexport async function startAgentBuilderActionRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const actionId = c.req.param('actionId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n await getOriginalStartAgentBuilderActionRunHandler({\n mastra,\n requestContext,\n actionId,\n runId,\n inputData,\n tracingOptions,\n });\n\n return c.json({ message: 'Agent builder action run started' });\n } catch (error) {\n return handleError(error, 'Error starting agent builder action run');\n }\n}\n\nexport async function streamAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n return stream(\n c,\n async stream => {\n try {\n disableHotReload();\n const result = await getOriginalStreamAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n inputData,\n requestContext,\n tracingOptions,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in action stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n await stream.close();\n enableHotReload();\n },\n async err => {\n logger.error('Error in action stream: ' + err?.message);\n },\n );\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error streaming agent builder action');\n }\n}\n\nexport async function streamVNextAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const { inputData, closeOnSuspend, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n disableHotReload();\n const result = await getOriginalStreamVNextAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n inputData,\n requestContext,\n closeOnSuspend,\n tracingOptions,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in action VNext stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n enableHotReload();\n },\n async err => {\n logger.error('Error in action VNext stream: ' + err?.message);\n },\n );\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error streaming VNext agent builder action');\n }\n}\n\nexport async function resumeAsyncAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to resume action' });\n }\n\n disableHotReload();\n const result = await getOriginalResumeAsyncAgentBuilderActionHandler({\n mastra,\n requestContext,\n actionId,\n runId,\n body: { step, resumeData },\n tracingOptions,\n });\n\n enableHotReload();\n return c.json(result);\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error resuming async agent builder action');\n }\n}\n\nexport async function resumeAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to resume action' });\n }\n\n disableHotReload();\n await getOriginalResumeAgentBuilderActionHandler({\n mastra,\n requestContext,\n actionId,\n runId,\n body: { step, resumeData },\n tracingOptions,\n });\n\n enableHotReload();\n return c.json({ message: 'Action run resumed' });\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error resuming agent builder action');\n }\n}\n\nexport async function getAgentBuilderActionRunsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n const queryParams = c.req.query();\n const { fromDate, toDate, perPage, page, resourceId } = queryParams;\n\n const runs = await getOriginalGetAgentBuilderActionRunsHandler({\n mastra,\n actionId,\n fromDate: fromDate ? new Date(fromDate) : undefined,\n toDate: toDate ? new Date(toDate) : undefined,\n perPage: perPage !== null && perPage !== undefined && !isNaN(Number(perPage)) ? Number(perPage) : undefined,\n page: page !== null && page !== undefined && !isNaN(Number(page)) ? Number(page) : undefined,\n resourceId,\n });\n\n return c.json(runs);\n } catch (error) {\n return handleError(error, 'Error getting agent builder action runs');\n }\n}\n\nexport async function getAgentBuilderActionRunByIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n const runId = c.req.param('runId');\n\n const run = await getOriginalGetAgentBuilderActionRunByIdHandler({\n mastra,\n actionId,\n runId,\n });\n\n return c.json(run);\n } catch (error) {\n return handleError(error, 'Error getting agent builder action run by ID');\n }\n}\n\nexport async function getAgentBuilderActionRunExecutionResultHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n const runId = c.req.param('runId');\n\n const result = await getOriginalGetAgentBuilderActionRunExecutionResultHandler({\n mastra,\n actionId,\n runId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting agent builder action run execution result');\n }\n}\n\nexport async function cancelAgentBuilderActionRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n const runId = c.req.param('runId');\n\n const result = await getOriginalCancelAgentBuilderActionRunHandler({\n mastra,\n actionId,\n runId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error cancelling agent builder action run');\n }\n}\n\nexport async function streamLegacyAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n return stream(\n c,\n async stream => {\n try {\n disableHotReload();\n const result = await getOriginalStreamLegacyAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n inputData,\n requestContext,\n tracingOptions,\n });\n\n const reader = result?.stream?.getReader();\n\n if (!reader) {\n throw new Error('No reader available from legacy stream');\n }\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in action legacy stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n await stream.close();\n enableHotReload();\n },\n async err => {\n logger.error('Error in action legacy stream: ' + err?.message);\n },\n );\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error streaming legacy agent builder action');\n }\n}\n\nexport async function observeStreamLegacyAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to observe stream' });\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(c, async stream => {\n try {\n disableHotReload();\n const result = await getOriginalObserveStreamLegacyAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n });\n\n const reader = result?.getReader();\n\n if (!reader) {\n throw new Error('No reader available from observe stream');\n }\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n enableHotReload();\n } catch (err) {\n enableHotReload();\n logger.error('Error in observe legacy stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n });\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error observing legacy stream for agent builder action');\n }\n}\n\nexport async function observeStreamAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to observe stream' });\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(c, async stream => {\n try {\n disableHotReload();\n const result = await getOriginalObserveStreamAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n });\n\n const reader = result?.getReader();\n\n if (!reader) {\n throw new Error('No reader available from observe stream');\n }\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n enableHotReload();\n } catch (err) {\n enableHotReload();\n logger.error('Error in observe stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n });\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error observing stream for agent builder action');\n }\n}\n\nexport async function observeStreamVNextAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to observe stream' });\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(c, async stream => {\n try {\n disableHotReload();\n const result = await getOriginalObserveStreamVNextAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n });\n\n const reader = result?.getReader();\n\n if (!reader) {\n throw new Error('No reader available from observe stream VNext');\n }\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n enableHotReload();\n } catch (err) {\n enableHotReload();\n logger.error('Error in observe VNext stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n });\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error observing VNext stream for agent builder action');\n }\n}\n\nexport async function resumeStreamAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to resume stream' });\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n disableHotReload();\n const result = await getOriginalResumeStreamAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n requestContext,\n body: { step, resumeData },\n tracingOptions,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in resume stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n enableHotReload();\n },\n async err => {\n logger.error('Error in resume stream: ' + err?.message);\n },\n );\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error resuming stream for agent builder action');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport {\n createAgentBuilderActionRunHandler,\n getAgentBuilderActionByIdHandler,\n getAgentBuilderActionRunByIdHandler,\n getAgentBuilderActionRunExecutionResultHandler,\n getAgentBuilderActionRunsHandler,\n getAgentBuilderActionsHandler,\n resumeAgentBuilderActionHandler,\n resumeAsyncAgentBuilderActionHandler,\n resumeStreamAgentBuilderActionHandler,\n startAgentBuilderActionRunHandler,\n startAsyncAgentBuilderActionHandler,\n streamAgentBuilderActionHandler,\n streamLegacyAgentBuilderActionHandler,\n streamVNextAgentBuilderActionHandler,\n observeStreamLegacyAgentBuilderActionHandler,\n observeStreamAgentBuilderActionHandler,\n observeStreamVNextAgentBuilderActionHandler,\n cancelAgentBuilderActionRunHandler,\n} from './handlers';\n\nexport function agentBuilderRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n // Agent builder routes\n router.get(\n '/',\n describeRoute({\n description: 'Get all agent builder actions',\n tags: ['agent-builder'],\n responses: {\n 200: {\n description: 'List of all agent builder actions',\n },\n },\n }),\n getAgentBuilderActionsHandler,\n );\n\n router.get(\n '/:actionId',\n describeRoute({\n description: 'Get agent builder action by ID',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Agent builder action details',\n },\n 404: {\n description: 'Agent builder action not found',\n },\n },\n }),\n getAgentBuilderActionByIdHandler,\n );\n\n router.get(\n '/:actionId/runs',\n describeRoute({\n description: 'Get all runs for an agent builder action',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n { name: 'fromDate', in: 'query', required: false, schema: { type: 'string', format: 'date-time' } },\n { name: 'toDate', in: 'query', required: false, schema: { type: 'string', format: 'date-time' } },\n { name: 'limit', in: 'query', required: false, schema: { type: 'number' } },\n { name: 'offset', in: 'query', required: false, schema: { type: 'number' } },\n { name: 'resourceId', in: 'query', required: false, schema: { type: 'string' } },\n ],\n responses: {\n 200: {\n description: 'List of agent builder action runs from storage',\n },\n },\n }),\n getAgentBuilderActionRunsHandler,\n );\n\n router.get(\n '/:actionId/runs/:runId/execution-result',\n describeRoute({\n description: 'Get execution result for an agent builder action run',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Agent builder action run execution result',\n },\n 404: {\n description: 'Agent builder action run execution result not found',\n },\n },\n }),\n getAgentBuilderActionRunExecutionResultHandler,\n );\n\n router.get(\n '/:actionId/runs/:runId',\n describeRoute({\n description: 'Get agent builder action run by ID',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Agent builder action run by ID',\n },\n 404: {\n description: 'Agent builder action run not found',\n },\n },\n }),\n getAgentBuilderActionRunByIdHandler,\n );\n\n router.post(\n '/:actionId/resume',\n describeRoute({\n description: 'Resume a suspended agent builder action step',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n }),\n resumeAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/resume-async',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Resume a suspended agent builder action step',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n }),\n resumeAsyncAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/resume-stream',\n describeRoute({\n description: 'Resume a suspended agent builder action that uses streamVNext',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['step'],\n },\n },\n },\n },\n }),\n resumeStreamAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/stream-legacy',\n describeRoute({\n description: 'Stream legacy agent builder action in real-time',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'agent builder action run started',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n streamLegacyAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/observe-stream-legacy',\n describeRoute({\n description: 'Observe agent builder action stream in real-time',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'agent builder action stream observed',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n observeStreamLegacyAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/stream',\n describeRoute({\n description: 'Stream agent builder action in real-time',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'agent builder action run started',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n streamAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/observe',\n describeRoute({\n description: 'Observe agent builder action stream in real-time using the streaming API',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'agent builder action stream observed',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n observeStreamAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/observe-streamVNext',\n describeRoute({\n description: 'Observe agent builder action stream in real-time using the VNext streaming API',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'agent builder action stream vNext observed',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n observeStreamVNextAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/streamVNext',\n describeRoute({\n description: 'Stream agent builder action in real-time using the VNext streaming API',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n closeOnSuspend: {\n type: 'boolean',\n description: 'Close the stream on suspend',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'agent builder action run started',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n streamVNextAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/create-run',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Create a new agent builder action run',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'New agent builder action run created',\n },\n },\n }),\n createAgentBuilderActionRunHandler,\n );\n\n router.post(\n '/:actionId/start-async',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute/Start an agent builder action',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'agent builder action execution result',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n }),\n startAsyncAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/start',\n describeRoute({\n description: 'Create and start a new agent builder action run',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'agent builder action run started',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n }),\n startAgentBuilderActionRunHandler,\n );\n\n router.post(\n '/:actionId/runs/:runId/cancel',\n describeRoute({\n description: 'Cancel an agent builder action run',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n tags: ['agent-builder'],\n responses: {\n 200: {\n description: 'agent builder action run cancelled',\n },\n },\n }),\n cancelAgentBuilderActionRunHandler,\n );\n\n return router;\n}\n","import { Agent } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { Context } from 'hono';\nimport { z } from 'zod';\n\nimport { handleError } from './error';\n\nexport async function generateSystemPromptHandler(c: Context) {\n try {\n // Check if this is a playground request\n const agentId = c.req.param('agentId');\n const isPlayground = c.get('playground') === true;\n if (!isPlayground) {\n return c.json({ error: 'This API is only available in the playground environment' }, 403);\n }\n\n const { instructions, comment } = await c.req.json();\n\n if (!instructions) {\n return c.json({ error: 'Missing instructions in request body' }, 400);\n }\n\n const mastra: Mastra<any> = c.get('mastra');\n const agent: Agent<any> = mastra.getAgent(agentId);\n\n if (!agent) {\n return c.json({ error: 'Agent not found' }, 404);\n }\n\n const ENHANCE_SYSTEM_PROMPT_INSTRUCTIONS = `\n You are an expert system prompt engineer, specialized in analyzing and enhancing instructions to create clear, effective, and comprehensive system prompts. Your goal is to help users transform their basic instructions into well-structured system prompts that will guide AI behavior effectively.\n Follow these steps to analyze and enhance the instructions:\n 1. ANALYSIS PHASE\n - Identify the core purpose and goals\n - Extract key constraints and requirements\n - Recognize domain-specific terminology and concepts\n - Note any implicit assumptions that should be made explicit\n 2. PROMPT STRUCTURE\n Create a system prompt with these components:\n a) ROLE DEFINITION\n - Clear statement of the AI's role and purpose\n - Key responsibilities and scope\n - Primary stakeholders and users\n b) CORE CAPABILITIES\n - Main functions and abilities\n - Specific domain knowledge required\n - Tools and resources available\n c) BEHAVIORAL GUIDELINES\n - Communication style and tone\n - Decision-making framework\n - Error handling approach\n - Ethical considerations\n d) CONSTRAINTS & BOUNDARIES\n - Explicit limitations\n - Out-of-scope activities\n - Security and privacy considerations\n e) SUCCESS CRITERIA\n - Quality standards\n - Expected outcomes\n - Performance metrics\n 3. QUALITY CHECKS\n Ensure the prompt is:\n - Clear and unambiguous\n - Comprehensive yet concise\n - Properly scoped\n - Technically accurate\n - Ethically sound\n 4. OUTPUT FORMAT\n Return a structured response with:\n - Enhanced system prompt\n - Analysis of key components\n - Identified goals and constraints\n - Core domain concepts\n Remember: A good system prompt should be specific enough to guide behavior but flexible enough to handle edge cases. \n Focus on creating prompts that are clear, actionable, and aligned with the intended use case.\n `;\n\n const systemPromptAgent = new Agent({\n id: 'system-prompt-enhancer',\n name: 'system-prompt-enhancer',\n instructions: ENHANCE_SYSTEM_PROMPT_INSTRUCTIONS,\n model: await agent.getModel(),\n });\n\n const result = await systemPromptAgent.generate(\n `\n We need to improve the system prompt. \n Current: ${instructions}\n ${comment ? `User feedback: ${comment}` : ''}\n `,\n {\n structuredOutput: {\n schema: z.object({\n new_prompt: z.string(),\n explanation: z.string(),\n }),\n },\n },\n );\n\n return c.json(result?.object || {});\n } catch (error) {\n return handleError(error, 'Error generating system prompt');\n }\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport {\n listToolsHandler as getOriginalToolsHandler,\n getToolByIdHandler as getOriginalToolByIdHandler,\n executeToolHandler as getOriginalExecuteToolHandler,\n executeAgentToolHandler as getOriginalExecuteAgentToolHandler,\n getAgentToolHandler as getOriginalAgentToolHandler,\n} from '@mastra/server/handlers/tools';\nimport type { Context } from 'hono';\n\nimport { handleError } from '../../error';\n\n// Tool handlers\nexport async function listToolsHandler(c: Context) {\n try {\n const tools = c.get('tools');\n\n const result = await getOriginalToolsHandler({\n tools,\n });\n\n return c.json(result || {});\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n}\n\nexport async function getToolByIdHandler(c: Context) {\n try {\n const tools = c.get('tools');\n const toolId = c.req.param('toolId');\n\n const result = await getOriginalToolByIdHandler({\n tools,\n toolId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n}\n\nexport function executeToolHandler(tools: Record<string, any>) {\n return async (c: Context) => {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const toolId = decodeURIComponent(c.req.param('toolId'));\n const runId = c.req.query('runId');\n const { data } = await c.req.json();\n\n const result = await getOriginalExecuteToolHandler(tools)({\n mastra,\n toolId,\n data,\n requestContext,\n runId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n };\n}\n\nexport async function getAgentToolHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const agentId = c.req.param('agentId');\n const toolId = c.req.param('toolId');\n\n const result = await getOriginalAgentToolHandler({\n mastra,\n agentId,\n toolId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n}\n\nexport async function executeAgentToolHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const agentId = c.req.param('agentId');\n const toolId = c.req.param('toolId');\n const { data } = await c.req.json();\n\n const result = await getOriginalExecuteAgentToolHandler({\n mastra,\n agentId,\n toolId,\n data,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n}\n","import { ErrorCategory, ErrorDomain, getErrorFromUnknown, MastraError } from '@mastra/core/error';\nimport { getProviderConfig, PROVIDER_REGISTRY } from '@mastra/core/llm';\nimport type { ProviderConfig } from '@mastra/core/llm';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { ChunkType } from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport {\n listAgentsHandler as getOriginalListAgentsHandler,\n getAgentByIdHandler as getOriginalAgentByIdHandler,\n generateHandler as getOriginalGenerateHandler,\n streamGenerateHandler as getOriginalStreamGenerateHandler,\n updateAgentModelHandler as getOriginalUpdateAgentModelHandler,\n resetAgentModelHandler as getOriginalResetAgentModelHandler,\n streamUIMessageHandler as getOriginalStreamUIMessageHandler,\n generateLegacyHandler as getOriginalGenerateLegacyHandler,\n streamGenerateLegacyHandler as getOriginalStreamGenerateLegacyHandler,\n reorderAgentModelListHandler as getOriginalReorderAgentModelListHandler,\n updateAgentModelInModelListHandler as getOriginalUpdateAgentModelInModelListHandler,\n streamNetworkHandler as getOriginalStreamNetworkHandler,\n approveToolCallHandler as getOriginalApproveToolCallHandler,\n declineToolCallHandler as getOriginalDeclineToolCallHandler,\n getAgentFromSystem as getOriginalGetAgentFromSystem,\n} from '@mastra/server/handlers/agents';\nimport type { Context } from 'hono';\n\nimport { stream } from 'hono/streaming';\nimport { handleError } from '../../error';\n\nexport const sharedBodyOptions: any = {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n runId: { type: 'string' },\n memory: {\n type: 'object',\n properties: {\n thread: { type: 'string' },\n resource: { type: 'string', description: 'The resource ID for the conversation' },\n options: { type: 'object', description: 'Memory configuration options' },\n },\n description: 'Memory options for the conversation',\n },\n modelSettings: {\n type: 'object',\n properties: {\n maxTokens: { type: 'number', description: 'Maximum number of tokens to generate' },\n temperature: { type: 'number', minimum: 0, maximum: 1, description: 'Temperature setting for randomness (0-1)' },\n topP: { type: 'number', minimum: 0, maximum: 1, description: 'Nucleus sampling (0-1)' },\n topK: { type: 'number', description: 'Only sample from the top K options for each subsequent token' },\n presencePenalty: { type: 'number', minimum: -1, maximum: 1, description: 'Presence penalty (-1 to 1)' },\n frequencyPenalty: { type: 'number', minimum: -1, maximum: 1, description: 'Frequency penalty (-1 to 1)' },\n stopSequences: { type: 'array', items: { type: 'string' }, description: 'Stop sequences for text generation' },\n seed: { type: 'number', description: 'Seed for deterministic results' },\n maxRetries: { type: 'number', description: 'Maximum number of retries' },\n headers: { type: 'object', description: 'Additional HTTP headers' },\n },\n description: 'Model settings for generation',\n },\n};\n\n// @TODO: TYPED OPTIONS\nexport const vNextBodyOptions: any = {\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n output: { type: 'object' },\n instructions: { type: 'string', description: \"Optional instructions to override the agent's default instructions\" },\n context: {\n type: 'array',\n items: { type: 'object' },\n description: 'Additional context messages to include',\n },\n savePerStep: { type: 'boolean', description: 'Whether to save messages incrementally on step finish' },\n toolChoice: {\n oneOf: [\n { type: 'string', enum: ['auto', 'none', 'required'] },\n { type: 'object', properties: { type: { type: 'string' }, toolName: { type: 'string' } } },\n ],\n description: 'Controls how tools are selected during generation',\n },\n format: { type: 'string', enum: ['mastra', 'aisdk'], description: 'Response format' },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n ...sharedBodyOptions,\n};\n\n// Agent handlers\nexport async function listAgentsHandler(c: Context) {\n const serializedAgents = await getOriginalListAgentsHandler({\n mastra: c.get('mastra'),\n requestContext: c.get('requestContext'),\n });\n\n return c.json(serializedAgents);\n}\n\nexport async function getProvidersHandler(c: Context) {\n try {\n const providers = [];\n\n // Check each provider in the registry\n for (const [providerId, config] of Object.entries(PROVIDER_REGISTRY as Record<string, ProviderConfig>)) {\n const hasApiKey = !!(typeof config.apiKeyEnvVar === `string`\n ? process.env[config.apiKeyEnvVar]\n : Array.isArray(config.apiKeyEnvVar)\n ? config.apiKeyEnvVar.every((k: string) => !!process.env[k])\n : false);\n\n const providerConfig = getProviderConfig(providerId);\n\n providers.push({\n id: providerId,\n name: config.name,\n envVar: config.apiKeyEnvVar,\n connected: hasApiKey,\n models: [...config.models], // Convert readonly array to mutable\n docUrl: providerConfig?.docUrl || null,\n });\n }\n\n return c.json({ providers });\n } catch (error) {\n return handleError(error, 'Error getting providers');\n }\n}\n\nexport async function getAgentByIdHandler(c: Context) {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const isPlayground = c.req.header('x-mastra-dev-playground') === 'true';\n\n const result = await getOriginalAgentByIdHandler({\n mastra,\n agentId,\n requestContext,\n isPlayground,\n });\n\n return c.json(result);\n}\n\nexport async function generateLegacyHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n\n const result = await getOriginalGenerateLegacyHandler({\n mastra,\n agentId,\n requestContext,\n body,\n abortSignal: c.req.raw.signal,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n}\n\nexport async function generateHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n\n const result = await getOriginalGenerateHandler({\n mastra,\n agentId,\n requestContext,\n body,\n abortSignal: c.req.raw.signal,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n}\n\nexport async function streamGenerateLegacyHandler(c: Context): Promise<Response | undefined> {\n try {\n const mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n\n const streamResponse = await getOriginalStreamGenerateLegacyHandler({\n mastra,\n agentId,\n requestContext,\n body,\n abortSignal: c.req.raw.signal,\n });\n\n return streamResponse;\n } catch (error) {\n return handleError(error, 'Error streaming from agent');\n }\n}\n\nexport async function streamGenerateHandler(c: Context): Promise<Response | undefined> {\n const mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n const logger = mastra.getLogger();\n\n let streamResponse;\n try {\n streamResponse = await getOriginalStreamGenerateHandler({\n mastra,\n agentId,\n requestContext,\n body,\n abortSignal: c.req.raw.signal,\n });\n } catch (err) {\n return handleError(err, 'Error streaming from agent');\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const reader = streamResponse.fullStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(`data: ${JSON.stringify(chunkResult.value)}\\n\\n`);\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (err) {\n logger.error('Error in stream generate: ' + ((err as Error)?.message ?? 'Unknown error'));\n\n const errorChunk: ChunkType = {\n type: 'error',\n from: ChunkFrom.AGENT,\n runId: body.runId || 'unknown',\n payload: {\n error: getErrorFromUnknown(err, { fallbackMessage: 'Unknown error in stream generate' }),\n },\n };\n\n await stream.write(`data: ${JSON.stringify(errorChunk)}\\n\\n`);\n }\n\n await stream.close();\n },\n async err => {\n logger.error('Error in watch stream: ' + err?.message);\n },\n );\n}\n\nexport async function approveToolCallHandler(c: Context): Promise<Response | undefined> {\n const mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n const logger = mastra.getLogger();\n\n let streamResponse;\n try {\n streamResponse = await getOriginalApproveToolCallHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal: c.req.raw.signal,\n });\n } catch (err) {\n return handleError(err, 'Error approving tool call');\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const reader = streamResponse.fullStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(`data: ${JSON.stringify(chunkResult.value)}\\n\\n`);\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (err) {\n logger.error('Error in approve tool call: ' + ((err as Error)?.message ?? 'Unknown error'));\n\n const errorChunk: ChunkType = {\n type: 'error',\n from: ChunkFrom.AGENT,\n runId: body.runId || 'unknown',\n payload: {\n error:\n err instanceof Error\n ? {\n message: err.message,\n name: err.name,\n stack: err.stack,\n }\n : String(err),\n },\n };\n\n await stream.write(`data: ${JSON.stringify(errorChunk)}\\n\\n`);\n }\n\n await stream.close();\n },\n async err => {\n logger.error('Error in watch stream: ' + err?.message);\n },\n );\n}\n\nexport async function declineToolCallHandler(c: Context): Promise<Response | undefined> {\n const mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n const logger = mastra.getLogger();\n\n let streamResponse;\n try {\n streamResponse = await getOriginalDeclineToolCallHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal: c.req.raw.signal,\n });\n } catch (err) {\n return handleError(err, 'Error declining tool call');\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const reader = streamResponse.fullStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(`data: ${JSON.stringify(chunkResult.value)}\\n\\n`);\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (err) {\n logger.error('Error in decline tool call: ' + ((err as Error)?.message ?? 'Unknown error'));\n\n const errorChunk: ChunkType = {\n type: 'error',\n from: ChunkFrom.AGENT,\n runId: body.runId || 'unknown',\n payload: {\n error:\n err instanceof Error\n ? {\n message: err.message,\n name: err.name,\n stack: err.stack,\n }\n : String(err),\n },\n };\n\n await stream.write(`data: ${JSON.stringify(errorChunk)}\\n\\n`);\n }\n\n await stream.close();\n },\n async err => {\n logger.error('Error in watch stream: ' + err?.message);\n },\n );\n}\n\nexport async function streamNetworkHandler(c: Context) {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n const logger = mastra.getLogger();\n\n // Validate agent exists and has memory before starting stream\n const agent = await getOriginalGetAgentFromSystem({ mastra, agentId });\n\n // Check if agent has memory configured before starting the stream\n const memory = await agent.getMemory({ requestContext });\n\n if (!memory) {\n return handleError(\n new MastraError({\n id: 'AGENT_NETWORK_MEMORY_REQUIRED',\n domain: ErrorDomain.AGENT_NETWORK,\n category: ErrorCategory.USER,\n text: 'Memory is required for the agent network to function properly. Please configure memory for the agent.',\n details: {\n status: 400,\n },\n }),\n 'Memory required for agent network',\n );\n }\n\n let streamResponse;\n try {\n streamResponse = await getOriginalStreamNetworkHandler({\n mastra,\n agentId,\n requestContext,\n body,\n // abortSignal: c.req.raw.signal,\n });\n } catch (err) {\n return handleError(err, 'Error streaming from agent in network mode');\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const reader = streamResponse.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(`data: ${JSON.stringify(chunkResult.value)}\\n\\n`);\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (err) {\n logger.error('Error in streamNetwork generate: ' + ((err as Error)?.message ?? 'Unknown error'));\n\n const errorChunk: ChunkType = {\n type: 'error',\n from: ChunkFrom.AGENT,\n runId: body.runId || 'unknown',\n payload: {\n error:\n err instanceof Error\n ? {\n message: err.message,\n name: err.name,\n stack: err.stack,\n }\n : String(err),\n },\n };\n\n await stream.write(`data: ${JSON.stringify(errorChunk)}\\n\\n`);\n }\n\n await stream.close();\n },\n async err => {\n logger.error('Error in watch stream: ' + err?.message);\n },\n );\n}\n\nexport async function streamUIMessageHandler(c: Context): Promise<Response | undefined> {\n try {\n const mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n\n const streamResponse = await getOriginalStreamUIMessageHandler({\n mastra,\n agentId,\n requestContext,\n body,\n abortSignal: c.req.raw.signal,\n });\n\n return streamResponse;\n } catch (error) {\n return handleError(error, 'Error streaming ui message from agent');\n }\n}\n\nexport async function setAgentInstructionsHandler(c: Context) {\n try {\n // Check if this is a playground request\n const isPlayground = c.get('playground') === true;\n if (!isPlayground) {\n return c.json({ error: 'This API is only available in the playground environment' }, 403);\n }\n\n const agentId = c.req.param('agentId');\n const { instructions } = await c.req.json();\n\n if (!agentId || !instructions) {\n return c.json({ error: 'Missing required fields' }, 400);\n }\n\n const mastra: Mastra = c.get('mastra');\n const agent = await getOriginalGetAgentFromSystem({ mastra, agentId });\n\n agent.__updateInstructions(instructions);\n\n return c.json(\n {\n instructions,\n },\n 200,\n );\n } catch (error) {\n return handleError(error, 'Error setting agent instructions');\n }\n}\n\nexport async function updateAgentModelHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const body = await c.req.json();\n\n const result = await getOriginalUpdateAgentModelHandler({\n mastra,\n agentId,\n body,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error updating agent model');\n }\n}\n\nexport async function resetAgentModelHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n\n const result = await getOriginalResetAgentModelHandler({\n mastra,\n agentId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error resetting agent model');\n }\n}\n\nexport async function deprecatedStreamVNextHandler(c: Context) {\n return c.json(\n {\n error: 'This endpoint is deprecated',\n message: 'The /stream/vnext endpoint has been deprecated. Please use an alternative streaming endpoint.',\n deprecated_endpoint: '/api/agents/:agentId/stream/vnext',\n replacement_endpoint: '/api/agents/:agentId/stream',\n },\n 410, // 410 Gone status code for deprecated endpoints\n );\n}\n\nexport async function updateAgentModelInModelListHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const modelConfigId = c.req.param('modelConfigId');\n const body = await c.req.json();\n\n const result = await getOriginalUpdateAgentModelInModelListHandler({\n mastra,\n agentId,\n body,\n modelConfigId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error updating agent model in model list');\n }\n}\n\nexport async function reorderAgentModelListHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const body = await c.req.json();\n\n const result = await getOriginalReorderAgentModelListHandler({\n mastra,\n agentId,\n body,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error reordering agent model list');\n }\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport {\n getSpeakersHandler as getOriginalSpeakersHandler,\n generateSpeechHandler as getOriginalSpeakHandler,\n getListenerHandler as getOriginalListenerHandler,\n transcribeSpeechHandler as getOriginalListenHandler,\n} from '@mastra/server/handlers/voice';\nimport type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\n\nimport { handleError } from '../../error.js';\n\n/**\n * Get available speakers for an agent\n */\nexport async function getSpeakersHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext = c.get('requestContext');\n\n const speakers = await getOriginalSpeakersHandler({\n mastra,\n agentId,\n requestContext,\n });\n\n return c.json(speakers);\n } catch (error) {\n return handleError(error, 'Error getting speakers');\n }\n}\n\n/**\n * Convert text to speech using the agent's voice provider\n */\nexport async function speakHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext = c.get('requestContext');\n const { input, options } = await c.req.json();\n\n const audioStream = await getOriginalSpeakHandler({\n mastra,\n agentId,\n requestContext,\n body: { text: input, speakerId: options?.speakerId },\n });\n\n c.header('Content-Type', `audio/${options?.filetype ?? 'mp3'}`);\n c.header('Transfer-Encoding', 'chunked');\n\n return c.body(audioStream as any);\n } catch (error) {\n return handleError(error, 'Error generating speech');\n }\n}\n\n/**\n * Get available speakers for an agent\n */\nexport async function getListenerHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext = c.get('requestContext');\n const listeners = await getOriginalListenerHandler({\n mastra,\n agentId,\n requestContext,\n });\n\n return c.json(listeners);\n } catch (error) {\n return handleError(error, 'Error getting listener');\n }\n}\n\n/**\n * Convert speech to text using the agent's voice provider\n */\nexport async function listenHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext = c.get('requestContext');\n const formData = await c.req.formData();\n const audioFile = formData.get('audio');\n const options = formData.get('options');\n\n if (!audioFile || !(audioFile instanceof File)) {\n throw new HTTPException(400, { message: 'Audio file is required' });\n }\n\n const audioData = await audioFile.arrayBuffer();\n let parsedOptions = {};\n\n try {\n parsedOptions = options ? JSON.parse(options as string) : {};\n } catch {\n // Ignore parsing errors and use empty options\n }\n\n const transcription = await getOriginalListenHandler({\n mastra,\n agentId,\n requestContext,\n body: {\n audioData: Buffer.from(audioData),\n options: parsedOptions,\n },\n });\n\n return c.json({ text: transcription?.text });\n } catch (error) {\n return handleError(error, 'Error transcribing speech');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport { generateSystemPromptHandler } from '../../prompt';\nimport { executeAgentToolHandler, getAgentToolHandler } from '../tools/handlers';\nimport {\n generateHandler,\n getAgentByIdHandler,\n listAgentsHandler,\n getProvidersHandler,\n setAgentInstructionsHandler,\n streamGenerateHandler,\n updateAgentModelHandler,\n resetAgentModelHandler,\n vNextBodyOptions,\n deprecatedStreamVNextHandler,\n streamUIMessageHandler,\n streamGenerateLegacyHandler,\n generateLegacyHandler,\n reorderAgentModelListHandler,\n updateAgentModelInModelListHandler,\n streamNetworkHandler,\n sharedBodyOptions,\n approveToolCallHandler,\n declineToolCallHandler,\n} from './handlers';\nimport { getListenerHandler, getSpeakersHandler, speakHandler, listenHandler } from './voice';\n\nexport function agentsRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n router.get(\n '/',\n describeRoute({\n description: 'Get all available agents',\n tags: ['agents'],\n responses: {\n 200: {\n description: 'List of all agents',\n },\n },\n }),\n listAgentsHandler,\n );\n\n router.get(\n '/providers',\n describeRoute({\n description: 'Get all available model providers with connection status',\n tags: ['agents'],\n responses: {\n 200: {\n description: 'List of model providers with their connection status',\n },\n },\n }),\n getProvidersHandler,\n );\n\n router.get(\n '/:agentId',\n describeRoute({\n description: 'Get agent by ID',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Agent details',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n getAgentByIdHandler,\n );\n\n router.post(\n '/:agentId/generate-legacy',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Generate a response from an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n resourceid: {\n type: 'string',\n description: 'The resource ID for the conversation (deprecated, use resourceId instead)',\n deprecated: true,\n },\n runId: { type: 'string' },\n output: { type: 'object' },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Generated response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n generateLegacyHandler,\n );\n\n router.post(\n '/:agentId/generate',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Generate a response from an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n resourceid: {\n type: 'string',\n description: 'The resource ID for the conversation (deprecated, use resourceId instead)',\n deprecated: true,\n },\n runId: { type: 'string' },\n structuredOutput: {\n type: 'object',\n properties: {\n schema: { type: 'object', description: 'The schema to use for the structured output' },\n model: {\n type: 'string',\n description: 'Additional model to use for generating the structured output if provided',\n },\n instructions: {\n type: 'string',\n description:\n 'Custom instructions to provide to the structuring agent. This will override the default instructions.',\n },\n errorStrategy: {\n type: 'string',\n enum: ['strict', 'warn', 'fallback'],\n description: 'The error strategy to use for the structured output',\n },\n fallbackValue: {\n type: 'object',\n description:\n \"The fallback value to use for the structured output when using 'fallback' error strategy\",\n },\n },\n },\n output: { type: 'object', deprecated: true },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Generated response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n generateHandler,\n );\n\n router.post(\n '/:agentId/network',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute an agent as a Network',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: sharedBodyOptions,\n required: ['messages'],\n },\n },\n },\n },\n }),\n streamNetworkHandler,\n );\n\n router.post(\n '/:agentId/generate/vnext',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Generate a response from an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: vNextBodyOptions,\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Generated response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n generateHandler,\n );\n\n router.post(\n '/:agentId/stream/vnext',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: '[DEPRECATED] This endpoint is deprecated. Please use /stream instead.',\n tags: ['agents'],\n deprecated: true,\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: vNextBodyOptions,\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Generated response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n streamGenerateHandler,\n );\n\n router.post(\n '/:agentId/stream-legacy',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Stream a response from an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n resourceid: {\n type: 'string',\n description: 'The resource ID for the conversation (deprecated, use resourceId instead)',\n deprecated: true,\n },\n runId: { type: 'string' },\n output: { type: 'object' },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Streamed response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n streamGenerateLegacyHandler,\n );\n\n router.post(\n '/:agentId/stream',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Stream a response from an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n resourceid: {\n type: 'string',\n description: 'The resource ID for the conversation (deprecated, use resourceId instead)',\n deprecated: true,\n },\n runId: { type: 'string' },\n structuredOutput: {\n type: 'object',\n properties: {\n schema: { type: 'object', description: 'The schema to use for the structured output' },\n model: {\n type: 'string',\n description: 'Additional model to use for generating the structured output if provided',\n },\n instructions: {\n type: 'string',\n description:\n 'Custom instructions to provide to the structuring agent. This will override the default instructions.',\n },\n errorStrategy: {\n type: 'string',\n enum: ['strict', 'warn', 'fallback'],\n description: 'The error strategy to use for the structured output',\n },\n fallbackValue: {\n type: 'object',\n description:\n \"The fallback value to use for the structured output when using 'fallback' error strategy\",\n },\n },\n },\n output: { type: 'object', deprecated: true },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Streamed response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n streamGenerateHandler,\n );\n\n router.post(\n '/:agentId/streamVNext',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: '[DEPRECATED] This endpoint is deprecated. Please use /stream instead.',\n tags: ['agents'],\n deprecated: true,\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n runId: { type: 'string' },\n output: { type: 'object' },\n experimental_output: { type: 'object' },\n instructions: { type: 'string' },\n toolsets: { type: 'object' },\n clientTools: { type: 'object' },\n context: {\n type: 'array',\n items: { type: 'object' },\n },\n memory: {\n type: 'object',\n properties: {\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n },\n },\n toolChoice: {\n oneOf: [\n { type: 'string', enum: ['auto', 'none', 'required'] },\n { type: 'object', properties: { type: { type: 'string' }, toolName: { type: 'string' } } },\n ],\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 410: {\n description: 'Endpoint deprecated',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: { type: 'string' },\n message: { type: 'string' },\n deprecated_endpoint: { type: 'string' },\n replacement_endpoint: { type: 'string' },\n },\n },\n },\n },\n },\n },\n }),\n deprecatedStreamVNextHandler,\n );\n\n router.post(\n '/:agentId/stream/vnext/ui',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description:\n '[DEPRECATED] This endpoint is deprecated. Please use the @mastra/ai-sdk package to for uiMessage transformations',\n tags: ['agents'],\n deprecated: true,\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: vNextBodyOptions,\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Streamed response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n streamUIMessageHandler,\n );\n\n router.post(\n '/:agentId/stream/ui',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description:\n '[DEPRECATED] This endpoint is deprecated. Please use the @mastra/ai-sdk package to for uiMessage transformations',\n tags: ['agents'],\n deprecated: true,\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: vNextBodyOptions,\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Streamed response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n streamUIMessageHandler,\n );\n\n router.post(\n '/:agentId/model',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Update the model for an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n modelId: {\n type: 'string',\n description: 'The modelId to update the agent to',\n },\n provider: {\n type: 'string',\n enum: ['openai', 'anthropic', 'groq', 'xai', 'google'],\n description: 'The provider of the model to update the agent to',\n },\n },\n required: ['modelId', 'provider'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Model updated successfully',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n updateAgentModelHandler,\n );\n\n router.post(\n '/:agentId/model/reset',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Reset the agent model to the original model set during construction',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Model reset to original successfully',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n resetAgentModelHandler,\n );\n\n router.post(\n '/:agentId/models/reorder',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Reorder the models for an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n reorderedModelIds: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n required: ['reorderedModelIds'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Model list reordered successfully',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n reorderAgentModelListHandler,\n );\n\n router.post(\n '/:agentId/models/:modelConfigId',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Update the model for an agent in the model list',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'modelConfigId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n model: {\n type: 'object',\n properties: {\n modelId: {\n type: 'string',\n description: 'The modelId to update the agent to',\n },\n provider: {\n type: 'string',\n enum: ['openai', 'anthropic', 'groq', 'xai', 'google'],\n description: 'The provider of the model to update the agent to',\n },\n },\n required: ['modelId', 'provider'],\n },\n maxRetries: {\n type: 'number',\n description: 'The maximum number of retries for the model',\n },\n enabled: {\n type: 'boolean',\n description: 'Whether the model is enabled',\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Model updated successfully',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n updateAgentModelInModelListHandler,\n );\n\n router.get(\n '/:agentId/speakers',\n async (c, next) => {\n c.header('Deprecation', 'true');\n c.header('Warning', '299 - \"This endpoint is deprecated, use /api/agents/:agentId/voice/speakers instead\"');\n c.header('Link', '</api/agents/:agentId/voice/speakers>; rel=\"successor-version\"');\n return next();\n },\n describeRoute({\n description: '[DEPRECATED] Use /api/agents/:agentId/voice/speakers instead. Get available speakers for an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'List of available speakers',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'object',\n description: 'Speaker information depending on the voice provider',\n properties: {\n voiceId: { type: 'string' },\n },\n additionalProperties: true,\n },\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n getSpeakersHandler,\n );\n\n router.get(\n '/:agentId/voice/speakers',\n describeRoute({\n description: 'Get available speakers for an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'List of available speakers',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'object',\n description: 'Speaker information depending on the voice provider',\n properties: {\n voiceId: { type: 'string' },\n },\n additionalProperties: true,\n },\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n getSpeakersHandler,\n );\n\n router.post(\n '/:agentId/speak',\n bodyLimit(bodyLimitOptions),\n async (c, next) => {\n c.header('Deprecation', 'true');\n c.header('Warning', '299 - \"This endpoint is deprecated, use /api/agents/:agentId/voice/speak instead\"');\n c.header('Link', '</api/agents/:agentId/voice/speak>; rel=\"successor-version\"');\n return next();\n },\n describeRoute({\n description:\n \"[DEPRECATED] Use /api/agents/:agentId/voice/speak instead. Convert text to speech using the agent's voice provider\",\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n text: {\n type: 'string',\n description: 'Text to convert to speech',\n },\n options: {\n type: 'object',\n description: 'Provider-specific options for speech generation',\n properties: {\n speaker: {\n type: 'string',\n description: 'Speaker ID to use for speech generation',\n },\n },\n additionalProperties: true,\n },\n },\n required: ['text'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Audio stream',\n content: {\n 'audio/mpeg': {\n schema: {\n format: 'binary',\n description: 'Audio stream containing the generated speech',\n },\n },\n 'audio/*': {\n schema: {\n format: 'binary',\n description: 'Audio stream depending on the provider',\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities or invalid request',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n speakHandler,\n );\n\n router.post(\n '/:agentId/voice/speak',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: \"Convert text to speech using the agent's voice provider\",\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n input: {\n type: 'string',\n description: 'Text to convert to speech',\n },\n options: {\n type: 'object',\n description: 'Provider-specific options for speech generation',\n properties: {\n speaker: {\n type: 'string',\n description: 'Speaker ID to use for speech generation',\n },\n options: {\n type: 'object',\n description: 'Provider-specific options for speech generation',\n additionalProperties: true,\n },\n },\n additionalProperties: true,\n },\n },\n required: ['text'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Audio stream',\n content: {\n 'audio/mpeg': {\n schema: {\n format: 'binary',\n description: 'Audio stream containing the generated speech',\n },\n },\n 'audio/*': {\n schema: {\n format: 'binary',\n description: 'Audio stream depending on the provider',\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities or invalid request',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n speakHandler,\n );\n\n router.get(\n '/:agentId/voice/listener',\n describeRoute({\n description: 'Get available listener for an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Checks if listener is available for the agent',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n description: 'Listener information depending on the voice provider',\n properties: {\n enabled: { type: 'boolean' },\n },\n additionalProperties: true,\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n getListenerHandler,\n );\n\n router.post(\n '/:agentId/listen',\n bodyLimit({\n ...bodyLimitOptions,\n maxSize: 10 * 1024 * 1024, // 10 MB for audio files\n }),\n async (c, next) => {\n c.header('Deprecation', 'true');\n c.header('Warning', '299 - \"This endpoint is deprecated, use /api/agents/:agentId/voice/listen instead\"');\n c.header('Link', '</api/agents/:agentId/voice/listen>; rel=\"successor-version\"');\n return next();\n },\n describeRoute({\n description:\n \"[DEPRECATED] Use /api/agents/:agentId/voice/listen instead. Convert speech to text using the agent's voice provider. Additional provider-specific options can be passed as query parameters.\",\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'audio/mpeg': {\n schema: {\n format: 'binary',\n description:\n 'Audio data stream to transcribe (supports various formats depending on provider like mp3, wav, webm, flac)',\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Transcription result',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n text: {\n type: 'string',\n description: 'Transcribed text',\n },\n },\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities or invalid request',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n listenHandler,\n );\n\n router.post(\n '/:agentId/voice/listen',\n bodyLimit({\n ...bodyLimitOptions,\n maxSize: 10 * 1024 * 1024, // 10 MB for audio files\n }),\n describeRoute({\n description:\n \"Convert speech to text using the agent's voice provider. Additional provider-specific options can be passed as query parameters.\",\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'multipart/form-data': {\n schema: {\n type: 'object',\n required: ['audio'],\n properties: {\n audio: {\n type: 'string',\n format: 'binary',\n description:\n 'Audio data stream to transcribe (supports various formats depending on provider like mp3, wav, webm, flac)',\n },\n options: {\n type: 'object',\n description: 'Provider-specific options for speech-to-text',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Transcription result',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n text: {\n type: 'string',\n description: 'Transcribed text',\n },\n },\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities or invalid request',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n listenHandler,\n );\n\n router.get(\n '/:agentId/tools/:toolId',\n describeRoute({\n description: 'Get agent tool by ID',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'toolId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Tool details',\n },\n 404: {\n description: 'Tool or agent not found',\n },\n },\n }),\n getAgentToolHandler,\n );\n\n router.post(\n '/:agentId/tools/:toolId/execute',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute a tool through an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'toolId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n data: { type: 'object' },\n requestContext: { type: 'object' },\n },\n required: ['data'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Tool execution result',\n },\n 404: {\n description: 'Tool or agent not found',\n },\n },\n }),\n executeAgentToolHandler,\n );\n\n router.post(\n '/:agentId/approve-tool-call',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Approve a tool call in human-in-the-loop workflow',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n runId: { type: 'string', description: 'The run ID for the execution' },\n toolCallId: { type: 'string', description: 'The tool call ID for the execution' },\n requestContext: { type: 'object', description: 'Request Context for the execution' },\n format: { type: 'string', enum: ['aisdk', 'mastra'], description: 'Output format' },\n },\n required: ['runId', 'toolCallId'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Tool call approved and execution resumed',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n approveToolCallHandler,\n );\n\n router.post(\n '/:agentId/decline-tool-call',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Decline a tool call in human-in-the-loop workflow',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n runId: { type: 'string', description: 'The run ID for the execution' },\n toolCallId: { type: 'string', description: 'The tool call ID for the execution' },\n requestContext: { type: 'object', description: 'Request Context for the execution' },\n format: { type: 'string', enum: ['aisdk', 'mastra'], description: 'Output format' },\n },\n required: ['runId', 'toolCallId'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Tool call declined and execution resumed',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n declineToolCallHandler,\n );\n\n return router;\n}\n\nexport function agentsRouterDev(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n router.post(\n '/:agentId/instructions',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: \"Update an agent's instructions\",\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n instructions: {\n type: 'string',\n description: 'New instructions for the agent',\n },\n },\n required: ['instructions'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Instructions updated successfully',\n },\n 403: {\n description: 'Not allowed in non-playground environment',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n setAgentInstructionsHandler,\n );\n\n router.post(\n '/:agentId/instructions/enhance',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Generate an improved system prompt from instructions',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'ID of the agent whose model will be used for prompt generation',\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n instructions: {\n type: 'string',\n description: 'Instructions to generate a system prompt from',\n },\n comment: {\n type: 'string',\n description: 'Optional comment for the enhanced prompt',\n },\n },\n required: ['instructions'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Generated system prompt and analysis',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n explanation: {\n type: 'string',\n description: 'Detailed analysis of the instructions',\n },\n new_prompt: {\n type: 'string',\n description: 'The enhanced system prompt',\n },\n },\n },\n },\n },\n },\n 400: {\n description: 'Missing or invalid request parameters',\n },\n 404: {\n description: 'Agent not found',\n },\n 500: {\n description: 'Internal server error or model response parsing error',\n },\n },\n }),\n generateSystemPromptHandler,\n );\n\n return router;\n}\n","import type { LogLevel } from '@mastra/core/logger';\nimport type { Mastra } from '@mastra/core/mastra';\nimport {\n listLogsHandler as getOriginalListLogsHandler,\n listLogsByRunIdHandler as getOriginalListLogsByRunIdHandler,\n listLogTransports as getOriginalListLogTransportsHandler,\n} from '@mastra/server/handlers/logs';\nimport type { Context } from 'hono';\n\nimport { handleError } from '../../error';\n\nexport async function listLogsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const { transportId, fromDate, toDate, logLevel, page, perPage } = c.req.query();\n const filters = c.req.queries('filters');\n\n const logs = await getOriginalListLogsHandler({\n mastra,\n transportId,\n params: {\n fromDate: fromDate ? new Date(fromDate) : undefined,\n toDate: toDate ? new Date(toDate) : undefined,\n logLevel: logLevel ? (logLevel as LogLevel) : undefined,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n },\n });\n\n return c.json(logs);\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n}\n\nexport async function listLogsByRunIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const runId = c.req.param('runId');\n const { transportId, fromDate, toDate, logLevel, page, perPage } = c.req.query();\n const filters = c.req.queries('filters');\n\n const logs = await getOriginalListLogsByRunIdHandler({\n mastra,\n runId,\n transportId,\n params: {\n fromDate: fromDate ? new Date(fromDate) : undefined,\n toDate: toDate ? new Date(toDate) : undefined,\n logLevel: logLevel ? (logLevel as LogLevel) : undefined,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n },\n });\n\n return c.json(logs);\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n}\n\nexport async function listLogTransports(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n\n const result = await getOriginalListLogTransportsHandler({\n mastra,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n}\n","import { Hono } from 'hono';\nimport { describeRoute } from 'hono-openapi';\nimport { listLogsByRunIdHandler, listLogsHandler, listLogTransports } from './handlers';\n\nexport function logsRouter() {\n const router = new Hono();\n\n router.get(\n '/',\n describeRoute({\n description: 'Get all logs',\n tags: ['logs'],\n parameters: [\n {\n name: 'transportId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'fromDate',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'toDate',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'logLevel',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'filters',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of all logs',\n },\n },\n }),\n listLogsHandler,\n );\n\n router.get(\n '/transports',\n describeRoute({\n description: 'List of all log transports',\n tags: ['logs'],\n responses: {\n 200: {\n description: 'List of all log transports',\n },\n },\n }),\n listLogTransports,\n );\n\n router.get(\n '/:runId',\n describeRoute({\n description: 'Get logs by run ID',\n tags: ['logs'],\n parameters: [\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'transportId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'fromDate',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'toDate',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'logLevel',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'filters',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of logs for run ID',\n },\n },\n }),\n listLogsByRunIdHandler,\n );\n\n return router;\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport util from \"node:util\";\n/* These items copied from Node.js: node/lib/internal/errors.js */\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/;\n// Sorted by a rough estimate on most frequently used entries.\nconst kTypes = [\n \"string\",\n \"function\",\n \"number\",\n \"object\",\n // Accept 'Function' and 'Object' as alternative to the lower cased version.\n \"Function\",\n \"Object\",\n \"boolean\",\n \"bigint\",\n \"symbol\",\n];\n/**\n * Determine the specific type of a value for type-mismatch errors.\n * @param {*} value\n * @returns {string}\n */\nfunction determineSpecificType(value) {\n if (value == null) {\n return \"\" + value;\n }\n if (typeof value === \"function\" && value.name) {\n return `function ${value.name}`;\n }\n if (typeof value === \"object\") {\n if (value.constructor?.name) {\n return `an instance of ${value.constructor.name}`;\n }\n return `${util.inspect(value, { depth: -1 })}`;\n }\n let inspected = util.inspect(value, { colors: false });\n if (inspected.length > 28) {\n inspected = `${inspected.slice(0, 25)}...`;\n }\n return `type ${typeof value} (${inspected})`;\n}\n// The following classes are adaptations of a subset of the ERR_* classes\n// declared in Node.js in the file - node/lib/internal/errors.js.\nexport class ERR_HTTP_BODY_NOT_ALLOWED extends Error {\n constructor() {\n super(\"Adding content for this request method or response status is not allowed.\");\n }\n}\nexport class ERR_HTTP_CONTENT_LENGTH_MISMATCH extends Error {\n constructor(actual, expected) {\n super(`Response body's content-length of ${actual} byte(s) does not match the content-length of ${expected} byte(s) set in header`);\n }\n}\nexport class ERR_HTTP_HEADERS_SENT extends Error {\n constructor(arg) {\n super(`Cannot ${arg} headers after they are sent to the client`);\n }\n}\nexport class ERR_INVALID_ARG_VALUE extends TypeError /*, RangeError */ {\n constructor(name, value, reason = \"is invalid\") {\n let inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = `${inspected.slice(0, 128)}...`;\n }\n const type = name.includes(\".\") ? \"property\" : \"argument\";\n super(`The ${type} '${name}' ${reason}. Received ${inspected}`);\n }\n}\nexport class ERR_INVALID_CHAR extends TypeError {\n constructor(name, field) {\n let msg = `Invalid character in ${name}`;\n if (field !== undefined) {\n msg += ` [\"${field}\"]`;\n }\n super(msg);\n }\n}\nexport class ERR_HTTP_INVALID_HEADER_VALUE extends TypeError {\n constructor(value, name) {\n super(`Invalid value \"${value}\" for header \"${name}\"`);\n }\n}\nexport class ERR_HTTP_INVALID_STATUS_CODE extends RangeError {\n originalStatusCode;\n constructor(originalStatusCode) {\n super(`Invalid status code: ${originalStatusCode}`);\n this.originalStatusCode = originalStatusCode;\n }\n}\nexport class ERR_HTTP_TRAILER_INVALID extends Error {\n constructor() {\n super(`Trailers are invalid with this transfer encoding`);\n }\n}\nexport class ERR_INVALID_ARG_TYPE extends TypeError {\n constructor(name, expected, actual) {\n // assert(typeof name === 'string', \"'name' must be a string\");\n if (!Array.isArray(expected)) {\n expected = [expected];\n }\n let msg = \"The \";\n if (name.endsWith(\" argument\")) {\n // For cases like 'first argument'\n msg += `${name} `;\n }\n else {\n const type = name.includes(\".\") ? \"property\" : \"argument\";\n msg += `\"${name}\" ${type} `;\n }\n msg += \"must be \";\n const types = [];\n const instances = [];\n const other = [];\n for (const value of expected) {\n // assert(typeof value === 'string',\n // 'All expected entries have to be of type string');\n if (kTypes.includes(value)) {\n types.push(value.toLowerCase());\n }\n else if (classRegExp.exec(value) !== null) {\n instances.push(value);\n }\n else {\n // assert(value !== 'object',\n // 'The value \"object\" should be written as \"Object\"');\n other.push(value);\n }\n }\n // Special handle `object` in case other instances are allowed to outline\n // the differences between each other.\n if (instances.length > 0) {\n const pos = types.indexOf(\"object\");\n if (pos !== -1) {\n types.splice(pos, 1);\n instances.push(\"Object\");\n }\n }\n if (types.length > 0) {\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(\", \")}, or ${last}`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}`;\n }\n else {\n msg += `of type ${types[0]}`;\n }\n if (instances.length > 0 || other.length > 0)\n msg += \" or \";\n }\n if (instances.length > 0) {\n if (instances.length > 2) {\n const last = instances.pop();\n msg += `an instance of ${instances.join(\", \")}, or ${last}`;\n }\n else {\n msg += `an instance of ${instances[0]}`;\n if (instances.length === 2) {\n msg += ` or ${instances[1]}`;\n }\n }\n if (other.length > 0)\n msg += \" or \";\n }\n if (other.length > 0) {\n if (other.length > 2) {\n const last = other.pop();\n msg += `one of ${other.join(\", \")}, or ${last}`;\n }\n else if (other.length === 2) {\n msg += `one of ${other[0]} or ${other[1]}`;\n }\n else {\n if (other[0].toLowerCase() !== other[0])\n msg += \"an \";\n msg += `${other[0]}`;\n }\n }\n msg += `. Received ${determineSpecificType(actual)}`;\n super(msg);\n }\n}\nexport class ERR_INVALID_HTTP_TOKEN extends TypeError {\n constructor(name, field) {\n super(`${name} must be a valid HTTP token [\"${field}\"]`);\n }\n}\nexport class ERR_METHOD_NOT_IMPLEMENTED extends Error {\n constructor(methodName) {\n super(`The ${methodName} method is not implemented`);\n }\n}\nexport class ERR_STREAM_ALREADY_FINISHED extends Error {\n constructor(methodName) {\n super(`Cannot call ${methodName} after a stream was finished`);\n }\n}\nexport class ERR_STREAM_CANNOT_PIPE extends Error {\n constructor() {\n super(`Cannot pipe, not readable`);\n }\n}\nexport class ERR_STREAM_DESTROYED extends Error {\n constructor(methodName) {\n super(`Cannot call ${methodName} after a stream was destroyed`);\n }\n}\nexport class ERR_STREAM_NULL_VALUES extends TypeError {\n constructor() {\n super(`May not write null values to stream`);\n }\n}\nexport class ERR_STREAM_WRITE_AFTER_END extends Error {\n constructor() {\n super(`write after end`);\n }\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n// This file modeled after Node.js - node/lib/_http_incoming.js\nimport { Readable } from \"node:stream\";\nimport { ERR_METHOD_NOT_IMPLEMENTED } from \"../utils/errors.js\";\nconst kHeaders = Symbol(\"kHeaders\");\nconst kHeadersDistinct = Symbol(\"kHeadersDistinct\");\nconst kHeadersCount = Symbol(\"kHeadersCount\");\nconst kTrailers = Symbol(\"kTrailers\");\nconst kTrailersDistinct = Symbol(\"kTrailersDistinct\");\nconst kTrailersCount = Symbol(\"kTrailersCount\");\n/**\n * This is an implementation of IncomingMessage from Node.js intended to run in\n * a WinterTC runtime. The 'Readable' interface of this class is wired to a 'Request'\n * object's 'body'.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_http_incoming.js\n */\nexport class FetchIncomingMessage extends Readable {\n get socket() {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n return null;\n }\n set socket(_val) {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"socket\");\n }\n httpVersionMajor;\n httpVersionMinor;\n httpVersion;\n complete = false;\n [kHeaders] = null;\n [kHeadersDistinct] = null;\n [kHeadersCount] = 0;\n rawHeaders = [];\n [kTrailers] = null;\n [kTrailersDistinct] = null;\n [kTrailersCount] = 0;\n rawTrailers = [];\n joinDuplicateHeaders = false;\n aborted = false;\n upgrade = false;\n // request (server) only\n url = \"\";\n method;\n // TODO: Support ClientRequest\n // statusCode = null;\n // statusMessage = null;\n // client = socket;\n _consuming;\n _dumped;\n // The underlying ReadableStream\n _stream = null;\n constructor() {\n const streamOptions = {};\n // Difference from Node.js -\n // In Node.js, if the IncomingMessages is associated with a socket then\n // that socket's 'readableHighWaterMark' would be used to set\n // streamOptions.highWaterMark before calling parent constructor.\n super(streamOptions);\n this._readableState.readingMore = true;\n this._consuming = false;\n // Flag for when we decide that this message cannot possibly be\n // read by the user, so there's no point continuing to handle it.\n this._dumped = false;\n }\n get connection() {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n return null;\n }\n set connection(_socket) {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n console.error(\"No support for IncomingMessage.connection\");\n }\n get headers() {\n if (!this[kHeaders]) {\n this[kHeaders] = {};\n const src = this.rawHeaders;\n const dst = this[kHeaders];\n for (let n = 0; n < this[kHeadersCount]; n += 2) {\n this._addHeaderLine(src[n], src[n + 1], dst);\n }\n }\n return this[kHeaders];\n }\n set headers(val) {\n this[kHeaders] = val;\n }\n get headersDistinct() {\n if (!this[kHeadersDistinct]) {\n this[kHeadersDistinct] = {};\n const src = this.rawHeaders;\n const dst = this[kHeadersDistinct];\n for (let n = 0; n < this[kHeadersCount]; n += 2) {\n this._addHeaderLineDistinct(src[n], src[n + 1], dst);\n }\n }\n return this[kHeadersDistinct];\n }\n set headersDistinct(val) {\n this[kHeadersDistinct] = val;\n }\n get trailers() {\n if (!this[kTrailers]) {\n this[kTrailers] = {};\n const src = this.rawTrailers;\n const dst = this[kTrailers];\n for (let n = 0; n < this[kTrailersCount]; n += 2) {\n this._addHeaderLine(src[n], src[n + 1], dst);\n }\n }\n return this[kTrailers];\n }\n set trailers(val) {\n this[kTrailers] = val;\n }\n get trailersDistinct() {\n if (!this[kTrailersDistinct]) {\n this[kTrailersDistinct] = {};\n const src = this.rawTrailers;\n const dst = this[kTrailersDistinct];\n for (let n = 0; n < this[kTrailersCount]; n += 2) {\n this._addHeaderLineDistinct(src[n], src[n + 1], dst);\n }\n }\n return this[kTrailersDistinct];\n }\n set trailersDistinct(val) {\n this[kTrailersDistinct] = val;\n }\n setTimeout(msecs, callback) {\n // Difference from Node.js -\n // In Node.js, this is supposed to set the underlying socket to time out\n // after some time and then run a callback.\n // We do nothing here since we don't really have a way to support direct\n // access to the socket.\n return this;\n }\n async _read(n) {\n // As this is an implementation of stream.Readable, we provide a _read()\n // function that pumps the next chunk out of the underlying ReadableStream.\n if (!this._consuming) {\n this._readableState.readingMore = false;\n this._consuming = true;\n }\n // Difference from Node.js -\n // The Node.js implementation will already have its internal buffer\n // filled by the parserOnBody function.\n // For our implementation, we use the ReadableStream instance.\n if (this._stream == null) {\n // For GET and HEAD requests, the stream would be empty.\n // Simply signal that we're done.\n this.complete = true;\n this.push(null);\n return;\n }\n const reader = this._stream.getReader();\n try {\n const data = await reader.read();\n if (data.done) {\n // Done with stream, tell Readable we have no more data;\n this.complete = true;\n this.push(null);\n }\n else {\n this.push(data.value);\n }\n }\n catch (e) {\n this.destroy(e);\n }\n finally {\n reader.releaseLock();\n }\n }\n _destroy(err, cb) {\n if (!this.readableEnded || !this.complete) {\n this.aborted = true;\n this.emit(\"aborted\");\n }\n // Difference from Node.js -\n // Node.js would check for the existence of the socket and do some additional\n // cleanup.\n // By the way, I believe this name 'onError' is misleading, it is called\n // regardless of whether there was an error. The callback is expected to\n // check for the existence of the error to decide whether the result was\n // actually an error.\n setTimeout(onError, 0, this, err, cb);\n }\n _addHeaderLines(headers, n) {\n if (headers?.length) {\n let dest;\n if (this.complete) {\n this.rawTrailers = headers;\n this[kTrailersCount] = n;\n dest = this[kTrailers];\n }\n else {\n this.rawHeaders = headers;\n this[kHeadersCount] = n;\n dest = this[kHeaders];\n }\n if (dest) {\n for (let i = 0; i < n; i += 2) {\n this._addHeaderLine(headers[i], headers[i + 1], dest);\n }\n }\n }\n }\n // Add the given (field, value) pair to the message\n //\n // Per RFC2616, section 4.2 it is acceptable to join multiple instances of the\n // same header with a ', ' if the header in question supports specification of\n // multiple values this way. The one exception to this is the Cookie header,\n // which has multiple values joined with a '; ' instead. If a header's values\n // cannot be joined in either of these ways, we declare the first instance the\n // winner and drop the second. Extended header fields (those beginning with\n // 'x-') are always joined.\n _addHeaderLine(field, value, dest) {\n field = matchKnownFields(field);\n const flag = field.charCodeAt(0);\n if (flag === 0 || flag === 2) {\n field = field.slice(1);\n // Make a delimited list\n if (typeof dest[field] === \"string\") {\n dest[field] += (flag === 0 ? \", \" : \"; \") + value;\n }\n else {\n dest[field] = value;\n }\n }\n else if (flag === 1) {\n // Array header -- only Set-Cookie at the moment\n if (dest[\"set-cookie\"] !== undefined) {\n dest[\"set-cookie\"].push(value);\n }\n else {\n dest[\"set-cookie\"] = [value];\n }\n }\n else if (this.joinDuplicateHeaders) {\n // RFC 9110 https://www.rfc-editor.org/rfc/rfc9110#section-5.2\n // https://github.com/nodejs/node/issues/45699\n // allow authorization multiple fields\n // Make a delimited list\n if (dest[field] === undefined) {\n dest[field] = value;\n }\n else {\n dest[field] += \", \" + value;\n }\n }\n else if (dest[field] === undefined) {\n // Drop duplicates\n dest[field] = value;\n }\n }\n _addHeaderLineDistinct(field, value, dest) {\n field = field.toLowerCase();\n if (!dest[field]) {\n dest[field] = [value];\n }\n else {\n dest[field].push(value);\n }\n }\n // Call this instead of resume() if we want to just\n // dump all the data to /dev/null\n _dump() {\n if (!this._dumped) {\n this._dumped = true;\n // If there is buffered data, it may trigger 'data' events.\n // Remove 'data' event listeners explicitly.\n this.removeAllListeners(\"data\");\n this.resume();\n }\n }\n}\n/* These items copied from Node.js: node/lib/_http_incoming.js, because they are not exported from that file. */\n// This function is used to help avoid the lowercasing of a field name if it\n// matches a 'traditional cased' version of a field name. It then returns the\n// lowercased name to both avoid calling toLowerCase() a second time and to\n// indicate whether the field was a 'no duplicates' field. If a field is not a\n// 'no duplicates' field, a `0` byte is prepended as a flag. The one exception\n// to this is the Set-Cookie header which is indicated by a `1` byte flag, since\n// it is an 'array' field and thus is treated differently in _addHeaderLines().\n// TODO: perhaps http_parser could be returning both raw and lowercased versions\n// of known header names to avoid us having to call toLowerCase() for those\n// headers.\nfunction matchKnownFields(field, lowercased = false) {\n switch (field.length) {\n case 3:\n if (field === \"Age\" || field === \"age\")\n return \"age\";\n break;\n case 4:\n if (field === \"Host\" || field === \"host\")\n return \"host\";\n if (field === \"From\" || field === \"from\")\n return \"from\";\n if (field === \"ETag\" || field === \"etag\")\n return \"etag\";\n if (field === \"Date\" || field === \"date\")\n return \"\\u0000date\";\n if (field === \"Vary\" || field === \"vary\")\n return \"\\u0000vary\";\n break;\n case 6:\n if (field === \"Server\" || field === \"server\")\n return \"server\";\n if (field === \"Cookie\" || field === \"cookie\")\n return \"\\u0002cookie\";\n if (field === \"Origin\" || field === \"origin\")\n return \"\\u0000origin\";\n if (field === \"Expect\" || field === \"expect\")\n return \"\\u0000expect\";\n if (field === \"Accept\" || field === \"accept\")\n return \"\\u0000accept\";\n break;\n case 7:\n if (field === \"Referer\" || field === \"referer\")\n return \"referer\";\n if (field === \"Expires\" || field === \"expires\")\n return \"expires\";\n if (field === \"Upgrade\" || field === \"upgrade\")\n return \"\\u0000upgrade\";\n break;\n case 8:\n if (field === \"Location\" || field === \"location\")\n return \"location\";\n if (field === \"If-Match\" || field === \"if-match\")\n return \"\\u0000if-match\";\n break;\n case 10:\n if (field === \"User-Agent\" || field === \"user-agent\")\n return \"user-agent\";\n if (field === \"Set-Cookie\" || field === \"set-cookie\")\n return \"\\u0001\";\n if (field === \"Connection\" || field === \"connection\")\n return \"\\u0000connection\";\n break;\n case 11:\n if (field === \"Retry-After\" || field === \"retry-after\")\n return \"retry-after\";\n break;\n case 12:\n if (field === \"Content-Type\" || field === \"content-type\")\n return \"content-type\";\n if (field === \"Max-Forwards\" || field === \"max-forwards\")\n return \"max-forwards\";\n break;\n case 13:\n if (field === \"Authorization\" || field === \"authorization\")\n return \"authorization\";\n if (field === \"Last-Modified\" || field === \"last-modified\")\n return \"last-modified\";\n if (field === \"Cache-Control\" || field === \"cache-control\")\n return \"\\u0000cache-control\";\n if (field === \"If-None-Match\" || field === \"if-none-match\")\n return \"\\u0000if-none-match\";\n break;\n case 14:\n if (field === \"Content-Length\" || field === \"content-length\")\n return \"content-length\";\n break;\n case 15:\n if (field === \"Accept-Encoding\" || field === \"accept-encoding\")\n return \"\\u0000accept-encoding\";\n if (field === \"Accept-Language\" || field === \"accept-language\")\n return \"\\u0000accept-language\";\n if (field === \"X-Forwarded-For\" || field === \"x-forwarded-for\")\n return \"\\u0000x-forwarded-for\";\n break;\n case 16:\n if (field === \"Content-Encoding\" || field === \"content-encoding\")\n return \"\\u0000content-encoding\";\n if (field === \"X-Forwarded-Host\" || field === \"x-forwarded-host\")\n return \"\\u0000x-forwarded-host\";\n break;\n case 17:\n if (field === \"If-Modified-Since\" || field === \"if-modified-since\")\n return \"if-modified-since\";\n if (field === \"Transfer-Encoding\" || field === \"transfer-encoding\")\n return \"\\u0000transfer-encoding\";\n if (field === \"X-Forwarded-Proto\" || field === \"x-forwarded-proto\")\n return \"\\u0000x-forwarded-proto\";\n break;\n case 19:\n if (field === \"Proxy-Authorization\" || field === \"proxy-authorization\")\n return \"proxy-authorization\";\n if (field === \"If-Unmodified-Since\" || field === \"if-unmodified-since\")\n return \"if-unmodified-since\";\n break;\n }\n if (lowercased) {\n return \"\\u0000\" + field;\n }\n return matchKnownFields(field.toLowerCase(), true);\n}\nfunction onError(self, error, cb) {\n // This is to keep backward compatible behavior.\n // An error is emitted only if there are listeners attached to the event.\n if (self.listenerCount(\"error\") === 0) {\n cb();\n }\n else {\n cb(error);\n }\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE } from \"./errors.js\";\n/* These items copied from Node.js: node/lib/internal/validators.js */\nexport function validateString(value, name) {\n if (typeof value !== \"string\")\n throw new ERR_INVALID_ARG_TYPE(name, \"string\", value);\n}\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/;\nexport function validateLinkHeaderFormat(value, name) {\n if (typeof value === \"undefined\" || !linkValueRegExp.exec(value)) {\n throw new ERR_INVALID_ARG_VALUE(name, value, 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"');\n }\n}\nexport function validateLinkHeaderValue(hints) {\n if (typeof hints === \"string\") {\n validateLinkHeaderFormat(hints, \"hints\");\n return hints;\n }\n else if (Array.isArray(hints)) {\n const hintsLength = hints.length;\n let result = \"\";\n if (hintsLength === 0) {\n return result;\n }\n for (let i = 0; i < hintsLength; i++) {\n const link = hints[i];\n validateLinkHeaderFormat(link, \"hints\");\n result += link;\n if (i !== hintsLength - 1) {\n result += \", \";\n }\n }\n return result;\n }\n throw new ERR_INVALID_ARG_VALUE(\"hints\", hints, 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"');\n}\n/* These items copied from Node.js: node/lib/internal/util/types.js */\nexport function isUint8Array(value) {\n return value != null && value[Symbol.toStringTag] === \"Uint8Array\";\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/internal/http.js. */\nexport const kNeedDrain = Symbol(\"kNeedDrain\");\nexport const kOutHeaders = Symbol(\"kOutHeaders\");\n// In Node.js this utcDate is cached for 1 second, for use across\n// all http connections. However, in C@E we just create a new one\n// since we're not able to share this data across separate invocations.\nexport function utcDate() {\n return new Date().toUTCString();\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/internal/streams/state.js. */\nexport function getDefaultHighWaterMark(objectMode) {\n return objectMode ? 16 : 64 * 1024;\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/_http_common.js. */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/;\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nexport function checkIsHttpToken(val) {\n return tokenRegExp.test(val);\n}\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n/**\n * True if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nexport function checkInvalidHeaderChar(val) {\n return headerCharRegex.test(val);\n}\nexport const chunkExpression = /(?:^|\\W)chunked(?:$|\\W)/i;\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n// This file modeled after Node.js - node/lib/_http_outgoing.js\nimport { Buffer } from \"node:buffer\";\nimport { Writable } from \"node:stream\";\nimport { ERR_HTTP_BODY_NOT_ALLOWED, ERR_HTTP_CONTENT_LENGTH_MISMATCH, ERR_HTTP_HEADERS_SENT, ERR_HTTP_INVALID_HEADER_VALUE, ERR_HTTP_TRAILER_INVALID, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_INVALID_CHAR, ERR_INVALID_HTTP_TOKEN, ERR_METHOD_NOT_IMPLEMENTED, ERR_STREAM_ALREADY_FINISHED, ERR_STREAM_CANNOT_PIPE, ERR_STREAM_DESTROYED, ERR_STREAM_NULL_VALUES, ERR_STREAM_WRITE_AFTER_END, } from \"../utils/errors.js\";\nimport { isUint8Array, validateString } from \"../utils/types.js\";\nimport { kNeedDrain, kOutHeaders, utcDate } from \"./internal-http.js\";\nimport { getDefaultHighWaterMark } from \"./internal-streams-state.js\";\nimport { checkInvalidHeaderChar, checkIsHttpToken, chunkExpression as RE_TE_CHUNKED, } from \"./http-common.js\";\n/* These items copied from Node.js: node/lib/_http_outgoing.js. */\nfunction debug(format) {\n // console.log(\"http \" + format);\n}\nconst kCorked = Symbol(\"corked\");\nconst kChunkedBuffer = Symbol(\"kChunkedBuffer\");\nconst kChunkedLength = Symbol(\"kChunkedLength\");\nconst kUniqueHeaders = Symbol(\"kUniqueHeaders\");\nconst kBytesWritten = Symbol(\"kBytesWritten\");\nconst kErrored = Symbol(\"errored\");\nconst kHighWaterMark = Symbol(\"kHighWaterMark\");\nconst kRejectNonStandardBodyWrites = Symbol(\"kRejectNonStandardBodyWrites\");\nconst nop = () => { };\nconst RE_CONN_CLOSE = /(?:^|\\W)close(?:$|\\W)/i;\n// isCookieField performs a case-insensitive comparison of a provided string\n// against the word \"cookie.\" As of V8 6.6 this is faster than handrolling or\n// using a case-insensitive RegExp.\nfunction isCookieField(s) {\n return s.length === 6 && s.toLowerCase() === \"cookie\";\n}\nfunction isContentDispositionField(s) {\n return s.length === 19 && s.toLowerCase() === \"content-disposition\";\n}\n/**\n * An in-memory buffer that stores the chunks that have been streamed to an\n * OutgoingMessage instance.\n */\nexport class WrittenDataBuffer {\n [kCorked] = 0;\n [kHighWaterMark] = getDefaultHighWaterMark();\n entries = [];\n onWrite;\n constructor(params = {}) {\n this.onWrite = params.onWrite;\n }\n write(data, encoding, callback) {\n this.entries.push({\n data,\n length: data.length,\n encoding,\n callback,\n written: false,\n });\n this._flush();\n return true;\n }\n cork() {\n this[kCorked]++;\n }\n uncork() {\n this[kCorked]--;\n this._flush();\n }\n _flush() {\n if (this[kCorked] <= 0) {\n for (const [index, entry] of this.entries.entries()) {\n if (!entry.written) {\n entry.written = true;\n if (this.onWrite != null) {\n this.onWrite(index, entry);\n }\n if (entry.callback != null) {\n entry.callback.call(undefined);\n }\n }\n }\n }\n }\n get writableLength() {\n return this.entries.reduce((acc, entry) => {\n return acc + (entry.written && entry.length ? entry.length : 0);\n }, 0);\n }\n get writableHighWaterMark() {\n return this[kHighWaterMark];\n }\n get writableCorked() {\n return this[kCorked];\n }\n}\n/**\n * This is an implementation of OutgoingMessage from Node.js intended to run in\n * a WinterTC runtime. The 'Writable' interface of this class is wired to an in-memory\n * buffer.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_http_outgoing.js\n */\nexport class FetchOutgoingMessage extends Writable {\n req;\n outputData;\n outputSize;\n // Difference from Node.js -\n // `writtenHeaderBytes` is the number of bytes the header has taken.\n // Since Node.js writes both the headers and body into the same outgoing\n // stream, it helps to keep track of this so that we can skip that many bytes\n // from the beginning of the stream when providing the outgoing stream.\n writtenHeaderBytes = 0;\n _last;\n chunkedEncoding;\n shouldKeepAlive;\n maxRequestsOnConnectionReached;\n _defaultKeepAlive;\n useChunkedEncodingByDefault;\n sendDate;\n _removedConnection;\n _removedContLen;\n _removedTE;\n strictContentLength;\n [kBytesWritten];\n _contentLength;\n _hasBody;\n _trailer;\n [kNeedDrain];\n finished;\n _headerSent;\n [kCorked];\n [kChunkedBuffer];\n [kChunkedLength];\n _closed;\n // Difference from Node.js -\n // In Node.js, this is a socket object.\n // [kSocket]: null;\n _header;\n [kOutHeaders];\n _keepAliveTimeout;\n _maxRequestsPerSocket;\n _onPendingData;\n [kUniqueHeaders];\n [kErrored];\n [kHighWaterMark];\n [kRejectNonStandardBodyWrites];\n _writtenDataBuffer = new WrittenDataBuffer({\n onWrite: this._onDataWritten.bind(this),\n });\n constructor(req, options) {\n super();\n this.req = req;\n // Queue that holds all currently pending data, until the response will be\n // assigned to the socket (until it will its turn in the HTTP pipeline).\n this.outputData = [];\n // `outputSize` is an approximate measure of how much data is queued on this\n // response. `_onPendingData` will be invoked to update similar global\n // per-connection counter. That counter will be used to pause/unpause the\n // TCP socket and HTTP Parser and thus handle the backpressure.\n this.outputSize = 0;\n // Cannot assign to this.writable because it is a readonly property\n // this.writable = true;\n this.destroyed = false;\n this._last = false;\n this.chunkedEncoding = false;\n this.shouldKeepAlive = true;\n this.maxRequestsOnConnectionReached = false;\n this._defaultKeepAlive = true;\n this.useChunkedEncodingByDefault = true;\n this.sendDate = false;\n this._removedConnection = false;\n this._removedContLen = false;\n this._removedTE = false;\n this.strictContentLength = false;\n this[kBytesWritten] = 0;\n this._contentLength = null;\n this._hasBody = true;\n this._trailer = \"\";\n this[kNeedDrain] = false;\n this.finished = false;\n this._headerSent = false;\n this[kCorked] = 0;\n this[kChunkedBuffer] = [];\n this[kChunkedLength] = 0;\n this._closed = false;\n this._header = null;\n this[kOutHeaders] = null;\n this._keepAliveTimeout = 0;\n this._onPendingData = nop;\n this[kErrored] = null;\n this[kHighWaterMark] = options?.highWaterMark ?? getDefaultHighWaterMark();\n this[kRejectNonStandardBodyWrites] =\n options?.rejectNonStandardBodyWrites ?? false;\n this[kUniqueHeaders] = null;\n }\n _renderHeaders() {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"render\");\n }\n const headersMap = this[kOutHeaders];\n const headers = {};\n if (headersMap !== null) {\n const keys = Object.keys(headersMap);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n headers[headersMap[key][0]] = headersMap[key][1];\n }\n }\n return headers;\n }\n cork() {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would call cork() on the socket instead\n // In our implementation, we do the same to the \"written data buffer\" instead.\n this[kCorked]++;\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n }\n uncork() {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would call uncork() on the socket instead\n // In our implementation, we do the same to the \"written data buffer\" instead.\n this[kCorked]--;\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.uncork();\n }\n if (this[kCorked] || this[kChunkedBuffer].length === 0) {\n return;\n }\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // All commented out code below is from Node.js used for this purpose.\n // const len = this[kChunkedLength];\n const buf = this[kChunkedBuffer];\n // assert(this.chunkedEncoding);\n // let callbacks: (WriteCallback | undefined)[] | undefined;\n // this._send(len.toString(16), \"latin1\", null);\n // this._send(crlf_buf, null, null);\n for (const { data, encoding, callback } of buf) {\n // this._send(data ?? \"\", encoding, null);\n // if (callback) {\n // callbacks ??= [];\n // callbacks.push(callback);\n // }\n this._send(data ?? \"\", encoding, callback);\n }\n // this._send(\n // crlf_buf,\n // null,\n // callbacks?.length\n // ? (err) => {\n // for (const callback of callbacks) {\n // callback?.(err);\n // }\n // }\n // : null\n // );\n this[kChunkedBuffer].length = 0;\n this[kChunkedLength] = 0;\n }\n setTimeout(msecs, callback) {\n // Difference from Node.js -\n // In Node.js, this is supposed to set the underlying socket to time out\n // after some time and then run a callback.\n // We do nothing here since we don't really have a way to support direct\n // access to the socket.\n return this;\n }\n destroy(error) {\n if (this.destroyed) {\n return this;\n }\n this.destroyed = true;\n this[kErrored] = error;\n // Difference from Node.js -\n // In Node.js, we would also attempt to destroy the underlying socket.\n return this;\n }\n _send(data, encoding, callback, byteLength) {\n // This is a shameful hack to get the headers and first body chunk onto\n // the same packet. Future versions of Node are going to take care of\n // this at a lower level and in a more general way.\n if (!this._headerSent) {\n const header = this._header;\n if (typeof data === \"string\" &&\n (encoding === \"utf8\" || encoding === \"latin1\" || !encoding)) {\n data = header + data;\n }\n else {\n this.outputData.unshift({\n data: header,\n encoding: \"latin1\",\n callback: undefined,\n });\n this.outputSize += header.length;\n this._onPendingData(header.length);\n }\n this._headerSent = true;\n // Difference from Node.js -\n // Parse headers here and trigger _headersSent\n this.writtenHeaderBytes = header.length;\n // Save written headers as object\n const [statusLine, ...headerLines] = this._header.split(\"\\r\\n\");\n const STATUS_LINE_REGEXP = /^HTTP\\/1\\.1 (?<statusCode>\\d+) (?<statusMessage>.*)$/;\n const statusLineResult = STATUS_LINE_REGEXP.exec(statusLine);\n if (statusLineResult == null) {\n throw new Error(\"Unexpected! Status line was \" + statusLine);\n }\n const { statusCode: statusCodeText, statusMessage } = statusLineResult.groups ?? {};\n const statusCode = parseInt(statusCodeText, 10);\n const headers = [];\n for (const headerLine of headerLines) {\n if (headerLine !== \"\") {\n const pos = headerLine.indexOf(\": \");\n const k = headerLine.slice(0, pos);\n const v = headerLine.slice(pos + 2); // Skip the colon and the space\n headers.push([k, v]);\n }\n }\n const event = {\n statusCode,\n statusMessage,\n headers,\n };\n this.emit(\"_headersSent\", event);\n }\n return this._writeRaw(data, encoding, callback, byteLength);\n }\n _writeRaw(data, encoding, callback, size) {\n // Difference from Node.js -\n // In Node.js, we would check for an underlying socket, and if that socket\n // exists and is already destroyed, simply return false.\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n // Difference from Node.js -\n // In Node.js, we would check for an underlying socket, and if that socket\n // exists and is currently writable, it would flush any pending data to the socket and then\n // write the current chunk's data directly into the socket. Afterwards, it would return with the\n // value returned from socket.write().\n // In our implementation, instead we do the same for the \"written data buffer\".\n if (this._writtenDataBuffer != null) {\n // There might be pending data in the this.output buffer.\n if (this.outputData.length) {\n this._flushOutput(this._writtenDataBuffer);\n }\n // Directly write to the buffer.\n return this._writtenDataBuffer.write(data, encoding, callback);\n }\n // Buffer, as long as we're not destroyed.\n this.outputData.push({ data, encoding, callback });\n this.outputSize += data.length;\n this._onPendingData(data.length);\n return this.outputSize < this[kHighWaterMark];\n }\n _onDataWritten(index, entry) {\n const event = { index, entry };\n this.emit(\"_dataWritten\", event);\n }\n _storeHeader(firstLine, headers) {\n // firstLine in the case of request is: 'GET /index.html HTTP/1.1\\r\\n'\n // in the case of response it is: 'HTTP/1.1 200 OK\\r\\n'\n const state = {\n connection: false,\n contLen: false,\n te: false,\n date: false,\n expect: false,\n trailer: false,\n header: firstLine,\n };\n if (headers) {\n if (headers === this[kOutHeaders]) {\n for (const key in headers) {\n const entry = headers[key];\n processHeader(this, state, entry[0], entry[1], false);\n }\n }\n else if (Array.isArray(headers)) {\n if (headers.length && Array.isArray(headers[0])) {\n for (let i = 0; i < headers.length; i++) {\n const entry = headers[i];\n processHeader(this, state, entry[0], entry[1], true);\n }\n }\n else {\n if (headers.length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE(\"headers\", headers);\n }\n for (let n = 0; n < headers.length; n += 2) {\n processHeader(this, state, headers[n], headers[n + 1], true);\n }\n }\n }\n else {\n for (const key in headers) {\n if (headers.hasOwnProperty(key)) {\n const _headers = headers;\n processHeader(this, state, key, _headers[key], true);\n }\n }\n }\n }\n let { header } = state;\n // Date header\n if (this.sendDate && !state.date) {\n header += \"Date: \" + utcDate() + \"\\r\\n\";\n }\n // Force the connection to close when the response is a 204 No Content or\n // a 304 Not Modified and the user has set a \"Transfer-Encoding: chunked\"\n // header.\n //\n // RFC 2616 mandates that 204 and 304 responses MUST NOT have a body but\n // node.js used to send out a zero chunk anyway to accommodate clients\n // that don't have special handling for those responses.\n //\n // It was pointed out that this might confuse reverse proxies to the point\n // of creating security liabilities, so suppress the zero chunk and force\n // the connection to close.\n // NOTE: the \"as any\" here is needed because 'statusCode' is only\n // defined on the subclass but is used here.\n if (this.chunkedEncoding &&\n (this.statusCode === 204 || this.statusCode === 304)) {\n debug(this.statusCode +\n \" response should not use chunked encoding,\" +\n \" closing connection.\");\n this.chunkedEncoding = false;\n this.shouldKeepAlive = false;\n }\n // keep-alive logic\n if (this._removedConnection) {\n // shouldKeepAlive is generally true for HTTP/1.1. In that common case,\n // even if the connection header isn't sent, we still persist by default.\n this._last = !this.shouldKeepAlive;\n }\n else if (!state.connection) {\n // this.agent would only exist on class ClientRequest\n const shouldSendKeepAlive = this.shouldKeepAlive &&\n (state.contLen || this.useChunkedEncodingByDefault); /* || this.agent */\n if (shouldSendKeepAlive && this.maxRequestsOnConnectionReached) {\n header += \"Connection: close\\r\\n\";\n }\n else if (shouldSendKeepAlive) {\n header += \"Connection: keep-alive\\r\\n\";\n if (this._keepAliveTimeout && this._defaultKeepAlive) {\n const timeoutSeconds = Math.floor(this._keepAliveTimeout / 1000);\n let max = \"\";\n if (this._maxRequestsPerSocket && ~~this._maxRequestsPerSocket > 0) {\n max = `, max=${this._maxRequestsPerSocket}`;\n }\n header += `Keep-Alive: timeout=${timeoutSeconds}${max}\\r\\n`;\n }\n }\n else {\n this._last = true;\n header += \"Connection: close\\r\\n\";\n }\n }\n if (!state.contLen && !state.te) {\n if (!this._hasBody) {\n // Make sure we don't end the 0\\r\\n\\r\\n at the end of the message.\n this.chunkedEncoding = false;\n }\n else if (!this.useChunkedEncodingByDefault) {\n this._last = true;\n }\n else if (!state.trailer &&\n !this._removedContLen &&\n typeof this._contentLength === \"number\") {\n header += \"Content-Length: \" + this._contentLength + \"\\r\\n\";\n }\n else if (!this._removedTE) {\n header += \"Transfer-Encoding: chunked\\r\\n\";\n this.chunkedEncoding = true;\n }\n else {\n // We should only be able to get here if both Content-Length and\n // Transfer-Encoding are removed by the user.\n // See: test/parallel/test-http-remove-header-stays-removed.js\n debug(\"Both Content-Length and Transfer-Encoding are removed\");\n // We can't keep alive in this case, because with no header info the body\n // is defined as all data until the connection is closed.\n this._last = true;\n }\n }\n // Test non-chunked message does not have trailer header set,\n // message will be terminated by the first empty line after the\n // header fields, regardless of the header fields present in the\n // message, and thus cannot contain a message body or 'trailers'.\n if (this.chunkedEncoding !== true && state.trailer) {\n throw new ERR_HTTP_TRAILER_INVALID();\n }\n this._header = header + \"\\r\\n\";\n this._headerSent = false;\n // Wait until the first body chunk, or close(), is sent to flush,\n // UNLESS we're sending Expect: 100-continue.\n if (state.expect) {\n this._send(\"\");\n }\n }\n get _headers() {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headers is deprecated\");\n return this.getHeaders();\n }\n set _headers(val) {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headers is deprecated\");\n if (val == null) {\n this[kOutHeaders] = null;\n }\n else if (typeof val === \"object\") {\n const headers = (this[kOutHeaders] = Object.create(null));\n const keys = Object.keys(val);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const name = keys[i];\n headers[name.toLowerCase()] = [name, val[name]];\n }\n }\n }\n get connection() {\n // Difference from Node.js -\n // Connection is not supported\n return null;\n }\n set connection(_socket) {\n // Difference from Node.js -\n // Connection is not supported\n console.error(\"No support for OutgoingMessage.connection\");\n }\n get socket() {\n // Difference from Node.js -\n // socket is not supported\n return null;\n }\n set socket(_socket) {\n // Difference from Node.js -\n // socket is not supported\n console.error(\"No support for OutgoingMessage.socket\");\n }\n get _headerNames() {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headerNames is deprecated\");\n const headers = this[kOutHeaders];\n if (headers !== null) {\n const out = Object.create(null);\n const keys = Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n const val = headers[key][0];\n out[key] = val;\n }\n return out;\n }\n return null;\n }\n set _headerNames(val) {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headerNames is deprecated\");\n if (typeof val === \"object\" && val !== null) {\n const headers = this[kOutHeaders];\n if (!headers)\n return;\n const keys = Object.keys(val);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const header = headers[keys[i]];\n if (header)\n header[0] = val[keys[i]];\n }\n }\n }\n setHeader(name, value) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"set\");\n }\n validateHeaderName(name);\n validateHeaderValue(name, value);\n let headers = this[kOutHeaders];\n if (headers === null) {\n this[kOutHeaders] = headers = { __proto__: null };\n }\n headers[name.toLowerCase()] = [name, value];\n return this;\n }\n setHeaders(headers) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"set\");\n }\n if (!headers ||\n Array.isArray(headers) ||\n typeof headers.keys !== \"function\" ||\n typeof headers.get !== \"function\") {\n throw new ERR_INVALID_ARG_TYPE(\"headers\", [\"Headers\", \"Map\"], headers);\n }\n // Headers object joins multiple cookies with a comma when using\n // the getter to retrieve the value,\n // unless iterating over the headers directly.\n // We also cannot safely split by comma.\n // To avoid setHeader overwriting the previous value we push\n // set-cookie values in array and set them all at once.\n const cookies = [];\n for (const { 0: key, 1: value } of headers) {\n if (key === \"set-cookie\") {\n if (Array.isArray(value)) {\n cookies.push(...value);\n }\n else {\n cookies.push(value);\n }\n continue;\n }\n this.setHeader(key, value);\n }\n if (cookies.length) {\n this.setHeader(\"set-cookie\", cookies);\n }\n return this;\n }\n appendHeader(name, value) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"append\");\n }\n validateHeaderName(name);\n validateHeaderValue(name, value);\n const field = name.toLowerCase();\n const headers = this[kOutHeaders];\n if (headers === null || !headers[field]) {\n return this.setHeader(name, value);\n }\n // Prepare the field for appending, if required\n if (!Array.isArray(headers[field][1])) {\n headers[field][1] = [headers[field][1]];\n }\n const existingValues = headers[field][1];\n if (Array.isArray(value)) {\n for (let i = 0, length = value.length; i < length; i++) {\n existingValues.push(value[i]);\n }\n }\n else {\n existingValues.push(value);\n }\n return this;\n }\n getHeader(name) {\n validateString(name, \"name\");\n const headers = this[kOutHeaders];\n if (headers === null) {\n return;\n }\n const entry = headers[name.toLowerCase()];\n return entry?.[1];\n }\n getHeaderNames() {\n return this[kOutHeaders] !== null ? Object.keys(this[kOutHeaders]) : [];\n }\n getRawHeaderNames() {\n const headersMap = this[kOutHeaders];\n if (headersMap === null)\n return [];\n const values = Object.values(headersMap);\n const headers = Array(values.length);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = values.length; i < l; i++) {\n headers[i] = values[i][0];\n }\n return headers;\n }\n getHeaders() {\n const headers = this[kOutHeaders];\n const ret = { __proto__: null };\n if (headers) {\n const keys = Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n const val = headers[key][1];\n ret[key] = val;\n }\n }\n return ret;\n }\n hasHeader(name) {\n validateString(name, \"name\");\n return (this[kOutHeaders] !== null && !!this[kOutHeaders][name.toLowerCase()]);\n }\n removeHeader(name) {\n validateString(name, \"name\");\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"remove\");\n }\n const key = name.toLowerCase();\n switch (key) {\n case \"connection\":\n this._removedConnection = true;\n break;\n case \"content-length\":\n this._removedContLen = true;\n break;\n case \"transfer-encoding\":\n this._removedTE = true;\n break;\n case \"date\":\n this.sendDate = false;\n break;\n }\n if (this[kOutHeaders] !== null) {\n delete this[kOutHeaders][key];\n }\n }\n _implicitHeader() {\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"_implicitHeader()\");\n }\n get headersSent() {\n return !!this._header;\n }\n write(chunk, encoding, callback) {\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n const ret = write_(this, chunk, encoding, callback, false);\n if (!ret) {\n this[kNeedDrain] = true;\n }\n return ret;\n }\n addTrailers(headers) {\n this._trailer = \"\";\n const isArray = Array.isArray(headers);\n const keys = isArray ? [...headers.keys()] : Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = keys.length; i < l; i++) {\n let field, value;\n if (isArray) {\n const _headers = headers;\n const key = keys[i];\n field = _headers[key][0];\n value = _headers[key][1];\n }\n else {\n const _headers = headers;\n const key = keys[i];\n field = key;\n value = _headers[key];\n }\n validateHeaderName(field, \"Trailer name\");\n // Check if the field must be sent several times\n if (Array.isArray(value) &&\n value.length > 1 &&\n (!this[kUniqueHeaders] ||\n !this[kUniqueHeaders].has(field.toLowerCase()))) {\n for (let j = 0, l = value.length; j < l; j++) {\n if (checkInvalidHeaderChar(value[j])) {\n debug(`Trailer \"${field}\"[${j}] contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"trailer content\", field);\n }\n this._trailer += field + \": \" + value[j] + \"\\r\\n\";\n }\n }\n else {\n if (Array.isArray(value)) {\n value = value.join(\"; \");\n }\n if (checkInvalidHeaderChar(String(value))) {\n debug(`Trailer \"${field}\" contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"trailer content\", field);\n }\n this._trailer += field + \": \" + value + \"\\r\\n\";\n }\n }\n }\n end(chunk, encoding, callback) {\n if (typeof chunk === \"function\") {\n callback = chunk;\n chunk = null;\n encoding = null;\n }\n else if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n if (chunk) {\n if (this.finished) {\n onError(this, new ERR_STREAM_WRITE_AFTER_END(), typeof callback !== \"function\" ? nop : callback);\n return this;\n }\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.cork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n write_(this, chunk, encoding, null, true);\n }\n else if (this.finished) {\n if (typeof callback === \"function\") {\n if (!this.writableFinished) {\n this.on(\"finish\", callback);\n }\n else {\n callback(new ERR_STREAM_ALREADY_FINISHED(\"end\"));\n }\n }\n return this;\n }\n else if (!this._header) {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.cork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n this._contentLength = 0;\n this._implicitHeader();\n }\n if (typeof callback === \"function\")\n this.once(\"finish\", callback);\n if (strictContentLength(this) &&\n this[kBytesWritten] !== this._contentLength) {\n throw new ERR_HTTP_CONTENT_LENGTH_MISMATCH(this[kBytesWritten], this._contentLength);\n }\n const finish = onFinish.bind(undefined, this);\n if (this._hasBody && this.chunkedEncoding) {\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // So here we just send an empty chunk. Trailers are not supported\n // this._send(\"0\\r\\n\" + this._trailer + \"\\r\\n\", \"latin1\", finish);\n this._send(\"\", \"latin1\", finish);\n }\n else if (!this._headerSent || this.writableLength || chunk) {\n this._send(\"\", \"latin1\", finish);\n }\n else {\n setTimeout(finish, 0);\n }\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.uncork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.uncork();\n }\n this[kCorked] = 1;\n this.uncork();\n this.finished = true;\n // There is the first message on the outgoing queue, and we've sent\n // everything to the socket.\n debug(\"outgoing message end.\");\n // Difference from Node.js -\n // In Node.js, if a socket exists, and there is no pending output data,\n // we would also call this._finish() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this.outputData.length === 0 && this._writtenDataBuffer != null) {\n this._finish();\n }\n return this;\n }\n _finish() {\n // Difference from Node.js -\n // In Node.js, this function is only called if a socket exists.\n // This function would assert() for a socket and then emit 'prefinish'.\n // For our implementation we do the same for the \"written data buffer\"\n this.emit(\"prefinish\");\n }\n // No _flush() implementation?\n _flush() {\n // Difference from Node.js -\n // In Node.js, this function is only called if a socket exists.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n // There might be remaining data in this.output; write it out\n const ret = this._flushOutput(this._writtenDataBuffer);\n if (this.finished) {\n // This is a queue to the server or client to bring in the next this.\n this._finish();\n }\n else if (ret && this[kNeedDrain]) {\n this[kNeedDrain] = false;\n this.emit(\"drain\");\n }\n }\n }\n _flushOutput(dataBuffer) {\n while (this[kCorked]) {\n this[kCorked]--;\n dataBuffer.cork();\n }\n const outputLength = this.outputData.length;\n if (outputLength <= 0) {\n return undefined;\n }\n const outputData = this.outputData;\n dataBuffer.cork();\n let ret;\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < outputLength; i++) {\n const { data, encoding, callback } = outputData[i]; // Avoid any potential ref to Buffer in new generation from old generation\n outputData[i].data = null;\n ret = dataBuffer.write(data ?? \"\", encoding, callback);\n }\n dataBuffer.uncork();\n this.outputData = [];\n this._onPendingData(-this.outputSize);\n this.outputSize = 0;\n return ret;\n }\n flushHeaders() {\n if (!this._header) {\n this._implicitHeader();\n }\n // Force-flush the headers.\n this._send(\"\");\n }\n pipe(destination) {\n // OutgoingMessage should be write-only. Piping from it is disabled.\n this.emit(\"error\", new ERR_STREAM_CANNOT_PIPE());\n return destination;\n }\n}\nfunction processHeader(self, state, key, value, validate) {\n if (validate) {\n validateHeaderName(key);\n }\n // If key is content-disposition and there is content-length\n // encode the value in latin1\n // https://www.rfc-editor.org/rfc/rfc6266#section-4.3\n // Refs: https://github.com/nodejs/node/pull/46528\n if (isContentDispositionField(key) && self._contentLength) {\n // The value could be an array here\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n value[i] = String(Buffer.from(String(value[i]), \"latin1\"));\n }\n }\n else {\n value = String(Buffer.from(String(value), \"latin1\"));\n }\n }\n if (Array.isArray(value)) {\n if ((value.length < 2 || !isCookieField(key)) &&\n (!self[kUniqueHeaders] || !self[kUniqueHeaders].has(key.toLowerCase()))) {\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < value.length; i++) {\n storeHeader(self, state, key, value[i], validate);\n }\n return;\n }\n value = value.join(\"; \");\n }\n storeHeader(self, state, key, String(value), validate);\n}\nfunction storeHeader(self, state, key, value, validate) {\n if (validate) {\n validateHeaderValue(key, value);\n }\n state.header += key + \": \" + value + \"\\r\\n\";\n matchHeader(self, state, key, value);\n}\nfunction validateHeaderName(name, label) {\n if (typeof name !== \"string\" || !name || !checkIsHttpToken(name)) {\n throw new ERR_INVALID_HTTP_TOKEN(label || \"Header name\", name);\n }\n}\nfunction validateHeaderValue(name, value) {\n if (value === undefined) {\n throw new ERR_HTTP_INVALID_HEADER_VALUE(String(value), name);\n }\n if (checkInvalidHeaderChar(String(value))) {\n debug(`Header \"${name}\" contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"header content\", name);\n }\n}\nfunction matchHeader(self, state, field, value) {\n if (field.length < 4 || field.length > 17)\n return;\n field = field.toLowerCase();\n switch (field) {\n case \"connection\":\n state.connection = true;\n self._removedConnection = false;\n if (RE_CONN_CLOSE.exec(value) !== null)\n self._last = true;\n else\n self.shouldKeepAlive = true;\n break;\n case \"transfer-encoding\":\n state.te = true;\n self._removedTE = false;\n if (RE_TE_CHUNKED.exec(value) !== null)\n self.chunkedEncoding = true;\n break;\n case \"content-length\":\n state.contLen = true;\n self._contentLength = +value;\n self._removedContLen = false;\n break;\n case \"date\":\n case \"expect\":\n case \"trailer\":\n state[field] = true;\n break;\n case \"keep-alive\":\n self._defaultKeepAlive = false;\n break;\n }\n}\n// const crlf_buf = Buffer.from(\"\\r\\n\");\nfunction onError(msg, err, callback) {\n if (msg.destroyed) {\n return;\n }\n // Difference from Node.js -\n // In Node.js, we would check for the existence of a socket. If one exists, we would\n // use that async ID to scope the error.\n // Instead, we do this.\n setTimeout(emitErrorNt, 0, msg, err, callback);\n}\nfunction emitErrorNt(msg, err, callback) {\n callback(err);\n if (typeof msg.emit === \"function\" && !msg.destroyed) {\n msg.emit(\"error\", err);\n }\n}\nfunction strictContentLength(msg) {\n return (msg.strictContentLength &&\n msg._contentLength != null &&\n msg._hasBody &&\n !msg._removedContLen &&\n !msg.chunkedEncoding &&\n !msg.hasHeader(\"transfer-encoding\"));\n}\nfunction write_(msg, chunk, encoding, callback, fromEnd) {\n if (typeof callback !== \"function\") {\n callback = nop;\n }\n if (chunk === null) {\n throw new ERR_STREAM_NULL_VALUES();\n }\n else if (typeof chunk !== \"string\" && !isUint8Array(chunk)) {\n throw new ERR_INVALID_ARG_TYPE(\"chunk\", [\"string\", \"Buffer\", \"Uint8Array\"], chunk);\n }\n let err = undefined;\n if (msg.finished) {\n err = new ERR_STREAM_WRITE_AFTER_END();\n }\n else if (msg.destroyed) {\n err = new ERR_STREAM_DESTROYED(\"write\");\n }\n if (err) {\n if (!msg.destroyed) {\n onError(msg, err, callback);\n }\n else {\n setTimeout(callback, 0, err);\n }\n return false;\n }\n let len = undefined;\n if (msg.strictContentLength) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n if (strictContentLength(msg) &&\n (fromEnd\n ? msg[kBytesWritten] + len !== msg._contentLength\n : msg[kBytesWritten] + len > (msg._contentLength ?? 0))) {\n throw new ERR_HTTP_CONTENT_LENGTH_MISMATCH(len + msg[kBytesWritten], msg._contentLength);\n }\n msg[kBytesWritten] += len;\n }\n if (!msg._header) {\n if (fromEnd) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n msg._contentLength = len;\n }\n msg._implicitHeader();\n }\n if (!msg._hasBody) {\n if (msg[kRejectNonStandardBodyWrites]) {\n throw new ERR_HTTP_BODY_NOT_ALLOWED();\n }\n else {\n debug(\"This type of response MUST NOT have a body. \" +\n \"Ignoring write() calls.\");\n setTimeout(callback, 0);\n return true;\n }\n }\n // Difference from Node.js -\n // In Node.js, we would also check at this point if a socket exists and is not corked.\n // If so, we'd cork the socket and then queue up an 'uncork' for the next tick.\n // In our implementation we do the same for \"written data buffer\"\n if (!fromEnd &&\n msg._writtenDataBuffer != null &&\n !msg._writtenDataBuffer.writableCorked) {\n msg._writtenDataBuffer.cork();\n setTimeout(connectionCorkNT, 0, msg._writtenDataBuffer);\n }\n let ret;\n if (msg.chunkedEncoding && chunk.length !== 0) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n if (msg[kCorked] && msg._headerSent) {\n msg[kChunkedBuffer].push({ data: chunk, encoding, callback });\n msg[kChunkedLength] += len;\n ret = msg[kChunkedLength] < msg[kHighWaterMark];\n }\n else {\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // msg._send(len.toString(16), \"latin1\", null);\n // msg._send(crlf_buf, null, null);\n // msg._send(chunk, encoding, null, len);\n // ret = msg._send(crlf_buf, null, callback);\n ret = msg._send(chunk, encoding, callback, len);\n }\n }\n else {\n ret = msg._send(chunk, encoding, callback, len);\n }\n debug(\"write ret = \" + ret);\n return ret;\n}\nfunction connectionCorkNT(dataBuffer) {\n dataBuffer.uncork();\n}\nfunction onFinish(outmsg) {\n // Difference from Node.js -\n // In Node.js, if a socket exists and already had an error, we would simply return.\n outmsg.emit(\"finish\");\n}\n// Override some properties this way, because TypeScript won't let us override\n// properties with accessors.\nObject.defineProperties(FetchOutgoingMessage.prototype, {\n errored: {\n get() {\n return this[kErrored];\n },\n },\n closed: {\n get() {\n return this._closed;\n },\n },\n writableFinished: {\n get() {\n // Difference from Node.js -\n // In Node.js, there is one additional requirement --\n // there must be no underlying socket (or its writableLength must be 0).\n // In this implementation we will do the same against \"written data buffer\".\n return (this.finished &&\n this.outputSize === 0 &&\n (this._writtenDataBuffer == null ||\n this._writtenDataBuffer.writableLength === 0));\n },\n },\n writableObjectMode: {\n get() {\n return false;\n },\n },\n writableLength: {\n get() {\n // Difference from Node.js -\n // In Node.js, if a socket exists then that socket's writableLength is added to\n // this value.\n // In this implementation we will do the same against \"written data buffer\".\n return (this.outputSize +\n this[kChunkedLength] +\n (this._writtenDataBuffer != null\n ? this._writtenDataBuffer.writableLength\n : 0));\n },\n },\n writableHighWaterMark: {\n get() {\n // Difference from Node.js -\n // In Node.js, if a socket exists then use that socket's writableHighWaterMark\n // In this implementation we will do the same against \"written data buffer\".\n return this._writtenDataBuffer != null\n ? this._writtenDataBuffer.writableHighWaterMark\n : this[kHighWaterMark];\n },\n },\n writableCorked: {\n get() {\n return this[kCorked];\n },\n },\n writableEnded: {\n get() {\n return this.finished;\n },\n },\n writableNeedDrain: {\n get() {\n return !this.destroyed && !this.finished && this[kNeedDrain];\n },\n },\n});\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport { Buffer } from \"node:buffer\";\nimport { ERR_HTTP_HEADERS_SENT, ERR_HTTP_INVALID_STATUS_CODE, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_INVALID_CHAR, ERR_METHOD_NOT_IMPLEMENTED, } from \"../utils/errors.js\";\nimport { FetchOutgoingMessage, } from \"./http-outgoing.js\";\nimport { chunkExpression } from \"./http-common.js\";\nimport { FetchIncomingMessage } from \"./http-incoming.js\";\nimport { kOutHeaders } from \"./internal-http.js\";\nimport { validateLinkHeaderValue } from \"../utils/types.js\";\n/* These items copied from Node.js: node/lib/_http_common.js. */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n/**\n * True if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nfunction checkInvalidHeaderChar(val) {\n return headerCharRegex.test(val);\n}\n// This file modeled after Node.js - node/lib/_http_server.js\nexport const STATUS_CODES = {\n 100: \"Continue\", // RFC 7231 6.2.1\n 101: \"Switching Protocols\", // RFC 7231 6.2.2\n 102: \"Processing\", // RFC 2518 10.1 (obsoleted by RFC 4918)\n 103: \"Early Hints\", // RFC 8297 2\n 200: \"OK\", // RFC 7231 6.3.1\n 201: \"Created\", // RFC 7231 6.3.2\n 202: \"Accepted\", // RFC 7231 6.3.3\n 203: \"Non-Authoritative Information\", // RFC 7231 6.3.4\n 204: \"No Content\", // RFC 7231 6.3.5\n 205: \"Reset Content\", // RFC 7231 6.3.6\n 206: \"Partial Content\", // RFC 7233 4.1\n 207: \"Multi-Status\", // RFC 4918 11.1\n 208: \"Already Reported\", // RFC 5842 7.1\n 226: \"IM Used\", // RFC 3229 10.4.1\n 300: \"Multiple Choices\", // RFC 7231 6.4.1\n 301: \"Moved Permanently\", // RFC 7231 6.4.2\n 302: \"Found\", // RFC 7231 6.4.3\n 303: \"See Other\", // RFC 7231 6.4.4\n 304: \"Not Modified\", // RFC 7232 4.1\n 305: \"Use Proxy\", // RFC 7231 6.4.5\n 307: \"Temporary Redirect\", // RFC 7231 6.4.7\n 308: \"Permanent Redirect\", // RFC 7238 3\n 400: \"Bad Request\", // RFC 7231 6.5.1\n 401: \"Unauthorized\", // RFC 7235 3.1\n 402: \"Payment Required\", // RFC 7231 6.5.2\n 403: \"Forbidden\", // RFC 7231 6.5.3\n 404: \"Not Found\", // RFC 7231 6.5.4\n 405: \"Method Not Allowed\", // RFC 7231 6.5.5\n 406: \"Not Acceptable\", // RFC 7231 6.5.6\n 407: \"Proxy Authentication Required\", // RFC 7235 3.2\n 408: \"Request Timeout\", // RFC 7231 6.5.7\n 409: \"Conflict\", // RFC 7231 6.5.8\n 410: \"Gone\", // RFC 7231 6.5.9\n 411: \"Length Required\", // RFC 7231 6.5.10\n 412: \"Precondition Failed\", // RFC 7232 4.2\n 413: \"Payload Too Large\", // RFC 7231 6.5.11\n 414: \"URI Too Long\", // RFC 7231 6.5.12\n 415: \"Unsupported Media Type\", // RFC 7231 6.5.13\n 416: \"Range Not Satisfiable\", // RFC 7233 4.4\n 417: \"Expectation Failed\", // RFC 7231 6.5.14\n 418: \"I'm a Teapot\", // RFC 7168 2.3.3\n 421: \"Misdirected Request\", // RFC 7540 9.1.2\n 422: \"Unprocessable Entity\", // RFC 4918 11.2\n 423: \"Locked\", // RFC 4918 11.3\n 424: \"Failed Dependency\", // RFC 4918 11.4\n 425: \"Too Early\", // RFC 8470 5.2\n 426: \"Upgrade Required\", // RFC 2817 and RFC 7231 6.5.15\n 428: \"Precondition Required\", // RFC 6585 3\n 429: \"Too Many Requests\", // RFC 6585 4\n 431: \"Request Header Fields Too Large\", // RFC 6585 5\n 451: \"Unavailable For Legal Reasons\", // RFC 7725 3\n 500: \"Internal Server Error\", // RFC 7231 6.6.1\n 501: \"Not Implemented\", // RFC 7231 6.6.2\n 502: \"Bad Gateway\", // RFC 7231 6.6.3\n 503: \"Service Unavailable\", // RFC 7231 6.6.4\n 504: \"Gateway Timeout\", // RFC 7231 6.6.5\n 505: \"HTTP Version Not Supported\", // RFC 7231 6.6.6\n 506: \"Variant Also Negotiates\", // RFC 2295 8.1\n 507: \"Insufficient Storage\", // RFC 4918 11.5\n 508: \"Loop Detected\", // RFC 5842 7.2\n 509: \"Bandwidth Limit Exceeded\",\n 510: \"Not Extended\", // RFC 2774 7\n 511: \"Network Authentication Required\", // RFC 6585 6\n};\n/**\n * This is an implementation of ServerResponse from Node.js intended to run in\n * a WinterTC runtime. The 'Writable' interface of this class is wired to an in-memory\n * buffer. This class also provides a method that creates a Response object that\n * can be handled by the runtime.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_httpserver.js\n *\n * NOTE: Node.js doesn't really separate the body from headers, the entire \"stream\"\n * contains the headers and the body. So we provide functions that lets us pull\n * the headers and body out individually at a later time.\n */\nexport class FetchServerResponse extends FetchOutgoingMessage {\n static encoder = new TextEncoder();\n statusCode = 200;\n statusMessage;\n _sent100;\n _expect_continue;\n [kOutHeaders] = null;\n constructor(req, options) {\n super(req, options);\n if (req.method === \"HEAD\") {\n this._hasBody = false;\n }\n // this.req = req; // super() actually does this\n this.sendDate = true;\n this._sent100 = false;\n this._expect_continue = false;\n if (req.httpVersionMajor < 1 || req.httpVersionMinor < 1) {\n this.useChunkedEncodingByDefault =\n chunkExpression.exec(String(req.headers.te)) !== null;\n this.shouldKeepAlive = false;\n }\n // Difference from Node.js -\n // In Node.js, in addition to the above, we would check if an observer is enabled for\n // http, and if it is, we would start performance measurement of server response statistics.\n this.fetchResponse = new Promise((resolve) => {\n let finished = false;\n this.on(\"finish\", () => {\n finished = true;\n });\n const initialDataChunks = [];\n const initialDataWrittenHandler = (e) => {\n if (finished) {\n return;\n }\n initialDataChunks[e.index] = this.dataFromDataWrittenEvent(e);\n };\n this.on(\"_dataWritten\", initialDataWrittenHandler);\n this.on(\"_headersSent\", (e) => {\n this.off(\"_dataWritten\", initialDataWrittenHandler);\n // Convert the response object to a Response object and return it\n const { statusCode, statusMessage, headers } = e;\n resolve(this._toFetchResponse(statusCode, statusMessage, headers, initialDataChunks, finished));\n });\n });\n }\n dataFromDataWrittenEvent(e) {\n const { index, entry } = e;\n let { data, encoding } = entry;\n if (index === 0) {\n if (typeof data !== \"string\") {\n console.error(\"First chunk should be string, not sure what happened.\");\n throw new ERR_INVALID_ARG_TYPE(\"packet.data\", [\"string\", \"Buffer\", \"Uint8Array\"], data);\n }\n // The first X bytes are header material, so we remove it.\n data = data.slice(this.writtenHeaderBytes);\n }\n if (typeof data === \"string\") {\n if (encoding === undefined ||\n encoding === \"utf8\" ||\n encoding === \"utf-8\") {\n data = FetchServerResponse.encoder.encode(data);\n }\n else {\n data = Buffer.from(data, encoding ?? undefined);\n }\n }\n return data ?? Buffer.from([]);\n }\n _finish() {\n // Difference from Node.js -\n // In Node.js, if server response statistics performance is being measured, we would stop it.\n super._finish();\n }\n assignSocket(socket) {\n // Difference from Node.js -\n // Socket is not supported\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"assignSocket\");\n }\n detachSocket(socket) {\n // Difference from Node.js -\n // Socket is not supported\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"detachSocket\");\n }\n writeContinue(callback) {\n this._writeRaw(\"HTTP/1.1 100 Continue\\r\\n\\r\\n\", \"ascii\", callback);\n this._sent100 = true;\n }\n writeProcessing(callback) {\n this._writeRaw(\"HTTP/1.1 102 Processing\\r\\n\\r\\n\", \"ascii\", callback);\n }\n writeEarlyHints(hints, callback) {\n let head = \"HTTP/1.1 103 Early Hints\\r\\n\";\n // Difference from Node.js -\n // In Node.js, we would validate the hints object here.\n // validateObject(hints, 'hints');\n if (hints.link === null || hints.link === undefined) {\n return;\n }\n const link = validateLinkHeaderValue(hints.link);\n if (link.length === 0) {\n return;\n }\n head += \"Link: \" + link + \"\\r\\n\";\n for (const key of Object.keys(hints)) {\n if (key !== \"link\") {\n head += key + \": \" + hints[key] + \"\\r\\n\";\n }\n }\n head += \"\\r\\n\";\n this._writeRaw(head, \"ascii\", callback);\n }\n _implicitHeader() {\n this.writeHead(this.statusCode);\n }\n writeHead(statusCode, reason, obj) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"write\");\n }\n const originalStatusCode = statusCode;\n statusCode |= 0;\n if (statusCode < 100 || statusCode > 999) {\n throw new ERR_HTTP_INVALID_STATUS_CODE(originalStatusCode);\n }\n if (typeof reason === \"string\") {\n // writeHead(statusCode, reasonPhrase[, headers])\n this.statusMessage = reason;\n }\n else {\n // writeHead(statusCode[, headers])\n this.statusMessage ||= STATUS_CODES[statusCode] || \"unknown\";\n obj ??= reason;\n }\n this.statusCode = statusCode;\n let headers;\n if (this[kOutHeaders]) {\n // Slow-case: when progressive API and header fields are passed.\n let k;\n if (Array.isArray(obj)) {\n if (obj.length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE(\"headers\", obj);\n }\n // Headers in obj should override previous headers but still\n // allow explicit duplicates. To do so, we first remove any\n // existing conflicts, then use appendHeader.\n for (let n = 0; n < obj.length; n += 2) {\n k = obj[n + 0];\n this.removeHeader(String(k));\n }\n for (let n = 0; n < obj.length; n += 2) {\n k = obj[n];\n if (k) {\n this.appendHeader(String(k), obj[n + 1]);\n }\n }\n }\n else if (obj) {\n const keys = Object.keys(obj);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; i++) {\n k = keys[i];\n if (k) {\n this.setHeader(k, obj[k]);\n }\n }\n }\n // Only progressive api is used\n headers = this[kOutHeaders];\n }\n else {\n // Only writeHead() called\n headers = obj;\n }\n if (checkInvalidHeaderChar(this.statusMessage)) {\n throw new ERR_INVALID_CHAR(\"statusMessage\");\n }\n const statusLine = `HTTP/1.1 ${statusCode} ${this.statusMessage}\\r\\n`;\n if (statusCode === 204 ||\n statusCode === 304 ||\n (statusCode >= 100 && statusCode <= 199)) {\n // RFC 2616, 10.2.5:\n // The 204 response MUST NOT include a message-body, and thus is always\n // terminated by the first empty line after the header fields.\n // RFC 2616, 10.3.5:\n // The 304 response MUST NOT contain a message-body, and thus is always\n // terminated by the first empty line after the header fields.\n // RFC 2616, 10.1 Informational 1xx:\n // This class of status code indicates a provisional response,\n // consisting only of the Status-Line and optional headers, and is\n // terminated by an empty line.\n this._hasBody = false;\n }\n // Don't keep alive connections where the client expects 100 Continue\n // but we sent a final status; they may put extra bytes on the wire.\n if (this._expect_continue && !this._sent100) {\n this.shouldKeepAlive = false;\n }\n // Convert headers to a compatible type for _storeHeader\n const convertedHeaders = headers && !Array.isArray(headers)\n ? headers\n : headers;\n this._storeHeader(statusLine, convertedHeaders ?? null);\n return this;\n }\n // Docs-only deprecated: DEP0063\n writeHeader = this.writeHead;\n fetchResponse;\n _toFetchResponse(status, statusText, sentHeaders, initialDataChunks, finished) {\n const headers = new Headers();\n for (const [header, value] of sentHeaders) {\n headers.append(header, value);\n }\n const _this = this;\n let body = this._hasBody\n ? new ReadableStream({\n start(controller) {\n for (const dataChunk of initialDataChunks) {\n controller.enqueue(dataChunk);\n }\n if (finished) {\n controller.close();\n }\n else {\n _this.on(\"finish\", () => {\n finished = true;\n controller.close();\n });\n _this.on(\"_dataWritten\", (e) => {\n if (finished) {\n return;\n }\n const data = _this.dataFromDataWrittenEvent(e);\n controller.enqueue(data);\n });\n }\n },\n })\n : null;\n // @ts-expect-error this is (currently) a cloudflare-specific class\n if (body != null && typeof FixedLengthStream !== \"undefined\") {\n const contentLength = parseInt(headers.get(\"content-length\") ?? \"\", 10); // will be NaN if not set\n if (contentLength >= 0) {\n // @ts-expect-error this is (currently) a cloudflare-specific class\n body = body.pipeThrough(new FixedLengthStream(contentLength));\n }\n }\n return new Response(body, {\n status,\n statusText,\n headers,\n });\n }\n}\nexport function toReqRes(req, options) {\n const { createIncomingMessage = () => new FetchIncomingMessage(), createServerResponse = (incoming) => new FetchServerResponse(incoming), ctx, } = options ?? {};\n const incoming = createIncomingMessage(ctx);\n const serverResponse = createServerResponse(incoming, ctx);\n const reqUrl = new URL(req.url);\n const versionMajor = 1;\n const versionMinor = 1;\n incoming.httpVersionMajor = versionMajor;\n incoming.httpVersionMinor = versionMinor;\n incoming.httpVersion = `${versionMajor}.${versionMinor}`;\n incoming.url = reqUrl.pathname + reqUrl.search;\n incoming.upgrade = false;\n const headers = [];\n for (const [headerName, headerValue] of req.headers) {\n headers.push(headerName);\n headers.push(headerValue);\n }\n incoming._addHeaderLines(headers, headers.length);\n incoming.method = req.method;\n incoming._stream = req.body;\n return {\n req: incoming,\n res: serverResponse,\n };\n}\nexport function toFetchResponse(res) {\n if (!(res instanceof FetchServerResponse)) {\n throw new Error(\"toFetchResponse must be called on a ServerResponse generated by toReqRes\");\n }\n return res.fetchResponse;\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { MCPServerBase, ServerInfo, ServerDetailInfo } from '@mastra/core/mcp';\nimport { toReqRes, toFetchResponse } from 'fetch-to-node';\nimport type { Context } from 'hono';\nimport { handleError } from '../../error';\n\n// Helper function to get the Mastra instance from the context\nconst getMastra = (c: Context): Mastra => c.get('mastra');\n\n/**\n * Handler for Streamable HTTP requests (POST, GET, DELETE) to /api/mcp/:serverId/mcp\n */\nexport const getMcpServerMessageHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('serverId');\n const { req, res } = toReqRes(c.req.raw);\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n // Use Node.js res to send response since we are not returning a Hono response\n res.writeHead(404, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: `MCP server '${serverId}' not found` }));\n return await toFetchResponse(res);\n }\n\n try {\n // Let the MCPServer instance handle the request and transport management\n await server.startHTTP({\n url: new URL(c.req.url),\n httpPath: `/api/mcp/${serverId}/mcp`,\n req,\n res,\n });\n return await toFetchResponse(res);\n } catch (error: any) {\n // If headers haven't been sent, send an error response\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: {\n code: -32603,\n message: 'Internal server error',\n },\n id: null, // Cannot determine original request ID in catch\n }),\n );\n return await toFetchResponse(res);\n } else {\n // If headers were already sent (e.g., during SSE stream), just log the error\n c.get('logger')?.error('Error after headers sent:', error);\n return await toFetchResponse(res);\n }\n }\n};\n\n/**\n * Handler for SSE related routes for an MCP server.\n * This function will be called for both establishing the SSE connection (GET)\n * and for posting messages to it (POST).\n */\nexport const getMcpServerSseHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('serverId');\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n return c.json({ error: `MCP server '${serverId}' not found` }, 404);\n }\n\n const requestUrl = new URL(c.req.url);\n\n // Define the paths that MCPServer's startSSE method will compare against.\n // These paths correspond to the routes we will define in server/index.ts.\n const sseConnectionPath = `/api/mcp/${serverId}/sse`;\n const sseMessagePath = `/api/mcp/${serverId}/messages`;\n\n try {\n // MCPServer.startSSE will use requestUrl.pathname to differentiate\n // between an SSE connection request and a message posting request.\n return await server.startHonoSSE({\n url: requestUrl,\n ssePath: sseConnectionPath,\n messagePath: sseMessagePath,\n context: c,\n });\n } catch (error: any) {\n c.get('logger')?.error({ err: error, serverId, path: requestUrl.pathname }, 'Error in MCP SSE route handler');\n return handleError(error, 'Error handling MCP SSE request');\n }\n};\n\n/**\n * Handler for GET /api/mcp/v0/servers - List MCP Servers (Registry Style)\n */\nexport const listMcpRegistryServersHandler = async (c: Context) => {\n const mastra = getMastra(c);\n if (!mastra || typeof mastra.listMCPServers !== 'function') {\n c.get('logger')?.error('Mastra instance or listMCPServers method not available in listMcpRegistryServersHandler');\n return c.json({ error: 'Mastra instance or listMCPServers method not available' }, 500);\n }\n\n const mcpServersMap = mastra.listMCPServers();\n if (!mcpServersMap) {\n c.get('logger')?.warn('listMCPServers returned undefined or null in listMcpRegistryServersHandler');\n return c.json({ servers: [], next: null, total_count: 0 });\n }\n\n const allServersArray: MCPServerBase[] = Array.from(\n mcpServersMap instanceof Map ? mcpServersMap.values() : Object.values(mcpServersMap),\n );\n\n const limit = parseInt(c.req.query('limit') || '50', 10);\n const offset = parseInt(c.req.query('offset') || '0', 10);\n\n const paginatedServers = allServersArray.slice(offset, offset + limit);\n const serverInfos: ServerInfo[] = paginatedServers.map(server => server.getServerInfo());\n\n const total_count = allServersArray.length;\n let next: string | null = null;\n if (offset + limit < total_count) {\n const nextOffset = offset + limit;\n const currentUrl = new URL(c.req.url);\n currentUrl.searchParams.set('offset', nextOffset.toString());\n currentUrl.searchParams.set('limit', limit.toString());\n next = currentUrl.toString();\n }\n\n return c.json({\n servers: serverInfos,\n next,\n total_count,\n });\n};\n\n/**\n * Handler for GET /api/mcp/v0/servers/:id - Get MCP Server Details (Registry Style)\n */\nexport const getMcpRegistryServerDetailHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('id');\n const requestedVersion = c.req.query('version'); // Get the requested version from query\n\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n c.get('logger')?.error(\n 'Mastra instance or getMCPServerById method not available in getMcpRegistryServerDetailHandler',\n );\n return c.json({ error: 'Mastra instance or getMCPServerById method not available' }, 500);\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n return c.json({ error: `MCP server with ID '${serverId}' not found` }, 404);\n }\n\n const serverDetailInfo: ServerDetailInfo = server.getServerDetail();\n\n // If a specific version was requested, check if it matches the server's actual version\n if (requestedVersion && serverDetailInfo.version_detail.version !== requestedVersion) {\n c.get('logger')?.info(\n `MCP server with ID '${serverId}' found, but version '${serverDetailInfo.version_detail.version}' does not match requested version '${requestedVersion}'.`,\n );\n return c.json(\n {\n error: `MCP server with ID '${serverId}' found, but not version '${requestedVersion}'. Available version is '${serverDetailInfo.version_detail.version}'.`,\n },\n 404, // Return 404 as the specific version is not found\n );\n }\n\n return c.json(serverDetailInfo);\n};\n\n/**\n * Handler for GET /api/mcp/:serverId/tools - List tools for a specific MCP Server\n */\nexport const listMcpServerToolsHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('serverId');\n\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n c.get('logger')?.error('Mastra instance or getMCPServerById method not available in listMcpServerToolsHandler');\n return c.json({ error: 'Mastra instance or getMCPServerById method not available' }, 500);\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n return c.json({ error: `MCP server with ID '${serverId}' not found` }, 404);\n }\n\n if (typeof server.getToolListInfo !== 'function') {\n c.get('logger')?.error(`MCPServer with ID '${serverId}' does not support getToolListInfo.`);\n return c.json({ error: `Server '${serverId}' cannot list tools in this way.` }, 501);\n }\n\n try {\n const toolListInfo = server.getToolListInfo();\n return c.json(toolListInfo);\n } catch (error: any) {\n c.get('logger')?.error(`Error in listMcpServerToolsHandler for serverId '${serverId}':`, { error: error.message });\n return handleError(error, `Error listing tools for MCP server '${serverId}'`);\n }\n};\n\n/**\n * Handler for GET /api/mcp/:serverId/tools/:toolId - Get details for a specific tool on an MCP Server\n */\nexport const getMcpServerToolDetailHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('serverId');\n const toolId = c.req.param('toolId');\n\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n c.get('logger')?.error('Mastra instance or getMCPServerById method not available in getMcpServerToolDetailHandler');\n return c.json({ error: 'Mastra instance or getMCPServerById method not available' }, 500);\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n return c.json({ error: `MCP server with ID '${serverId}' not found` }, 404);\n }\n\n if (typeof server.getToolInfo !== 'function') {\n c.get('logger')?.error(`MCPServer with ID '${serverId}' does not support getToolInfo.`);\n return c.json({ error: `Server '${serverId}' cannot provide tool details in this way.` }, 501);\n }\n\n try {\n const toolInfo = server.getToolInfo(toolId);\n if (!toolInfo) {\n return c.json({ error: `Tool with ID '${toolId}' not found on MCP server '${serverId}'` }, 404);\n }\n return c.json(toolInfo);\n } catch (error: any) {\n c.get('logger')?.error(`Error in getMcpServerToolDetailHandler for serverId '${serverId}', toolId '${toolId}':`, {\n error: error.message,\n });\n return handleError(error, `Error getting tool '${toolId}' details for MCP server '${serverId}'`);\n }\n};\n\n/**\n * Handler for POST /api/mcp/:serverId/tools/:toolId/execute - Execute a tool on an MCP Server\n */\nexport const executeMcpServerToolHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('serverId');\n const toolId = c.req.param('toolId');\n\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n c.get('logger')?.error('Mastra instance or getMCPServerById method not available in executeMcpServerToolHandler');\n return c.json({ error: 'Mastra instance or getMCPServerById method not available' }, 500);\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n return c.json({ error: `MCP server with ID '${serverId}' not found` }, 404);\n }\n\n if (typeof server.executeTool !== 'function') {\n c.get('logger')?.error(`MCPServer with ID '${serverId}' does not support executeTool.`);\n return c.json({ error: `Server '${serverId}' cannot execute tools in this way.` }, 501);\n }\n\n try {\n const body = await c.req.json();\n const args = body?.data;\n const requestContext = body?.requestContext; // Optional\n\n // The executeTool method in MCPServer is now responsible for arg validation\n const result = await server.executeTool(toolId, args, requestContext);\n return c.json({ result }); // Or return result directly if it's already the desired JSON structure\n } catch (error: any) {\n c.get('logger')?.error(`Error executing tool '${toolId}' on server '${serverId}':`, { error: error.message });\n // Handle ZodError specifically for bad requests if thrown from MCPServer.executeTool\n if (error.name === 'ZodError') {\n // Relies on ZodError having a 'name' property\n return c.json({ error: 'Invalid tool arguments', details: error.errors }, 400);\n }\n return handleError(error, `Error executing tool '${toolId}' on MCP server '${serverId}'`);\n }\n};\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport {\n getMcpServerMessageHandler,\n getMcpServerSseHandler,\n listMcpRegistryServersHandler,\n getMcpRegistryServerDetailHandler,\n listMcpServerToolsHandler,\n getMcpServerToolDetailHandler,\n executeMcpServerToolHandler,\n} from './handlers';\n\nexport function mcpRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n router.post(\n '/:serverId/mcp',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Send a message to an MCP server using Streamable HTTP',\n tags: ['mcp'],\n parameters: [\n {\n name: 'serverId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n content: { 'application/json': { schema: { type: 'object' } } },\n },\n responses: {\n 200: {\n description: 'Streamable HTTP connection processed',\n },\n 404: {\n description: 'MCP server not found',\n },\n },\n }),\n getMcpServerMessageHandler,\n );\n\n router.get(\n '/:serverId/mcp',\n describeRoute({\n description: 'Send a message to an MCP server using Streamable HTTP',\n tags: ['mcp'],\n parameters: [\n {\n name: 'serverId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Streamable HTTP connection processed',\n },\n 404: {\n description: 'MCP server not found',\n },\n },\n }),\n getMcpServerMessageHandler,\n );\n\n // New MCP server routes for SSE\n const mcpSseBasePath = '/:serverId/sse';\n const mcpSseMessagePath = '/:serverId/messages';\n\n // Route for establishing SSE connection\n router.get(\n mcpSseBasePath,\n describeRoute({\n description: 'Establish an MCP Server-Sent Events (SSE) connection with a server instance.',\n tags: ['mcp'],\n parameters: [\n {\n name: 'serverId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'The ID of the MCP server instance.',\n },\n ],\n responses: {\n 200: {\n description:\n 'SSE connection established. The client will receive events over this connection. (Content-Type: text/event-stream)',\n },\n 404: { description: 'MCP server instance not found.' },\n 500: { description: 'Internal server error establishing SSE connection.' },\n },\n }),\n getMcpServerSseHandler,\n );\n\n // Route for POSTing messages over an established SSE connection\n router.post(\n mcpSseMessagePath,\n bodyLimit(bodyLimitOptions), // Apply body limit for messages\n describeRoute({\n description: 'Send a message to an MCP server over an established SSE connection.',\n tags: ['mcp'],\n parameters: [\n {\n name: 'serverId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'The ID of the MCP server instance.',\n },\n ],\n requestBody: {\n description: 'JSON-RPC message to send to the MCP server.',\n required: true,\n content: { 'application/json': { schema: { type: 'object' } } }, // MCP messages are typically JSON\n },\n responses: {\n 200: {\n description:\n 'Message received and is being processed by the MCP server. The actual result or error will be sent as an SSE event over the established connection.',\n },\n 400: { description: 'Bad request (e.g., invalid JSON payload or missing body).' },\n 404: { description: 'MCP server instance not found or SSE connection path incorrect.' },\n 503: { description: 'SSE connection not established with this server, or server unable to process message.' },\n },\n }),\n getMcpServerSseHandler,\n );\n\n router.get(\n '/v0/servers',\n describeRoute({\n description: 'List all available MCP server instances with basic information.',\n tags: ['mcp'],\n parameters: [\n {\n name: 'limit',\n in: 'query',\n description: 'Number of results per page.',\n required: false,\n schema: { type: 'integer', default: 50, minimum: 1, maximum: 5000 },\n },\n {\n name: 'offset',\n in: 'query',\n description: 'Number of results to skip for pagination.',\n required: false,\n schema: { type: 'integer', default: 0, minimum: 0 },\n },\n ],\n responses: {\n 200: {\n description: 'A list of MCP server instances.',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n servers: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n name: { type: 'string' },\n description: { type: 'string' },\n repository: {\n type: 'object',\n properties: {\n url: { type: 'string', description: 'The URL of the repository (e.g., a GitHub URL)' },\n source: {\n type: 'string',\n description: \"The source control platform (e.g., 'github', 'gitlab')\",\n enum: ['github', 'gitlab'],\n },\n id: { type: 'string', description: 'A unique identifier for the repository at the source' },\n },\n },\n version_detail: {\n type: 'object',\n properties: {\n version: { type: 'string', description: 'The semantic version string (e.g., \"1.0.2\")' },\n release_date: {\n type: 'string',\n description: 'The ISO 8601 date-time string when this version was released or registered',\n },\n is_latest: {\n type: 'boolean',\n description: 'Indicates if this version is the latest available',\n },\n },\n },\n },\n },\n },\n next: { type: 'string', format: 'uri', nullable: true },\n total_count: { type: 'integer' },\n },\n },\n },\n },\n },\n },\n }),\n listMcpRegistryServersHandler,\n );\n\n router.get(\n '/v0/servers/:id',\n describeRoute({\n description: 'Get detailed information about a specific MCP server instance.',\n tags: ['mcp'],\n parameters: [\n {\n name: 'id',\n in: 'path',\n required: true,\n description: 'Unique ID of the MCP server instance.',\n schema: { type: 'string' },\n },\n {\n name: 'version',\n in: 'query',\n required: false,\n description: 'Desired MCP server version (currently informational, server returns its actual version).',\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Detailed information about the MCP server instance.',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n name: { type: 'string' },\n description: { type: 'string' },\n repository: {\n type: 'object',\n properties: {\n url: { type: 'string' },\n source: { type: 'string' },\n id: { type: 'string' },\n },\n },\n version_detail: {\n type: 'object',\n properties: {\n version: { type: 'string' },\n release_date: { type: 'string' },\n is_latest: { type: 'boolean' },\n },\n },\n package_canonical: { type: 'string' },\n packages: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n registry_name: { type: 'string' },\n name: { type: 'string' },\n version: { type: 'string' },\n command: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n subcommands: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n description: { type: 'string' },\n is_required: { type: 'boolean' },\n subcommands: {\n type: 'array',\n items: { type: 'object' },\n },\n positional_arguments: {\n type: 'array',\n items: { type: 'object' },\n },\n named_arguments: {\n type: 'array',\n items: { type: 'object' },\n },\n },\n },\n },\n positional_arguments: {\n type: 'array',\n items: { type: 'object' },\n },\n named_arguments: {\n type: 'array',\n items: { type: 'object' },\n },\n },\n },\n environment_variables: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n description: { type: 'string' },\n required: { type: 'boolean' },\n default_value: { type: 'string' },\n },\n },\n },\n },\n },\n },\n remotes: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n transport_type: { type: 'string' },\n url: { type: 'string' },\n },\n },\n },\n },\n },\n },\n },\n },\n 404: {\n description: 'MCP server instance not found.',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: { type: 'string' },\n },\n },\n },\n },\n },\n },\n }),\n getMcpRegistryServerDetailHandler,\n );\n\n router.get(\n '/:serverId/tools',\n describeRoute({\n description: 'List all tools available on a specific MCP server instance.',\n tags: ['mcp'],\n parameters: [\n {\n name: 'serverId',\n in: 'path',\n required: true,\n description: 'Unique ID of the MCP server instance.',\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: { description: 'A list of tools for the MCP server.' }, // Define schema if you have one for McpServerToolListResponse\n 404: { description: 'MCP server instance not found.' },\n 501: { description: 'Server does not support listing tools.' },\n },\n }),\n listMcpServerToolsHandler,\n );\n\n router.get(\n '/:serverId/tools/:toolId',\n describeRoute({\n description: 'Get details for a specific tool on an MCP server.',\n tags: ['mcp'],\n parameters: [\n { name: 'serverId', in: 'path', required: true, schema: { type: 'string' } },\n { name: 'toolId', in: 'path', required: true, schema: { type: 'string' } },\n ],\n responses: {\n 200: { description: 'Details of the specified tool.' }, // Define schema for McpToolInfo\n 404: { description: 'MCP server or tool not found.' },\n 501: { description: 'Server does not support getting tool details.' },\n },\n }),\n getMcpServerToolDetailHandler,\n );\n\n router.post(\n '/:serverId/tools/:toolId/execute',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute a specific tool on an MCP server.',\n tags: ['mcp'],\n parameters: [\n { name: 'serverId', in: 'path', required: true, schema: { type: 'string' } },\n { name: 'toolId', in: 'path', required: true, schema: { type: 'string' } },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n data: { type: 'object' },\n requestContext: { type: 'object' },\n },\n },\n },\n }, // Simplified schema\n },\n responses: {\n 200: { description: 'Result of the tool execution.' },\n 400: { description: 'Invalid tool arguments.' },\n 404: { description: 'MCP server or tool not found.' },\n 501: { description: 'Server does not support tool execution.' },\n },\n }),\n executeMcpServerToolHandler,\n );\n\n return router;\n}\n","/**\n * Parse a limit query parameter value to a valid number\n * @param rawLimit - The raw limit value from query parameters\n * @returns A valid positive integer or undefined\n */\nexport function parseLimit(rawLimit: string | undefined): number | undefined {\n if (rawLimit === undefined) {\n return undefined;\n }\n\n const n = Number(rawLimit);\n if (Number.isFinite(n) && Number.isInteger(n) && n > 0) {\n return n;\n }\n\n return undefined;\n}\n\n/**\n * Parse a page query parameter value to a valid non-negative number\n * @param value - The raw page value from query parameters\n * @param defaultValue - The default value to use if parsing fails (default: 0)\n * @returns A valid non-negative integer\n */\nexport function parsePage(value: string | undefined, defaultValue: number = 0): number {\n const parsed = parseInt(value || String(defaultValue), 10);\n return isNaN(parsed) ? defaultValue : Math.max(0, parsed);\n}\n\n/**\n * Parse a perPage query parameter value to a valid positive number with a maximum cap, or false to fetch all\n * @param value - The raw perPage value from query parameters\n * @param defaultValue - The default value to use if parsing fails (default: 100)\n * @param max - The maximum allowed value (default: 1000)\n * @returns A valid positive integer between 1 and max, or false to bypass pagination\n */\nexport function parsePerPage(\n value: string | undefined,\n defaultValue: number = 100,\n max: number = 1000,\n): number | false {\n const normalized = (value || '').trim().toLowerCase();\n // Handle explicit false to bypass pagination\n if (normalized === 'false') {\n return false;\n }\n const parsed = parseInt(value || String(defaultValue), 10);\n if (isNaN(parsed)) return defaultValue;\n return Math.min(max, Math.max(1, parsed));\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type {\n ThreadOrderBy,\n ThreadSortDirection,\n StorageOrderBy,\n StorageListMessagesInput,\n} from '@mastra/core/storage';\nimport {\n getMemoryStatusHandler as getOriginalMemoryStatusHandler,\n getMemoryConfigHandler as getOriginalMemoryConfigHandler,\n listThreadsHandler as getOriginalListThreadsHandler,\n getThreadByIdHandler as getOriginalThreadByIdHandler,\n saveMessagesHandler as getOriginalSaveMessagesHandler,\n createThreadHandler as getOriginalCreateThreadHandler,\n updateThreadHandler as getOriginalUpdateThreadHandler,\n deleteThreadHandler as getOriginalDeleteThreadHandler,\n listMessagesHandler as getOriginalListMessagesHandler,\n getWorkingMemoryHandler as getOriginalGetWorkingMemoryHandler,\n updateWorkingMemoryHandler as getOriginalUpdateWorkingMemoryHandler,\n searchMemoryHandler as getOriginalSearchMemoryHandler,\n deleteMessagesHandler as getOriginalDeleteMessagesHandler,\n} from '@mastra/server/handlers/memory';\nimport type { Context } from 'hono';\n\nimport { handleError } from '../../error';\nimport { parseLimit, parsePage, parsePerPage } from '../../utils/query-parsers';\n\n/**\n * Helper function to parse JSON query parameters\n * @param value - The query parameter value to parse\n * @returns Parsed JSON object or undefined if parsing fails or value is undefined\n */\nfunction parseJsonParam<T>(value: string | undefined): T | undefined {\n if (!value) return undefined;\n try {\n return JSON.parse(value) as T;\n } catch {\n return undefined;\n }\n}\n\n// Memory handlers\nexport async function getMemoryStatusHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalMemoryStatusHandler({\n mastra,\n agentId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting memory status');\n }\n}\n\nexport async function getMemoryConfigHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalMemoryConfigHandler({\n mastra,\n agentId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting memory configuration');\n }\n}\n\nexport async function listThreadsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const resourceId = c.req.query('resourceId');\n const page = parsePage(c.req.query('page'));\n const perPage = parsePerPage(c.req.query('perPage'));\n const field = c.req.query('orderBy') as ThreadOrderBy | undefined;\n const direction = c.req.query('sortDirection') as ThreadSortDirection | undefined;\n const requestContext = c.get('requestContext');\n\n // Validate query parameters\n const validFields: ThreadOrderBy[] = ['createdAt', 'updatedAt'];\n const validDirections: ThreadSortDirection[] = ['ASC', 'DESC'];\n\n if (field && !validFields.includes(field)) {\n return c.json({ error: `Invalid orderBy field: ${field}. Must be one of: ${validFields.join(', ')}` }, 400);\n }\n if (direction && !validDirections.includes(direction)) {\n return c.json(\n { error: `Invalid sortDirection: ${direction}. Must be one of: ${validDirections.join(', ')}` },\n 400,\n );\n }\n\n // Transform to nested structure\n const orderBy = field || direction ? { field: field || 'createdAt', direction: direction || 'DESC' } : undefined;\n\n const result = await getOriginalListThreadsHandler({\n mastra,\n agentId,\n resourceId,\n page,\n perPage,\n orderBy,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error listing threads');\n }\n}\n\nexport async function getThreadByIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalThreadByIdHandler({\n mastra,\n agentId,\n threadId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting thread');\n }\n}\n\nexport async function saveMessagesHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const body = await c.req.json();\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalSaveMessagesHandler({\n mastra,\n agentId,\n body,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error saving messages');\n }\n}\n\nexport async function createThreadHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const body = await c.req.json();\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalCreateThreadHandler({\n mastra,\n agentId,\n body,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error saving thread to memory');\n }\n}\n\nexport async function updateThreadHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const body = await c.req.json();\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalUpdateThreadHandler({\n mastra,\n agentId,\n threadId,\n body,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error updating thread');\n }\n}\n\nexport async function deleteThreadHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalDeleteThreadHandler({\n mastra,\n agentId,\n threadId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error deleting thread');\n }\n}\n\nexport async function listMessagesHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const resourceId = c.req.query('resourceId');\n const page = parsePage(c.req.query('page'));\n const perPage = parsePerPage(c.req.query('perPage'));\n const orderBy = parseJsonParam<StorageOrderBy>(c.req.query('orderBy'));\n const include = parseJsonParam<StorageListMessagesInput['include']>(c.req.query('include'));\n const filter = parseJsonParam<StorageListMessagesInput['filter']>(c.req.query('filter'));\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalListMessagesHandler({\n mastra,\n agentId,\n threadId,\n resourceId,\n page,\n perPage,\n orderBy,\n include,\n filter,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting messages');\n }\n}\n\nexport async function updateWorkingMemoryHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const body = await c.req.json();\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalUpdateWorkingMemoryHandler({\n mastra,\n agentId,\n threadId,\n body,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error updating working memory');\n }\n}\n\nexport async function getWorkingMemoryHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const resourceId = c.req.query('resourceId');\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalGetWorkingMemoryHandler({\n mastra,\n agentId,\n threadId,\n resourceId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting working memory');\n }\n}\n\nexport async function searchMemoryHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const searchQuery = c.req.query('searchQuery');\n const resourceId = c.req.query('resourceId');\n const threadId = c.req.query('threadId');\n const limit = parseLimit(c.req.query('limit'));\n const memoryConfig = c.req.query('memoryConfig') ? JSON.parse(c.req.query('memoryConfig')!) : undefined;\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalSearchMemoryHandler({\n mastra,\n agentId,\n searchQuery: searchQuery!,\n resourceId: resourceId!,\n threadId,\n limit,\n memoryConfig,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error searching memory');\n }\n}\n\nexport async function deleteMessagesHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const requestContext = c.get('requestContext');\n const body = await c.req.json();\n const messageIds = body?.messageIds;\n\n const result = await getOriginalDeleteMessagesHandler({\n mastra,\n agentId,\n messageIds,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error deleting messages');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport {\n createThreadHandler,\n deleteThreadHandler,\n getMemoryStatusHandler,\n getMemoryConfigHandler,\n listMessagesHandler,\n getThreadByIdHandler,\n listThreadsHandler,\n getWorkingMemoryHandler,\n saveMessagesHandler,\n searchMemoryHandler,\n updateThreadHandler,\n updateWorkingMemoryHandler,\n deleteMessagesHandler,\n} from './handlers';\n\nexport function memoryRoutes(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n // Network Memory routes\n router.get(\n '/network/status',\n describeRoute({\n description: 'Get network memory status',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Memory status',\n },\n },\n }),\n getMemoryStatusHandler,\n );\n\n router.get(\n '/network/threads',\n describeRoute({\n description: 'Get all threads',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'resourceid',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'offset',\n in: 'query',\n required: false,\n schema: { type: 'number', default: 0 },\n description: 'Number of records to skip',\n },\n {\n name: 'limit',\n in: 'query',\n required: false,\n schema: { type: 'number', default: 100 },\n description: 'Maximum number of threads to return',\n },\n {\n name: 'orderBy',\n in: 'query',\n required: false,\n schema: {\n type: 'string',\n enum: ['createdAt', 'updatedAt'],\n default: 'createdAt',\n },\n description: 'Field to sort by',\n },\n {\n name: 'sortDirection',\n in: 'query',\n required: false,\n schema: {\n type: 'string',\n enum: ['ASC', 'DESC'],\n default: 'DESC',\n },\n description: 'Sort direction',\n },\n ],\n responses: {\n 200: {\n description: 'List of all threads',\n },\n },\n }),\n listThreadsHandler,\n );\n\n router.get(\n '/network/threads/:threadId',\n describeRoute({\n description: 'Get thread by ID',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Thread details',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n getThreadByIdHandler,\n );\n\n router.get(\n '/network/threads/:threadId/messages',\n describeRoute({\n description: 'Get paginated messages for a thread',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n description: 'The unique identifier of the thread',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n description: 'The unique identifier of the agent',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'resourceId',\n in: 'query',\n required: false,\n description: 'Filter messages by resource ID',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n description: 'Zero-indexed page number for pagination (default: 0)',\n schema: {\n type: 'integer',\n minimum: 0,\n default: 0,\n },\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n description: 'Number of items per page, or \"false\" to fetch all records (default: 40)',\n schema: {\n oneOf: [\n { type: 'integer', minimum: 0 },\n { type: 'boolean', enum: [false] },\n ],\n default: 40,\n },\n },\n {\n name: 'orderBy',\n in: 'query',\n required: false,\n description: 'JSON string specifying sort order',\n schema: {\n type: 'string',\n example: '{\"field\":\"createdAt\",\"direction\":\"DESC\"}',\n },\n },\n {\n name: 'include',\n in: 'query',\n required: false,\n description: 'JSON string specifying messages to include with context',\n schema: {\n type: 'string',\n example: '[{\"id\":\"msg-123\",\"withPreviousMessages\":5,\"withNextMessages\":3}]',\n },\n },\n {\n name: 'filter',\n in: 'query',\n required: false,\n description: 'JSON string specifying filter criteria',\n schema: {\n type: 'string',\n example: '{\"dateRange\":{\"start\":\"2024-01-01T00:00:00Z\",\"end\":\"2024-12-31T23:59:59Z\"}}',\n },\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of messages with metadata',\n },\n },\n }),\n listMessagesHandler,\n );\n\n router.post(\n '/network/threads',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Create a new thread',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n metadata: { type: 'object' },\n resourceId: { type: 'string' },\n threadId: { type: 'string' },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Created thread',\n },\n },\n }),\n createThreadHandler,\n );\n\n router.patch(\n '/network/threads/:threadId',\n describeRoute({\n description: 'Update a thread',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: { type: 'object' },\n },\n },\n },\n responses: {\n 200: {\n description: 'Updated thread',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n updateThreadHandler,\n );\n\n router.delete(\n '/network/threads/:threadId',\n describeRoute({\n description: 'Delete a thread',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Thread deleted',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n deleteThreadHandler,\n );\n\n router.post(\n '/network/save-messages',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Save messages',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n description: 'Array of messages in either v1 or v2 format',\n items: {\n oneOf: [\n {\n type: 'object',\n description: 'Mastra Message v1 format',\n properties: {\n id: { type: 'string' },\n content: { type: 'string' },\n role: { type: 'string', enum: ['user', 'assistant', 'system', 'tool'] },\n type: { type: 'string', enum: ['text', 'tool-call', 'tool-result'] },\n createdAt: { type: 'string', format: 'date-time' },\n threadId: { type: 'string' },\n resourceId: { type: 'string' },\n },\n required: ['content', 'role', 'type', 'threadId', 'resourceId'],\n },\n {\n type: 'object',\n description: 'Mastra Message v2 format',\n properties: {\n id: { type: 'string' },\n role: { type: 'string', enum: ['user', 'assistant'] },\n createdAt: { type: 'string', format: 'date-time' },\n threadId: { type: 'string' },\n resourceId: { type: 'string' },\n content: {\n type: 'object',\n properties: {\n format: { type: 'number', enum: [2] },\n parts: {\n type: 'array',\n items: { type: 'object' },\n },\n content: { type: 'string' },\n toolInvocations: {\n type: 'array',\n items: { type: 'object' },\n },\n experimental_attachments: {\n type: 'array',\n items: { type: 'object' },\n },\n },\n required: ['format', 'parts'],\n },\n },\n required: ['role', 'content', 'threadId', 'resourceId'],\n },\n ],\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Messages saved',\n },\n },\n }),\n saveMessagesHandler,\n );\n\n router.post(\n '/network/messages/delete',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Delete one or more messages',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messageIds: {\n oneOf: [\n { type: 'string' },\n {\n type: 'array',\n items: { type: 'string' },\n },\n {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n {\n type: 'array',\n items: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n },\n ],\n },\n },\n required: ['messageIds'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Messages deleted successfully',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n },\n },\n },\n },\n }),\n deleteMessagesHandler,\n );\n\n // Memory routes\n router.get(\n '/status',\n describeRoute({\n description: 'Get memory status',\n tags: ['memory'],\n parameters: [\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Memory status',\n },\n },\n }),\n getMemoryStatusHandler,\n );\n\n router.get(\n '/config',\n describeRoute({\n description: 'Get memory configuration',\n tags: ['memory'],\n parameters: [\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Memory configuration',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n config: {\n type: 'object',\n properties: {\n lastMessages: {\n oneOf: [{ type: 'number' }, { type: 'boolean' }],\n },\n semanticRecall: {\n oneOf: [\n { type: 'boolean' },\n {\n type: 'object',\n properties: {\n topK: { type: 'number' },\n messageRange: {\n oneOf: [\n { type: 'number' },\n {\n type: 'object',\n properties: {\n before: { type: 'number' },\n after: { type: 'number' },\n },\n },\n ],\n },\n scope: { type: 'string', enum: ['thread', 'resource'] },\n },\n },\n ],\n },\n workingMemory: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n scope: { type: 'string', enum: ['thread', 'resource'] },\n template: { type: 'string' },\n },\n },\n threads: {\n type: 'object',\n properties: {\n generateTitle: {\n oneOf: [{ type: 'boolean' }, { type: 'object' }],\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n }),\n getMemoryConfigHandler,\n );\n\n router.get(\n '/threads',\n describeRoute({\n description: 'Get paginated threads',\n tags: ['memory'],\n parameters: [\n {\n name: 'resourceId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'offset',\n in: 'query',\n required: false,\n schema: { type: 'number', default: 0 },\n description: 'Number of records to skip',\n },\n {\n name: 'limit',\n in: 'query',\n required: false,\n schema: { type: 'number', default: 100 },\n description: 'Maximum number of threads to return',\n },\n {\n name: 'orderBy',\n in: 'query',\n required: false,\n schema: {\n type: 'string',\n enum: ['createdAt', 'updatedAt'],\n default: 'createdAt',\n },\n },\n {\n name: 'sortDirection',\n in: 'query',\n required: false,\n schema: {\n type: 'string',\n enum: ['ASC', 'DESC'],\n default: 'DESC',\n },\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of threads',\n },\n },\n }),\n listThreadsHandler,\n );\n\n router.get(\n '/threads/:threadId',\n describeRoute({\n description: 'Get thread by ID',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Thread details',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n getThreadByIdHandler,\n );\n\n router.get(\n '/threads/:threadId/messages',\n describeRoute({\n description: 'Get paginated messages for a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n description: 'The unique identifier of the thread',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n description: 'The unique identifier of the agent',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'resourceId',\n in: 'query',\n required: false,\n description: 'Filter messages by resource ID',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n description: 'Zero-indexed page number for pagination (default: 0)',\n schema: {\n type: 'integer',\n minimum: 0,\n default: 0,\n },\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n description: 'Number of items per page, or \"false\" to fetch all records (default: 40)',\n schema: {\n oneOf: [\n { type: 'integer', minimum: 0 },\n { type: 'boolean', enum: [false] },\n ],\n default: 40,\n },\n },\n {\n name: 'orderBy',\n in: 'query',\n required: false,\n description: 'JSON string specifying sort order',\n schema: {\n type: 'string',\n example: '{\"field\":\"createdAt\",\"direction\":\"DESC\"}',\n },\n },\n {\n name: 'include',\n in: 'query',\n required: false,\n description: 'JSON string specifying messages to include with context',\n schema: {\n type: 'string',\n example: '[{\"id\":\"msg-123\",\"withPreviousMessages\":5,\"withNextMessages\":3}]',\n },\n },\n {\n name: 'filter',\n in: 'query',\n required: false,\n description: 'JSON string specifying filter criteria',\n schema: {\n type: 'string',\n example: '{\"dateRange\":{\"start\":\"2024-01-01T00:00:00Z\",\"end\":\"2024-12-31T23:59:59Z\"}}',\n },\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of messages with metadata',\n },\n },\n }),\n listMessagesHandler,\n );\n\n router.get(\n '/search',\n describeRoute({\n description: 'Search messages in a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'searchQuery',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n description: 'The text to search for',\n },\n {\n name: 'resourceId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n description: 'The resource ID (user/org) to validate thread ownership',\n },\n {\n name: 'threadId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n description: 'The thread ID to search within (optional - searches all threads if not provided)',\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n description: 'The agent ID',\n },\n {\n name: 'limit',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Maximum number of results to return (default: 20)',\n },\n {\n name: 'memoryConfig',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n description: 'JSON-encoded memory configuration (e.g., {\"lastMessages\": 0} for semantic-only search)',\n },\n ],\n responses: {\n 200: {\n description: 'Search results',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n results: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n role: { type: 'string' },\n content: { type: 'string' },\n createdAt: { type: 'string' },\n },\n },\n },\n count: { type: 'number' },\n query: { type: 'string' },\n },\n },\n },\n },\n },\n 400: {\n description: 'Bad request',\n },\n 403: {\n description: 'Thread does not belong to the specified resource',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n searchMemoryHandler,\n );\n\n router.get(\n '/threads/:threadId/working-memory',\n describeRoute({\n description: 'Get working memory for a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'resourceId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Working memory details',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n getWorkingMemoryHandler,\n );\n\n router.post(\n '/threads/:threadId/working-memory',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Update working memory for a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n workingMemory: { type: 'string' },\n resourceId: { type: 'string' },\n },\n required: ['workingMemory'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Working memory updated successfully',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n updateWorkingMemoryHandler,\n );\n\n router.post(\n '/threads',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Create a new thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n metadata: { type: 'object' },\n resourceId: { type: 'string' },\n threadId: { type: 'string' },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Created thread',\n },\n },\n }),\n createThreadHandler,\n );\n\n router.patch(\n '/threads/:threadId',\n describeRoute({\n description: 'Update a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: { type: 'object' },\n },\n },\n },\n responses: {\n 200: {\n description: 'Updated thread',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n updateThreadHandler,\n );\n\n router.delete(\n '/threads/:threadId',\n describeRoute({\n description: 'Delete a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Thread deleted',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n deleteThreadHandler,\n );\n\n router.post(\n '/save-messages',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Save messages',\n tags: ['memory'],\n parameters: [\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n description: 'Array of messages in either v1 or v2 format',\n items: {\n oneOf: [\n {\n type: 'object',\n description: 'Mastra Message v1 format',\n properties: {\n id: { type: 'string' },\n content: { type: 'string' },\n role: { type: 'string', enum: ['user', 'assistant', 'system', 'tool'] },\n type: { type: 'string', enum: ['text', 'tool-call', 'tool-result'] },\n createdAt: { type: 'string', format: 'date-time' },\n threadId: { type: 'string' },\n resourceId: { type: 'string' },\n },\n required: ['content', 'role', 'type', 'threadId', 'resourceId'],\n },\n {\n type: 'object',\n description: 'Mastra Message v2 format',\n properties: {\n id: { type: 'string' },\n role: { type: 'string', enum: ['user', 'assistant'] },\n createdAt: { type: 'string', format: 'date-time' },\n threadId: { type: 'string' },\n resourceId: { type: 'string' },\n content: {\n type: 'object',\n properties: {\n format: { type: 'number', enum: [2] },\n parts: {\n type: 'array',\n items: { type: 'object' },\n },\n content: { type: 'string' },\n toolInvocations: {\n type: 'array',\n items: { type: 'object' },\n },\n experimental_attachments: {\n type: 'array',\n items: { type: 'object' },\n },\n },\n required: ['format', 'parts'],\n },\n },\n required: ['role', 'content', 'threadId', 'resourceId'],\n },\n ],\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Messages saved',\n },\n },\n }),\n saveMessagesHandler,\n );\n\n router.post(\n '/messages/delete',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Delete one or more messages',\n tags: ['memory'],\n parameters: [\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messageIds: {\n oneOf: [\n { type: 'string' },\n {\n type: 'array',\n items: { type: 'string' },\n },\n {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n {\n type: 'array',\n items: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n },\n ],\n },\n },\n required: ['messageIds'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Messages deleted successfully',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n },\n },\n },\n },\n }),\n deleteMessagesHandler,\n );\n\n return router;\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport { SpanType } from '@mastra/core/observability';\nimport type { TracesPaginatedArg, StoragePagination } from '@mastra/core/storage';\nimport {\n getTraceHandler as getOriginalTraceHandler,\n getTracesPaginatedHandler as getOriginalTracesPaginatedHandler,\n scoreTracesHandler as getOriginalScoreTracesHandler,\n listScoresBySpan as getOriginalScoresBySpanHandler,\n} from '@mastra/server/handlers/observability';\nimport type { Context } from 'hono';\nimport { handleError } from '../../error';\n\nexport async function getTraceHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const traceId = c.req.param('traceId');\n\n if (!traceId) {\n return c.json({ error: 'Trace ID is required' }, 400);\n }\n\n const trace = await getOriginalTraceHandler({\n mastra,\n traceId,\n });\n\n return c.json(trace);\n } catch (error) {\n return handleError(error, 'Error getting trace');\n }\n}\n\nexport async function getTracesPaginatedHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const { page, perPage, name, spanType, dateRange, entityId, entityType } = c.req.query();\n\n const pagination: TracesPaginatedArg['pagination'] = {\n page: parseInt(page || '0'),\n perPage: parseInt(perPage || '10'),\n };\n\n const filters: TracesPaginatedArg['filters'] = {};\n if (name) filters.name = name;\n if (spanType) {\n if (Object.values(SpanType).includes(spanType as SpanType)) {\n filters.spanType = spanType as SpanType;\n } else {\n return c.json({ error: 'Invalid spanType' }, 400);\n }\n }\n if (entityId && entityType && (entityType === 'agent' || entityType === 'workflow')) {\n filters.entityId = entityId;\n filters.entityType = entityType;\n }\n\n let start: Date | undefined;\n let end: Date | undefined;\n if (dateRange) {\n try {\n const parsedDateRange = JSON.parse(dateRange);\n start = parsedDateRange.start ? new Date(parsedDateRange.start) : undefined;\n end = parsedDateRange.end ? new Date(parsedDateRange.end) : undefined;\n } catch {\n return c.json({ error: 'Invalid start date' }, 400);\n }\n }\n\n if (start || end) {\n pagination.dateRange = { start, end };\n }\n\n const result = await getOriginalTracesPaginatedHandler({\n mastra,\n body: {\n pagination,\n filters,\n },\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting traces paginated');\n }\n}\n\nexport async function processTraceScoringHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const { scorerName, targets } = await c.req.json();\n\n const result = await getOriginalScoreTracesHandler({\n mastra,\n body: { scorerName, targets },\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error processing trace scoring');\n }\n}\n\nexport async function listScoresBySpan(c: Context) {\n const mastra = c.get('mastra');\n const traceId = c.req.param('traceId');\n const spanId = c.req.param('spanId');\n const page = parseInt(c.req.query('page') || '0');\n const perPage = parseInt(c.req.query('perPage') || '10');\n const pagination: StoragePagination = { page, perPage };\n\n try {\n const scores = await getOriginalScoresBySpanHandler({\n mastra,\n traceId,\n spanId,\n pagination,\n });\n\n return c.json(scores);\n } catch (error) {\n return handleError(error, 'Error getting scores by span');\n }\n}\n","import { Hono } from 'hono';\nimport { describeRoute } from 'hono-openapi';\nimport { getTraceHandler, getTracesPaginatedHandler, listScoresBySpan, processTraceScoringHandler } from './handlers';\n\nexport function observabilityRouter() {\n const router = new Hono();\n\n router.get(\n '/traces',\n describeRoute({\n description: 'Get paginated list of traces',\n tags: ['observability'],\n parameters: [\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Page number for pagination (default: 0)',\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Number of items per page (default: 10)',\n },\n {\n name: 'name',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n description: 'Filter traces by name',\n },\n {\n name: 'spanType',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Filter traces by span type',\n },\n {\n name: 'dateRange',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n description: 'JSON string with start and end dates for filtering',\n },\n {\n name: 'attributes',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n description: 'JSON string with attributes to filter by',\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of traces',\n },\n 400: {\n description: 'Bad request - invalid parameters',\n },\n },\n }),\n getTracesPaginatedHandler,\n );\n\n router.get(\n '/traces/:traceId',\n describeRoute({\n description: 'Get a specific trace by ID',\n tags: ['observability'],\n parameters: [\n {\n name: 'traceId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'The ID of the trace to retrieve',\n },\n ],\n responses: {\n 200: {\n description: 'Trace with all its spans',\n },\n 400: {\n description: 'Bad request - missing trace ID',\n },\n 404: {\n description: 'Trace not found',\n },\n },\n }),\n getTraceHandler,\n );\n\n router.get(\n '/traces/:traceId/:spanId/scores',\n describeRoute({\n description: 'Get scores by trace ID and span ID',\n tags: ['scores'],\n parameters: [\n {\n name: 'traceId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'Trace ID',\n },\n {\n name: 'spanId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'Span ID',\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Page number for pagination (default: 0)',\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Number of items per page (default: 10)',\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of scores for span',\n },\n },\n }),\n listScoresBySpan,\n );\n\n router.post(\n '/traces/score',\n describeRoute({\n description: 'Score traces using a specified scorer',\n tags: ['observability'],\n requestBody: {\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n required: ['scorerName', 'targets'],\n properties: {\n scorerName: {\n type: 'string',\n description: 'Name of the scorer to use for evaluation',\n example: 'relevance-scorer',\n },\n targets: {\n type: 'array',\n description: 'Array of trace targets to score',\n minItems: 1,\n items: {\n type: 'object',\n required: ['traceId'],\n properties: {\n traceId: {\n type: 'string',\n description: 'ID of the trace to score',\n example: 'trace-123',\n },\n spanId: {\n type: 'string',\n description: 'Optional specific span ID within the trace to score',\n example: 'span-456',\n },\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Scoring initiated successfully',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n status: {\n type: 'string',\n enum: ['success'],\n example: 'success',\n },\n message: {\n type: 'string',\n example: 'Scoring started for 3 traces',\n },\n traceCount: {\n type: 'number',\n example: 3,\n },\n },\n required: ['status', 'message', 'traceCount'],\n },\n },\n },\n },\n 400: {\n description: 'Bad request - invalid parameters',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n 404: {\n description: 'Scorer not found',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n 500: {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n },\n }),\n processTraceScoringHandler,\n );\n\n return router;\n}\n","import type { ScoreRowData } from '@mastra/core/evals';\nimport type { StoragePagination } from '@mastra/core/storage';\nimport {\n listScorersHandler as getOriginalListScorersHandler,\n listScoresByRunIdHandler as getOriginalScoresByRunIdHandler,\n listScoresByScorerIdHandler as getOriginalScoresByScorerIdHandler,\n listScoresByEntityIdHandler as getOriginalScoresByEntityIdHandler,\n saveScoreHandler as getOriginalSaveScoreHandler,\n getScorerHandler as getOriginalScorerHandler,\n} from '@mastra/server/handlers/scores';\nimport type { Context } from 'hono';\nimport { handleError } from '../../error';\nimport { parsePage, parsePerPage } from '../../utils/query-parsers';\n\nexport async function listScorersHandler(c: Context) {\n try {\n const scorers = await getOriginalListScorersHandler({\n mastra: c.get('mastra'),\n requestContext: c.get('requestContext'),\n });\n return c.json(scorers);\n } catch (error) {\n return handleError(error, 'Error listing scorers');\n }\n}\n\nexport async function getScorerHandler(c: Context) {\n const mastra = c.get('mastra');\n const scorerId = c.req.param('scorerId');\n const requestContext = c.get('requestContext');\n\n const scorer = await getOriginalScorerHandler({\n mastra,\n scorerId,\n requestContext,\n });\n\n return c.json(scorer);\n}\n\nexport async function listScoresByRunIdHandler(c: Context) {\n const mastra = c.get('mastra');\n const runId = c.req.param('runId');\n const page = parsePage(c.req.query('page'));\n const perPage = parsePerPage(c.req.query('perPage'), 10);\n const pagination: StoragePagination = { page, perPage };\n\n try {\n const scores = await getOriginalScoresByRunIdHandler({\n mastra,\n runId,\n pagination,\n });\n\n return c.json(scores);\n } catch (error) {\n return handleError(error, 'Error getting scores by run id');\n }\n}\n\nexport async function listScoresByScorerIdHandler(c: Context) {\n const mastra = c.get('mastra');\n const scorerId = c.req.param('scorerId');\n const page = parsePage(c.req.query('page'));\n const perPage = parsePerPage(c.req.query('perPage'), 10);\n const entityId = c.req.query('entityId');\n const entityType = c.req.query('entityType');\n const pagination: StoragePagination = { page, perPage };\n\n try {\n const scores = await getOriginalScoresByScorerIdHandler({\n mastra,\n scorerId,\n pagination,\n entityId,\n entityType,\n });\n\n return c.json(scores);\n } catch (error) {\n return handleError(error, 'Error getting scores by scorer id');\n }\n}\n\nexport async function listScoresByEntityIdHandler(c: Context) {\n const mastra = c.get('mastra');\n const entityId = c.req.param('entityId');\n const entityType = c.req.param('entityType');\n const page = parsePage(c.req.query('page'));\n const perPage = parsePerPage(c.req.query('perPage'), 10);\n\n const pagination: StoragePagination = { page, perPage };\n\n try {\n const scores = await getOriginalScoresByEntityIdHandler({\n mastra,\n entityId,\n entityType,\n pagination,\n });\n\n return c.json(scores);\n } catch (error) {\n return handleError(error, 'Error getting scores by entity id');\n }\n}\n\nexport async function saveScoreHandler(c: Context) {\n const mastra = c.get('mastra');\n const score: ScoreRowData = await c.req.json();\n\n try {\n const result = await getOriginalSaveScoreHandler({\n mastra,\n score,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error saving score');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport {\n listScorersHandler,\n getScorerHandler,\n listScoresByRunIdHandler,\n listScoresByScorerIdHandler,\n listScoresByEntityIdHandler,\n saveScoreHandler,\n} from './handlers';\n\nexport function scoresRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n // Scores routes\n router.get(\n '/scorers',\n describeRoute({\n description: 'Get all scorers',\n tags: ['scores'],\n responses: {\n 200: {\n description: 'List of all scorers',\n },\n },\n }),\n listScorersHandler,\n );\n\n router.get(\n '/scorers/:scorerId',\n describeRoute({\n description: 'Get a scorer by ID',\n tags: ['scores'],\n responses: {\n 200: {\n description: 'Scorer details',\n },\n },\n }),\n getScorerHandler,\n );\n\n router.get(\n '/run/:runId',\n describeRoute({\n description: 'Get scores by run ID',\n tags: ['scores'],\n parameters: [\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Page number for pagination (default: 0)',\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Number of items per page (default: 10)',\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of scores for run ID',\n },\n },\n }),\n listScoresByRunIdHandler,\n );\n\n router.get(\n '/scorer/:scorerId',\n describeRoute({\n description: 'Get scores by scorer ID',\n tags: ['scores'],\n parameters: [\n {\n name: 'scorerId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Page number for pagination (default: 0)',\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Number of items per page (default: 10)',\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of scores for run ID',\n },\n },\n }),\n listScoresByScorerIdHandler,\n );\n\n router.get(\n '/entity/:entityType/:entityId',\n describeRoute({\n description: 'Get scores by entity ID and type',\n tags: ['scores'],\n parameters: [\n {\n name: 'entityType',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'Type of entity (e.g., agent, workflow, tool)',\n },\n {\n name: 'entityId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'ID of the entity',\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Page number for pagination (default: 0)',\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Number of items per page (default: 10)',\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of scores for entity',\n },\n },\n }),\n listScoresByEntityIdHandler,\n );\n\n router.post(\n '/',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Save a score',\n tags: ['scores'],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n runId: { type: 'string' },\n scorer: { type: 'object' },\n result: { type: 'object' },\n input: { type: 'object' },\n output: { type: 'object' },\n source: { type: 'string' },\n entityType: { type: 'string' },\n entity: { type: 'object' },\n metadata: { type: 'object' },\n additionalLLMContext: { type: 'object' },\n requestContext: { type: 'object' },\n resourceId: { type: 'string' },\n threadId: { type: 'string' },\n traceId: { type: 'string' },\n },\n required: ['id', 'runId', 'scorer', 'result', 'input', 'output', 'source'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Score saved successfully',\n },\n 400: {\n description: 'Invalid score data',\n },\n },\n }),\n saveScoreHandler,\n );\n\n return router;\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport { executeToolHandler, getToolByIdHandler, listToolsHandler } from './handlers';\n\nexport function toolsRouter(bodyLimitOptions: BodyLimitOptions, tools: Record<string, any>) {\n const router = new Hono();\n\n router.get(\n '/',\n describeRoute({\n description: 'Get all tools',\n tags: ['tools'],\n responses: {\n 200: {\n description: 'List of all tools',\n },\n },\n }),\n listToolsHandler,\n );\n\n router.get(\n '/:toolId',\n describeRoute({\n description: 'Get tool by ID',\n tags: ['tools'],\n parameters: [\n {\n name: 'toolId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Tool details',\n },\n 404: {\n description: 'Tool not found',\n },\n },\n }),\n getToolByIdHandler,\n );\n\n router.post(\n '/:toolId/execute',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute a tool',\n tags: ['tools'],\n parameters: [\n {\n name: 'toolId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n data: { type: 'object' },\n requestContext: { type: 'object' },\n },\n required: ['data'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Tool execution result',\n },\n 404: {\n description: 'Tool not found',\n },\n },\n }),\n executeToolHandler(tools),\n );\n\n return router;\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { MastraVector, QueryResult } from '@mastra/core/vector';\nimport {\n upsertVectors as getOriginalUpsertVectorsHandler,\n createIndex as getOriginalCreateIndexHandler,\n queryVectors as getOriginalQueryVectorsHandler,\n listIndexes as getOriginalListIndexesHandler,\n describeIndex as getOriginalDescribeIndexHandler,\n deleteIndex as getOriginalDeleteIndexHandler,\n} from '@mastra/server/handlers/vector';\nimport type { Context } from 'hono';\n\nimport { HTTPException } from 'hono/http-exception';\n\nimport { handleError } from '../../error';\n\ninterface UpsertRequest {\n indexName: string;\n vectors: number[][];\n metadata?: Record<string, any>[];\n ids?: string[];\n}\n\ninterface CreateIndexRequest {\n indexName: string;\n dimension: number;\n metric?: 'cosine' | 'euclidean' | 'dotproduct';\n}\n\ninterface QueryRequest {\n indexName: string;\n queryVector: number[];\n topK?: number;\n filter?: Record<string, any>;\n includeVector?: boolean;\n}\n\nexport const getVector = (c: Context, vectorName: string): MastraVector => {\n const vector = c.get('mastra').getVector(vectorName);\n if (!vector) {\n throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });\n }\n return vector;\n};\n\n// Upsert vectors\nexport async function upsertVectors(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n const body = await c.req.json<UpsertRequest>();\n\n const result = await getOriginalUpsertVectorsHandler({\n mastra,\n vectorName,\n index: body,\n });\n\n return c.json({ ids: result });\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n}\n\n// Create index\nexport async function createIndex(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n const body = await c.req.json<CreateIndexRequest>();\n\n await getOriginalCreateIndexHandler({\n mastra,\n vectorName,\n index: body,\n });\n\n return c.json({ success: true });\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n}\n\n// Query vectors\nexport async function queryVectors(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n const { indexName, queryVector, topK = 10, filter, includeVector = false } = await c.req.json<QueryRequest>();\n\n const results: QueryResult[] = await getOriginalQueryVectorsHandler({\n mastra,\n vectorName,\n query: { indexName, queryVector, topK, filter, includeVector },\n });\n\n return c.json({ results });\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n}\n\n// List indexes\nexport async function listIndexes(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n\n const indexes = await getOriginalListIndexesHandler({\n mastra,\n vectorName,\n });\n\n return c.json({ indexes });\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n}\n\n// Describe index\nexport async function describeIndex(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n const indexName = c.req.param('indexName');\n\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const stats = await getOriginalDescribeIndexHandler({\n mastra,\n vectorName,\n indexName,\n });\n\n return c.json({\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n });\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n}\n\n// Delete index\nexport async function deleteIndex(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n const indexName = c.req.param('indexName');\n\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n await getOriginalDeleteIndexHandler({\n mastra,\n vectorName,\n indexName,\n });\n\n return c.json({ success: true });\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport { createIndex, deleteIndex, describeIndex, listIndexes, queryVectors, upsertVectors } from './handlers';\n\nexport function vectorRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n router.post(\n '/:vectorName/upsert',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Upsert vectors into an index',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n indexName: { type: 'string' },\n vectors: {\n type: 'array',\n items: {\n type: 'array',\n items: { type: 'number' },\n },\n },\n metadata: {\n type: 'array',\n items: { type: 'object' },\n },\n ids: {\n type: 'array',\n items: { type: 'string' },\n },\n },\n required: ['indexName', 'vectors'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Vectors upserted successfully',\n },\n },\n }),\n upsertVectors,\n );\n\n router.post(\n '/:vectorName/create-index',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Create a new vector index',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n indexName: { type: 'string' },\n dimension: { type: 'number' },\n metric: {\n type: 'string',\n enum: ['cosine', 'euclidean', 'dotproduct'],\n },\n },\n required: ['indexName', 'dimension'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Index created successfully',\n },\n },\n }),\n createIndex,\n );\n\n router.post(\n '/:vectorName/query',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Query vectors from an index',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n indexName: { type: 'string' },\n queryVector: {\n type: 'array',\n items: { type: 'number' },\n },\n topK: { type: 'number' },\n filter: { type: 'object' },\n includeVector: { type: 'boolean' },\n },\n required: ['indexName', 'queryVector'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Query results',\n },\n },\n }),\n queryVectors,\n );\n\n router.get(\n '/:vectorName/indexes',\n describeRoute({\n description: 'List all indexes for a vector store',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'List of indexes',\n },\n },\n }),\n listIndexes,\n );\n\n router.get(\n '/:vectorName/indexes/:indexName',\n describeRoute({\n description: 'Get details about a specific index',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'indexName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Index details',\n },\n },\n }),\n describeIndex,\n );\n\n router.delete(\n '/:vectorName/indexes/:indexName',\n describeRoute({\n description: 'Delete a specific index',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'indexName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Index deleted successfully',\n },\n },\n }),\n deleteIndex,\n );\n\n return router;\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport {\n listWorkflowsHandler as getOriginalWorkflowsHandler,\n getWorkflowByIdHandler as getOriginalWorkflowByIdHandler,\n startAsyncWorkflowHandler as getOriginalStartAsyncWorkflowHandler,\n createWorkflowRunHandler as getOriginalCreateWorkflowRunHandler,\n startWorkflowRunHandler as getOriginalStartWorkflowRunHandler,\n streamLegacyWorkflowHandler as getOriginalStreamLegacyWorkflowHandler,\n streamVNextWorkflowHandler as getOriginalStreamVNextWorkflowHandler,\n resumeAsyncWorkflowHandler as getOriginalResumeAsyncWorkflowHandler,\n resumeWorkflowHandler as getOriginalResumeWorkflowHandler,\n listWorkflowRunsHandler as getOriginalListWorkflowRunsHandler,\n getWorkflowRunByIdHandler as getOriginalGetWorkflowRunByIdHandler,\n getWorkflowRunExecutionResultHandler as getOriginalGetWorkflowRunExecutionResultHandler,\n cancelWorkflowRunHandler as getOriginalCancelWorkflowRunHandler,\n observeStreamLegacyWorkflowHandler as getOriginalObserveStreamLegacyWorkflowHandler,\n resumeStreamWorkflowHandler as getOriginalResumeStreamWorkflowHandler,\n observeStreamVNextWorkflowHandler as getOriginalObserveStreamVNextWorkflowHandler,\n} from '@mastra/server/handlers/workflows';\nimport type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\nimport { stream } from 'hono/streaming';\n\nimport { handleError } from '../../error';\nimport { parsePage, parsePerPage } from '../../utils/query-parsers';\n\nexport async function listWorkflowsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n\n const workflows = await getOriginalWorkflowsHandler({\n mastra,\n });\n\n return c.json(workflows);\n } catch (error) {\n return handleError(error, 'Error getting workflows');\n }\n}\n\nexport async function getWorkflowByIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n\n const workflow = await getOriginalWorkflowByIdHandler({\n mastra,\n workflowId,\n });\n\n return c.json(workflow);\n } catch (error) {\n return handleError(error, 'Error getting workflow');\n }\n}\n\nexport async function createWorkflowRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n const prevRunId = c.req.query('runId');\n\n const result = await getOriginalCreateWorkflowRunHandler({\n mastra,\n workflowId,\n runId: prevRunId,\n });\n\n return c.json(result);\n } catch (e) {\n return handleError(e, 'Error creating run');\n }\n}\n\nexport async function startAsyncWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const workflowId = c.req.param('workflowId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n const result = await getOriginalStartAsyncWorkflowHandler({\n mastra,\n requestContext,\n workflowId,\n runId,\n inputData,\n tracingOptions,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error executing workflow');\n }\n}\n\nexport async function startWorkflowRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const workflowId = c.req.param('workflowId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n await getOriginalStartWorkflowRunHandler({\n mastra,\n requestContext,\n workflowId,\n runId,\n inputData,\n tracingOptions,\n });\n\n return c.json({ message: 'Workflow run started' });\n } catch (e) {\n return handleError(e, 'Error starting workflow run');\n }\n}\n\nexport async function streamWorkflowHandler(c: Context) {\n return streamVNextWorkflowHandler(c);\n}\n\nexport async function observeStreamWorkflowHandler(c: Context) {\n return observeStreamVNextWorkflowHandler(c);\n}\n\nexport async function streamVNextWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const workflowId = c.req.param('workflowId');\n const { inputData, closeOnSuspend, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const result = await getOriginalStreamVNextWorkflowHandler({\n mastra,\n workflowId,\n runId,\n inputData,\n requestContext,\n closeOnSuspend,\n tracingOptions,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in workflow stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n },\n async err => {\n logger.error('Error in workflow stream: ' + err?.message);\n },\n );\n } catch (error) {\n return handleError(error, 'Error streaming workflow');\n }\n}\n\nexport async function observeStreamVNextWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const logger = mastra.getLogger();\n const workflowId = c.req.param('workflowId');\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const result = await getOriginalObserveStreamVNextWorkflowHandler({\n mastra,\n workflowId,\n runId,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in workflow observe stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n },\n async err => {\n logger.error('Error in workflow observe stream: ' + err?.message);\n },\n );\n } catch (error) {\n return handleError(error, 'Error observing workflow stream');\n }\n}\n\nexport async function streamLegacyWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const workflowId = c.req.param('workflowId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const result = await getOriginalStreamLegacyWorkflowHandler({\n mastra,\n workflowId,\n runId,\n inputData,\n requestContext,\n tracingOptions,\n });\n\n const reader = result.stream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in workflow stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n await stream.close();\n },\n async err => {\n logger.error('Error in workflow stream: ' + err?.message);\n },\n );\n } catch (error) {\n return handleError(error, 'Error streaming workflow');\n }\n}\n\nexport async function observeStreamLegacyWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const logger = mastra.getLogger();\n const workflowId = c.req.param('workflowId');\n const runId = c.req.query('runId');\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to observe workflow stream' });\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const result = await getOriginalObserveStreamLegacyWorkflowHandler({\n mastra,\n workflowId,\n runId,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in workflow observe stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n await stream.close();\n },\n async err => {\n logger.error('Error in workflow observe stream: ' + err?.message);\n },\n );\n } catch (error) {\n return handleError(error, 'Error observing workflow stream');\n }\n}\n\nexport async function resumeStreamWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const workflowId = c.req.param('workflowId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const result = await getOriginalResumeStreamWorkflowHandler({\n mastra,\n workflowId,\n runId,\n body: { step, resumeData },\n requestContext,\n tracingOptions,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in workflow VNext stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n },\n async err => {\n logger.error('Error in workflow VNext stream: ' + err?.message);\n },\n );\n } catch (error) {\n return handleError(error, 'Error streaming workflow');\n }\n}\n\nexport async function resumeAsyncWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const workflowId = c.req.param('workflowId');\n const runId = c.req.query('runId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to resume workflow' });\n }\n\n const result = await getOriginalResumeAsyncWorkflowHandler({\n mastra,\n requestContext,\n workflowId,\n runId,\n body: { step, resumeData },\n tracingOptions,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error resuming workflow step');\n }\n}\n\nexport async function resumeWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const workflowId = c.req.param('workflowId');\n const runId = c.req.query('runId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to resume workflow' });\n }\n\n await getOriginalResumeWorkflowHandler({\n mastra,\n requestContext,\n workflowId,\n runId,\n body: { step, resumeData },\n tracingOptions,\n });\n\n return c.json({ message: 'Workflow run resumed' });\n } catch (error) {\n return handleError(error, 'Error resuming workflow');\n }\n}\n\nexport async function listWorkflowRunsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n const { fromDate, toDate, perPage: perPageRaw, page: pageRaw, resourceId } = c.req.query();\n const workflowRuns = await getOriginalListWorkflowRunsHandler({\n mastra,\n workflowId,\n fromDate: fromDate ? new Date(fromDate) : undefined,\n toDate: toDate ? new Date(toDate) : undefined,\n perPage: perPageRaw !== undefined ? parsePerPage(perPageRaw) : undefined,\n page: pageRaw !== undefined ? parsePage(pageRaw) : undefined,\n resourceId,\n });\n\n return c.json(workflowRuns);\n } catch (error) {\n return handleError(error, 'Error getting workflow runs');\n }\n}\n\nexport async function getWorkflowRunByIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n const runId = c.req.param('runId');\n const workflowRun = await getOriginalGetWorkflowRunByIdHandler({\n mastra,\n workflowId,\n runId,\n });\n\n return c.json(workflowRun);\n } catch (error) {\n return handleError(error, 'Error getting workflow run');\n }\n}\n\nexport async function getWorkflowRunExecutionResultHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n const runId = c.req.param('runId');\n const workflowRunExecutionResult = await getOriginalGetWorkflowRunExecutionResultHandler({\n mastra,\n workflowId,\n runId,\n });\n\n return c.json(workflowRunExecutionResult);\n } catch (error) {\n return handleError(error, 'Error getting workflow run execution result');\n }\n}\n\nexport async function cancelWorkflowRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n const runId = c.req.param('runId');\n\n const result = await getOriginalCancelWorkflowRunHandler({\n mastra,\n workflowId,\n runId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error canceling workflow run');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport {\n cancelWorkflowRunHandler,\n createWorkflowRunHandler,\n getWorkflowByIdHandler,\n getWorkflowRunByIdHandler,\n getWorkflowRunExecutionResultHandler,\n listWorkflowRunsHandler,\n listWorkflowsHandler,\n resumeAsyncWorkflowHandler,\n resumeWorkflowHandler,\n startAsyncWorkflowHandler,\n startWorkflowRunHandler,\n streamVNextWorkflowHandler,\n resumeStreamWorkflowHandler,\n observeStreamVNextWorkflowHandler,\n streamLegacyWorkflowHandler,\n observeStreamLegacyWorkflowHandler,\n} from './handlers';\n\nexport function workflowsRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n // Workflow routes\n router.get(\n '/',\n describeRoute({\n description: 'Get all workflows',\n tags: ['workflows'],\n responses: {\n 200: {\n description: 'List of all workflows',\n },\n },\n }),\n listWorkflowsHandler,\n );\n\n router.get(\n '/:workflowId',\n describeRoute({\n description: 'Get workflow by ID',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Workflow details',\n },\n 404: {\n description: 'Workflow not found',\n },\n },\n }),\n getWorkflowByIdHandler,\n );\n\n router.get(\n '/:workflowId/runs',\n describeRoute({\n description: 'List all runs for a workflow',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n { name: 'fromDate', in: 'query', required: false, schema: { type: 'string', format: 'date-time' } },\n { name: 'toDate', in: 'query', required: false, schema: { type: 'string', format: 'date-time' } },\n { name: 'limit', in: 'query', required: false, schema: { type: 'number' } },\n { name: 'offset', in: 'query', required: false, schema: { type: 'number' } },\n { name: 'resourceId', in: 'query', required: false, schema: { type: 'string' } },\n ],\n responses: {\n 200: {\n description: 'List of workflow runs from storage',\n },\n },\n }),\n listWorkflowRunsHandler,\n );\n\n router.get(\n '/:workflowId/runs/:runId/execution-result',\n describeRoute({\n description: 'Get execution result for a workflow run',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Workflow run execution result',\n },\n 404: {\n description: 'Workflow run execution result not found',\n },\n },\n }),\n getWorkflowRunExecutionResultHandler,\n );\n\n router.get(\n '/:workflowId/runs/:runId',\n describeRoute({\n description: 'Get workflow run by ID',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Workflow run by ID',\n },\n 404: {\n description: 'Workflow run not found',\n },\n },\n }),\n getWorkflowRunByIdHandler,\n );\n\n router.post(\n '/:workflowId/resume',\n describeRoute({\n description: 'Resume a suspended workflow step',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n },\n },\n },\n },\n },\n }),\n resumeWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/resume-stream',\n describeRoute({\n description: 'Resume a suspended workflow that uses streamVNext',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n }),\n resumeStreamWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/resume-async',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Resume a suspended workflow step',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n },\n },\n },\n },\n },\n }),\n resumeAsyncWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/stream-legacy',\n describeRoute({\n description: 'Stream legacy workflow in real-time',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'workflow run started',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n streamLegacyWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/observe-stream-legacy',\n describeRoute({\n description: 'Observe workflow stream in real-time',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'workflow stream observed',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n observeStreamLegacyWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/streamVNext',\n describeRoute({\n description: 'Stream workflow in real-time using the VNext streaming API',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n closeOnSuspend: {\n type: 'boolean',\n description: 'Close the stream on suspend',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'workflow run started',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n streamVNextWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/observe',\n describeRoute({\n description: 'Observe workflow stream in real-time using the streaming API',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'workflow stream observed',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n observeStreamVNextWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/stream',\n describeRoute({\n description: 'Stream workflow in real-time using the streaming API',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n closeOnSuspend: {\n type: 'boolean',\n description: 'Close the stream on suspend',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'workflow run started',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n streamVNextWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/observe-streamVNext',\n describeRoute({\n description: 'Observe workflow stream in real-time using the VNext streaming API',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'workflow stream vNext observed',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n observeStreamVNextWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/create-run',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Create a new workflow run',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'New workflow run created',\n },\n },\n }),\n createWorkflowRunHandler,\n );\n\n router.post(\n '/:workflowId/start-async',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute/Start a workflow',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'workflow execution result',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n }),\n startAsyncWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/start',\n describeRoute({\n description: 'Start an existing workflow run',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'workflow run started',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n }),\n startWorkflowRunHandler,\n );\n\n router.post(\n '/:workflowId/runs/:runId/cancel',\n describeRoute({\n description: 'Cancel a workflow run',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n tags: ['workflows'],\n responses: {\n 200: {\n description: 'workflow run cancelled',\n },\n },\n }),\n cancelWorkflowRunHandler,\n );\n\n return router;\n}\n","export const html = `\n<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Welcome to Mastra</title>\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/inter-ui/3.19.3/inter.min.css\" />\n <style>\n body {\n margin: 0;\n padding: 0;\n background-color: #0d0d0d;\n color: #ffffff;\n font-family:\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n system-ui,\n sans-serif;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n main {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n text-align: center;\n }\n\n h1 {\n font-size: 4rem;\n font-weight: 600;\n margin: 0 0 1rem 0;\n background: linear-gradient(to right, #fff, #ccc);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n line-height: 1.2;\n }\n\n .subtitle {\n color: #9ca3af;\n font-size: 1.25rem;\n max-width: 600px;\n margin: 0 auto 3rem auto;\n line-height: 1.6;\n }\n\n .docs-link {\n background-color: #1a1a1a;\n padding: 1rem 2rem;\n border-radius: 0.5rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n font-family: monospace;\n font-size: 1rem;\n color: #ffffff;\n text-decoration: none;\n transition: background-color 0.2s;\n }\n\n .docs-link:hover {\n background-color: #252525;\n }\n\n .arrow-icon {\n transition: transform 0.2s;\n }\n\n .docs-link:hover .arrow-icon {\n transform: translateX(4px);\n }\n </style>\n </head>\n <body>\n <main>\n <h1>Welcome to Mastra</h1>\n <p class=\"subtitle\">\n Prototype and productionize AI features with a modern JS/TS stack.\n </p>\n\n <a href=\"https://mastra.ai/docs\" class=\"docs-link\">\n Browse the docs\n <svg\n class=\"arrow-icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\n </svg>\n </a>\n </main>\n </body>\n</html>\n`;\n","import { readFile } from 'fs/promises';\nimport * as https from 'node:https';\nimport { join } from 'path/posix';\nimport { serve } from '@hono/node-server';\nimport { serveStatic } from '@hono/node-server/serve-static';\nimport { swaggerUI } from '@hono/swagger-ui';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { RequestContext } from '@mastra/core/request-context';\nimport { Tool } from '@mastra/core/tools';\nimport { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { Context, MiddlewareHandler } from 'hono';\nimport { Hono } from 'hono';\nimport { cors } from 'hono/cors';\nimport { logger } from 'hono/logger';\nimport { timeout } from 'hono/timeout';\nimport { describeRoute, openAPISpecs } from 'hono-openapi';\nimport { getAgentCardByIdHandler, getAgentExecutionHandler } from './handlers/a2a';\nimport { authenticationMiddleware, authorizationMiddleware } from './handlers/auth';\nimport { handleClientsRefresh, handleTriggerClientsRefresh, isHotReloadDisabled } from './handlers/client';\nimport { errorHandler } from './handlers/error';\nimport { healthHandler } from './handlers/health';\nimport { rootHandler } from './handlers/root';\nimport { agentBuilderRouter } from './handlers/routes/agent-builder/router';\nimport { agentsRouterDev, agentsRouter } from './handlers/routes/agents/router';\nimport { logsRouter } from './handlers/routes/logs/router';\nimport { mcpRouter } from './handlers/routes/mcp/router';\nimport { memoryRoutes } from './handlers/routes/memory/router';\nimport { observabilityRouter } from './handlers/routes/observability/router';\nimport { scoresRouter } from './handlers/routes/scores/router';\nimport { toolsRouter } from './handlers/routes/tools/router';\nimport { vectorRouter } from './handlers/routes/vector/router';\nimport { workflowsRouter } from './handlers/routes/workflows/router';\nimport type { ServerBundleOptions } from './types';\nimport { html } from './welcome.js';\n\ntype Bindings = {};\n\ntype Variables = {\n mastra: Mastra;\n requestContext: RequestContext;\n clients: Set<{ controller: ReadableStreamDefaultController }>;\n tools: Record<string, Tool>;\n taskStore: InMemoryTaskStore;\n playground: boolean;\n isDev: boolean;\n customRouteAuthConfig?: Map<string, boolean>;\n};\n\nexport function getToolExports(tools: Record<string, Function>[]) {\n try {\n return tools.reduce((acc, toolModule) => {\n Object.entries(toolModule).forEach(([key, tool]) => {\n if (tool instanceof Tool) {\n acc[key] = tool;\n }\n });\n return acc;\n }, {});\n } catch (err: any) {\n console.error(\n `Failed to import tools\nreason: ${err.message}\n${err.stack.split('\\n').slice(1).join('\\n')}\n `,\n err,\n );\n }\n}\n\nexport async function createHonoServer(\n mastra: Mastra,\n options: ServerBundleOptions = {\n tools: {},\n },\n) {\n // Create typed Hono app\n const app = new Hono<{ Bindings: Bindings; Variables: Variables }>();\n const server = mastra.getServer();\n const a2aTaskStore = new InMemoryTaskStore();\n const routes = server?.apiRoutes;\n\n // Store custom route auth configurations\n const customRouteAuthConfig = new Map<string, boolean>();\n\n if (routes) {\n for (const route of routes) {\n // By default, routes require authentication unless explicitly set to false\n const requiresAuth = route.requiresAuth !== false;\n const routeKey = `${route.method}:${route.path}`;\n customRouteAuthConfig.set(routeKey, requiresAuth);\n }\n }\n\n app.onError((err, c) => errorHandler(err, c, options.isDev));\n\n // Configure hono context\n // Configure hono context\n app.use('*', async function setContext(c, next) {\n // Parse request context from request body and add to context\n let requestContext = new RequestContext();\n // Parse request context from request body and add to context\n if (c.req.method === 'POST' || c.req.method === 'PUT') {\n const contentType = c.req.header('content-type');\n if (contentType?.includes('application/json')) {\n try {\n const clonedReq = c.req.raw.clone();\n const body = (await clonedReq.json()) as { requestContext?: Record<string, any> };\n if (body.requestContext) {\n requestContext = new RequestContext(Object.entries(body.requestContext));\n }\n } catch {\n // Body parsing failed, continue without body\n }\n }\n }\n\n // Parse request context from query params and add to context\n if (c.req.method === 'GET') {\n try {\n const encodedRequestContext = c.req.query('requestContext');\n if (encodedRequestContext) {\n let parsedRequestContext: Record<string, any> | undefined;\n // Try JSON first\n try {\n parsedRequestContext = JSON.parse(encodedRequestContext);\n } catch {\n // Fallback to base64(JSON)\n try {\n const json = Buffer.from(encodedRequestContext, 'base64').toString('utf-8');\n parsedRequestContext = JSON.parse(json);\n } catch {\n // ignore if still invalid\n }\n }\n\n if (parsedRequestContext && typeof parsedRequestContext === 'object') {\n requestContext = new RequestContext([...requestContext.entries(), ...Object.entries(parsedRequestContext)]);\n }\n }\n } catch {\n // ignore query parsing errors\n }\n }\n\n // Add relevant contexts to hono context\n c.set('requestContext', requestContext);\n c.set('mastra', mastra);\n c.set('tools', options.tools);\n c.set('taskStore', a2aTaskStore);\n c.set('playground', options.playground === true);\n c.set('isDev', options.isDev === true);\n c.set('customRouteAuthConfig', customRouteAuthConfig);\n return next();\n });\n\n // Apply custom server middleware from Mastra instance\n const serverMiddleware = mastra.getServerMiddleware?.();\n\n if (serverMiddleware && serverMiddleware.length > 0) {\n for (const m of serverMiddleware) {\n app.use(m.path, m.handler);\n }\n }\n\n //Global cors config\n if (server?.cors === false) {\n app.use('*', timeout(server?.timeout ?? 3 * 60 * 1000));\n } else {\n const corsConfig = {\n origin: '*',\n allowMethods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],\n credentials: false,\n maxAge: 3600,\n ...server?.cors,\n allowHeaders: ['Content-Type', 'Authorization', 'x-mastra-client-type', ...(server?.cors?.allowHeaders ?? [])],\n exposeHeaders: ['Content-Length', 'X-Requested-With', ...(server?.cors?.exposeHeaders ?? [])],\n };\n app.use('*', timeout(server?.timeout ?? 3 * 60 * 1000), cors(corsConfig));\n }\n\n // Health check endpoint (before auth middleware so it's publicly accessible)\n app.get(\n '/health',\n describeRoute({\n description: 'Health check endpoint',\n tags: ['system'],\n responses: {\n 200: {\n description: 'Service is healthy',\n },\n },\n }),\n healthHandler,\n );\n\n // Run AUTH middlewares after CORS middleware\n app.use('*', authenticationMiddleware);\n app.use('*', authorizationMiddleware);\n\n const bodyLimitOptions = {\n maxSize: server?.bodySizeLimit ?? 4.5 * 1024 * 1024, // 4.5 MB,\n onError: (c: Context) => c.json({ error: 'Request body too large' }, 413),\n };\n\n if (server?.middleware) {\n const normalizedMiddlewares = Array.isArray(server.middleware) ? server.middleware : [server.middleware];\n const middlewares = normalizedMiddlewares.map(middleware => {\n if (typeof middleware === 'function') {\n return {\n path: '*',\n handler: middleware,\n };\n }\n\n return middleware;\n });\n\n for (const middleware of middlewares) {\n app.use(middleware.path, middleware.handler);\n }\n }\n\n if (routes) {\n for (const route of routes) {\n const middlewares: MiddlewareHandler[] = [];\n\n if (route.middleware) {\n middlewares.push(...(Array.isArray(route.middleware) ? route.middleware : [route.middleware]));\n }\n if (route.openapi) {\n middlewares.push(describeRoute(route.openapi));\n }\n\n const handler = 'handler' in route ? route.handler : await route.createHandler({ mastra });\n\n if (route.method === 'GET') {\n app.get(route.path, ...middlewares, handler);\n } else if (route.method === 'POST') {\n app.post(route.path, ...middlewares, handler);\n } else if (route.method === 'PUT') {\n app.put(route.path, ...middlewares, handler);\n } else if (route.method === 'DELETE') {\n app.delete(route.path, ...middlewares, handler);\n } else if (route.method === 'PATCH') {\n app.patch(route.path, ...middlewares, handler);\n } else if (route.method === 'ALL') {\n app.all(route.path, ...middlewares, handler);\n }\n }\n }\n\n if (server?.build?.apiReqLogs) {\n app.use(logger());\n }\n\n /**\n * A2A\n */\n\n app.get(\n '/.well-known/:agentId/agent-card.json',\n describeRoute({\n description: 'Get agent configuration',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Agent configuration',\n },\n },\n }),\n getAgentCardByIdHandler,\n );\n\n app.post(\n '/a2a/:agentId',\n describeRoute({\n description: 'Execute agent via A2A protocol',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n method: {\n type: 'string',\n enum: ['message/send', 'message/stream', 'tasks/get', 'tasks/cancel'],\n description: 'The A2A protocol method to execute',\n },\n params: {\n type: 'object',\n oneOf: [\n {\n // MessageSendParams\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the task being initiated or continued',\n },\n sessionId: {\n type: 'string',\n description: 'Optional identifier for the session this task belongs to',\n },\n message: {\n type: 'object',\n description: 'The message content to send to the agent for processing',\n },\n pushNotification: {\n type: 'object',\n nullable: true,\n description:\n 'Optional pushNotification information for receiving notifications about this task',\n },\n historyLength: {\n type: 'integer',\n nullable: true,\n description:\n 'Optional parameter to specify how much message history to include in the response',\n },\n metadata: {\n type: 'object',\n nullable: true,\n description: 'Optional metadata associated with sending this message',\n },\n },\n required: ['id', 'message'],\n },\n {\n // TaskQueryParams\n type: 'object',\n properties: {\n id: { type: 'string', description: 'The unique identifier of the task' },\n historyLength: {\n type: 'integer',\n nullable: true,\n description: 'Optional history length to retrieve for the task',\n },\n metadata: {\n type: 'object',\n nullable: true,\n description: 'Optional metadata to include with the operation',\n },\n },\n required: ['id'],\n },\n {\n // TaskIdParams\n type: 'object',\n properties: {\n id: { type: 'string', description: 'The unique identifier of the task' },\n metadata: {\n type: 'object',\n nullable: true,\n description: 'Optional metadata to include with the operation',\n },\n },\n required: ['id'],\n },\n ],\n },\n },\n required: ['method', 'params'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'A2A response',\n },\n 400: {\n description: 'Missing or invalid request parameters',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n getAgentExecutionHandler,\n );\n\n // API routes\n app.get(\n '/api',\n describeRoute({\n description: 'Get API status',\n tags: ['system'],\n responses: {\n 200: {\n description: 'Success',\n },\n },\n }),\n rootHandler,\n );\n\n // Agents routes\n app.route('/api/agents', agentsRouter(bodyLimitOptions));\n\n if (options.isDev) {\n app.route('/api/agents', agentsRouterDev(bodyLimitOptions));\n }\n\n // MCP server routes\n app.route('/api/mcp', mcpRouter(bodyLimitOptions));\n // Network Memory routes\n app.route('/api/memory', memoryRoutes(bodyLimitOptions));\n // Observability routes\n app.route('/api/observability', observabilityRouter());\n // Legacy Workflow routes\n app.route('/api/workflows', workflowsRouter(bodyLimitOptions));\n // Log routes\n app.route('/api/logs', logsRouter());\n // Scores routes\n app.route('/api/scores', scoresRouter(bodyLimitOptions));\n // Agent builder routes\n app.route('/api/agent-builder', agentBuilderRouter(bodyLimitOptions));\n // Tool routes\n app.route('/api/tools', toolsRouter(bodyLimitOptions, options.tools));\n // Vector routes\n app.route('/api/vector', vectorRouter(bodyLimitOptions));\n\n if (options?.isDev || server?.build?.openAPIDocs || server?.build?.swaggerUI) {\n app.get(\n '/openapi.json',\n openAPISpecs(app, {\n includeEmptyPaths: true,\n documentation: {\n info: { title: 'Mastra API', version: '1.0.0', description: 'Mastra API' },\n },\n }),\n );\n }\n\n if (options?.isDev || server?.build?.swaggerUI) {\n app.get(\n '/swagger-ui',\n describeRoute({\n hide: true,\n }),\n swaggerUI({ url: '/openapi.json' }),\n );\n }\n\n if (options?.playground) {\n // SSE endpoint for refresh notifications\n app.get(\n '/refresh-events',\n describeRoute({\n hide: true,\n }),\n handleClientsRefresh,\n );\n\n // Trigger refresh for all clients\n app.post(\n '/__refresh',\n describeRoute({\n hide: true,\n }),\n handleTriggerClientsRefresh,\n );\n\n // Check hot reload status\n app.get(\n '/__hot-reload-status',\n describeRoute({\n hide: true,\n }),\n (c: Context) => {\n return c.json({\n disabled: isHotReloadDisabled(),\n timestamp: new Date().toISOString(),\n });\n },\n );\n // Playground routes - these should come after API routes\n // Serve assets with specific MIME types\n app.use('/assets/*', async (c, next) => {\n const path = c.req.path;\n if (path.endsWith('.js')) {\n c.header('Content-Type', 'application/javascript');\n } else if (path.endsWith('.css')) {\n c.header('Content-Type', 'text/css');\n }\n await next();\n });\n\n // Serve static assets from playground directory\n app.use(\n '/assets/*',\n serveStatic({\n root: './playground/assets',\n }),\n );\n }\n\n // Dynamic HTML handler - this must come before static file serving\n app.get('*', async (c, next) => {\n // Skip if it's an API route\n if (\n c.req.path.startsWith('/api/') ||\n c.req.path.startsWith('/swagger-ui') ||\n c.req.path.startsWith('/openapi.json')\n ) {\n return await next();\n }\n\n // Skip if it's an asset file (has extension other than .html)\n const path = c.req.path;\n if (path.includes('.') && !path.endsWith('.html')) {\n return await next();\n }\n\n if (options?.playground) {\n // For HTML routes, serve index.html with dynamic replacements\n let indexHtml = await readFile(join(process.cwd(), './playground/index.html'), 'utf-8');\n\n // Inject the server port information\n const serverOptions = mastra.getServer();\n const port = serverOptions?.port ?? (Number(process.env.PORT) || 4111);\n const hideCloudCta = process.env.MASTRA_HIDE_CLOUD_CTA === 'true';\n const host = serverOptions?.host ?? 'localhost';\n\n indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_HOST%%'`, `'${host}'`);\n indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_PORT%%'`, `'${port}'`);\n indexHtml = indexHtml.replace(`'%%MASTRA_HIDE_CLOUD_CTA%%'`, `'${hideCloudCta}'`);\n\n return c.newResponse(indexHtml, 200, { 'Content-Type': 'text/html' });\n }\n\n return c.newResponse(html, 200, { 'Content-Type': 'text/html' });\n });\n\n if (options?.playground) {\n // Serve extra static files from playground directory (this comes after HTML handler)\n app.use(\n '*',\n serveStatic({\n root: './playground',\n }),\n );\n }\n\n return app;\n}\n\nexport async function createNodeServer(mastra: Mastra, options: ServerBundleOptions = { tools: {} }) {\n const app = await createHonoServer(mastra, options);\n const serverOptions = mastra.getServer();\n\n const key =\n serverOptions?.https?.key ??\n (process.env.MASTRA_HTTPS_KEY ? Buffer.from(process.env.MASTRA_HTTPS_KEY, 'base64') : undefined);\n const cert =\n serverOptions?.https?.cert ??\n (process.env.MASTRA_HTTPS_CERT ? Buffer.from(process.env.MASTRA_HTTPS_CERT, 'base64') : undefined);\n const isHttpsEnabled = Boolean(key && cert);\n\n const host = serverOptions?.host ?? 'localhost';\n const port = serverOptions?.port ?? (Number(process.env.PORT) || 4111);\n const protocol = isHttpsEnabled ? 'https' : 'http';\n\n const server = serve(\n {\n fetch: app.fetch,\n port,\n hostname: serverOptions?.host,\n ...(isHttpsEnabled\n ? {\n createServer: https.createServer,\n serverOptions: {\n key,\n cert,\n },\n }\n : {}),\n },\n () => {\n const logger = mastra.getLogger();\n logger.info(` Mastra API running on port ${protocol}://${host}:${port}/api`);\n if (options?.playground) {\n const playgroundUrl = `${protocol}://${host}:${port}`;\n logger.info(`👨‍💻 Playground available at ${playgroundUrl}`);\n }\n\n if (process.send) {\n process.send({\n type: 'server-ready',\n port,\n host,\n });\n }\n },\n );\n\n await mastra.startEventEngine();\n\n return server;\n}\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/@hono+node-server@1.19.6_hono@4.10.6/node_modules/@hono/node-server/dist/index.mjs","../../../../node_modules/.pnpm/@hono+node-server@1.19.6_hono@4.10.6/node_modules/@hono/node-server/dist/serve-static.mjs","../../../../node_modules/.pnpm/@hono+swagger-ui@0.5.2_hono@4.10.6/node_modules/@hono/swagger-ui/dist/index.js","../../../../node_modules/.pnpm/hono-openapi@0.4.8_hono@4.10.6_openapi-types@12.1.3_zod@3.25.76/node_modules/hono-openapi/utils.js","../../../../node_modules/.pnpm/hono-openapi@0.4.8_hono@4.10.6_openapi-types@12.1.3_zod@3.25.76/node_modules/hono-openapi/index.js","../../src/server/handlers/a2a.ts","../../src/server/handlers/auth/defaults.ts","../../src/server/handlers/auth/helpers.ts","../../src/server/handlers/auth/index.ts","../../src/server/handlers/client.ts","../../src/server/handlers/error.ts","../../src/server/handlers/health.ts","../../src/server/handlers/restart-active-runs.ts","../../src/server/handlers/root.ts","../../src/server/handlers/routes/agent-builder/handlers.ts","../../src/server/handlers/routes/agent-builder/router.ts","../../src/server/handlers/prompt.ts","../../src/server/handlers/routes/tools/handlers.ts","../../src/server/handlers/routes/agents/handlers.ts","../../src/server/handlers/routes/agents/voice.ts","../../src/server/handlers/routes/agents/router.ts","../../src/server/handlers/routes/logs/handlers.ts","../../src/server/handlers/routes/logs/router.ts","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/utils/errors.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-incoming.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/utils/types.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/internal-http.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/internal-streams-state.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-common.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-outgoing.js","../../../../node_modules/.pnpm/fetch-to-node@2.1.0/node_modules/fetch-to-node/dist/fetch-to-node/http-server.js","../../src/server/handlers/routes/mcp/handlers.ts","../../src/server/handlers/routes/mcp/router.ts","../../src/server/handlers/utils/query-parsers.ts","../../src/server/handlers/routes/memory/handlers.ts","../../src/server/handlers/routes/memory/router.ts","../../src/server/handlers/routes/observability/handlers.ts","../../src/server/handlers/routes/observability/router.ts","../../src/server/handlers/routes/scores/handlers.ts","../../src/server/handlers/routes/scores/router.ts","../../src/server/handlers/routes/tools/router.ts","../../src/server/handlers/routes/vector/handlers.ts","../../src/server/handlers/routes/vector/router.ts","../../src/server/handlers/routes/workflows/handlers.ts","../../src/server/handlers/routes/workflows/router.ts","../../src/server/welcome.ts","../../src/server/index.ts"],"names":["e","i","Readable","Http2ServerRequest","stream","crypto","Http2ServerRequest2","createServer","createServerHTTP","lstatSync","existsSync","c","path","join","getMimeType","createReadStream","html","s","t","n","a","o","r","f","m","getOriginalAgentCardByIdHandler","logger","getOriginalAgentExecutionHandler","randomUUID","p","HTTPException","getOriginalAgentBuilderActionsHandler","getOriginalAgentBuilderActionByIdHandler","getOriginalCreateAgentBuilderActionRunHandler","getOriginalStartAsyncAgentBuilderActionHandler","getOriginalStartAgentBuilderActionRunHandler","getOriginalStreamAgentBuilderActionHandler","getOriginalStreamVNextAgentBuilderActionHandler","getOriginalResumeAsyncAgentBuilderActionHandler","getOriginalResumeAgentBuilderActionHandler","getOriginalGetAgentBuilderActionRunsHandler","getOriginalGetAgentBuilderActionRunByIdHandler","getOriginalGetAgentBuilderActionRunExecutionResultHandler","getOriginalCancelAgentBuilderActionRunHandler","getOriginalStreamLegacyAgentBuilderActionHandler","getOriginalObserveStreamLegacyAgentBuilderActionHandler","getOriginalObserveStreamAgentBuilderActionHandler","getOriginalObserveStreamVNextAgentBuilderActionHandler","getOriginalResumeStreamAgentBuilderActionHandler","Hono","bodyLimit","agent","Agent","z","getOriginalToolsHandler","getOriginalToolByIdHandler","getOriginalExecuteToolHandler","getOriginalAgentToolHandler","getOriginalExecuteAgentToolHandler","getOriginalListAgentsHandler","PROVIDER_REGISTRY","getProviderConfig","getOriginalAgentByIdHandler","getOriginalGenerateLegacyHandler","getOriginalGenerateHandler","getOriginalStreamGenerateLegacyHandler","getOriginalStreamGenerateHandler","ChunkFrom","getErrorFromUnknown","getOriginalApproveToolCallHandler","getOriginalDeclineToolCallHandler","getOriginalGetAgentFromSystem","MastraError","ErrorDomain","ErrorCategory","getOriginalStreamNetworkHandler","getOriginalStreamUIMessageHandler","getOriginalUpdateAgentModelHandler","getOriginalResetAgentModelHandler","getOriginalUpdateAgentModelInModelListHandler","getOriginalReorderAgentModelListHandler","getOriginalSpeakersHandler","getOriginalSpeakHandler","getOriginalListenerHandler","getOriginalListenHandler","logs","getOriginalListLogsHandler","getOriginalListLogsByRunIdHandler","getOriginalListLogTransportsHandler","util","Writable","l","onError","Buffer","headerCharRegex","checkInvalidHeaderChar","incoming","getOriginalMemoryStatusHandler","getOriginalMemoryConfigHandler","getOriginalListThreadsHandler","getOriginalThreadByIdHandler","getOriginalSaveMessagesHandler","getOriginalCreateThreadHandler","getOriginalUpdateThreadHandler","getOriginalDeleteThreadHandler","getOriginalListMessagesHandler","getOriginalUpdateWorkingMemoryHandler","getOriginalGetWorkingMemoryHandler","getOriginalSearchMemoryHandler","getOriginalDeleteMessagesHandler","getOriginalTraceHandler","SpanType","getOriginalTracesPaginatedHandler","getOriginalScoreTracesHandler","getOriginalScoresBySpanHandler","getOriginalListScorersHandler","getOriginalScorerHandler","scores","getOriginalScoresByRunIdHandler","getOriginalScoresByScorerIdHandler","getOriginalScoresByEntityIdHandler","getOriginalSaveScoreHandler","getOriginalUpsertVectorsHandler","getOriginalCreateIndexHandler","getOriginalQueryVectorsHandler","getOriginalListIndexesHandler","getOriginalDescribeIndexHandler","getOriginalDeleteIndexHandler","workflows","getOriginalWorkflowsHandler","getOriginalWorkflowByIdHandler","getOriginalCreateWorkflowRunHandler","getOriginalStartAsyncWorkflowHandler","getOriginalStartWorkflowRunHandler","getOriginalStreamVNextWorkflowHandler","getOriginalObserveStreamVNextWorkflowHandler","getOriginalStreamLegacyWorkflowHandler","getOriginalObserveStreamLegacyWorkflowHandler","getOriginalResumeStreamWorkflowHandler","getOriginalResumeAsyncWorkflowHandler","getOriginalResumeWorkflowHandler","getOriginalListWorkflowRunsHandler","getOriginalGetWorkflowRunByIdHandler","getOriginalGetWorkflowRunExecutionResultHandler","getOriginalCancelWorkflowRunHandler","tools","Tool","InMemoryTaskStore","requestContext","RequestContext","timeout","cors","middleware","readFile","https"],"mappings":"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","file":"index.cjs","sourcesContent":["// src/server.ts\nimport { createServer as createServerHTTP } from \"http\";\n\n// src/listener.ts\nimport { Http2ServerRequest as Http2ServerRequest2 } from \"http2\";\n\n// src/request.ts\nimport { Http2ServerRequest } from \"http2\";\nimport { Readable } from \"stream\";\nvar RequestError = class extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"RequestError\";\n }\n};\nvar toRequestError = (e) => {\n if (e instanceof RequestError) {\n return e;\n }\n return new RequestError(e.message, { cause: e });\n};\nvar GlobalRequest = global.Request;\nvar Request = class extends GlobalRequest {\n constructor(input, options) {\n if (typeof input === \"object\" && getRequestCache in input) {\n input = input[getRequestCache]();\n }\n if (typeof options?.body?.getReader !== \"undefined\") {\n ;\n options.duplex ??= \"half\";\n }\n super(input, options);\n }\n};\nvar newHeadersFromIncoming = (incoming) => {\n const headerRecord = [];\n const rawHeaders = incoming.rawHeaders;\n for (let i = 0; i < rawHeaders.length; i += 2) {\n const { [i]: key, [i + 1]: value } = rawHeaders;\n if (key.charCodeAt(0) !== /*:*/\n 58) {\n headerRecord.push([key, value]);\n }\n }\n return new Headers(headerRecord);\n};\nvar wrapBodyStream = Symbol(\"wrapBodyStream\");\nvar newRequestFromIncoming = (method, url, headers, incoming, abortController) => {\n const init = {\n method,\n headers,\n signal: abortController.signal\n };\n if (method === \"TRACE\") {\n init.method = \"GET\";\n const req = new Request(url, init);\n Object.defineProperty(req, \"method\", {\n get() {\n return \"TRACE\";\n }\n });\n return req;\n }\n if (!(method === \"GET\" || method === \"HEAD\")) {\n if (\"rawBody\" in incoming && incoming.rawBody instanceof Buffer) {\n init.body = new ReadableStream({\n start(controller) {\n controller.enqueue(incoming.rawBody);\n controller.close();\n }\n });\n } else if (incoming[wrapBodyStream]) {\n let reader;\n init.body = new ReadableStream({\n async pull(controller) {\n try {\n reader ||= Readable.toWeb(incoming).getReader();\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n }\n });\n } else {\n init.body = Readable.toWeb(incoming);\n }\n }\n return new Request(url, init);\n};\nvar getRequestCache = Symbol(\"getRequestCache\");\nvar requestCache = Symbol(\"requestCache\");\nvar incomingKey = Symbol(\"incomingKey\");\nvar urlKey = Symbol(\"urlKey\");\nvar headersKey = Symbol(\"headersKey\");\nvar abortControllerKey = Symbol(\"abortControllerKey\");\nvar getAbortController = Symbol(\"getAbortController\");\nvar requestPrototype = {\n get method() {\n return this[incomingKey].method || \"GET\";\n },\n get url() {\n return this[urlKey];\n },\n get headers() {\n return this[headersKey] ||= newHeadersFromIncoming(this[incomingKey]);\n },\n [getAbortController]() {\n this[getRequestCache]();\n return this[abortControllerKey];\n },\n [getRequestCache]() {\n this[abortControllerKey] ||= new AbortController();\n return this[requestCache] ||= newRequestFromIncoming(\n this.method,\n this[urlKey],\n this.headers,\n this[incomingKey],\n this[abortControllerKey]\n );\n }\n};\n[\n \"body\",\n \"bodyUsed\",\n \"cache\",\n \"credentials\",\n \"destination\",\n \"integrity\",\n \"mode\",\n \"redirect\",\n \"referrer\",\n \"referrerPolicy\",\n \"signal\",\n \"keepalive\"\n].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n get() {\n return this[getRequestCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n value: function() {\n return this[getRequestCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(requestPrototype, Request.prototype);\nvar newRequest = (incoming, defaultHostname) => {\n const req = Object.create(requestPrototype);\n req[incomingKey] = incoming;\n const incomingUrl = incoming.url || \"\";\n if (incomingUrl[0] !== \"/\" && // short-circuit for performance. most requests are relative URL.\n (incomingUrl.startsWith(\"http://\") || incomingUrl.startsWith(\"https://\"))) {\n if (incoming instanceof Http2ServerRequest) {\n throw new RequestError(\"Absolute URL for :path is not allowed in HTTP/2\");\n }\n try {\n const url2 = new URL(incomingUrl);\n req[urlKey] = url2.href;\n } catch (e) {\n throw new RequestError(\"Invalid absolute URL\", { cause: e });\n }\n return req;\n }\n const host = (incoming instanceof Http2ServerRequest ? incoming.authority : incoming.headers.host) || defaultHostname;\n if (!host) {\n throw new RequestError(\"Missing host header\");\n }\n let scheme;\n if (incoming instanceof Http2ServerRequest) {\n scheme = incoming.scheme;\n if (!(scheme === \"http\" || scheme === \"https\")) {\n throw new RequestError(\"Unsupported scheme\");\n }\n } else {\n scheme = incoming.socket && incoming.socket.encrypted ? \"https\" : \"http\";\n }\n const url = new URL(`${scheme}://${host}${incomingUrl}`);\n if (url.hostname.length !== host.length && url.hostname !== host.replace(/:\\d+$/, \"\")) {\n throw new RequestError(\"Invalid host header\");\n }\n req[urlKey] = url.href;\n return req;\n};\n\n// src/response.ts\nvar responseCache = Symbol(\"responseCache\");\nvar getResponseCache = Symbol(\"getResponseCache\");\nvar cacheKey = Symbol(\"cache\");\nvar GlobalResponse = global.Response;\nvar Response2 = class _Response {\n #body;\n #init;\n [getResponseCache]() {\n delete this[cacheKey];\n return this[responseCache] ||= new GlobalResponse(this.#body, this.#init);\n }\n constructor(body, init) {\n let headers;\n this.#body = body;\n if (init instanceof _Response) {\n const cachedGlobalResponse = init[responseCache];\n if (cachedGlobalResponse) {\n this.#init = cachedGlobalResponse;\n this[getResponseCache]();\n return;\n } else {\n this.#init = init.#init;\n headers = new Headers(init.#init.headers);\n }\n } else {\n this.#init = init;\n }\n if (typeof body === \"string\" || typeof body?.getReader !== \"undefined\" || body instanceof Blob || body instanceof Uint8Array) {\n headers ||= init?.headers || { \"content-type\": \"text/plain; charset=UTF-8\" };\n this[cacheKey] = [init?.status || 200, body, headers];\n }\n }\n get headers() {\n const cache = this[cacheKey];\n if (cache) {\n if (!(cache[2] instanceof Headers)) {\n cache[2] = new Headers(cache[2]);\n }\n return cache[2];\n }\n return this[getResponseCache]().headers;\n }\n get status() {\n return this[cacheKey]?.[0] ?? this[getResponseCache]().status;\n }\n get ok() {\n const status = this.status;\n return status >= 200 && status < 300;\n }\n};\n[\"body\", \"bodyUsed\", \"redirected\", \"statusText\", \"trailers\", \"type\", \"url\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n get() {\n return this[getResponseCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n value: function() {\n return this[getResponseCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(Response2, GlobalResponse);\nObject.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);\n\n// src/utils.ts\nasync function readWithoutBlocking(readPromise) {\n return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]);\n}\nfunction writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) {\n const cancel = (error) => {\n reader.cancel(error).catch(() => {\n });\n };\n writable.on(\"close\", cancel);\n writable.on(\"error\", cancel);\n (currentReadPromise ?? reader.read()).then(flow, handleStreamError);\n return reader.closed.finally(() => {\n writable.off(\"close\", cancel);\n writable.off(\"error\", cancel);\n });\n function handleStreamError(error) {\n if (error) {\n writable.destroy(error);\n }\n }\n function onDrain() {\n reader.read().then(flow, handleStreamError);\n }\n function flow({ done, value }) {\n try {\n if (done) {\n writable.end();\n } else if (!writable.write(value)) {\n writable.once(\"drain\", onDrain);\n } else {\n return reader.read().then(flow, handleStreamError);\n }\n } catch (e) {\n handleStreamError(e);\n }\n }\n}\nfunction writeFromReadableStream(stream, writable) {\n if (stream.locked) {\n throw new TypeError(\"ReadableStream is locked.\");\n } else if (writable.destroyed) {\n return;\n }\n return writeFromReadableStreamDefaultReader(stream.getReader(), writable);\n}\nvar buildOutgoingHttpHeaders = (headers) => {\n const res = {};\n if (!(headers instanceof Headers)) {\n headers = new Headers(headers ?? void 0);\n }\n const cookies = [];\n for (const [k, v] of headers) {\n if (k === \"set-cookie\") {\n cookies.push(v);\n } else {\n res[k] = v;\n }\n }\n if (cookies.length > 0) {\n res[\"set-cookie\"] = cookies;\n }\n res[\"content-type\"] ??= \"text/plain; charset=UTF-8\";\n return res;\n};\n\n// src/utils/response/constants.ts\nvar X_ALREADY_SENT = \"x-hono-already-sent\";\n\n// src/globals.ts\nimport crypto from \"crypto\";\nvar webFetch = global.fetch;\nif (typeof global.crypto === \"undefined\") {\n global.crypto = crypto;\n}\nglobal.fetch = (info, init) => {\n init = {\n // Disable compression handling so people can return the result of a fetch\n // directly in the loader without messing with the Content-Encoding header.\n compress: false,\n ...init\n };\n return webFetch(info, init);\n};\n\n// src/listener.ts\nvar outgoingEnded = Symbol(\"outgoingEnded\");\nvar handleRequestError = () => new Response(null, {\n status: 400\n});\nvar handleFetchError = (e) => new Response(null, {\n status: e instanceof Error && (e.name === \"TimeoutError\" || e.constructor.name === \"TimeoutError\") ? 504 : 500\n});\nvar handleResponseError = (e, outgoing) => {\n const err = e instanceof Error ? e : new Error(\"unknown error\", { cause: e });\n if (err.code === \"ERR_STREAM_PREMATURE_CLOSE\") {\n console.info(\"The user aborted a request.\");\n } else {\n console.error(e);\n if (!outgoing.headersSent) {\n outgoing.writeHead(500, { \"Content-Type\": \"text/plain\" });\n }\n outgoing.end(`Error: ${err.message}`);\n outgoing.destroy(err);\n }\n};\nvar flushHeaders = (outgoing) => {\n if (\"flushHeaders\" in outgoing && outgoing.writable) {\n outgoing.flushHeaders();\n }\n};\nvar responseViaCache = async (res, outgoing) => {\n let [status, body, header] = res[cacheKey];\n if (header instanceof Headers) {\n header = buildOutgoingHttpHeaders(header);\n }\n if (typeof body === \"string\") {\n header[\"Content-Length\"] = Buffer.byteLength(body);\n } else if (body instanceof Uint8Array) {\n header[\"Content-Length\"] = body.byteLength;\n } else if (body instanceof Blob) {\n header[\"Content-Length\"] = body.size;\n }\n outgoing.writeHead(status, header);\n if (typeof body === \"string\" || body instanceof Uint8Array) {\n outgoing.end(body);\n } else if (body instanceof Blob) {\n outgoing.end(new Uint8Array(await body.arrayBuffer()));\n } else {\n flushHeaders(outgoing);\n await writeFromReadableStream(body, outgoing)?.catch(\n (e) => handleResponseError(e, outgoing)\n );\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar isPromise = (res) => typeof res.then === \"function\";\nvar responseViaResponseObject = async (res, outgoing, options = {}) => {\n if (isPromise(res)) {\n if (options.errorHandler) {\n try {\n res = await res;\n } catch (err) {\n const errRes = await options.errorHandler(err);\n if (!errRes) {\n return;\n }\n res = errRes;\n }\n } else {\n res = await res.catch(handleFetchError);\n }\n }\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n const resHeaderRecord = buildOutgoingHttpHeaders(res.headers);\n if (res.body) {\n const reader = res.body.getReader();\n const values = [];\n let done = false;\n let currentReadPromise = void 0;\n if (resHeaderRecord[\"transfer-encoding\"] !== \"chunked\") {\n let maxReadCount = 2;\n for (let i = 0; i < maxReadCount; i++) {\n currentReadPromise ||= reader.read();\n const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => {\n console.error(e);\n done = true;\n });\n if (!chunk) {\n if (i === 1) {\n await new Promise((resolve) => setTimeout(resolve));\n maxReadCount = 3;\n continue;\n }\n break;\n }\n currentReadPromise = void 0;\n if (chunk.value) {\n values.push(chunk.value);\n }\n if (chunk.done) {\n done = true;\n break;\n }\n }\n if (done && !(\"content-length\" in resHeaderRecord)) {\n resHeaderRecord[\"content-length\"] = values.reduce((acc, value) => acc + value.length, 0);\n }\n }\n outgoing.writeHead(res.status, resHeaderRecord);\n values.forEach((value) => {\n ;\n outgoing.write(value);\n });\n if (done) {\n outgoing.end();\n } else {\n if (values.length === 0) {\n flushHeaders(outgoing);\n }\n await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise);\n }\n } else if (resHeaderRecord[X_ALREADY_SENT]) {\n } else {\n outgoing.writeHead(res.status, resHeaderRecord);\n outgoing.end();\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar getRequestListener = (fetchCallback, options = {}) => {\n const autoCleanupIncoming = options.autoCleanupIncoming ?? true;\n if (options.overrideGlobalObjects !== false && global.Request !== Request) {\n Object.defineProperty(global, \"Request\", {\n value: Request\n });\n Object.defineProperty(global, \"Response\", {\n value: Response2\n });\n }\n return async (incoming, outgoing) => {\n let res, req;\n try {\n req = newRequest(incoming, options.hostname);\n let incomingEnded = !autoCleanupIncoming || incoming.method === \"GET\" || incoming.method === \"HEAD\";\n if (!incomingEnded) {\n ;\n incoming[wrapBodyStream] = true;\n incoming.on(\"end\", () => {\n incomingEnded = true;\n });\n if (incoming instanceof Http2ServerRequest2) {\n ;\n outgoing[outgoingEnded] = () => {\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n outgoing.destroy();\n });\n }\n });\n }\n };\n }\n }\n outgoing.on(\"close\", () => {\n const abortController = req[abortControllerKey];\n if (abortController) {\n if (incoming.errored) {\n req[abortControllerKey].abort(incoming.errored.toString());\n } else if (!outgoing.writableFinished) {\n req[abortControllerKey].abort(\"Client connection prematurely closed.\");\n }\n }\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n });\n }\n });\n }\n });\n res = fetchCallback(req, { incoming, outgoing });\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n } catch (e) {\n if (!res) {\n if (options.errorHandler) {\n res = await options.errorHandler(req ? e : toRequestError(e));\n if (!res) {\n return;\n }\n } else if (!req) {\n res = handleRequestError();\n } else {\n res = handleFetchError(e);\n }\n } else {\n return handleResponseError(e, outgoing);\n }\n }\n try {\n return await responseViaResponseObject(res, outgoing, options);\n } catch (e) {\n return handleResponseError(e, outgoing);\n }\n };\n};\n\n// src/server.ts\nvar createAdaptorServer = (options) => {\n const fetchCallback = options.fetch;\n const requestListener = getRequestListener(fetchCallback, {\n hostname: options.hostname,\n overrideGlobalObjects: options.overrideGlobalObjects,\n autoCleanupIncoming: options.autoCleanupIncoming\n });\n const createServer = options.createServer || createServerHTTP;\n const server = createServer(options.serverOptions || {}, requestListener);\n return server;\n};\nvar serve = (options, listeningListener) => {\n const server = createAdaptorServer(options);\n server.listen(options?.port ?? 3e3, options.hostname, () => {\n const serverInfo = server.address();\n listeningListener && listeningListener(serverInfo);\n });\n return server;\n};\nexport {\n RequestError,\n createAdaptorServer,\n getRequestListener,\n serve\n};\n","// src/serve-static.ts\nimport { getMimeType } from \"hono/utils/mime\";\nimport { createReadStream, lstatSync, existsSync } from \"fs\";\nimport { join } from \"path\";\nvar COMPRESSIBLE_CONTENT_TYPE_REGEX = /^\\s*(?:text\\/[^;\\s]+|application\\/(?:javascript|json|xml|xml-dtd|ecmascript|dart|postscript|rtf|tar|toml|vnd\\.dart|vnd\\.ms-fontobject|vnd\\.ms-opentype|wasm|x-httpd-php|x-javascript|x-ns-proxy-autoconfig|x-sh|x-tar|x-virtualbox-hdd|x-virtualbox-ova|x-virtualbox-ovf|x-virtualbox-vbox|x-virtualbox-vdi|x-virtualbox-vhd|x-virtualbox-vmdk|x-www-form-urlencoded)|font\\/(?:otf|ttf)|image\\/(?:bmp|vnd\\.adobe\\.photoshop|vnd\\.microsoft\\.icon|vnd\\.ms-dds|x-icon|x-ms-bmp)|message\\/rfc822|model\\/gltf-binary|x-shader\\/x-fragment|x-shader\\/x-vertex|[^;\\s]+?\\+(?:json|text|xml|yaml))(?:[;\\s]|$)/i;\nvar ENCODINGS = {\n br: \".br\",\n zstd: \".zst\",\n gzip: \".gz\"\n};\nvar ENCODINGS_ORDERED_KEYS = Object.keys(ENCODINGS);\nvar createStreamBody = (stream) => {\n const body = new ReadableStream({\n start(controller) {\n stream.on(\"data\", (chunk) => {\n controller.enqueue(chunk);\n });\n stream.on(\"error\", (err) => {\n controller.error(err);\n });\n stream.on(\"end\", () => {\n controller.close();\n });\n },\n cancel() {\n stream.destroy();\n }\n });\n return body;\n};\nvar getStats = (path) => {\n let stats;\n try {\n stats = lstatSync(path);\n } catch {\n }\n return stats;\n};\nvar serveStatic = (options = { root: \"\" }) => {\n const root = options.root || \"\";\n const optionPath = options.path;\n if (root !== \"\" && !existsSync(root)) {\n console.error(`serveStatic: root path '${root}' is not found, are you sure it's correct?`);\n }\n return async (c, next) => {\n if (c.finalized) {\n return next();\n }\n let filename;\n if (optionPath) {\n filename = optionPath;\n } else {\n try {\n filename = decodeURIComponent(c.req.path);\n if (/(?:^|[\\/\\\\])\\.\\.(?:$|[\\/\\\\])/.test(filename)) {\n throw new Error();\n }\n } catch {\n await options.onNotFound?.(c.req.path, c);\n return next();\n }\n }\n let path = join(\n root,\n !optionPath && options.rewriteRequestPath ? options.rewriteRequestPath(filename, c) : filename\n );\n let stats = getStats(path);\n if (stats && stats.isDirectory()) {\n const indexFile = options.index ?? \"index.html\";\n path = join(path, indexFile);\n stats = getStats(path);\n }\n if (!stats) {\n await options.onNotFound?.(path, c);\n return next();\n }\n const mimeType = getMimeType(path);\n c.header(\"Content-Type\", mimeType || \"application/octet-stream\");\n if (options.precompressed && (!mimeType || COMPRESSIBLE_CONTENT_TYPE_REGEX.test(mimeType))) {\n const acceptEncodingSet = new Set(\n c.req.header(\"Accept-Encoding\")?.split(\",\").map((encoding) => encoding.trim())\n );\n for (const encoding of ENCODINGS_ORDERED_KEYS) {\n if (!acceptEncodingSet.has(encoding)) {\n continue;\n }\n const precompressedStats = getStats(path + ENCODINGS[encoding]);\n if (precompressedStats) {\n c.header(\"Content-Encoding\", encoding);\n c.header(\"Vary\", \"Accept-Encoding\", { append: true });\n stats = precompressedStats;\n path = path + ENCODINGS[encoding];\n break;\n }\n }\n }\n let result;\n const size = stats.size;\n const range = c.req.header(\"range\") || \"\";\n if (c.req.method == \"HEAD\" || c.req.method == \"OPTIONS\") {\n c.header(\"Content-Length\", size.toString());\n c.status(200);\n result = c.body(null);\n } else if (!range) {\n c.header(\"Content-Length\", size.toString());\n result = c.body(createStreamBody(createReadStream(path)), 200);\n } else {\n c.header(\"Accept-Ranges\", \"bytes\");\n c.header(\"Date\", stats.birthtime.toUTCString());\n const parts = range.replace(/bytes=/, \"\").split(\"-\", 2);\n const start = parseInt(parts[0], 10) || 0;\n let end = parseInt(parts[1], 10) || size - 1;\n if (size < end - start + 1) {\n end = size - 1;\n }\n const chunksize = end - start + 1;\n const stream = createReadStream(path, { start, end });\n c.header(\"Content-Length\", chunksize.toString());\n c.header(\"Content-Range\", `bytes ${start}-${end}/${stats.size}`);\n result = c.body(createStreamBody(stream), 206);\n }\n await options.onFound?.(path, c);\n return result;\n };\n};\nexport {\n serveStatic\n};\n","// src/index.ts\nimport { html } from \"hono/html\";\n\n// src/swagger/renderer.ts\nvar RENDER_TYPE = {\n STRING_ARRAY: \"string_array\",\n STRING: \"string\",\n JSON_STRING: \"json_string\",\n RAW: \"raw\"\n};\nvar RENDER_TYPE_MAP = {\n configUrl: RENDER_TYPE.STRING,\n deepLinking: RENDER_TYPE.RAW,\n presets: RENDER_TYPE.STRING_ARRAY,\n plugins: RENDER_TYPE.STRING_ARRAY,\n spec: RENDER_TYPE.JSON_STRING,\n url: RENDER_TYPE.STRING,\n urls: RENDER_TYPE.JSON_STRING,\n layout: RENDER_TYPE.STRING,\n docExpansion: RENDER_TYPE.STRING,\n maxDisplayedTags: RENDER_TYPE.RAW,\n operationsSorter: RENDER_TYPE.RAW,\n requestInterceptor: RENDER_TYPE.RAW,\n responseInterceptor: RENDER_TYPE.RAW,\n persistAuthorization: RENDER_TYPE.RAW,\n defaultModelsExpandDepth: RENDER_TYPE.RAW,\n defaultModelExpandDepth: RENDER_TYPE.RAW,\n defaultModelRendering: RENDER_TYPE.STRING,\n displayRequestDuration: RENDER_TYPE.RAW,\n filter: RENDER_TYPE.RAW,\n showExtensions: RENDER_TYPE.RAW,\n showCommonExtensions: RENDER_TYPE.RAW,\n queryConfigEnabled: RENDER_TYPE.RAW,\n displayOperationId: RENDER_TYPE.RAW,\n tagsSorter: RENDER_TYPE.RAW,\n onComplete: RENDER_TYPE.RAW,\n syntaxHighlight: RENDER_TYPE.JSON_STRING,\n tryItOutEnabled: RENDER_TYPE.RAW,\n requestSnippetsEnabled: RENDER_TYPE.RAW,\n requestSnippets: RENDER_TYPE.JSON_STRING,\n oauth2RedirectUrl: RENDER_TYPE.STRING,\n showMutabledRequest: RENDER_TYPE.RAW,\n request: RENDER_TYPE.JSON_STRING,\n supportedSubmitMethods: RENDER_TYPE.JSON_STRING,\n validatorUrl: RENDER_TYPE.STRING,\n withCredentials: RENDER_TYPE.RAW,\n modelPropertyMacro: RENDER_TYPE.RAW,\n parameterMacro: RENDER_TYPE.RAW\n};\nvar renderSwaggerUIOptions = (options) => {\n const optionsStrings = Object.entries(options).map(([k, v]) => {\n const key = k;\n if (!RENDER_TYPE_MAP[key] || v === void 0) {\n return \"\";\n }\n switch (RENDER_TYPE_MAP[key]) {\n case RENDER_TYPE.STRING:\n return `${key}: '${v}'`;\n case RENDER_TYPE.STRING_ARRAY:\n if (!Array.isArray(v)) {\n return \"\";\n }\n return `${key}: [${v.map((ve) => `${ve}`).join(\",\")}]`;\n case RENDER_TYPE.JSON_STRING:\n return `${key}: ${JSON.stringify(v)}`;\n case RENDER_TYPE.RAW:\n return `${key}: ${v}`;\n default:\n return \"\";\n }\n }).filter((item) => item !== \"\").join(\",\");\n return optionsStrings;\n};\n\n// src/swagger/resource.ts\nvar remoteAssets = ({ version }) => {\n const url = `https://cdn.jsdelivr.net/npm/swagger-ui-dist${version !== void 0 ? `@${version}` : \"\"}`;\n return {\n css: [`${url}/swagger-ui.css`],\n js: [`${url}/swagger-ui-bundle.js`]\n };\n};\n\n// src/index.ts\nvar SwaggerUI = (options) => {\n const asset = remoteAssets({ version: options?.version });\n delete options.version;\n if (options.manuallySwaggerUIHtml) {\n return options.manuallySwaggerUIHtml(asset);\n }\n const optionsStrings = renderSwaggerUIOptions(options);\n return `\n <div>\n <div id=\"swagger-ui\"></div>\n ${asset.css.map((url) => html`<link rel=\"stylesheet\" href=\"${url}\" />`)}\n ${asset.js.map((url) => html`<script src=\"${url}\" crossorigin=\"anonymous\"></script>`)}\n <script>\n window.onload = () => {\n window.ui = SwaggerUIBundle({\n dom_id: '#swagger-ui',${optionsStrings},\n })\n }\n </script>\n </div>\n `;\n};\nvar middleware = (options) => async (c) => {\n const title = options?.title ?? \"SwaggerUI\";\n return c.html(\n /* html */\n `\n <html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"description\" content=\"SwaggerUI\" />\n <title>${title}</title>\n </head>\n <body>\n ${SwaggerUI(options)}\n </body>\n </html>\n `\n );\n};\nexport {\n SwaggerUI,\n middleware as swaggerUI\n};\n","const e=Symbol(\"openapi\");async function s(e,s){const n=await s,o={};if(\"form\"===e||\"json\"===e){const s=\"json\"===e?\"application/json\":\"multipart/form-data\";o.requestBody&&\"content\"in o.requestBody&&o.requestBody.content?o.requestBody.content[s]={schema:n.schema}:o.requestBody={content:{[s]:{schema:n.schema}}}}else{const s=[];if(\"$ref\"in n.schema)s.push({in:e,name:n.schema.$ref,schema:n.schema});else for(const[o,t]of Object.entries(n.schema.properties??{}))s.push({in:e,name:o,schema:t,required:n.schema.required?.includes(o)});o.parameters=s}return{docs:o,components:n.components}}export{s as g,e as u};\n","import{u as e}from\"./utils.js\";export{g as generateValidatorDocs}from\"./utils.js\";import{HTTPException as t}from\"hono/http-exception\";const n=[\"GET\",\"PUT\",\"POST\",\"DELETE\",\"OPTIONS\",\"HEAD\",\"PATCH\",\"TRACE\"],s=e=>e.charAt(0).toUpperCase()+e.slice(1),o=new Map,a=(e,t)=>{const n=`${e}:${t}`;if(o.has(n))return o.get(n);let a=e;if(\"/\"===t)return`${a}Index`;for(const e of t.split(\"/\"))123===e.charCodeAt(0)?a+=`By${s(e.slice(1,-1))}`:a+=s(e);return o.set(n,a),a},r=new Map;function c(e,t,n){return e&&t in e?e[t]??n:n}function i(...e){return e.reduce(((e,t)=>{if(!t)return e;let n;return(\"tags\"in e&&e.tags||\"tags\"in t&&t.tags)&&(n=Array.from(new Set([...c(e,\"tags\",[]),...c(t,\"tags\",[])]))),{...e,...t,tags:n,responses:{...c(e,\"responses\",{}),...c(t,\"responses\",{})},parameters:m(e.parameters,t.parameters)}}),{})}function p({path:e,method:t,data:n,schema:s}){e=(e=>e.split(\"/\").map((e=>{let t=e;if(t.startsWith(\":\")){const e=t.match(/^:([^{?]+)(?:{(.+)})?(\\?)?$/);e?t=`{${e[1]}}`:(t=t.slice(1,t.length),t.endsWith(\"?\")&&(t=t.slice(0,-1)),t=`{${t}}`)}return t})).join(\"/\"))(e);const o=t.toLowerCase();if(\"all\"===o){if(!n)return;if(r.has(e)){const t=r.get(e)??{};r.set(e,{...t,...n,parameters:m(t.parameters,n.parameters)})}else r.set(e,n)}else{const t=function(e){const t=Array.from(r.keys());let n={};for(const s of t)e.match(s)&&(n=i(n,r.get(s)??{}));return n}(e);s[e]={...s[e]?s[e]:{},[o]:{responses:{},operationId:a(o,e),...i(t,s[e]?.[o],n)}}}}const f=e=>\"$ref\"in e?e.$ref:`${e.in} ${e.name}`;function m(...e){const t=e.flatMap((e=>e??[])).reduce(((e,t)=>(e.set(f(t),t),e)),new Map);return Array.from(t.values())}function l(e,{excludeStaticFile:t=!0,exclude:n=[]}){const s={},o=Array.isArray(n)?n:[n];for(const[n,a]of Object.entries(e))if(!o.some((e=>\"string\"==typeof e?n===e:e.test(n)))&&(!n.includes(\"*\")||n.includes(\"{\"))&&(!t||(!n.includes(\".\")||n.includes(\"{\")))){for(const e of Object.keys(a)){const t=a[e];if(n.includes(\"{\")){t.parameters||(t.parameters=[]);const e=n.split(\"/\").filter((e=>e.startsWith(\"{\")&&!t.parameters.find((t=>\"path\"===t.in&&t.name===e.slice(1,e.length-1)))));for(const n of e){const e=n.slice(1,n.length-1),s=t.parameters.findIndex((t=>\"param\"===t.in&&t.name===e));-1!==s?t.parameters[s].in=\"path\":t.parameters.push({schema:{type:\"string\"},in:\"path\",name:e,required:!0})}}t.responses||(t.responses={200:{}})}s[n]=a}return s}const u={documentation:{},excludeStaticFile:!0,exclude:[],excludeMethods:[\"OPTIONS\"],excludeTags:[]},d={version:\"3.1.0\",components:{}};function h(e,t){const n={version:\"3.1.0\",components:{}};let s;return async o=>(s||(s=await y(e,t,n,o)),o.json(s))}async function y(t,s=u,o=d,a){const r={...u,...s},c={...d,...o},i=r.documentation??{},f=await async function(t,s,o){const a={};for(const r of t.routes){if(!(e in r.handler)){s.includeEmptyPaths&&p({method:r.method,path:r.path,schema:a});continue}if(s.excludeMethods.includes(r.method))continue;if(!1===n.includes(r.method)&&\"ALL\"!==r.method)continue;const{resolver:t,metadata:c={}}=r.handler[e],i=s.defaultOptions?.[r.method],{docs:f,components:m}=await t({...o,...c},i);o.components={...o.components,...m??{}},p({method:r.method,path:r.path,data:f,schema:a})}return a}(t,r,c);for(const e in f)for(const t in f[e]){const n=f[e][t]?.hide;if(n){let s=!1;\"boolean\"==typeof n?s=n:\"function\"==typeof n&&(a?s=n(a):console.warn(`'c' is not defined, cannot evaluate hide function for ${t} ${e}`)),s&&delete f[e][t]}}return{openapi:c.version,...{...i,tags:i.tags?.filter((e=>!r.excludeTags?.includes(e?.name))),info:{title:\"Hono Documentation\",description:\"Development documentation\",version:\"0.0.0\",...i.info},paths:{...l(f,r),...i.paths},components:{...i.components,schemas:{...c.components,...i.components?.schemas}}}}}function w(n){const{validateResponse:s,...o}=n;return Object.assign((async(e,o)=>{if(await o(),s&&n.responses){const o=e.res.status,a=e.res.headers.get(\"content-type\");if(o&&a){const r=n.responses[o];if(r&&\"content\"in r&&r.content){const n=a.split(\";\")[0],o=r.content[n];if(o?.schema&&\"validator\"in o.schema)try{let t;const s=e.res.clone();if(\"application/json\"===n?t=await s.json():\"text/plain\"===n&&(t=await s.text()),!t)throw new Error(\"No data to validate!\");await o.schema.validator(t)}catch(e){let n={status:500,message:\"Response validation failed!\"};throw\"object\"==typeof s&&(n={...n,...s}),new t(n.status,{message:n.message,cause:e})}}}}}),{[e]:{resolver:(e,t)=>x(e,o,t)}})}async function x(e,t,n={}){let s={};const o={...n,...t,responses:{...n?.responses,...t.responses}};if(o.responses)for(const t of Object.keys(o.responses)){const n=o.responses[t];if(n&&\"content\"in n)for(const t of Object.keys(n.content??{})){const o=n.content?.[t];if(o&&(o.schema&&\"builder\"in o.schema)){const t=await o.schema.builder(e);o.schema=t.schema,t.components&&(s={...s,...t.components})}}}return{docs:o,components:s}}export{w as describeRoute,x as generateRouteSpecs,y as generateSpecs,h as openAPISpecs,e as uniqueSymbol};\n","import { randomUUID } from 'crypto';\nimport type { MessageSendParams, TaskQueryParams, TaskIdParams } from '@mastra/core/a2a';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport {\n getAgentCardByIdHandler as getOriginalAgentCardByIdHandler,\n getAgentExecutionHandler as getOriginalAgentExecutionHandler,\n} from '@mastra/server/handlers/a2a';\n\nimport type { Context } from 'hono';\nimport { stream } from 'hono/streaming';\n\nexport async function getAgentCardByIdHandler(c: Context) {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n\n const result = await getOriginalAgentCardByIdHandler({\n mastra,\n agentId,\n requestContext,\n });\n\n return c.json(result);\n}\n\nexport async function getAgentExecutionHandler(c: Context) {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const taskStore: InMemoryTaskStore = c.get('taskStore');\n const logger = mastra.getLogger();\n const body = await c.req.json();\n\n // Validate the method is one of the allowed A2A methods\n if (!['message/send', 'message/stream', 'tasks/get', 'tasks/cancel'].includes(body.method)) {\n return c.json({ error: { message: `Unsupported method: ${body.method}`, code: 'invalid_method' } }, 400);\n }\n\n const result = await getOriginalAgentExecutionHandler({\n mastra,\n agentId,\n requestContext,\n requestId: randomUUID(),\n method: body.method as 'message/send' | 'message/stream' | 'tasks/get' | 'tasks/cancel',\n params: body.params as MessageSendParams | TaskQueryParams | TaskIdParams,\n taskStore,\n logger,\n });\n\n if (body.method === 'message/stream') {\n return stream(\n c,\n async stream => {\n try {\n stream.onAbort(() => {\n if (!result.locked) {\n return result.cancel();\n }\n });\n\n for await (const chunk of result) {\n await stream.write(JSON.stringify(chunk) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in message/stream stream: ' + (err as Error)?.message);\n }\n },\n async err => {\n logger.error('Error in message/stream stream: ' + (err as Error)?.message);\n },\n );\n }\n\n return c.json(result);\n}\n","import type { MastraAuthConfig } from '@mastra/core/server';\n\n// Default configuration that can be extended by clients\nexport const defaultAuthConfig: MastraAuthConfig = {\n protected: ['/api/*'],\n public: ['/api'],\n // Simple rule system\n rules: [\n // Admin users can do anything\n {\n condition: user => {\n if (typeof user === 'object' && user !== null) {\n if ('isAdmin' in user) {\n return !!user.isAdmin;\n }\n\n if ('role' in user) {\n return user.role === 'admin';\n }\n }\n return false;\n },\n allow: true,\n },\n ],\n};\n","import type { MastraAuthConfig } from '@mastra/core/server';\nimport type { HonoRequest } from 'hono';\nimport { defaultAuthConfig } from './defaults';\n\nexport const isDevPlaygroundRequest = (req: HonoRequest): boolean => {\n return req.header('x-mastra-dev-playground') === 'true' && process.env.MASTRA_DEV === 'true';\n};\n\nexport const isCustomRoutePublic = (\n path: string,\n method: string,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n if (!customRouteAuthConfig) {\n return false;\n }\n\n // Check exact match first\n const routeKey = `${method}:${path}`;\n if (customRouteAuthConfig.has(routeKey)) {\n return !customRouteAuthConfig.get(routeKey); // True when route opts out of auth\n }\n\n // Check ALL method\n const allRouteKey = `ALL:${path}`;\n if (customRouteAuthConfig.has(allRouteKey)) {\n return !customRouteAuthConfig.get(allRouteKey);\n }\n\n return false;\n};\n\nexport const isProtectedPath = (\n path: string,\n method: string,\n authConfig: MastraAuthConfig,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n const protectedAccess = [...(defaultAuthConfig.protected || []), ...(authConfig.protected || [])];\n return isAnyMatch(path, method, protectedAccess) || !isCustomRoutePublic(path, method, customRouteAuthConfig);\n};\n\nexport const canAccessPublicly = (path: string, method: string, authConfig: MastraAuthConfig): boolean => {\n // Check if this path+method combination is publicly accessible\n const publicAccess = [...(defaultAuthConfig.public || []), ...(authConfig.public || [])];\n\n return isAnyMatch(path, method, publicAccess);\n};\n\nconst isAnyMatch = (\n path: string,\n method: string,\n patterns: MastraAuthConfig['protected'] | MastraAuthConfig['public'],\n): boolean => {\n if (!patterns) {\n return false;\n }\n\n for (const patternPathOrMethod of patterns) {\n if (patternPathOrMethod instanceof RegExp) {\n if (patternPathOrMethod.test(path)) {\n return true;\n }\n }\n\n if (typeof patternPathOrMethod === 'string' && pathMatchesPattern(path, patternPathOrMethod)) {\n return true;\n }\n\n if (Array.isArray(patternPathOrMethod) && patternPathOrMethod.length === 2) {\n const [pattern, methodOrMethods] = patternPathOrMethod;\n if (pathMatchesPattern(path, pattern) && matchesOrIncludes(methodOrMethods, method)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nexport const pathMatchesPattern = (path: string, pattern: string): boolean => {\n // Simple pattern matching that supports wildcards\n // e.g., '/api/agents/*' matches '/api/agents/123'\n if (pattern.endsWith('*')) {\n const prefix = pattern.slice(0, -1);\n return path.startsWith(prefix);\n }\n return path === pattern;\n};\n\nexport const pathMatchesRule = (path: string, rulePath: string | RegExp | string[] | undefined): boolean => {\n if (!rulePath) return true; // No path specified means all paths\n\n if (typeof rulePath === 'string') {\n return pathMatchesPattern(path, rulePath);\n }\n\n if (rulePath instanceof RegExp) {\n return rulePath.test(path);\n }\n\n if (Array.isArray(rulePath)) {\n return rulePath.some(p => pathMatchesPattern(path, p));\n }\n\n return false;\n};\n\nexport const matchesOrIncludes = (values: string | string[], value: string): boolean => {\n if (typeof values === 'string') {\n return values === value;\n }\n\n if (Array.isArray(values)) {\n return values.includes(value);\n }\n\n return false;\n};\n\n// Check authorization rules\nexport const checkRules = async (\n rules: MastraAuthConfig['rules'],\n path: string,\n method: string,\n user: unknown,\n): Promise<boolean> => {\n // Go through rules in order (first match wins)\n for (const i in rules || []) {\n const rule = rules?.[i]!;\n // Check if rule applies to this path\n if (!pathMatchesRule(path, rule.path)) {\n continue;\n }\n\n // Check if rule applies to this method\n if (rule.methods && !matchesOrIncludes(rule.methods, method)) {\n continue;\n }\n\n // Rule matches, check conditions\n const condition = rule.condition;\n if (typeof condition === 'function') {\n const allowed = await Promise.resolve()\n .then(() => condition(user))\n .catch(() => false);\n\n if (allowed) {\n return true;\n }\n } else if (rule.allow) {\n return true;\n }\n }\n\n // No matching rules, deny by default\n return false;\n};\n","import type { ContextWithMastra } from '@mastra/core/server';\nimport type { Next } from 'hono';\nimport { defaultAuthConfig } from './defaults';\nimport { canAccessPublicly, checkRules, isProtectedPath, isDevPlaygroundRequest } from './helpers';\n\nexport const authenticationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authentication\n return next();\n }\n\n if (isDevPlaygroundRequest(c.req)) {\n // Skip authentication for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip authentication for public routes\n if (canAccessPublicly(c.req.path, c.req.method, authConfig)) {\n return next();\n }\n\n // Get token from header or query\n const authHeader = c.req.header('Authorization');\n let token: string | null = authHeader ? authHeader.replace('Bearer ', '') : null;\n\n if (!token && c.req.query('apiKey')) {\n token = c.req.query('apiKey') || null;\n }\n\n // Handle missing token\n if (!token) {\n return c.json({ error: 'Authentication required' }, 401);\n }\n\n try {\n // Verify token and get user data\n let user: unknown;\n\n // Client provided verify function\n if (typeof authConfig.authenticateToken === 'function') {\n user = await authConfig.authenticateToken(token, c.req);\n } else {\n throw new Error('No token verification method configured');\n }\n\n if (!user) {\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n\n // Store user in context\n c.get('requestContext').set('user', user);\n\n return next();\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n};\n\nexport const authorizationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authorization\n return next();\n }\n\n const path = c.req.path;\n const method = c.req.method;\n\n if (isDevPlaygroundRequest(c.req)) {\n // Skip authorization for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip for public routes\n if (canAccessPublicly(path, method, authConfig)) {\n return next();\n }\n\n const user = c.get('requestContext').get('user');\n\n if ('authorizeUser' in authConfig && typeof authConfig.authorizeUser === 'function') {\n try {\n const isAuthorized = await authConfig.authorizeUser(user, c.req);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Client-provided authorization function\n if ('authorize' in authConfig && typeof authConfig.authorize === 'function') {\n try {\n const isAuthorized = await authConfig.authorize(path, method, user, c);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Custom rule-based authorization\n if ('rules' in authConfig && authConfig.rules && authConfig.rules.length > 0) {\n const isAuthorized = await checkRules(authConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n }\n\n // Default rule-based authorization\n if (defaultAuthConfig.rules && defaultAuthConfig.rules.length > 0) {\n const isAuthorized = await checkRules(defaultAuthConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n }\n\n return c.json({ error: 'Access denied' }, 403);\n};\n","import type { Context } from 'hono';\n\nconst clients = new Set<ReadableStreamDefaultController>();\nlet hotReloadDisabled = false;\n\nexport function handleClientsRefresh(c: Context): Response {\n const stream = new ReadableStream({\n start(controller) {\n clients.add(controller);\n controller.enqueue('data: connected\\n\\n');\n\n c.req.raw.signal.addEventListener('abort', () => {\n clients.delete(controller);\n });\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'Access-Control-Allow-Origin': '*',\n },\n });\n}\n\nexport function handleTriggerClientsRefresh(c: Context) {\n clients.forEach(controller => {\n try {\n controller.enqueue('data: refresh\\n\\n');\n } catch {\n clients.delete(controller);\n }\n });\n return c.json({ success: true, clients: clients.size });\n}\n\n// Functions to control hot reload during template installation\nexport function disableHotReload() {\n hotReloadDisabled = true;\n console.info('🔒 Hot reload disabled for template installation');\n}\n\nexport function enableHotReload() {\n hotReloadDisabled = false;\n console.info('🔓 Hot reload re-enabled after template installation');\n}\n\nexport function isHotReloadDisabled(): boolean {\n return hotReloadDisabled;\n}\n","import type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\nimport type { ContentfulStatusCode } from 'hono/utils/http-status';\n\nimport type { ApiError } from '../types';\n\n// Helper to handle errors consistently\nexport function handleError(error: unknown, defaultMessage: string): Promise<Response> {\n const apiError = error as ApiError;\n throw new HTTPException((apiError.status || 500) as ContentfulStatusCode, {\n message: apiError.message || defaultMessage,\n cause: apiError.cause,\n });\n}\nexport function errorHandler(err: Error, c: Context, isDev?: boolean): Response {\n if (err instanceof HTTPException) {\n if (isDev) {\n return c.json({ error: err.message, cause: err.cause, stack: err.stack }, err.status);\n }\n return c.json({ error: err.message }, err.status);\n }\n\n c.get('mastra').getLogger().error(err);\n return c.json({ error: 'Internal Server Error' }, 500);\n}\n","import type { Context } from 'hono';\n\n// Health check handler\nexport async function healthHandler(c: Context) {\n return c.json({ success: true }, 200);\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { Context } from 'hono';\n\nimport { handleError } from './error';\n\nexport async function restartAllActiveWorkflowRunsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n void mastra.restartAllActiveWorkflowRuns();\n\n return c.json({ message: 'Restarting all active workflow runs...' });\n } catch (error) {\n return handleError(error, 'Error restarting active workflow runs');\n }\n}\n","import type { Context } from 'hono';\n\n// Root handler\nexport async function rootHandler(c: Context) {\n const baseUrl = new URL(c.req.url).origin;\n\n return c.html(\n /* html */\n `\n <!doctype html>\n <html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Mastra API</title>\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/inter-ui/3.19.3/inter.min.css\" />\n <style>\n body {\n margin: 0;\n padding: 0;\n background-color: #0d0d0d;\n color: #ffffff;\n font-family:\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n system-ui,\n sans-serif;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n main {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n text-align: center;\n }\n\n h1 {\n font-size: 4rem;\n font-weight: 600;\n margin: 0 0 1rem 0;\n background: linear-gradient(to right, #fff, #ccc);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n line-height: 1.2;\n }\n\n .subtitle {\n color: #9ca3af;\n font-size: 1.25rem;\n max-width: 600px;\n margin: 0 auto 3rem auto;\n line-height: 1.6;\n }\n\n .link {\n color: #ffffff;\n }\n\n .link:hover {\n text-decoration: none;\n }\n\n .docs-link {\n background-color: #1a1a1a;\n padding: 1rem 2rem;\n border-radius: 0.5rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n font-family: monospace;\n font-size: 1rem;\n color: #ffffff;\n text-decoration: none;\n transition: background-color 0.2s;\n }\n\n .docs-link:hover {\n background-color: #252525;\n }\n\n .arrow-icon {\n transition: transform 0.2s;\n }\n\n .docs-link:hover .arrow-icon {\n transform: translateX(4px);\n }\n </style>\n </head>\n <body>\n <main>\n <h1>Welcome to the Mastra API</h1>\n <p class=\"subtitle\">\n Discover all available endpoints through Swagger UI. You can also define your own <a href=\"https://mastra.ai/docs/server-db/custom-api-routes\" target=\"_blank\" class=\"link\">API routes</a>.\n </p>\n <a href=\"${baseUrl}/swagger-ui\" target=\"_blank\" class=\"docs-link\">\n Browse Swagger UI\n <svg\n class=\"arrow-icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\n </svg>\n </a>\n </main>\n </body>\n </html>\n `,\n );\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport {\n getAgentBuilderActionsHandler as getOriginalAgentBuilderActionsHandler,\n getAgentBuilderActionByIdHandler as getOriginalAgentBuilderActionByIdHandler,\n startAsyncAgentBuilderActionHandler as getOriginalStartAsyncAgentBuilderActionHandler,\n createAgentBuilderActionRunHandler as getOriginalCreateAgentBuilderActionRunHandler,\n startAgentBuilderActionRunHandler as getOriginalStartAgentBuilderActionRunHandler,\n streamAgentBuilderActionHandler as getOriginalStreamAgentBuilderActionHandler,\n streamLegacyAgentBuilderActionHandler as getOriginalStreamLegacyAgentBuilderActionHandler,\n streamVNextAgentBuilderActionHandler as getOriginalStreamVNextAgentBuilderActionHandler,\n observeStreamLegacyAgentBuilderActionHandler as getOriginalObserveStreamLegacyAgentBuilderActionHandler,\n observeStreamAgentBuilderActionHandler as getOriginalObserveStreamAgentBuilderActionHandler,\n observeStreamVNextAgentBuilderActionHandler as getOriginalObserveStreamVNextAgentBuilderActionHandler,\n resumeAsyncAgentBuilderActionHandler as getOriginalResumeAsyncAgentBuilderActionHandler,\n resumeAgentBuilderActionHandler as getOriginalResumeAgentBuilderActionHandler,\n resumeStreamAgentBuilderActionHandler as getOriginalResumeStreamAgentBuilderActionHandler,\n getAgentBuilderActionRunsHandler as getOriginalGetAgentBuilderActionRunsHandler,\n getAgentBuilderActionRunByIdHandler as getOriginalGetAgentBuilderActionRunByIdHandler,\n getAgentBuilderActionRunExecutionResultHandler as getOriginalGetAgentBuilderActionRunExecutionResultHandler,\n cancelAgentBuilderActionRunHandler as getOriginalCancelAgentBuilderActionRunHandler,\n} from '@mastra/server/handlers/agent-builder';\nimport type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\nimport { stream } from 'hono/streaming';\n\nimport { disableHotReload, enableHotReload } from '../../client';\nimport { handleError } from '../../error';\n\nexport async function getAgentBuilderActionsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n\n const actions = await getOriginalAgentBuilderActionsHandler({\n mastra,\n });\n\n return c.json(actions);\n } catch (error) {\n return handleError(error, 'Error getting agent builder actions');\n }\n}\n\nexport async function getAgentBuilderActionByIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n\n const action = await getOriginalAgentBuilderActionByIdHandler({\n mastra,\n actionId,\n });\n\n return c.json(action);\n } catch (error) {\n return handleError(error, 'Error getting agent builder action by ID');\n }\n}\n\nexport async function createAgentBuilderActionRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n\n const result = await getOriginalCreateAgentBuilderActionRunHandler({\n mastra,\n actionId,\n runId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error creating agent builder action run');\n }\n}\n\nexport async function startAsyncAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const actionId = c.req.param('actionId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n disableHotReload();\n const result = await getOriginalStartAsyncAgentBuilderActionHandler({\n mastra,\n requestContext,\n actionId,\n runId,\n inputData,\n tracingOptions,\n });\n\n enableHotReload();\n return c.json(result);\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error starting async agent builder action');\n }\n}\n\nexport async function startAgentBuilderActionRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const actionId = c.req.param('actionId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n await getOriginalStartAgentBuilderActionRunHandler({\n mastra,\n requestContext,\n actionId,\n runId,\n inputData,\n tracingOptions,\n });\n\n return c.json({ message: 'Agent builder action run started' });\n } catch (error) {\n return handleError(error, 'Error starting agent builder action run');\n }\n}\n\nexport async function streamAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n return stream(\n c,\n async stream => {\n try {\n disableHotReload();\n const result = await getOriginalStreamAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n inputData,\n requestContext,\n tracingOptions,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in action stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n await stream.close();\n enableHotReload();\n },\n async err => {\n logger.error('Error in action stream: ' + err?.message);\n },\n );\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error streaming agent builder action');\n }\n}\n\nexport async function streamVNextAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const { inputData, closeOnSuspend, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n disableHotReload();\n const result = await getOriginalStreamVNextAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n inputData,\n requestContext,\n closeOnSuspend,\n tracingOptions,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in action VNext stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n enableHotReload();\n },\n async err => {\n logger.error('Error in action VNext stream: ' + err?.message);\n },\n );\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error streaming VNext agent builder action');\n }\n}\n\nexport async function resumeAsyncAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to resume action' });\n }\n\n disableHotReload();\n const result = await getOriginalResumeAsyncAgentBuilderActionHandler({\n mastra,\n requestContext,\n actionId,\n runId,\n body: { step, resumeData },\n tracingOptions,\n });\n\n enableHotReload();\n return c.json(result);\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error resuming async agent builder action');\n }\n}\n\nexport async function resumeAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to resume action' });\n }\n\n disableHotReload();\n await getOriginalResumeAgentBuilderActionHandler({\n mastra,\n requestContext,\n actionId,\n runId,\n body: { step, resumeData },\n tracingOptions,\n });\n\n enableHotReload();\n return c.json({ message: 'Action run resumed' });\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error resuming agent builder action');\n }\n}\n\nexport async function getAgentBuilderActionRunsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n const queryParams = c.req.query();\n const { fromDate, toDate, perPage, page, resourceId } = queryParams;\n\n const runs = await getOriginalGetAgentBuilderActionRunsHandler({\n mastra,\n actionId,\n fromDate: fromDate ? new Date(fromDate) : undefined,\n toDate: toDate ? new Date(toDate) : undefined,\n perPage: perPage !== null && perPage !== undefined && !isNaN(Number(perPage)) ? Number(perPage) : undefined,\n page: page !== null && page !== undefined && !isNaN(Number(page)) ? Number(page) : undefined,\n resourceId,\n });\n\n return c.json(runs);\n } catch (error) {\n return handleError(error, 'Error getting agent builder action runs');\n }\n}\n\nexport async function getAgentBuilderActionRunByIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n const runId = c.req.param('runId');\n\n const run = await getOriginalGetAgentBuilderActionRunByIdHandler({\n mastra,\n actionId,\n runId,\n });\n\n return c.json(run);\n } catch (error) {\n return handleError(error, 'Error getting agent builder action run by ID');\n }\n}\n\nexport async function getAgentBuilderActionRunExecutionResultHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n const runId = c.req.param('runId');\n\n const result = await getOriginalGetAgentBuilderActionRunExecutionResultHandler({\n mastra,\n actionId,\n runId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting agent builder action run execution result');\n }\n}\n\nexport async function cancelAgentBuilderActionRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const actionId = c.req.param('actionId');\n const runId = c.req.param('runId');\n\n const result = await getOriginalCancelAgentBuilderActionRunHandler({\n mastra,\n actionId,\n runId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error cancelling agent builder action run');\n }\n}\n\nexport async function streamLegacyAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n return stream(\n c,\n async stream => {\n try {\n disableHotReload();\n const result = await getOriginalStreamLegacyAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n inputData,\n requestContext,\n tracingOptions,\n });\n\n const reader = result?.stream?.getReader();\n\n if (!reader) {\n throw new Error('No reader available from legacy stream');\n }\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in action legacy stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n await stream.close();\n enableHotReload();\n },\n async err => {\n logger.error('Error in action legacy stream: ' + err?.message);\n },\n );\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error streaming legacy agent builder action');\n }\n}\n\nexport async function observeStreamLegacyAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to observe stream' });\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(c, async stream => {\n try {\n disableHotReload();\n const result = await getOriginalObserveStreamLegacyAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n });\n\n const reader = result?.getReader();\n\n if (!reader) {\n throw new Error('No reader available from observe stream');\n }\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n enableHotReload();\n } catch (err) {\n enableHotReload();\n logger.error('Error in observe legacy stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n });\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error observing legacy stream for agent builder action');\n }\n}\n\nexport async function observeStreamAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to observe stream' });\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(c, async stream => {\n try {\n disableHotReload();\n const result = await getOriginalObserveStreamAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n });\n\n const reader = result?.getReader();\n\n if (!reader) {\n throw new Error('No reader available from observe stream');\n }\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n enableHotReload();\n } catch (err) {\n enableHotReload();\n logger.error('Error in observe stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n });\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error observing stream for agent builder action');\n }\n}\n\nexport async function observeStreamVNextAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to observe stream' });\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(c, async stream => {\n try {\n disableHotReload();\n const result = await getOriginalObserveStreamVNextAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n });\n\n const reader = result?.getReader();\n\n if (!reader) {\n throw new Error('No reader available from observe stream VNext');\n }\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n enableHotReload();\n } catch (err) {\n enableHotReload();\n logger.error('Error in observe VNext stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n });\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error observing VNext stream for agent builder action');\n }\n}\n\nexport async function resumeStreamAgentBuilderActionHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const actionId = c.req.param('actionId');\n const runId = c.req.query('runId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to resume stream' });\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n disableHotReload();\n const result = await getOriginalResumeStreamAgentBuilderActionHandler({\n mastra,\n actionId,\n runId,\n requestContext,\n body: { step, resumeData },\n tracingOptions,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in resume stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n enableHotReload();\n },\n async err => {\n logger.error('Error in resume stream: ' + err?.message);\n },\n );\n } catch (error) {\n enableHotReload();\n return handleError(error, 'Error resuming stream for agent builder action');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport {\n createAgentBuilderActionRunHandler,\n getAgentBuilderActionByIdHandler,\n getAgentBuilderActionRunByIdHandler,\n getAgentBuilderActionRunExecutionResultHandler,\n getAgentBuilderActionRunsHandler,\n getAgentBuilderActionsHandler,\n resumeAgentBuilderActionHandler,\n resumeAsyncAgentBuilderActionHandler,\n resumeStreamAgentBuilderActionHandler,\n startAgentBuilderActionRunHandler,\n startAsyncAgentBuilderActionHandler,\n streamAgentBuilderActionHandler,\n streamLegacyAgentBuilderActionHandler,\n streamVNextAgentBuilderActionHandler,\n observeStreamLegacyAgentBuilderActionHandler,\n observeStreamAgentBuilderActionHandler,\n observeStreamVNextAgentBuilderActionHandler,\n cancelAgentBuilderActionRunHandler,\n} from './handlers';\n\nexport function agentBuilderRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n // Agent builder routes\n router.get(\n '/',\n describeRoute({\n description: 'Get all agent builder actions',\n tags: ['agent-builder'],\n responses: {\n 200: {\n description: 'List of all agent builder actions',\n },\n },\n }),\n getAgentBuilderActionsHandler,\n );\n\n router.get(\n '/:actionId',\n describeRoute({\n description: 'Get agent builder action by ID',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Agent builder action details',\n },\n 404: {\n description: 'Agent builder action not found',\n },\n },\n }),\n getAgentBuilderActionByIdHandler,\n );\n\n router.get(\n '/:actionId/runs',\n describeRoute({\n description: 'Get all runs for an agent builder action',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n { name: 'fromDate', in: 'query', required: false, schema: { type: 'string', format: 'date-time' } },\n { name: 'toDate', in: 'query', required: false, schema: { type: 'string', format: 'date-time' } },\n { name: 'limit', in: 'query', required: false, schema: { type: 'number' } },\n { name: 'offset', in: 'query', required: false, schema: { type: 'number' } },\n { name: 'resourceId', in: 'query', required: false, schema: { type: 'string' } },\n ],\n responses: {\n 200: {\n description: 'List of agent builder action runs from storage',\n },\n },\n }),\n getAgentBuilderActionRunsHandler,\n );\n\n router.get(\n '/:actionId/runs/:runId/execution-result',\n describeRoute({\n description: 'Get execution result for an agent builder action run',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Agent builder action run execution result',\n },\n 404: {\n description: 'Agent builder action run execution result not found',\n },\n },\n }),\n getAgentBuilderActionRunExecutionResultHandler,\n );\n\n router.get(\n '/:actionId/runs/:runId',\n describeRoute({\n description: 'Get agent builder action run by ID',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Agent builder action run by ID',\n },\n 404: {\n description: 'Agent builder action run not found',\n },\n },\n }),\n getAgentBuilderActionRunByIdHandler,\n );\n\n router.post(\n '/:actionId/resume',\n describeRoute({\n description: 'Resume a suspended agent builder action step',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n }),\n resumeAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/resume-async',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Resume a suspended agent builder action step',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n }),\n resumeAsyncAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/resume-stream',\n describeRoute({\n description: 'Resume a suspended agent builder action that uses streamVNext',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['step'],\n },\n },\n },\n },\n }),\n resumeStreamAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/stream-legacy',\n describeRoute({\n description: 'Stream legacy agent builder action in real-time',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'agent builder action run started',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n streamLegacyAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/observe-stream-legacy',\n describeRoute({\n description: 'Observe agent builder action stream in real-time',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'agent builder action stream observed',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n observeStreamLegacyAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/stream',\n describeRoute({\n description: 'Stream agent builder action in real-time',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'agent builder action run started',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n streamAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/observe',\n describeRoute({\n description: 'Observe agent builder action stream in real-time using the streaming API',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'agent builder action stream observed',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n observeStreamAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/observe-streamVNext',\n describeRoute({\n description: 'Observe agent builder action stream in real-time using the VNext streaming API',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'agent builder action stream vNext observed',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n observeStreamVNextAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/streamVNext',\n describeRoute({\n description: 'Stream agent builder action in real-time using the VNext streaming API',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n closeOnSuspend: {\n type: 'boolean',\n description: 'Close the stream on suspend',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'agent builder action run started',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n tags: ['agent-builder'],\n }),\n streamVNextAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/create-run',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Create a new agent builder action run',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'New agent builder action run created',\n },\n },\n }),\n createAgentBuilderActionRunHandler,\n );\n\n router.post(\n '/:actionId/start-async',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute/Start an agent builder action',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'agent builder action execution result',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n }),\n startAsyncAgentBuilderActionHandler,\n );\n\n router.post(\n '/:actionId/start',\n describeRoute({\n description: 'Create and start a new agent builder action run',\n tags: ['agent-builder'],\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the agent builder action execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the action execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'agent builder action run started',\n },\n 404: {\n description: 'agent builder action not found',\n },\n },\n }),\n startAgentBuilderActionRunHandler,\n );\n\n router.post(\n '/:actionId/runs/:runId/cancel',\n describeRoute({\n description: 'Cancel an agent builder action run',\n parameters: [\n {\n name: 'actionId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n tags: ['agent-builder'],\n responses: {\n 200: {\n description: 'agent builder action run cancelled',\n },\n },\n }),\n cancelAgentBuilderActionRunHandler,\n );\n\n return router;\n}\n","import { Agent } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { Context } from 'hono';\nimport { z } from 'zod';\n\nimport { handleError } from './error';\n\nexport async function generateSystemPromptHandler(c: Context) {\n try {\n // Check if this is a playground request\n const agentId = c.req.param('agentId');\n const isPlayground = c.get('playground') === true;\n if (!isPlayground) {\n return c.json({ error: 'This API is only available in the playground environment' }, 403);\n }\n\n const { instructions, comment } = await c.req.json();\n\n if (!instructions) {\n return c.json({ error: 'Missing instructions in request body' }, 400);\n }\n\n const mastra: Mastra<any> = c.get('mastra');\n const agent: Agent<any> = mastra.getAgent(agentId);\n\n if (!agent) {\n return c.json({ error: 'Agent not found' }, 404);\n }\n\n const ENHANCE_SYSTEM_PROMPT_INSTRUCTIONS = `\n You are an expert system prompt engineer, specialized in analyzing and enhancing instructions to create clear, effective, and comprehensive system prompts. Your goal is to help users transform their basic instructions into well-structured system prompts that will guide AI behavior effectively.\n Follow these steps to analyze and enhance the instructions:\n 1. ANALYSIS PHASE\n - Identify the core purpose and goals\n - Extract key constraints and requirements\n - Recognize domain-specific terminology and concepts\n - Note any implicit assumptions that should be made explicit\n 2. PROMPT STRUCTURE\n Create a system prompt with these components:\n a) ROLE DEFINITION\n - Clear statement of the AI's role and purpose\n - Key responsibilities and scope\n - Primary stakeholders and users\n b) CORE CAPABILITIES\n - Main functions and abilities\n - Specific domain knowledge required\n - Tools and resources available\n c) BEHAVIORAL GUIDELINES\n - Communication style and tone\n - Decision-making framework\n - Error handling approach\n - Ethical considerations\n d) CONSTRAINTS & BOUNDARIES\n - Explicit limitations\n - Out-of-scope activities\n - Security and privacy considerations\n e) SUCCESS CRITERIA\n - Quality standards\n - Expected outcomes\n - Performance metrics\n 3. QUALITY CHECKS\n Ensure the prompt is:\n - Clear and unambiguous\n - Comprehensive yet concise\n - Properly scoped\n - Technically accurate\n - Ethically sound\n 4. OUTPUT FORMAT\n Return a structured response with:\n - Enhanced system prompt\n - Analysis of key components\n - Identified goals and constraints\n - Core domain concepts\n Remember: A good system prompt should be specific enough to guide behavior but flexible enough to handle edge cases. \n Focus on creating prompts that are clear, actionable, and aligned with the intended use case.\n `;\n\n const systemPromptAgent = new Agent({\n id: 'system-prompt-enhancer',\n name: 'system-prompt-enhancer',\n instructions: ENHANCE_SYSTEM_PROMPT_INSTRUCTIONS,\n model: await agent.getModel(),\n });\n\n const result = await systemPromptAgent.generate(\n `\n We need to improve the system prompt. \n Current: ${instructions}\n ${comment ? `User feedback: ${comment}` : ''}\n `,\n {\n structuredOutput: {\n schema: z.object({\n new_prompt: z.string(),\n explanation: z.string(),\n }),\n },\n },\n );\n\n return c.json(result?.object || {});\n } catch (error) {\n return handleError(error, 'Error generating system prompt');\n }\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport {\n listToolsHandler as getOriginalToolsHandler,\n getToolByIdHandler as getOriginalToolByIdHandler,\n executeToolHandler as getOriginalExecuteToolHandler,\n executeAgentToolHandler as getOriginalExecuteAgentToolHandler,\n getAgentToolHandler as getOriginalAgentToolHandler,\n} from '@mastra/server/handlers/tools';\nimport type { Context } from 'hono';\n\nimport { handleError } from '../../error';\n\n// Tool handlers\nexport async function listToolsHandler(c: Context) {\n try {\n const tools = c.get('tools');\n\n const result = await getOriginalToolsHandler({\n tools,\n });\n\n return c.json(result || {});\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n}\n\nexport async function getToolByIdHandler(c: Context) {\n try {\n const tools = c.get('tools');\n const toolId = c.req.param('toolId');\n\n const result = await getOriginalToolByIdHandler({\n tools,\n toolId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n}\n\nexport function executeToolHandler(tools: Record<string, any>) {\n return async (c: Context) => {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const toolId = decodeURIComponent(c.req.param('toolId'));\n const runId = c.req.query('runId');\n const { data } = await c.req.json();\n\n const result = await getOriginalExecuteToolHandler(tools)({\n mastra,\n toolId,\n data,\n requestContext,\n runId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n };\n}\n\nexport async function getAgentToolHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const agentId = c.req.param('agentId');\n const toolId = c.req.param('toolId');\n\n const result = await getOriginalAgentToolHandler({\n mastra,\n agentId,\n toolId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n}\n\nexport async function executeAgentToolHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const agentId = c.req.param('agentId');\n const toolId = c.req.param('toolId');\n const { data } = await c.req.json();\n\n const result = await getOriginalExecuteAgentToolHandler({\n mastra,\n agentId,\n toolId,\n data,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n}\n","import { ErrorCategory, ErrorDomain, getErrorFromUnknown, MastraError } from '@mastra/core/error';\nimport { getProviderConfig, PROVIDER_REGISTRY } from '@mastra/core/llm';\nimport type { ProviderConfig } from '@mastra/core/llm';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { ChunkType } from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport {\n listAgentsHandler as getOriginalListAgentsHandler,\n getAgentByIdHandler as getOriginalAgentByIdHandler,\n generateHandler as getOriginalGenerateHandler,\n streamGenerateHandler as getOriginalStreamGenerateHandler,\n updateAgentModelHandler as getOriginalUpdateAgentModelHandler,\n resetAgentModelHandler as getOriginalResetAgentModelHandler,\n streamUIMessageHandler as getOriginalStreamUIMessageHandler,\n generateLegacyHandler as getOriginalGenerateLegacyHandler,\n streamGenerateLegacyHandler as getOriginalStreamGenerateLegacyHandler,\n reorderAgentModelListHandler as getOriginalReorderAgentModelListHandler,\n updateAgentModelInModelListHandler as getOriginalUpdateAgentModelInModelListHandler,\n streamNetworkHandler as getOriginalStreamNetworkHandler,\n approveToolCallHandler as getOriginalApproveToolCallHandler,\n declineToolCallHandler as getOriginalDeclineToolCallHandler,\n getAgentFromSystem as getOriginalGetAgentFromSystem,\n} from '@mastra/server/handlers/agents';\nimport type { Context } from 'hono';\n\nimport { stream } from 'hono/streaming';\nimport { handleError } from '../../error';\n\nexport const sharedBodyOptions: any = {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n runId: { type: 'string' },\n memory: {\n type: 'object',\n properties: {\n thread: { type: 'string' },\n resource: { type: 'string', description: 'The resource ID for the conversation' },\n options: { type: 'object', description: 'Memory configuration options' },\n },\n description: 'Memory options for the conversation',\n },\n modelSettings: {\n type: 'object',\n properties: {\n maxTokens: { type: 'number', description: 'Maximum number of tokens to generate' },\n temperature: { type: 'number', minimum: 0, maximum: 1, description: 'Temperature setting for randomness (0-1)' },\n topP: { type: 'number', minimum: 0, maximum: 1, description: 'Nucleus sampling (0-1)' },\n topK: { type: 'number', description: 'Only sample from the top K options for each subsequent token' },\n presencePenalty: { type: 'number', minimum: -1, maximum: 1, description: 'Presence penalty (-1 to 1)' },\n frequencyPenalty: { type: 'number', minimum: -1, maximum: 1, description: 'Frequency penalty (-1 to 1)' },\n stopSequences: { type: 'array', items: { type: 'string' }, description: 'Stop sequences for text generation' },\n seed: { type: 'number', description: 'Seed for deterministic results' },\n maxRetries: { type: 'number', description: 'Maximum number of retries' },\n headers: { type: 'object', description: 'Additional HTTP headers' },\n },\n description: 'Model settings for generation',\n },\n};\n\n// @TODO: TYPED OPTIONS\nexport const vNextBodyOptions: any = {\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n output: { type: 'object' },\n instructions: { type: 'string', description: \"Optional instructions to override the agent's default instructions\" },\n context: {\n type: 'array',\n items: { type: 'object' },\n description: 'Additional context messages to include',\n },\n savePerStep: { type: 'boolean', description: 'Whether to save messages incrementally on step finish' },\n toolChoice: {\n oneOf: [\n { type: 'string', enum: ['auto', 'none', 'required'] },\n { type: 'object', properties: { type: { type: 'string' }, toolName: { type: 'string' } } },\n ],\n description: 'Controls how tools are selected during generation',\n },\n format: { type: 'string', enum: ['mastra', 'aisdk'], description: 'Response format' },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n ...sharedBodyOptions,\n};\n\n// Agent handlers\nexport async function listAgentsHandler(c: Context) {\n const serializedAgents = await getOriginalListAgentsHandler({\n mastra: c.get('mastra'),\n requestContext: c.get('requestContext'),\n });\n\n return c.json(serializedAgents);\n}\n\nexport async function getProvidersHandler(c: Context) {\n try {\n const providers = [];\n\n // Check each provider in the registry\n for (const [providerId, config] of Object.entries(PROVIDER_REGISTRY as Record<string, ProviderConfig>)) {\n const hasApiKey = !!(typeof config.apiKeyEnvVar === `string`\n ? process.env[config.apiKeyEnvVar]\n : Array.isArray(config.apiKeyEnvVar)\n ? config.apiKeyEnvVar.every((k: string) => !!process.env[k])\n : false);\n\n const providerConfig = getProviderConfig(providerId);\n\n providers.push({\n id: providerId,\n name: config.name,\n envVar: config.apiKeyEnvVar,\n connected: hasApiKey,\n models: [...config.models], // Convert readonly array to mutable\n docUrl: providerConfig?.docUrl || null,\n });\n }\n\n return c.json({ providers });\n } catch (error) {\n return handleError(error, 'Error getting providers');\n }\n}\n\nexport async function getAgentByIdHandler(c: Context) {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const isPlayground = c.req.header('x-mastra-dev-playground') === 'true';\n\n const result = await getOriginalAgentByIdHandler({\n mastra,\n agentId,\n requestContext,\n isPlayground,\n });\n\n return c.json(result);\n}\n\nexport async function generateLegacyHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n\n const result = await getOriginalGenerateLegacyHandler({\n mastra,\n agentId,\n requestContext,\n body,\n abortSignal: c.req.raw.signal,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n}\n\nexport async function generateHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n\n const result = await getOriginalGenerateHandler({\n mastra,\n agentId,\n requestContext,\n body,\n abortSignal: c.req.raw.signal,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n}\n\nexport async function streamGenerateLegacyHandler(c: Context): Promise<Response | undefined> {\n try {\n const mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n\n const streamResponse = await getOriginalStreamGenerateLegacyHandler({\n mastra,\n agentId,\n requestContext,\n body,\n abortSignal: c.req.raw.signal,\n });\n\n return streamResponse;\n } catch (error) {\n return handleError(error, 'Error streaming from agent');\n }\n}\n\nexport async function streamGenerateHandler(c: Context): Promise<Response | undefined> {\n const mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n const logger = mastra.getLogger();\n\n let streamResponse;\n try {\n streamResponse = await getOriginalStreamGenerateHandler({\n mastra,\n agentId,\n requestContext,\n body,\n abortSignal: c.req.raw.signal,\n });\n } catch (err) {\n return handleError(err, 'Error streaming from agent');\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const reader = streamResponse.fullStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(`data: ${JSON.stringify(chunkResult.value)}\\n\\n`);\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (err) {\n logger.error('Error in stream generate: ' + ((err as Error)?.message ?? 'Unknown error'));\n\n const errorChunk: ChunkType = {\n type: 'error',\n from: ChunkFrom.AGENT,\n runId: body.runId || 'unknown',\n payload: {\n error: getErrorFromUnknown(err, { fallbackMessage: 'Unknown error in stream generate' }),\n },\n };\n\n await stream.write(`data: ${JSON.stringify(errorChunk)}\\n\\n`);\n }\n\n await stream.close();\n },\n async err => {\n logger.error('Error in watch stream: ' + err?.message);\n },\n );\n}\n\nexport async function approveToolCallHandler(c: Context): Promise<Response | undefined> {\n const mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n const logger = mastra.getLogger();\n\n let streamResponse;\n try {\n streamResponse = await getOriginalApproveToolCallHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal: c.req.raw.signal,\n });\n } catch (err) {\n return handleError(err, 'Error approving tool call');\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const reader = streamResponse.fullStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(`data: ${JSON.stringify(chunkResult.value)}\\n\\n`);\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (err) {\n logger.error('Error in approve tool call: ' + ((err as Error)?.message ?? 'Unknown error'));\n\n const errorChunk: ChunkType = {\n type: 'error',\n from: ChunkFrom.AGENT,\n runId: body.runId || 'unknown',\n payload: {\n error:\n err instanceof Error\n ? {\n message: err.message,\n name: err.name,\n stack: err.stack,\n }\n : String(err),\n },\n };\n\n await stream.write(`data: ${JSON.stringify(errorChunk)}\\n\\n`);\n }\n\n await stream.close();\n },\n async err => {\n logger.error('Error in watch stream: ' + err?.message);\n },\n );\n}\n\nexport async function declineToolCallHandler(c: Context): Promise<Response | undefined> {\n const mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n const logger = mastra.getLogger();\n\n let streamResponse;\n try {\n streamResponse = await getOriginalDeclineToolCallHandler({\n mastra,\n requestContext,\n agentId,\n body,\n abortSignal: c.req.raw.signal,\n });\n } catch (err) {\n return handleError(err, 'Error declining tool call');\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const reader = streamResponse.fullStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(`data: ${JSON.stringify(chunkResult.value)}\\n\\n`);\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (err) {\n logger.error('Error in decline tool call: ' + ((err as Error)?.message ?? 'Unknown error'));\n\n const errorChunk: ChunkType = {\n type: 'error',\n from: ChunkFrom.AGENT,\n runId: body.runId || 'unknown',\n payload: {\n error:\n err instanceof Error\n ? {\n message: err.message,\n name: err.name,\n stack: err.stack,\n }\n : String(err),\n },\n };\n\n await stream.write(`data: ${JSON.stringify(errorChunk)}\\n\\n`);\n }\n\n await stream.close();\n },\n async err => {\n logger.error('Error in watch stream: ' + err?.message);\n },\n );\n}\n\nexport async function streamNetworkHandler(c: Context) {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n const logger = mastra.getLogger();\n\n // Validate agent exists and has memory before starting stream\n const agent = await getOriginalGetAgentFromSystem({ mastra, agentId });\n\n // Check if agent has memory configured before starting the stream\n const memory = await agent.getMemory({ requestContext });\n\n if (!memory) {\n return handleError(\n new MastraError({\n id: 'AGENT_NETWORK_MEMORY_REQUIRED',\n domain: ErrorDomain.AGENT_NETWORK,\n category: ErrorCategory.USER,\n text: 'Memory is required for the agent network to function properly. Please configure memory for the agent.',\n details: {\n status: 400,\n },\n }),\n 'Memory required for agent network',\n );\n }\n\n let streamResponse;\n try {\n streamResponse = await getOriginalStreamNetworkHandler({\n mastra,\n agentId,\n requestContext,\n body,\n // abortSignal: c.req.raw.signal,\n });\n } catch (err) {\n return handleError(err, 'Error streaming from agent in network mode');\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const reader = streamResponse.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(`data: ${JSON.stringify(chunkResult.value)}\\n\\n`);\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (err) {\n logger.error('Error in streamNetwork generate: ' + ((err as Error)?.message ?? 'Unknown error'));\n\n const errorChunk: ChunkType = {\n type: 'error',\n from: ChunkFrom.AGENT,\n runId: body.runId || 'unknown',\n payload: {\n error:\n err instanceof Error\n ? {\n message: err.message,\n name: err.name,\n stack: err.stack,\n }\n : String(err),\n },\n };\n\n await stream.write(`data: ${JSON.stringify(errorChunk)}\\n\\n`);\n }\n\n await stream.close();\n },\n async err => {\n logger.error('Error in watch stream: ' + err?.message);\n },\n );\n}\n\nexport async function streamUIMessageHandler(c: Context): Promise<Response | undefined> {\n try {\n const mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext: RequestContext = c.get('requestContext');\n const body = await c.req.json();\n\n const streamResponse = await getOriginalStreamUIMessageHandler({\n mastra,\n agentId,\n requestContext,\n body,\n abortSignal: c.req.raw.signal,\n });\n\n return streamResponse;\n } catch (error) {\n return handleError(error, 'Error streaming ui message from agent');\n }\n}\n\nexport async function setAgentInstructionsHandler(c: Context) {\n try {\n // Check if this is a playground request\n const isPlayground = c.get('playground') === true;\n if (!isPlayground) {\n return c.json({ error: 'This API is only available in the playground environment' }, 403);\n }\n\n const agentId = c.req.param('agentId');\n const { instructions } = await c.req.json();\n\n if (!agentId || !instructions) {\n return c.json({ error: 'Missing required fields' }, 400);\n }\n\n const mastra: Mastra = c.get('mastra');\n const agent = await getOriginalGetAgentFromSystem({ mastra, agentId });\n\n agent.__updateInstructions(instructions);\n\n return c.json(\n {\n instructions,\n },\n 200,\n );\n } catch (error) {\n return handleError(error, 'Error setting agent instructions');\n }\n}\n\nexport async function updateAgentModelHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const body = await c.req.json();\n\n const result = await getOriginalUpdateAgentModelHandler({\n mastra,\n agentId,\n body,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error updating agent model');\n }\n}\n\nexport async function resetAgentModelHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n\n const result = await getOriginalResetAgentModelHandler({\n mastra,\n agentId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error resetting agent model');\n }\n}\n\nexport async function deprecatedStreamVNextHandler(c: Context) {\n return c.json(\n {\n error: 'This endpoint is deprecated',\n message: 'The /stream/vnext endpoint has been deprecated. Please use an alternative streaming endpoint.',\n deprecated_endpoint: '/api/agents/:agentId/stream/vnext',\n replacement_endpoint: '/api/agents/:agentId/stream',\n },\n 410, // 410 Gone status code for deprecated endpoints\n );\n}\n\nexport async function updateAgentModelInModelListHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const modelConfigId = c.req.param('modelConfigId');\n const body = await c.req.json();\n\n const result = await getOriginalUpdateAgentModelInModelListHandler({\n mastra,\n agentId,\n body,\n modelConfigId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error updating agent model in model list');\n }\n}\n\nexport async function reorderAgentModelListHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const body = await c.req.json();\n\n const result = await getOriginalReorderAgentModelListHandler({\n mastra,\n agentId,\n body,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error reordering agent model list');\n }\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport {\n getSpeakersHandler as getOriginalSpeakersHandler,\n generateSpeechHandler as getOriginalSpeakHandler,\n getListenerHandler as getOriginalListenerHandler,\n transcribeSpeechHandler as getOriginalListenHandler,\n} from '@mastra/server/handlers/voice';\nimport type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\n\nimport { handleError } from '../../error.js';\n\n/**\n * Get available speakers for an agent\n */\nexport async function getSpeakersHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext = c.get('requestContext');\n\n const speakers = await getOriginalSpeakersHandler({\n mastra,\n agentId,\n requestContext,\n });\n\n return c.json(speakers);\n } catch (error) {\n return handleError(error, 'Error getting speakers');\n }\n}\n\n/**\n * Convert text to speech using the agent's voice provider\n */\nexport async function speakHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext = c.get('requestContext');\n const { input, options } = await c.req.json();\n\n const audioStream = await getOriginalSpeakHandler({\n mastra,\n agentId,\n requestContext,\n body: { text: input, speakerId: options?.speakerId },\n });\n\n c.header('Content-Type', `audio/${options?.filetype ?? 'mp3'}`);\n c.header('Transfer-Encoding', 'chunked');\n\n return c.body(audioStream as any);\n } catch (error) {\n return handleError(error, 'Error generating speech');\n }\n}\n\n/**\n * Get available speakers for an agent\n */\nexport async function getListenerHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext = c.get('requestContext');\n const listeners = await getOriginalListenerHandler({\n mastra,\n agentId,\n requestContext,\n });\n\n return c.json(listeners);\n } catch (error) {\n return handleError(error, 'Error getting listener');\n }\n}\n\n/**\n * Convert speech to text using the agent's voice provider\n */\nexport async function listenHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.param('agentId');\n const requestContext = c.get('requestContext');\n const formData = await c.req.formData();\n const audioFile = formData.get('audio');\n const options = formData.get('options');\n\n if (!audioFile || !(audioFile instanceof File)) {\n throw new HTTPException(400, { message: 'Audio file is required' });\n }\n\n const audioData = await audioFile.arrayBuffer();\n let parsedOptions = {};\n\n try {\n parsedOptions = options ? JSON.parse(options as string) : {};\n } catch {\n // Ignore parsing errors and use empty options\n }\n\n const transcription = await getOriginalListenHandler({\n mastra,\n agentId,\n requestContext,\n body: {\n audioData: Buffer.from(audioData),\n options: parsedOptions,\n },\n });\n\n return c.json({ text: transcription?.text });\n } catch (error) {\n return handleError(error, 'Error transcribing speech');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport { generateSystemPromptHandler } from '../../prompt';\nimport { executeAgentToolHandler, getAgentToolHandler } from '../tools/handlers';\nimport {\n generateHandler,\n getAgentByIdHandler,\n listAgentsHandler,\n getProvidersHandler,\n setAgentInstructionsHandler,\n streamGenerateHandler,\n updateAgentModelHandler,\n resetAgentModelHandler,\n vNextBodyOptions,\n deprecatedStreamVNextHandler,\n streamUIMessageHandler,\n streamGenerateLegacyHandler,\n generateLegacyHandler,\n reorderAgentModelListHandler,\n updateAgentModelInModelListHandler,\n streamNetworkHandler,\n sharedBodyOptions,\n approveToolCallHandler,\n declineToolCallHandler,\n} from './handlers';\nimport { getListenerHandler, getSpeakersHandler, speakHandler, listenHandler } from './voice';\n\nexport function agentsRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n router.get(\n '/',\n describeRoute({\n description: 'Get all available agents',\n tags: ['agents'],\n responses: {\n 200: {\n description: 'List of all agents',\n },\n },\n }),\n listAgentsHandler,\n );\n\n router.get(\n '/providers',\n describeRoute({\n description: 'Get all available model providers with connection status',\n tags: ['agents'],\n responses: {\n 200: {\n description: 'List of model providers with their connection status',\n },\n },\n }),\n getProvidersHandler,\n );\n\n router.get(\n '/:agentId',\n describeRoute({\n description: 'Get agent by ID',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Agent details',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n getAgentByIdHandler,\n );\n\n router.post(\n '/:agentId/generate-legacy',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Generate a response from an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n resourceid: {\n type: 'string',\n description: 'The resource ID for the conversation (deprecated, use resourceId instead)',\n deprecated: true,\n },\n runId: { type: 'string' },\n output: { type: 'object' },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Generated response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n generateLegacyHandler,\n );\n\n router.post(\n '/:agentId/generate',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Generate a response from an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n resourceid: {\n type: 'string',\n description: 'The resource ID for the conversation (deprecated, use resourceId instead)',\n deprecated: true,\n },\n runId: { type: 'string' },\n structuredOutput: {\n type: 'object',\n properties: {\n schema: { type: 'object', description: 'The schema to use for the structured output' },\n model: {\n type: 'string',\n description: 'Additional model to use for generating the structured output if provided',\n },\n instructions: {\n type: 'string',\n description:\n 'Custom instructions to provide to the structuring agent. This will override the default instructions.',\n },\n errorStrategy: {\n type: 'string',\n enum: ['strict', 'warn', 'fallback'],\n description: 'The error strategy to use for the structured output',\n },\n fallbackValue: {\n type: 'object',\n description:\n \"The fallback value to use for the structured output when using 'fallback' error strategy\",\n },\n },\n },\n output: { type: 'object', deprecated: true },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Generated response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n generateHandler,\n );\n\n router.post(\n '/:agentId/network',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute an agent as a Network',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: sharedBodyOptions,\n required: ['messages'],\n },\n },\n },\n },\n }),\n streamNetworkHandler,\n );\n\n router.post(\n '/:agentId/generate/vnext',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Generate a response from an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: vNextBodyOptions,\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Generated response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n generateHandler,\n );\n\n router.post(\n '/:agentId/stream/vnext',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: '[DEPRECATED] This endpoint is deprecated. Please use /stream instead.',\n tags: ['agents'],\n deprecated: true,\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: vNextBodyOptions,\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Generated response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n streamGenerateHandler,\n );\n\n router.post(\n '/:agentId/stream-legacy',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Stream a response from an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n resourceid: {\n type: 'string',\n description: 'The resource ID for the conversation (deprecated, use resourceId instead)',\n deprecated: true,\n },\n runId: { type: 'string' },\n output: { type: 'object' },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Streamed response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n streamGenerateLegacyHandler,\n );\n\n router.post(\n '/:agentId/stream',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Stream a response from an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n resourceid: {\n type: 'string',\n description: 'The resource ID for the conversation (deprecated, use resourceId instead)',\n deprecated: true,\n },\n runId: { type: 'string' },\n structuredOutput: {\n type: 'object',\n properties: {\n schema: { type: 'object', description: 'The schema to use for the structured output' },\n model: {\n type: 'string',\n description: 'Additional model to use for generating the structured output if provided',\n },\n instructions: {\n type: 'string',\n description:\n 'Custom instructions to provide to the structuring agent. This will override the default instructions.',\n },\n errorStrategy: {\n type: 'string',\n enum: ['strict', 'warn', 'fallback'],\n description: 'The error strategy to use for the structured output',\n },\n fallbackValue: {\n type: 'object',\n description:\n \"The fallback value to use for the structured output when using 'fallback' error strategy\",\n },\n },\n },\n output: { type: 'object', deprecated: true },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Streamed response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n streamGenerateHandler,\n );\n\n router.post(\n '/:agentId/streamVNext',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: '[DEPRECATED] This endpoint is deprecated. Please use /stream instead.',\n tags: ['agents'],\n deprecated: true,\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n items: { type: 'object' },\n },\n runId: { type: 'string' },\n output: { type: 'object' },\n experimental_output: { type: 'object' },\n instructions: { type: 'string' },\n toolsets: { type: 'object' },\n clientTools: { type: 'object' },\n context: {\n type: 'array',\n items: { type: 'object' },\n },\n memory: {\n type: 'object',\n properties: {\n threadId: { type: 'string' },\n resourceId: { type: 'string', description: 'The resource ID for the conversation' },\n },\n },\n toolChoice: {\n oneOf: [\n { type: 'string', enum: ['auto', 'none', 'required'] },\n { type: 'object', properties: { type: { type: 'string' }, toolName: { type: 'string' } } },\n ],\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the agent execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 410: {\n description: 'Endpoint deprecated',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: { type: 'string' },\n message: { type: 'string' },\n deprecated_endpoint: { type: 'string' },\n replacement_endpoint: { type: 'string' },\n },\n },\n },\n },\n },\n },\n }),\n deprecatedStreamVNextHandler,\n );\n\n router.post(\n '/:agentId/stream/vnext/ui',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description:\n '[DEPRECATED] This endpoint is deprecated. Please use the @mastra/ai-sdk package to for uiMessage transformations',\n tags: ['agents'],\n deprecated: true,\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: vNextBodyOptions,\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Streamed response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n streamUIMessageHandler,\n );\n\n router.post(\n '/:agentId/stream/ui',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description:\n '[DEPRECATED] This endpoint is deprecated. Please use the @mastra/ai-sdk package to for uiMessage transformations',\n tags: ['agents'],\n deprecated: true,\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: vNextBodyOptions,\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Streamed response',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n streamUIMessageHandler,\n );\n\n router.post(\n '/:agentId/model',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Update the model for an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n modelId: {\n type: 'string',\n description: 'The modelId to update the agent to',\n },\n provider: {\n type: 'string',\n enum: ['openai', 'anthropic', 'groq', 'xai', 'google'],\n description: 'The provider of the model to update the agent to',\n },\n },\n required: ['modelId', 'provider'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Model updated successfully',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n updateAgentModelHandler,\n );\n\n router.post(\n '/:agentId/model/reset',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Reset the agent model to the original model set during construction',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Model reset to original successfully',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n resetAgentModelHandler,\n );\n\n router.post(\n '/:agentId/models/reorder',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Reorder the models for an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n reorderedModelIds: {\n type: 'array',\n items: {\n type: 'string',\n },\n },\n },\n required: ['reorderedModelIds'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Model list reordered successfully',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n reorderAgentModelListHandler,\n );\n\n router.post(\n '/:agentId/models/:modelConfigId',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Update the model for an agent in the model list',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'modelConfigId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n model: {\n type: 'object',\n properties: {\n modelId: {\n type: 'string',\n description: 'The modelId to update the agent to',\n },\n provider: {\n type: 'string',\n enum: ['openai', 'anthropic', 'groq', 'xai', 'google'],\n description: 'The provider of the model to update the agent to',\n },\n },\n required: ['modelId', 'provider'],\n },\n maxRetries: {\n type: 'number',\n description: 'The maximum number of retries for the model',\n },\n enabled: {\n type: 'boolean',\n description: 'Whether the model is enabled',\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Model updated successfully',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n updateAgentModelInModelListHandler,\n );\n\n router.get(\n '/:agentId/speakers',\n async (c, next) => {\n c.header('Deprecation', 'true');\n c.header('Warning', '299 - \"This endpoint is deprecated, use /api/agents/:agentId/voice/speakers instead\"');\n c.header('Link', '</api/agents/:agentId/voice/speakers>; rel=\"successor-version\"');\n return next();\n },\n describeRoute({\n description: '[DEPRECATED] Use /api/agents/:agentId/voice/speakers instead. Get available speakers for an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'List of available speakers',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'object',\n description: 'Speaker information depending on the voice provider',\n properties: {\n voiceId: { type: 'string' },\n },\n additionalProperties: true,\n },\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n getSpeakersHandler,\n );\n\n router.get(\n '/:agentId/voice/speakers',\n describeRoute({\n description: 'Get available speakers for an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'List of available speakers',\n content: {\n 'application/json': {\n schema: {\n type: 'array',\n items: {\n type: 'object',\n description: 'Speaker information depending on the voice provider',\n properties: {\n voiceId: { type: 'string' },\n },\n additionalProperties: true,\n },\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n getSpeakersHandler,\n );\n\n router.post(\n '/:agentId/speak',\n bodyLimit(bodyLimitOptions),\n async (c, next) => {\n c.header('Deprecation', 'true');\n c.header('Warning', '299 - \"This endpoint is deprecated, use /api/agents/:agentId/voice/speak instead\"');\n c.header('Link', '</api/agents/:agentId/voice/speak>; rel=\"successor-version\"');\n return next();\n },\n describeRoute({\n description:\n \"[DEPRECATED] Use /api/agents/:agentId/voice/speak instead. Convert text to speech using the agent's voice provider\",\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n text: {\n type: 'string',\n description: 'Text to convert to speech',\n },\n options: {\n type: 'object',\n description: 'Provider-specific options for speech generation',\n properties: {\n speaker: {\n type: 'string',\n description: 'Speaker ID to use for speech generation',\n },\n },\n additionalProperties: true,\n },\n },\n required: ['text'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Audio stream',\n content: {\n 'audio/mpeg': {\n schema: {\n format: 'binary',\n description: 'Audio stream containing the generated speech',\n },\n },\n 'audio/*': {\n schema: {\n format: 'binary',\n description: 'Audio stream depending on the provider',\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities or invalid request',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n speakHandler,\n );\n\n router.post(\n '/:agentId/voice/speak',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: \"Convert text to speech using the agent's voice provider\",\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n input: {\n type: 'string',\n description: 'Text to convert to speech',\n },\n options: {\n type: 'object',\n description: 'Provider-specific options for speech generation',\n properties: {\n speaker: {\n type: 'string',\n description: 'Speaker ID to use for speech generation',\n },\n options: {\n type: 'object',\n description: 'Provider-specific options for speech generation',\n additionalProperties: true,\n },\n },\n additionalProperties: true,\n },\n },\n required: ['text'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Audio stream',\n content: {\n 'audio/mpeg': {\n schema: {\n format: 'binary',\n description: 'Audio stream containing the generated speech',\n },\n },\n 'audio/*': {\n schema: {\n format: 'binary',\n description: 'Audio stream depending on the provider',\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities or invalid request',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n speakHandler,\n );\n\n router.get(\n '/:agentId/voice/listener',\n describeRoute({\n description: 'Get available listener for an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Checks if listener is available for the agent',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n description: 'Listener information depending on the voice provider',\n properties: {\n enabled: { type: 'boolean' },\n },\n additionalProperties: true,\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n getListenerHandler,\n );\n\n router.post(\n '/:agentId/listen',\n bodyLimit({\n ...bodyLimitOptions,\n maxSize: 10 * 1024 * 1024, // 10 MB for audio files\n }),\n async (c, next) => {\n c.header('Deprecation', 'true');\n c.header('Warning', '299 - \"This endpoint is deprecated, use /api/agents/:agentId/voice/listen instead\"');\n c.header('Link', '</api/agents/:agentId/voice/listen>; rel=\"successor-version\"');\n return next();\n },\n describeRoute({\n description:\n \"[DEPRECATED] Use /api/agents/:agentId/voice/listen instead. Convert speech to text using the agent's voice provider. Additional provider-specific options can be passed as query parameters.\",\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'audio/mpeg': {\n schema: {\n format: 'binary',\n description:\n 'Audio data stream to transcribe (supports various formats depending on provider like mp3, wav, webm, flac)',\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Transcription result',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n text: {\n type: 'string',\n description: 'Transcribed text',\n },\n },\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities or invalid request',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n listenHandler,\n );\n\n router.post(\n '/:agentId/voice/listen',\n bodyLimit({\n ...bodyLimitOptions,\n maxSize: 10 * 1024 * 1024, // 10 MB for audio files\n }),\n describeRoute({\n description:\n \"Convert speech to text using the agent's voice provider. Additional provider-specific options can be passed as query parameters.\",\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'multipart/form-data': {\n schema: {\n type: 'object',\n required: ['audio'],\n properties: {\n audio: {\n type: 'string',\n format: 'binary',\n description:\n 'Audio data stream to transcribe (supports various formats depending on provider like mp3, wav, webm, flac)',\n },\n options: {\n type: 'object',\n description: 'Provider-specific options for speech-to-text',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Transcription result',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n text: {\n type: 'string',\n description: 'Transcribed text',\n },\n },\n },\n },\n },\n },\n 400: {\n description: 'Agent does not have voice capabilities or invalid request',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n listenHandler,\n );\n\n router.get(\n '/:agentId/tools/:toolId',\n describeRoute({\n description: 'Get agent tool by ID',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'toolId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Tool details',\n },\n 404: {\n description: 'Tool or agent not found',\n },\n },\n }),\n getAgentToolHandler,\n );\n\n router.post(\n '/:agentId/tools/:toolId/execute',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute a tool through an agent',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'toolId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n data: { type: 'object' },\n requestContext: { type: 'object' },\n },\n required: ['data'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Tool execution result',\n },\n 404: {\n description: 'Tool or agent not found',\n },\n },\n }),\n executeAgentToolHandler,\n );\n\n router.post(\n '/:agentId/approve-tool-call',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Approve a tool call in human-in-the-loop workflow',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n runId: { type: 'string', description: 'The run ID for the execution' },\n toolCallId: { type: 'string', description: 'The tool call ID for the execution' },\n requestContext: { type: 'object', description: 'Request Context for the execution' },\n format: { type: 'string', enum: ['aisdk', 'mastra'], description: 'Output format' },\n },\n required: ['runId', 'toolCallId'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Tool call approved and execution resumed',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n approveToolCallHandler,\n );\n\n router.post(\n '/:agentId/decline-tool-call',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Decline a tool call in human-in-the-loop workflow',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n runId: { type: 'string', description: 'The run ID for the execution' },\n toolCallId: { type: 'string', description: 'The tool call ID for the execution' },\n requestContext: { type: 'object', description: 'Request Context for the execution' },\n format: { type: 'string', enum: ['aisdk', 'mastra'], description: 'Output format' },\n },\n required: ['runId', 'toolCallId'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Tool call declined and execution resumed',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n declineToolCallHandler,\n );\n\n return router;\n}\n\nexport function agentsRouterDev(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n router.post(\n '/:agentId/instructions',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: \"Update an agent's instructions\",\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n instructions: {\n type: 'string',\n description: 'New instructions for the agent',\n },\n },\n required: ['instructions'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Instructions updated successfully',\n },\n 403: {\n description: 'Not allowed in non-playground environment',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n setAgentInstructionsHandler,\n );\n\n router.post(\n '/:agentId/instructions/enhance',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Generate an improved system prompt from instructions',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'ID of the agent whose model will be used for prompt generation',\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n instructions: {\n type: 'string',\n description: 'Instructions to generate a system prompt from',\n },\n comment: {\n type: 'string',\n description: 'Optional comment for the enhanced prompt',\n },\n },\n required: ['instructions'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Generated system prompt and analysis',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n explanation: {\n type: 'string',\n description: 'Detailed analysis of the instructions',\n },\n new_prompt: {\n type: 'string',\n description: 'The enhanced system prompt',\n },\n },\n },\n },\n },\n },\n 400: {\n description: 'Missing or invalid request parameters',\n },\n 404: {\n description: 'Agent not found',\n },\n 500: {\n description: 'Internal server error or model response parsing error',\n },\n },\n }),\n generateSystemPromptHandler,\n );\n\n return router;\n}\n","import type { LogLevel } from '@mastra/core/logger';\nimport type { Mastra } from '@mastra/core/mastra';\nimport {\n listLogsHandler as getOriginalListLogsHandler,\n listLogsByRunIdHandler as getOriginalListLogsByRunIdHandler,\n listLogTransports as getOriginalListLogTransportsHandler,\n} from '@mastra/server/handlers/logs';\nimport type { Context } from 'hono';\n\nimport { handleError } from '../../error';\n\nexport async function listLogsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const { transportId, fromDate, toDate, logLevel, page, perPage } = c.req.query();\n const filters = c.req.queries('filters');\n\n const logs = await getOriginalListLogsHandler({\n mastra,\n transportId,\n params: {\n fromDate: fromDate ? new Date(fromDate) : undefined,\n toDate: toDate ? new Date(toDate) : undefined,\n logLevel: logLevel ? (logLevel as LogLevel) : undefined,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n },\n });\n\n return c.json(logs);\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n}\n\nexport async function listLogsByRunIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const runId = c.req.param('runId');\n const { transportId, fromDate, toDate, logLevel, page, perPage } = c.req.query();\n const filters = c.req.queries('filters');\n\n const logs = await getOriginalListLogsByRunIdHandler({\n mastra,\n runId,\n transportId,\n params: {\n fromDate: fromDate ? new Date(fromDate) : undefined,\n toDate: toDate ? new Date(toDate) : undefined,\n logLevel: logLevel ? (logLevel as LogLevel) : undefined,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n },\n });\n\n return c.json(logs);\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n}\n\nexport async function listLogTransports(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n\n const result = await getOriginalListLogTransportsHandler({\n mastra,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n}\n","import { Hono } from 'hono';\nimport { describeRoute } from 'hono-openapi';\nimport { listLogsByRunIdHandler, listLogsHandler, listLogTransports } from './handlers';\n\nexport function logsRouter() {\n const router = new Hono();\n\n router.get(\n '/',\n describeRoute({\n description: 'Get all logs',\n tags: ['logs'],\n parameters: [\n {\n name: 'transportId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'fromDate',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'toDate',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'logLevel',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'filters',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of all logs',\n },\n },\n }),\n listLogsHandler,\n );\n\n router.get(\n '/transports',\n describeRoute({\n description: 'List of all log transports',\n tags: ['logs'],\n responses: {\n 200: {\n description: 'List of all log transports',\n },\n },\n }),\n listLogTransports,\n );\n\n router.get(\n '/:runId',\n describeRoute({\n description: 'Get logs by run ID',\n tags: ['logs'],\n parameters: [\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'transportId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'fromDate',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'toDate',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'logLevel',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'filters',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of logs for run ID',\n },\n },\n }),\n listLogsByRunIdHandler,\n );\n\n return router;\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport util from \"node:util\";\n/* These items copied from Node.js: node/lib/internal/errors.js */\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/;\n// Sorted by a rough estimate on most frequently used entries.\nconst kTypes = [\n \"string\",\n \"function\",\n \"number\",\n \"object\",\n // Accept 'Function' and 'Object' as alternative to the lower cased version.\n \"Function\",\n \"Object\",\n \"boolean\",\n \"bigint\",\n \"symbol\",\n];\n/**\n * Determine the specific type of a value for type-mismatch errors.\n * @param {*} value\n * @returns {string}\n */\nfunction determineSpecificType(value) {\n if (value == null) {\n return \"\" + value;\n }\n if (typeof value === \"function\" && value.name) {\n return `function ${value.name}`;\n }\n if (typeof value === \"object\") {\n if (value.constructor?.name) {\n return `an instance of ${value.constructor.name}`;\n }\n return `${util.inspect(value, { depth: -1 })}`;\n }\n let inspected = util.inspect(value, { colors: false });\n if (inspected.length > 28) {\n inspected = `${inspected.slice(0, 25)}...`;\n }\n return `type ${typeof value} (${inspected})`;\n}\n// The following classes are adaptations of a subset of the ERR_* classes\n// declared in Node.js in the file - node/lib/internal/errors.js.\nexport class ERR_HTTP_BODY_NOT_ALLOWED extends Error {\n constructor() {\n super(\"Adding content for this request method or response status is not allowed.\");\n }\n}\nexport class ERR_HTTP_CONTENT_LENGTH_MISMATCH extends Error {\n constructor(actual, expected) {\n super(`Response body's content-length of ${actual} byte(s) does not match the content-length of ${expected} byte(s) set in header`);\n }\n}\nexport class ERR_HTTP_HEADERS_SENT extends Error {\n constructor(arg) {\n super(`Cannot ${arg} headers after they are sent to the client`);\n }\n}\nexport class ERR_INVALID_ARG_VALUE extends TypeError /*, RangeError */ {\n constructor(name, value, reason = \"is invalid\") {\n let inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = `${inspected.slice(0, 128)}...`;\n }\n const type = name.includes(\".\") ? \"property\" : \"argument\";\n super(`The ${type} '${name}' ${reason}. Received ${inspected}`);\n }\n}\nexport class ERR_INVALID_CHAR extends TypeError {\n constructor(name, field) {\n let msg = `Invalid character in ${name}`;\n if (field !== undefined) {\n msg += ` [\"${field}\"]`;\n }\n super(msg);\n }\n}\nexport class ERR_HTTP_INVALID_HEADER_VALUE extends TypeError {\n constructor(value, name) {\n super(`Invalid value \"${value}\" for header \"${name}\"`);\n }\n}\nexport class ERR_HTTP_INVALID_STATUS_CODE extends RangeError {\n originalStatusCode;\n constructor(originalStatusCode) {\n super(`Invalid status code: ${originalStatusCode}`);\n this.originalStatusCode = originalStatusCode;\n }\n}\nexport class ERR_HTTP_TRAILER_INVALID extends Error {\n constructor() {\n super(`Trailers are invalid with this transfer encoding`);\n }\n}\nexport class ERR_INVALID_ARG_TYPE extends TypeError {\n constructor(name, expected, actual) {\n // assert(typeof name === 'string', \"'name' must be a string\");\n if (!Array.isArray(expected)) {\n expected = [expected];\n }\n let msg = \"The \";\n if (name.endsWith(\" argument\")) {\n // For cases like 'first argument'\n msg += `${name} `;\n }\n else {\n const type = name.includes(\".\") ? \"property\" : \"argument\";\n msg += `\"${name}\" ${type} `;\n }\n msg += \"must be \";\n const types = [];\n const instances = [];\n const other = [];\n for (const value of expected) {\n // assert(typeof value === 'string',\n // 'All expected entries have to be of type string');\n if (kTypes.includes(value)) {\n types.push(value.toLowerCase());\n }\n else if (classRegExp.exec(value) !== null) {\n instances.push(value);\n }\n else {\n // assert(value !== 'object',\n // 'The value \"object\" should be written as \"Object\"');\n other.push(value);\n }\n }\n // Special handle `object` in case other instances are allowed to outline\n // the differences between each other.\n if (instances.length > 0) {\n const pos = types.indexOf(\"object\");\n if (pos !== -1) {\n types.splice(pos, 1);\n instances.push(\"Object\");\n }\n }\n if (types.length > 0) {\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(\", \")}, or ${last}`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}`;\n }\n else {\n msg += `of type ${types[0]}`;\n }\n if (instances.length > 0 || other.length > 0)\n msg += \" or \";\n }\n if (instances.length > 0) {\n if (instances.length > 2) {\n const last = instances.pop();\n msg += `an instance of ${instances.join(\", \")}, or ${last}`;\n }\n else {\n msg += `an instance of ${instances[0]}`;\n if (instances.length === 2) {\n msg += ` or ${instances[1]}`;\n }\n }\n if (other.length > 0)\n msg += \" or \";\n }\n if (other.length > 0) {\n if (other.length > 2) {\n const last = other.pop();\n msg += `one of ${other.join(\", \")}, or ${last}`;\n }\n else if (other.length === 2) {\n msg += `one of ${other[0]} or ${other[1]}`;\n }\n else {\n if (other[0].toLowerCase() !== other[0])\n msg += \"an \";\n msg += `${other[0]}`;\n }\n }\n msg += `. Received ${determineSpecificType(actual)}`;\n super(msg);\n }\n}\nexport class ERR_INVALID_HTTP_TOKEN extends TypeError {\n constructor(name, field) {\n super(`${name} must be a valid HTTP token [\"${field}\"]`);\n }\n}\nexport class ERR_METHOD_NOT_IMPLEMENTED extends Error {\n constructor(methodName) {\n super(`The ${methodName} method is not implemented`);\n }\n}\nexport class ERR_STREAM_ALREADY_FINISHED extends Error {\n constructor(methodName) {\n super(`Cannot call ${methodName} after a stream was finished`);\n }\n}\nexport class ERR_STREAM_CANNOT_PIPE extends Error {\n constructor() {\n super(`Cannot pipe, not readable`);\n }\n}\nexport class ERR_STREAM_DESTROYED extends Error {\n constructor(methodName) {\n super(`Cannot call ${methodName} after a stream was destroyed`);\n }\n}\nexport class ERR_STREAM_NULL_VALUES extends TypeError {\n constructor() {\n super(`May not write null values to stream`);\n }\n}\nexport class ERR_STREAM_WRITE_AFTER_END extends Error {\n constructor() {\n super(`write after end`);\n }\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n// This file modeled after Node.js - node/lib/_http_incoming.js\nimport { Readable } from \"node:stream\";\nimport { ERR_METHOD_NOT_IMPLEMENTED } from \"../utils/errors.js\";\nconst kHeaders = Symbol(\"kHeaders\");\nconst kHeadersDistinct = Symbol(\"kHeadersDistinct\");\nconst kHeadersCount = Symbol(\"kHeadersCount\");\nconst kTrailers = Symbol(\"kTrailers\");\nconst kTrailersDistinct = Symbol(\"kTrailersDistinct\");\nconst kTrailersCount = Symbol(\"kTrailersCount\");\n/**\n * This is an implementation of IncomingMessage from Node.js intended to run in\n * a WinterTC runtime. The 'Readable' interface of this class is wired to a 'Request'\n * object's 'body'.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_http_incoming.js\n */\nexport class FetchIncomingMessage extends Readable {\n get socket() {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n return null;\n }\n set socket(_val) {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"socket\");\n }\n httpVersionMajor;\n httpVersionMinor;\n httpVersion;\n complete = false;\n [kHeaders] = null;\n [kHeadersDistinct] = null;\n [kHeadersCount] = 0;\n rawHeaders = [];\n [kTrailers] = null;\n [kTrailersDistinct] = null;\n [kTrailersCount] = 0;\n rawTrailers = [];\n joinDuplicateHeaders = false;\n aborted = false;\n upgrade = false;\n // request (server) only\n url = \"\";\n method;\n // TODO: Support ClientRequest\n // statusCode = null;\n // statusMessage = null;\n // client = socket;\n _consuming;\n _dumped;\n // The underlying ReadableStream\n _stream = null;\n constructor() {\n const streamOptions = {};\n // Difference from Node.js -\n // In Node.js, if the IncomingMessages is associated with a socket then\n // that socket's 'readableHighWaterMark' would be used to set\n // streamOptions.highWaterMark before calling parent constructor.\n super(streamOptions);\n this._readableState.readingMore = true;\n this._consuming = false;\n // Flag for when we decide that this message cannot possibly be\n // read by the user, so there's no point continuing to handle it.\n this._dumped = false;\n }\n get connection() {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n return null;\n }\n set connection(_socket) {\n // Difference from Node.js -\n // We don't really have a way to support direct access to the socket\n console.error(\"No support for IncomingMessage.connection\");\n }\n get headers() {\n if (!this[kHeaders]) {\n this[kHeaders] = {};\n const src = this.rawHeaders;\n const dst = this[kHeaders];\n for (let n = 0; n < this[kHeadersCount]; n += 2) {\n this._addHeaderLine(src[n], src[n + 1], dst);\n }\n }\n return this[kHeaders];\n }\n set headers(val) {\n this[kHeaders] = val;\n }\n get headersDistinct() {\n if (!this[kHeadersDistinct]) {\n this[kHeadersDistinct] = {};\n const src = this.rawHeaders;\n const dst = this[kHeadersDistinct];\n for (let n = 0; n < this[kHeadersCount]; n += 2) {\n this._addHeaderLineDistinct(src[n], src[n + 1], dst);\n }\n }\n return this[kHeadersDistinct];\n }\n set headersDistinct(val) {\n this[kHeadersDistinct] = val;\n }\n get trailers() {\n if (!this[kTrailers]) {\n this[kTrailers] = {};\n const src = this.rawTrailers;\n const dst = this[kTrailers];\n for (let n = 0; n < this[kTrailersCount]; n += 2) {\n this._addHeaderLine(src[n], src[n + 1], dst);\n }\n }\n return this[kTrailers];\n }\n set trailers(val) {\n this[kTrailers] = val;\n }\n get trailersDistinct() {\n if (!this[kTrailersDistinct]) {\n this[kTrailersDistinct] = {};\n const src = this.rawTrailers;\n const dst = this[kTrailersDistinct];\n for (let n = 0; n < this[kTrailersCount]; n += 2) {\n this._addHeaderLineDistinct(src[n], src[n + 1], dst);\n }\n }\n return this[kTrailersDistinct];\n }\n set trailersDistinct(val) {\n this[kTrailersDistinct] = val;\n }\n setTimeout(msecs, callback) {\n // Difference from Node.js -\n // In Node.js, this is supposed to set the underlying socket to time out\n // after some time and then run a callback.\n // We do nothing here since we don't really have a way to support direct\n // access to the socket.\n return this;\n }\n async _read(n) {\n // As this is an implementation of stream.Readable, we provide a _read()\n // function that pumps the next chunk out of the underlying ReadableStream.\n if (!this._consuming) {\n this._readableState.readingMore = false;\n this._consuming = true;\n }\n // Difference from Node.js -\n // The Node.js implementation will already have its internal buffer\n // filled by the parserOnBody function.\n // For our implementation, we use the ReadableStream instance.\n if (this._stream == null) {\n // For GET and HEAD requests, the stream would be empty.\n // Simply signal that we're done.\n this.complete = true;\n this.push(null);\n return;\n }\n const reader = this._stream.getReader();\n try {\n const data = await reader.read();\n if (data.done) {\n // Done with stream, tell Readable we have no more data;\n this.complete = true;\n this.push(null);\n }\n else {\n this.push(data.value);\n }\n }\n catch (e) {\n this.destroy(e);\n }\n finally {\n reader.releaseLock();\n }\n }\n _destroy(err, cb) {\n if (!this.readableEnded || !this.complete) {\n this.aborted = true;\n this.emit(\"aborted\");\n }\n // Difference from Node.js -\n // Node.js would check for the existence of the socket and do some additional\n // cleanup.\n // By the way, I believe this name 'onError' is misleading, it is called\n // regardless of whether there was an error. The callback is expected to\n // check for the existence of the error to decide whether the result was\n // actually an error.\n setTimeout(onError, 0, this, err, cb);\n }\n _addHeaderLines(headers, n) {\n if (headers?.length) {\n let dest;\n if (this.complete) {\n this.rawTrailers = headers;\n this[kTrailersCount] = n;\n dest = this[kTrailers];\n }\n else {\n this.rawHeaders = headers;\n this[kHeadersCount] = n;\n dest = this[kHeaders];\n }\n if (dest) {\n for (let i = 0; i < n; i += 2) {\n this._addHeaderLine(headers[i], headers[i + 1], dest);\n }\n }\n }\n }\n // Add the given (field, value) pair to the message\n //\n // Per RFC2616, section 4.2 it is acceptable to join multiple instances of the\n // same header with a ', ' if the header in question supports specification of\n // multiple values this way. The one exception to this is the Cookie header,\n // which has multiple values joined with a '; ' instead. If a header's values\n // cannot be joined in either of these ways, we declare the first instance the\n // winner and drop the second. Extended header fields (those beginning with\n // 'x-') are always joined.\n _addHeaderLine(field, value, dest) {\n field = matchKnownFields(field);\n const flag = field.charCodeAt(0);\n if (flag === 0 || flag === 2) {\n field = field.slice(1);\n // Make a delimited list\n if (typeof dest[field] === \"string\") {\n dest[field] += (flag === 0 ? \", \" : \"; \") + value;\n }\n else {\n dest[field] = value;\n }\n }\n else if (flag === 1) {\n // Array header -- only Set-Cookie at the moment\n if (dest[\"set-cookie\"] !== undefined) {\n dest[\"set-cookie\"].push(value);\n }\n else {\n dest[\"set-cookie\"] = [value];\n }\n }\n else if (this.joinDuplicateHeaders) {\n // RFC 9110 https://www.rfc-editor.org/rfc/rfc9110#section-5.2\n // https://github.com/nodejs/node/issues/45699\n // allow authorization multiple fields\n // Make a delimited list\n if (dest[field] === undefined) {\n dest[field] = value;\n }\n else {\n dest[field] += \", \" + value;\n }\n }\n else if (dest[field] === undefined) {\n // Drop duplicates\n dest[field] = value;\n }\n }\n _addHeaderLineDistinct(field, value, dest) {\n field = field.toLowerCase();\n if (!dest[field]) {\n dest[field] = [value];\n }\n else {\n dest[field].push(value);\n }\n }\n // Call this instead of resume() if we want to just\n // dump all the data to /dev/null\n _dump() {\n if (!this._dumped) {\n this._dumped = true;\n // If there is buffered data, it may trigger 'data' events.\n // Remove 'data' event listeners explicitly.\n this.removeAllListeners(\"data\");\n this.resume();\n }\n }\n}\n/* These items copied from Node.js: node/lib/_http_incoming.js, because they are not exported from that file. */\n// This function is used to help avoid the lowercasing of a field name if it\n// matches a 'traditional cased' version of a field name. It then returns the\n// lowercased name to both avoid calling toLowerCase() a second time and to\n// indicate whether the field was a 'no duplicates' field. If a field is not a\n// 'no duplicates' field, a `0` byte is prepended as a flag. The one exception\n// to this is the Set-Cookie header which is indicated by a `1` byte flag, since\n// it is an 'array' field and thus is treated differently in _addHeaderLines().\n// TODO: perhaps http_parser could be returning both raw and lowercased versions\n// of known header names to avoid us having to call toLowerCase() for those\n// headers.\nfunction matchKnownFields(field, lowercased = false) {\n switch (field.length) {\n case 3:\n if (field === \"Age\" || field === \"age\")\n return \"age\";\n break;\n case 4:\n if (field === \"Host\" || field === \"host\")\n return \"host\";\n if (field === \"From\" || field === \"from\")\n return \"from\";\n if (field === \"ETag\" || field === \"etag\")\n return \"etag\";\n if (field === \"Date\" || field === \"date\")\n return \"\\u0000date\";\n if (field === \"Vary\" || field === \"vary\")\n return \"\\u0000vary\";\n break;\n case 6:\n if (field === \"Server\" || field === \"server\")\n return \"server\";\n if (field === \"Cookie\" || field === \"cookie\")\n return \"\\u0002cookie\";\n if (field === \"Origin\" || field === \"origin\")\n return \"\\u0000origin\";\n if (field === \"Expect\" || field === \"expect\")\n return \"\\u0000expect\";\n if (field === \"Accept\" || field === \"accept\")\n return \"\\u0000accept\";\n break;\n case 7:\n if (field === \"Referer\" || field === \"referer\")\n return \"referer\";\n if (field === \"Expires\" || field === \"expires\")\n return \"expires\";\n if (field === \"Upgrade\" || field === \"upgrade\")\n return \"\\u0000upgrade\";\n break;\n case 8:\n if (field === \"Location\" || field === \"location\")\n return \"location\";\n if (field === \"If-Match\" || field === \"if-match\")\n return \"\\u0000if-match\";\n break;\n case 10:\n if (field === \"User-Agent\" || field === \"user-agent\")\n return \"user-agent\";\n if (field === \"Set-Cookie\" || field === \"set-cookie\")\n return \"\\u0001\";\n if (field === \"Connection\" || field === \"connection\")\n return \"\\u0000connection\";\n break;\n case 11:\n if (field === \"Retry-After\" || field === \"retry-after\")\n return \"retry-after\";\n break;\n case 12:\n if (field === \"Content-Type\" || field === \"content-type\")\n return \"content-type\";\n if (field === \"Max-Forwards\" || field === \"max-forwards\")\n return \"max-forwards\";\n break;\n case 13:\n if (field === \"Authorization\" || field === \"authorization\")\n return \"authorization\";\n if (field === \"Last-Modified\" || field === \"last-modified\")\n return \"last-modified\";\n if (field === \"Cache-Control\" || field === \"cache-control\")\n return \"\\u0000cache-control\";\n if (field === \"If-None-Match\" || field === \"if-none-match\")\n return \"\\u0000if-none-match\";\n break;\n case 14:\n if (field === \"Content-Length\" || field === \"content-length\")\n return \"content-length\";\n break;\n case 15:\n if (field === \"Accept-Encoding\" || field === \"accept-encoding\")\n return \"\\u0000accept-encoding\";\n if (field === \"Accept-Language\" || field === \"accept-language\")\n return \"\\u0000accept-language\";\n if (field === \"X-Forwarded-For\" || field === \"x-forwarded-for\")\n return \"\\u0000x-forwarded-for\";\n break;\n case 16:\n if (field === \"Content-Encoding\" || field === \"content-encoding\")\n return \"\\u0000content-encoding\";\n if (field === \"X-Forwarded-Host\" || field === \"x-forwarded-host\")\n return \"\\u0000x-forwarded-host\";\n break;\n case 17:\n if (field === \"If-Modified-Since\" || field === \"if-modified-since\")\n return \"if-modified-since\";\n if (field === \"Transfer-Encoding\" || field === \"transfer-encoding\")\n return \"\\u0000transfer-encoding\";\n if (field === \"X-Forwarded-Proto\" || field === \"x-forwarded-proto\")\n return \"\\u0000x-forwarded-proto\";\n break;\n case 19:\n if (field === \"Proxy-Authorization\" || field === \"proxy-authorization\")\n return \"proxy-authorization\";\n if (field === \"If-Unmodified-Since\" || field === \"if-unmodified-since\")\n return \"if-unmodified-since\";\n break;\n }\n if (lowercased) {\n return \"\\u0000\" + field;\n }\n return matchKnownFields(field.toLowerCase(), true);\n}\nfunction onError(self, error, cb) {\n // This is to keep backward compatible behavior.\n // An error is emitted only if there are listeners attached to the event.\n if (self.listenerCount(\"error\") === 0) {\n cb();\n }\n else {\n cb(error);\n }\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE } from \"./errors.js\";\n/* These items copied from Node.js: node/lib/internal/validators.js */\nexport function validateString(value, name) {\n if (typeof value !== \"string\")\n throw new ERR_INVALID_ARG_TYPE(name, \"string\", value);\n}\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/;\nexport function validateLinkHeaderFormat(value, name) {\n if (typeof value === \"undefined\" || !linkValueRegExp.exec(value)) {\n throw new ERR_INVALID_ARG_VALUE(name, value, 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"');\n }\n}\nexport function validateLinkHeaderValue(hints) {\n if (typeof hints === \"string\") {\n validateLinkHeaderFormat(hints, \"hints\");\n return hints;\n }\n else if (Array.isArray(hints)) {\n const hintsLength = hints.length;\n let result = \"\";\n if (hintsLength === 0) {\n return result;\n }\n for (let i = 0; i < hintsLength; i++) {\n const link = hints[i];\n validateLinkHeaderFormat(link, \"hints\");\n result += link;\n if (i !== hintsLength - 1) {\n result += \", \";\n }\n }\n return result;\n }\n throw new ERR_INVALID_ARG_VALUE(\"hints\", hints, 'must be an array or string of format \"</styles.css>; rel=preload; as=style\"');\n}\n/* These items copied from Node.js: node/lib/internal/util/types.js */\nexport function isUint8Array(value) {\n return value != null && value[Symbol.toStringTag] === \"Uint8Array\";\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/internal/http.js. */\nexport const kNeedDrain = Symbol(\"kNeedDrain\");\nexport const kOutHeaders = Symbol(\"kOutHeaders\");\n// In Node.js this utcDate is cached for 1 second, for use across\n// all http connections. However, in C@E we just create a new one\n// since we're not able to share this data across separate invocations.\nexport function utcDate() {\n return new Date().toUTCString();\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/internal/streams/state.js. */\nexport function getDefaultHighWaterMark(objectMode) {\n return objectMode ? 16 : 64 * 1024;\n}\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n/* These items copied from Node.js: node/lib/_http_common.js. */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/;\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nexport function checkIsHttpToken(val) {\n return tokenRegExp.test(val);\n}\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n/**\n * True if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nexport function checkInvalidHeaderChar(val) {\n return headerCharRegex.test(val);\n}\nexport const chunkExpression = /(?:^|\\W)chunked(?:$|\\W)/i;\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\n// This file modeled after Node.js - node/lib/_http_outgoing.js\nimport { Buffer } from \"node:buffer\";\nimport { Writable } from \"node:stream\";\nimport { ERR_HTTP_BODY_NOT_ALLOWED, ERR_HTTP_CONTENT_LENGTH_MISMATCH, ERR_HTTP_HEADERS_SENT, ERR_HTTP_INVALID_HEADER_VALUE, ERR_HTTP_TRAILER_INVALID, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_INVALID_CHAR, ERR_INVALID_HTTP_TOKEN, ERR_METHOD_NOT_IMPLEMENTED, ERR_STREAM_ALREADY_FINISHED, ERR_STREAM_CANNOT_PIPE, ERR_STREAM_DESTROYED, ERR_STREAM_NULL_VALUES, ERR_STREAM_WRITE_AFTER_END, } from \"../utils/errors.js\";\nimport { isUint8Array, validateString } from \"../utils/types.js\";\nimport { kNeedDrain, kOutHeaders, utcDate } from \"./internal-http.js\";\nimport { getDefaultHighWaterMark } from \"./internal-streams-state.js\";\nimport { checkInvalidHeaderChar, checkIsHttpToken, chunkExpression as RE_TE_CHUNKED, } from \"./http-common.js\";\n/* These items copied from Node.js: node/lib/_http_outgoing.js. */\nfunction debug(format) {\n // console.log(\"http \" + format);\n}\nconst kCorked = Symbol(\"corked\");\nconst kChunkedBuffer = Symbol(\"kChunkedBuffer\");\nconst kChunkedLength = Symbol(\"kChunkedLength\");\nconst kUniqueHeaders = Symbol(\"kUniqueHeaders\");\nconst kBytesWritten = Symbol(\"kBytesWritten\");\nconst kErrored = Symbol(\"errored\");\nconst kHighWaterMark = Symbol(\"kHighWaterMark\");\nconst kRejectNonStandardBodyWrites = Symbol(\"kRejectNonStandardBodyWrites\");\nconst nop = () => { };\nconst RE_CONN_CLOSE = /(?:^|\\W)close(?:$|\\W)/i;\n// isCookieField performs a case-insensitive comparison of a provided string\n// against the word \"cookie.\" As of V8 6.6 this is faster than handrolling or\n// using a case-insensitive RegExp.\nfunction isCookieField(s) {\n return s.length === 6 && s.toLowerCase() === \"cookie\";\n}\nfunction isContentDispositionField(s) {\n return s.length === 19 && s.toLowerCase() === \"content-disposition\";\n}\n/**\n * An in-memory buffer that stores the chunks that have been streamed to an\n * OutgoingMessage instance.\n */\nexport class WrittenDataBuffer {\n [kCorked] = 0;\n [kHighWaterMark] = getDefaultHighWaterMark();\n entries = [];\n onWrite;\n constructor(params = {}) {\n this.onWrite = params.onWrite;\n }\n write(data, encoding, callback) {\n this.entries.push({\n data,\n length: data.length,\n encoding,\n callback,\n written: false,\n });\n this._flush();\n return true;\n }\n cork() {\n this[kCorked]++;\n }\n uncork() {\n this[kCorked]--;\n this._flush();\n }\n _flush() {\n if (this[kCorked] <= 0) {\n for (const [index, entry] of this.entries.entries()) {\n if (!entry.written) {\n entry.written = true;\n if (this.onWrite != null) {\n this.onWrite(index, entry);\n }\n if (entry.callback != null) {\n entry.callback.call(undefined);\n }\n }\n }\n }\n }\n get writableLength() {\n return this.entries.reduce((acc, entry) => {\n return acc + (entry.written && entry.length ? entry.length : 0);\n }, 0);\n }\n get writableHighWaterMark() {\n return this[kHighWaterMark];\n }\n get writableCorked() {\n return this[kCorked];\n }\n}\n/**\n * This is an implementation of OutgoingMessage from Node.js intended to run in\n * a WinterTC runtime. The 'Writable' interface of this class is wired to an in-memory\n * buffer.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_http_outgoing.js\n */\nexport class FetchOutgoingMessage extends Writable {\n req;\n outputData;\n outputSize;\n // Difference from Node.js -\n // `writtenHeaderBytes` is the number of bytes the header has taken.\n // Since Node.js writes both the headers and body into the same outgoing\n // stream, it helps to keep track of this so that we can skip that many bytes\n // from the beginning of the stream when providing the outgoing stream.\n writtenHeaderBytes = 0;\n _last;\n chunkedEncoding;\n shouldKeepAlive;\n maxRequestsOnConnectionReached;\n _defaultKeepAlive;\n useChunkedEncodingByDefault;\n sendDate;\n _removedConnection;\n _removedContLen;\n _removedTE;\n strictContentLength;\n [kBytesWritten];\n _contentLength;\n _hasBody;\n _trailer;\n [kNeedDrain];\n finished;\n _headerSent;\n [kCorked];\n [kChunkedBuffer];\n [kChunkedLength];\n _closed;\n // Difference from Node.js -\n // In Node.js, this is a socket object.\n // [kSocket]: null;\n _header;\n [kOutHeaders];\n _keepAliveTimeout;\n _maxRequestsPerSocket;\n _onPendingData;\n [kUniqueHeaders];\n [kErrored];\n [kHighWaterMark];\n [kRejectNonStandardBodyWrites];\n _writtenDataBuffer = new WrittenDataBuffer({\n onWrite: this._onDataWritten.bind(this),\n });\n constructor(req, options) {\n super();\n this.req = req;\n // Queue that holds all currently pending data, until the response will be\n // assigned to the socket (until it will its turn in the HTTP pipeline).\n this.outputData = [];\n // `outputSize` is an approximate measure of how much data is queued on this\n // response. `_onPendingData` will be invoked to update similar global\n // per-connection counter. That counter will be used to pause/unpause the\n // TCP socket and HTTP Parser and thus handle the backpressure.\n this.outputSize = 0;\n // Cannot assign to this.writable because it is a readonly property\n // this.writable = true;\n this.destroyed = false;\n this._last = false;\n this.chunkedEncoding = false;\n this.shouldKeepAlive = true;\n this.maxRequestsOnConnectionReached = false;\n this._defaultKeepAlive = true;\n this.useChunkedEncodingByDefault = true;\n this.sendDate = false;\n this._removedConnection = false;\n this._removedContLen = false;\n this._removedTE = false;\n this.strictContentLength = false;\n this[kBytesWritten] = 0;\n this._contentLength = null;\n this._hasBody = true;\n this._trailer = \"\";\n this[kNeedDrain] = false;\n this.finished = false;\n this._headerSent = false;\n this[kCorked] = 0;\n this[kChunkedBuffer] = [];\n this[kChunkedLength] = 0;\n this._closed = false;\n this._header = null;\n this[kOutHeaders] = null;\n this._keepAliveTimeout = 0;\n this._onPendingData = nop;\n this[kErrored] = null;\n this[kHighWaterMark] = options?.highWaterMark ?? getDefaultHighWaterMark();\n this[kRejectNonStandardBodyWrites] =\n options?.rejectNonStandardBodyWrites ?? false;\n this[kUniqueHeaders] = null;\n }\n _renderHeaders() {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"render\");\n }\n const headersMap = this[kOutHeaders];\n const headers = {};\n if (headersMap !== null) {\n const keys = Object.keys(headersMap);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n headers[headersMap[key][0]] = headersMap[key][1];\n }\n }\n return headers;\n }\n cork() {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would call cork() on the socket instead\n // In our implementation, we do the same to the \"written data buffer\" instead.\n this[kCorked]++;\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n }\n uncork() {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would call uncork() on the socket instead\n // In our implementation, we do the same to the \"written data buffer\" instead.\n this[kCorked]--;\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.uncork();\n }\n if (this[kCorked] || this[kChunkedBuffer].length === 0) {\n return;\n }\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // All commented out code below is from Node.js used for this purpose.\n // const len = this[kChunkedLength];\n const buf = this[kChunkedBuffer];\n // assert(this.chunkedEncoding);\n // let callbacks: (WriteCallback | undefined)[] | undefined;\n // this._send(len.toString(16), \"latin1\", null);\n // this._send(crlf_buf, null, null);\n for (const { data, encoding, callback } of buf) {\n // this._send(data ?? \"\", encoding, null);\n // if (callback) {\n // callbacks ??= [];\n // callbacks.push(callback);\n // }\n this._send(data ?? \"\", encoding, callback);\n }\n // this._send(\n // crlf_buf,\n // null,\n // callbacks?.length\n // ? (err) => {\n // for (const callback of callbacks) {\n // callback?.(err);\n // }\n // }\n // : null\n // );\n this[kChunkedBuffer].length = 0;\n this[kChunkedLength] = 0;\n }\n setTimeout(msecs, callback) {\n // Difference from Node.js -\n // In Node.js, this is supposed to set the underlying socket to time out\n // after some time and then run a callback.\n // We do nothing here since we don't really have a way to support direct\n // access to the socket.\n return this;\n }\n destroy(error) {\n if (this.destroyed) {\n return this;\n }\n this.destroyed = true;\n this[kErrored] = error;\n // Difference from Node.js -\n // In Node.js, we would also attempt to destroy the underlying socket.\n return this;\n }\n _send(data, encoding, callback, byteLength) {\n // This is a shameful hack to get the headers and first body chunk onto\n // the same packet. Future versions of Node are going to take care of\n // this at a lower level and in a more general way.\n if (!this._headerSent) {\n const header = this._header;\n if (typeof data === \"string\" &&\n (encoding === \"utf8\" || encoding === \"latin1\" || !encoding)) {\n data = header + data;\n }\n else {\n this.outputData.unshift({\n data: header,\n encoding: \"latin1\",\n callback: undefined,\n });\n this.outputSize += header.length;\n this._onPendingData(header.length);\n }\n this._headerSent = true;\n // Difference from Node.js -\n // Parse headers here and trigger _headersSent\n this.writtenHeaderBytes = header.length;\n // Save written headers as object\n const [statusLine, ...headerLines] = this._header.split(\"\\r\\n\");\n const STATUS_LINE_REGEXP = /^HTTP\\/1\\.1 (?<statusCode>\\d+) (?<statusMessage>.*)$/;\n const statusLineResult = STATUS_LINE_REGEXP.exec(statusLine);\n if (statusLineResult == null) {\n throw new Error(\"Unexpected! Status line was \" + statusLine);\n }\n const { statusCode: statusCodeText, statusMessage } = statusLineResult.groups ?? {};\n const statusCode = parseInt(statusCodeText, 10);\n const headers = [];\n for (const headerLine of headerLines) {\n if (headerLine !== \"\") {\n const pos = headerLine.indexOf(\": \");\n const k = headerLine.slice(0, pos);\n const v = headerLine.slice(pos + 2); // Skip the colon and the space\n headers.push([k, v]);\n }\n }\n const event = {\n statusCode,\n statusMessage,\n headers,\n };\n this.emit(\"_headersSent\", event);\n }\n return this._writeRaw(data, encoding, callback, byteLength);\n }\n _writeRaw(data, encoding, callback, size) {\n // Difference from Node.js -\n // In Node.js, we would check for an underlying socket, and if that socket\n // exists and is already destroyed, simply return false.\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n // Difference from Node.js -\n // In Node.js, we would check for an underlying socket, and if that socket\n // exists and is currently writable, it would flush any pending data to the socket and then\n // write the current chunk's data directly into the socket. Afterwards, it would return with the\n // value returned from socket.write().\n // In our implementation, instead we do the same for the \"written data buffer\".\n if (this._writtenDataBuffer != null) {\n // There might be pending data in the this.output buffer.\n if (this.outputData.length) {\n this._flushOutput(this._writtenDataBuffer);\n }\n // Directly write to the buffer.\n return this._writtenDataBuffer.write(data, encoding, callback);\n }\n // Buffer, as long as we're not destroyed.\n this.outputData.push({ data, encoding, callback });\n this.outputSize += data.length;\n this._onPendingData(data.length);\n return this.outputSize < this[kHighWaterMark];\n }\n _onDataWritten(index, entry) {\n const event = { index, entry };\n this.emit(\"_dataWritten\", event);\n }\n _storeHeader(firstLine, headers) {\n // firstLine in the case of request is: 'GET /index.html HTTP/1.1\\r\\n'\n // in the case of response it is: 'HTTP/1.1 200 OK\\r\\n'\n const state = {\n connection: false,\n contLen: false,\n te: false,\n date: false,\n expect: false,\n trailer: false,\n header: firstLine,\n };\n if (headers) {\n if (headers === this[kOutHeaders]) {\n for (const key in headers) {\n const entry = headers[key];\n processHeader(this, state, entry[0], entry[1], false);\n }\n }\n else if (Array.isArray(headers)) {\n if (headers.length && Array.isArray(headers[0])) {\n for (let i = 0; i < headers.length; i++) {\n const entry = headers[i];\n processHeader(this, state, entry[0], entry[1], true);\n }\n }\n else {\n if (headers.length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE(\"headers\", headers);\n }\n for (let n = 0; n < headers.length; n += 2) {\n processHeader(this, state, headers[n], headers[n + 1], true);\n }\n }\n }\n else {\n for (const key in headers) {\n if (headers.hasOwnProperty(key)) {\n const _headers = headers;\n processHeader(this, state, key, _headers[key], true);\n }\n }\n }\n }\n let { header } = state;\n // Date header\n if (this.sendDate && !state.date) {\n header += \"Date: \" + utcDate() + \"\\r\\n\";\n }\n // Force the connection to close when the response is a 204 No Content or\n // a 304 Not Modified and the user has set a \"Transfer-Encoding: chunked\"\n // header.\n //\n // RFC 2616 mandates that 204 and 304 responses MUST NOT have a body but\n // node.js used to send out a zero chunk anyway to accommodate clients\n // that don't have special handling for those responses.\n //\n // It was pointed out that this might confuse reverse proxies to the point\n // of creating security liabilities, so suppress the zero chunk and force\n // the connection to close.\n // NOTE: the \"as any\" here is needed because 'statusCode' is only\n // defined on the subclass but is used here.\n if (this.chunkedEncoding &&\n (this.statusCode === 204 || this.statusCode === 304)) {\n debug(this.statusCode +\n \" response should not use chunked encoding,\" +\n \" closing connection.\");\n this.chunkedEncoding = false;\n this.shouldKeepAlive = false;\n }\n // keep-alive logic\n if (this._removedConnection) {\n // shouldKeepAlive is generally true for HTTP/1.1. In that common case,\n // even if the connection header isn't sent, we still persist by default.\n this._last = !this.shouldKeepAlive;\n }\n else if (!state.connection) {\n // this.agent would only exist on class ClientRequest\n const shouldSendKeepAlive = this.shouldKeepAlive &&\n (state.contLen || this.useChunkedEncodingByDefault); /* || this.agent */\n if (shouldSendKeepAlive && this.maxRequestsOnConnectionReached) {\n header += \"Connection: close\\r\\n\";\n }\n else if (shouldSendKeepAlive) {\n header += \"Connection: keep-alive\\r\\n\";\n if (this._keepAliveTimeout && this._defaultKeepAlive) {\n const timeoutSeconds = Math.floor(this._keepAliveTimeout / 1000);\n let max = \"\";\n if (this._maxRequestsPerSocket && ~~this._maxRequestsPerSocket > 0) {\n max = `, max=${this._maxRequestsPerSocket}`;\n }\n header += `Keep-Alive: timeout=${timeoutSeconds}${max}\\r\\n`;\n }\n }\n else {\n this._last = true;\n header += \"Connection: close\\r\\n\";\n }\n }\n if (!state.contLen && !state.te) {\n if (!this._hasBody) {\n // Make sure we don't end the 0\\r\\n\\r\\n at the end of the message.\n this.chunkedEncoding = false;\n }\n else if (!this.useChunkedEncodingByDefault) {\n this._last = true;\n }\n else if (!state.trailer &&\n !this._removedContLen &&\n typeof this._contentLength === \"number\") {\n header += \"Content-Length: \" + this._contentLength + \"\\r\\n\";\n }\n else if (!this._removedTE) {\n header += \"Transfer-Encoding: chunked\\r\\n\";\n this.chunkedEncoding = true;\n }\n else {\n // We should only be able to get here if both Content-Length and\n // Transfer-Encoding are removed by the user.\n // See: test/parallel/test-http-remove-header-stays-removed.js\n debug(\"Both Content-Length and Transfer-Encoding are removed\");\n // We can't keep alive in this case, because with no header info the body\n // is defined as all data until the connection is closed.\n this._last = true;\n }\n }\n // Test non-chunked message does not have trailer header set,\n // message will be terminated by the first empty line after the\n // header fields, regardless of the header fields present in the\n // message, and thus cannot contain a message body or 'trailers'.\n if (this.chunkedEncoding !== true && state.trailer) {\n throw new ERR_HTTP_TRAILER_INVALID();\n }\n this._header = header + \"\\r\\n\";\n this._headerSent = false;\n // Wait until the first body chunk, or close(), is sent to flush,\n // UNLESS we're sending Expect: 100-continue.\n if (state.expect) {\n this._send(\"\");\n }\n }\n get _headers() {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headers is deprecated\");\n return this.getHeaders();\n }\n set _headers(val) {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headers is deprecated\");\n if (val == null) {\n this[kOutHeaders] = null;\n }\n else if (typeof val === \"object\") {\n const headers = (this[kOutHeaders] = Object.create(null));\n const keys = Object.keys(val);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const name = keys[i];\n headers[name.toLowerCase()] = [name, val[name]];\n }\n }\n }\n get connection() {\n // Difference from Node.js -\n // Connection is not supported\n return null;\n }\n set connection(_socket) {\n // Difference from Node.js -\n // Connection is not supported\n console.error(\"No support for OutgoingMessage.connection\");\n }\n get socket() {\n // Difference from Node.js -\n // socket is not supported\n return null;\n }\n set socket(_socket) {\n // Difference from Node.js -\n // socket is not supported\n console.error(\"No support for OutgoingMessage.socket\");\n }\n get _headerNames() {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headerNames is deprecated\");\n const headers = this[kOutHeaders];\n if (headers !== null) {\n const out = Object.create(null);\n const keys = Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n const val = headers[key][0];\n out[key] = val;\n }\n return out;\n }\n return null;\n }\n set _headerNames(val) {\n console.warn(\"DEP0066: OutgoingMessage.prototype._headerNames is deprecated\");\n if (typeof val === \"object\" && val !== null) {\n const headers = this[kOutHeaders];\n if (!headers)\n return;\n const keys = Object.keys(val);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const header = headers[keys[i]];\n if (header)\n header[0] = val[keys[i]];\n }\n }\n }\n setHeader(name, value) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"set\");\n }\n validateHeaderName(name);\n validateHeaderValue(name, value);\n let headers = this[kOutHeaders];\n if (headers === null) {\n this[kOutHeaders] = headers = { __proto__: null };\n }\n headers[name.toLowerCase()] = [name, value];\n return this;\n }\n setHeaders(headers) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"set\");\n }\n if (!headers ||\n Array.isArray(headers) ||\n typeof headers.keys !== \"function\" ||\n typeof headers.get !== \"function\") {\n throw new ERR_INVALID_ARG_TYPE(\"headers\", [\"Headers\", \"Map\"], headers);\n }\n // Headers object joins multiple cookies with a comma when using\n // the getter to retrieve the value,\n // unless iterating over the headers directly.\n // We also cannot safely split by comma.\n // To avoid setHeader overwriting the previous value we push\n // set-cookie values in array and set them all at once.\n const cookies = [];\n for (const { 0: key, 1: value } of headers) {\n if (key === \"set-cookie\") {\n if (Array.isArray(value)) {\n cookies.push(...value);\n }\n else {\n cookies.push(value);\n }\n continue;\n }\n this.setHeader(key, value);\n }\n if (cookies.length) {\n this.setHeader(\"set-cookie\", cookies);\n }\n return this;\n }\n appendHeader(name, value) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"append\");\n }\n validateHeaderName(name);\n validateHeaderValue(name, value);\n const field = name.toLowerCase();\n const headers = this[kOutHeaders];\n if (headers === null || !headers[field]) {\n return this.setHeader(name, value);\n }\n // Prepare the field for appending, if required\n if (!Array.isArray(headers[field][1])) {\n headers[field][1] = [headers[field][1]];\n }\n const existingValues = headers[field][1];\n if (Array.isArray(value)) {\n for (let i = 0, length = value.length; i < length; i++) {\n existingValues.push(value[i]);\n }\n }\n else {\n existingValues.push(value);\n }\n return this;\n }\n getHeader(name) {\n validateString(name, \"name\");\n const headers = this[kOutHeaders];\n if (headers === null) {\n return;\n }\n const entry = headers[name.toLowerCase()];\n return entry?.[1];\n }\n getHeaderNames() {\n return this[kOutHeaders] !== null ? Object.keys(this[kOutHeaders]) : [];\n }\n getRawHeaderNames() {\n const headersMap = this[kOutHeaders];\n if (headersMap === null)\n return [];\n const values = Object.values(headersMap);\n const headers = Array(values.length);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = values.length; i < l; i++) {\n headers[i] = values[i][0];\n }\n return headers;\n }\n getHeaders() {\n const headers = this[kOutHeaders];\n const ret = { __proto__: null };\n if (headers) {\n const keys = Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n const val = headers[key][1];\n ret[key] = val;\n }\n }\n return ret;\n }\n hasHeader(name) {\n validateString(name, \"name\");\n return (this[kOutHeaders] !== null && !!this[kOutHeaders][name.toLowerCase()]);\n }\n removeHeader(name) {\n validateString(name, \"name\");\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"remove\");\n }\n const key = name.toLowerCase();\n switch (key) {\n case \"connection\":\n this._removedConnection = true;\n break;\n case \"content-length\":\n this._removedContLen = true;\n break;\n case \"transfer-encoding\":\n this._removedTE = true;\n break;\n case \"date\":\n this.sendDate = false;\n break;\n }\n if (this[kOutHeaders] !== null) {\n delete this[kOutHeaders][key];\n }\n }\n _implicitHeader() {\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"_implicitHeader()\");\n }\n get headersSent() {\n return !!this._header;\n }\n write(chunk, encoding, callback) {\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n const ret = write_(this, chunk, encoding, callback, false);\n if (!ret) {\n this[kNeedDrain] = true;\n }\n return ret;\n }\n addTrailers(headers) {\n this._trailer = \"\";\n const isArray = Array.isArray(headers);\n const keys = isArray ? [...headers.keys()] : Object.keys(headers);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0, l = keys.length; i < l; i++) {\n let field, value;\n if (isArray) {\n const _headers = headers;\n const key = keys[i];\n field = _headers[key][0];\n value = _headers[key][1];\n }\n else {\n const _headers = headers;\n const key = keys[i];\n field = key;\n value = _headers[key];\n }\n validateHeaderName(field, \"Trailer name\");\n // Check if the field must be sent several times\n if (Array.isArray(value) &&\n value.length > 1 &&\n (!this[kUniqueHeaders] ||\n !this[kUniqueHeaders].has(field.toLowerCase()))) {\n for (let j = 0, l = value.length; j < l; j++) {\n if (checkInvalidHeaderChar(value[j])) {\n debug(`Trailer \"${field}\"[${j}] contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"trailer content\", field);\n }\n this._trailer += field + \": \" + value[j] + \"\\r\\n\";\n }\n }\n else {\n if (Array.isArray(value)) {\n value = value.join(\"; \");\n }\n if (checkInvalidHeaderChar(String(value))) {\n debug(`Trailer \"${field}\" contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"trailer content\", field);\n }\n this._trailer += field + \": \" + value + \"\\r\\n\";\n }\n }\n }\n end(chunk, encoding, callback) {\n if (typeof chunk === \"function\") {\n callback = chunk;\n chunk = null;\n encoding = null;\n }\n else if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n if (chunk) {\n if (this.finished) {\n onError(this, new ERR_STREAM_WRITE_AFTER_END(), typeof callback !== \"function\" ? nop : callback);\n return this;\n }\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.cork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n write_(this, chunk, encoding, null, true);\n }\n else if (this.finished) {\n if (typeof callback === \"function\") {\n if (!this.writableFinished) {\n this.on(\"finish\", callback);\n }\n else {\n callback(new ERR_STREAM_ALREADY_FINISHED(\"end\"));\n }\n }\n return this;\n }\n else if (!this._header) {\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.cork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.cork();\n }\n this._contentLength = 0;\n this._implicitHeader();\n }\n if (typeof callback === \"function\")\n this.once(\"finish\", callback);\n if (strictContentLength(this) &&\n this[kBytesWritten] !== this._contentLength) {\n throw new ERR_HTTP_CONTENT_LENGTH_MISMATCH(this[kBytesWritten], this._contentLength);\n }\n const finish = onFinish.bind(undefined, this);\n if (this._hasBody && this.chunkedEncoding) {\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // So here we just send an empty chunk. Trailers are not supported\n // this._send(\"0\\r\\n\" + this._trailer + \"\\r\\n\", \"latin1\", finish);\n this._send(\"\", \"latin1\", finish);\n }\n else if (!this._headerSent || this.writableLength || chunk) {\n this._send(\"\", \"latin1\", finish);\n }\n else {\n setTimeout(finish, 0);\n }\n // Difference from Node.js -\n // In Node.js, if a socket exists, we would also call socket.uncork() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n this._writtenDataBuffer.uncork();\n }\n this[kCorked] = 1;\n this.uncork();\n this.finished = true;\n // There is the first message on the outgoing queue, and we've sent\n // everything to the socket.\n debug(\"outgoing message end.\");\n // Difference from Node.js -\n // In Node.js, if a socket exists, and there is no pending output data,\n // we would also call this._finish() at this point.\n // For our implementation we do the same for the \"written data buffer\"\n if (this.outputData.length === 0 && this._writtenDataBuffer != null) {\n this._finish();\n }\n return this;\n }\n _finish() {\n // Difference from Node.js -\n // In Node.js, this function is only called if a socket exists.\n // This function would assert() for a socket and then emit 'prefinish'.\n // For our implementation we do the same for the \"written data buffer\"\n this.emit(\"prefinish\");\n }\n // No _flush() implementation?\n _flush() {\n // Difference from Node.js -\n // In Node.js, this function is only called if a socket exists.\n // For our implementation we do the same for the \"written data buffer\"\n if (this._writtenDataBuffer != null) {\n // There might be remaining data in this.output; write it out\n const ret = this._flushOutput(this._writtenDataBuffer);\n if (this.finished) {\n // This is a queue to the server or client to bring in the next this.\n this._finish();\n }\n else if (ret && this[kNeedDrain]) {\n this[kNeedDrain] = false;\n this.emit(\"drain\");\n }\n }\n }\n _flushOutput(dataBuffer) {\n while (this[kCorked]) {\n this[kCorked]--;\n dataBuffer.cork();\n }\n const outputLength = this.outputData.length;\n if (outputLength <= 0) {\n return undefined;\n }\n const outputData = this.outputData;\n dataBuffer.cork();\n let ret;\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < outputLength; i++) {\n const { data, encoding, callback } = outputData[i]; // Avoid any potential ref to Buffer in new generation from old generation\n outputData[i].data = null;\n ret = dataBuffer.write(data ?? \"\", encoding, callback);\n }\n dataBuffer.uncork();\n this.outputData = [];\n this._onPendingData(-this.outputSize);\n this.outputSize = 0;\n return ret;\n }\n flushHeaders() {\n if (!this._header) {\n this._implicitHeader();\n }\n // Force-flush the headers.\n this._send(\"\");\n }\n pipe(destination) {\n // OutgoingMessage should be write-only. Piping from it is disabled.\n this.emit(\"error\", new ERR_STREAM_CANNOT_PIPE());\n return destination;\n }\n}\nfunction processHeader(self, state, key, value, validate) {\n if (validate) {\n validateHeaderName(key);\n }\n // If key is content-disposition and there is content-length\n // encode the value in latin1\n // https://www.rfc-editor.org/rfc/rfc6266#section-4.3\n // Refs: https://github.com/nodejs/node/pull/46528\n if (isContentDispositionField(key) && self._contentLength) {\n // The value could be an array here\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n value[i] = String(Buffer.from(String(value[i]), \"latin1\"));\n }\n }\n else {\n value = String(Buffer.from(String(value), \"latin1\"));\n }\n }\n if (Array.isArray(value)) {\n if ((value.length < 2 || !isCookieField(key)) &&\n (!self[kUniqueHeaders] || !self[kUniqueHeaders].has(key.toLowerCase()))) {\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < value.length; i++) {\n storeHeader(self, state, key, value[i], validate);\n }\n return;\n }\n value = value.join(\"; \");\n }\n storeHeader(self, state, key, String(value), validate);\n}\nfunction storeHeader(self, state, key, value, validate) {\n if (validate) {\n validateHeaderValue(key, value);\n }\n state.header += key + \": \" + value + \"\\r\\n\";\n matchHeader(self, state, key, value);\n}\nfunction validateHeaderName(name, label) {\n if (typeof name !== \"string\" || !name || !checkIsHttpToken(name)) {\n throw new ERR_INVALID_HTTP_TOKEN(label || \"Header name\", name);\n }\n}\nfunction validateHeaderValue(name, value) {\n if (value === undefined) {\n throw new ERR_HTTP_INVALID_HEADER_VALUE(String(value), name);\n }\n if (checkInvalidHeaderChar(String(value))) {\n debug(`Header \"${name}\" contains invalid characters`);\n throw new ERR_INVALID_CHAR(\"header content\", name);\n }\n}\nfunction matchHeader(self, state, field, value) {\n if (field.length < 4 || field.length > 17)\n return;\n field = field.toLowerCase();\n switch (field) {\n case \"connection\":\n state.connection = true;\n self._removedConnection = false;\n if (RE_CONN_CLOSE.exec(value) !== null)\n self._last = true;\n else\n self.shouldKeepAlive = true;\n break;\n case \"transfer-encoding\":\n state.te = true;\n self._removedTE = false;\n if (RE_TE_CHUNKED.exec(value) !== null)\n self.chunkedEncoding = true;\n break;\n case \"content-length\":\n state.contLen = true;\n self._contentLength = +value;\n self._removedContLen = false;\n break;\n case \"date\":\n case \"expect\":\n case \"trailer\":\n state[field] = true;\n break;\n case \"keep-alive\":\n self._defaultKeepAlive = false;\n break;\n }\n}\n// const crlf_buf = Buffer.from(\"\\r\\n\");\nfunction onError(msg, err, callback) {\n if (msg.destroyed) {\n return;\n }\n // Difference from Node.js -\n // In Node.js, we would check for the existence of a socket. If one exists, we would\n // use that async ID to scope the error.\n // Instead, we do this.\n setTimeout(emitErrorNt, 0, msg, err, callback);\n}\nfunction emitErrorNt(msg, err, callback) {\n callback(err);\n if (typeof msg.emit === \"function\" && !msg.destroyed) {\n msg.emit(\"error\", err);\n }\n}\nfunction strictContentLength(msg) {\n return (msg.strictContentLength &&\n msg._contentLength != null &&\n msg._hasBody &&\n !msg._removedContLen &&\n !msg.chunkedEncoding &&\n !msg.hasHeader(\"transfer-encoding\"));\n}\nfunction write_(msg, chunk, encoding, callback, fromEnd) {\n if (typeof callback !== \"function\") {\n callback = nop;\n }\n if (chunk === null) {\n throw new ERR_STREAM_NULL_VALUES();\n }\n else if (typeof chunk !== \"string\" && !isUint8Array(chunk)) {\n throw new ERR_INVALID_ARG_TYPE(\"chunk\", [\"string\", \"Buffer\", \"Uint8Array\"], chunk);\n }\n let err = undefined;\n if (msg.finished) {\n err = new ERR_STREAM_WRITE_AFTER_END();\n }\n else if (msg.destroyed) {\n err = new ERR_STREAM_DESTROYED(\"write\");\n }\n if (err) {\n if (!msg.destroyed) {\n onError(msg, err, callback);\n }\n else {\n setTimeout(callback, 0, err);\n }\n return false;\n }\n let len = undefined;\n if (msg.strictContentLength) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n if (strictContentLength(msg) &&\n (fromEnd\n ? msg[kBytesWritten] + len !== msg._contentLength\n : msg[kBytesWritten] + len > (msg._contentLength ?? 0))) {\n throw new ERR_HTTP_CONTENT_LENGTH_MISMATCH(len + msg[kBytesWritten], msg._contentLength);\n }\n msg[kBytesWritten] += len;\n }\n if (!msg._header) {\n if (fromEnd) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n msg._contentLength = len;\n }\n msg._implicitHeader();\n }\n if (!msg._hasBody) {\n if (msg[kRejectNonStandardBodyWrites]) {\n throw new ERR_HTTP_BODY_NOT_ALLOWED();\n }\n else {\n debug(\"This type of response MUST NOT have a body. \" +\n \"Ignoring write() calls.\");\n setTimeout(callback, 0);\n return true;\n }\n }\n // Difference from Node.js -\n // In Node.js, we would also check at this point if a socket exists and is not corked.\n // If so, we'd cork the socket and then queue up an 'uncork' for the next tick.\n // In our implementation we do the same for \"written data buffer\"\n if (!fromEnd &&\n msg._writtenDataBuffer != null &&\n !msg._writtenDataBuffer.writableCorked) {\n msg._writtenDataBuffer.cork();\n setTimeout(connectionCorkNT, 0, msg._writtenDataBuffer);\n }\n let ret;\n if (msg.chunkedEncoding && chunk.length !== 0) {\n len ??=\n typeof chunk === \"string\"\n ? Buffer.byteLength(chunk, encoding ?? undefined)\n : chunk.byteLength;\n if (msg[kCorked] && msg._headerSent) {\n msg[kChunkedBuffer].push({ data: chunk, encoding, callback });\n msg[kChunkedLength] += len;\n ret = msg[kChunkedLength] < msg[kHighWaterMark];\n }\n else {\n // Difference from Node.js -\n // Chunked transfer encoding doesn't need to use the low-level protocol\n // (with each chunk preceded by its length)\n // msg._send(len.toString(16), \"latin1\", null);\n // msg._send(crlf_buf, null, null);\n // msg._send(chunk, encoding, null, len);\n // ret = msg._send(crlf_buf, null, callback);\n ret = msg._send(chunk, encoding, callback, len);\n }\n }\n else {\n ret = msg._send(chunk, encoding, callback, len);\n }\n debug(\"write ret = \" + ret);\n return ret;\n}\nfunction connectionCorkNT(dataBuffer) {\n dataBuffer.uncork();\n}\nfunction onFinish(outmsg) {\n // Difference from Node.js -\n // In Node.js, if a socket exists and already had an error, we would simply return.\n outmsg.emit(\"finish\");\n}\n// Override some properties this way, because TypeScript won't let us override\n// properties with accessors.\nObject.defineProperties(FetchOutgoingMessage.prototype, {\n errored: {\n get() {\n return this[kErrored];\n },\n },\n closed: {\n get() {\n return this._closed;\n },\n },\n writableFinished: {\n get() {\n // Difference from Node.js -\n // In Node.js, there is one additional requirement --\n // there must be no underlying socket (or its writableLength must be 0).\n // In this implementation we will do the same against \"written data buffer\".\n return (this.finished &&\n this.outputSize === 0 &&\n (this._writtenDataBuffer == null ||\n this._writtenDataBuffer.writableLength === 0));\n },\n },\n writableObjectMode: {\n get() {\n return false;\n },\n },\n writableLength: {\n get() {\n // Difference from Node.js -\n // In Node.js, if a socket exists then that socket's writableLength is added to\n // this value.\n // In this implementation we will do the same against \"written data buffer\".\n return (this.outputSize +\n this[kChunkedLength] +\n (this._writtenDataBuffer != null\n ? this._writtenDataBuffer.writableLength\n : 0));\n },\n },\n writableHighWaterMark: {\n get() {\n // Difference from Node.js -\n // In Node.js, if a socket exists then use that socket's writableHighWaterMark\n // In this implementation we will do the same against \"written data buffer\".\n return this._writtenDataBuffer != null\n ? this._writtenDataBuffer.writableHighWaterMark\n : this[kHighWaterMark];\n },\n },\n writableCorked: {\n get() {\n return this[kCorked];\n },\n },\n writableEnded: {\n get() {\n return this.finished;\n },\n },\n writableNeedDrain: {\n get() {\n return !this.destroyed && !this.finished && this[kNeedDrain];\n },\n },\n});\n","/*\n * Copyright Michael Hart\n * Licensed under the MIT license. See LICENSE file for details.\n *\n * Portions of this file Copyright Fastly, Inc. See LICENSE file for details.\n * Portions of this file Copyright Joyent, Inc. and other Node contributors. See LICENSE file for details.\n */\nimport { Buffer } from \"node:buffer\";\nimport { ERR_HTTP_HEADERS_SENT, ERR_HTTP_INVALID_STATUS_CODE, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_INVALID_CHAR, ERR_METHOD_NOT_IMPLEMENTED, } from \"../utils/errors.js\";\nimport { FetchOutgoingMessage, } from \"./http-outgoing.js\";\nimport { chunkExpression } from \"./http-common.js\";\nimport { FetchIncomingMessage } from \"./http-incoming.js\";\nimport { kOutHeaders } from \"./internal-http.js\";\nimport { validateLinkHeaderValue } from \"../utils/types.js\";\n/* These items copied from Node.js: node/lib/_http_common.js. */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n/**\n * True if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nfunction checkInvalidHeaderChar(val) {\n return headerCharRegex.test(val);\n}\n// This file modeled after Node.js - node/lib/_http_server.js\nexport const STATUS_CODES = {\n 100: \"Continue\", // RFC 7231 6.2.1\n 101: \"Switching Protocols\", // RFC 7231 6.2.2\n 102: \"Processing\", // RFC 2518 10.1 (obsoleted by RFC 4918)\n 103: \"Early Hints\", // RFC 8297 2\n 200: \"OK\", // RFC 7231 6.3.1\n 201: \"Created\", // RFC 7231 6.3.2\n 202: \"Accepted\", // RFC 7231 6.3.3\n 203: \"Non-Authoritative Information\", // RFC 7231 6.3.4\n 204: \"No Content\", // RFC 7231 6.3.5\n 205: \"Reset Content\", // RFC 7231 6.3.6\n 206: \"Partial Content\", // RFC 7233 4.1\n 207: \"Multi-Status\", // RFC 4918 11.1\n 208: \"Already Reported\", // RFC 5842 7.1\n 226: \"IM Used\", // RFC 3229 10.4.1\n 300: \"Multiple Choices\", // RFC 7231 6.4.1\n 301: \"Moved Permanently\", // RFC 7231 6.4.2\n 302: \"Found\", // RFC 7231 6.4.3\n 303: \"See Other\", // RFC 7231 6.4.4\n 304: \"Not Modified\", // RFC 7232 4.1\n 305: \"Use Proxy\", // RFC 7231 6.4.5\n 307: \"Temporary Redirect\", // RFC 7231 6.4.7\n 308: \"Permanent Redirect\", // RFC 7238 3\n 400: \"Bad Request\", // RFC 7231 6.5.1\n 401: \"Unauthorized\", // RFC 7235 3.1\n 402: \"Payment Required\", // RFC 7231 6.5.2\n 403: \"Forbidden\", // RFC 7231 6.5.3\n 404: \"Not Found\", // RFC 7231 6.5.4\n 405: \"Method Not Allowed\", // RFC 7231 6.5.5\n 406: \"Not Acceptable\", // RFC 7231 6.5.6\n 407: \"Proxy Authentication Required\", // RFC 7235 3.2\n 408: \"Request Timeout\", // RFC 7231 6.5.7\n 409: \"Conflict\", // RFC 7231 6.5.8\n 410: \"Gone\", // RFC 7231 6.5.9\n 411: \"Length Required\", // RFC 7231 6.5.10\n 412: \"Precondition Failed\", // RFC 7232 4.2\n 413: \"Payload Too Large\", // RFC 7231 6.5.11\n 414: \"URI Too Long\", // RFC 7231 6.5.12\n 415: \"Unsupported Media Type\", // RFC 7231 6.5.13\n 416: \"Range Not Satisfiable\", // RFC 7233 4.4\n 417: \"Expectation Failed\", // RFC 7231 6.5.14\n 418: \"I'm a Teapot\", // RFC 7168 2.3.3\n 421: \"Misdirected Request\", // RFC 7540 9.1.2\n 422: \"Unprocessable Entity\", // RFC 4918 11.2\n 423: \"Locked\", // RFC 4918 11.3\n 424: \"Failed Dependency\", // RFC 4918 11.4\n 425: \"Too Early\", // RFC 8470 5.2\n 426: \"Upgrade Required\", // RFC 2817 and RFC 7231 6.5.15\n 428: \"Precondition Required\", // RFC 6585 3\n 429: \"Too Many Requests\", // RFC 6585 4\n 431: \"Request Header Fields Too Large\", // RFC 6585 5\n 451: \"Unavailable For Legal Reasons\", // RFC 7725 3\n 500: \"Internal Server Error\", // RFC 7231 6.6.1\n 501: \"Not Implemented\", // RFC 7231 6.6.2\n 502: \"Bad Gateway\", // RFC 7231 6.6.3\n 503: \"Service Unavailable\", // RFC 7231 6.6.4\n 504: \"Gateway Timeout\", // RFC 7231 6.6.5\n 505: \"HTTP Version Not Supported\", // RFC 7231 6.6.6\n 506: \"Variant Also Negotiates\", // RFC 2295 8.1\n 507: \"Insufficient Storage\", // RFC 4918 11.5\n 508: \"Loop Detected\", // RFC 5842 7.2\n 509: \"Bandwidth Limit Exceeded\",\n 510: \"Not Extended\", // RFC 2774 7\n 511: \"Network Authentication Required\", // RFC 6585 6\n};\n/**\n * This is an implementation of ServerResponse from Node.js intended to run in\n * a WinterTC runtime. The 'Writable' interface of this class is wired to an in-memory\n * buffer. This class also provides a method that creates a Response object that\n * can be handled by the runtime.\n *\n * This instance can be used in normal ways, but it does not give access to the\n * underlying socket (because there isn't one. req.socket will always return null).\n *\n * Some code in this class is transplanted/adapted from node/lib/_httpserver.js\n *\n * NOTE: Node.js doesn't really separate the body from headers, the entire \"stream\"\n * contains the headers and the body. So we provide functions that lets us pull\n * the headers and body out individually at a later time.\n */\nexport class FetchServerResponse extends FetchOutgoingMessage {\n static encoder = new TextEncoder();\n statusCode = 200;\n statusMessage;\n _sent100;\n _expect_continue;\n [kOutHeaders] = null;\n constructor(req, options) {\n super(req, options);\n if (req.method === \"HEAD\") {\n this._hasBody = false;\n }\n // this.req = req; // super() actually does this\n this.sendDate = true;\n this._sent100 = false;\n this._expect_continue = false;\n if (req.httpVersionMajor < 1 || req.httpVersionMinor < 1) {\n this.useChunkedEncodingByDefault =\n chunkExpression.exec(String(req.headers.te)) !== null;\n this.shouldKeepAlive = false;\n }\n // Difference from Node.js -\n // In Node.js, in addition to the above, we would check if an observer is enabled for\n // http, and if it is, we would start performance measurement of server response statistics.\n this.fetchResponse = new Promise((resolve) => {\n let finished = false;\n this.on(\"finish\", () => {\n finished = true;\n });\n const initialDataChunks = [];\n const initialDataWrittenHandler = (e) => {\n if (finished) {\n return;\n }\n initialDataChunks[e.index] = this.dataFromDataWrittenEvent(e);\n };\n this.on(\"_dataWritten\", initialDataWrittenHandler);\n this.on(\"_headersSent\", (e) => {\n this.off(\"_dataWritten\", initialDataWrittenHandler);\n // Convert the response object to a Response object and return it\n const { statusCode, statusMessage, headers } = e;\n resolve(this._toFetchResponse(statusCode, statusMessage, headers, initialDataChunks, finished));\n });\n });\n }\n dataFromDataWrittenEvent(e) {\n const { index, entry } = e;\n let { data, encoding } = entry;\n if (index === 0) {\n if (typeof data !== \"string\") {\n console.error(\"First chunk should be string, not sure what happened.\");\n throw new ERR_INVALID_ARG_TYPE(\"packet.data\", [\"string\", \"Buffer\", \"Uint8Array\"], data);\n }\n // The first X bytes are header material, so we remove it.\n data = data.slice(this.writtenHeaderBytes);\n }\n if (typeof data === \"string\") {\n if (encoding === undefined ||\n encoding === \"utf8\" ||\n encoding === \"utf-8\") {\n data = FetchServerResponse.encoder.encode(data);\n }\n else {\n data = Buffer.from(data, encoding ?? undefined);\n }\n }\n return data ?? Buffer.from([]);\n }\n _finish() {\n // Difference from Node.js -\n // In Node.js, if server response statistics performance is being measured, we would stop it.\n super._finish();\n }\n assignSocket(socket) {\n // Difference from Node.js -\n // Socket is not supported\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"assignSocket\");\n }\n detachSocket(socket) {\n // Difference from Node.js -\n // Socket is not supported\n throw new ERR_METHOD_NOT_IMPLEMENTED(\"detachSocket\");\n }\n writeContinue(callback) {\n this._writeRaw(\"HTTP/1.1 100 Continue\\r\\n\\r\\n\", \"ascii\", callback);\n this._sent100 = true;\n }\n writeProcessing(callback) {\n this._writeRaw(\"HTTP/1.1 102 Processing\\r\\n\\r\\n\", \"ascii\", callback);\n }\n writeEarlyHints(hints, callback) {\n let head = \"HTTP/1.1 103 Early Hints\\r\\n\";\n // Difference from Node.js -\n // In Node.js, we would validate the hints object here.\n // validateObject(hints, 'hints');\n if (hints.link === null || hints.link === undefined) {\n return;\n }\n const link = validateLinkHeaderValue(hints.link);\n if (link.length === 0) {\n return;\n }\n head += \"Link: \" + link + \"\\r\\n\";\n for (const key of Object.keys(hints)) {\n if (key !== \"link\") {\n head += key + \": \" + hints[key] + \"\\r\\n\";\n }\n }\n head += \"\\r\\n\";\n this._writeRaw(head, \"ascii\", callback);\n }\n _implicitHeader() {\n this.writeHead(this.statusCode);\n }\n writeHead(statusCode, reason, obj) {\n if (this._header) {\n throw new ERR_HTTP_HEADERS_SENT(\"write\");\n }\n const originalStatusCode = statusCode;\n statusCode |= 0;\n if (statusCode < 100 || statusCode > 999) {\n throw new ERR_HTTP_INVALID_STATUS_CODE(originalStatusCode);\n }\n if (typeof reason === \"string\") {\n // writeHead(statusCode, reasonPhrase[, headers])\n this.statusMessage = reason;\n }\n else {\n // writeHead(statusCode[, headers])\n this.statusMessage ||= STATUS_CODES[statusCode] || \"unknown\";\n obj ??= reason;\n }\n this.statusCode = statusCode;\n let headers;\n if (this[kOutHeaders]) {\n // Slow-case: when progressive API and header fields are passed.\n let k;\n if (Array.isArray(obj)) {\n if (obj.length % 2 !== 0) {\n throw new ERR_INVALID_ARG_VALUE(\"headers\", obj);\n }\n // Headers in obj should override previous headers but still\n // allow explicit duplicates. To do so, we first remove any\n // existing conflicts, then use appendHeader.\n for (let n = 0; n < obj.length; n += 2) {\n k = obj[n + 0];\n this.removeHeader(String(k));\n }\n for (let n = 0; n < obj.length; n += 2) {\n k = obj[n];\n if (k) {\n this.appendHeader(String(k), obj[n + 1]);\n }\n }\n }\n else if (obj) {\n const keys = Object.keys(obj);\n // Retain for(;;) loop for performance reasons\n // Refs: https://github.com/nodejs/node/pull/30958\n for (let i = 0; i < keys.length; i++) {\n k = keys[i];\n if (k) {\n this.setHeader(k, obj[k]);\n }\n }\n }\n // Only progressive api is used\n headers = this[kOutHeaders];\n }\n else {\n // Only writeHead() called\n headers = obj;\n }\n if (checkInvalidHeaderChar(this.statusMessage)) {\n throw new ERR_INVALID_CHAR(\"statusMessage\");\n }\n const statusLine = `HTTP/1.1 ${statusCode} ${this.statusMessage}\\r\\n`;\n if (statusCode === 204 ||\n statusCode === 304 ||\n (statusCode >= 100 && statusCode <= 199)) {\n // RFC 2616, 10.2.5:\n // The 204 response MUST NOT include a message-body, and thus is always\n // terminated by the first empty line after the header fields.\n // RFC 2616, 10.3.5:\n // The 304 response MUST NOT contain a message-body, and thus is always\n // terminated by the first empty line after the header fields.\n // RFC 2616, 10.1 Informational 1xx:\n // This class of status code indicates a provisional response,\n // consisting only of the Status-Line and optional headers, and is\n // terminated by an empty line.\n this._hasBody = false;\n }\n // Don't keep alive connections where the client expects 100 Continue\n // but we sent a final status; they may put extra bytes on the wire.\n if (this._expect_continue && !this._sent100) {\n this.shouldKeepAlive = false;\n }\n // Convert headers to a compatible type for _storeHeader\n const convertedHeaders = headers && !Array.isArray(headers)\n ? headers\n : headers;\n this._storeHeader(statusLine, convertedHeaders ?? null);\n return this;\n }\n // Docs-only deprecated: DEP0063\n writeHeader = this.writeHead;\n fetchResponse;\n _toFetchResponse(status, statusText, sentHeaders, initialDataChunks, finished) {\n const headers = new Headers();\n for (const [header, value] of sentHeaders) {\n headers.append(header, value);\n }\n const _this = this;\n let body = this._hasBody\n ? new ReadableStream({\n start(controller) {\n for (const dataChunk of initialDataChunks) {\n controller.enqueue(dataChunk);\n }\n if (finished) {\n controller.close();\n }\n else {\n _this.on(\"finish\", () => {\n finished = true;\n controller.close();\n });\n _this.on(\"_dataWritten\", (e) => {\n if (finished) {\n return;\n }\n const data = _this.dataFromDataWrittenEvent(e);\n controller.enqueue(data);\n });\n }\n },\n })\n : null;\n // @ts-expect-error this is (currently) a cloudflare-specific class\n if (body != null && typeof FixedLengthStream !== \"undefined\") {\n const contentLength = parseInt(headers.get(\"content-length\") ?? \"\", 10); // will be NaN if not set\n if (contentLength >= 0) {\n // @ts-expect-error this is (currently) a cloudflare-specific class\n body = body.pipeThrough(new FixedLengthStream(contentLength));\n }\n }\n return new Response(body, {\n status,\n statusText,\n headers,\n });\n }\n}\nexport function toReqRes(req, options) {\n const { createIncomingMessage = () => new FetchIncomingMessage(), createServerResponse = (incoming) => new FetchServerResponse(incoming), ctx, } = options ?? {};\n const incoming = createIncomingMessage(ctx);\n const serverResponse = createServerResponse(incoming, ctx);\n const reqUrl = new URL(req.url);\n const versionMajor = 1;\n const versionMinor = 1;\n incoming.httpVersionMajor = versionMajor;\n incoming.httpVersionMinor = versionMinor;\n incoming.httpVersion = `${versionMajor}.${versionMinor}`;\n incoming.url = reqUrl.pathname + reqUrl.search;\n incoming.upgrade = false;\n const headers = [];\n for (const [headerName, headerValue] of req.headers) {\n headers.push(headerName);\n headers.push(headerValue);\n }\n incoming._addHeaderLines(headers, headers.length);\n incoming.method = req.method;\n incoming._stream = req.body;\n return {\n req: incoming,\n res: serverResponse,\n };\n}\nexport function toFetchResponse(res) {\n if (!(res instanceof FetchServerResponse)) {\n throw new Error(\"toFetchResponse must be called on a ServerResponse generated by toReqRes\");\n }\n return res.fetchResponse;\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { MCPServerBase, ServerInfo, ServerDetailInfo } from '@mastra/core/mcp';\nimport { toReqRes, toFetchResponse } from 'fetch-to-node';\nimport type { Context } from 'hono';\nimport { handleError } from '../../error';\n\n// Helper function to get the Mastra instance from the context\nconst getMastra = (c: Context): Mastra => c.get('mastra');\n\n/**\n * Handler for Streamable HTTP requests (POST, GET, DELETE) to /api/mcp/:serverId/mcp\n */\nexport const getMcpServerMessageHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('serverId');\n const { req, res } = toReqRes(c.req.raw);\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n // Use Node.js res to send response since we are not returning a Hono response\n res.writeHead(404, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: `MCP server '${serverId}' not found` }));\n return await toFetchResponse(res);\n }\n\n try {\n // Let the MCPServer instance handle the request and transport management\n await server.startHTTP({\n url: new URL(c.req.url),\n httpPath: `/api/mcp/${serverId}/mcp`,\n req,\n res,\n });\n return await toFetchResponse(res);\n } catch (error: any) {\n // If headers haven't been sent, send an error response\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: {\n code: -32603,\n message: 'Internal server error',\n },\n id: null, // Cannot determine original request ID in catch\n }),\n );\n return await toFetchResponse(res);\n } else {\n // If headers were already sent (e.g., during SSE stream), just log the error\n c.get('logger')?.error('Error after headers sent:', error);\n return await toFetchResponse(res);\n }\n }\n};\n\n/**\n * Handler for SSE related routes for an MCP server.\n * This function will be called for both establishing the SSE connection (GET)\n * and for posting messages to it (POST).\n */\nexport const getMcpServerSseHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('serverId');\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n return c.json({ error: `MCP server '${serverId}' not found` }, 404);\n }\n\n const requestUrl = new URL(c.req.url);\n\n // Define the paths that MCPServer's startSSE method will compare against.\n // These paths correspond to the routes we will define in server/index.ts.\n const sseConnectionPath = `/api/mcp/${serverId}/sse`;\n const sseMessagePath = `/api/mcp/${serverId}/messages`;\n\n try {\n // MCPServer.startSSE will use requestUrl.pathname to differentiate\n // between an SSE connection request and a message posting request.\n return await server.startHonoSSE({\n url: requestUrl,\n ssePath: sseConnectionPath,\n messagePath: sseMessagePath,\n context: c,\n });\n } catch (error: any) {\n c.get('logger')?.error({ err: error, serverId, path: requestUrl.pathname }, 'Error in MCP SSE route handler');\n return handleError(error, 'Error handling MCP SSE request');\n }\n};\n\n/**\n * Handler for GET /api/mcp/v0/servers - List MCP Servers (Registry Style)\n */\nexport const listMcpRegistryServersHandler = async (c: Context) => {\n const mastra = getMastra(c);\n if (!mastra || typeof mastra.listMCPServers !== 'function') {\n c.get('logger')?.error('Mastra instance or listMCPServers method not available in listMcpRegistryServersHandler');\n return c.json({ error: 'Mastra instance or listMCPServers method not available' }, 500);\n }\n\n const mcpServersMap = mastra.listMCPServers();\n if (!mcpServersMap) {\n c.get('logger')?.warn('listMCPServers returned undefined or null in listMcpRegistryServersHandler');\n return c.json({ servers: [], next: null, total_count: 0 });\n }\n\n const allServersArray: MCPServerBase[] = Array.from(\n mcpServersMap instanceof Map ? mcpServersMap.values() : Object.values(mcpServersMap),\n );\n\n const limit = parseInt(c.req.query('limit') || '50', 10);\n const offset = parseInt(c.req.query('offset') || '0', 10);\n\n const paginatedServers = allServersArray.slice(offset, offset + limit);\n const serverInfos: ServerInfo[] = paginatedServers.map(server => server.getServerInfo());\n\n const total_count = allServersArray.length;\n let next: string | null = null;\n if (offset + limit < total_count) {\n const nextOffset = offset + limit;\n const currentUrl = new URL(c.req.url);\n currentUrl.searchParams.set('offset', nextOffset.toString());\n currentUrl.searchParams.set('limit', limit.toString());\n next = currentUrl.toString();\n }\n\n return c.json({\n servers: serverInfos,\n next,\n total_count,\n });\n};\n\n/**\n * Handler for GET /api/mcp/v0/servers/:id - Get MCP Server Details (Registry Style)\n */\nexport const getMcpRegistryServerDetailHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('id');\n const requestedVersion = c.req.query('version'); // Get the requested version from query\n\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n c.get('logger')?.error(\n 'Mastra instance or getMCPServerById method not available in getMcpRegistryServerDetailHandler',\n );\n return c.json({ error: 'Mastra instance or getMCPServerById method not available' }, 500);\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n return c.json({ error: `MCP server with ID '${serverId}' not found` }, 404);\n }\n\n const serverDetailInfo: ServerDetailInfo = server.getServerDetail();\n\n // If a specific version was requested, check if it matches the server's actual version\n if (requestedVersion && serverDetailInfo.version_detail.version !== requestedVersion) {\n c.get('logger')?.info(\n `MCP server with ID '${serverId}' found, but version '${serverDetailInfo.version_detail.version}' does not match requested version '${requestedVersion}'.`,\n );\n return c.json(\n {\n error: `MCP server with ID '${serverId}' found, but not version '${requestedVersion}'. Available version is '${serverDetailInfo.version_detail.version}'.`,\n },\n 404, // Return 404 as the specific version is not found\n );\n }\n\n return c.json(serverDetailInfo);\n};\n\n/**\n * Handler for GET /api/mcp/:serverId/tools - List tools for a specific MCP Server\n */\nexport const listMcpServerToolsHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('serverId');\n\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n c.get('logger')?.error('Mastra instance or getMCPServerById method not available in listMcpServerToolsHandler');\n return c.json({ error: 'Mastra instance or getMCPServerById method not available' }, 500);\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n return c.json({ error: `MCP server with ID '${serverId}' not found` }, 404);\n }\n\n if (typeof server.getToolListInfo !== 'function') {\n c.get('logger')?.error(`MCPServer with ID '${serverId}' does not support getToolListInfo.`);\n return c.json({ error: `Server '${serverId}' cannot list tools in this way.` }, 501);\n }\n\n try {\n const toolListInfo = server.getToolListInfo();\n return c.json(toolListInfo);\n } catch (error: any) {\n c.get('logger')?.error(`Error in listMcpServerToolsHandler for serverId '${serverId}':`, { error: error.message });\n return handleError(error, `Error listing tools for MCP server '${serverId}'`);\n }\n};\n\n/**\n * Handler for GET /api/mcp/:serverId/tools/:toolId - Get details for a specific tool on an MCP Server\n */\nexport const getMcpServerToolDetailHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('serverId');\n const toolId = c.req.param('toolId');\n\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n c.get('logger')?.error('Mastra instance or getMCPServerById method not available in getMcpServerToolDetailHandler');\n return c.json({ error: 'Mastra instance or getMCPServerById method not available' }, 500);\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n return c.json({ error: `MCP server with ID '${serverId}' not found` }, 404);\n }\n\n if (typeof server.getToolInfo !== 'function') {\n c.get('logger')?.error(`MCPServer with ID '${serverId}' does not support getToolInfo.`);\n return c.json({ error: `Server '${serverId}' cannot provide tool details in this way.` }, 501);\n }\n\n try {\n const toolInfo = server.getToolInfo(toolId);\n if (!toolInfo) {\n return c.json({ error: `Tool with ID '${toolId}' not found on MCP server '${serverId}'` }, 404);\n }\n return c.json(toolInfo);\n } catch (error: any) {\n c.get('logger')?.error(`Error in getMcpServerToolDetailHandler for serverId '${serverId}', toolId '${toolId}':`, {\n error: error.message,\n });\n return handleError(error, `Error getting tool '${toolId}' details for MCP server '${serverId}'`);\n }\n};\n\n/**\n * Handler for POST /api/mcp/:serverId/tools/:toolId/execute - Execute a tool on an MCP Server\n */\nexport const executeMcpServerToolHandler = async (c: Context) => {\n const mastra = getMastra(c);\n const serverId = c.req.param('serverId');\n const toolId = c.req.param('toolId');\n\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n c.get('logger')?.error('Mastra instance or getMCPServerById method not available in executeMcpServerToolHandler');\n return c.json({ error: 'Mastra instance or getMCPServerById method not available' }, 500);\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n return c.json({ error: `MCP server with ID '${serverId}' not found` }, 404);\n }\n\n if (typeof server.executeTool !== 'function') {\n c.get('logger')?.error(`MCPServer with ID '${serverId}' does not support executeTool.`);\n return c.json({ error: `Server '${serverId}' cannot execute tools in this way.` }, 501);\n }\n\n try {\n const body = await c.req.json();\n const args = body?.data;\n const requestContext = body?.requestContext; // Optional\n\n // The executeTool method in MCPServer is now responsible for arg validation\n const result = await server.executeTool(toolId, args, requestContext);\n return c.json({ result }); // Or return result directly if it's already the desired JSON structure\n } catch (error: any) {\n c.get('logger')?.error(`Error executing tool '${toolId}' on server '${serverId}':`, { error: error.message });\n // Handle ZodError specifically for bad requests if thrown from MCPServer.executeTool\n if (error.name === 'ZodError') {\n // Relies on ZodError having a 'name' property\n return c.json({ error: 'Invalid tool arguments', details: error.errors }, 400);\n }\n return handleError(error, `Error executing tool '${toolId}' on MCP server '${serverId}'`);\n }\n};\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport {\n getMcpServerMessageHandler,\n getMcpServerSseHandler,\n listMcpRegistryServersHandler,\n getMcpRegistryServerDetailHandler,\n listMcpServerToolsHandler,\n getMcpServerToolDetailHandler,\n executeMcpServerToolHandler,\n} from './handlers';\n\nexport function mcpRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n router.post(\n '/:serverId/mcp',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Send a message to an MCP server using Streamable HTTP',\n tags: ['mcp'],\n parameters: [\n {\n name: 'serverId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n content: { 'application/json': { schema: { type: 'object' } } },\n },\n responses: {\n 200: {\n description: 'Streamable HTTP connection processed',\n },\n 404: {\n description: 'MCP server not found',\n },\n },\n }),\n getMcpServerMessageHandler,\n );\n\n router.get(\n '/:serverId/mcp',\n describeRoute({\n description: 'Send a message to an MCP server using Streamable HTTP',\n tags: ['mcp'],\n parameters: [\n {\n name: 'serverId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Streamable HTTP connection processed',\n },\n 404: {\n description: 'MCP server not found',\n },\n },\n }),\n getMcpServerMessageHandler,\n );\n\n // New MCP server routes for SSE\n const mcpSseBasePath = '/:serverId/sse';\n const mcpSseMessagePath = '/:serverId/messages';\n\n // Route for establishing SSE connection\n router.get(\n mcpSseBasePath,\n describeRoute({\n description: 'Establish an MCP Server-Sent Events (SSE) connection with a server instance.',\n tags: ['mcp'],\n parameters: [\n {\n name: 'serverId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'The ID of the MCP server instance.',\n },\n ],\n responses: {\n 200: {\n description:\n 'SSE connection established. The client will receive events over this connection. (Content-Type: text/event-stream)',\n },\n 404: { description: 'MCP server instance not found.' },\n 500: { description: 'Internal server error establishing SSE connection.' },\n },\n }),\n getMcpServerSseHandler,\n );\n\n // Route for POSTing messages over an established SSE connection\n router.post(\n mcpSseMessagePath,\n bodyLimit(bodyLimitOptions), // Apply body limit for messages\n describeRoute({\n description: 'Send a message to an MCP server over an established SSE connection.',\n tags: ['mcp'],\n parameters: [\n {\n name: 'serverId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'The ID of the MCP server instance.',\n },\n ],\n requestBody: {\n description: 'JSON-RPC message to send to the MCP server.',\n required: true,\n content: { 'application/json': { schema: { type: 'object' } } }, // MCP messages are typically JSON\n },\n responses: {\n 200: {\n description:\n 'Message received and is being processed by the MCP server. The actual result or error will be sent as an SSE event over the established connection.',\n },\n 400: { description: 'Bad request (e.g., invalid JSON payload or missing body).' },\n 404: { description: 'MCP server instance not found or SSE connection path incorrect.' },\n 503: { description: 'SSE connection not established with this server, or server unable to process message.' },\n },\n }),\n getMcpServerSseHandler,\n );\n\n router.get(\n '/v0/servers',\n describeRoute({\n description: 'List all available MCP server instances with basic information.',\n tags: ['mcp'],\n parameters: [\n {\n name: 'limit',\n in: 'query',\n description: 'Number of results per page.',\n required: false,\n schema: { type: 'integer', default: 50, minimum: 1, maximum: 5000 },\n },\n {\n name: 'offset',\n in: 'query',\n description: 'Number of results to skip for pagination.',\n required: false,\n schema: { type: 'integer', default: 0, minimum: 0 },\n },\n ],\n responses: {\n 200: {\n description: 'A list of MCP server instances.',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n servers: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n name: { type: 'string' },\n description: { type: 'string' },\n repository: {\n type: 'object',\n properties: {\n url: { type: 'string', description: 'The URL of the repository (e.g., a GitHub URL)' },\n source: {\n type: 'string',\n description: \"The source control platform (e.g., 'github', 'gitlab')\",\n enum: ['github', 'gitlab'],\n },\n id: { type: 'string', description: 'A unique identifier for the repository at the source' },\n },\n },\n version_detail: {\n type: 'object',\n properties: {\n version: { type: 'string', description: 'The semantic version string (e.g., \"1.0.2\")' },\n release_date: {\n type: 'string',\n description: 'The ISO 8601 date-time string when this version was released or registered',\n },\n is_latest: {\n type: 'boolean',\n description: 'Indicates if this version is the latest available',\n },\n },\n },\n },\n },\n },\n next: { type: 'string', format: 'uri', nullable: true },\n total_count: { type: 'integer' },\n },\n },\n },\n },\n },\n },\n }),\n listMcpRegistryServersHandler,\n );\n\n router.get(\n '/v0/servers/:id',\n describeRoute({\n description: 'Get detailed information about a specific MCP server instance.',\n tags: ['mcp'],\n parameters: [\n {\n name: 'id',\n in: 'path',\n required: true,\n description: 'Unique ID of the MCP server instance.',\n schema: { type: 'string' },\n },\n {\n name: 'version',\n in: 'query',\n required: false,\n description: 'Desired MCP server version (currently informational, server returns its actual version).',\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Detailed information about the MCP server instance.',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n name: { type: 'string' },\n description: { type: 'string' },\n repository: {\n type: 'object',\n properties: {\n url: { type: 'string' },\n source: { type: 'string' },\n id: { type: 'string' },\n },\n },\n version_detail: {\n type: 'object',\n properties: {\n version: { type: 'string' },\n release_date: { type: 'string' },\n is_latest: { type: 'boolean' },\n },\n },\n package_canonical: { type: 'string' },\n packages: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n registry_name: { type: 'string' },\n name: { type: 'string' },\n version: { type: 'string' },\n command: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n subcommands: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n description: { type: 'string' },\n is_required: { type: 'boolean' },\n subcommands: {\n type: 'array',\n items: { type: 'object' },\n },\n positional_arguments: {\n type: 'array',\n items: { type: 'object' },\n },\n named_arguments: {\n type: 'array',\n items: { type: 'object' },\n },\n },\n },\n },\n positional_arguments: {\n type: 'array',\n items: { type: 'object' },\n },\n named_arguments: {\n type: 'array',\n items: { type: 'object' },\n },\n },\n },\n environment_variables: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n description: { type: 'string' },\n required: { type: 'boolean' },\n default_value: { type: 'string' },\n },\n },\n },\n },\n },\n },\n remotes: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n transport_type: { type: 'string' },\n url: { type: 'string' },\n },\n },\n },\n },\n },\n },\n },\n },\n 404: {\n description: 'MCP server instance not found.',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: { type: 'string' },\n },\n },\n },\n },\n },\n },\n }),\n getMcpRegistryServerDetailHandler,\n );\n\n router.get(\n '/:serverId/tools',\n describeRoute({\n description: 'List all tools available on a specific MCP server instance.',\n tags: ['mcp'],\n parameters: [\n {\n name: 'serverId',\n in: 'path',\n required: true,\n description: 'Unique ID of the MCP server instance.',\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: { description: 'A list of tools for the MCP server.' }, // Define schema if you have one for McpServerToolListResponse\n 404: { description: 'MCP server instance not found.' },\n 501: { description: 'Server does not support listing tools.' },\n },\n }),\n listMcpServerToolsHandler,\n );\n\n router.get(\n '/:serverId/tools/:toolId',\n describeRoute({\n description: 'Get details for a specific tool on an MCP server.',\n tags: ['mcp'],\n parameters: [\n { name: 'serverId', in: 'path', required: true, schema: { type: 'string' } },\n { name: 'toolId', in: 'path', required: true, schema: { type: 'string' } },\n ],\n responses: {\n 200: { description: 'Details of the specified tool.' }, // Define schema for McpToolInfo\n 404: { description: 'MCP server or tool not found.' },\n 501: { description: 'Server does not support getting tool details.' },\n },\n }),\n getMcpServerToolDetailHandler,\n );\n\n router.post(\n '/:serverId/tools/:toolId/execute',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute a specific tool on an MCP server.',\n tags: ['mcp'],\n parameters: [\n { name: 'serverId', in: 'path', required: true, schema: { type: 'string' } },\n { name: 'toolId', in: 'path', required: true, schema: { type: 'string' } },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n data: { type: 'object' },\n requestContext: { type: 'object' },\n },\n },\n },\n }, // Simplified schema\n },\n responses: {\n 200: { description: 'Result of the tool execution.' },\n 400: { description: 'Invalid tool arguments.' },\n 404: { description: 'MCP server or tool not found.' },\n 501: { description: 'Server does not support tool execution.' },\n },\n }),\n executeMcpServerToolHandler,\n );\n\n return router;\n}\n","/**\n * Parse a limit query parameter value to a valid number\n * @param rawLimit - The raw limit value from query parameters\n * @returns A valid positive integer or undefined\n */\nexport function parseLimit(rawLimit: string | undefined): number | undefined {\n if (rawLimit === undefined) {\n return undefined;\n }\n\n const n = Number(rawLimit);\n if (Number.isFinite(n) && Number.isInteger(n) && n > 0) {\n return n;\n }\n\n return undefined;\n}\n\n/**\n * Parse a page query parameter value to a valid non-negative number\n * @param value - The raw page value from query parameters\n * @param defaultValue - The default value to use if parsing fails (default: 0)\n * @returns A valid non-negative integer\n */\nexport function parsePage(value: string | undefined, defaultValue: number = 0): number {\n const parsed = parseInt(value || String(defaultValue), 10);\n return isNaN(parsed) ? defaultValue : Math.max(0, parsed);\n}\n\n/**\n * Parse a perPage query parameter value to a valid positive number with a maximum cap, or false to fetch all\n * @param value - The raw perPage value from query parameters\n * @param defaultValue - The default value to use if parsing fails (default: 100)\n * @param max - The maximum allowed value (default: 1000)\n * @returns A valid positive integer between 1 and max, or false to bypass pagination\n */\nexport function parsePerPage(\n value: string | undefined,\n defaultValue: number = 100,\n max: number = 1000,\n): number | false {\n const normalized = (value || '').trim().toLowerCase();\n // Handle explicit false to bypass pagination\n if (normalized === 'false') {\n return false;\n }\n const parsed = parseInt(value || String(defaultValue), 10);\n if (isNaN(parsed)) return defaultValue;\n return Math.min(max, Math.max(1, parsed));\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type {\n ThreadOrderBy,\n ThreadSortDirection,\n StorageOrderBy,\n StorageListMessagesInput,\n} from '@mastra/core/storage';\nimport {\n getMemoryStatusHandler as getOriginalMemoryStatusHandler,\n getMemoryConfigHandler as getOriginalMemoryConfigHandler,\n listThreadsHandler as getOriginalListThreadsHandler,\n getThreadByIdHandler as getOriginalThreadByIdHandler,\n saveMessagesHandler as getOriginalSaveMessagesHandler,\n createThreadHandler as getOriginalCreateThreadHandler,\n updateThreadHandler as getOriginalUpdateThreadHandler,\n deleteThreadHandler as getOriginalDeleteThreadHandler,\n listMessagesHandler as getOriginalListMessagesHandler,\n getWorkingMemoryHandler as getOriginalGetWorkingMemoryHandler,\n updateWorkingMemoryHandler as getOriginalUpdateWorkingMemoryHandler,\n searchMemoryHandler as getOriginalSearchMemoryHandler,\n deleteMessagesHandler as getOriginalDeleteMessagesHandler,\n} from '@mastra/server/handlers/memory';\nimport type { Context } from 'hono';\n\nimport { handleError } from '../../error';\nimport { parseLimit, parsePage, parsePerPage } from '../../utils/query-parsers';\n\n/**\n * Helper function to parse JSON query parameters\n * @param value - The query parameter value to parse\n * @returns Parsed JSON object or undefined if parsing fails or value is undefined\n */\nfunction parseJsonParam<T>(value: string | undefined): T | undefined {\n if (!value) return undefined;\n try {\n return JSON.parse(value) as T;\n } catch {\n return undefined;\n }\n}\n\n// Memory handlers\nexport async function getMemoryStatusHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalMemoryStatusHandler({\n mastra,\n agentId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting memory status');\n }\n}\n\nexport async function getMemoryConfigHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalMemoryConfigHandler({\n mastra,\n agentId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting memory configuration');\n }\n}\n\nexport async function listThreadsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const resourceId = c.req.query('resourceId');\n const page = parsePage(c.req.query('page'));\n const perPage = parsePerPage(c.req.query('perPage'));\n const field = c.req.query('orderBy') as ThreadOrderBy | undefined;\n const direction = c.req.query('sortDirection') as ThreadSortDirection | undefined;\n const requestContext = c.get('requestContext');\n\n // Validate query parameters\n const validFields: ThreadOrderBy[] = ['createdAt', 'updatedAt'];\n const validDirections: ThreadSortDirection[] = ['ASC', 'DESC'];\n\n if (field && !validFields.includes(field)) {\n return c.json({ error: `Invalid orderBy field: ${field}. Must be one of: ${validFields.join(', ')}` }, 400);\n }\n if (direction && !validDirections.includes(direction)) {\n return c.json(\n { error: `Invalid sortDirection: ${direction}. Must be one of: ${validDirections.join(', ')}` },\n 400,\n );\n }\n\n // Transform to nested structure\n const orderBy = field || direction ? { field: field || 'createdAt', direction: direction || 'DESC' } : undefined;\n\n const result = await getOriginalListThreadsHandler({\n mastra,\n agentId,\n resourceId,\n page,\n perPage,\n orderBy,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error listing threads');\n }\n}\n\nexport async function getThreadByIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalThreadByIdHandler({\n mastra,\n agentId,\n threadId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting thread');\n }\n}\n\nexport async function saveMessagesHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const body = await c.req.json();\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalSaveMessagesHandler({\n mastra,\n agentId,\n body,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error saving messages');\n }\n}\n\nexport async function createThreadHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const body = await c.req.json();\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalCreateThreadHandler({\n mastra,\n agentId,\n body,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error saving thread to memory');\n }\n}\n\nexport async function updateThreadHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const body = await c.req.json();\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalUpdateThreadHandler({\n mastra,\n agentId,\n threadId,\n body,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error updating thread');\n }\n}\n\nexport async function deleteThreadHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalDeleteThreadHandler({\n mastra,\n agentId,\n threadId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error deleting thread');\n }\n}\n\nexport async function listMessagesHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const resourceId = c.req.query('resourceId');\n const page = parsePage(c.req.query('page'));\n const perPage = parsePerPage(c.req.query('perPage'));\n const orderBy = parseJsonParam<StorageOrderBy>(c.req.query('orderBy'));\n const include = parseJsonParam<StorageListMessagesInput['include']>(c.req.query('include'));\n const filter = parseJsonParam<StorageListMessagesInput['filter']>(c.req.query('filter'));\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalListMessagesHandler({\n mastra,\n agentId,\n threadId,\n resourceId,\n page,\n perPage,\n orderBy,\n include,\n filter,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting messages');\n }\n}\n\nexport async function updateWorkingMemoryHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const body = await c.req.json();\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalUpdateWorkingMemoryHandler({\n mastra,\n agentId,\n threadId,\n body,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error updating working memory');\n }\n}\n\nexport async function getWorkingMemoryHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const threadId = c.req.param('threadId');\n const resourceId = c.req.query('resourceId');\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalGetWorkingMemoryHandler({\n mastra,\n agentId,\n threadId,\n resourceId,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting working memory');\n }\n}\n\nexport async function searchMemoryHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const searchQuery = c.req.query('searchQuery');\n const resourceId = c.req.query('resourceId');\n const threadId = c.req.query('threadId');\n const limit = parseLimit(c.req.query('limit'));\n const memoryConfig = c.req.query('memoryConfig') ? JSON.parse(c.req.query('memoryConfig')!) : undefined;\n const requestContext = c.get('requestContext');\n\n const result = await getOriginalSearchMemoryHandler({\n mastra,\n agentId,\n searchQuery: searchQuery!,\n resourceId: resourceId!,\n threadId,\n limit,\n memoryConfig,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error searching memory');\n }\n}\n\nexport async function deleteMessagesHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const agentId = c.req.query('agentId');\n const requestContext = c.get('requestContext');\n const body = await c.req.json();\n const messageIds = body?.messageIds;\n\n const result = await getOriginalDeleteMessagesHandler({\n mastra,\n agentId,\n messageIds,\n requestContext,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error deleting messages');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport {\n createThreadHandler,\n deleteThreadHandler,\n getMemoryStatusHandler,\n getMemoryConfigHandler,\n listMessagesHandler,\n getThreadByIdHandler,\n listThreadsHandler,\n getWorkingMemoryHandler,\n saveMessagesHandler,\n searchMemoryHandler,\n updateThreadHandler,\n updateWorkingMemoryHandler,\n deleteMessagesHandler,\n} from './handlers';\n\nexport function memoryRoutes(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n // Network Memory routes\n router.get(\n '/network/status',\n describeRoute({\n description: 'Get network memory status',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Memory status',\n },\n },\n }),\n getMemoryStatusHandler,\n );\n\n router.get(\n '/network/threads',\n describeRoute({\n description: 'Get all threads',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'resourceid',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'offset',\n in: 'query',\n required: false,\n schema: { type: 'number', default: 0 },\n description: 'Number of records to skip',\n },\n {\n name: 'limit',\n in: 'query',\n required: false,\n schema: { type: 'number', default: 100 },\n description: 'Maximum number of threads to return',\n },\n {\n name: 'orderBy',\n in: 'query',\n required: false,\n schema: {\n type: 'string',\n enum: ['createdAt', 'updatedAt'],\n default: 'createdAt',\n },\n description: 'Field to sort by',\n },\n {\n name: 'sortDirection',\n in: 'query',\n required: false,\n schema: {\n type: 'string',\n enum: ['ASC', 'DESC'],\n default: 'DESC',\n },\n description: 'Sort direction',\n },\n ],\n responses: {\n 200: {\n description: 'List of all threads',\n },\n },\n }),\n listThreadsHandler,\n );\n\n router.get(\n '/network/threads/:threadId',\n describeRoute({\n description: 'Get thread by ID',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Thread details',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n getThreadByIdHandler,\n );\n\n router.get(\n '/network/threads/:threadId/messages',\n describeRoute({\n description: 'Get paginated messages for a thread',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n description: 'The unique identifier of the thread',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n description: 'The unique identifier of the agent',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'resourceId',\n in: 'query',\n required: false,\n description: 'Filter messages by resource ID',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n description: 'Zero-indexed page number for pagination (default: 0)',\n schema: {\n type: 'integer',\n minimum: 0,\n default: 0,\n },\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n description: 'Number of items per page, or \"false\" to fetch all records (default: 40)',\n schema: {\n oneOf: [\n { type: 'integer', minimum: 0 },\n { type: 'boolean', enum: [false] },\n ],\n default: 40,\n },\n },\n {\n name: 'orderBy',\n in: 'query',\n required: false,\n description: 'JSON string specifying sort order',\n schema: {\n type: 'string',\n example: '{\"field\":\"createdAt\",\"direction\":\"DESC\"}',\n },\n },\n {\n name: 'include',\n in: 'query',\n required: false,\n description: 'JSON string specifying messages to include with context',\n schema: {\n type: 'string',\n example: '[{\"id\":\"msg-123\",\"withPreviousMessages\":5,\"withNextMessages\":3}]',\n },\n },\n {\n name: 'filter',\n in: 'query',\n required: false,\n description: 'JSON string specifying filter criteria',\n schema: {\n type: 'string',\n example: '{\"dateRange\":{\"start\":\"2024-01-01T00:00:00Z\",\"end\":\"2024-12-31T23:59:59Z\"}}',\n },\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of messages with metadata',\n },\n },\n }),\n listMessagesHandler,\n );\n\n router.post(\n '/network/threads',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Create a new thread',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n metadata: { type: 'object' },\n resourceId: { type: 'string' },\n threadId: { type: 'string' },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Created thread',\n },\n },\n }),\n createThreadHandler,\n );\n\n router.patch(\n '/network/threads/:threadId',\n describeRoute({\n description: 'Update a thread',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: { type: 'object' },\n },\n },\n },\n responses: {\n 200: {\n description: 'Updated thread',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n updateThreadHandler,\n );\n\n router.delete(\n '/network/threads/:threadId',\n describeRoute({\n description: 'Delete a thread',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Thread deleted',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n deleteThreadHandler,\n );\n\n router.post(\n '/network/save-messages',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Save messages',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n description: 'Array of messages in either v1 or v2 format',\n items: {\n oneOf: [\n {\n type: 'object',\n description: 'Mastra Message v1 format',\n properties: {\n id: { type: 'string' },\n content: { type: 'string' },\n role: { type: 'string', enum: ['user', 'assistant', 'system', 'tool'] },\n type: { type: 'string', enum: ['text', 'tool-call', 'tool-result'] },\n createdAt: { type: 'string', format: 'date-time' },\n threadId: { type: 'string' },\n resourceId: { type: 'string' },\n },\n required: ['content', 'role', 'type', 'threadId', 'resourceId'],\n },\n {\n type: 'object',\n description: 'Mastra Message v2 format',\n properties: {\n id: { type: 'string' },\n role: { type: 'string', enum: ['user', 'assistant'] },\n createdAt: { type: 'string', format: 'date-time' },\n threadId: { type: 'string' },\n resourceId: { type: 'string' },\n content: {\n type: 'object',\n properties: {\n format: { type: 'number', enum: [2] },\n parts: {\n type: 'array',\n items: { type: 'object' },\n },\n content: { type: 'string' },\n toolInvocations: {\n type: 'array',\n items: { type: 'object' },\n },\n experimental_attachments: {\n type: 'array',\n items: { type: 'object' },\n },\n },\n required: ['format', 'parts'],\n },\n },\n required: ['role', 'content', 'threadId', 'resourceId'],\n },\n ],\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Messages saved',\n },\n },\n }),\n saveMessagesHandler,\n );\n\n router.post(\n '/network/messages/delete',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Delete one or more messages',\n tags: ['networkMemory'],\n parameters: [\n {\n name: 'networkId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messageIds: {\n oneOf: [\n { type: 'string' },\n {\n type: 'array',\n items: { type: 'string' },\n },\n {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n {\n type: 'array',\n items: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n },\n ],\n },\n },\n required: ['messageIds'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Messages deleted successfully',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n },\n },\n },\n },\n }),\n deleteMessagesHandler,\n );\n\n // Memory routes\n router.get(\n '/status',\n describeRoute({\n description: 'Get memory status',\n tags: ['memory'],\n parameters: [\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Memory status',\n },\n },\n }),\n getMemoryStatusHandler,\n );\n\n router.get(\n '/config',\n describeRoute({\n description: 'Get memory configuration',\n tags: ['memory'],\n parameters: [\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Memory configuration',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n config: {\n type: 'object',\n properties: {\n lastMessages: {\n oneOf: [{ type: 'number' }, { type: 'boolean' }],\n },\n semanticRecall: {\n oneOf: [\n { type: 'boolean' },\n {\n type: 'object',\n properties: {\n topK: { type: 'number' },\n messageRange: {\n oneOf: [\n { type: 'number' },\n {\n type: 'object',\n properties: {\n before: { type: 'number' },\n after: { type: 'number' },\n },\n },\n ],\n },\n scope: { type: 'string', enum: ['thread', 'resource'] },\n },\n },\n ],\n },\n workingMemory: {\n type: 'object',\n properties: {\n enabled: { type: 'boolean' },\n scope: { type: 'string', enum: ['thread', 'resource'] },\n template: { type: 'string' },\n },\n },\n threads: {\n type: 'object',\n properties: {\n generateTitle: {\n oneOf: [{ type: 'boolean' }, { type: 'object' }],\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n }),\n getMemoryConfigHandler,\n );\n\n router.get(\n '/threads',\n describeRoute({\n description: 'Get paginated threads',\n tags: ['memory'],\n parameters: [\n {\n name: 'resourceId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'offset',\n in: 'query',\n required: false,\n schema: { type: 'number', default: 0 },\n description: 'Number of records to skip',\n },\n {\n name: 'limit',\n in: 'query',\n required: false,\n schema: { type: 'number', default: 100 },\n description: 'Maximum number of threads to return',\n },\n {\n name: 'orderBy',\n in: 'query',\n required: false,\n schema: {\n type: 'string',\n enum: ['createdAt', 'updatedAt'],\n default: 'createdAt',\n },\n },\n {\n name: 'sortDirection',\n in: 'query',\n required: false,\n schema: {\n type: 'string',\n enum: ['ASC', 'DESC'],\n default: 'DESC',\n },\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of threads',\n },\n },\n }),\n listThreadsHandler,\n );\n\n router.get(\n '/threads/:threadId',\n describeRoute({\n description: 'Get thread by ID',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Thread details',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n getThreadByIdHandler,\n );\n\n router.get(\n '/threads/:threadId/messages',\n describeRoute({\n description: 'Get paginated messages for a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n description: 'The unique identifier of the thread',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n description: 'The unique identifier of the agent',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'resourceId',\n in: 'query',\n required: false,\n description: 'Filter messages by resource ID',\n schema: {\n type: 'string',\n },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n description: 'Zero-indexed page number for pagination (default: 0)',\n schema: {\n type: 'integer',\n minimum: 0,\n default: 0,\n },\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n description: 'Number of items per page, or \"false\" to fetch all records (default: 40)',\n schema: {\n oneOf: [\n { type: 'integer', minimum: 0 },\n { type: 'boolean', enum: [false] },\n ],\n default: 40,\n },\n },\n {\n name: 'orderBy',\n in: 'query',\n required: false,\n description: 'JSON string specifying sort order',\n schema: {\n type: 'string',\n example: '{\"field\":\"createdAt\",\"direction\":\"DESC\"}',\n },\n },\n {\n name: 'include',\n in: 'query',\n required: false,\n description: 'JSON string specifying messages to include with context',\n schema: {\n type: 'string',\n example: '[{\"id\":\"msg-123\",\"withPreviousMessages\":5,\"withNextMessages\":3}]',\n },\n },\n {\n name: 'filter',\n in: 'query',\n required: false,\n description: 'JSON string specifying filter criteria',\n schema: {\n type: 'string',\n example: '{\"dateRange\":{\"start\":\"2024-01-01T00:00:00Z\",\"end\":\"2024-12-31T23:59:59Z\"}}',\n },\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of messages with metadata',\n },\n },\n }),\n listMessagesHandler,\n );\n\n router.get(\n '/search',\n describeRoute({\n description: 'Search messages in a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'searchQuery',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n description: 'The text to search for',\n },\n {\n name: 'resourceId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n description: 'The resource ID (user/org) to validate thread ownership',\n },\n {\n name: 'threadId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n description: 'The thread ID to search within (optional - searches all threads if not provided)',\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n description: 'The agent ID',\n },\n {\n name: 'limit',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Maximum number of results to return (default: 20)',\n },\n {\n name: 'memoryConfig',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n description: 'JSON-encoded memory configuration (e.g., {\"lastMessages\": 0} for semantic-only search)',\n },\n ],\n responses: {\n 200: {\n description: 'Search results',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n results: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n role: { type: 'string' },\n content: { type: 'string' },\n createdAt: { type: 'string' },\n },\n },\n },\n count: { type: 'number' },\n query: { type: 'string' },\n },\n },\n },\n },\n },\n 400: {\n description: 'Bad request',\n },\n 403: {\n description: 'Thread does not belong to the specified resource',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n searchMemoryHandler,\n );\n\n router.get(\n '/threads/:threadId/working-memory',\n describeRoute({\n description: 'Get working memory for a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'resourceId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Working memory details',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n getWorkingMemoryHandler,\n );\n\n router.post(\n '/threads/:threadId/working-memory',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Update working memory for a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n workingMemory: { type: 'string' },\n resourceId: { type: 'string' },\n },\n required: ['workingMemory'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Working memory updated successfully',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n updateWorkingMemoryHandler,\n );\n\n router.post(\n '/threads',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Create a new thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n metadata: { type: 'object' },\n resourceId: { type: 'string' },\n threadId: { type: 'string' },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Created thread',\n },\n },\n }),\n createThreadHandler,\n );\n\n router.patch(\n '/threads/:threadId',\n describeRoute({\n description: 'Update a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: { type: 'object' },\n },\n },\n },\n responses: {\n 200: {\n description: 'Updated thread',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n updateThreadHandler,\n );\n\n router.delete(\n '/threads/:threadId',\n describeRoute({\n description: 'Delete a thread',\n tags: ['memory'],\n parameters: [\n {\n name: 'threadId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Thread deleted',\n },\n 404: {\n description: 'Thread not found',\n },\n },\n }),\n deleteThreadHandler,\n );\n\n router.post(\n '/save-messages',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Save messages',\n tags: ['memory'],\n parameters: [\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messages: {\n type: 'array',\n description: 'Array of messages in either v1 or v2 format',\n items: {\n oneOf: [\n {\n type: 'object',\n description: 'Mastra Message v1 format',\n properties: {\n id: { type: 'string' },\n content: { type: 'string' },\n role: { type: 'string', enum: ['user', 'assistant', 'system', 'tool'] },\n type: { type: 'string', enum: ['text', 'tool-call', 'tool-result'] },\n createdAt: { type: 'string', format: 'date-time' },\n threadId: { type: 'string' },\n resourceId: { type: 'string' },\n },\n required: ['content', 'role', 'type', 'threadId', 'resourceId'],\n },\n {\n type: 'object',\n description: 'Mastra Message v2 format',\n properties: {\n id: { type: 'string' },\n role: { type: 'string', enum: ['user', 'assistant'] },\n createdAt: { type: 'string', format: 'date-time' },\n threadId: { type: 'string' },\n resourceId: { type: 'string' },\n content: {\n type: 'object',\n properties: {\n format: { type: 'number', enum: [2] },\n parts: {\n type: 'array',\n items: { type: 'object' },\n },\n content: { type: 'string' },\n toolInvocations: {\n type: 'array',\n items: { type: 'object' },\n },\n experimental_attachments: {\n type: 'array',\n items: { type: 'object' },\n },\n },\n required: ['format', 'parts'],\n },\n },\n required: ['role', 'content', 'threadId', 'resourceId'],\n },\n ],\n },\n },\n },\n required: ['messages'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Messages saved',\n },\n },\n }),\n saveMessagesHandler,\n );\n\n router.post(\n '/messages/delete',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Delete one or more messages',\n tags: ['memory'],\n parameters: [\n {\n name: 'agentId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n messageIds: {\n oneOf: [\n { type: 'string' },\n {\n type: 'array',\n items: { type: 'string' },\n },\n {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n {\n type: 'array',\n items: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n },\n ],\n },\n },\n required: ['messageIds'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Messages deleted successfully',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean' },\n message: { type: 'string' },\n },\n },\n },\n },\n },\n },\n }),\n deleteMessagesHandler,\n );\n\n return router;\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport { SpanType } from '@mastra/core/observability';\nimport type { TracesPaginatedArg, StoragePagination } from '@mastra/core/storage';\nimport {\n getTraceHandler as getOriginalTraceHandler,\n getTracesPaginatedHandler as getOriginalTracesPaginatedHandler,\n scoreTracesHandler as getOriginalScoreTracesHandler,\n listScoresBySpan as getOriginalScoresBySpanHandler,\n} from '@mastra/server/handlers/observability';\nimport type { Context } from 'hono';\nimport { handleError } from '../../error';\n\nexport async function getTraceHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const traceId = c.req.param('traceId');\n\n if (!traceId) {\n return c.json({ error: 'Trace ID is required' }, 400);\n }\n\n const trace = await getOriginalTraceHandler({\n mastra,\n traceId,\n });\n\n return c.json(trace);\n } catch (error) {\n return handleError(error, 'Error getting trace');\n }\n}\n\nexport async function getTracesPaginatedHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const { page, perPage, name, spanType, dateRange, entityId, entityType } = c.req.query();\n\n const pagination: TracesPaginatedArg['pagination'] = {\n page: parseInt(page || '0'),\n perPage: parseInt(perPage || '10'),\n };\n\n const filters: TracesPaginatedArg['filters'] = {};\n if (name) filters.name = name;\n if (spanType) {\n if (Object.values(SpanType).includes(spanType as SpanType)) {\n filters.spanType = spanType as SpanType;\n } else {\n return c.json({ error: 'Invalid spanType' }, 400);\n }\n }\n if (entityId && entityType && (entityType === 'agent' || entityType === 'workflow')) {\n filters.entityId = entityId;\n filters.entityType = entityType;\n }\n\n let start: Date | undefined;\n let end: Date | undefined;\n if (dateRange) {\n try {\n const parsedDateRange = JSON.parse(dateRange);\n start = parsedDateRange.start ? new Date(parsedDateRange.start) : undefined;\n end = parsedDateRange.end ? new Date(parsedDateRange.end) : undefined;\n } catch {\n return c.json({ error: 'Invalid start date' }, 400);\n }\n }\n\n if (start || end) {\n pagination.dateRange = { start, end };\n }\n\n const result = await getOriginalTracesPaginatedHandler({\n mastra,\n body: {\n pagination,\n filters,\n },\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error getting traces paginated');\n }\n}\n\nexport async function processTraceScoringHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const { scorerName, targets } = await c.req.json();\n\n const result = await getOriginalScoreTracesHandler({\n mastra,\n body: { scorerName, targets },\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error processing trace scoring');\n }\n}\n\nexport async function listScoresBySpan(c: Context) {\n const mastra = c.get('mastra');\n const traceId = c.req.param('traceId');\n const spanId = c.req.param('spanId');\n const page = parseInt(c.req.query('page') || '0');\n const perPage = parseInt(c.req.query('perPage') || '10');\n const pagination: StoragePagination = { page, perPage };\n\n try {\n const scores = await getOriginalScoresBySpanHandler({\n mastra,\n traceId,\n spanId,\n pagination,\n });\n\n return c.json(scores);\n } catch (error) {\n return handleError(error, 'Error getting scores by span');\n }\n}\n","import { Hono } from 'hono';\nimport { describeRoute } from 'hono-openapi';\nimport { getTraceHandler, getTracesPaginatedHandler, listScoresBySpan, processTraceScoringHandler } from './handlers';\n\nexport function observabilityRouter() {\n const router = new Hono();\n\n router.get(\n '/traces',\n describeRoute({\n description: 'Get paginated list of traces',\n tags: ['observability'],\n parameters: [\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Page number for pagination (default: 0)',\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Number of items per page (default: 10)',\n },\n {\n name: 'name',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n description: 'Filter traces by name',\n },\n {\n name: 'spanType',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Filter traces by span type',\n },\n {\n name: 'dateRange',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n description: 'JSON string with start and end dates for filtering',\n },\n {\n name: 'attributes',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n description: 'JSON string with attributes to filter by',\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of traces',\n },\n 400: {\n description: 'Bad request - invalid parameters',\n },\n },\n }),\n getTracesPaginatedHandler,\n );\n\n router.get(\n '/traces/:traceId',\n describeRoute({\n description: 'Get a specific trace by ID',\n tags: ['observability'],\n parameters: [\n {\n name: 'traceId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'The ID of the trace to retrieve',\n },\n ],\n responses: {\n 200: {\n description: 'Trace with all its spans',\n },\n 400: {\n description: 'Bad request - missing trace ID',\n },\n 404: {\n description: 'Trace not found',\n },\n },\n }),\n getTraceHandler,\n );\n\n router.get(\n '/traces/:traceId/:spanId/scores',\n describeRoute({\n description: 'Get scores by trace ID and span ID',\n tags: ['scores'],\n parameters: [\n {\n name: 'traceId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'Trace ID',\n },\n {\n name: 'spanId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'Span ID',\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Page number for pagination (default: 0)',\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Number of items per page (default: 10)',\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of scores for span',\n },\n },\n }),\n listScoresBySpan,\n );\n\n router.post(\n '/traces/score',\n describeRoute({\n description: 'Score traces using a specified scorer',\n tags: ['observability'],\n requestBody: {\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n required: ['scorerName', 'targets'],\n properties: {\n scorerName: {\n type: 'string',\n description: 'Name of the scorer to use for evaluation',\n example: 'relevance-scorer',\n },\n targets: {\n type: 'array',\n description: 'Array of trace targets to score',\n minItems: 1,\n items: {\n type: 'object',\n required: ['traceId'],\n properties: {\n traceId: {\n type: 'string',\n description: 'ID of the trace to score',\n example: 'trace-123',\n },\n spanId: {\n type: 'string',\n description: 'Optional specific span ID within the trace to score',\n example: 'span-456',\n },\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Scoring initiated successfully',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n status: {\n type: 'string',\n enum: ['success'],\n example: 'success',\n },\n message: {\n type: 'string',\n example: 'Scoring started for 3 traces',\n },\n traceCount: {\n type: 'number',\n example: 3,\n },\n },\n required: ['status', 'message', 'traceCount'],\n },\n },\n },\n },\n 400: {\n description: 'Bad request - invalid parameters',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n 404: {\n description: 'Scorer not found',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n 500: {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n error: {\n type: 'string',\n },\n },\n },\n },\n },\n },\n },\n }),\n processTraceScoringHandler,\n );\n\n return router;\n}\n","import type { ScoreRowData } from '@mastra/core/evals';\nimport type { StoragePagination } from '@mastra/core/storage';\nimport {\n listScorersHandler as getOriginalListScorersHandler,\n listScoresByRunIdHandler as getOriginalScoresByRunIdHandler,\n listScoresByScorerIdHandler as getOriginalScoresByScorerIdHandler,\n listScoresByEntityIdHandler as getOriginalScoresByEntityIdHandler,\n saveScoreHandler as getOriginalSaveScoreHandler,\n getScorerHandler as getOriginalScorerHandler,\n} from '@mastra/server/handlers/scores';\nimport type { Context } from 'hono';\nimport { handleError } from '../../error';\nimport { parsePage, parsePerPage } from '../../utils/query-parsers';\n\nexport async function listScorersHandler(c: Context) {\n try {\n const scorers = await getOriginalListScorersHandler({\n mastra: c.get('mastra'),\n requestContext: c.get('requestContext'),\n });\n return c.json(scorers);\n } catch (error) {\n return handleError(error, 'Error listing scorers');\n }\n}\n\nexport async function getScorerHandler(c: Context) {\n const mastra = c.get('mastra');\n const scorerId = c.req.param('scorerId');\n const requestContext = c.get('requestContext');\n\n const scorer = await getOriginalScorerHandler({\n mastra,\n scorerId,\n requestContext,\n });\n\n return c.json(scorer);\n}\n\nexport async function listScoresByRunIdHandler(c: Context) {\n const mastra = c.get('mastra');\n const runId = c.req.param('runId');\n const page = parsePage(c.req.query('page'));\n const perPage = parsePerPage(c.req.query('perPage'), 10);\n const pagination: StoragePagination = { page, perPage };\n\n try {\n const scores = await getOriginalScoresByRunIdHandler({\n mastra,\n runId,\n pagination,\n });\n\n return c.json(scores);\n } catch (error) {\n return handleError(error, 'Error getting scores by run id');\n }\n}\n\nexport async function listScoresByScorerIdHandler(c: Context) {\n const mastra = c.get('mastra');\n const scorerId = c.req.param('scorerId');\n const page = parsePage(c.req.query('page'));\n const perPage = parsePerPage(c.req.query('perPage'), 10);\n const entityId = c.req.query('entityId');\n const entityType = c.req.query('entityType');\n const pagination: StoragePagination = { page, perPage };\n\n try {\n const scores = await getOriginalScoresByScorerIdHandler({\n mastra,\n scorerId,\n pagination,\n entityId,\n entityType,\n });\n\n return c.json(scores);\n } catch (error) {\n return handleError(error, 'Error getting scores by scorer id');\n }\n}\n\nexport async function listScoresByEntityIdHandler(c: Context) {\n const mastra = c.get('mastra');\n const entityId = c.req.param('entityId');\n const entityType = c.req.param('entityType');\n const page = parsePage(c.req.query('page'));\n const perPage = parsePerPage(c.req.query('perPage'), 10);\n\n const pagination: StoragePagination = { page, perPage };\n\n try {\n const scores = await getOriginalScoresByEntityIdHandler({\n mastra,\n entityId,\n entityType,\n pagination,\n });\n\n return c.json(scores);\n } catch (error) {\n return handleError(error, 'Error getting scores by entity id');\n }\n}\n\nexport async function saveScoreHandler(c: Context) {\n const mastra = c.get('mastra');\n const score: ScoreRowData = await c.req.json();\n\n try {\n const result = await getOriginalSaveScoreHandler({\n mastra,\n score,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error saving score');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport {\n listScorersHandler,\n getScorerHandler,\n listScoresByRunIdHandler,\n listScoresByScorerIdHandler,\n listScoresByEntityIdHandler,\n saveScoreHandler,\n} from './handlers';\n\nexport function scoresRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n // Scores routes\n router.get(\n '/scorers',\n describeRoute({\n description: 'Get all scorers',\n tags: ['scores'],\n responses: {\n 200: {\n description: 'List of all scorers',\n },\n },\n }),\n listScorersHandler,\n );\n\n router.get(\n '/scorers/:scorerId',\n describeRoute({\n description: 'Get a scorer by ID',\n tags: ['scores'],\n responses: {\n 200: {\n description: 'Scorer details',\n },\n },\n }),\n getScorerHandler,\n );\n\n router.get(\n '/run/:runId',\n describeRoute({\n description: 'Get scores by run ID',\n tags: ['scores'],\n parameters: [\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Page number for pagination (default: 0)',\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Number of items per page (default: 10)',\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of scores for run ID',\n },\n },\n }),\n listScoresByRunIdHandler,\n );\n\n router.get(\n '/scorer/:scorerId',\n describeRoute({\n description: 'Get scores by scorer ID',\n tags: ['scores'],\n parameters: [\n {\n name: 'scorerId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Page number for pagination (default: 0)',\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Number of items per page (default: 10)',\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of scores for run ID',\n },\n },\n }),\n listScoresByScorerIdHandler,\n );\n\n router.get(\n '/entity/:entityType/:entityId',\n describeRoute({\n description: 'Get scores by entity ID and type',\n tags: ['scores'],\n parameters: [\n {\n name: 'entityType',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'Type of entity (e.g., agent, workflow, tool)',\n },\n {\n name: 'entityId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'ID of the entity',\n },\n {\n name: 'page',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Page number for pagination (default: 0)',\n },\n {\n name: 'perPage',\n in: 'query',\n required: false,\n schema: { type: 'number' },\n description: 'Number of items per page (default: 10)',\n },\n ],\n responses: {\n 200: {\n description: 'Paginated list of scores for entity',\n },\n },\n }),\n listScoresByEntityIdHandler,\n );\n\n router.post(\n '/',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Save a score',\n tags: ['scores'],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n runId: { type: 'string' },\n scorer: { type: 'object' },\n result: { type: 'object' },\n input: { type: 'object' },\n output: { type: 'object' },\n source: { type: 'string' },\n entityType: { type: 'string' },\n entity: { type: 'object' },\n metadata: { type: 'object' },\n additionalLLMContext: { type: 'object' },\n requestContext: { type: 'object' },\n resourceId: { type: 'string' },\n threadId: { type: 'string' },\n traceId: { type: 'string' },\n },\n required: ['id', 'runId', 'scorer', 'result', 'input', 'output', 'source'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Score saved successfully',\n },\n 400: {\n description: 'Invalid score data',\n },\n },\n }),\n saveScoreHandler,\n );\n\n return router;\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport { executeToolHandler, getToolByIdHandler, listToolsHandler } from './handlers';\n\nexport function toolsRouter(bodyLimitOptions: BodyLimitOptions, tools: Record<string, any>) {\n const router = new Hono();\n\n router.get(\n '/',\n describeRoute({\n description: 'Get all tools',\n tags: ['tools'],\n responses: {\n 200: {\n description: 'List of all tools',\n },\n },\n }),\n listToolsHandler,\n );\n\n router.get(\n '/:toolId',\n describeRoute({\n description: 'Get tool by ID',\n tags: ['tools'],\n parameters: [\n {\n name: 'toolId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Tool details',\n },\n 404: {\n description: 'Tool not found',\n },\n },\n }),\n getToolByIdHandler,\n );\n\n router.post(\n '/:toolId/execute',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute a tool',\n tags: ['tools'],\n parameters: [\n {\n name: 'toolId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n data: { type: 'object' },\n requestContext: { type: 'object' },\n },\n required: ['data'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Tool execution result',\n },\n 404: {\n description: 'Tool not found',\n },\n },\n }),\n executeToolHandler(tools),\n );\n\n return router;\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport type { MastraVector, QueryResult } from '@mastra/core/vector';\nimport {\n upsertVectors as getOriginalUpsertVectorsHandler,\n createIndex as getOriginalCreateIndexHandler,\n queryVectors as getOriginalQueryVectorsHandler,\n listIndexes as getOriginalListIndexesHandler,\n describeIndex as getOriginalDescribeIndexHandler,\n deleteIndex as getOriginalDeleteIndexHandler,\n} from '@mastra/server/handlers/vector';\nimport type { Context } from 'hono';\n\nimport { HTTPException } from 'hono/http-exception';\n\nimport { handleError } from '../../error';\n\ninterface UpsertRequest {\n indexName: string;\n vectors: number[][];\n metadata?: Record<string, any>[];\n ids?: string[];\n}\n\ninterface CreateIndexRequest {\n indexName: string;\n dimension: number;\n metric?: 'cosine' | 'euclidean' | 'dotproduct';\n}\n\ninterface QueryRequest {\n indexName: string;\n queryVector: number[];\n topK?: number;\n filter?: Record<string, any>;\n includeVector?: boolean;\n}\n\nexport const getVector = (c: Context, vectorName: string): MastraVector => {\n const vector = c.get('mastra').getVector(vectorName);\n if (!vector) {\n throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });\n }\n return vector;\n};\n\n// Upsert vectors\nexport async function upsertVectors(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n const body = await c.req.json<UpsertRequest>();\n\n const result = await getOriginalUpsertVectorsHandler({\n mastra,\n vectorName,\n index: body,\n });\n\n return c.json({ ids: result });\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n}\n\n// Create index\nexport async function createIndex(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n const body = await c.req.json<CreateIndexRequest>();\n\n await getOriginalCreateIndexHandler({\n mastra,\n vectorName,\n index: body,\n });\n\n return c.json({ success: true });\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n}\n\n// Query vectors\nexport async function queryVectors(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n const { indexName, queryVector, topK = 10, filter, includeVector = false } = await c.req.json<QueryRequest>();\n\n const results: QueryResult[] = await getOriginalQueryVectorsHandler({\n mastra,\n vectorName,\n query: { indexName, queryVector, topK, filter, includeVector },\n });\n\n return c.json({ results });\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n}\n\n// List indexes\nexport async function listIndexes(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n\n const indexes = await getOriginalListIndexesHandler({\n mastra,\n vectorName,\n });\n\n return c.json({ indexes });\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n}\n\n// Describe index\nexport async function describeIndex(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n const indexName = c.req.param('indexName');\n\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const stats = await getOriginalDescribeIndexHandler({\n mastra,\n vectorName,\n indexName,\n });\n\n return c.json({\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n });\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n}\n\n// Delete index\nexport async function deleteIndex(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const vectorName = c.req.param('vectorName');\n const indexName = c.req.param('indexName');\n\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n await getOriginalDeleteIndexHandler({\n mastra,\n vectorName,\n indexName,\n });\n\n return c.json({ success: true });\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport { createIndex, deleteIndex, describeIndex, listIndexes, queryVectors, upsertVectors } from './handlers';\n\nexport function vectorRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n router.post(\n '/:vectorName/upsert',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Upsert vectors into an index',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n indexName: { type: 'string' },\n vectors: {\n type: 'array',\n items: {\n type: 'array',\n items: { type: 'number' },\n },\n },\n metadata: {\n type: 'array',\n items: { type: 'object' },\n },\n ids: {\n type: 'array',\n items: { type: 'string' },\n },\n },\n required: ['indexName', 'vectors'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Vectors upserted successfully',\n },\n },\n }),\n upsertVectors,\n );\n\n router.post(\n '/:vectorName/create-index',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Create a new vector index',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n indexName: { type: 'string' },\n dimension: { type: 'number' },\n metric: {\n type: 'string',\n enum: ['cosine', 'euclidean', 'dotproduct'],\n },\n },\n required: ['indexName', 'dimension'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Index created successfully',\n },\n },\n }),\n createIndex,\n );\n\n router.post(\n '/:vectorName/query',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Query vectors from an index',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n indexName: { type: 'string' },\n queryVector: {\n type: 'array',\n items: { type: 'number' },\n },\n topK: { type: 'number' },\n filter: { type: 'object' },\n includeVector: { type: 'boolean' },\n },\n required: ['indexName', 'queryVector'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'Query results',\n },\n },\n }),\n queryVectors,\n );\n\n router.get(\n '/:vectorName/indexes',\n describeRoute({\n description: 'List all indexes for a vector store',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'List of indexes',\n },\n },\n }),\n listIndexes,\n );\n\n router.get(\n '/:vectorName/indexes/:indexName',\n describeRoute({\n description: 'Get details about a specific index',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'indexName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Index details',\n },\n },\n }),\n describeIndex,\n );\n\n router.delete(\n '/:vectorName/indexes/:indexName',\n describeRoute({\n description: 'Delete a specific index',\n tags: ['vector'],\n parameters: [\n {\n name: 'vectorName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'indexName',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Index deleted successfully',\n },\n },\n }),\n deleteIndex,\n );\n\n return router;\n}\n","import type { Mastra } from '@mastra/core/mastra';\nimport {\n listWorkflowsHandler as getOriginalWorkflowsHandler,\n getWorkflowByIdHandler as getOriginalWorkflowByIdHandler,\n startAsyncWorkflowHandler as getOriginalStartAsyncWorkflowHandler,\n createWorkflowRunHandler as getOriginalCreateWorkflowRunHandler,\n startWorkflowRunHandler as getOriginalStartWorkflowRunHandler,\n streamLegacyWorkflowHandler as getOriginalStreamLegacyWorkflowHandler,\n streamVNextWorkflowHandler as getOriginalStreamVNextWorkflowHandler,\n resumeAsyncWorkflowHandler as getOriginalResumeAsyncWorkflowHandler,\n resumeWorkflowHandler as getOriginalResumeWorkflowHandler,\n listWorkflowRunsHandler as getOriginalListWorkflowRunsHandler,\n getWorkflowRunByIdHandler as getOriginalGetWorkflowRunByIdHandler,\n getWorkflowRunExecutionResultHandler as getOriginalGetWorkflowRunExecutionResultHandler,\n cancelWorkflowRunHandler as getOriginalCancelWorkflowRunHandler,\n observeStreamLegacyWorkflowHandler as getOriginalObserveStreamLegacyWorkflowHandler,\n resumeStreamWorkflowHandler as getOriginalResumeStreamWorkflowHandler,\n observeStreamVNextWorkflowHandler as getOriginalObserveStreamVNextWorkflowHandler,\n} from '@mastra/server/handlers/workflows';\nimport type { Context } from 'hono';\nimport { HTTPException } from 'hono/http-exception';\nimport { stream } from 'hono/streaming';\n\nimport { handleError } from '../../error';\nimport { parsePage, parsePerPage } from '../../utils/query-parsers';\n\nexport async function listWorkflowsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n\n const workflows = await getOriginalWorkflowsHandler({\n mastra,\n });\n\n return c.json(workflows);\n } catch (error) {\n return handleError(error, 'Error getting workflows');\n }\n}\n\nexport async function getWorkflowByIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n\n const workflow = await getOriginalWorkflowByIdHandler({\n mastra,\n workflowId,\n });\n\n return c.json(workflow);\n } catch (error) {\n return handleError(error, 'Error getting workflow');\n }\n}\n\nexport async function createWorkflowRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n const prevRunId = c.req.query('runId');\n\n const result = await getOriginalCreateWorkflowRunHandler({\n mastra,\n workflowId,\n runId: prevRunId,\n });\n\n return c.json(result);\n } catch (e) {\n return handleError(e, 'Error creating run');\n }\n}\n\nexport async function startAsyncWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const workflowId = c.req.param('workflowId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n const result = await getOriginalStartAsyncWorkflowHandler({\n mastra,\n requestContext,\n workflowId,\n runId,\n inputData,\n tracingOptions,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error executing workflow');\n }\n}\n\nexport async function startWorkflowRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const workflowId = c.req.param('workflowId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n await getOriginalStartWorkflowRunHandler({\n mastra,\n requestContext,\n workflowId,\n runId,\n inputData,\n tracingOptions,\n });\n\n return c.json({ message: 'Workflow run started' });\n } catch (e) {\n return handleError(e, 'Error starting workflow run');\n }\n}\n\nexport async function streamWorkflowHandler(c: Context) {\n return streamVNextWorkflowHandler(c);\n}\n\nexport async function observeStreamWorkflowHandler(c: Context) {\n return observeStreamVNextWorkflowHandler(c);\n}\n\nexport async function streamVNextWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const workflowId = c.req.param('workflowId');\n const { inputData, closeOnSuspend, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const result = await getOriginalStreamVNextWorkflowHandler({\n mastra,\n workflowId,\n runId,\n inputData,\n requestContext,\n closeOnSuspend,\n tracingOptions,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in workflow stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n },\n async err => {\n logger.error('Error in workflow stream: ' + err?.message);\n },\n );\n } catch (error) {\n return handleError(error, 'Error streaming workflow');\n }\n}\n\nexport async function observeStreamVNextWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const logger = mastra.getLogger();\n const workflowId = c.req.param('workflowId');\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const result = await getOriginalObserveStreamVNextWorkflowHandler({\n mastra,\n workflowId,\n runId,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in workflow observe stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n },\n async err => {\n logger.error('Error in workflow observe stream: ' + err?.message);\n },\n );\n } catch (error) {\n return handleError(error, 'Error observing workflow stream');\n }\n}\n\nexport async function streamLegacyWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const workflowId = c.req.param('workflowId');\n const { inputData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const result = await getOriginalStreamLegacyWorkflowHandler({\n mastra,\n workflowId,\n runId,\n inputData,\n requestContext,\n tracingOptions,\n });\n\n const reader = result.stream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in workflow stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n await stream.close();\n },\n async err => {\n logger.error('Error in workflow stream: ' + err?.message);\n },\n );\n } catch (error) {\n return handleError(error, 'Error streaming workflow');\n }\n}\n\nexport async function observeStreamLegacyWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const logger = mastra.getLogger();\n const workflowId = c.req.param('workflowId');\n const runId = c.req.query('runId');\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to observe workflow stream' });\n }\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const result = await getOriginalObserveStreamLegacyWorkflowHandler({\n mastra,\n workflowId,\n runId,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in workflow observe stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n await stream.close();\n },\n async err => {\n logger.error('Error in workflow observe stream: ' + err?.message);\n },\n );\n } catch (error) {\n return handleError(error, 'Error observing workflow stream');\n }\n}\n\nexport async function resumeStreamWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const logger = mastra.getLogger();\n const workflowId = c.req.param('workflowId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n const runId = c.req.query('runId');\n\n c.header('Transfer-Encoding', 'chunked');\n\n return stream(\n c,\n async stream => {\n try {\n const result = await getOriginalResumeStreamWorkflowHandler({\n mastra,\n workflowId,\n runId,\n body: { step, resumeData },\n requestContext,\n tracingOptions,\n });\n\n const reader = result.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n let chunkResult;\n while ((chunkResult = await reader.read()) && !chunkResult.done) {\n await stream.write(JSON.stringify(chunkResult.value) + '\\x1E');\n }\n } catch (err) {\n logger.error('Error in workflow VNext stream: ' + ((err as Error)?.message ?? 'Unknown error'));\n }\n },\n async err => {\n logger.error('Error in workflow VNext stream: ' + err?.message);\n },\n );\n } catch (error) {\n return handleError(error, 'Error streaming workflow');\n }\n}\n\nexport async function resumeAsyncWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const workflowId = c.req.param('workflowId');\n const runId = c.req.query('runId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to resume workflow' });\n }\n\n const result = await getOriginalResumeAsyncWorkflowHandler({\n mastra,\n requestContext,\n workflowId,\n runId,\n body: { step, resumeData },\n tracingOptions,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error resuming workflow step');\n }\n}\n\nexport async function resumeWorkflowHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const requestContext = c.get('requestContext');\n const workflowId = c.req.param('workflowId');\n const runId = c.req.query('runId');\n const { step, resumeData, tracingOptions } = await c.req.json();\n\n if (!runId) {\n throw new HTTPException(400, { message: 'runId required to resume workflow' });\n }\n\n await getOriginalResumeWorkflowHandler({\n mastra,\n requestContext,\n workflowId,\n runId,\n body: { step, resumeData },\n tracingOptions,\n });\n\n return c.json({ message: 'Workflow run resumed' });\n } catch (error) {\n return handleError(error, 'Error resuming workflow');\n }\n}\n\nexport async function listWorkflowRunsHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n const { fromDate, toDate, perPage: perPageRaw, page: pageRaw, resourceId } = c.req.query();\n const workflowRuns = await getOriginalListWorkflowRunsHandler({\n mastra,\n workflowId,\n fromDate: fromDate ? new Date(fromDate) : undefined,\n toDate: toDate ? new Date(toDate) : undefined,\n perPage: perPageRaw !== undefined ? parsePerPage(perPageRaw) : undefined,\n page: pageRaw !== undefined ? parsePage(pageRaw) : undefined,\n resourceId,\n });\n\n return c.json(workflowRuns);\n } catch (error) {\n return handleError(error, 'Error getting workflow runs');\n }\n}\n\nexport async function getWorkflowRunByIdHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n const runId = c.req.param('runId');\n const workflowRun = await getOriginalGetWorkflowRunByIdHandler({\n mastra,\n workflowId,\n runId,\n });\n\n return c.json(workflowRun);\n } catch (error) {\n return handleError(error, 'Error getting workflow run');\n }\n}\n\nexport async function getWorkflowRunExecutionResultHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n const runId = c.req.param('runId');\n const workflowRunExecutionResult = await getOriginalGetWorkflowRunExecutionResultHandler({\n mastra,\n workflowId,\n runId,\n });\n\n return c.json(workflowRunExecutionResult);\n } catch (error) {\n return handleError(error, 'Error getting workflow run execution result');\n }\n}\n\nexport async function cancelWorkflowRunHandler(c: Context) {\n try {\n const mastra: Mastra = c.get('mastra');\n const workflowId = c.req.param('workflowId');\n const runId = c.req.param('runId');\n\n const result = await getOriginalCancelWorkflowRunHandler({\n mastra,\n workflowId,\n runId,\n });\n\n return c.json(result);\n } catch (error) {\n return handleError(error, 'Error canceling workflow run');\n }\n}\n","import { Hono } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { describeRoute } from 'hono-openapi';\nimport type { BodyLimitOptions } from '../../../types';\nimport {\n cancelWorkflowRunHandler,\n createWorkflowRunHandler,\n getWorkflowByIdHandler,\n getWorkflowRunByIdHandler,\n getWorkflowRunExecutionResultHandler,\n listWorkflowRunsHandler,\n listWorkflowsHandler,\n resumeAsyncWorkflowHandler,\n resumeWorkflowHandler,\n startAsyncWorkflowHandler,\n startWorkflowRunHandler,\n streamVNextWorkflowHandler,\n resumeStreamWorkflowHandler,\n observeStreamVNextWorkflowHandler,\n streamLegacyWorkflowHandler,\n observeStreamLegacyWorkflowHandler,\n} from './handlers';\n\nexport function workflowsRouter(bodyLimitOptions: BodyLimitOptions) {\n const router = new Hono();\n\n // Workflow routes\n router.get(\n '/',\n describeRoute({\n description: 'Get all workflows',\n tags: ['workflows'],\n responses: {\n 200: {\n description: 'List of all workflows',\n },\n },\n }),\n listWorkflowsHandler,\n );\n\n router.get(\n '/:workflowId',\n describeRoute({\n description: 'Get workflow by ID',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Workflow details',\n },\n 404: {\n description: 'Workflow not found',\n },\n },\n }),\n getWorkflowByIdHandler,\n );\n\n router.get(\n '/:workflowId/runs',\n describeRoute({\n description: 'List all runs for a workflow',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n { name: 'fromDate', in: 'query', required: false, schema: { type: 'string', format: 'date-time' } },\n { name: 'toDate', in: 'query', required: false, schema: { type: 'string', format: 'date-time' } },\n { name: 'limit', in: 'query', required: false, schema: { type: 'number' } },\n { name: 'offset', in: 'query', required: false, schema: { type: 'number' } },\n { name: 'resourceId', in: 'query', required: false, schema: { type: 'string' } },\n ],\n responses: {\n 200: {\n description: 'List of workflow runs from storage',\n },\n },\n }),\n listWorkflowRunsHandler,\n );\n\n router.get(\n '/:workflowId/runs/:runId/execution-result',\n describeRoute({\n description: 'Get execution result for a workflow run',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Workflow run execution result',\n },\n 404: {\n description: 'Workflow run execution result not found',\n },\n },\n }),\n getWorkflowRunExecutionResultHandler,\n );\n\n router.get(\n '/:workflowId/runs/:runId',\n describeRoute({\n description: 'Get workflow run by ID',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Workflow run by ID',\n },\n 404: {\n description: 'Workflow run not found',\n },\n },\n }),\n getWorkflowRunByIdHandler,\n );\n\n router.post(\n '/:workflowId/resume',\n describeRoute({\n description: 'Resume a suspended workflow step',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n },\n },\n },\n },\n },\n }),\n resumeWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/resume-stream',\n describeRoute({\n description: 'Resume a suspended workflow that uses streamVNext',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n }),\n resumeStreamWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/resume-async',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Resume a suspended workflow step',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n step: {\n oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],\n },\n resumeData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n },\n },\n },\n },\n },\n }),\n resumeAsyncWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/stream-legacy',\n describeRoute({\n description: 'Stream legacy workflow in real-time',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'workflow run started',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n streamLegacyWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/observe-stream-legacy',\n describeRoute({\n description: 'Observe workflow stream in real-time',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'workflow stream observed',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n observeStreamLegacyWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/streamVNext',\n describeRoute({\n description: 'Stream workflow in real-time using the VNext streaming API',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n closeOnSuspend: {\n type: 'boolean',\n description: 'Close the stream on suspend',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'workflow run started',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n streamVNextWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/observe',\n describeRoute({\n description: 'Observe workflow stream in real-time using the streaming API',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'workflow stream observed',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n observeStreamVNextWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/stream',\n describeRoute({\n description: 'Stream workflow in real-time using the streaming API',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n closeOnSuspend: {\n type: 'boolean',\n description: 'Close the stream on suspend',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'workflow run started',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n streamVNextWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/observe-streamVNext',\n describeRoute({\n description: 'Observe workflow stream in real-time using the VNext streaming API',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'workflow stream vNext observed',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n tags: ['workflows'],\n }),\n observeStreamVNextWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/create-run',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Create a new workflow run',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'New workflow run created',\n },\n },\n }),\n createWorkflowRunHandler,\n );\n\n router.post(\n '/:workflowId/start-async',\n bodyLimit(bodyLimitOptions),\n describeRoute({\n description: 'Execute/Start a workflow',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: false,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'workflow execution result',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n }),\n startAsyncWorkflowHandler,\n );\n\n router.post(\n '/:workflowId/start',\n describeRoute({\n description: 'Start an existing workflow run',\n tags: ['workflows'],\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'query',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n inputData: { type: 'object' },\n requestContext: {\n type: 'object',\n description: 'Request Context for the workflow execution',\n },\n tracingOptions: {\n type: 'object',\n description: 'Tracing options for the workflow execution',\n properties: {\n metadata: {\n type: 'object',\n description: 'Custom metadata to attach to the trace',\n additionalProperties: true,\n },\n },\n },\n },\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'workflow run started',\n },\n 404: {\n description: 'workflow not found',\n },\n },\n }),\n startWorkflowRunHandler,\n );\n\n router.post(\n '/:workflowId/runs/:runId/cancel',\n describeRoute({\n description: 'Cancel a workflow run',\n parameters: [\n {\n name: 'workflowId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n {\n name: 'runId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n tags: ['workflows'],\n responses: {\n 200: {\n description: 'workflow run cancelled',\n },\n },\n }),\n cancelWorkflowRunHandler,\n );\n\n return router;\n}\n","export const html = `\n<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Welcome to Mastra</title>\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/inter-ui/3.19.3/inter.min.css\" />\n <style>\n body {\n margin: 0;\n padding: 0;\n background-color: #0d0d0d;\n color: #ffffff;\n font-family:\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n system-ui,\n sans-serif;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n main {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n text-align: center;\n }\n\n h1 {\n font-size: 4rem;\n font-weight: 600;\n margin: 0 0 1rem 0;\n background: linear-gradient(to right, #fff, #ccc);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n line-height: 1.2;\n }\n\n .subtitle {\n color: #9ca3af;\n font-size: 1.25rem;\n max-width: 600px;\n margin: 0 auto 3rem auto;\n line-height: 1.6;\n }\n\n .docs-link {\n background-color: #1a1a1a;\n padding: 1rem 2rem;\n border-radius: 0.5rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n font-family: monospace;\n font-size: 1rem;\n color: #ffffff;\n text-decoration: none;\n transition: background-color 0.2s;\n }\n\n .docs-link:hover {\n background-color: #252525;\n }\n\n .arrow-icon {\n transition: transform 0.2s;\n }\n\n .docs-link:hover .arrow-icon {\n transform: translateX(4px);\n }\n </style>\n </head>\n <body>\n <main>\n <h1>Welcome to Mastra</h1>\n <p class=\"subtitle\">\n Prototype and productionize AI features with a modern JS/TS stack.\n </p>\n\n <a href=\"https://mastra.ai/docs\" class=\"docs-link\">\n Browse the docs\n <svg\n class=\"arrow-icon\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\n </svg>\n </a>\n </main>\n </body>\n</html>\n`;\n","import { readFile } from 'fs/promises';\nimport * as https from 'node:https';\nimport { join } from 'path/posix';\nimport { serve } from '@hono/node-server';\nimport { serveStatic } from '@hono/node-server/serve-static';\nimport { swaggerUI } from '@hono/swagger-ui';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { RequestContext } from '@mastra/core/request-context';\nimport { Tool } from '@mastra/core/tools';\nimport { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { Context, MiddlewareHandler } from 'hono';\nimport { Hono } from 'hono';\nimport { cors } from 'hono/cors';\nimport { logger } from 'hono/logger';\nimport { timeout } from 'hono/timeout';\nimport { describeRoute, openAPISpecs } from 'hono-openapi';\nimport { getAgentCardByIdHandler, getAgentExecutionHandler } from './handlers/a2a';\nimport { authenticationMiddleware, authorizationMiddleware } from './handlers/auth';\nimport { handleClientsRefresh, handleTriggerClientsRefresh, isHotReloadDisabled } from './handlers/client';\nimport { errorHandler } from './handlers/error';\nimport { healthHandler } from './handlers/health';\nimport { restartAllActiveWorkflowRunsHandler } from './handlers/restart-active-runs';\nimport { rootHandler } from './handlers/root';\nimport { agentBuilderRouter } from './handlers/routes/agent-builder/router';\nimport { agentsRouterDev, agentsRouter } from './handlers/routes/agents/router';\nimport { logsRouter } from './handlers/routes/logs/router';\nimport { mcpRouter } from './handlers/routes/mcp/router';\nimport { memoryRoutes } from './handlers/routes/memory/router';\nimport { observabilityRouter } from './handlers/routes/observability/router';\nimport { scoresRouter } from './handlers/routes/scores/router';\nimport { toolsRouter } from './handlers/routes/tools/router';\nimport { vectorRouter } from './handlers/routes/vector/router';\nimport { workflowsRouter } from './handlers/routes/workflows/router';\nimport type { ServerBundleOptions } from './types';\nimport { html } from './welcome.js';\n\ntype Bindings = {};\n\ntype Variables = {\n mastra: Mastra;\n requestContext: RequestContext;\n clients: Set<{ controller: ReadableStreamDefaultController }>;\n tools: Record<string, Tool>;\n taskStore: InMemoryTaskStore;\n playground: boolean;\n isDev: boolean;\n customRouteAuthConfig?: Map<string, boolean>;\n};\n\nexport function getToolExports(tools: Record<string, Function>[]) {\n try {\n return tools.reduce((acc, toolModule) => {\n Object.entries(toolModule).forEach(([key, tool]) => {\n if (tool instanceof Tool) {\n acc[key] = tool;\n }\n });\n return acc;\n }, {});\n } catch (err: any) {\n console.error(\n `Failed to import tools\nreason: ${err.message}\n${err.stack.split('\\n').slice(1).join('\\n')}\n `,\n err,\n );\n }\n}\n\nexport async function createHonoServer(\n mastra: Mastra,\n options: ServerBundleOptions = {\n tools: {},\n },\n) {\n // Create typed Hono app\n const app = new Hono<{ Bindings: Bindings; Variables: Variables }>();\n const server = mastra.getServer();\n const a2aTaskStore = new InMemoryTaskStore();\n const routes = server?.apiRoutes;\n\n // Store custom route auth configurations\n const customRouteAuthConfig = new Map<string, boolean>();\n\n if (routes) {\n for (const route of routes) {\n // By default, routes require authentication unless explicitly set to false\n const requiresAuth = route.requiresAuth !== false;\n const routeKey = `${route.method}:${route.path}`;\n customRouteAuthConfig.set(routeKey, requiresAuth);\n }\n }\n\n app.onError((err, c) => errorHandler(err, c, options.isDev));\n\n // Configure hono context\n // Configure hono context\n app.use('*', async function setContext(c, next) {\n // Parse request context from request body and add to context\n let requestContext = new RequestContext();\n // Parse request context from request body and add to context\n if (c.req.method === 'POST' || c.req.method === 'PUT') {\n const contentType = c.req.header('content-type');\n if (contentType?.includes('application/json')) {\n try {\n const clonedReq = c.req.raw.clone();\n const body = (await clonedReq.json()) as { requestContext?: Record<string, any> };\n if (body.requestContext) {\n requestContext = new RequestContext(Object.entries(body.requestContext));\n }\n } catch {\n // Body parsing failed, continue without body\n }\n }\n }\n\n // Parse request context from query params and add to context\n if (c.req.method === 'GET') {\n try {\n const encodedRequestContext = c.req.query('requestContext');\n if (encodedRequestContext) {\n let parsedRequestContext: Record<string, any> | undefined;\n // Try JSON first\n try {\n parsedRequestContext = JSON.parse(encodedRequestContext);\n } catch {\n // Fallback to base64(JSON)\n try {\n const json = Buffer.from(encodedRequestContext, 'base64').toString('utf-8');\n parsedRequestContext = JSON.parse(json);\n } catch {\n // ignore if still invalid\n }\n }\n\n if (parsedRequestContext && typeof parsedRequestContext === 'object') {\n requestContext = new RequestContext([...requestContext.entries(), ...Object.entries(parsedRequestContext)]);\n }\n }\n } catch {\n // ignore query parsing errors\n }\n }\n\n // Add relevant contexts to hono context\n c.set('requestContext', requestContext);\n c.set('mastra', mastra);\n c.set('tools', options.tools);\n c.set('taskStore', a2aTaskStore);\n c.set('playground', options.playground === true);\n c.set('isDev', options.isDev === true);\n c.set('customRouteAuthConfig', customRouteAuthConfig);\n return next();\n });\n\n // Apply custom server middleware from Mastra instance\n const serverMiddleware = mastra.getServerMiddleware?.();\n\n if (serverMiddleware && serverMiddleware.length > 0) {\n for (const m of serverMiddleware) {\n app.use(m.path, m.handler);\n }\n }\n\n //Global cors config\n if (server?.cors === false) {\n app.use('*', timeout(server?.timeout ?? 3 * 60 * 1000));\n } else {\n const corsConfig = {\n origin: '*',\n allowMethods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],\n credentials: false,\n maxAge: 3600,\n ...server?.cors,\n allowHeaders: ['Content-Type', 'Authorization', 'x-mastra-client-type', ...(server?.cors?.allowHeaders ?? [])],\n exposeHeaders: ['Content-Length', 'X-Requested-With', ...(server?.cors?.exposeHeaders ?? [])],\n };\n app.use('*', timeout(server?.timeout ?? 3 * 60 * 1000), cors(corsConfig));\n }\n\n // Health check endpoint (before auth middleware so it's publicly accessible)\n app.get(\n '/health',\n describeRoute({\n description: 'Health check endpoint',\n tags: ['system'],\n responses: {\n 200: {\n description: 'Service is healthy',\n },\n },\n }),\n healthHandler,\n );\n\n // Run AUTH middlewares after CORS middleware\n app.use('*', authenticationMiddleware);\n app.use('*', authorizationMiddleware);\n\n const bodyLimitOptions = {\n maxSize: server?.bodySizeLimit ?? 4.5 * 1024 * 1024, // 4.5 MB,\n onError: (c: Context) => c.json({ error: 'Request body too large' }, 413),\n };\n\n if (server?.middleware) {\n const normalizedMiddlewares = Array.isArray(server.middleware) ? server.middleware : [server.middleware];\n const middlewares = normalizedMiddlewares.map(middleware => {\n if (typeof middleware === 'function') {\n return {\n path: '*',\n handler: middleware,\n };\n }\n\n return middleware;\n });\n\n for (const middleware of middlewares) {\n app.use(middleware.path, middleware.handler);\n }\n }\n\n if (routes) {\n for (const route of routes) {\n const middlewares: MiddlewareHandler[] = [];\n\n if (route.middleware) {\n middlewares.push(...(Array.isArray(route.middleware) ? route.middleware : [route.middleware]));\n }\n if (route.openapi) {\n middlewares.push(describeRoute(route.openapi));\n }\n\n const handler = 'handler' in route ? route.handler : await route.createHandler({ mastra });\n\n if (route.method === 'GET') {\n app.get(route.path, ...middlewares, handler);\n } else if (route.method === 'POST') {\n app.post(route.path, ...middlewares, handler);\n } else if (route.method === 'PUT') {\n app.put(route.path, ...middlewares, handler);\n } else if (route.method === 'DELETE') {\n app.delete(route.path, ...middlewares, handler);\n } else if (route.method === 'PATCH') {\n app.patch(route.path, ...middlewares, handler);\n } else if (route.method === 'ALL') {\n app.all(route.path, ...middlewares, handler);\n }\n }\n }\n\n if (server?.build?.apiReqLogs) {\n app.use(logger());\n }\n\n /**\n * A2A\n */\n\n app.get(\n '/.well-known/:agentId/agent-card.json',\n describeRoute({\n description: 'Get agent configuration',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n responses: {\n 200: {\n description: 'Agent configuration',\n },\n },\n }),\n getAgentCardByIdHandler,\n );\n\n app.post(\n '/a2a/:agentId',\n describeRoute({\n description: 'Execute agent via A2A protocol',\n tags: ['agents'],\n parameters: [\n {\n name: 'agentId',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n },\n ],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n method: {\n type: 'string',\n enum: ['message/send', 'message/stream', 'tasks/get', 'tasks/cancel'],\n description: 'The A2A protocol method to execute',\n },\n params: {\n type: 'object',\n oneOf: [\n {\n // MessageSendParams\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the task being initiated or continued',\n },\n sessionId: {\n type: 'string',\n description: 'Optional identifier for the session this task belongs to',\n },\n message: {\n type: 'object',\n description: 'The message content to send to the agent for processing',\n },\n pushNotification: {\n type: 'object',\n nullable: true,\n description:\n 'Optional pushNotification information for receiving notifications about this task',\n },\n historyLength: {\n type: 'integer',\n nullable: true,\n description:\n 'Optional parameter to specify how much message history to include in the response',\n },\n metadata: {\n type: 'object',\n nullable: true,\n description: 'Optional metadata associated with sending this message',\n },\n },\n required: ['id', 'message'],\n },\n {\n // TaskQueryParams\n type: 'object',\n properties: {\n id: { type: 'string', description: 'The unique identifier of the task' },\n historyLength: {\n type: 'integer',\n nullable: true,\n description: 'Optional history length to retrieve for the task',\n },\n metadata: {\n type: 'object',\n nullable: true,\n description: 'Optional metadata to include with the operation',\n },\n },\n required: ['id'],\n },\n {\n // TaskIdParams\n type: 'object',\n properties: {\n id: { type: 'string', description: 'The unique identifier of the task' },\n metadata: {\n type: 'object',\n nullable: true,\n description: 'Optional metadata to include with the operation',\n },\n },\n required: ['id'],\n },\n ],\n },\n },\n required: ['method', 'params'],\n },\n },\n },\n },\n responses: {\n 200: {\n description: 'A2A response',\n },\n 400: {\n description: 'Missing or invalid request parameters',\n },\n 404: {\n description: 'Agent not found',\n },\n },\n }),\n getAgentExecutionHandler,\n );\n\n // API routes\n app.get(\n '/api',\n describeRoute({\n description: 'Get API status',\n tags: ['system'],\n responses: {\n 200: {\n description: 'Success',\n },\n },\n }),\n rootHandler,\n );\n\n // Agents routes\n app.route('/api/agents', agentsRouter(bodyLimitOptions));\n\n if (options.isDev) {\n app.route('/api/agents', agentsRouterDev(bodyLimitOptions));\n }\n\n // MCP server routes\n app.route('/api/mcp', mcpRouter(bodyLimitOptions));\n // Network Memory routes\n app.route('/api/memory', memoryRoutes(bodyLimitOptions));\n // Observability routes\n app.route('/api/observability', observabilityRouter());\n // Legacy Workflow routes\n app.route('/api/workflows', workflowsRouter(bodyLimitOptions));\n // Log routes\n app.route('/api/logs', logsRouter());\n // Scores routes\n app.route('/api/scores', scoresRouter(bodyLimitOptions));\n // Agent builder routes\n app.route('/api/agent-builder', agentBuilderRouter(bodyLimitOptions));\n // Tool routes\n app.route('/api/tools', toolsRouter(bodyLimitOptions, options.tools));\n // Vector routes\n app.route('/api/vector', vectorRouter(bodyLimitOptions));\n\n if (options?.isDev || server?.build?.openAPIDocs || server?.build?.swaggerUI) {\n app.get(\n '/openapi.json',\n openAPISpecs(app, {\n includeEmptyPaths: true,\n documentation: {\n info: { title: 'Mastra API', version: '1.0.0', description: 'Mastra API' },\n },\n }),\n );\n }\n\n if (options?.isDev || server?.build?.swaggerUI) {\n app.get(\n '/swagger-ui',\n describeRoute({\n hide: true,\n }),\n swaggerUI({ url: '/openapi.json' }),\n );\n }\n\n if (options?.isDev) {\n app.post(\n '/__restart-active-workflow-runs',\n describeRoute({\n hide: true,\n }),\n restartAllActiveWorkflowRunsHandler,\n );\n }\n\n if (options?.playground) {\n // SSE endpoint for refresh notifications\n app.get(\n '/refresh-events',\n describeRoute({\n hide: true,\n }),\n handleClientsRefresh,\n );\n\n // Trigger refresh for all clients\n app.post(\n '/__refresh',\n describeRoute({\n hide: true,\n }),\n handleTriggerClientsRefresh,\n );\n\n // Check hot reload status\n app.get(\n '/__hot-reload-status',\n describeRoute({\n hide: true,\n }),\n (c: Context) => {\n return c.json({\n disabled: isHotReloadDisabled(),\n timestamp: new Date().toISOString(),\n });\n },\n );\n // Playground routes - these should come after API routes\n // Serve assets with specific MIME types\n app.use('/assets/*', async (c, next) => {\n const path = c.req.path;\n if (path.endsWith('.js')) {\n c.header('Content-Type', 'application/javascript');\n } else if (path.endsWith('.css')) {\n c.header('Content-Type', 'text/css');\n }\n await next();\n });\n\n // Serve static assets from playground directory\n app.use(\n '/assets/*',\n serveStatic({\n root: './playground/assets',\n }),\n );\n }\n\n // Dynamic HTML handler - this must come before static file serving\n app.get('*', async (c, next) => {\n // Skip if it's an API route\n if (\n c.req.path.startsWith('/api/') ||\n c.req.path.startsWith('/swagger-ui') ||\n c.req.path.startsWith('/openapi.json')\n ) {\n return await next();\n }\n\n // Skip if it's an asset file (has extension other than .html)\n const path = c.req.path;\n if (path.includes('.') && !path.endsWith('.html')) {\n return await next();\n }\n\n if (options?.playground) {\n // For HTML routes, serve index.html with dynamic replacements\n let indexHtml = await readFile(join(process.cwd(), './playground/index.html'), 'utf-8');\n\n // Inject the server port information\n const serverOptions = mastra.getServer();\n const port = serverOptions?.port ?? (Number(process.env.PORT) || 4111);\n const hideCloudCta = process.env.MASTRA_HIDE_CLOUD_CTA === 'true';\n const host = serverOptions?.host ?? 'localhost';\n\n indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_HOST%%'`, `'${host}'`);\n indexHtml = indexHtml.replace(`'%%MASTRA_SERVER_PORT%%'`, `'${port}'`);\n indexHtml = indexHtml.replace(`'%%MASTRA_HIDE_CLOUD_CTA%%'`, `'${hideCloudCta}'`);\n\n return c.newResponse(indexHtml, 200, { 'Content-Type': 'text/html' });\n }\n\n return c.newResponse(html, 200, { 'Content-Type': 'text/html' });\n });\n\n if (options?.playground) {\n // Serve extra static files from playground directory (this comes after HTML handler)\n app.use(\n '*',\n serveStatic({\n root: './playground',\n }),\n );\n }\n\n return app;\n}\n\nexport async function createNodeServer(mastra: Mastra, options: ServerBundleOptions = { tools: {} }) {\n const app = await createHonoServer(mastra, options);\n const serverOptions = mastra.getServer();\n\n const key =\n serverOptions?.https?.key ??\n (process.env.MASTRA_HTTPS_KEY ? Buffer.from(process.env.MASTRA_HTTPS_KEY, 'base64') : undefined);\n const cert =\n serverOptions?.https?.cert ??\n (process.env.MASTRA_HTTPS_CERT ? Buffer.from(process.env.MASTRA_HTTPS_CERT, 'base64') : undefined);\n const isHttpsEnabled = Boolean(key && cert);\n\n const host = serverOptions?.host ?? 'localhost';\n const port = serverOptions?.port ?? (Number(process.env.PORT) || 4111);\n const protocol = isHttpsEnabled ? 'https' : 'http';\n\n const server = serve(\n {\n fetch: app.fetch,\n port,\n hostname: serverOptions?.host,\n ...(isHttpsEnabled\n ? {\n createServer: https.createServer,\n serverOptions: {\n key,\n cert,\n },\n }\n : {}),\n },\n () => {\n const logger = mastra.getLogger();\n logger.info(` Mastra API running on port ${protocol}://${host}:${port}/api`);\n if (options?.playground) {\n const playgroundUrl = `${protocol}://${host}:${port}`;\n logger.info(`👨‍💻 Playground available at ${playgroundUrl}`);\n }\n\n if (process.send) {\n process.send({\n type: 'server-ready',\n port,\n host,\n });\n }\n },\n );\n\n await mastra.startEventEngine();\n\n return server;\n}\n"]}