@mastra/hono 0.0.2-beta.4 → 0.0.2-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# @mastra/hono
|
|
2
2
|
|
|
3
|
+
## 0.0.2-beta.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`38380b6`](https://github.com/mastra-ai/mastra/commit/38380b60fca905824bdf6b43df307a58efb1aa15), [`798d0c7`](https://github.com/mastra-ai/mastra/commit/798d0c740232653b1d754870e6b43a55c364ffe2), [`ffe84d5`](https://github.com/mastra-ai/mastra/commit/ffe84d54f3b0f85167fe977efd027dba027eb998), [`2c212e7`](https://github.com/mastra-ai/mastra/commit/2c212e704c90e2db83d4109e62c03f0f6ebd2667), [`4ca4306`](https://github.com/mastra-ai/mastra/commit/4ca430614daa5fa04730205a302a43bf4accfe9f), [`3bf6c5f`](https://github.com/mastra-ai/mastra/commit/3bf6c5f104c25226cd84e0c77f9dec15f2cac2db), [`3bf6c5f`](https://github.com/mastra-ai/mastra/commit/3bf6c5f104c25226cd84e0c77f9dec15f2cac2db)]:
|
|
8
|
+
- @mastra/server@1.0.0-beta.11
|
|
9
|
+
- @mastra/core@1.0.0-beta.11
|
|
10
|
+
|
|
11
|
+
## 0.0.2-beta.5
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- ### Breaking Changes ([#11028](https://github.com/mastra-ai/mastra/pull/11028))
|
|
16
|
+
- Renamed `RuntimeContext` type to `ServerContext` to avoid confusion with the user-facing `RequestContext` (previously called `RuntimeContext`)
|
|
17
|
+
- Removed `playground` and `isDev` options from server adapter constructors - these only set context variables without any actual functionality
|
|
18
|
+
|
|
19
|
+
### Changes
|
|
20
|
+
|
|
21
|
+
**@mastra/server**
|
|
22
|
+
- Renamed `RuntimeContext` type to `ServerContext` in route handler types
|
|
23
|
+
- Renamed `createTestRuntimeContext` to `createTestServerContext` in test utilities
|
|
24
|
+
- Renamed `isPlayground` parameter to `isStudio` in `formatAgent` function
|
|
25
|
+
|
|
26
|
+
**@mastra/hono**
|
|
27
|
+
- Removed `playground` and `isDev` from `HonoVariables` type
|
|
28
|
+
- Removed setting of `playground` and `isDev` context variables in middleware
|
|
29
|
+
|
|
30
|
+
**@mastra/express**
|
|
31
|
+
- Removed `playground` and `isDev` from `Express.Locals` interface
|
|
32
|
+
- Removed setting of `playground` and `isDev` in response locals
|
|
33
|
+
|
|
34
|
+
- Updated dependencies [[`edb07e4`](https://github.com/mastra-ai/mastra/commit/edb07e49283e0c28bd094a60e03439bf6ecf0221), [`b7e17d3`](https://github.com/mastra-ai/mastra/commit/b7e17d3f5390bb5a71efc112204413656fcdc18d), [`26346be`](https://github.com/mastra-ai/mastra/commit/26346beb6e637a114d1dd2eaf5127512c5af84fd), [`261473a`](https://github.com/mastra-ai/mastra/commit/261473ac637e633064a22076671e2e02b002214d), [`5d7000f`](https://github.com/mastra-ai/mastra/commit/5d7000f757cd65ea9dc5b05e662fd83dfd44e932), [`4f0331a`](https://github.com/mastra-ai/mastra/commit/4f0331a79bf6eb5ee598a5086e55de4b5a0ada03), [`8a000da`](https://github.com/mastra-ai/mastra/commit/8a000da0c09c679a2312f6b3aa05b2ca78ca7393)]:
|
|
35
|
+
- @mastra/core@1.0.0-beta.10
|
|
36
|
+
- @mastra/server@1.0.0-beta.10
|
|
37
|
+
|
|
3
38
|
## 0.0.2-beta.4
|
|
4
39
|
|
|
5
40
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -337,8 +337,6 @@ var MastraServer = class extends serverAdapter.MastraServer {
|
|
|
337
337
|
c.set("mastra", this.mastra);
|
|
338
338
|
c.set("tools", this.tools || {});
|
|
339
339
|
c.set("taskStore", this.taskStore);
|
|
340
|
-
c.set("playground", this.playground === true);
|
|
341
|
-
c.set("isDev", this.isDev === true);
|
|
342
340
|
c.set("abortSignal", c.req.raw.signal);
|
|
343
341
|
c.set("customRouteAuthConfig", this.customRouteAuthConfig);
|
|
344
342
|
return next();
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/http-exception.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/middleware/body-limit/index.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/stream.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/utils.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/stream.js","../src/auth-middleware.ts","../src/index.ts"],"names":["isDevPlaygroundRequest","isProtectedPath","canAccessPublicly","checkRules","defaultAuthConfig","MastraServerBase","stream","redactStreamChunk","toReqRes","toFetchResponse"],"mappings":"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","file":"index.cjs","sourcesContent":["// src/http-exception.ts\nvar HTTPException = class extends Error {\n res;\n status;\n constructor(status = 500, options) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n }\n getResponse() {\n if (this.res) {\n const newResponse = new Response(this.res.body, {\n status: this.status,\n headers: this.res.headers\n });\n return newResponse;\n }\n return new Response(this.message, {\n status: this.status\n });\n }\n};\nexport {\n HTTPException\n};\n","// src/middleware/body-limit/index.ts\nimport { HTTPException } from \"../../http-exception.js\";\nvar ERROR_MESSAGE = \"Payload Too Large\";\nvar BodyLimitError = class extends Error {\n constructor(message) {\n super(message);\n this.name = \"BodyLimitError\";\n }\n};\nvar bodyLimit = (options) => {\n const onError = options.onError || (() => {\n const res = new Response(ERROR_MESSAGE, {\n status: 413\n });\n throw new HTTPException(413, { res });\n });\n const maxSize = options.maxSize;\n return async function bodyLimit2(c, next) {\n if (!c.req.raw.body) {\n return next();\n }\n const hasTransferEncoding = c.req.raw.headers.has(\"transfer-encoding\");\n const hasContentLength = c.req.raw.headers.has(\"content-length\");\n if (hasTransferEncoding && hasContentLength) {\n }\n if (hasContentLength && !hasTransferEncoding) {\n const contentLength = parseInt(c.req.raw.headers.get(\"content-length\") || \"0\", 10);\n return contentLength > maxSize ? onError(c) : next();\n }\n let size = 0;\n const rawReader = c.req.raw.body.getReader();\n const reader = new ReadableStream({\n async start(controller) {\n try {\n for (; ; ) {\n const { done, value } = await rawReader.read();\n if (done) {\n break;\n }\n size += value.length;\n if (size > maxSize) {\n controller.error(new BodyLimitError(ERROR_MESSAGE));\n break;\n }\n controller.enqueue(value);\n }\n } finally {\n controller.close();\n }\n }\n });\n const requestInit = { body: reader, duplex: \"half\" };\n c.req.raw = new Request(c.req.raw, requestInit);\n await next();\n if (c.error instanceof BodyLimitError) {\n c.res = await onError(c);\n }\n };\n};\nexport {\n bodyLimit\n};\n","// src/utils/stream.ts\nvar StreamingApi = class {\n writer;\n encoder;\n writable;\n abortSubscribers = [];\n responseReadable;\n aborted = false;\n closed = false;\n constructor(writable, _readable) {\n this.writable = writable;\n this.writer = writable.getWriter();\n this.encoder = new TextEncoder();\n const reader = _readable.getReader();\n this.abortSubscribers.push(async () => {\n await reader.cancel();\n });\n this.responseReadable = new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n done ? controller.close() : controller.enqueue(value);\n },\n cancel: () => {\n this.abort();\n }\n });\n }\n async write(input) {\n try {\n if (typeof input === \"string\") {\n input = this.encoder.encode(input);\n }\n await this.writer.write(input);\n } catch {\n }\n return this;\n }\n async writeln(input) {\n await this.write(input + \"\\n\");\n return this;\n }\n sleep(ms) {\n return new Promise((res) => setTimeout(res, ms));\n }\n async close() {\n try {\n await this.writer.close();\n } catch {\n }\n this.closed = true;\n }\n async pipe(body) {\n this.writer.releaseLock();\n await body.pipeTo(this.writable, { preventClose: true });\n this.writer = this.writable.getWriter();\n }\n onAbort(listener) {\n this.abortSubscribers.push(listener);\n }\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n this.abortSubscribers.forEach((subscriber) => subscriber());\n }\n }\n};\nexport {\n StreamingApi\n};\n","// src/helper/streaming/utils.ts\nvar isOldBunVersion = () => {\n const version = typeof Bun !== \"undefined\" ? Bun.version : void 0;\n if (version === void 0) {\n return false;\n }\n const result = version.startsWith(\"1.1\") || version.startsWith(\"1.0\") || version.startsWith(\"0.\");\n isOldBunVersion = () => result;\n return result;\n};\nexport {\n isOldBunVersion\n};\n","// src/helper/streaming/stream.ts\nimport { StreamingApi } from \"../../utils/stream.js\";\nimport { isOldBunVersion } from \"./utils.js\";\nvar contextStash = /* @__PURE__ */ new WeakMap();\nvar stream = (c, cb, onError) => {\n const { readable, writable } = new TransformStream();\n const stream2 = new StreamingApi(writable, readable);\n if (isOldBunVersion()) {\n c.req.raw.signal.addEventListener(\"abort\", () => {\n if (!stream2.closed) {\n stream2.abort();\n }\n });\n }\n contextStash.set(stream2.responseReadable, c);\n (async () => {\n try {\n await cb(stream2);\n } catch (e) {\n if (e === void 0) {\n } else if (e instanceof Error && onError) {\n await onError(e, stream2);\n } else {\n console.error(e);\n }\n } finally {\n stream2.close();\n }\n })();\n return c.newResponse(stream2.responseReadable);\n};\nexport {\n stream\n};\n","import type { ContextWithMastra } from '@mastra/core/server';\nimport {\n canAccessPublicly,\n checkRules,\n defaultAuthConfig,\n isDevPlaygroundRequest,\n isProtectedPath,\n} from '@mastra/server/auth';\nimport type { Next } from 'hono';\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 const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\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 const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\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 { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { Tool } from '@mastra/core/tools';\nimport type { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { MCPHttpTransportResult, MCPSseTransportResult } from '@mastra/server/handlers/mcp';\nimport { MastraServer as MastraServerBase, redactStreamChunk } from '@mastra/server/server-adapter';\nimport type { ServerRoute } from '@mastra/server/server-adapter';\nimport { toReqRes, toFetchResponse } from 'fetch-to-node';\nimport type { Context, HonoRequest, MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { stream } from 'hono/streaming';\n\nimport { authenticationMiddleware, authorizationMiddleware } from './auth-middleware';\n\n// Export type definitions for Hono app configuration\nexport type HonoVariables = {\n mastra: Mastra;\n requestContext: RequestContext;\n tools: Record<string, Tool>;\n abortSignal: AbortSignal;\n taskStore: InMemoryTaskStore;\n customRouteAuthConfig?: Map<string, boolean>;\n playground?: boolean;\n isDev?: boolean;\n};\n\nexport type HonoBindings = {};\n\n/**\n * Generic handler function type compatible across Hono versions.\n * Uses a minimal signature that all Hono middleware handlers satisfy.\n */\ntype HonoRouteHandler = (...args: any[]) => any;\n\n/**\n * Minimal interface representing what MastraServer needs from a Hono app.\n * This allows any Hono app instance to be passed without strict generic matching,\n * avoiding the version mismatch issues that occur with Hono's strict generic types.\n */\nexport interface HonoApp {\n use(path: string, ...handlers: HonoRouteHandler[]): unknown;\n get(path: string, ...handlers: HonoRouteHandler[]): unknown;\n post(path: string, ...handlers: HonoRouteHandler[]): unknown;\n put(path: string, ...handlers: HonoRouteHandler[]): unknown;\n delete(path: string, ...handlers: HonoRouteHandler[]): unknown;\n patch(path: string, ...handlers: HonoRouteHandler[]): unknown;\n all(path: string, ...handlers: HonoRouteHandler[]): unknown;\n}\n\nexport class MastraServer extends MastraServerBase<HonoApp, HonoRequest, Context> {\n createContextMiddleware(): MiddlewareHandler {\n return async (c, next) => {\n // Parse request context from request body and add to context\n\n let bodyRequestContext: Record<string, any> | undefined;\n let paramsRequestContext: Record<string, any> | undefined;\n\n // Parse request context from request body (POST/PUT)\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 bodyRequestContext = body.requestContext;\n }\n } catch {\n // Body parsing failed, continue without body\n }\n }\n }\n\n // Parse request context from query params (GET)\n if (c.req.method === 'GET') {\n try {\n const encodedRequestContext = c.req.query('requestContext');\n if (encodedRequestContext) {\n // Try JSON first\n try {\n paramsRequestContext = JSON.parse(encodedRequestContext);\n } catch {\n // Fallback to base64(JSON)\n try {\n const json = Buffer.from(encodedRequestContext, 'base64').toString('utf-8');\n paramsRequestContext = JSON.parse(json);\n } catch {\n // ignore if still invalid\n }\n }\n }\n } catch {\n // ignore query parsing errors\n }\n }\n\n const requestContext = this.mergeRequestContext({ paramsRequestContext, bodyRequestContext });\n\n // Add relevant contexts to hono context\n c.set('requestContext', requestContext);\n c.set('mastra', this.mastra);\n c.set('tools', this.tools || {});\n c.set('taskStore', this.taskStore);\n c.set('playground', this.playground === true);\n c.set('isDev', this.isDev === true);\n c.set('abortSignal', c.req.raw.signal);\n c.set('customRouteAuthConfig', this.customRouteAuthConfig);\n\n return next();\n };\n }\n async stream(route: ServerRoute, res: Context, result: { fullStream: ReadableStream }): Promise<any> {\n res.header('Content-Type', 'text/plain');\n res.header('Transfer-Encoding', 'chunked');\n\n const streamFormat = route.streamFormat || 'stream';\n\n return stream(\n res,\n async stream => {\n const readableStream = result instanceof ReadableStream ? result : result.fullStream;\n const reader = readableStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n if (value) {\n // Optionally redact sensitive data (system prompts, tool definitions, API keys) before sending to the client\n const shouldRedact = this.streamOptions?.redact ?? true;\n const outputValue = shouldRedact ? redactStreamChunk(value) : value;\n if (streamFormat === 'sse') {\n await stream.write(`data: ${JSON.stringify(outputValue)}\\n\\n`);\n } else {\n await stream.write(JSON.stringify(outputValue) + '\\x1E');\n }\n }\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (error) {\n console.error(error);\n } finally {\n await stream.close();\n }\n },\n async err => {\n console.error(err);\n },\n );\n }\n\n async getParams(\n route: ServerRoute,\n request: HonoRequest,\n ): Promise<{ urlParams: Record<string, string>; queryParams: Record<string, string>; body: unknown }> {\n const urlParams = request.param();\n const queryParams = request.query();\n let body: unknown;\n if (route.method === 'POST' || route.method === 'PUT' || route.method === 'PATCH') {\n try {\n body = await request.json();\n } catch {}\n }\n return { urlParams, queryParams: queryParams as Record<string, string>, body };\n }\n\n async sendResponse(route: ServerRoute, response: Context, result: unknown): Promise<any> {\n if (route.responseType === 'json') {\n return response.json(result as any, 200);\n } else if (route.responseType === 'stream') {\n return this.stream(route, response, result as { fullStream: ReadableStream });\n } else if (route.responseType === 'datastream-response') {\n const fetchResponse = result as globalThis.Response;\n return fetchResponse;\n } else if (route.responseType === 'mcp-http') {\n // MCP Streamable HTTP transport\n const { server, httpPath } = result as MCPHttpTransportResult;\n const { req, res } = toReqRes(response.req.raw);\n\n try {\n await server.startHTTP({\n url: new URL(response.req.url),\n httpPath,\n req,\n res,\n });\n return await toFetchResponse(res);\n } catch {\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: -32603, message: 'Internal server error' },\n id: null,\n }),\n );\n return await toFetchResponse(res);\n }\n return await toFetchResponse(res);\n }\n } else if (route.responseType === 'mcp-sse') {\n // MCP SSE transport\n const { server, ssePath, messagePath } = result as MCPSseTransportResult;\n\n try {\n return await server.startHonoSSE({\n url: new URL(response.req.url),\n ssePath,\n messagePath,\n context: response,\n });\n } catch {\n return response.json({ error: 'Error handling MCP SSE request' }, 500);\n }\n } else {\n return response.status(500);\n }\n }\n\n async registerRoute(app: HonoApp, route: ServerRoute, { prefix }: { prefix?: string }): Promise<void> {\n // Determine if body limits should be applied\n const shouldApplyBodyLimit = this.bodyLimitOptions && ['POST', 'PUT', 'PATCH'].includes(route.method.toUpperCase());\n\n // Get the body size limit for this route (route-specific or default)\n const maxSize = route.maxBodySize ?? this.bodyLimitOptions?.maxSize;\n\n // Build middleware array\n const middlewares: MiddlewareHandler[] = [];\n\n if (shouldApplyBodyLimit && maxSize && this.bodyLimitOptions) {\n middlewares.push(\n bodyLimit({\n maxSize,\n onError: this.bodyLimitOptions.onError as any,\n }),\n );\n }\n\n app[route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch' | 'all'](\n `${prefix}${route.path}`,\n ...middlewares,\n async (c: Context) => {\n const params = await this.getParams(route, c.req);\n\n if (params.queryParams) {\n try {\n params.queryParams = await this.parseQueryParams(route, params.queryParams as Record<string, string>);\n } catch (error) {\n console.error('Error parsing query params', error);\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid query parameters',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n if (params.body) {\n try {\n params.body = await this.parseBody(route, params.body);\n } catch (error) {\n console.error('Error parsing body:', error instanceof Error ? error.message : String(error));\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid request body',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n const handlerParams = {\n ...params.urlParams,\n ...params.queryParams,\n ...(typeof params.body === 'object' ? params.body : {}),\n requestContext: c.get('requestContext'),\n mastra: this.mastra,\n tools: c.get('tools'),\n taskStore: c.get('taskStore'),\n abortSignal: c.get('abortSignal'),\n };\n\n try {\n const result = await route.handler(handlerParams);\n return this.sendResponse(route, c, result);\n } catch (error) {\n console.error('Error calling handler', error);\n // Check if it's an HTTPException or MastraError with a status code\n if (error && typeof error === 'object') {\n // Check for direct status property (HTTPException)\n if ('status' in error) {\n const status = (error as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n // Check for MastraError with status in details\n if ('details' in error && error.details && typeof error.details === 'object' && 'status' in error.details) {\n const status = (error.details as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n }\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, 500);\n }\n },\n );\n }\n\n registerContextMiddleware(): void {\n this.app.use('*', this.createContextMiddleware());\n }\n\n registerAuthMiddleware(): void {\n const authConfig = this.mastra.getServer()?.auth;\n if (!authConfig) {\n // No auth config, skip registration\n return;\n }\n\n this.app.use('*', authenticationMiddleware);\n this.app.use('*', authorizationMiddleware);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/http-exception.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/middleware/body-limit/index.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/stream.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/utils.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/stream.js","../src/auth-middleware.ts","../src/index.ts"],"names":["isDevPlaygroundRequest","isProtectedPath","canAccessPublicly","checkRules","defaultAuthConfig","MastraServerBase","stream","redactStreamChunk","toReqRes","toFetchResponse"],"mappings":"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","file":"index.cjs","sourcesContent":["// src/http-exception.ts\nvar HTTPException = class extends Error {\n res;\n status;\n constructor(status = 500, options) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n }\n getResponse() {\n if (this.res) {\n const newResponse = new Response(this.res.body, {\n status: this.status,\n headers: this.res.headers\n });\n return newResponse;\n }\n return new Response(this.message, {\n status: this.status\n });\n }\n};\nexport {\n HTTPException\n};\n","// src/middleware/body-limit/index.ts\nimport { HTTPException } from \"../../http-exception.js\";\nvar ERROR_MESSAGE = \"Payload Too Large\";\nvar BodyLimitError = class extends Error {\n constructor(message) {\n super(message);\n this.name = \"BodyLimitError\";\n }\n};\nvar bodyLimit = (options) => {\n const onError = options.onError || (() => {\n const res = new Response(ERROR_MESSAGE, {\n status: 413\n });\n throw new HTTPException(413, { res });\n });\n const maxSize = options.maxSize;\n return async function bodyLimit2(c, next) {\n if (!c.req.raw.body) {\n return next();\n }\n const hasTransferEncoding = c.req.raw.headers.has(\"transfer-encoding\");\n const hasContentLength = c.req.raw.headers.has(\"content-length\");\n if (hasTransferEncoding && hasContentLength) {\n }\n if (hasContentLength && !hasTransferEncoding) {\n const contentLength = parseInt(c.req.raw.headers.get(\"content-length\") || \"0\", 10);\n return contentLength > maxSize ? onError(c) : next();\n }\n let size = 0;\n const rawReader = c.req.raw.body.getReader();\n const reader = new ReadableStream({\n async start(controller) {\n try {\n for (; ; ) {\n const { done, value } = await rawReader.read();\n if (done) {\n break;\n }\n size += value.length;\n if (size > maxSize) {\n controller.error(new BodyLimitError(ERROR_MESSAGE));\n break;\n }\n controller.enqueue(value);\n }\n } finally {\n controller.close();\n }\n }\n });\n const requestInit = { body: reader, duplex: \"half\" };\n c.req.raw = new Request(c.req.raw, requestInit);\n await next();\n if (c.error instanceof BodyLimitError) {\n c.res = await onError(c);\n }\n };\n};\nexport {\n bodyLimit\n};\n","// src/utils/stream.ts\nvar StreamingApi = class {\n writer;\n encoder;\n writable;\n abortSubscribers = [];\n responseReadable;\n aborted = false;\n closed = false;\n constructor(writable, _readable) {\n this.writable = writable;\n this.writer = writable.getWriter();\n this.encoder = new TextEncoder();\n const reader = _readable.getReader();\n this.abortSubscribers.push(async () => {\n await reader.cancel();\n });\n this.responseReadable = new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n done ? controller.close() : controller.enqueue(value);\n },\n cancel: () => {\n this.abort();\n }\n });\n }\n async write(input) {\n try {\n if (typeof input === \"string\") {\n input = this.encoder.encode(input);\n }\n await this.writer.write(input);\n } catch {\n }\n return this;\n }\n async writeln(input) {\n await this.write(input + \"\\n\");\n return this;\n }\n sleep(ms) {\n return new Promise((res) => setTimeout(res, ms));\n }\n async close() {\n try {\n await this.writer.close();\n } catch {\n }\n this.closed = true;\n }\n async pipe(body) {\n this.writer.releaseLock();\n await body.pipeTo(this.writable, { preventClose: true });\n this.writer = this.writable.getWriter();\n }\n onAbort(listener) {\n this.abortSubscribers.push(listener);\n }\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n this.abortSubscribers.forEach((subscriber) => subscriber());\n }\n }\n};\nexport {\n StreamingApi\n};\n","// src/helper/streaming/utils.ts\nvar isOldBunVersion = () => {\n const version = typeof Bun !== \"undefined\" ? Bun.version : void 0;\n if (version === void 0) {\n return false;\n }\n const result = version.startsWith(\"1.1\") || version.startsWith(\"1.0\") || version.startsWith(\"0.\");\n isOldBunVersion = () => result;\n return result;\n};\nexport {\n isOldBunVersion\n};\n","// src/helper/streaming/stream.ts\nimport { StreamingApi } from \"../../utils/stream.js\";\nimport { isOldBunVersion } from \"./utils.js\";\nvar contextStash = /* @__PURE__ */ new WeakMap();\nvar stream = (c, cb, onError) => {\n const { readable, writable } = new TransformStream();\n const stream2 = new StreamingApi(writable, readable);\n if (isOldBunVersion()) {\n c.req.raw.signal.addEventListener(\"abort\", () => {\n if (!stream2.closed) {\n stream2.abort();\n }\n });\n }\n contextStash.set(stream2.responseReadable, c);\n (async () => {\n try {\n await cb(stream2);\n } catch (e) {\n if (e === void 0) {\n } else if (e instanceof Error && onError) {\n await onError(e, stream2);\n } else {\n console.error(e);\n }\n } finally {\n stream2.close();\n }\n })();\n return c.newResponse(stream2.responseReadable);\n};\nexport {\n stream\n};\n","import type { ContextWithMastra } from '@mastra/core/server';\nimport {\n canAccessPublicly,\n checkRules,\n defaultAuthConfig,\n isDevPlaygroundRequest,\n isProtectedPath,\n} from '@mastra/server/auth';\nimport type { Next } from 'hono';\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 const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\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 const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\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 { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { Tool } from '@mastra/core/tools';\nimport type { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { MCPHttpTransportResult, MCPSseTransportResult } from '@mastra/server/handlers/mcp';\nimport { MastraServer as MastraServerBase, redactStreamChunk } from '@mastra/server/server-adapter';\nimport type { ServerRoute } from '@mastra/server/server-adapter';\nimport { toReqRes, toFetchResponse } from 'fetch-to-node';\nimport type { Context, HonoRequest, MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { stream } from 'hono/streaming';\n\nimport { authenticationMiddleware, authorizationMiddleware } from './auth-middleware';\n\n// Export type definitions for Hono app configuration\nexport type HonoVariables = {\n mastra: Mastra;\n requestContext: RequestContext;\n tools: Record<string, Tool>;\n abortSignal: AbortSignal;\n taskStore: InMemoryTaskStore;\n customRouteAuthConfig?: Map<string, boolean>;\n};\n\nexport type HonoBindings = {};\n\n/**\n * Generic handler function type compatible across Hono versions.\n * Uses a minimal signature that all Hono middleware handlers satisfy.\n */\ntype HonoRouteHandler = (...args: any[]) => any;\n\n/**\n * Minimal interface representing what MastraServer needs from a Hono app.\n * This allows any Hono app instance to be passed without strict generic matching,\n * avoiding the version mismatch issues that occur with Hono's strict generic types.\n */\nexport interface HonoApp {\n use(path: string, ...handlers: HonoRouteHandler[]): unknown;\n get(path: string, ...handlers: HonoRouteHandler[]): unknown;\n post(path: string, ...handlers: HonoRouteHandler[]): unknown;\n put(path: string, ...handlers: HonoRouteHandler[]): unknown;\n delete(path: string, ...handlers: HonoRouteHandler[]): unknown;\n patch(path: string, ...handlers: HonoRouteHandler[]): unknown;\n all(path: string, ...handlers: HonoRouteHandler[]): unknown;\n}\n\nexport class MastraServer extends MastraServerBase<HonoApp, HonoRequest, Context> {\n createContextMiddleware(): MiddlewareHandler {\n return async (c, next) => {\n // Parse request context from request body and add to context\n\n let bodyRequestContext: Record<string, any> | undefined;\n let paramsRequestContext: Record<string, any> | undefined;\n\n // Parse request context from request body (POST/PUT)\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 bodyRequestContext = body.requestContext;\n }\n } catch {\n // Body parsing failed, continue without body\n }\n }\n }\n\n // Parse request context from query params (GET)\n if (c.req.method === 'GET') {\n try {\n const encodedRequestContext = c.req.query('requestContext');\n if (encodedRequestContext) {\n // Try JSON first\n try {\n paramsRequestContext = JSON.parse(encodedRequestContext);\n } catch {\n // Fallback to base64(JSON)\n try {\n const json = Buffer.from(encodedRequestContext, 'base64').toString('utf-8');\n paramsRequestContext = JSON.parse(json);\n } catch {\n // ignore if still invalid\n }\n }\n }\n } catch {\n // ignore query parsing errors\n }\n }\n\n const requestContext = this.mergeRequestContext({ paramsRequestContext, bodyRequestContext });\n\n // Add relevant contexts to hono context\n c.set('requestContext', requestContext);\n c.set('mastra', this.mastra);\n c.set('tools', this.tools || {});\n c.set('taskStore', this.taskStore);\n c.set('abortSignal', c.req.raw.signal);\n c.set('customRouteAuthConfig', this.customRouteAuthConfig);\n\n return next();\n };\n }\n async stream(route: ServerRoute, res: Context, result: { fullStream: ReadableStream }): Promise<any> {\n res.header('Content-Type', 'text/plain');\n res.header('Transfer-Encoding', 'chunked');\n\n const streamFormat = route.streamFormat || 'stream';\n\n return stream(\n res,\n async stream => {\n const readableStream = result instanceof ReadableStream ? result : result.fullStream;\n const reader = readableStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n if (value) {\n // Optionally redact sensitive data (system prompts, tool definitions, API keys) before sending to the client\n const shouldRedact = this.streamOptions?.redact ?? true;\n const outputValue = shouldRedact ? redactStreamChunk(value) : value;\n if (streamFormat === 'sse') {\n await stream.write(`data: ${JSON.stringify(outputValue)}\\n\\n`);\n } else {\n await stream.write(JSON.stringify(outputValue) + '\\x1E');\n }\n }\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (error) {\n console.error(error);\n } finally {\n await stream.close();\n }\n },\n async err => {\n console.error(err);\n },\n );\n }\n\n async getParams(\n route: ServerRoute,\n request: HonoRequest,\n ): Promise<{ urlParams: Record<string, string>; queryParams: Record<string, string>; body: unknown }> {\n const urlParams = request.param();\n const queryParams = request.query();\n let body: unknown;\n if (route.method === 'POST' || route.method === 'PUT' || route.method === 'PATCH') {\n try {\n body = await request.json();\n } catch {}\n }\n return { urlParams, queryParams: queryParams as Record<string, string>, body };\n }\n\n async sendResponse(route: ServerRoute, response: Context, result: unknown): Promise<any> {\n if (route.responseType === 'json') {\n return response.json(result as any, 200);\n } else if (route.responseType === 'stream') {\n return this.stream(route, response, result as { fullStream: ReadableStream });\n } else if (route.responseType === 'datastream-response') {\n const fetchResponse = result as globalThis.Response;\n return fetchResponse;\n } else if (route.responseType === 'mcp-http') {\n // MCP Streamable HTTP transport\n const { server, httpPath } = result as MCPHttpTransportResult;\n const { req, res } = toReqRes(response.req.raw);\n\n try {\n await server.startHTTP({\n url: new URL(response.req.url),\n httpPath,\n req,\n res,\n });\n return await toFetchResponse(res);\n } catch {\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: -32603, message: 'Internal server error' },\n id: null,\n }),\n );\n return await toFetchResponse(res);\n }\n return await toFetchResponse(res);\n }\n } else if (route.responseType === 'mcp-sse') {\n // MCP SSE transport\n const { server, ssePath, messagePath } = result as MCPSseTransportResult;\n\n try {\n return await server.startHonoSSE({\n url: new URL(response.req.url),\n ssePath,\n messagePath,\n context: response,\n });\n } catch {\n return response.json({ error: 'Error handling MCP SSE request' }, 500);\n }\n } else {\n return response.status(500);\n }\n }\n\n async registerRoute(app: HonoApp, route: ServerRoute, { prefix }: { prefix?: string }): Promise<void> {\n // Determine if body limits should be applied\n const shouldApplyBodyLimit = this.bodyLimitOptions && ['POST', 'PUT', 'PATCH'].includes(route.method.toUpperCase());\n\n // Get the body size limit for this route (route-specific or default)\n const maxSize = route.maxBodySize ?? this.bodyLimitOptions?.maxSize;\n\n // Build middleware array\n const middlewares: MiddlewareHandler[] = [];\n\n if (shouldApplyBodyLimit && maxSize && this.bodyLimitOptions) {\n middlewares.push(\n bodyLimit({\n maxSize,\n onError: this.bodyLimitOptions.onError as any,\n }),\n );\n }\n\n app[route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch' | 'all'](\n `${prefix}${route.path}`,\n ...middlewares,\n async (c: Context) => {\n const params = await this.getParams(route, c.req);\n\n if (params.queryParams) {\n try {\n params.queryParams = await this.parseQueryParams(route, params.queryParams as Record<string, string>);\n } catch (error) {\n console.error('Error parsing query params', error);\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid query parameters',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n if (params.body) {\n try {\n params.body = await this.parseBody(route, params.body);\n } catch (error) {\n console.error('Error parsing body:', error instanceof Error ? error.message : String(error));\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid request body',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n const handlerParams = {\n ...params.urlParams,\n ...params.queryParams,\n ...(typeof params.body === 'object' ? params.body : {}),\n requestContext: c.get('requestContext'),\n mastra: this.mastra,\n tools: c.get('tools'),\n taskStore: c.get('taskStore'),\n abortSignal: c.get('abortSignal'),\n };\n\n try {\n const result = await route.handler(handlerParams);\n return this.sendResponse(route, c, result);\n } catch (error) {\n console.error('Error calling handler', error);\n // Check if it's an HTTPException or MastraError with a status code\n if (error && typeof error === 'object') {\n // Check for direct status property (HTTPException)\n if ('status' in error) {\n const status = (error as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n // Check for MastraError with status in details\n if ('details' in error && error.details && typeof error.details === 'object' && 'status' in error.details) {\n const status = (error.details as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n }\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, 500);\n }\n },\n );\n }\n\n registerContextMiddleware(): void {\n this.app.use('*', this.createContextMiddleware());\n }\n\n registerAuthMiddleware(): void {\n const authConfig = this.mastra.getServer()?.auth;\n if (!authConfig) {\n // No auth config, skip registration\n return;\n }\n\n this.app.use('*', authenticationMiddleware);\n this.app.use('*', authorizationMiddleware);\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAqB,MAAM,+BAA+B,CAAC;AACpG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAOpE,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -335,8 +335,6 @@ var MastraServer = class extends MastraServer$1 {
|
|
|
335
335
|
c.set("mastra", this.mastra);
|
|
336
336
|
c.set("tools", this.tools || {});
|
|
337
337
|
c.set("taskStore", this.taskStore);
|
|
338
|
-
c.set("playground", this.playground === true);
|
|
339
|
-
c.set("isDev", this.isDev === true);
|
|
340
338
|
c.set("abortSignal", c.req.raw.signal);
|
|
341
339
|
c.set("customRouteAuthConfig", this.customRouteAuthConfig);
|
|
342
340
|
return next();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/http-exception.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/middleware/body-limit/index.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/stream.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/utils.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/stream.js","../src/auth-middleware.ts","../src/index.ts"],"names":["MastraServerBase","stream"],"mappings":"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","file":"index.js","sourcesContent":["// src/http-exception.ts\nvar HTTPException = class extends Error {\n res;\n status;\n constructor(status = 500, options) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n }\n getResponse() {\n if (this.res) {\n const newResponse = new Response(this.res.body, {\n status: this.status,\n headers: this.res.headers\n });\n return newResponse;\n }\n return new Response(this.message, {\n status: this.status\n });\n }\n};\nexport {\n HTTPException\n};\n","// src/middleware/body-limit/index.ts\nimport { HTTPException } from \"../../http-exception.js\";\nvar ERROR_MESSAGE = \"Payload Too Large\";\nvar BodyLimitError = class extends Error {\n constructor(message) {\n super(message);\n this.name = \"BodyLimitError\";\n }\n};\nvar bodyLimit = (options) => {\n const onError = options.onError || (() => {\n const res = new Response(ERROR_MESSAGE, {\n status: 413\n });\n throw new HTTPException(413, { res });\n });\n const maxSize = options.maxSize;\n return async function bodyLimit2(c, next) {\n if (!c.req.raw.body) {\n return next();\n }\n const hasTransferEncoding = c.req.raw.headers.has(\"transfer-encoding\");\n const hasContentLength = c.req.raw.headers.has(\"content-length\");\n if (hasTransferEncoding && hasContentLength) {\n }\n if (hasContentLength && !hasTransferEncoding) {\n const contentLength = parseInt(c.req.raw.headers.get(\"content-length\") || \"0\", 10);\n return contentLength > maxSize ? onError(c) : next();\n }\n let size = 0;\n const rawReader = c.req.raw.body.getReader();\n const reader = new ReadableStream({\n async start(controller) {\n try {\n for (; ; ) {\n const { done, value } = await rawReader.read();\n if (done) {\n break;\n }\n size += value.length;\n if (size > maxSize) {\n controller.error(new BodyLimitError(ERROR_MESSAGE));\n break;\n }\n controller.enqueue(value);\n }\n } finally {\n controller.close();\n }\n }\n });\n const requestInit = { body: reader, duplex: \"half\" };\n c.req.raw = new Request(c.req.raw, requestInit);\n await next();\n if (c.error instanceof BodyLimitError) {\n c.res = await onError(c);\n }\n };\n};\nexport {\n bodyLimit\n};\n","// src/utils/stream.ts\nvar StreamingApi = class {\n writer;\n encoder;\n writable;\n abortSubscribers = [];\n responseReadable;\n aborted = false;\n closed = false;\n constructor(writable, _readable) {\n this.writable = writable;\n this.writer = writable.getWriter();\n this.encoder = new TextEncoder();\n const reader = _readable.getReader();\n this.abortSubscribers.push(async () => {\n await reader.cancel();\n });\n this.responseReadable = new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n done ? controller.close() : controller.enqueue(value);\n },\n cancel: () => {\n this.abort();\n }\n });\n }\n async write(input) {\n try {\n if (typeof input === \"string\") {\n input = this.encoder.encode(input);\n }\n await this.writer.write(input);\n } catch {\n }\n return this;\n }\n async writeln(input) {\n await this.write(input + \"\\n\");\n return this;\n }\n sleep(ms) {\n return new Promise((res) => setTimeout(res, ms));\n }\n async close() {\n try {\n await this.writer.close();\n } catch {\n }\n this.closed = true;\n }\n async pipe(body) {\n this.writer.releaseLock();\n await body.pipeTo(this.writable, { preventClose: true });\n this.writer = this.writable.getWriter();\n }\n onAbort(listener) {\n this.abortSubscribers.push(listener);\n }\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n this.abortSubscribers.forEach((subscriber) => subscriber());\n }\n }\n};\nexport {\n StreamingApi\n};\n","// src/helper/streaming/utils.ts\nvar isOldBunVersion = () => {\n const version = typeof Bun !== \"undefined\" ? Bun.version : void 0;\n if (version === void 0) {\n return false;\n }\n const result = version.startsWith(\"1.1\") || version.startsWith(\"1.0\") || version.startsWith(\"0.\");\n isOldBunVersion = () => result;\n return result;\n};\nexport {\n isOldBunVersion\n};\n","// src/helper/streaming/stream.ts\nimport { StreamingApi } from \"../../utils/stream.js\";\nimport { isOldBunVersion } from \"./utils.js\";\nvar contextStash = /* @__PURE__ */ new WeakMap();\nvar stream = (c, cb, onError) => {\n const { readable, writable } = new TransformStream();\n const stream2 = new StreamingApi(writable, readable);\n if (isOldBunVersion()) {\n c.req.raw.signal.addEventListener(\"abort\", () => {\n if (!stream2.closed) {\n stream2.abort();\n }\n });\n }\n contextStash.set(stream2.responseReadable, c);\n (async () => {\n try {\n await cb(stream2);\n } catch (e) {\n if (e === void 0) {\n } else if (e instanceof Error && onError) {\n await onError(e, stream2);\n } else {\n console.error(e);\n }\n } finally {\n stream2.close();\n }\n })();\n return c.newResponse(stream2.responseReadable);\n};\nexport {\n stream\n};\n","import type { ContextWithMastra } from '@mastra/core/server';\nimport {\n canAccessPublicly,\n checkRules,\n defaultAuthConfig,\n isDevPlaygroundRequest,\n isProtectedPath,\n} from '@mastra/server/auth';\nimport type { Next } from 'hono';\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 const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\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 const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\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 { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { Tool } from '@mastra/core/tools';\nimport type { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { MCPHttpTransportResult, MCPSseTransportResult } from '@mastra/server/handlers/mcp';\nimport { MastraServer as MastraServerBase, redactStreamChunk } from '@mastra/server/server-adapter';\nimport type { ServerRoute } from '@mastra/server/server-adapter';\nimport { toReqRes, toFetchResponse } from 'fetch-to-node';\nimport type { Context, HonoRequest, MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { stream } from 'hono/streaming';\n\nimport { authenticationMiddleware, authorizationMiddleware } from './auth-middleware';\n\n// Export type definitions for Hono app configuration\nexport type HonoVariables = {\n mastra: Mastra;\n requestContext: RequestContext;\n tools: Record<string, Tool>;\n abortSignal: AbortSignal;\n taskStore: InMemoryTaskStore;\n customRouteAuthConfig?: Map<string, boolean>;\n playground?: boolean;\n isDev?: boolean;\n};\n\nexport type HonoBindings = {};\n\n/**\n * Generic handler function type compatible across Hono versions.\n * Uses a minimal signature that all Hono middleware handlers satisfy.\n */\ntype HonoRouteHandler = (...args: any[]) => any;\n\n/**\n * Minimal interface representing what MastraServer needs from a Hono app.\n * This allows any Hono app instance to be passed without strict generic matching,\n * avoiding the version mismatch issues that occur with Hono's strict generic types.\n */\nexport interface HonoApp {\n use(path: string, ...handlers: HonoRouteHandler[]): unknown;\n get(path: string, ...handlers: HonoRouteHandler[]): unknown;\n post(path: string, ...handlers: HonoRouteHandler[]): unknown;\n put(path: string, ...handlers: HonoRouteHandler[]): unknown;\n delete(path: string, ...handlers: HonoRouteHandler[]): unknown;\n patch(path: string, ...handlers: HonoRouteHandler[]): unknown;\n all(path: string, ...handlers: HonoRouteHandler[]): unknown;\n}\n\nexport class MastraServer extends MastraServerBase<HonoApp, HonoRequest, Context> {\n createContextMiddleware(): MiddlewareHandler {\n return async (c, next) => {\n // Parse request context from request body and add to context\n\n let bodyRequestContext: Record<string, any> | undefined;\n let paramsRequestContext: Record<string, any> | undefined;\n\n // Parse request context from request body (POST/PUT)\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 bodyRequestContext = body.requestContext;\n }\n } catch {\n // Body parsing failed, continue without body\n }\n }\n }\n\n // Parse request context from query params (GET)\n if (c.req.method === 'GET') {\n try {\n const encodedRequestContext = c.req.query('requestContext');\n if (encodedRequestContext) {\n // Try JSON first\n try {\n paramsRequestContext = JSON.parse(encodedRequestContext);\n } catch {\n // Fallback to base64(JSON)\n try {\n const json = Buffer.from(encodedRequestContext, 'base64').toString('utf-8');\n paramsRequestContext = JSON.parse(json);\n } catch {\n // ignore if still invalid\n }\n }\n }\n } catch {\n // ignore query parsing errors\n }\n }\n\n const requestContext = this.mergeRequestContext({ paramsRequestContext, bodyRequestContext });\n\n // Add relevant contexts to hono context\n c.set('requestContext', requestContext);\n c.set('mastra', this.mastra);\n c.set('tools', this.tools || {});\n c.set('taskStore', this.taskStore);\n c.set('playground', this.playground === true);\n c.set('isDev', this.isDev === true);\n c.set('abortSignal', c.req.raw.signal);\n c.set('customRouteAuthConfig', this.customRouteAuthConfig);\n\n return next();\n };\n }\n async stream(route: ServerRoute, res: Context, result: { fullStream: ReadableStream }): Promise<any> {\n res.header('Content-Type', 'text/plain');\n res.header('Transfer-Encoding', 'chunked');\n\n const streamFormat = route.streamFormat || 'stream';\n\n return stream(\n res,\n async stream => {\n const readableStream = result instanceof ReadableStream ? result : result.fullStream;\n const reader = readableStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n if (value) {\n // Optionally redact sensitive data (system prompts, tool definitions, API keys) before sending to the client\n const shouldRedact = this.streamOptions?.redact ?? true;\n const outputValue = shouldRedact ? redactStreamChunk(value) : value;\n if (streamFormat === 'sse') {\n await stream.write(`data: ${JSON.stringify(outputValue)}\\n\\n`);\n } else {\n await stream.write(JSON.stringify(outputValue) + '\\x1E');\n }\n }\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (error) {\n console.error(error);\n } finally {\n await stream.close();\n }\n },\n async err => {\n console.error(err);\n },\n );\n }\n\n async getParams(\n route: ServerRoute,\n request: HonoRequest,\n ): Promise<{ urlParams: Record<string, string>; queryParams: Record<string, string>; body: unknown }> {\n const urlParams = request.param();\n const queryParams = request.query();\n let body: unknown;\n if (route.method === 'POST' || route.method === 'PUT' || route.method === 'PATCH') {\n try {\n body = await request.json();\n } catch {}\n }\n return { urlParams, queryParams: queryParams as Record<string, string>, body };\n }\n\n async sendResponse(route: ServerRoute, response: Context, result: unknown): Promise<any> {\n if (route.responseType === 'json') {\n return response.json(result as any, 200);\n } else if (route.responseType === 'stream') {\n return this.stream(route, response, result as { fullStream: ReadableStream });\n } else if (route.responseType === 'datastream-response') {\n const fetchResponse = result as globalThis.Response;\n return fetchResponse;\n } else if (route.responseType === 'mcp-http') {\n // MCP Streamable HTTP transport\n const { server, httpPath } = result as MCPHttpTransportResult;\n const { req, res } = toReqRes(response.req.raw);\n\n try {\n await server.startHTTP({\n url: new URL(response.req.url),\n httpPath,\n req,\n res,\n });\n return await toFetchResponse(res);\n } catch {\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: -32603, message: 'Internal server error' },\n id: null,\n }),\n );\n return await toFetchResponse(res);\n }\n return await toFetchResponse(res);\n }\n } else if (route.responseType === 'mcp-sse') {\n // MCP SSE transport\n const { server, ssePath, messagePath } = result as MCPSseTransportResult;\n\n try {\n return await server.startHonoSSE({\n url: new URL(response.req.url),\n ssePath,\n messagePath,\n context: response,\n });\n } catch {\n return response.json({ error: 'Error handling MCP SSE request' }, 500);\n }\n } else {\n return response.status(500);\n }\n }\n\n async registerRoute(app: HonoApp, route: ServerRoute, { prefix }: { prefix?: string }): Promise<void> {\n // Determine if body limits should be applied\n const shouldApplyBodyLimit = this.bodyLimitOptions && ['POST', 'PUT', 'PATCH'].includes(route.method.toUpperCase());\n\n // Get the body size limit for this route (route-specific or default)\n const maxSize = route.maxBodySize ?? this.bodyLimitOptions?.maxSize;\n\n // Build middleware array\n const middlewares: MiddlewareHandler[] = [];\n\n if (shouldApplyBodyLimit && maxSize && this.bodyLimitOptions) {\n middlewares.push(\n bodyLimit({\n maxSize,\n onError: this.bodyLimitOptions.onError as any,\n }),\n );\n }\n\n app[route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch' | 'all'](\n `${prefix}${route.path}`,\n ...middlewares,\n async (c: Context) => {\n const params = await this.getParams(route, c.req);\n\n if (params.queryParams) {\n try {\n params.queryParams = await this.parseQueryParams(route, params.queryParams as Record<string, string>);\n } catch (error) {\n console.error('Error parsing query params', error);\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid query parameters',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n if (params.body) {\n try {\n params.body = await this.parseBody(route, params.body);\n } catch (error) {\n console.error('Error parsing body:', error instanceof Error ? error.message : String(error));\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid request body',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n const handlerParams = {\n ...params.urlParams,\n ...params.queryParams,\n ...(typeof params.body === 'object' ? params.body : {}),\n requestContext: c.get('requestContext'),\n mastra: this.mastra,\n tools: c.get('tools'),\n taskStore: c.get('taskStore'),\n abortSignal: c.get('abortSignal'),\n };\n\n try {\n const result = await route.handler(handlerParams);\n return this.sendResponse(route, c, result);\n } catch (error) {\n console.error('Error calling handler', error);\n // Check if it's an HTTPException or MastraError with a status code\n if (error && typeof error === 'object') {\n // Check for direct status property (HTTPException)\n if ('status' in error) {\n const status = (error as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n // Check for MastraError with status in details\n if ('details' in error && error.details && typeof error.details === 'object' && 'status' in error.details) {\n const status = (error.details as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n }\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, 500);\n }\n },\n );\n }\n\n registerContextMiddleware(): void {\n this.app.use('*', this.createContextMiddleware());\n }\n\n registerAuthMiddleware(): void {\n const authConfig = this.mastra.getServer()?.auth;\n if (!authConfig) {\n // No auth config, skip registration\n return;\n }\n\n this.app.use('*', authenticationMiddleware);\n this.app.use('*', authorizationMiddleware);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/http-exception.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/middleware/body-limit/index.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/stream.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/utils.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/stream.js","../src/auth-middleware.ts","../src/index.ts"],"names":["MastraServerBase","stream"],"mappings":";;;;;;;AACA,IAAI,aAAA,GAAgB,cAAc,KAAA,CAAM;AAAA,EACtC,GAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA,CAAY,MAAA,GAAS,GAAA,EAAK,OAAA,EAAS;AACjC,IAAA,KAAA,CAAM,SAAS,OAAA,EAAS,EAAE,KAAA,EAAO,OAAA,EAAS,OAAO,CAAA;AACjD,IAAA,IAAA,CAAK,MAAM,OAAA,EAAS,GAAA;AACpB,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EACA,WAAA,GAAc;AACZ,IAAA,IAAI,KAAK,GAAA,EAAK;AACZ,MAAA,MAAM,WAAA,GAAc,IAAI,QAAA,CAAS,IAAA,CAAK,IAAI,IAAA,EAAM;AAAA,QAC9C,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb,OAAA,EAAS,KAAK,GAAA,CAAI;AAAA,OACnB,CAAA;AACD,MAAA,OAAO,WAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAI,QAAA,CAAS,IAAA,CAAK,OAAA,EAAS;AAAA,MAChC,QAAQ,IAAA,CAAK;AAAA,KACd,CAAA;AAAA,EACH;AACF,CAAA;;;ACnBA,IAAI,aAAA,GAAgB,mBAAA;AACpB,IAAI,cAAA,GAAiB,cAAc,KAAA,CAAM;AAAA,EACvC,YAAY,OAAA,EAAS;AACnB,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,gBAAA;AAAA,EACd;AACF,CAAA;AACA,IAAI,SAAA,GAAY,CAAC,OAAA,KAAY;AAC3B,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,OAAA,KAAY,MAAM;AACxC,IAAA,MAAM,GAAA,GAAM,IAAI,QAAA,CAAS,aAAA,EAAe;AAAA,MACtC,MAAA,EAAQ;AAAA,KACT,CAAA;AACD,IAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,KAAK,CAAA;AAAA,EACtC,CAAA,CAAA;AACA,EAAA,MAAM,UAAU,OAAA,CAAQ,OAAA;AACxB,EAAA,OAAO,eAAe,UAAA,CAAW,CAAA,EAAG,IAAA,EAAM;AACxC,IAAA,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,IAAA,EAAM;AACnB,MAAA,OAAO,IAAA,EAAK;AAAA,IACd;AACA,IAAA,MAAM,sBAAsB,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,OAAA,CAAQ,IAAI,mBAAmB,CAAA;AACrE,IAAA,MAAM,mBAAmB,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,OAAA,CAAQ,IAAI,gBAAgB,CAAA;AAG/D,IAAA,IAAI,gBAAA,IAAoB,CAAC,mBAAA,EAAqB;AAC5C,MAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,QAAQ,GAAA,CAAI,gBAAgB,CAAA,IAAK,GAAA,EAAK,EAAE,CAAA;AACjF,MAAA,OAAO,aAAA,GAAgB,OAAA,GAAU,OAAA,CAAQ,CAAC,IAAI,IAAA,EAAK;AAAA,IACrD;AACA,IAAA,IAAI,IAAA,GAAO,CAAA;AACX,IAAA,MAAM,SAAA,GAAY,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,KAAK,SAAA,EAAU;AAC3C,IAAA,MAAM,MAAA,GAAS,IAAI,cAAA,CAAe;AAAA,MAChC,MAAM,MAAM,UAAA,EAAY;AACtB,QAAA,IAAI;AACF,UAAA,WAAW;AACT,YAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,UAAU,IAAA,EAAK;AAC7C,YAAA,IAAI,IAAA,EAAM;AACR,cAAA;AAAA,YACF;AACA,YAAA,IAAA,IAAQ,KAAA,CAAM,MAAA;AACd,YAAA,IAAI,OAAO,OAAA,EAAS;AAClB,cAAA,UAAA,CAAW,KAAA,CAAM,IAAI,cAAA,CAAe,aAAa,CAAC,CAAA;AAClD,cAAA;AAAA,YACF;AACA,YAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,UAC1B;AAAA,QACF,CAAA,SAAE;AACA,UAAA,UAAA,CAAW,KAAA,EAAM;AAAA,QACnB;AAAA,MACF;AAAA,KACD,CAAA;AACD,IAAA,MAAM,WAAA,GAAc,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAQ,MAAA,EAAO;AACnD,IAAA,CAAA,CAAE,IAAI,GAAA,GAAM,IAAI,QAAQ,CAAA,CAAE,GAAA,CAAI,KAAK,WAAW,CAAA;AAC9C,IAAA,MAAM,IAAA,EAAK;AACX,IAAA,IAAI,CAAA,CAAE,iBAAiB,cAAA,EAAgB;AACrC,MAAA,CAAA,CAAE,GAAA,GAAM,MAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACzB;AAAA,EACF,CAAA;AACF,CAAA;;;ACzDA,IAAI,eAAe,MAAM;AAAA,EACvB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,mBAAmB,EAAC;AAAA,EACpB,gBAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,MAAA,GAAS,KAAA;AAAA,EACT,WAAA,CAAY,UAAU,SAAA,EAAW;AAC/B,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,MAAA,GAAS,SAAS,SAAA,EAAU;AACjC,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,WAAA,EAAY;AAC/B,IAAA,MAAM,MAAA,GAAS,UAAU,SAAA,EAAU;AACnC,IAAA,IAAA,CAAK,gBAAA,CAAiB,KAAK,YAAY;AACrC,MAAA,MAAM,OAAO,MAAA,EAAO;AAAA,IACtB,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,gBAAA,GAAmB,IAAI,cAAA,CAAe;AAAA,MACzC,MAAM,KAAK,UAAA,EAAY;AACrB,QAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,QAAA,IAAA,GAAO,UAAA,CAAW,KAAA,EAAM,GAAI,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,MACtD,CAAA;AAAA,MACA,QAAQ,MAAM;AACZ,QAAA,IAAA,CAAK,KAAA,EAAM;AAAA,MACb;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EACA,MAAM,MAAM,KAAA,EAAO;AACjB,IAAA,IAAI;AACF,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,QAAA,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA;AAAA,MACnC;AACA,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,IAC/B,CAAA,CAAA,MAAQ;AAAA,IACR;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,KAAA,EAAO;AACnB,IAAA,MAAM,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,IAAI,CAAA;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EACA,MAAM,EAAA,EAAI;AACR,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,QAAQ,UAAA,CAAW,GAAA,EAAK,EAAE,CAAC,CAAA;AAAA,EACjD;AAAA,EACA,MAAM,KAAA,GAAQ;AACZ,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,OAAO,KAAA,EAAM;AAAA,IAC1B,CAAA,CAAA,MAAQ;AAAA,IACR;AACA,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAAA,EAChB;AAAA,EACA,MAAM,KAAK,IAAA,EAAM;AACf,IAAA,IAAA,CAAK,OAAO,WAAA,EAAY;AACxB,IAAA,MAAM,KAAK,MAAA,CAAO,IAAA,CAAK,UAAU,EAAE,YAAA,EAAc,MAAM,CAAA;AACvD,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,QAAA,CAAS,SAAA,EAAU;AAAA,EACxC;AAAA,EACA,QAAQ,QAAA,EAAU;AAChB,IAAA,IAAA,CAAK,gBAAA,CAAiB,KAAK,QAAQ,CAAA;AAAA,EACrC;AAAA,EACA,KAAA,GAAQ;AACN,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,MAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,MAAA,IAAA,CAAK,gBAAA,CAAiB,OAAA,CAAQ,CAAC,UAAA,KAAe,YAAY,CAAA;AAAA,IAC5D;AAAA,EACF;AACF,CAAA;;;AChEA,IAAI,kBAAkB,MAAM;AAC1B,EAAA,MAAM,OAAA,GAAU,OAAO,GAAA,KAAQ,WAAA,GAAc,IAAI,OAAA,GAAU,MAAA;AAC3D,EAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,IAAK,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,IAAK,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA;AAChG,EAAA,eAAA,GAAkB,MAAM,MAAA;AACxB,EAAA,OAAO,MAAA;AACT,CAAA;;;ACNA,IAAI,YAAA,uBAAmC,OAAA,EAAQ;AAC/C,IAAI,MAAA,GAAS,CAAC,CAAA,EAAG,EAAA,EAAI,OAAA,KAAY;AAC/B,EAAA,MAAM,EAAE,QAAA,EAAU,QAAA,EAAS,GAAI,IAAI,eAAA,EAAgB;AACnD,EAAA,MAAM,OAAA,GAAU,IAAI,YAAA,CAAa,QAAA,EAAU,QAAQ,CAAA;AACnD,EAAA,IAAI,iBAAgB,EAAG;AACrB,IAAA,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,MAAA,CAAO,gBAAA,CAAiB,SAAS,MAAM;AAC/C,MAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,QAAA,OAAA,CAAQ,KAAA,EAAM;AAAA,MAChB;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AACA,EAAA,YAAA,CAAa,GAAA,CAAI,OAAA,CAAQ,gBAAA,EAAkB,CAAC,CAAA;AAC5C,EAAA,CAAC,YAAY;AACX,IAAA,IAAI;AACF,MAAA,MAAM,GAAG,OAAO,CAAA;AAAA,IAClB,SAAS,CAAA,EAAG;AACV,MAAA,IAAI,MAAM,MAAA,EAAQ,CAClB,MAAA,IAAW,CAAA,YAAa,KAAA,IAAS,OAAA,EAAS;AACxC,QAAA,MAAM,OAAA,CAAQ,GAAG,OAAO,CAAA;AAAA,MAC1B,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,MACjB;AAAA,IACF,CAAA,SAAE;AACA,MAAA,OAAA,CAAQ,KAAA,EAAM;AAAA,IAChB;AAAA,EACF,CAAA,GAAG;AACH,EAAA,OAAO,CAAA,CAAE,WAAA,CAAY,OAAA,CAAQ,gBAAgB,CAAA;AAC/C,CAAA;ACpBO,IAAM,wBAAA,GAA2B,OAAO,CAAA,EAAsB,IAAA,KAAe;AAClF,EAAA,MAAM,MAAA,GAAS,CAAA,CAAE,GAAA,CAAI,QAAQ,CAAA;AAC7B,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA;AACvC,EAAA,MAAM,qBAAA,GAAwB,CAAA,CAAE,GAAA,CAAI,uBAAuB,CAAA;AAE3D,EAAA,IAAI,CAAC,UAAA,EAAY;AAEf,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAEA,EAAA,MAAM,IAAA,GAAO,EAAE,GAAA,CAAI,IAAA;AACnB,EAAA,MAAM,MAAA,GAAS,EAAE,GAAA,CAAI,MAAA;AACrB,EAAA,MAAM,YAAY,CAAC,IAAA,KAAiB,CAAA,CAAE,GAAA,CAAI,OAAO,IAAI,CAAA;AAErD,EAAA,IAAI,sBAAA,CAAuB,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAW,UAAU,CAAA,EAAG;AAE/D,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAEA,EAAA,IAAI,CAAC,eAAA,CAAgB,CAAA,CAAE,GAAA,CAAI,IAAA,EAAM,EAAE,GAAA,CAAI,MAAA,EAAQ,UAAA,EAAY,qBAAqB,CAAA,EAAG;AACjF,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAGA,EAAA,IAAI,iBAAA,CAAkB,EAAE,GAAA,CAAI,IAAA,EAAM,EAAE,GAAA,CAAI,MAAA,EAAQ,UAAU,CAAA,EAAG;AAC3D,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAGA,EAAA,MAAM,UAAA,GAAa,CAAA,CAAE,GAAA,CAAI,MAAA,CAAO,eAAe,CAAA;AAC/C,EAAA,IAAI,QAAuB,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA,GAAI,IAAA;AAE5E,EAAA,IAAI,CAAC,KAAA,IAAS,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,QAAQ,CAAA,EAAG;AACnC,IAAA,KAAA,GAAQ,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,QAAQ,CAAA,IAAK,IAAA;AAAA,EACnC;AAGA,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,yBAAA,IAA6B,GAAG,CAAA;AAAA,EACzD;AAEA,EAAA,IAAI;AAEF,IAAA,IAAI,IAAA;AAGJ,IAAA,IAAI,OAAO,UAAA,CAAW,iBAAA,KAAsB,UAAA,EAAY;AACtD,MAAA,IAAA,GAAO,MAAM,UAAA,CAAW,iBAAA,CAAkB,KAAA,EAAO,EAAE,GAAG,CAAA;AAAA,IACxD,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,IAC3D;AAEA,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,0BAAA,IAA8B,GAAG,CAAA;AAAA,IAC1D;AAGA,IAAA,CAAA,CAAE,GAAA,CAAI,gBAAgB,CAAA,CAAE,GAAA,CAAI,QAAQ,IAAI,CAAA;AAExC,IAAA,OAAO,IAAA,EAAK;AAAA,EACd,SAAS,GAAA,EAAK;AACZ,IAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,0BAAA,IAA8B,GAAG,CAAA;AAAA,EAC1D;AACF,CAAA;AAEO,IAAM,uBAAA,GAA0B,OAAO,CAAA,EAAsB,IAAA,KAAe;AACjF,EAAA,MAAM,MAAA,GAAS,CAAA,CAAE,GAAA,CAAI,QAAQ,CAAA;AAC7B,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA;AACvC,EAAA,MAAM,qBAAA,GAAwB,CAAA,CAAE,GAAA,CAAI,uBAAuB,CAAA;AAE3D,EAAA,IAAI,CAAC,UAAA,EAAY;AAEf,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAEA,EAAA,MAAM,IAAA,GAAO,EAAE,GAAA,CAAI,IAAA;AACnB,EAAA,MAAM,MAAA,GAAS,EAAE,GAAA,CAAI,MAAA;AACrB,EAAA,MAAM,YAAY,CAAC,IAAA,KAAiB,CAAA,CAAE,GAAA,CAAI,OAAO,IAAI,CAAA;AAErD,EAAA,IAAI,sBAAA,CAAuB,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAW,UAAU,CAAA,EAAG;AAE/D,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAEA,EAAA,IAAI,CAAC,eAAA,CAAgB,CAAA,CAAE,GAAA,CAAI,IAAA,EAAM,EAAE,GAAA,CAAI,MAAA,EAAQ,UAAA,EAAY,qBAAqB,CAAA,EAAG;AACjF,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAGA,EAAA,IAAI,iBAAA,CAAkB,IAAA,EAAM,MAAA,EAAQ,UAAU,CAAA,EAAG;AAC/C,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAEA,EAAA,MAAM,OAAO,CAAA,CAAE,GAAA,CAAI,gBAAgB,CAAA,CAAE,IAAI,MAAM,CAAA;AAE/C,EAAA,IAAI,eAAA,IAAmB,UAAA,IAAc,OAAO,UAAA,CAAW,kBAAkB,UAAA,EAAY;AACnF,IAAA,IAAI;AACF,MAAA,MAAM,eAAe,MAAM,UAAA,CAAW,aAAA,CAAc,IAAA,EAAM,EAAE,GAAG,CAAA;AAE/D,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,OAAO,IAAA,EAAK;AAAA,MACd;AAEA,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,eAAA,IAAmB,GAAG,CAAA;AAAA,IAC/C,SAAS,GAAA,EAAK;AACZ,MAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,qBAAA,IAAyB,GAAG,CAAA;AAAA,IACrD;AAAA,EACF;AAGA,EAAA,IAAI,WAAA,IAAe,UAAA,IAAc,OAAO,UAAA,CAAW,cAAc,UAAA,EAAY;AAC3E,IAAA,IAAI;AACF,MAAA,MAAM,eAAe,MAAM,UAAA,CAAW,UAAU,IAAA,EAAM,MAAA,EAAQ,MAAM,CAAC,CAAA;AAErE,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,OAAO,IAAA,EAAK;AAAA,MACd;AAEA,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,eAAA,IAAmB,GAAG,CAAA;AAAA,IAC/C,SAAS,GAAA,EAAK;AACZ,MAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,qBAAA,IAAyB,GAAG,CAAA;AAAA,IACrD;AAAA,EACF;AAGA,EAAA,IAAI,WAAW,UAAA,IAAc,UAAA,CAAW,SAAS,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA,EAAG;AAC5E,IAAA,MAAM,eAAe,MAAM,UAAA,CAAW,WAAW,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAI,CAAA;AAE1E,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,OAAO,IAAA,EAAK;AAAA,IACd;AAEA,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,eAAA,IAAmB,GAAG,CAAA;AAAA,EAC/C;AAGA,EAAA,IAAI,iBAAA,CAAkB,KAAA,IAAS,iBAAA,CAAkB,KAAA,CAAM,SAAS,CAAA,EAAG;AACjE,IAAA,MAAM,eAAe,MAAM,UAAA,CAAW,kBAAkB,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAI,CAAA;AAEjF,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,OAAO,IAAA,EAAK;AAAA,IACd;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,eAAA,IAAmB,GAAG,CAAA;AAC/C,CAAA;;;AC/GO,IAAM,YAAA,GAAN,cAA2BA,cAAA,CAAgD;AAAA,EAChF,uBAAA,GAA6C;AAC3C,IAAA,OAAO,OAAO,GAAG,IAAA,KAAS;AAGxB,MAAA,IAAI,kBAAA;AACJ,MAAA,IAAI,oBAAA;AAGJ,MAAA,IAAI,EAAE,GAAA,CAAI,MAAA,KAAW,UAAU,CAAA,CAAE,GAAA,CAAI,WAAW,KAAA,EAAO;AACrD,QAAA,MAAM,WAAA,GAAc,CAAA,CAAE,GAAA,CAAI,MAAA,CAAO,cAAc,CAAA;AAC/C,QAAA,IAAI,WAAA,EAAa,QAAA,CAAS,kBAAkB,CAAA,EAAG;AAC7C,UAAA,IAAI;AACF,YAAA,MAAM,SAAA,GAAY,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,KAAA,EAAM;AAClC,YAAA,MAAM,IAAA,GAAQ,MAAM,SAAA,CAAU,IAAA,EAAK;AACnC,YAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,cAAA,kBAAA,GAAqB,IAAA,CAAK,cAAA;AAAA,YAC5B;AAAA,UACF,CAAA,CAAA,MAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AAGA,MAAA,IAAI,CAAA,CAAE,GAAA,CAAI,MAAA,KAAW,KAAA,EAAO;AAC1B,QAAA,IAAI;AACF,UAAA,MAAM,qBAAA,GAAwB,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,gBAAgB,CAAA;AAC1D,UAAA,IAAI,qBAAA,EAAuB;AAEzB,YAAA,IAAI;AACF,cAAA,oBAAA,GAAuB,IAAA,CAAK,MAAM,qBAAqB,CAAA;AAAA,YACzD,CAAA,CAAA,MAAQ;AAEN,cAAA,IAAI;AACF,gBAAA,MAAM,OAAO,MAAA,CAAO,IAAA,CAAK,uBAAuB,QAAQ,CAAA,CAAE,SAAS,OAAO,CAAA;AAC1E,gBAAA,oBAAA,GAAuB,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,cACxC,CAAA,CAAA,MAAQ;AAAA,cAER;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAA,CAAA,MAAQ;AAAA,QAER;AAAA,MACF;AAEA,MAAA,MAAM,iBAAiB,IAAA,CAAK,mBAAA,CAAoB,EAAE,oBAAA,EAAsB,oBAAoB,CAAA;AAG5F,MAAA,CAAA,CAAE,GAAA,CAAI,kBAAkB,cAAc,CAAA;AACtC,MAAA,CAAA,CAAE,GAAA,CAAI,QAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AAC3B,MAAA,CAAA,CAAE,GAAA,CAAI,OAAA,EAAS,IAAA,CAAK,KAAA,IAAS,EAAE,CAAA;AAC/B,MAAA,CAAA,CAAE,GAAA,CAAI,WAAA,EAAa,IAAA,CAAK,SAAS,CAAA;AACjC,MAAA,CAAA,CAAE,GAAA,CAAI,aAAA,EAAe,CAAA,CAAE,GAAA,CAAI,IAAI,MAAM,CAAA;AACrC,MAAA,CAAA,CAAE,GAAA,CAAI,uBAAA,EAAyB,IAAA,CAAK,qBAAqB,CAAA;AAEzD,MAAA,OAAO,IAAA,EAAK;AAAA,IACd,CAAA;AAAA,EACF;AAAA,EACA,MAAM,MAAA,CAAO,KAAA,EAAoB,GAAA,EAAc,MAAA,EAAsD;AACnG,IAAA,GAAA,CAAI,MAAA,CAAO,gBAAgB,YAAY,CAAA;AACvC,IAAA,GAAA,CAAI,MAAA,CAAO,qBAAqB,SAAS,CAAA;AAEzC,IAAA,MAAM,YAAA,GAAe,MAAM,YAAA,IAAgB,QAAA;AAE3C,IAAA,OAAO,MAAA;AAAA,MACL,GAAA;AAAA,MACA,OAAMC,OAAAA,KAAU;AACd,QAAA,MAAM,cAAA,GAAiB,MAAA,YAAkB,cAAA,GAAiB,MAAA,GAAS,MAAA,CAAO,UAAA;AAC1E,QAAA,MAAM,MAAA,GAAS,eAAe,SAAA,EAAU;AAExC,QAAAA,OAAAA,CAAO,QAAQ,MAAM;AACnB,UAAA,KAAK,MAAA,CAAO,OAAO,iBAAiB,CAAA;AAAA,QACtC,CAAC,CAAA;AAED,QAAA,IAAI;AACF,UAAA,OAAO,IAAA,EAAM;AACX,YAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,YAAA,IAAI,IAAA,EAAM;AAEV,YAAA,IAAI,KAAA,EAAO;AAET,cAAA,MAAM,YAAA,GAAe,IAAA,CAAK,aAAA,EAAe,MAAA,IAAU,IAAA;AACnD,cAAA,MAAM,WAAA,GAAc,YAAA,GAAe,iBAAA,CAAkB,KAAK,CAAA,GAAI,KAAA;AAC9D,cAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,gBAAA,MAAMA,QAAO,KAAA,CAAM,CAAA,MAAA,EAAS,IAAA,CAAK,SAAA,CAAU,WAAW,CAAC;;AAAA,CAAM,CAAA;AAAA,cAC/D,CAAA,MAAO;AACL,gBAAA,MAAMA,QAAO,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,WAAW,IAAI,GAAM,CAAA;AAAA,cACzD;AAAA,YACF;AAAA,UACF;AAEA,UAAA,MAAMA,OAAAA,CAAO,MAAM,kBAAkB,CAAA;AAAA,QACvC,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,QACrB,CAAA,SAAE;AACA,UAAA,MAAMA,QAAO,KAAA,EAAM;AAAA,QACrB;AAAA,MACF,CAAA;AAAA,MACA,OAAM,GAAA,KAAO;AACX,QAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,MACnB;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAA,CACJ,KAAA,EACA,OAAA,EACoG;AACpG,IAAA,MAAM,SAAA,GAAY,QAAQ,KAAA,EAAM;AAChC,IAAA,MAAM,WAAA,GAAc,QAAQ,KAAA,EAAM;AAClC,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,KAAA,CAAM,WAAW,MAAA,IAAU,KAAA,CAAM,WAAW,KAAA,IAAS,KAAA,CAAM,WAAW,OAAA,EAAS;AACjF,MAAA,IAAI;AACF,QAAA,IAAA,GAAO,MAAM,QAAQ,IAAA,EAAK;AAAA,MAC5B,CAAA,CAAA,MAAQ;AAAA,MAAC;AAAA,IACX;AACA,IAAA,OAAO,EAAE,SAAA,EAAW,WAAA,EAAoD,IAAA,EAAK;AAAA,EAC/E;AAAA,EAEA,MAAM,YAAA,CAAa,KAAA,EAAoB,QAAA,EAAmB,MAAA,EAA+B;AACvF,IAAA,IAAI,KAAA,CAAM,iBAAiB,MAAA,EAAQ;AACjC,MAAA,OAAO,QAAA,CAAS,IAAA,CAAK,MAAA,EAAe,GAAG,CAAA;AAAA,IACzC,CAAA,MAAA,IAAW,KAAA,CAAM,YAAA,KAAiB,QAAA,EAAU;AAC1C,MAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,EAAO,QAAA,EAAU,MAAwC,CAAA;AAAA,IAC9E,CAAA,MAAA,IAAW,KAAA,CAAM,YAAA,KAAiB,qBAAA,EAAuB;AACvD,MAAA,MAAM,aAAA,GAAgB,MAAA;AACtB,MAAA,OAAO,aAAA;AAAA,IACT,CAAA,MAAA,IAAW,KAAA,CAAM,YAAA,KAAiB,UAAA,EAAY;AAE5C,MAAA,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAS,GAAI,MAAA;AAC7B,MAAA,MAAM,EAAE,GAAA,EAAK,GAAA,KAAQ,QAAA,CAAS,QAAA,CAAS,IAAI,GAAG,CAAA;AAE9C,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,SAAA,CAAU;AAAA,UACrB,GAAA,EAAK,IAAI,GAAA,CAAI,QAAA,CAAS,IAAI,GAAG,CAAA;AAAA,UAC7B,QAAA;AAAA,UACA,GAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,OAAO,MAAM,gBAAgB,GAAG,CAAA;AAAA,MAClC,CAAA,CAAA,MAAQ;AACN,QAAA,IAAI,CAAC,IAAI,WAAA,EAAa;AACpB,UAAA,GAAA,CAAI,SAAA,CAAU,GAAA,EAAK,EAAE,cAAA,EAAgB,oBAAoB,CAAA;AACzD,UAAA,GAAA,CAAI,GAAA;AAAA,YACF,KAAK,SAAA,CAAU;AAAA,cACb,OAAA,EAAS,KAAA;AAAA,cACT,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,uBAAA,EAAwB;AAAA,cACxD,EAAA,EAAI;AAAA,aACL;AAAA,WACH;AACA,UAAA,OAAO,MAAM,gBAAgB,GAAG,CAAA;AAAA,QAClC;AACA,QAAA,OAAO,MAAM,gBAAgB,GAAG,CAAA;AAAA,MAClC;AAAA,IACF,CAAA,MAAA,IAAW,KAAA,CAAM,YAAA,KAAiB,SAAA,EAAW;AAE3C,MAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,WAAA,EAAY,GAAI,MAAA;AAEzC,MAAA,IAAI;AACF,QAAA,OAAO,MAAM,OAAO,YAAA,CAAa;AAAA,UAC/B,GAAA,EAAK,IAAI,GAAA,CAAI,QAAA,CAAS,IAAI,GAAG,CAAA;AAAA,UAC7B,OAAA;AAAA,UACA,WAAA;AAAA,UACA,OAAA,EAAS;AAAA,SACV,CAAA;AAAA,MACH,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,SAAS,IAAA,CAAK,EAAE,KAAA,EAAO,gCAAA,IAAoC,GAAG,CAAA;AAAA,MACvE;AAAA,IACF,CAAA,MAAO;AACL,MAAA,OAAO,QAAA,CAAS,OAAO,GAAG,CAAA;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,MAAM,aAAA,CAAc,GAAA,EAAc,KAAA,EAAoB,EAAE,QAAO,EAAuC;AAEpG,IAAA,MAAM,oBAAA,GAAuB,IAAA,CAAK,gBAAA,IAAoB,CAAC,MAAA,EAAQ,KAAA,EAAO,OAAO,CAAA,CAAE,QAAA,CAAS,KAAA,CAAM,MAAA,CAAO,WAAA,EAAa,CAAA;AAGlH,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,WAAA,IAAe,IAAA,CAAK,gBAAA,EAAkB,OAAA;AAG5D,IAAA,MAAM,cAAmC,EAAC;AAE1C,IAAA,IAAI,oBAAA,IAAwB,OAAA,IAAW,IAAA,CAAK,gBAAA,EAAkB;AAC5D,MAAA,WAAA,CAAY,IAAA;AAAA,QACV,SAAA,CAAU;AAAA,UACR,OAAA;AAAA,UACA,OAAA,EAAS,KAAK,gBAAA,CAAiB;AAAA,SAChC;AAAA,OACH;AAAA,IACF;AAEA,IAAA,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,WAAA,EAAoE,CAAA;AAAA,MACnF,CAAA,EAAG,MAAM,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,MACtB,GAAG,WAAA;AAAA,MACH,OAAO,CAAA,KAAe;AACpB,QAAA,MAAM,SAAS,MAAM,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,EAAE,GAAG,CAAA;AAEhD,QAAA,IAAI,OAAO,WAAA,EAAa;AACtB,UAAA,IAAI;AACF,YAAA,MAAA,CAAO,cAAc,MAAM,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO,OAAO,WAAqC,CAAA;AAAA,UACtG,SAAS,KAAA,EAAO;AACd,YAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,KAAK,CAAA;AAEjD,YAAA,OAAO,CAAA,CAAE,IAAA;AAAA,cACP;AAAA,gBACE,KAAA,EAAO,0BAAA;AAAA,gBACP,OAAA,EAAS,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU;AAAA,eACpD;AAAA,cACA;AAAA,aACF;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,OAAO,IAAA,EAAM;AACf,UAAA,IAAI;AACF,YAAA,MAAA,CAAO,OAAO,MAAM,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,OAAO,IAAI,CAAA;AAAA,UACvD,SAAS,KAAA,EAAO;AACd,YAAA,OAAA,CAAQ,KAAA,CAAM,uBAAuB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAE3F,YAAA,OAAO,CAAA,CAAE,IAAA;AAAA,cACP;AAAA,gBACE,KAAA,EAAO,sBAAA;AAAA,gBACP,OAAA,EAAS,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU;AAAA,eACpD;AAAA,cACA;AAAA,aACF;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,GAAG,MAAA,CAAO,SAAA;AAAA,UACV,GAAG,MAAA,CAAO,WAAA;AAAA,UACV,GAAI,OAAO,MAAA,CAAO,SAAS,QAAA,GAAW,MAAA,CAAO,OAAO,EAAC;AAAA,UACrD,cAAA,EAAgB,CAAA,CAAE,GAAA,CAAI,gBAAgB,CAAA;AAAA,UACtC,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,KAAA,EAAO,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA;AAAA,UACpB,SAAA,EAAW,CAAA,CAAE,GAAA,CAAI,WAAW,CAAA;AAAA,UAC5B,WAAA,EAAa,CAAA,CAAE,GAAA,CAAI,aAAa;AAAA,SAClC;AAEA,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA;AAChD,UAAA,OAAO,IAAA,CAAK,YAAA,CAAa,KAAA,EAAO,CAAA,EAAG,MAAM,CAAA;AAAA,QAC3C,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,yBAAyB,KAAK,CAAA;AAE5C,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AAEtC,YAAA,IAAI,YAAY,KAAA,EAAO;AACrB,cAAA,MAAM,SAAU,KAAA,CAAc,MAAA;AAC9B,cAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,eAAA,EAAgB,EAAG,MAAM,CAAA;AAAA,YAC3F;AAEA,YAAA,IAAI,SAAA,IAAa,KAAA,IAAS,KAAA,CAAM,OAAA,IAAW,OAAO,MAAM,OAAA,KAAY,QAAA,IAAY,QAAA,IAAY,KAAA,CAAM,OAAA,EAAS;AACzG,cAAA,MAAM,MAAA,GAAU,MAAM,OAAA,CAAgB,MAAA;AACtC,cAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,eAAA,EAAgB,EAAG,MAAM,CAAA;AAAA,YAC3F;AAAA,UACF;AACA,UAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,eAAA,EAAgB,EAAG,GAAG,CAAA;AAAA,QACxF;AAAA,MACF;AAAA,KACF;AAAA,EACF;AAAA,EAEA,yBAAA,GAAkC;AAChC,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,yBAAyB,CAAA;AAAA,EAClD;AAAA,EAEA,sBAAA,GAA+B;AAC7B,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA;AAC5C,IAAA,IAAI,CAAC,UAAA,EAAY;AAEf,MAAA;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,wBAAwB,CAAA;AAC1C,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,uBAAuB,CAAA;AAAA,EAC3C;AACF","file":"index.js","sourcesContent":["// src/http-exception.ts\nvar HTTPException = class extends Error {\n res;\n status;\n constructor(status = 500, options) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n }\n getResponse() {\n if (this.res) {\n const newResponse = new Response(this.res.body, {\n status: this.status,\n headers: this.res.headers\n });\n return newResponse;\n }\n return new Response(this.message, {\n status: this.status\n });\n }\n};\nexport {\n HTTPException\n};\n","// src/middleware/body-limit/index.ts\nimport { HTTPException } from \"../../http-exception.js\";\nvar ERROR_MESSAGE = \"Payload Too Large\";\nvar BodyLimitError = class extends Error {\n constructor(message) {\n super(message);\n this.name = \"BodyLimitError\";\n }\n};\nvar bodyLimit = (options) => {\n const onError = options.onError || (() => {\n const res = new Response(ERROR_MESSAGE, {\n status: 413\n });\n throw new HTTPException(413, { res });\n });\n const maxSize = options.maxSize;\n return async function bodyLimit2(c, next) {\n if (!c.req.raw.body) {\n return next();\n }\n const hasTransferEncoding = c.req.raw.headers.has(\"transfer-encoding\");\n const hasContentLength = c.req.raw.headers.has(\"content-length\");\n if (hasTransferEncoding && hasContentLength) {\n }\n if (hasContentLength && !hasTransferEncoding) {\n const contentLength = parseInt(c.req.raw.headers.get(\"content-length\") || \"0\", 10);\n return contentLength > maxSize ? onError(c) : next();\n }\n let size = 0;\n const rawReader = c.req.raw.body.getReader();\n const reader = new ReadableStream({\n async start(controller) {\n try {\n for (; ; ) {\n const { done, value } = await rawReader.read();\n if (done) {\n break;\n }\n size += value.length;\n if (size > maxSize) {\n controller.error(new BodyLimitError(ERROR_MESSAGE));\n break;\n }\n controller.enqueue(value);\n }\n } finally {\n controller.close();\n }\n }\n });\n const requestInit = { body: reader, duplex: \"half\" };\n c.req.raw = new Request(c.req.raw, requestInit);\n await next();\n if (c.error instanceof BodyLimitError) {\n c.res = await onError(c);\n }\n };\n};\nexport {\n bodyLimit\n};\n","// src/utils/stream.ts\nvar StreamingApi = class {\n writer;\n encoder;\n writable;\n abortSubscribers = [];\n responseReadable;\n aborted = false;\n closed = false;\n constructor(writable, _readable) {\n this.writable = writable;\n this.writer = writable.getWriter();\n this.encoder = new TextEncoder();\n const reader = _readable.getReader();\n this.abortSubscribers.push(async () => {\n await reader.cancel();\n });\n this.responseReadable = new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n done ? controller.close() : controller.enqueue(value);\n },\n cancel: () => {\n this.abort();\n }\n });\n }\n async write(input) {\n try {\n if (typeof input === \"string\") {\n input = this.encoder.encode(input);\n }\n await this.writer.write(input);\n } catch {\n }\n return this;\n }\n async writeln(input) {\n await this.write(input + \"\\n\");\n return this;\n }\n sleep(ms) {\n return new Promise((res) => setTimeout(res, ms));\n }\n async close() {\n try {\n await this.writer.close();\n } catch {\n }\n this.closed = true;\n }\n async pipe(body) {\n this.writer.releaseLock();\n await body.pipeTo(this.writable, { preventClose: true });\n this.writer = this.writable.getWriter();\n }\n onAbort(listener) {\n this.abortSubscribers.push(listener);\n }\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n this.abortSubscribers.forEach((subscriber) => subscriber());\n }\n }\n};\nexport {\n StreamingApi\n};\n","// src/helper/streaming/utils.ts\nvar isOldBunVersion = () => {\n const version = typeof Bun !== \"undefined\" ? Bun.version : void 0;\n if (version === void 0) {\n return false;\n }\n const result = version.startsWith(\"1.1\") || version.startsWith(\"1.0\") || version.startsWith(\"0.\");\n isOldBunVersion = () => result;\n return result;\n};\nexport {\n isOldBunVersion\n};\n","// src/helper/streaming/stream.ts\nimport { StreamingApi } from \"../../utils/stream.js\";\nimport { isOldBunVersion } from \"./utils.js\";\nvar contextStash = /* @__PURE__ */ new WeakMap();\nvar stream = (c, cb, onError) => {\n const { readable, writable } = new TransformStream();\n const stream2 = new StreamingApi(writable, readable);\n if (isOldBunVersion()) {\n c.req.raw.signal.addEventListener(\"abort\", () => {\n if (!stream2.closed) {\n stream2.abort();\n }\n });\n }\n contextStash.set(stream2.responseReadable, c);\n (async () => {\n try {\n await cb(stream2);\n } catch (e) {\n if (e === void 0) {\n } else if (e instanceof Error && onError) {\n await onError(e, stream2);\n } else {\n console.error(e);\n }\n } finally {\n stream2.close();\n }\n })();\n return c.newResponse(stream2.responseReadable);\n};\nexport {\n stream\n};\n","import type { ContextWithMastra } from '@mastra/core/server';\nimport {\n canAccessPublicly,\n checkRules,\n defaultAuthConfig,\n isDevPlaygroundRequest,\n isProtectedPath,\n} from '@mastra/server/auth';\nimport type { Next } from 'hono';\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 const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\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 const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\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 { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { Tool } from '@mastra/core/tools';\nimport type { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { MCPHttpTransportResult, MCPSseTransportResult } from '@mastra/server/handlers/mcp';\nimport { MastraServer as MastraServerBase, redactStreamChunk } from '@mastra/server/server-adapter';\nimport type { ServerRoute } from '@mastra/server/server-adapter';\nimport { toReqRes, toFetchResponse } from 'fetch-to-node';\nimport type { Context, HonoRequest, MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { stream } from 'hono/streaming';\n\nimport { authenticationMiddleware, authorizationMiddleware } from './auth-middleware';\n\n// Export type definitions for Hono app configuration\nexport type HonoVariables = {\n mastra: Mastra;\n requestContext: RequestContext;\n tools: Record<string, Tool>;\n abortSignal: AbortSignal;\n taskStore: InMemoryTaskStore;\n customRouteAuthConfig?: Map<string, boolean>;\n};\n\nexport type HonoBindings = {};\n\n/**\n * Generic handler function type compatible across Hono versions.\n * Uses a minimal signature that all Hono middleware handlers satisfy.\n */\ntype HonoRouteHandler = (...args: any[]) => any;\n\n/**\n * Minimal interface representing what MastraServer needs from a Hono app.\n * This allows any Hono app instance to be passed without strict generic matching,\n * avoiding the version mismatch issues that occur with Hono's strict generic types.\n */\nexport interface HonoApp {\n use(path: string, ...handlers: HonoRouteHandler[]): unknown;\n get(path: string, ...handlers: HonoRouteHandler[]): unknown;\n post(path: string, ...handlers: HonoRouteHandler[]): unknown;\n put(path: string, ...handlers: HonoRouteHandler[]): unknown;\n delete(path: string, ...handlers: HonoRouteHandler[]): unknown;\n patch(path: string, ...handlers: HonoRouteHandler[]): unknown;\n all(path: string, ...handlers: HonoRouteHandler[]): unknown;\n}\n\nexport class MastraServer extends MastraServerBase<HonoApp, HonoRequest, Context> {\n createContextMiddleware(): MiddlewareHandler {\n return async (c, next) => {\n // Parse request context from request body and add to context\n\n let bodyRequestContext: Record<string, any> | undefined;\n let paramsRequestContext: Record<string, any> | undefined;\n\n // Parse request context from request body (POST/PUT)\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 bodyRequestContext = body.requestContext;\n }\n } catch {\n // Body parsing failed, continue without body\n }\n }\n }\n\n // Parse request context from query params (GET)\n if (c.req.method === 'GET') {\n try {\n const encodedRequestContext = c.req.query('requestContext');\n if (encodedRequestContext) {\n // Try JSON first\n try {\n paramsRequestContext = JSON.parse(encodedRequestContext);\n } catch {\n // Fallback to base64(JSON)\n try {\n const json = Buffer.from(encodedRequestContext, 'base64').toString('utf-8');\n paramsRequestContext = JSON.parse(json);\n } catch {\n // ignore if still invalid\n }\n }\n }\n } catch {\n // ignore query parsing errors\n }\n }\n\n const requestContext = this.mergeRequestContext({ paramsRequestContext, bodyRequestContext });\n\n // Add relevant contexts to hono context\n c.set('requestContext', requestContext);\n c.set('mastra', this.mastra);\n c.set('tools', this.tools || {});\n c.set('taskStore', this.taskStore);\n c.set('abortSignal', c.req.raw.signal);\n c.set('customRouteAuthConfig', this.customRouteAuthConfig);\n\n return next();\n };\n }\n async stream(route: ServerRoute, res: Context, result: { fullStream: ReadableStream }): Promise<any> {\n res.header('Content-Type', 'text/plain');\n res.header('Transfer-Encoding', 'chunked');\n\n const streamFormat = route.streamFormat || 'stream';\n\n return stream(\n res,\n async stream => {\n const readableStream = result instanceof ReadableStream ? result : result.fullStream;\n const reader = readableStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n if (value) {\n // Optionally redact sensitive data (system prompts, tool definitions, API keys) before sending to the client\n const shouldRedact = this.streamOptions?.redact ?? true;\n const outputValue = shouldRedact ? redactStreamChunk(value) : value;\n if (streamFormat === 'sse') {\n await stream.write(`data: ${JSON.stringify(outputValue)}\\n\\n`);\n } else {\n await stream.write(JSON.stringify(outputValue) + '\\x1E');\n }\n }\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (error) {\n console.error(error);\n } finally {\n await stream.close();\n }\n },\n async err => {\n console.error(err);\n },\n );\n }\n\n async getParams(\n route: ServerRoute,\n request: HonoRequest,\n ): Promise<{ urlParams: Record<string, string>; queryParams: Record<string, string>; body: unknown }> {\n const urlParams = request.param();\n const queryParams = request.query();\n let body: unknown;\n if (route.method === 'POST' || route.method === 'PUT' || route.method === 'PATCH') {\n try {\n body = await request.json();\n } catch {}\n }\n return { urlParams, queryParams: queryParams as Record<string, string>, body };\n }\n\n async sendResponse(route: ServerRoute, response: Context, result: unknown): Promise<any> {\n if (route.responseType === 'json') {\n return response.json(result as any, 200);\n } else if (route.responseType === 'stream') {\n return this.stream(route, response, result as { fullStream: ReadableStream });\n } else if (route.responseType === 'datastream-response') {\n const fetchResponse = result as globalThis.Response;\n return fetchResponse;\n } else if (route.responseType === 'mcp-http') {\n // MCP Streamable HTTP transport\n const { server, httpPath } = result as MCPHttpTransportResult;\n const { req, res } = toReqRes(response.req.raw);\n\n try {\n await server.startHTTP({\n url: new URL(response.req.url),\n httpPath,\n req,\n res,\n });\n return await toFetchResponse(res);\n } catch {\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: -32603, message: 'Internal server error' },\n id: null,\n }),\n );\n return await toFetchResponse(res);\n }\n return await toFetchResponse(res);\n }\n } else if (route.responseType === 'mcp-sse') {\n // MCP SSE transport\n const { server, ssePath, messagePath } = result as MCPSseTransportResult;\n\n try {\n return await server.startHonoSSE({\n url: new URL(response.req.url),\n ssePath,\n messagePath,\n context: response,\n });\n } catch {\n return response.json({ error: 'Error handling MCP SSE request' }, 500);\n }\n } else {\n return response.status(500);\n }\n }\n\n async registerRoute(app: HonoApp, route: ServerRoute, { prefix }: { prefix?: string }): Promise<void> {\n // Determine if body limits should be applied\n const shouldApplyBodyLimit = this.bodyLimitOptions && ['POST', 'PUT', 'PATCH'].includes(route.method.toUpperCase());\n\n // Get the body size limit for this route (route-specific or default)\n const maxSize = route.maxBodySize ?? this.bodyLimitOptions?.maxSize;\n\n // Build middleware array\n const middlewares: MiddlewareHandler[] = [];\n\n if (shouldApplyBodyLimit && maxSize && this.bodyLimitOptions) {\n middlewares.push(\n bodyLimit({\n maxSize,\n onError: this.bodyLimitOptions.onError as any,\n }),\n );\n }\n\n app[route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch' | 'all'](\n `${prefix}${route.path}`,\n ...middlewares,\n async (c: Context) => {\n const params = await this.getParams(route, c.req);\n\n if (params.queryParams) {\n try {\n params.queryParams = await this.parseQueryParams(route, params.queryParams as Record<string, string>);\n } catch (error) {\n console.error('Error parsing query params', error);\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid query parameters',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n if (params.body) {\n try {\n params.body = await this.parseBody(route, params.body);\n } catch (error) {\n console.error('Error parsing body:', error instanceof Error ? error.message : String(error));\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid request body',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n const handlerParams = {\n ...params.urlParams,\n ...params.queryParams,\n ...(typeof params.body === 'object' ? params.body : {}),\n requestContext: c.get('requestContext'),\n mastra: this.mastra,\n tools: c.get('tools'),\n taskStore: c.get('taskStore'),\n abortSignal: c.get('abortSignal'),\n };\n\n try {\n const result = await route.handler(handlerParams);\n return this.sendResponse(route, c, result);\n } catch (error) {\n console.error('Error calling handler', error);\n // Check if it's an HTTPException or MastraError with a status code\n if (error && typeof error === 'object') {\n // Check for direct status property (HTTPException)\n if ('status' in error) {\n const status = (error as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n // Check for MastraError with status in details\n if ('details' in error && error.details && typeof error.details === 'object' && 'status' in error.details) {\n const status = (error.details as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n }\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, 500);\n }\n },\n );\n }\n\n registerContextMiddleware(): void {\n this.app.use('*', this.createContextMiddleware());\n }\n\n registerAuthMiddleware(): void {\n const authConfig = this.mastra.getServer()?.auth;\n if (!authConfig) {\n // No auth config, skip registration\n return;\n }\n\n this.app.use('*', authenticationMiddleware);\n this.app.use('*', authorizationMiddleware);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/hono",
|
|
3
|
-
"version": "0.0.2-beta.
|
|
3
|
+
"version": "0.0.2-beta.6",
|
|
4
4
|
"description": "Mastra Hono adapter for the server",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"license": "Apache-2.0",
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"fetch-to-node": "^2.1.0",
|
|
24
|
-
"@mastra/server": "1.0.0-beta.
|
|
24
|
+
"@mastra/server": "1.0.0-beta.11"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "^20.19.0",
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
"@ai-sdk/openai": "^2.0.62",
|
|
36
36
|
"zod": "^3.25.0",
|
|
37
37
|
"@internal/lint": "0.0.53",
|
|
38
|
-
"@internal/server-adapter-test-utils": "0.0.1",
|
|
39
|
-
"@mastra/core": "1.0.0-beta.9",
|
|
40
38
|
"@internal/storage-test-utils": "0.0.49",
|
|
41
|
-
"@mastra/libsql": "1.0.0-beta.
|
|
39
|
+
"@mastra/libsql": "1.0.0-beta.7",
|
|
40
|
+
"@internal/server-adapter-test-utils": "0.0.1",
|
|
41
|
+
"@mastra/observability": "1.0.0-beta.4",
|
|
42
|
+
"@mastra/core": "1.0.0-beta.11",
|
|
42
43
|
"@mastra/memory": "1.0.0-beta.4",
|
|
43
|
-
"@internal/types-builder": "0.0.28"
|
|
44
|
-
"@mastra/observability": "1.0.0-beta.3"
|
|
44
|
+
"@internal/types-builder": "0.0.28"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@mastra/core": ">=1.0.0-0 <2.0.0-0",
|