@mastra/server 0.12.0 → 0.12.1-alpha.1

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 (200) hide show
  1. package/dist/{chunk-I5JKUCGE.cjs → chunk-2XIJW7SV.cjs} +26 -24
  2. package/dist/chunk-2XIJW7SV.cjs.map +1 -0
  3. package/dist/{chunk-2SLFAFTR.cjs → chunk-4CEZIJWJ.cjs} +16 -14
  4. package/dist/chunk-4CEZIJWJ.cjs.map +1 -0
  5. package/dist/{chunk-4D66QEKC.js → chunk-4MQU6AJN.js} +5 -3
  6. package/dist/chunk-4MQU6AJN.js.map +1 -0
  7. package/dist/{chunk-CCGRCYWJ.cjs → chunk-4QSNRCOT.cjs} +4 -2
  8. package/dist/chunk-4QSNRCOT.cjs.map +1 -0
  9. package/dist/{chunk-RHSWAXKB.cjs → chunk-4US5W7PH.cjs} +26 -24
  10. package/dist/chunk-4US5W7PH.cjs.map +1 -0
  11. package/dist/{chunk-36BLNJHS.js → chunk-7FHF55WA.js} +2 -0
  12. package/dist/chunk-7FHF55WA.js.map +1 -0
  13. package/dist/{chunk-2KZFMI6P.cjs → chunk-7NADHFD2.cjs} +2 -0
  14. package/dist/chunk-7NADHFD2.cjs.map +1 -0
  15. package/dist/{chunk-QGX47B5D.cjs → chunk-BED2O446.cjs} +11 -9
  16. package/dist/chunk-BED2O446.cjs.map +1 -0
  17. package/dist/{chunk-T7HAZC2E.js → chunk-BUOJL3MN.js} +6 -4
  18. package/dist/chunk-BUOJL3MN.js.map +1 -0
  19. package/dist/{chunk-LF7P5PLR.js → chunk-CY4TP3FK.js} +3 -1
  20. package/dist/chunk-CY4TP3FK.js.map +1 -0
  21. package/dist/{chunk-WNVFNNWN.js → chunk-G7NVCO5M.js} +5 -3
  22. package/dist/chunk-G7NVCO5M.js.map +1 -0
  23. package/dist/{chunk-SDPGVWQJ.cjs → chunk-GASWM5HJ.cjs} +4 -2
  24. package/dist/chunk-GASWM5HJ.cjs.map +1 -0
  25. package/dist/{chunk-KHZKYUNR.js → chunk-HWHKM67I.js} +6 -4
  26. package/dist/chunk-HWHKM67I.js.map +1 -0
  27. package/dist/{chunk-PIAJQ75M.js → chunk-HXIOPAHT.js} +6 -4
  28. package/dist/chunk-HXIOPAHT.js.map +1 -0
  29. package/dist/{chunk-G7KH752Y.cjs → chunk-ILCWPBYQ.cjs} +9 -7
  30. package/dist/chunk-ILCWPBYQ.cjs.map +1 -0
  31. package/dist/{chunk-UCV4247U.cjs → chunk-JGVY3KWV.cjs} +47 -45
  32. package/dist/chunk-JGVY3KWV.cjs.map +1 -0
  33. package/dist/{chunk-HISYIDYH.cjs → chunk-LRUH33B4.cjs} +2 -0
  34. package/dist/chunk-LRUH33B4.cjs.map +1 -0
  35. package/dist/{chunk-LCM566I4.js → chunk-MMROOK5J.js} +2 -0
  36. package/dist/chunk-MMROOK5J.js.map +1 -0
  37. package/dist/{chunk-7TP2LX5L.cjs → chunk-NCS2OXX6.cjs} +20 -18
  38. package/dist/chunk-NCS2OXX6.cjs.map +1 -0
  39. package/dist/{chunk-HRSAZUIK.cjs → chunk-O4I563YW.cjs} +24 -22
  40. package/dist/chunk-O4I563YW.cjs.map +1 -0
  41. package/dist/{chunk-RSEO4XPX.js → chunk-OW4FX5TS.js} +3 -1
  42. package/dist/chunk-OW4FX5TS.js.map +1 -0
  43. package/dist/{chunk-MLKGABMK.js → chunk-PZ5AY32C.js} +2 -0
  44. package/dist/chunk-PZ5AY32C.js.map +1 -0
  45. package/dist/{chunk-75ZPJI57.cjs → chunk-Q7SFCCGT.cjs} +2 -0
  46. package/dist/chunk-Q7SFCCGT.cjs.map +1 -0
  47. package/dist/{chunk-PZQDCRPV.cjs → chunk-RE4RPXT2.cjs} +4 -2
  48. package/dist/chunk-RE4RPXT2.cjs.map +1 -0
  49. package/dist/{chunk-6KP2OBYA.cjs → chunk-S37KCGOR.cjs} +88 -86
  50. package/dist/chunk-S37KCGOR.cjs.map +1 -0
  51. package/dist/{chunk-RG473F6Y.js → chunk-SQ7KKIH3.js} +5 -3
  52. package/dist/chunk-SQ7KKIH3.js.map +1 -0
  53. package/dist/{chunk-GHC4YV6R.js → chunk-TRWPUPGD.js} +3 -1
  54. package/dist/chunk-TRWPUPGD.js.map +1 -0
  55. package/dist/{chunk-6T5JUKOQ.js → chunk-TXAQU2XN.js} +4 -2
  56. package/dist/chunk-TXAQU2XN.js.map +1 -0
  57. package/dist/{chunk-ZYAFP2AV.js → chunk-UVOSITKU.js} +6 -4
  58. package/dist/chunk-UVOSITKU.js.map +1 -0
  59. package/dist/{chunk-424T5F2J.cjs → chunk-VIGPWTDA.cjs} +9 -7
  60. package/dist/chunk-VIGPWTDA.cjs.map +1 -0
  61. package/dist/{chunk-VTTN2FW3.js → chunk-VOY6MGKA.js} +7 -5
  62. package/dist/chunk-VOY6MGKA.js.map +1 -0
  63. package/dist/{chunk-UEVYOKAH.cjs → chunk-X5SDJOY6.cjs} +60 -58
  64. package/dist/chunk-X5SDJOY6.cjs.map +1 -0
  65. package/dist/{chunk-CRCR3ZUK.js → chunk-Y3J45CVZ.js} +6 -4
  66. package/dist/chunk-Y3J45CVZ.js.map +1 -0
  67. package/dist/{chunk-WBRFIHSF.js → chunk-YS66MFDY.js} +7 -5
  68. package/dist/chunk-YS66MFDY.js.map +1 -0
  69. package/dist/index.cjs +2 -0
  70. package/dist/index.cjs.map +1 -0
  71. package/dist/index.d.ts +1 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +2 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/server/a2a/protocol.d.ts +8 -0
  76. package/dist/server/a2a/protocol.d.ts.map +1 -0
  77. package/dist/server/a2a/store.d.ts +14 -0
  78. package/dist/server/a2a/store.d.ts.map +1 -0
  79. package/dist/server/a2a/tasks.d.ts +20 -0
  80. package/dist/server/a2a/tasks.d.ts.map +1 -0
  81. package/dist/server/handlers/a2a.cjs +9 -7
  82. package/dist/server/handlers/a2a.cjs.map +1 -0
  83. package/dist/server/handlers/a2a.d.ts +66 -6
  84. package/dist/server/handlers/a2a.d.ts.map +1 -0
  85. package/dist/server/handlers/a2a.js +3 -1
  86. package/dist/server/handlers/a2a.js.map +1 -0
  87. package/dist/server/handlers/agents.cjs +10 -8
  88. package/dist/server/handlers/agents.cjs.map +1 -0
  89. package/dist/server/handlers/agents.d.ts +81 -7
  90. package/dist/server/handlers/agents.d.ts.map +1 -0
  91. package/dist/server/handlers/agents.js +3 -1
  92. package/dist/server/handlers/agents.js.map +1 -0
  93. package/dist/server/handlers/error.cjs +4 -2
  94. package/dist/server/handlers/error.cjs.map +1 -0
  95. package/dist/server/handlers/error.d.ts +2 -1
  96. package/dist/server/handlers/error.d.ts.map +1 -0
  97. package/dist/server/handlers/error.js +3 -1
  98. package/dist/server/handlers/error.js.map +1 -0
  99. package/dist/server/handlers/legacyWorkflows.cjs +13 -11
  100. package/dist/server/handlers/legacyWorkflows.cjs.map +1 -0
  101. package/dist/server/handlers/legacyWorkflows.d.ts +59 -10
  102. package/dist/server/handlers/legacyWorkflows.d.ts.map +1 -0
  103. package/dist/server/handlers/legacyWorkflows.js +3 -1
  104. package/dist/server/handlers/legacyWorkflows.js.map +1 -0
  105. package/dist/server/handlers/logs.cjs +6 -4
  106. package/dist/server/handlers/logs.cjs.map +1 -0
  107. package/dist/server/handlers/logs.d.ts +34 -3
  108. package/dist/server/handlers/logs.d.ts.map +1 -0
  109. package/dist/server/handlers/logs.js +3 -1
  110. package/dist/server/handlers/logs.js.map +1 -0
  111. package/dist/server/handlers/memory.cjs +17 -15
  112. package/dist/server/handlers/memory.cjs.map +1 -0
  113. package/dist/server/handlers/memory.d.ts +113 -14
  114. package/dist/server/handlers/memory.d.ts.map +1 -0
  115. package/dist/server/handlers/memory.js +3 -1
  116. package/dist/server/handlers/memory.js.map +1 -0
  117. package/dist/server/handlers/network.cjs +7 -5
  118. package/dist/server/handlers/network.cjs.map +1 -0
  119. package/dist/server/handlers/network.d.ts +50 -4
  120. package/dist/server/handlers/network.d.ts.map +1 -0
  121. package/dist/server/handlers/network.js +3 -1
  122. package/dist/server/handlers/network.js.map +1 -0
  123. package/dist/server/handlers/scores.cjs +9 -7
  124. package/dist/server/handlers/scores.cjs.map +1 -0
  125. package/dist/server/handlers/scores.d.ts +49 -6
  126. package/dist/server/handlers/scores.d.ts.map +1 -0
  127. package/dist/server/handlers/scores.js +3 -1
  128. package/dist/server/handlers/scores.js.map +1 -0
  129. package/dist/server/handlers/telemetry.cjs +5 -3
  130. package/dist/server/handlers/telemetry.cjs.map +1 -0
  131. package/dist/server/handlers/telemetry.d.ts +32 -2
  132. package/dist/server/handlers/telemetry.d.ts.map +1 -0
  133. package/dist/server/handlers/telemetry.js +3 -1
  134. package/dist/server/handlers/telemetry.js.map +1 -0
  135. package/dist/server/handlers/tools.cjs +7 -5
  136. package/dist/server/handlers/tools.cjs.map +1 -0
  137. package/dist/server/handlers/tools.d.ts +21 -4
  138. package/dist/server/handlers/tools.d.ts.map +1 -0
  139. package/dist/server/handlers/tools.js +3 -1
  140. package/dist/server/handlers/tools.js.map +1 -0
  141. package/dist/server/handlers/utils.cjs +4 -2
  142. package/dist/server/handlers/utils.cjs.map +1 -0
  143. package/dist/server/handlers/utils.d.ts +2 -1
  144. package/dist/server/handlers/utils.d.ts.map +1 -0
  145. package/dist/server/handlers/utils.js +3 -1
  146. package/dist/server/handlers/utils.js.map +1 -0
  147. package/dist/server/handlers/vNextNetwork.cjs +25 -23
  148. package/dist/server/handlers/vNextNetwork.cjs.map +1 -0
  149. package/dist/server/handlers/vNextNetwork.d.ts +179 -6
  150. package/dist/server/handlers/vNextNetwork.d.ts.map +1 -0
  151. package/dist/server/handlers/vNextNetwork.js +6 -4
  152. package/dist/server/handlers/vNextNetwork.js.map +1 -0
  153. package/dist/server/handlers/vector.cjs +9 -7
  154. package/dist/server/handlers/vector.cjs.map +1 -0
  155. package/dist/server/handlers/vector.d.ts +51 -6
  156. package/dist/server/handlers/vector.d.ts.map +1 -0
  157. package/dist/server/handlers/vector.js +3 -1
  158. package/dist/server/handlers/vector.js.map +1 -0
  159. package/dist/server/handlers/voice.cjs +7 -5
  160. package/dist/server/handlers/voice.cjs.map +1 -0
  161. package/dist/server/handlers/voice.d.ts +39 -4
  162. package/dist/server/handlers/voice.d.ts.map +1 -0
  163. package/dist/server/handlers/voice.js +3 -1
  164. package/dist/server/handlers/voice.js.map +1 -0
  165. package/dist/server/handlers/workflows.cjs +18 -16
  166. package/dist/server/handlers/workflows.cjs.map +1 -0
  167. package/dist/server/handlers/workflows.d.ts +88 -15
  168. package/dist/server/handlers/workflows.d.ts.map +1 -0
  169. package/dist/server/handlers/workflows.js +3 -1
  170. package/dist/server/handlers/workflows.js.map +1 -0
  171. package/dist/server/handlers.cjs +26 -24
  172. package/dist/server/handlers.cjs.map +1 -0
  173. package/dist/server/handlers.d.ts +13 -12
  174. package/dist/server/handlers.d.ts.map +1 -0
  175. package/dist/server/handlers.js +14 -12
  176. package/dist/server/handlers.js.map +1 -0
  177. package/dist/server/http-exception.d.ts +87 -0
  178. package/dist/server/http-exception.d.ts.map +1 -0
  179. package/dist/server/types.d.ts +10 -0
  180. package/dist/server/types.d.ts.map +1 -0
  181. package/package.json +4 -4
  182. package/dist/_tsup-dts-rollup.d.cts +0 -1260
  183. package/dist/_tsup-dts-rollup.d.ts +0 -1260
  184. package/dist/index.d.cts +0 -1
  185. package/dist/server/handlers/a2a.d.cts +0 -6
  186. package/dist/server/handlers/agents.d.cts +0 -7
  187. package/dist/server/handlers/error.d.cts +0 -1
  188. package/dist/server/handlers/legacyWorkflows.d.cts +0 -10
  189. package/dist/server/handlers/logs.d.cts +0 -3
  190. package/dist/server/handlers/memory.d.cts +0 -14
  191. package/dist/server/handlers/network.d.cts +0 -4
  192. package/dist/server/handlers/scores.d.cts +0 -6
  193. package/dist/server/handlers/telemetry.d.cts +0 -2
  194. package/dist/server/handlers/tools.d.cts +0 -4
  195. package/dist/server/handlers/utils.d.cts +0 -1
  196. package/dist/server/handlers/vNextNetwork.d.cts +0 -6
  197. package/dist/server/handlers/vector.d.cts +0 -6
  198. package/dist/server/handlers/voice.d.cts +0 -4
  199. package/dist/server/handlers/workflows.d.cts +0 -15
  200. package/dist/server/handlers.d.cts +0 -12
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/vector.ts"],"names":[],"mappings":"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","file":"chunk-G7NVCO5M.js","sourcesContent":["import type { MastraVector, QueryResult, IndexStats } from '@mastra/core/vector';\nimport { HTTPException } from '../http-exception';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\n\ninterface VectorContext extends Context {\n vectorName?: string;\n}\n\ninterface UpsertRequest {\n indexName: string;\n vectors: number[][];\n metadata?: Record<string, any>[];\n ids?: string[];\n}\n\ninterface CreateIndexRequest {\n indexName: string;\n dimension: number;\n metric?: 'cosine' | 'euclidean' | 'dotproduct';\n}\n\ninterface QueryRequest {\n indexName: string;\n queryVector: number[];\n topK?: number;\n filter?: Record<string, any>;\n includeVector?: boolean;\n}\n\nfunction getVector(mastra: Context['mastra'], vectorName?: string): MastraVector {\n if (!vectorName) {\n throw new HTTPException(400, { message: 'Vector name is required' });\n }\n\n const vector = mastra.getVector(vectorName);\n if (!vector) {\n throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });\n }\n\n return vector;\n}\n\n// Upsert vectors\nexport async function upsertVectors({ mastra, vectorName, index }: VectorContext & { index: UpsertRequest }) {\n try {\n if (!index?.indexName || !index?.vectors || !Array.isArray(index.vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert(index);\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n}\n\n// Create index\nexport async function createIndex({\n mastra,\n vectorName,\n index,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { index: CreateIndexRequest }) {\n try {\n const { indexName, dimension, metric } = index;\n\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n}\n\n// Query vectors\nexport async function queryVectors({\n mastra,\n vectorName,\n query,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { query: QueryRequest }) {\n try {\n if (!query?.indexName || !query?.queryVector || !Array.isArray(query.queryVector)) {\n throw new HTTPException(400, { message: 'Invalid request query. indexName and queryVector array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query(query);\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n}\n\n// List indexes\nexport async function listIndexes({ mastra, vectorName }: Pick<VectorContext, 'mastra' | 'vectorName'>) {\n try {\n const vector = getVector(mastra, vectorName);\n\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n}\n\n// Describe index\nexport async function describeIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n}\n\n// Delete index\nexport async function deleteIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunk75ZPJI57_cjs = require('./chunk-75ZPJI57.cjs');
3
+ var chunkQ7SFCCGT_cjs = require('./chunk-Q7SFCCGT.cjs');
4
4
  var a2a = require('@mastra/core/a2a');
5
5
  var zod = require('zod');
6
6
 
7
7
  // src/server/handlers/a2a.ts
8
8
  var a2a_exports = {};
9
- chunk75ZPJI57_cjs.__export(a2a_exports, {
9
+ chunkQ7SFCCGT_cjs.__export(a2a_exports, {
10
10
  getAgentCardByIdHandler: () => getAgentCardByIdHandler,
11
11
  getAgentExecutionHandler: () => getAgentExecutionHandler,
12
12
  handleTaskCancel: () => handleTaskCancel,
@@ -510,3 +510,5 @@ exports.handleTaskCancel = handleTaskCancel;
510
510
  exports.handleTaskGet = handleTaskGet;
511
511
  exports.handleTaskSend = handleTaskSend;
512
512
  exports.handleTaskSendSubscribe = handleTaskSendSubscribe;
513
+ //# sourceMappingURL=chunk-GASWM5HJ.cjs.map
514
+ //# sourceMappingURL=chunk-GASWM5HJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/a2a.ts","../src/server/a2a/protocol.ts","../src/server/a2a/store.ts","../src/server/a2a/tasks.ts"],"names":["__export","A2AError","z","result"],"mappings":"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","file":"chunk-GASWM5HJ.cjs","sourcesContent":["import { A2AError } from '@mastra/core/a2a';\nimport type { TaskSendParams, TaskQueryParams, TaskIdParams, AgentCard, TaskStatus, TaskState } from '@mastra/core/a2a';\nimport type { Agent } from '@mastra/core/agent';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { RuntimeContext } from '@mastra/core/runtime-context';\nimport { z } from 'zod';\nimport { convertToCoreMessage, normalizeError, createSuccessResponse, createErrorResponse } from '../a2a/protocol';\nimport { InMemoryTaskStore } from '../a2a/store';\nimport { applyUpdateToTaskAndHistory, createTaskContext, loadOrCreateTaskAndHistory } from '../a2a/tasks';\nimport type { Context } from '../types';\n\nconst taskSendParamsSchema = z.object({\n id: z.string().min(1, 'Invalid or missing task ID (params.id).'),\n message: z.object({\n parts: z.array(\n z.object({\n type: z.enum(['text']),\n text: z.string(),\n }),\n ),\n }),\n});\n\nexport async function getAgentCardByIdHandler({\n mastra,\n agentId,\n executionUrl = `/a2a/${agentId}`,\n provider = {\n organization: 'Mastra',\n url: 'https://mastra.ai',\n },\n version = '1.0',\n runtimeContext,\n}: Context & {\n runtimeContext: RuntimeContext;\n agentId: keyof ReturnType<typeof mastra.getAgents>;\n executionUrl?: string;\n version?: string;\n provider?: {\n organization: string;\n url: string;\n };\n}): Promise<AgentCard> {\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new Error(`Agent with ID ${agentId} not found`);\n }\n\n const [instructions, tools] = await Promise.all([\n agent.getInstructions({ runtimeContext }),\n agent.getTools({ runtimeContext }),\n ]);\n\n // Extract agent information to create the AgentCard\n const agentCard: AgentCard = {\n name: agent.id || agentId,\n description: instructions,\n url: executionUrl,\n provider,\n version,\n capabilities: {\n streaming: true, // All agents support streaming\n pushNotifications: false,\n stateTransitionHistory: false,\n },\n defaultInputModes: ['text'],\n defaultOutputModes: ['text'],\n // Convert agent tools to skills format for A2A protocol\n skills: Object.entries(tools).map(([toolId, tool]) => ({\n id: toolId,\n name: toolId,\n description: tool.description || `Tool: ${toolId}`,\n // Optional fields\n tags: ['tool'],\n })),\n };\n\n return agentCard;\n}\n\nfunction validateTaskSendParams(params: TaskSendParams) {\n try {\n taskSendParamsSchema.parse(params);\n } catch (error) {\n if (error instanceof z.ZodError) {\n throw A2AError.invalidParams((error as z.ZodError).errors[0]!.message);\n }\n\n throw error;\n }\n}\n\nexport async function handleTaskSend({\n requestId,\n params,\n taskStore,\n agent,\n agentId,\n logger,\n runtimeContext,\n}: {\n requestId: string;\n params: TaskSendParams;\n taskStore: InMemoryTaskStore;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n runtimeContext: RuntimeContext;\n}) {\n validateTaskSendParams(params);\n\n const { id: taskId, message, sessionId, metadata } = params;\n\n // Load or create task AND history\n let currentData = await loadOrCreateTaskAndHistory({\n taskId,\n taskStore,\n agentId,\n message,\n sessionId,\n metadata,\n });\n\n // Use the new TaskContext definition, passing history\n const context = createTaskContext({\n task: currentData.task,\n userMessage: message,\n history: currentData.history,\n activeCancellations: taskStore.activeCancellations,\n });\n\n try {\n const { text } = await agent.generate([convertToCoreMessage(message)], {\n runId: taskId,\n runtimeContext,\n });\n\n currentData = applyUpdateToTaskAndHistory(currentData, {\n state: 'completed',\n message: {\n role: 'agent',\n parts: [\n {\n type: 'text',\n text: text,\n },\n ],\n },\n });\n\n await taskStore.save({ agentId, data: currentData });\n context.task = currentData.task;\n } catch (handlerError) {\n // If handler throws, apply 'failed' status, save, and rethrow\n const failureStatusUpdate: Omit<TaskStatus, 'timestamp'> = {\n state: 'failed',\n message: {\n role: 'agent',\n parts: [\n {\n type: 'text',\n text: `Handler failed: ${handlerError instanceof Error ? handlerError.message : String(handlerError)}`,\n },\n ],\n },\n };\n currentData = applyUpdateToTaskAndHistory(currentData, failureStatusUpdate);\n\n try {\n await taskStore.save({ agentId, data: currentData });\n } catch (saveError) {\n // @ts-expect-error saveError is an unknown error\n logger?.error(`Failed to save task ${taskId} after handler error:`, saveError?.message);\n }\n\n return normalizeError(handlerError, requestId, taskId, logger); // Rethrow original error\n }\n\n // The loop finished, send the final task state\n return createSuccessResponse(requestId, currentData.task);\n}\n\nexport async function handleTaskGet({\n requestId,\n taskStore,\n agentId,\n taskId,\n}: {\n requestId: string;\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n}) {\n const task = await taskStore.load({ agentId, taskId });\n\n if (!task) {\n throw A2AError.taskNotFound(taskId);\n }\n\n return createSuccessResponse(requestId, task);\n}\n\nexport async function* handleTaskSendSubscribe({\n requestId,\n params,\n taskStore,\n agent,\n agentId,\n logger,\n runtimeContext,\n}: {\n requestId: string;\n params: TaskSendParams;\n taskStore: InMemoryTaskStore;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n runtimeContext: RuntimeContext;\n}) {\n yield createSuccessResponse(requestId, {\n state: 'working',\n message: {\n role: 'agent',\n parts: [{ type: 'text', text: 'Generating response...' }],\n },\n });\n\n let result;\n try {\n result = await handleTaskSend({\n requestId,\n params,\n taskStore,\n agent,\n agentId,\n runtimeContext,\n logger,\n });\n } catch (err) {\n if (!(err instanceof A2AError)) {\n throw err;\n }\n\n result = createErrorResponse(requestId, err.toJSONRPCError());\n }\n\n yield result;\n}\n\nexport async function handleTaskCancel({\n requestId,\n taskStore,\n agentId,\n taskId,\n logger,\n}: {\n requestId: string;\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n logger?: IMastraLogger;\n}) {\n // Load task and history\n let data = await taskStore.load({\n agentId,\n taskId,\n });\n\n if (!data) {\n throw A2AError.taskNotFound(taskId);\n }\n\n // Check if cancelable (not already in a final state)\n const finalStates: TaskState[] = ['completed', 'failed', 'canceled'];\n\n if (finalStates.includes(data.task.status.state)) {\n logger?.info(`Task ${taskId} already in final state ${data.task.status.state}, cannot cancel.`);\n return createSuccessResponse(requestId, data.task);\n }\n\n // Signal cancellation\n taskStore.activeCancellations.add(taskId);\n\n // Apply 'canceled' state update\n const cancelUpdate: Omit<TaskStatus, 'timestamp'> = {\n state: 'canceled',\n message: {\n role: 'agent',\n parts: [{ type: 'text', text: 'Task cancelled by request.' }],\n },\n };\n\n data = applyUpdateToTaskAndHistory(data, cancelUpdate);\n\n // Save the updated state\n await taskStore.save({ agentId, data });\n\n // Remove from active cancellations *after* saving\n taskStore.activeCancellations.delete(taskId);\n\n // Return the updated task object\n return createSuccessResponse(requestId, data.task);\n}\n\nexport async function getAgentExecutionHandler({\n requestId,\n mastra,\n agentId,\n runtimeContext,\n method,\n params,\n taskStore = new InMemoryTaskStore(),\n logger,\n}: Context & {\n requestId: string;\n runtimeContext: RuntimeContext;\n agentId: string;\n method: 'tasks/send' | 'tasks/sendSubscribe' | 'tasks/get' | 'tasks/cancel';\n params: TaskSendParams | TaskQueryParams | TaskIdParams;\n taskStore?: InMemoryTaskStore;\n logger?: IMastraLogger;\n}): Promise<any> {\n const agent = mastra.getAgent(agentId);\n\n let taskId: string | undefined; // For error context\n\n try {\n // Attempt to get task ID early for error context. Cast params to any to access id.\n // Proper validation happens within specific handlers.\n taskId = params.id;\n\n // 2. Route based on method\n switch (method) {\n case 'tasks/send': {\n const result = await handleTaskSend({\n requestId,\n params: params as TaskSendParams,\n taskStore,\n agent,\n agentId,\n runtimeContext,\n });\n return result;\n }\n case 'tasks/sendSubscribe':\n const result = await handleTaskSendSubscribe({\n requestId,\n taskStore,\n params: params as TaskSendParams,\n agent,\n agentId,\n runtimeContext,\n });\n return result;\n\n case 'tasks/get': {\n const result = await handleTaskGet({\n requestId,\n taskStore,\n agentId,\n taskId,\n });\n\n return result;\n }\n case 'tasks/cancel': {\n const result = await handleTaskCancel({\n requestId,\n taskStore,\n agentId,\n taskId,\n });\n\n return result;\n }\n default:\n throw A2AError.methodNotFound(method);\n }\n } catch (error) {\n if (error instanceof A2AError && taskId && !error.taskId) {\n error.taskId = taskId; // Add task ID context if missing\n }\n\n return normalizeError(error, requestId, taskId, logger);\n }\n}\n","import { A2AError } from '@mastra/core/a2a';\n\nimport type { JSONRPCError, JSONRPCResponse, Message, Part } from '@mastra/core/a2a';\nimport type { CoreMessage } from '@mastra/core/llm';\nimport type { IMastraLogger } from '@mastra/core/logger';\n\nexport function normalizeError(\n error: any,\n reqId: number | string | null,\n taskId?: string,\n logger?: IMastraLogger,\n): JSONRPCResponse<null, unknown> {\n let a2aError: A2AError;\n if (error instanceof A2AError) {\n a2aError = error;\n } else if (error instanceof Error) {\n // Generic JS error\n a2aError = A2AError.internalError(error.message, { stack: error.stack });\n } else {\n // Unknown error type\n a2aError = A2AError.internalError('An unknown error occurred.', error);\n }\n\n // Ensure Task ID context is present if possible\n if (taskId && !a2aError.taskId) {\n a2aError.taskId = taskId;\n }\n\n logger?.error(`Error processing request (Task: ${a2aError.taskId ?? 'N/A'}, ReqID: ${reqId ?? 'N/A'}):`, a2aError);\n\n return createErrorResponse(reqId, a2aError.toJSONRPCError());\n}\n\nexport function createErrorResponse(\n id: number | string | null,\n error: JSONRPCError<unknown>,\n): JSONRPCResponse<null, unknown> {\n // For errors, ID should be the same as request ID, or null if that couldn't be determined\n return {\n jsonrpc: '2.0',\n id: id, // Can be null if request ID was invalid/missing\n error: error,\n };\n}\n\nexport function createSuccessResponse<T>(id: number | string | null, result: T): JSONRPCResponse<T> {\n if (!id) {\n // This shouldn't happen for methods that expect a response, but safeguard\n throw A2AError.internalError('Cannot create success response for null ID.');\n }\n\n return {\n jsonrpc: '2.0',\n id: id,\n result: result,\n };\n}\n\nexport function convertToCoreMessage(message: Message): CoreMessage {\n return {\n role: message.role === 'user' ? 'user' : 'assistant',\n content: message.parts.map(msg => convertToCoreMessagePart(msg)),\n };\n}\n\nfunction convertToCoreMessagePart(part: Part) {\n switch (part.type) {\n case 'text':\n return {\n type: 'text',\n text: part.text,\n } as const;\n case 'file':\n return {\n type: 'file',\n data: new URL(part.file.uri!),\n mimeType: part.file.mimeType!,\n } as const;\n case 'data':\n throw new Error('Data parts are not supported in core messages');\n }\n}\n","import type { TaskAndHistory } from '@mastra/core/a2a';\n\nexport class InMemoryTaskStore {\n private store: Map<string, TaskAndHistory> = new Map();\n public activeCancellations = new Set<string>();\n\n async load({ agentId, taskId }: { agentId: string; taskId: string }): Promise<TaskAndHistory | null> {\n const entry = this.store.get(`${agentId}-${taskId}`);\n\n if (!entry) {\n return null;\n }\n\n // Return copies to prevent external mutation\n return { task: { ...entry.task }, history: [...entry.history] };\n }\n\n async save({ agentId, data }: { agentId: string; data: TaskAndHistory }): Promise<void> {\n // Store copies to prevent internal mutation if caller reuses objects\n const key = `${agentId}-${data.task.id}`;\n if (!data.task.id) {\n throw new Error('Task ID is required');\n }\n this.store.set(key, {\n task: { ...data.task },\n history: [...data.history],\n });\n }\n}\n","import type { Message, TaskContext, TaskAndHistory, Task, TaskState, TaskStatus, Artifact } from '@mastra/core/a2a';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { InMemoryTaskStore } from './store';\n\nfunction isTaskStatusUpdate(update: TaskStatus | Artifact): update is Omit<TaskStatus, 'timestamp'> {\n return 'state' in update && !('parts' in update);\n}\n\nfunction isArtifactUpdate(update: TaskStatus | Artifact): update is Artifact {\n return 'parts' in update;\n}\n\nexport function applyUpdateToTaskAndHistory(\n current: TaskAndHistory,\n update: Omit<TaskStatus, 'timestamp'> | Artifact,\n): TaskAndHistory {\n let newTask = structuredClone(current.task);\n let newHistory = structuredClone(current.history);\n\n if (isTaskStatusUpdate(update)) {\n // Merge status update\n newTask.status = {\n ...newTask.status, // Keep existing properties if not overwritten\n ...update, // Apply updates\n timestamp: new Date().toISOString(),\n };\n\n // If the update includes an agent message, add it to history\n if (update.message?.role === 'agent') {\n newHistory.push(update.message);\n }\n } else if (isArtifactUpdate(update)) {\n // Handle artifact update\n if (!newTask.artifacts) {\n newTask.artifacts = [];\n } else {\n // Ensure we're working with a copy of the artifacts array\n newTask.artifacts = [...newTask.artifacts];\n }\n\n const existingIndex = update.index ?? -1; // Use index if provided\n let replaced = false;\n\n if (existingIndex >= 0 && existingIndex < newTask.artifacts.length) {\n const existingArtifact = newTask.artifacts[existingIndex];\n if (update.append) {\n // Create a deep copy for modification to avoid mutating original\n const appendedArtifact = JSON.parse(JSON.stringify(existingArtifact));\n appendedArtifact.parts.push(...update.parts);\n if (update.metadata) {\n appendedArtifact.metadata = {\n ...(appendedArtifact.metadata || {}),\n ...update.metadata,\n };\n }\n if (update.lastChunk !== undefined) appendedArtifact.lastChunk = update.lastChunk;\n if (update.description) appendedArtifact.description = update.description;\n newTask.artifacts[existingIndex] = appendedArtifact; // Replace with appended version\n replaced = true;\n } else {\n // Overwrite artifact at index (with a copy of the update)\n newTask.artifacts[existingIndex] = { ...update };\n replaced = true;\n }\n } else if (update.name) {\n const namedIndex = newTask.artifacts.findIndex(a => a.name === update.name);\n if (namedIndex >= 0) {\n newTask.artifacts[namedIndex] = { ...update }; // Replace by name (with copy)\n replaced = true;\n }\n }\n\n if (!replaced) {\n newTask.artifacts.push({ ...update }); // Add as a new artifact (copy)\n // Sort if indices are present\n if (newTask.artifacts.some(a => a.index !== undefined)) {\n newTask.artifacts.sort((a, b) => (a.index ?? 0) - (b.index ?? 0));\n }\n }\n }\n\n return { task: newTask, history: newHistory };\n}\n\nexport async function loadOrCreateTaskAndHistory({\n agentId,\n taskId,\n taskStore,\n message,\n sessionId,\n metadata,\n logger,\n}: {\n agentId: string;\n taskId: string;\n taskStore: InMemoryTaskStore;\n message: Message;\n sessionId?: string | null;\n metadata?: Record<string, unknown> | null;\n logger?: IMastraLogger;\n}): Promise<TaskAndHistory> {\n const data = await taskStore.load({ agentId, taskId });\n\n // Create new task if none exists\n if (!data) {\n const initialTask: Task = {\n id: taskId,\n sessionId: sessionId,\n status: {\n state: 'submitted',\n timestamp: new Date().toISOString(),\n message: null,\n },\n artifacts: [],\n metadata: metadata,\n };\n\n const initialData = {\n task: initialTask,\n history: [message],\n };\n\n logger?.info(`[Task ${taskId}] Created new task and history.`);\n await taskStore.save({ agentId, data: initialData });\n\n return initialData;\n }\n\n // Handle existing task\n logger?.info(`[Task ${taskId}] Loaded existing task and history.`);\n\n // Add message to history and prepare updated data\n let updatedData = {\n task: data.task,\n history: [...data.history, message],\n };\n\n // Handle state transitions\n const { status } = data.task;\n const finalStates: TaskState[] = ['completed', 'failed', 'canceled'];\n\n if (finalStates.includes(status.state)) {\n logger?.warn(`[Task ${taskId}] Received message for task in final state ${status.state}. Restarting.`);\n updatedData = applyUpdateToTaskAndHistory(updatedData, {\n state: 'submitted',\n message: null,\n });\n } else if (status.state === 'input-required') {\n logger?.info(`[Task ${taskId}] Changing state from 'input-required' to 'working'.`);\n updatedData = applyUpdateToTaskAndHistory(updatedData, { state: 'working' });\n } else if (status.state === 'working') {\n logger?.warn(`[Task ${taskId}] Received message while already 'working'. Proceeding.`);\n }\n\n await taskStore.save({ agentId, data: updatedData });\n\n return {\n task: { ...updatedData.task },\n history: [...updatedData.history],\n };\n}\n\nexport function createTaskContext({\n task,\n userMessage,\n history,\n activeCancellations,\n}: {\n task: Task;\n userMessage: Message;\n history: Message[];\n activeCancellations: Set<string>;\n}): TaskContext {\n return {\n task: structuredClone(task),\n userMessage,\n history: structuredClone(history),\n isCancelled: () => activeCancellations.has(task.id),\n };\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { validateBody } from './chunk-RSEO4XPX.js';
2
- import { handleError } from './chunk-LF7P5PLR.js';
3
- import { HTTPException } from './chunk-LCM566I4.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-PZ5AY32C.js';
5
5
  import { Readable } from 'stream';
6
6
 
7
7
  // src/server/handlers/voice.ts
@@ -110,3 +110,5 @@ async function getListenerHandler({ mastra, agentId }) {
110
110
  }
111
111
 
112
112
  export { generateSpeechHandler, getListenerHandler, getSpeakersHandler, transcribeSpeechHandler, voice_exports };
113
+ //# sourceMappingURL=chunk-HWHKM67I.js.map
114
+ //# sourceMappingURL=chunk-HWHKM67I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/voice.ts"],"names":[],"mappings":"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","file":"chunk-HWHKM67I.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"]}
@@ -1,7 +1,7 @@
1
- import { validateBody } from './chunk-RSEO4XPX.js';
2
- import { handleError } from './chunk-LF7P5PLR.js';
3
- import { HTTPException } from './chunk-LCM566I4.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-PZ5AY32C.js';
5
5
  import { generateEmptyFromSchema } from '@mastra/core';
6
6
 
7
7
  // src/server/handlers/memory.ts
@@ -537,3 +537,5 @@ async function searchMemoryHandler({
537
537
  }
538
538
 
539
539
  export { createThreadHandler, deleteMessagesHandler, deleteThreadHandler, getMemoryConfigHandler, getMemoryStatusHandler, getMessagesHandler, getMessagesPaginatedHandler, getThreadByIdHandler, getThreadsHandler, getWorkingMemoryHandler, memory_exports, saveMessagesHandler, searchMemoryHandler, updateThreadHandler, updateWorkingMemoryHandler };
540
+ //# sourceMappingURL=chunk-HXIOPAHT.js.map
541
+ //# sourceMappingURL=chunk-HXIOPAHT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/memory.ts"],"names":[],"mappings":"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","file":"chunk-HXIOPAHT.js","sourcesContent":["import { generateEmptyFromSchema } from '@mastra/core';\nimport type { StorageGetMessagesArg } from '@mastra/core';\nimport type { RuntimeContext } from '@mastra/core/di';\nimport type { MastraMemory } from '@mastra/core/memory';\nimport type { ThreadSortOptions } from '@mastra/core/storage';\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 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"]}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkPZQDCRPV_cjs = require('./chunk-PZQDCRPV.cjs');
4
- var chunk2KZFMI6P_cjs = require('./chunk-2KZFMI6P.cjs');
5
- var chunk75ZPJI57_cjs = require('./chunk-75ZPJI57.cjs');
3
+ var chunkRE4RPXT2_cjs = require('./chunk-RE4RPXT2.cjs');
4
+ var chunk7NADHFD2_cjs = require('./chunk-7NADHFD2.cjs');
5
+ var chunkQ7SFCCGT_cjs = require('./chunk-Q7SFCCGT.cjs');
6
6
 
7
7
  // src/server/handlers/telemetry.ts
8
8
  var telemetry_exports = {};
9
- chunk75ZPJI57_cjs.__export(telemetry_exports, {
9
+ chunkQ7SFCCGT_cjs.__export(telemetry_exports, {
10
10
  getTelemetryHandler: () => getTelemetryHandler,
11
11
  storeTelemetryHandler: () => storeTelemetryHandler
12
12
  });
@@ -15,13 +15,13 @@ async function getTelemetryHandler({ mastra, body }) {
15
15
  const telemetry = mastra.getTelemetry();
16
16
  const storage = mastra.getStorage();
17
17
  if (!telemetry) {
18
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Telemetry is not initialized" });
18
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Telemetry is not initialized" });
19
19
  }
20
20
  if (!storage) {
21
21
  return [];
22
22
  }
23
23
  if (!body) {
24
- throw new chunk2KZFMI6P_cjs.HTTPException(400, { message: "Body is required" });
24
+ throw new chunk7NADHFD2_cjs.HTTPException(400, { message: "Body is required" });
25
25
  }
26
26
  const { name, scope, page, perPage, attribute, fromDate, toDate } = body;
27
27
  const attributes = attribute ? Object.fromEntries(
@@ -41,7 +41,7 @@ async function getTelemetryHandler({ mastra, body }) {
41
41
  });
42
42
  return traces;
43
43
  } catch (error2) {
44
- return chunkPZQDCRPV_cjs.handleError(error2, "Error getting telemetry");
44
+ return chunkRE4RPXT2_cjs.handleError(error2, "Error getting telemetry");
45
45
  }
46
46
  }
47
47
  async function storeTelemetryHandler({ mastra, body }) {
@@ -143,3 +143,5 @@ async function storeTelemetryHandler({ mastra, body }) {
143
143
  exports.getTelemetryHandler = getTelemetryHandler;
144
144
  exports.storeTelemetryHandler = storeTelemetryHandler;
145
145
  exports.telemetry_exports = telemetry_exports;
146
+ //# sourceMappingURL=chunk-ILCWPBYQ.cjs.map
147
+ //# sourceMappingURL=chunk-ILCWPBYQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/telemetry.ts"],"names":["__export","HTTPException","error","handleError","acc"],"mappings":"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","file":"chunk-ILCWPBYQ.cjs","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"]}