@mastra/server 0.0.0-vector-sources-20250516175436 → 0.0.0-vector-query-tool-provider-options-20250828222356

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.
Files changed (234) hide show
  1. package/LICENSE.md +11 -42
  2. package/dist/{chunk-5SN4U5AC.cjs → chunk-3THIIWWW.cjs} +113 -137
  3. package/dist/chunk-3THIIWWW.cjs.map +1 -0
  4. package/dist/{chunk-57CJTIPW.cjs → chunk-4QSNRCOT.cjs} +4 -2
  5. package/dist/chunk-4QSNRCOT.cjs.map +1 -0
  6. package/dist/{chunk-P6SCPDYW.js → chunk-5QUKZCEF.js} +112 -136
  7. package/dist/chunk-5QUKZCEF.js.map +1 -0
  8. package/dist/{chunk-OCWPVYNI.cjs → chunk-7NADHFD2.cjs} +3 -0
  9. package/dist/chunk-7NADHFD2.cjs.map +1 -0
  10. package/dist/chunk-7QEJ5QG5.js +151 -0
  11. package/dist/chunk-7QEJ5QG5.js.map +1 -0
  12. package/dist/{chunk-ZE5AAC4I.cjs → chunk-A3FNPSBB.cjs} +36 -39
  13. package/dist/chunk-A3FNPSBB.cjs.map +1 -0
  14. package/dist/{chunk-MHKNLNAN.cjs → chunk-B2L53BNJ.cjs} +14 -9
  15. package/dist/chunk-B2L53BNJ.cjs.map +1 -0
  16. package/dist/{chunk-C7564HUT.js → chunk-B43YAQJR.js} +6 -4
  17. package/dist/chunk-B43YAQJR.js.map +1 -0
  18. package/dist/{chunk-TJKLBTFB.js → chunk-BUMPRH7R.js} +23 -26
  19. package/dist/chunk-BUMPRH7R.js.map +1 -0
  20. package/dist/chunk-CY4TP3FK.js +16 -0
  21. package/dist/chunk-CY4TP3FK.js.map +1 -0
  22. package/dist/chunk-D32MNBNS.js +17597 -0
  23. package/dist/chunk-D32MNBNS.js.map +1 -0
  24. package/dist/chunk-EMMSS5I5.cjs +37 -0
  25. package/dist/chunk-EMMSS5I5.cjs.map +1 -0
  26. package/dist/chunk-G3PMV62Z.js +33 -0
  27. package/dist/chunk-G3PMV62Z.js.map +1 -0
  28. package/dist/chunk-GU4EWMZB.cjs +769 -0
  29. package/dist/chunk-GU4EWMZB.cjs.map +1 -0
  30. package/dist/chunk-GUI3CROV.cjs +159 -0
  31. package/dist/chunk-GUI3CROV.cjs.map +1 -0
  32. package/dist/chunk-ID37OH5Z.js +517 -0
  33. package/dist/chunk-ID37OH5Z.js.map +1 -0
  34. package/dist/{chunk-VPNDC2DI.cjs → chunk-JGD42NME.cjs} +16 -14
  35. package/dist/chunk-JGD42NME.cjs.map +1 -0
  36. package/dist/chunk-JPY7GWFC.cjs +17614 -0
  37. package/dist/chunk-JPY7GWFC.cjs.map +1 -0
  38. package/dist/chunk-KLCYAQBL.cjs +120 -0
  39. package/dist/chunk-KLCYAQBL.cjs.map +1 -0
  40. package/dist/chunk-KNGXRN26.cjs +335 -0
  41. package/dist/chunk-KNGXRN26.cjs.map +1 -0
  42. package/dist/chunk-L265APUD.cjs +69 -0
  43. package/dist/chunk-L265APUD.cjs.map +1 -0
  44. package/dist/chunk-LF2ZLOFP.js +767 -0
  45. package/dist/chunk-LF2ZLOFP.js.map +1 -0
  46. package/dist/chunk-LUPY3MQY.js +571 -0
  47. package/dist/chunk-LUPY3MQY.js.map +1 -0
  48. package/dist/{chunk-NYN7KFXL.js → chunk-MMROOK5J.js} +3 -0
  49. package/dist/chunk-MMROOK5J.js.map +1 -0
  50. package/dist/chunk-NPE3X7FQ.cjs +88 -0
  51. package/dist/chunk-NPE3X7FQ.cjs.map +1 -0
  52. package/dist/{chunk-H5PTF3Y4.js → chunk-OW4FX5TS.js} +3 -1
  53. package/dist/chunk-OW4FX5TS.js.map +1 -0
  54. package/dist/{chunk-OR3CIE2H.js → chunk-PHZHWQZP.js} +10 -5
  55. package/dist/chunk-PHZHWQZP.js.map +1 -0
  56. package/dist/{chunk-HFWCEP5S.js → chunk-QBWF6U7Z.js} +36 -11
  57. package/dist/chunk-QBWF6U7Z.js.map +1 -0
  58. package/dist/chunk-R7NOGUZG.js +65 -0
  59. package/dist/chunk-R7NOGUZG.js.map +1 -0
  60. package/dist/chunk-RE4RPXT2.cjs +18 -0
  61. package/dist/chunk-RE4RPXT2.cjs.map +1 -0
  62. package/dist/chunk-ROA7BCHD.js +83 -0
  63. package/dist/chunk-ROA7BCHD.js.map +1 -0
  64. package/dist/{chunk-BNEY4P4P.cjs → chunk-T3TIA3O6.cjs} +20 -18
  65. package/dist/chunk-T3TIA3O6.cjs.map +1 -0
  66. package/dist/{chunk-EJO45KYT.js → chunk-TTHEEIZ3.js} +53 -50
  67. package/dist/chunk-TTHEEIZ3.js.map +1 -0
  68. package/dist/chunk-UVKXRPMV.cjs +588 -0
  69. package/dist/chunk-UVKXRPMV.cjs.map +1 -0
  70. package/dist/chunk-V5EWBGBF.cjs +534 -0
  71. package/dist/chunk-V5EWBGBF.cjs.map +1 -0
  72. package/dist/{chunk-55DOQLP6.js → chunk-WHN4VX55.js} +5 -3
  73. package/dist/chunk-WHN4VX55.js.map +1 -0
  74. package/dist/index.cjs +2 -0
  75. package/dist/index.cjs.map +1 -0
  76. package/dist/index.d.ts +1 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +2 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/server/a2a/protocol.d.ts +8 -0
  81. package/dist/server/a2a/protocol.d.ts.map +1 -0
  82. package/dist/server/a2a/store.cjs +25 -0
  83. package/dist/server/a2a/store.cjs.map +1 -0
  84. package/dist/server/a2a/store.d.ts +14 -0
  85. package/dist/server/a2a/store.d.ts.map +1 -0
  86. package/dist/server/a2a/store.js +23 -0
  87. package/dist/server/a2a/store.js.map +1 -0
  88. package/dist/server/a2a/tasks.d.ts +20 -0
  89. package/dist/server/a2a/tasks.d.ts.map +1 -0
  90. package/dist/server/handlers/a2a.cjs +13 -11
  91. package/dist/server/handlers/a2a.cjs.map +1 -0
  92. package/dist/server/handlers/a2a.d.ts +68 -6
  93. package/dist/server/handlers/a2a.d.ts.map +1 -0
  94. package/dist/server/handlers/a2a.js +3 -1
  95. package/dist/server/handlers/a2a.js.map +1 -0
  96. package/dist/server/handlers/agents.cjs +29 -7
  97. package/dist/server/handlers/agents.cjs.map +1 -0
  98. package/dist/server/handlers/agents.d.ts +111 -6
  99. package/dist/server/handlers/agents.d.ts.map +1 -0
  100. package/dist/server/handlers/agents.js +3 -1
  101. package/dist/server/handlers/agents.js.map +1 -0
  102. package/dist/server/handlers/error.cjs +4 -2
  103. package/dist/server/handlers/error.cjs.map +1 -0
  104. package/dist/server/handlers/error.d.ts +2 -1
  105. package/dist/server/handlers/error.d.ts.map +1 -0
  106. package/dist/server/handlers/error.js +3 -1
  107. package/dist/server/handlers/error.js.map +1 -0
  108. package/dist/server/handlers/legacyWorkflows.cjs +48 -0
  109. package/dist/server/handlers/legacyWorkflows.cjs.map +1 -0
  110. package/dist/server/handlers/legacyWorkflows.d.ts +59 -0
  111. package/dist/server/handlers/legacyWorkflows.d.ts.map +1 -0
  112. package/dist/server/handlers/legacyWorkflows.js +3 -0
  113. package/dist/server/handlers/legacyWorkflows.js.map +1 -0
  114. package/dist/server/handlers/logs.cjs +6 -4
  115. package/dist/server/handlers/logs.cjs.map +1 -0
  116. package/dist/server/handlers/logs.d.ts +34 -3
  117. package/dist/server/handlers/logs.d.ts.map +1 -0
  118. package/dist/server/handlers/logs.js +3 -1
  119. package/dist/server/handlers/logs.js.map +1 -0
  120. package/dist/server/handlers/memory.cjs +39 -9
  121. package/dist/server/handlers/memory.cjs.map +1 -0
  122. package/dist/server/handlers/memory.d.ts +118 -8
  123. package/dist/server/handlers/memory.d.ts.map +1 -0
  124. package/dist/server/handlers/memory.js +3 -1
  125. package/dist/server/handlers/memory.js.map +1 -0
  126. package/dist/server/handlers/network.cjs +7 -5
  127. package/dist/server/handlers/network.cjs.map +1 -0
  128. package/dist/server/handlers/network.d.ts +50 -4
  129. package/dist/server/handlers/network.d.ts.map +1 -0
  130. package/dist/server/handlers/network.js +3 -1
  131. package/dist/server/handlers/network.js.map +1 -0
  132. package/dist/server/handlers/observability.cjs +16 -0
  133. package/dist/server/handlers/observability.cjs.map +1 -0
  134. package/dist/server/handlers/observability.d.ts +23 -0
  135. package/dist/server/handlers/observability.d.ts.map +1 -0
  136. package/dist/server/handlers/observability.js +3 -0
  137. package/dist/server/handlers/observability.js.map +1 -0
  138. package/dist/server/handlers/scores.cjs +32 -0
  139. package/dist/server/handlers/scores.cjs.map +1 -0
  140. package/dist/server/handlers/scores.d.ts +49 -0
  141. package/dist/server/handlers/scores.d.ts.map +1 -0
  142. package/dist/server/handlers/scores.js +3 -0
  143. package/dist/server/handlers/scores.js.map +1 -0
  144. package/dist/server/handlers/telemetry.cjs +5 -3
  145. package/dist/server/handlers/telemetry.cjs.map +1 -0
  146. package/dist/server/handlers/telemetry.d.ts +32 -2
  147. package/dist/server/handlers/telemetry.d.ts.map +1 -0
  148. package/dist/server/handlers/telemetry.js +3 -1
  149. package/dist/server/handlers/telemetry.js.map +1 -0
  150. package/dist/server/handlers/tools.cjs +7 -5
  151. package/dist/server/handlers/tools.cjs.map +1 -0
  152. package/dist/server/handlers/tools.d.ts +21 -4
  153. package/dist/server/handlers/tools.d.ts.map +1 -0
  154. package/dist/server/handlers/tools.js +3 -1
  155. package/dist/server/handlers/tools.js.map +1 -0
  156. package/dist/server/handlers/utils.cjs +4 -2
  157. package/dist/server/handlers/utils.cjs.map +1 -0
  158. package/dist/server/handlers/utils.d.ts +2 -1
  159. package/dist/server/handlers/utils.d.ts.map +1 -0
  160. package/dist/server/handlers/utils.js +3 -1
  161. package/dist/server/handlers/utils.js.map +1 -0
  162. package/dist/server/handlers/vNextNetwork.cjs +220 -0
  163. package/dist/server/handlers/vNextNetwork.cjs.map +1 -0
  164. package/dist/server/handlers/vNextNetwork.d.ts +179 -0
  165. package/dist/server/handlers/vNextNetwork.d.ts.map +1 -0
  166. package/dist/server/handlers/vNextNetwork.js +213 -0
  167. package/dist/server/handlers/vNextNetwork.js.map +1 -0
  168. package/dist/server/handlers/vector.cjs +9 -7
  169. package/dist/server/handlers/vector.cjs.map +1 -0
  170. package/dist/server/handlers/vector.d.ts +51 -6
  171. package/dist/server/handlers/vector.d.ts.map +1 -0
  172. package/dist/server/handlers/vector.js +3 -1
  173. package/dist/server/handlers/vector.js.map +1 -0
  174. package/dist/server/handlers/voice.cjs +10 -4
  175. package/dist/server/handlers/voice.cjs.map +1 -0
  176. package/dist/server/handlers/voice.d.ts +39 -3
  177. package/dist/server/handlers/voice.d.ts.map +1 -0
  178. package/dist/server/handlers/voice.js +3 -1
  179. package/dist/server/handlers/voice.js.map +1 -0
  180. package/dist/server/handlers/workflows.cjs +35 -13
  181. package/dist/server/handlers/workflows.cjs.map +1 -0
  182. package/dist/server/handlers/workflows.d.ts +72 -10
  183. package/dist/server/handlers/workflows.d.ts.map +1 -0
  184. package/dist/server/handlers/workflows.js +3 -1
  185. package/dist/server/handlers/workflows.js.map +1 -0
  186. package/dist/server/handlers.cjs +45 -33
  187. package/dist/server/handlers.cjs.map +1 -0
  188. package/dist/server/handlers.d.ts +14 -11
  189. package/dist/server/handlers.d.ts.map +1 -0
  190. package/dist/server/handlers.js +15 -11
  191. package/dist/server/handlers.js.map +1 -0
  192. package/dist/server/http-exception.d.ts +87 -0
  193. package/dist/server/http-exception.d.ts.map +1 -0
  194. package/dist/server/types.d.ts +10 -0
  195. package/dist/server/types.d.ts.map +1 -0
  196. package/dist/server/utils.d.ts +3 -0
  197. package/dist/server/utils.d.ts.map +1 -0
  198. package/package.json +39 -20
  199. package/dist/_tsup-dts-rollup.d.cts +0 -816
  200. package/dist/_tsup-dts-rollup.d.ts +0 -816
  201. package/dist/chunk-64U3UDTH.cjs +0 -13
  202. package/dist/chunk-75ZPJI57.cjs +0 -9
  203. package/dist/chunk-D4IRYCUI.cjs +0 -235
  204. package/dist/chunk-DJJIUEL2.js +0 -211
  205. package/dist/chunk-HWZVAG3H.js +0 -49
  206. package/dist/chunk-I2B73Y4I.cjs +0 -332
  207. package/dist/chunk-LIVAK2DM.js +0 -2001
  208. package/dist/chunk-M5ABIP7D.js +0 -11
  209. package/dist/chunk-MIQYDLLM.js +0 -329
  210. package/dist/chunk-MLKGABMK.js +0 -7
  211. package/dist/chunk-OGCNNUHF.cjs +0 -54
  212. package/dist/chunk-UCTEMO2Q.cjs +0 -341
  213. package/dist/chunk-WUC6LSTW.js +0 -227
  214. package/dist/chunk-Y7UWRW5X.cjs +0 -221
  215. package/dist/chunk-YBVOQN4M.cjs +0 -94
  216. package/dist/chunk-YWLUOY3D.cjs +0 -2004
  217. package/dist/index.d.cts +0 -1
  218. package/dist/server/handlers/a2a.d.cts +0 -6
  219. package/dist/server/handlers/agents.d.cts +0 -6
  220. package/dist/server/handlers/error.d.cts +0 -1
  221. package/dist/server/handlers/logs.d.cts +0 -3
  222. package/dist/server/handlers/memory.d.cts +0 -8
  223. package/dist/server/handlers/network.d.cts +0 -4
  224. package/dist/server/handlers/telemetry.d.cts +0 -2
  225. package/dist/server/handlers/tools.d.cts +0 -4
  226. package/dist/server/handlers/utils.d.cts +0 -1
  227. package/dist/server/handlers/vNextWorkflows.cjs +0 -46
  228. package/dist/server/handlers/vNextWorkflows.d.cts +0 -10
  229. package/dist/server/handlers/vNextWorkflows.d.ts +0 -10
  230. package/dist/server/handlers/vNextWorkflows.js +0 -1
  231. package/dist/server/handlers/vector.d.cts +0 -6
  232. package/dist/server/handlers/voice.d.cts +0 -3
  233. package/dist/server/handlers/workflows.d.cts +0 -10
  234. package/dist/server/handlers.d.cts +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/memory.ts"],"names":[],"mappings":"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","file":"chunk-LUPY3MQY.js","sourcesContent":["import type { RuntimeContext } from '@mastra/core/di';\nimport type { MastraMemory } from '@mastra/core/memory';\nimport type { StorageGetMessagesArg, ThreadSortOptions } from '@mastra/core/storage';\nimport { generateEmptyFromSchema } from '@mastra/core/utils';\nimport { HTTPException } from '../http-exception';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\ninterface MemoryContext extends Context {\n agentId?: string;\n resourceId?: string;\n threadId?: string;\n networkId?: string;\n runtimeContext?: RuntimeContext;\n}\n\nasync function getMemoryFromContext({\n mastra,\n agentId,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'>): Promise<\n MastraMemory | null | undefined\n> {\n const agent = agentId ? mastra.getAgent(agentId) : null;\n if (agentId && !agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const network = networkId ? mastra.vnext_getNetwork(networkId) : null;\n\n if (networkId && !network) {\n throw new HTTPException(404, { message: 'Network not found' });\n }\n\n if (agent) {\n return (await agent?.getMemory()) || mastra.getMemory();\n }\n\n if (network) {\n return (await network?.getMemory({ runtimeContext })) || mastra.getMemory();\n }\n\n return mastra.getMemory();\n}\n\n// Memory handlers\nexport async function getMemoryStatusHandler({\n mastra,\n agentId,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'>) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n\n if (!memory) {\n return { result: false };\n }\n\n return { result: true };\n } catch (error) {\n return handleError(error, 'Error getting memory status');\n }\n}\n\nexport async function getMemoryConfigHandler({\n mastra,\n agentId,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'>) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Get the merged configuration (defaults + custom)\n const config = memory.getMergedThreadConfig({});\n\n return { config };\n } catch (error) {\n return handleError(error, 'Error getting memory configuration');\n }\n}\n\nexport async function getThreadsHandler({\n mastra,\n agentId,\n resourceId,\n networkId,\n runtimeContext,\n orderBy,\n sortDirection,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'resourceId' | 'networkId' | 'runtimeContext'> & ThreadSortOptions) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n validateBody({ resourceId });\n\n const threads = await memory.getThreadsByResourceId({\n resourceId: resourceId!,\n orderBy,\n sortDirection,\n });\n return threads;\n } catch (error) {\n return handleError(error, 'Error getting threads');\n }\n}\n\nexport async function getThreadsPaginatedHandler({\n mastra,\n agentId,\n resourceId,\n networkId,\n runtimeContext,\n page,\n perPage,\n orderBy,\n sortDirection,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'resourceId' | 'networkId' | 'runtimeContext'> & {\n page: number;\n perPage: number;\n} & ThreadSortOptions) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n validateBody({ resourceId });\n\n const result = await memory.getThreadsByResourceIdPaginated({\n resourceId: resourceId!,\n page,\n perPage,\n orderBy,\n sortDirection,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error getting paginated threads');\n }\n}\n\nexport async function getThreadByIdHandler({\n mastra,\n agentId,\n threadId,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'>) {\n try {\n validateBody({ threadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: threadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n return thread;\n } catch (error) {\n return handleError(error, 'Error getting thread');\n }\n}\n\nexport async function saveMessagesHandler({\n mastra,\n agentId,\n body,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'> & {\n body: {\n messages: Parameters<MastraMemory['saveMessages']>[0]['messages'];\n };\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n if (!body?.messages) {\n throw new HTTPException(400, { message: 'Messages are required' });\n }\n\n if (!Array.isArray(body.messages)) {\n throw new HTTPException(400, { message: 'Messages should be an array' });\n }\n\n // Validate that all messages have threadId and resourceId\n const invalidMessages = body.messages.filter(message => !message.threadId || !message.resourceId);\n if (invalidMessages.length > 0) {\n throw new HTTPException(400, {\n message: `All messages must have threadId and resourceId fields. Found ${invalidMessages.length} invalid message(s).`,\n });\n }\n\n const processedMessages = body.messages.map(message => ({\n ...message,\n id: message.id || memory.generateId(),\n createdAt: message.createdAt ? new Date(message.createdAt) : new Date(),\n }));\n\n const result = await memory.saveMessages({ messages: processedMessages, memoryConfig: {} });\n return result;\n } catch (error) {\n return handleError(error, 'Error saving messages');\n }\n}\n\nexport async function createThreadHandler({\n mastra,\n agentId,\n body,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'> & {\n body?: Omit<Parameters<MastraMemory['createThread']>[0], 'resourceId'> & { resourceId?: string };\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n validateBody({ resourceId: body?.resourceId });\n\n const result = await memory.createThread({\n resourceId: body?.resourceId!,\n title: body?.title,\n metadata: body?.metadata,\n threadId: body?.threadId,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error saving thread to memory');\n }\n}\n\nexport async function updateThreadHandler({\n mastra,\n agentId,\n threadId,\n body,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'> & {\n body?: Parameters<MastraMemory['saveThread']>[0]['thread'];\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n\n if (!body) {\n throw new HTTPException(400, { message: 'Body is required' });\n }\n\n const { title, metadata, resourceId } = body;\n const updatedAt = new Date();\n\n validateBody({ threadId });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: threadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n const updatedThread = {\n ...thread,\n title: title || thread.title,\n metadata: metadata || thread.metadata,\n resourceId: resourceId || thread.resourceId,\n createdAt: thread.createdAt,\n updatedAt,\n };\n\n const result = await memory.saveThread({ thread: updatedThread });\n return result;\n } catch (error) {\n return handleError(error, 'Error updating thread');\n }\n}\n\nexport async function deleteThreadHandler({\n mastra,\n agentId,\n threadId,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'>) {\n try {\n validateBody({ threadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: threadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n await memory.deleteThread(threadId!);\n return { result: 'Thread deleted' };\n } catch (error) {\n return handleError(error, 'Error deleting thread');\n }\n}\n\nexport async function getMessagesPaginatedHandler({\n mastra,\n threadId,\n resourceId,\n selectBy,\n format,\n}: StorageGetMessagesArg & Pick<MemoryContext, 'mastra'>) {\n try {\n validateBody({ threadId });\n\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(400, { message: 'Storage is not initialized' });\n }\n\n const thread = await storage.getThreadById({ threadId: threadId! });\n\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n const result = await storage.getMessagesPaginated({ threadId: threadId!, resourceId, selectBy, format });\n return result;\n } catch (error) {\n return handleError(error, 'Error getting messages');\n }\n}\n\nexport async function getMessagesHandler({\n mastra,\n agentId,\n threadId,\n limit,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'> & {\n limit?: number;\n}) {\n if (limit !== undefined && (!Number.isInteger(limit) || limit <= 0)) {\n throw new HTTPException(400, { message: 'Invalid limit: must be a positive integer' });\n }\n try {\n validateBody({ threadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: threadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n const result = await memory.query({\n threadId: threadId!,\n ...(limit && { selectBy: { last: limit } }),\n });\n return { messages: result.messages, uiMessages: result.uiMessages };\n } catch (error) {\n return handleError(error, 'Error getting messages');\n }\n}\n\n/**\n * Handler to get the working memory for a thread (optionally resource-scoped).\n * @returns workingMemory - the working memory for the thread\n * @returns source - thread or resource\n */\nexport async function getWorkingMemoryHandler({\n mastra,\n agentId,\n threadId,\n resourceId,\n networkId,\n runtimeContext,\n memoryConfig,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'> & {\n resourceId?: Parameters<MastraMemory['getWorkingMemory']>[0]['resourceId'];\n memoryConfig?: Parameters<MastraMemory['getWorkingMemory']>[0]['memoryConfig'];\n}) {\n try {\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n validateBody({ threadId });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n const thread = await memory.getThreadById({ threadId: threadId! });\n const threadExists = !!thread;\n const template = await memory.getWorkingMemoryTemplate({ memoryConfig });\n const workingMemoryTemplate =\n template?.format === 'json'\n ? { ...template, content: JSON.stringify(generateEmptyFromSchema(template.content)) }\n : template;\n const workingMemory = await memory.getWorkingMemory({ threadId: threadId!, resourceId, memoryConfig });\n const config = memory.getMergedThreadConfig(memoryConfig || {});\n const source = config.workingMemory?.scope === 'resource' && resourceId ? 'resource' : 'thread';\n return { workingMemory, source, workingMemoryTemplate, threadExists };\n } catch (error) {\n return handleError(error, 'Error getting working memory');\n }\n}\n\n/**\n * Handler to update the working memory for a thread (optionally resource-scoped).\n * @param threadId - the thread id\n * @param body - the body containing the working memory to update and the resource id (optional)\n */\nexport async function updateWorkingMemoryHandler({\n mastra,\n agentId,\n threadId,\n body,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'threadId' | 'networkId' | 'runtimeContext'> & {\n body: Omit<Parameters<MastraMemory['updateWorkingMemory']>[0], 'threadId'>;\n}) {\n try {\n validateBody({ threadId });\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n const { resourceId, memoryConfig, workingMemory } = body;\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n const thread = await memory.getThreadById({ threadId: threadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n\n await memory.updateWorkingMemory({ threadId: threadId!, resourceId, workingMemory, memoryConfig });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error updating working memory');\n }\n}\n\ninterface SearchResult {\n id: string;\n role: string;\n content: any;\n createdAt: Date;\n threadId?: string;\n threadTitle?: string;\n score?: number;\n context?: {\n before?: SearchResult[];\n after?: SearchResult[];\n };\n}\n\ninterface SearchResponse {\n results: SearchResult[];\n count: number;\n query: string;\n searchScope?: string;\n searchType?: string;\n}\n\n/**\n * Handler to delete one or more messages.\n * @param messageIds - Can be a single ID, array of IDs, or objects with ID property\n */\nexport async function deleteMessagesHandler({\n mastra,\n agentId,\n messageIds,\n networkId,\n runtimeContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'> & {\n messageIds: string | string[] | { id: string } | { id: string }[];\n}) {\n try {\n if (messageIds === undefined || messageIds === null) {\n throw new HTTPException(400, { message: 'messageIds is required' });\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Delete the messages - let the memory method handle validation\n await memory.deleteMessages(messageIds as any);\n\n // Count messages for response\n let count = 1;\n if (Array.isArray(messageIds)) {\n count = messageIds.length;\n }\n\n return { success: true, message: `${count} message${count === 1 ? '' : 's'} deleted successfully` };\n } catch (error) {\n return handleError(error, 'Error deleting messages');\n }\n}\n\nexport async function searchMemoryHandler({\n mastra,\n agentId,\n searchQuery,\n resourceId,\n threadId,\n limit = 20,\n networkId,\n runtimeContext,\n memoryConfig,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'networkId' | 'runtimeContext'> & {\n searchQuery: string;\n resourceId: string;\n threadId?: string;\n limit?: number;\n memoryConfig?: any;\n}): Promise<SearchResponse | ReturnType<typeof handleError>> {\n try {\n validateBody({ searchQuery, resourceId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, networkId, runtimeContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Get memory configuration first to check scope\n const config = memory.getMergedThreadConfig(memoryConfig || {});\n const hasSemanticRecall = !!config?.semanticRecall;\n const resourceScope = typeof config?.semanticRecall === 'object' && config?.semanticRecall?.scope === 'resource';\n\n // Only validate thread ownership if we're in thread scope\n if (threadId && !resourceScope) {\n const thread = await memory.getThreadById({ threadId });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n if (thread.resourceId !== resourceId) {\n throw new HTTPException(403, { message: 'Thread does not belong to the specified resource' });\n }\n }\n\n const searchResults: SearchResult[] = [];\n const messageMap = new Map<string, boolean>(); // For deduplication\n\n // If threadId is provided and scope is thread-based, check if the thread exists\n if (threadId && !resourceScope) {\n const thread = await memory.getThreadById({ threadId });\n if (!thread) {\n // Thread doesn't exist yet (new unsaved thread) - return empty results\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n }\n\n // If resource scope is enabled or no threadId provided, search across all threads\n if (!threadId || resourceScope) {\n // Search across all threads for this resource\n const threads = await memory.getThreadsByResourceId({ resourceId });\n\n // If no threads exist yet, return empty results\n if (threads.length === 0) {\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: 'resource',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n\n for (const thread of threads) {\n // Use rememberMessages for semantic search\n const result = await memory.rememberMessages({\n threadId: thread.id,\n resourceId,\n vectorMessageSearch: searchQuery,\n config,\n });\n\n // Get thread messages for context\n const threadMessages = (await memory.query({ threadId: thread.id })).uiMessages;\n\n // Process results\n result.messagesV2.forEach(msg => {\n if (messageMap.has(msg.id)) return;\n messageMap.set(msg.id, true);\n\n const content =\n msg.content.content || msg.content.parts?.map(p => (p.type === 'text' ? p.text : '')).join(' ') || '';\n\n if (!hasSemanticRecall && !content.toLowerCase().includes(searchQuery.toLowerCase())) {\n return;\n }\n\n const messageIndex = threadMessages.findIndex(m => m.id === msg.id);\n\n const searchResult: SearchResult = {\n id: msg.id,\n role: msg.role,\n content,\n createdAt: msg.createdAt,\n threadId: msg.threadId || thread.id,\n threadTitle: thread.title || msg.threadId || thread.id,\n };\n\n if (messageIndex !== -1) {\n searchResult.context = {\n before: threadMessages.slice(Math.max(0, messageIndex - 2), messageIndex).map(m => ({\n id: m.id,\n role: m.role,\n content: m.content,\n createdAt: m.createdAt || new Date(),\n })),\n after: threadMessages.slice(messageIndex + 1, messageIndex + 3).map(m => ({\n id: m.id,\n role: m.role,\n content: m.content,\n createdAt: m.createdAt || new Date(),\n })),\n };\n }\n\n searchResults.push(searchResult);\n });\n }\n } else if (threadId) {\n // Search in specific thread only\n const thread = await memory.getThreadById({ threadId });\n if (!thread) {\n // Thread doesn't exist yet - return empty results\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n\n const result = await memory.rememberMessages({\n threadId,\n resourceId,\n vectorMessageSearch: searchQuery,\n config,\n });\n\n const threadMessages = (await memory.query({ threadId })).uiMessages;\n\n result.messagesV2.forEach(msg => {\n // Skip duplicates\n if (messageMap.has(msg.id)) return;\n messageMap.set(msg.id, true);\n\n // Extract content\n const content =\n msg.content.content || msg.content.parts?.map(p => (p.type === 'text' ? p.text : '')).join(' ') || '';\n\n // If not using semantic recall, filter by text search\n if (!hasSemanticRecall && !content.toLowerCase().includes(searchQuery.toLowerCase())) {\n return;\n }\n\n // Find message index for context\n const messageIndex = threadMessages.findIndex(m => m.id === msg.id);\n\n const searchResult: SearchResult = {\n id: msg.id,\n role: msg.role,\n content,\n createdAt: msg.createdAt,\n threadId: threadId,\n threadTitle: thread?.title || threadId,\n };\n\n // Add context if found\n if (messageIndex !== -1) {\n searchResult.context = {\n before: threadMessages.slice(Math.max(0, messageIndex - 2), messageIndex).map(m => ({\n id: m.id,\n role: m.role,\n content: m.content,\n createdAt: m.createdAt || new Date(),\n })),\n after: threadMessages.slice(messageIndex + 1, messageIndex + 3).map(m => ({\n id: m.id,\n role: m.role,\n content: m.content,\n createdAt: m.createdAt || new Date(),\n })),\n };\n }\n\n searchResults.push(searchResult);\n });\n }\n\n // Sort by date (newest first) and limit\n const sortedResults = searchResults\n .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())\n .slice(0, limit);\n\n return {\n results: sortedResults,\n count: sortedResults.length,\n query: searchQuery,\n searchScope: resourceScope ? 'resource' : 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n } catch (error) {\n return handleError(error, 'Error searching memory');\n }\n}\n"]}
@@ -11,6 +11,7 @@ var HTTPException = class extends Error {
11
11
  super(options?.message, { cause: options?.cause });
12
12
  this.res = options?.res;
13
13
  this.status = status;
14
+ this.stack = options?.stack || this.stack;
14
15
  }
15
16
  /**
16
17
  * Returns the response object associated with the exception.
@@ -32,3 +33,5 @@ var HTTPException = class extends Error {
32
33
  };
33
34
 
34
35
  export { HTTPException };
36
+ //# sourceMappingURL=chunk-MMROOK5J.js.map
37
+ //# sourceMappingURL=chunk-MMROOK5J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/http-exception.ts"],"names":[],"mappings":";AAgHO,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EAC9B,GAAA;AAAA,EACA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CAAY,MAAA,GAAqB,GAAA,EAAK,OAAA,EAAgC;AACpE,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;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,OAAA,EAAS,KAAA,IAAS,IAAA,CAAK,KAAA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAA,GAAwB;AACtB,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","file":"chunk-MMROOK5J.js","sourcesContent":["// Copied from https://github.com/honojs/hono/blob/main/packages/hono/src/http-exception.ts\n\n/**\n * @module\n * This module provides the `HTTPException` class.\n */\n\ntype InfoStatusCode = 100 | 101 | 102 | 103;\ntype SuccessStatusCode = 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226;\ntype DeprecatedStatusCode = 305 | 306;\ntype RedirectStatusCode = 300 | 301 | 302 | 303 | 304 | DeprecatedStatusCode | 307 | 308;\ntype ClientErrorStatusCode =\n | 400\n | 401\n | 402\n | 403\n | 404\n | 405\n | 406\n | 407\n | 408\n | 409\n | 410\n | 411\n | 412\n | 413\n | 414\n | 415\n | 416\n | 417\n | 418\n | 421\n | 422\n | 423\n | 424\n | 425\n | 426\n | 428\n | 429\n | 431\n | 451;\ntype ServerErrorStatusCode = 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511;\n\n/**\n * `UnofficialStatusCode` can be used to specify an unofficial status code.\n * @example\n *\n * ```ts\n * app.get('/unknown', (c) => {\n * return c.text(\"Unknown Error\", 520 as UnofficialStatusCode)\n * })\n * ```\n */\nexport type UnofficialStatusCode = -1;\n\n/**\n * @deprecated\n * Use `UnofficialStatusCode` instead.\n */\nexport type UnOfficalStatusCode = UnofficialStatusCode;\n\n/**\n * If you want to use an unofficial status, use `UnofficialStatusCode`.\n */\nexport type StatusCode =\n | InfoStatusCode\n | SuccessStatusCode\n | RedirectStatusCode\n | ClientErrorStatusCode\n | ServerErrorStatusCode\n | UnofficialStatusCode;\n\n/**\n * Options for creating an `HTTPException`.\n * @property res - Optional response object to use.\n * @property message - Optional custom error message.\n * @property cause - Optional cause of the error.\n * @property stack - Optional stack trace for the error.\n */\ntype HTTPExceptionOptions = {\n res?: Response;\n message?: string;\n cause?: unknown;\n stack?: string;\n};\n\n/**\n * `HTTPException` must be used when a fatal error such as authentication failure occurs.\n *\n * @see {@link https://hono.dev/docs/api/exception}\n *\n * @param {StatusCode} status - status code of HTTPException\n * @param {HTTPExceptionOptions} options - options of HTTPException\n * @param {HTTPExceptionOptions[\"res\"]} options.res - response of options of HTTPException\n * @param {HTTPExceptionOptions[\"message\"]} options.message - message of options of HTTPException\n * @param {HTTPExceptionOptions[\"cause\"]} options.cause - cause of options of HTTPException\n *\n * @example\n * ```ts\n * import { HTTPException } from 'hono/http-exception'\n *\n * // ...\n *\n * app.post('/auth', async (c, next) => {\n * // authentication\n * if (authorized === false) {\n * throw new HTTPException(401, { message: 'Custom error message' })\n * }\n * await next()\n * })\n * ```\n */\nexport class HTTPException extends Error {\n readonly res?: Response;\n readonly status: StatusCode;\n\n /**\n * Creates an instance of `HTTPException`.\n * @param status - HTTP status code for the exception. Defaults to 500.\n * @param options - Additional options for the exception.\n */\n constructor(status: StatusCode = 500, options?: HTTPExceptionOptions) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n this.stack = options?.stack || this.stack;\n }\n\n /**\n * Returns the response object associated with the exception.\n * If a response object is not provided, a new response is created with the error message and status code.\n * @returns The response object.\n */\n getResponse(): Response {\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}\n"]}
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ var chunk4QSNRCOT_cjs = require('./chunk-4QSNRCOT.cjs');
4
+ var chunkRE4RPXT2_cjs = require('./chunk-RE4RPXT2.cjs');
5
+ var chunkEMMSS5I5_cjs = require('./chunk-EMMSS5I5.cjs');
6
+
7
+ // src/server/handlers/logs.ts
8
+ var logs_exports = {};
9
+ chunkEMMSS5I5_cjs.__export(logs_exports, {
10
+ getLogTransports: () => getLogTransports,
11
+ getLogsByRunIdHandler: () => getLogsByRunIdHandler,
12
+ getLogsHandler: () => getLogsHandler
13
+ });
14
+ async function getLogsHandler({
15
+ mastra,
16
+ transportId,
17
+ params
18
+ }) {
19
+ try {
20
+ chunk4QSNRCOT_cjs.validateBody({ transportId });
21
+ const { fromDate, toDate, logLevel, filters: _filters, page, perPage } = params || {};
22
+ const filters = _filters ? Object.fromEntries(
23
+ (Array.isArray(_filters) ? _filters : [_filters]).map((attr) => {
24
+ const [key, value] = attr.split(":");
25
+ return [key, value];
26
+ })
27
+ ) : void 0;
28
+ const logs = await mastra.getLogs(transportId, {
29
+ fromDate,
30
+ toDate,
31
+ logLevel,
32
+ filters,
33
+ page: page ? Number(page) : void 0,
34
+ perPage: perPage ? Number(perPage) : void 0
35
+ });
36
+ return logs;
37
+ } catch (error) {
38
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting logs");
39
+ }
40
+ }
41
+ async function getLogsByRunIdHandler({
42
+ mastra,
43
+ runId,
44
+ transportId,
45
+ params
46
+ }) {
47
+ try {
48
+ chunk4QSNRCOT_cjs.validateBody({ runId, transportId });
49
+ const { fromDate, toDate, logLevel, filters: _filters, page, perPage } = params || {};
50
+ const filters = _filters ? Object.fromEntries(
51
+ (Array.isArray(_filters) ? _filters : [_filters]).map((attr) => {
52
+ const [key, value] = attr.split(":");
53
+ return [key, value];
54
+ })
55
+ ) : void 0;
56
+ const logs = await mastra.getLogsByRunId({
57
+ runId,
58
+ transportId,
59
+ fromDate,
60
+ toDate,
61
+ logLevel,
62
+ filters,
63
+ page: page ? Number(page) : void 0,
64
+ perPage: perPage ? Number(perPage) : void 0
65
+ });
66
+ return logs;
67
+ } catch (error) {
68
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting logs by run ID");
69
+ }
70
+ }
71
+ async function getLogTransports({ mastra }) {
72
+ try {
73
+ const logger = mastra.getLogger();
74
+ const transports = logger.getTransports();
75
+ return {
76
+ transports: transports ? [...transports.keys()] : []
77
+ };
78
+ } catch (error) {
79
+ return chunkRE4RPXT2_cjs.handleError(error, "Error getting log Transports");
80
+ }
81
+ }
82
+
83
+ exports.getLogTransports = getLogTransports;
84
+ exports.getLogsByRunIdHandler = getLogsByRunIdHandler;
85
+ exports.getLogsHandler = getLogsHandler;
86
+ exports.logs_exports = logs_exports;
87
+ //# sourceMappingURL=chunk-NPE3X7FQ.cjs.map
88
+ //# sourceMappingURL=chunk-NPE3X7FQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/logs.ts"],"names":["__export","validateBody","handleError"],"mappings":"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","file":"chunk-NPE3X7FQ.cjs","sourcesContent":["import type { BaseLogMessage, LogLevel } from '@mastra/core/logger';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\ntype LogsContext = {\n mastra: Mastra;\n transportId?: string;\n runId?: string;\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: string | string[];\n page?: number;\n perPage?: number;\n };\n};\n\nexport async function getLogsHandler({\n mastra,\n transportId,\n params,\n}: Pick<LogsContext, 'mastra' | 'transportId' | 'params'>): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n}> {\n try {\n validateBody({ transportId });\n\n const { fromDate, toDate, logLevel, filters: _filters, page, perPage } = params || {};\n\n // Parse filter query parameter if present\n const filters = _filters\n ? Object.fromEntries(\n (Array.isArray(_filters) ? _filters : [_filters]).map(attr => {\n const [key, value] = attr.split(':');\n return [key, value];\n }),\n )\n : undefined;\n\n const logs = await mastra.getLogs(transportId!, {\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n}\n\nexport async function getLogsByRunIdHandler({\n mastra,\n runId,\n transportId,\n params,\n}: Pick<LogsContext, 'mastra' | 'runId' | 'transportId' | 'params'>) {\n try {\n validateBody({ runId, transportId });\n\n const { fromDate, toDate, logLevel, filters: _filters, page, perPage } = params || {};\n\n // Parse filter query parameter if present\n const filters = _filters\n ? Object.fromEntries(\n (Array.isArray(_filters) ? _filters : [_filters]).map(attr => {\n const [key, value] = attr.split(':');\n return [key, value];\n }),\n )\n : undefined;\n\n const logs = await mastra.getLogsByRunId({\n runId: runId!,\n transportId: transportId!,\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n}\n\nexport async function getLogTransports({ mastra }: Pick<LogsContext, 'mastra'>) {\n try {\n const logger = mastra.getLogger();\n const transports = logger.getTransports();\n\n return {\n transports: transports ? [...transports.keys()] : [],\n };\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { HTTPException } from './chunk-NYN7KFXL.js';
1
+ import { HTTPException } from './chunk-MMROOK5J.js';
2
2
 
3
3
  // src/server/handlers/utils.ts
4
4
  function validateBody(body) {
@@ -14,3 +14,5 @@ function validateBody(body) {
14
14
  }
15
15
 
16
16
  export { validateBody };
17
+ //# sourceMappingURL=chunk-OW4FX5TS.js.map
18
+ //# sourceMappingURL=chunk-OW4FX5TS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/utils.ts"],"names":[],"mappings":";;;AAGO,SAAS,aAAa,IAAA,EAA+B;AAC1D,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,CAAE,MAAA,CAA+B,CAAC,GAAA,EAAK,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC/F,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,GAAA,CAAI,GAAG,CAAA,GAAI,CAAA,UAAA,EAAa,GAAG,CAAA,aAAA,CAAA;AAAA,IAC7B;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA,CAAE,SAAS,CAAA,EAAG;AACzC,IAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,aAAa,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA;AAAA,EAC3E;AACF","file":"chunk-OW4FX5TS.js","sourcesContent":["import { HTTPException } from '../http-exception';\n\n// Validation helper\nexport function validateBody(body: Record<string, unknown>) {\n const errorResponse = Object.entries(body).reduce<Record<string, string>>((acc, [key, value]) => {\n if (!value) {\n acc[key] = `Argument \"${key}\" is required`;\n }\n return acc;\n }, {});\n\n if (Object.keys(errorResponse).length > 0) {\n throw new HTTPException(400, { message: Object.values(errorResponse)[0] });\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { handleError } from './chunk-M5ABIP7D.js';
2
- import { HTTPException } from './chunk-NYN7KFXL.js';
3
- import { __export } from './chunk-MLKGABMK.js';
1
+ import { handleError } from './chunk-CY4TP3FK.js';
2
+ import { HTTPException } from './chunk-MMROOK5J.js';
3
+ import { __export } from './chunk-G3PMV62Z.js';
4
4
 
5
5
  // src/server/handlers/telemetry.ts
6
6
  var telemetry_exports = {};
@@ -16,7 +16,7 @@ async function getTelemetryHandler({ mastra, body }) {
16
16
  throw new HTTPException(400, { message: "Telemetry is not initialized" });
17
17
  }
18
18
  if (!storage) {
19
- throw new HTTPException(400, { message: "Storage is not initialized" });
19
+ return [];
20
20
  }
21
21
  if (!body) {
22
22
  throw new HTTPException(400, { message: "Body is required" });
@@ -47,7 +47,10 @@ async function storeTelemetryHandler({ mastra, body }) {
47
47
  const storage = mastra.getStorage();
48
48
  const logger = mastra.getLogger();
49
49
  if (!storage) {
50
- throw new HTTPException(400, { message: "Storage is not initialized" });
50
+ return {
51
+ status: "error",
52
+ message: "Storage is not initialized"
53
+ };
51
54
  }
52
55
  const now = /* @__PURE__ */ new Date();
53
56
  const items = body?.resourceSpans?.[0]?.scopeSpans;
@@ -136,3 +139,5 @@ async function storeTelemetryHandler({ mastra, body }) {
136
139
  }
137
140
 
138
141
  export { getTelemetryHandler, storeTelemetryHandler, telemetry_exports };
142
+ //# sourceMappingURL=chunk-PHZHWQZP.js.map
143
+ //# sourceMappingURL=chunk-PHZHWQZP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/telemetry.ts"],"names":["error","acc"],"mappings":"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","file":"chunk-PHZHWQZP.js","sourcesContent":["import { HTTPException } from '../http-exception';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\n\ninterface TelemetryContext extends Context {\n body?: {\n name?: string;\n scope?: string;\n page?: number;\n perPage?: number;\n attribute?: string | string[];\n fromDate?: Date;\n toDate?: Date;\n };\n}\n\nexport async function getTelemetryHandler({ mastra, body }: TelemetryContext) {\n try {\n const telemetry = mastra.getTelemetry();\n const storage = mastra.getStorage();\n\n if (!telemetry) {\n throw new HTTPException(400, { message: 'Telemetry is not initialized' });\n }\n\n if (!storage) {\n return [];\n }\n\n if (!body) {\n throw new HTTPException(400, { message: 'Body is required' });\n }\n\n const { name, scope, page, perPage, attribute, fromDate, toDate } = body;\n\n // Parse attribute query parameter if present\n const attributes = attribute\n ? Object.fromEntries(\n (Array.isArray(attribute) ? attribute : [attribute]).map(attr => {\n const [key, value] = attr.split(':');\n return [key, value];\n }),\n )\n : undefined;\n\n const traces = await storage.getTraces({\n name,\n scope,\n page: Number(page ?? 0),\n perPage: Number(perPage ?? 100),\n attributes,\n fromDate: fromDate ? new Date(fromDate) : undefined,\n toDate: toDate ? new Date(toDate) : undefined,\n });\n\n return traces;\n } catch (error) {\n return handleError(error, 'Error getting telemetry');\n }\n}\n\nexport async function storeTelemetryHandler({ mastra, body }: Context & { body: { resourceSpans: any[] } }) {\n try {\n const storage = mastra.getStorage();\n const logger = mastra.getLogger();\n\n if (!storage) {\n return {\n status: 'error',\n message: 'Storage is not initialized',\n };\n }\n\n const now = new Date();\n\n const items = body?.resourceSpans?.[0]?.scopeSpans;\n logger.debug('[Telemetry Handler] Received spans:', {\n totalSpans: items?.reduce((acc: number, scope: { spans: any[] }) => acc + scope.spans.length, 0) || 0,\n timestamp: now.toISOString(),\n });\n if (!items?.length) {\n return {\n status: 'success',\n message: 'No spans to process',\n traceCount: 0,\n };\n }\n\n const allSpans: any[] = items.reduce((acc: any, scopedSpans: any) => {\n const { scope, spans } = scopedSpans;\n for (const span of spans) {\n const {\n spanId,\n parentSpanId,\n traceId,\n name,\n kind,\n attributes,\n status,\n events,\n links,\n startTimeUnixNano,\n endTimeUnixNano,\n ...rest\n } = span;\n\n const startTime = Number(BigInt(startTimeUnixNano) / 1000n);\n const endTime = Number(BigInt(endTimeUnixNano) / 1000n);\n\n acc.push({\n id: spanId,\n parentSpanId,\n traceId,\n name,\n scope: scope.name,\n kind,\n status: JSON.stringify(status),\n events: JSON.stringify(events),\n links: JSON.stringify(links),\n attributes: JSON.stringify(\n attributes.reduce((acc: Record<string, any>, attr: any) => {\n const valueKey = Object.keys(attr.value)[0];\n if (valueKey) {\n acc[attr.key] = attr.value[valueKey];\n }\n return acc;\n }, {}),\n ),\n startTime,\n endTime,\n other: JSON.stringify(rest),\n createdAt: now,\n });\n }\n return acc;\n }, []);\n\n return storage\n .batchTraceInsert({\n records: allSpans,\n })\n .then(() => {\n return {\n status: 'success',\n message: 'Traces received and processed successfully',\n traceCount: body.resourceSpans?.length || 0,\n };\n })\n .catch(() => {\n return {\n status: 'error',\n message: 'Failed to process traces',\n // @ts-ignore\n error: error.message,\n };\n });\n\n // Return a simple response\n } catch (error) {\n console.error('Error processing traces:', error);\n return {\n status: 'error',\n message: 'Failed to process traces',\n // @ts-ignore\n error: error.message,\n };\n }\n}\n"]}
@@ -1,13 +1,14 @@
1
- import { validateBody } from './chunk-H5PTF3Y4.js';
2
- import { handleError } from './chunk-M5ABIP7D.js';
3
- import { HTTPException } from './chunk-NYN7KFXL.js';
4
- import { __export } from './chunk-MLKGABMK.js';
1
+ import { validateBody } from './chunk-OW4FX5TS.js';
2
+ import { handleError } from './chunk-CY4TP3FK.js';
3
+ import { HTTPException } from './chunk-MMROOK5J.js';
4
+ import { __export } from './chunk-G3PMV62Z.js';
5
5
  import { Readable } from 'stream';
6
6
 
7
7
  // src/server/handlers/voice.ts
8
8
  var voice_exports = {};
9
9
  __export(voice_exports, {
10
10
  generateSpeechHandler: () => generateSpeechHandler,
11
+ getListenerHandler: () => getListenerHandler,
11
12
  getSpeakersHandler: () => getSpeakersHandler,
12
13
  transcribeSpeechHandler: () => transcribeSpeechHandler
13
14
  });
@@ -20,10 +21,11 @@ async function getSpeakersHandler({ mastra, agentId }) {
20
21
  if (!agent) {
21
22
  throw new HTTPException(404, { message: "Agent not found" });
22
23
  }
23
- if (!agent.voice) {
24
+ const voice = await agent.getVoice();
25
+ if (!voice) {
24
26
  throw new HTTPException(400, { message: "Agent does not have voice capabilities" });
25
27
  }
26
- const speakers = await agent.voice.getSpeakers();
28
+ const speakers = await voice.getSpeakers();
27
29
  return speakers;
28
30
  } catch (error) {
29
31
  return handleError(error, "Error getting speakers");
@@ -45,10 +47,11 @@ async function generateSpeechHandler({
45
47
  if (!agent) {
46
48
  throw new HTTPException(404, { message: "Agent not found" });
47
49
  }
48
- if (!agent.voice) {
50
+ const voice = await agent.getVoice();
51
+ if (!voice) {
49
52
  throw new HTTPException(400, { message: "Agent does not have voice capabilities" });
50
53
  }
51
- const audioStream = await agent.voice.speak(body.text, { speaker: body.speakerId });
54
+ const audioStream = await voice.speak(body.text, { speaker: body.speakerId });
52
55
  if (!audioStream) {
53
56
  throw new HTTPException(500, { message: "Failed to generate speech" });
54
57
  }
@@ -73,17 +76,39 @@ async function transcribeSpeechHandler({
73
76
  if (!agent) {
74
77
  throw new HTTPException(404, { message: "Agent not found" });
75
78
  }
76
- if (!agent.voice) {
79
+ const voice = await agent.getVoice();
80
+ if (!voice) {
77
81
  throw new HTTPException(400, { message: "Agent does not have voice capabilities" });
78
82
  }
79
83
  const audioStream = new Readable();
80
84
  audioStream.push(body.audioData);
81
85
  audioStream.push(null);
82
- const text = await agent.voice.listen(audioStream, body.options);
86
+ const text = await voice.listen(audioStream, body.options);
83
87
  return { text };
84
88
  } catch (error) {
85
89
  return handleError(error, "Error transcribing speech");
86
90
  }
87
91
  }
92
+ async function getListenerHandler({ mastra, agentId }) {
93
+ try {
94
+ if (!agentId) {
95
+ throw new HTTPException(400, { message: "Agent ID is required" });
96
+ }
97
+ const agent = mastra.getAgent(agentId);
98
+ if (!agent) {
99
+ throw new HTTPException(404, { message: "Agent not found" });
100
+ }
101
+ const voice = await agent.getVoice();
102
+ if (!voice) {
103
+ throw new HTTPException(400, { message: "Agent does not have voice capabilities" });
104
+ }
105
+ const listeners = await voice.getListener();
106
+ return listeners;
107
+ } catch (error) {
108
+ return handleError(error, "Error getting listeners");
109
+ }
110
+ }
88
111
 
89
- export { generateSpeechHandler, getSpeakersHandler, transcribeSpeechHandler, voice_exports };
112
+ export { generateSpeechHandler, getListenerHandler, getSpeakersHandler, transcribeSpeechHandler, voice_exports };
113
+ //# sourceMappingURL=chunk-QBWF6U7Z.js.map
114
+ //# sourceMappingURL=chunk-QBWF6U7Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/voice.ts"],"names":[],"mappings":"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","file":"chunk-QBWF6U7Z.js","sourcesContent":["import { Readable } from 'stream';\nimport type { Agent } from '@mastra/core/agent';\nimport { HTTPException } from '../http-exception';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\ninterface VoiceContext extends Context {\n agentId?: string;\n}\n\n/**\n * Get available speakers for an agent\n */\nexport async function getSpeakersHandler({ mastra, agentId }: VoiceContext) {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice();\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const speakers = await voice.getSpeakers();\n return speakers;\n } catch (error) {\n return handleError(error, 'Error getting speakers');\n }\n}\n\n/**\n * Generate speech from text\n */\nexport async function generateSpeechHandler({\n mastra,\n agentId,\n body,\n}: VoiceContext & {\n body?: {\n text?: string;\n speakerId?: string;\n };\n}) {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n validateBody({\n text: body?.text,\n });\n\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice();\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const audioStream = await voice.speak(body!.text!, { speaker: body!.speakerId! });\n\n if (!audioStream) {\n throw new HTTPException(500, { message: 'Failed to generate speech' });\n }\n\n return audioStream;\n } catch (error) {\n return handleError(error, 'Error generating speech');\n }\n}\n\n/**\n * Transcribe speech to text\n */\nexport async function transcribeSpeechHandler({\n mastra,\n agentId,\n body,\n}: VoiceContext & {\n body?: {\n audioData?: Buffer;\n options?: Parameters<NonNullable<Agent['voice']>['listen']>[1];\n };\n}) {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n if (!body?.audioData) {\n throw new HTTPException(400, { message: 'Audio data is required' });\n }\n\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice();\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const audioStream = new Readable();\n audioStream.push(body.audioData);\n audioStream.push(null);\n\n const text = await voice.listen(audioStream, body.options);\n return { text };\n } catch (error) {\n return handleError(error, 'Error transcribing speech');\n }\n}\n\n/**\n * Get available listeners for an agent\n */\nexport async function getListenerHandler({ mastra, agentId }: VoiceContext) {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice();\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const listeners = await voice.getListener();\n return listeners;\n } catch (error) {\n return handleError(error, 'Error getting listeners');\n }\n}\n"]}
@@ -0,0 +1,65 @@
1
+ import { handleError } from './chunk-CY4TP3FK.js';
2
+ import { HTTPException } from './chunk-MMROOK5J.js';
3
+ import { __export } from './chunk-G3PMV62Z.js';
4
+
5
+ // src/server/handlers/observability.ts
6
+ var observability_exports = {};
7
+ __export(observability_exports, {
8
+ getAITraceHandler: () => getAITraceHandler,
9
+ getAITracesPaginatedHandler: () => getAITracesPaginatedHandler
10
+ });
11
+ async function getAITraceHandler({ mastra, traceId }) {
12
+ try {
13
+ if (!traceId) {
14
+ throw new HTTPException(400, { message: "Trace ID is required" });
15
+ }
16
+ const storage = mastra.getStorage();
17
+ if (!storage) {
18
+ throw new HTTPException(500, { message: "Storage is not available" });
19
+ }
20
+ const trace = await storage.getAITrace(traceId);
21
+ if (!trace) {
22
+ throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });
23
+ }
24
+ return trace;
25
+ } catch (error) {
26
+ handleError(error, "Error getting AI trace");
27
+ }
28
+ }
29
+ async function getAITracesPaginatedHandler({ mastra, body }) {
30
+ try {
31
+ const storage = mastra.getStorage();
32
+ if (!storage) {
33
+ throw new HTTPException(500, { message: "Storage is not available" });
34
+ }
35
+ if (!body) {
36
+ throw new HTTPException(400, { message: "Request body is required" });
37
+ }
38
+ const { filters, pagination } = body;
39
+ if (pagination?.page && pagination.page < 0) {
40
+ throw new HTTPException(400, { message: "Page must be a non-negative integer" });
41
+ }
42
+ if (pagination?.perPage && pagination.perPage < 0) {
43
+ throw new HTTPException(400, { message: "Per page must be a non-negative integer" });
44
+ }
45
+ if (pagination?.dateRange) {
46
+ const { start, end } = pagination.dateRange;
47
+ if (start && !(start instanceof Date)) {
48
+ throw new HTTPException(400, { message: "Invalid date format in date range" });
49
+ }
50
+ if (end && !(end instanceof Date)) {
51
+ throw new HTTPException(400, { message: "Invalid date format in date range" });
52
+ }
53
+ }
54
+ return storage.getAITracesPaginated({
55
+ pagination,
56
+ filters
57
+ });
58
+ } catch (error) {
59
+ handleError(error, "Error getting AI traces paginated");
60
+ }
61
+ }
62
+
63
+ export { getAITraceHandler, getAITracesPaginatedHandler, observability_exports };
64
+ //# sourceMappingURL=chunk-R7NOGUZG.js.map
65
+ //# sourceMappingURL=chunk-R7NOGUZG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/observability.ts"],"names":[],"mappings":";;;;;AAAA,IAAA,qBAAA,GAAA;AAAA,QAAA,CAAA,qBAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,2BAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAeA,eAAsB,iBAAA,CAAkB,EAAE,MAAA,EAAQ,OAAA,EAAQ,EAA+C;AACvG,EAAA,IAAI;AACF,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,wBAAwB,CAAA;AAAA,IAClE;AAEA,IAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,IACtE;AAEA,IAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA;AAE9C,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,cAAc,GAAA,EAAK,EAAE,SAAS,CAAA,eAAA,EAAkB,OAAO,eAAe,CAAA;AAAA,IAClF;AAEA,IAAA,OAAO,KAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,WAAA,CAAY,OAAO,wBAAwB,CAAA;AAAA,EAC7C;AACF;AAMA,eAAsB,2BAAA,CAA4B,EAAE,MAAA,EAAQ,IAAA,EAAK,EAAyB;AACxF,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,IACtE;AAEA,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4BAA4B,CAAA;AAAA,IACtE;AAEA,IAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAW,GAAI,IAAA;AAEhC,IAAA,IAAI,UAAA,EAAY,IAAA,IAAQ,UAAA,CAAW,IAAA,GAAO,CAAA,EAAG;AAC3C,MAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,uCAAuC,CAAA;AAAA,IACjF;AAEA,IAAA,IAAI,UAAA,EAAY,OAAA,IAAW,UAAA,CAAW,OAAA,GAAU,CAAA,EAAG;AACjD,MAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,2CAA2C,CAAA;AAAA,IACrF;AAEA,IAAA,IAAI,YAAY,SAAA,EAAW;AACzB,MAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAI,GAAI,UAAA,CAAW,SAAA;AAElC,MAAA,IAAI,KAAA,IAAS,EAAE,KAAA,YAAiB,IAAA,CAAA,EAAO;AACrC,QAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qCAAqC,CAAA;AAAA,MAC/E;AAEA,MAAA,IAAI,GAAA,IAAO,EAAE,GAAA,YAAe,IAAA,CAAA,EAAO;AACjC,QAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,qCAAqC,CAAA;AAAA,MAC/E;AAAA,IACF;AAEA,IAAA,OAAO,QAAQ,oBAAA,CAAqB;AAAA,MAClC,UAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,WAAA,CAAY,OAAO,mCAAmC,CAAA;AAAA,EACxD;AACF","file":"chunk-R7NOGUZG.js","sourcesContent":["import type { AITracesPaginatedArg } from '@mastra/core';\nimport { HTTPException } from '../http-exception';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\n\ninterface ObservabilityContext extends Context {\n traceId?: string;\n body?: AITracesPaginatedArg;\n}\n\n/**\n * Get a complete AI trace by trace ID\n * Returns all spans in the trace with their parent-child relationships\n */\nexport async function getAITraceHandler({ mastra, traceId }: ObservabilityContext & { traceId: string }) {\n try {\n if (!traceId) {\n throw new HTTPException(400, { message: 'Trace ID is required' });\n }\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n const trace = await storage.getAITrace(traceId);\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n return trace;\n } catch (error) {\n handleError(error, 'Error getting AI trace');\n }\n}\n\n/**\n * Get paginated AI traces with filtering and pagination\n * Returns only root spans (parent spans) for pagination, not child spans\n */\nexport async function getAITracesPaginatedHandler({ mastra, body }: ObservabilityContext) {\n try {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n\n if (!body) {\n throw new HTTPException(400, { message: 'Request body is required' });\n }\n\n const { filters, pagination } = body;\n\n if (pagination?.page && pagination.page < 0) {\n throw new HTTPException(400, { message: 'Page must be a non-negative integer' });\n }\n\n if (pagination?.perPage && pagination.perPage < 0) {\n throw new HTTPException(400, { message: 'Per page must be a non-negative integer' });\n }\n\n if (pagination?.dateRange) {\n const { start, end } = pagination.dateRange;\n\n if (start && !(start instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n\n if (end && !(end instanceof Date)) {\n throw new HTTPException(400, { message: 'Invalid date format in date range' });\n }\n }\n\n return storage.getAITracesPaginated({\n pagination,\n filters,\n });\n } catch (error) {\n handleError(error, 'Error getting AI traces paginated');\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var chunk7NADHFD2_cjs = require('./chunk-7NADHFD2.cjs');
4
+
5
+ // src/server/handlers/error.ts
6
+ function handleError(error, defaultMessage) {
7
+ const apiError = error;
8
+ const apiErrorStatus = apiError.status || apiError.details?.status || 500;
9
+ throw new chunk7NADHFD2_cjs.HTTPException(apiErrorStatus, {
10
+ message: apiError.message || defaultMessage,
11
+ stack: apiError.stack,
12
+ cause: apiError.cause
13
+ });
14
+ }
15
+
16
+ exports.handleError = handleError;
17
+ //# sourceMappingURL=chunk-RE4RPXT2.cjs.map
18
+ //# sourceMappingURL=chunk-RE4RPXT2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/error.ts"],"names":["HTTPException"],"mappings":";;;;;AAKO,SAAS,WAAA,CAAY,OAAgB,cAAA,EAA+B;AACzE,EAAA,MAAM,QAAA,GAAW,KAAA;AAEjB,EAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,MAAA,IAAU,QAAA,CAAS,SAAS,MAAA,IAAU,GAAA;AAEtE,EAAA,MAAM,IAAIA,gCAAc,cAAA,EAA8B;AAAA,IACpD,OAAA,EAAS,SAAS,OAAA,IAAW,cAAA;AAAA,IAC7B,OAAO,QAAA,CAAS,KAAA;AAAA,IAChB,OAAO,QAAA,CAAS;AAAA,GACjB,CAAA;AACH","file":"chunk-RE4RPXT2.cjs","sourcesContent":["import { HTTPException } from '../http-exception';\nimport type { StatusCode } from '../http-exception';\nimport type { ApiError } from '../types';\n\n// Helper to handle errors consistently\nexport function handleError(error: unknown, defaultMessage: string): never {\n const apiError = error as ApiError;\n\n const apiErrorStatus = apiError.status || apiError.details?.status || 500;\n\n throw new HTTPException(apiErrorStatus as StatusCode, {\n message: apiError.message || defaultMessage,\n stack: apiError.stack,\n cause: apiError.cause,\n });\n}\n"]}
@@ -0,0 +1,83 @@
1
+ import { validateBody } from './chunk-OW4FX5TS.js';
2
+ import { handleError } from './chunk-CY4TP3FK.js';
3
+ import { __export } from './chunk-G3PMV62Z.js';
4
+
5
+ // src/server/handlers/logs.ts
6
+ var logs_exports = {};
7
+ __export(logs_exports, {
8
+ getLogTransports: () => getLogTransports,
9
+ getLogsByRunIdHandler: () => getLogsByRunIdHandler,
10
+ getLogsHandler: () => getLogsHandler
11
+ });
12
+ async function getLogsHandler({
13
+ mastra,
14
+ transportId,
15
+ params
16
+ }) {
17
+ try {
18
+ validateBody({ transportId });
19
+ const { fromDate, toDate, logLevel, filters: _filters, page, perPage } = params || {};
20
+ const filters = _filters ? Object.fromEntries(
21
+ (Array.isArray(_filters) ? _filters : [_filters]).map((attr) => {
22
+ const [key, value] = attr.split(":");
23
+ return [key, value];
24
+ })
25
+ ) : void 0;
26
+ const logs = await mastra.getLogs(transportId, {
27
+ fromDate,
28
+ toDate,
29
+ logLevel,
30
+ filters,
31
+ page: page ? Number(page) : void 0,
32
+ perPage: perPage ? Number(perPage) : void 0
33
+ });
34
+ return logs;
35
+ } catch (error) {
36
+ return handleError(error, "Error getting logs");
37
+ }
38
+ }
39
+ async function getLogsByRunIdHandler({
40
+ mastra,
41
+ runId,
42
+ transportId,
43
+ params
44
+ }) {
45
+ try {
46
+ validateBody({ runId, transportId });
47
+ const { fromDate, toDate, logLevel, filters: _filters, page, perPage } = params || {};
48
+ const filters = _filters ? Object.fromEntries(
49
+ (Array.isArray(_filters) ? _filters : [_filters]).map((attr) => {
50
+ const [key, value] = attr.split(":");
51
+ return [key, value];
52
+ })
53
+ ) : void 0;
54
+ const logs = await mastra.getLogsByRunId({
55
+ runId,
56
+ transportId,
57
+ fromDate,
58
+ toDate,
59
+ logLevel,
60
+ filters,
61
+ page: page ? Number(page) : void 0,
62
+ perPage: perPage ? Number(perPage) : void 0
63
+ });
64
+ return logs;
65
+ } catch (error) {
66
+ return handleError(error, "Error getting logs by run ID");
67
+ }
68
+ }
69
+ async function getLogTransports({ mastra }) {
70
+ try {
71
+ const logger = mastra.getLogger();
72
+ const transports = logger.getTransports();
73
+ return {
74
+ transports: transports ? [...transports.keys()] : []
75
+ };
76
+ } catch (error) {
77
+ return handleError(error, "Error getting log Transports");
78
+ }
79
+ }
80
+
81
+ export { getLogTransports, getLogsByRunIdHandler, getLogsHandler, logs_exports };
82
+ //# sourceMappingURL=chunk-ROA7BCHD.js.map
83
+ //# sourceMappingURL=chunk-ROA7BCHD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/logs.ts"],"names":[],"mappings":"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","file":"chunk-ROA7BCHD.js","sourcesContent":["import type { BaseLogMessage, LogLevel } from '@mastra/core/logger';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\ntype LogsContext = {\n mastra: Mastra;\n transportId?: string;\n runId?: string;\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: string | string[];\n page?: number;\n perPage?: number;\n };\n};\n\nexport async function getLogsHandler({\n mastra,\n transportId,\n params,\n}: Pick<LogsContext, 'mastra' | 'transportId' | 'params'>): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n}> {\n try {\n validateBody({ transportId });\n\n const { fromDate, toDate, logLevel, filters: _filters, page, perPage } = params || {};\n\n // Parse filter query parameter if present\n const filters = _filters\n ? Object.fromEntries(\n (Array.isArray(_filters) ? _filters : [_filters]).map(attr => {\n const [key, value] = attr.split(':');\n return [key, value];\n }),\n )\n : undefined;\n\n const logs = await mastra.getLogs(transportId!, {\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n}\n\nexport async function getLogsByRunIdHandler({\n mastra,\n runId,\n transportId,\n params,\n}: Pick<LogsContext, 'mastra' | 'runId' | 'transportId' | 'params'>) {\n try {\n validateBody({ runId, transportId });\n\n const { fromDate, toDate, logLevel, filters: _filters, page, perPage } = params || {};\n\n // Parse filter query parameter if present\n const filters = _filters\n ? Object.fromEntries(\n (Array.isArray(_filters) ? _filters : [_filters]).map(attr => {\n const [key, value] = attr.split(':');\n return [key, value];\n }),\n )\n : undefined;\n\n const logs = await mastra.getLogsByRunId({\n runId: runId!,\n transportId: transportId!,\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n}\n\nexport async function getLogTransports({ mastra }: Pick<LogsContext, 'mastra'>) {\n try {\n const logger = mastra.getLogger();\n const transports = logger.getTransports();\n\n return {\n transports: transports ? [...transports.keys()] : [],\n };\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n}\n"]}