@mastra/core 0.17.2-alpha.0 → 0.18.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/agent/agent.d.ts +7 -4
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/agent.types.d.ts +5 -1
  5. package/dist/agent/agent.types.d.ts.map +1 -1
  6. package/dist/agent/index.cjs +11 -11
  7. package/dist/agent/index.js +2 -2
  8. package/dist/agent/input-processor/index.cjs +6 -6
  9. package/dist/agent/input-processor/index.js +1 -1
  10. package/dist/agent/types.d.ts +8 -6
  11. package/dist/agent/types.d.ts.map +1 -1
  12. package/dist/agent/workflows/prepare-stream/index.d.ts +5 -2
  13. package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
  14. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts +2 -1
  15. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  16. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts +2 -1
  17. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts.map +1 -1
  18. package/dist/agent/workflows/prepare-stream/stream-step.d.ts +3 -1
  19. package/dist/agent/workflows/prepare-stream/stream-step.d.ts.map +1 -1
  20. package/dist/ai-tracing/index.cjs +32 -32
  21. package/dist/ai-tracing/index.js +1 -1
  22. package/dist/{chunk-R655GQ3Z.js → chunk-2ZSMA4EM.js} +54 -48
  23. package/dist/chunk-2ZSMA4EM.js.map +1 -0
  24. package/dist/{chunk-RF32ODBL.js → chunk-6NZTZOEI.js} +22 -47
  25. package/dist/chunk-6NZTZOEI.js.map +1 -0
  26. package/dist/{chunk-XSZYAAUC.js → chunk-7CF3FKP3.js} +10 -40
  27. package/dist/chunk-7CF3FKP3.js.map +1 -0
  28. package/dist/{chunk-MTJXEZUV.cjs → chunk-AEYCHF2U.cjs} +20 -10
  29. package/dist/chunk-AEYCHF2U.cjs.map +1 -0
  30. package/dist/{chunk-RAQ4VAQ4.js → chunk-AR76DMZQ.js} +10 -3
  31. package/dist/chunk-AR76DMZQ.js.map +1 -0
  32. package/dist/{chunk-DK7N45JH.cjs → chunk-CBV6EVJK.cjs} +69 -62
  33. package/dist/chunk-CBV6EVJK.cjs.map +1 -0
  34. package/dist/chunk-F7GI2OYP.js +3 -0
  35. package/dist/chunk-F7GI2OYP.js.map +1 -0
  36. package/dist/chunk-FVIT6JZ5.cjs +4 -0
  37. package/dist/chunk-FVIT6JZ5.cjs.map +1 -0
  38. package/dist/{chunk-N4YXCARN.cjs → chunk-GGN63GU5.cjs} +8 -7
  39. package/dist/chunk-GGN63GU5.cjs.map +1 -0
  40. package/dist/{chunk-GWSHTBQY.js → chunk-GMQUHK3L.js} +18 -8
  41. package/dist/chunk-GMQUHK3L.js.map +1 -0
  42. package/dist/{chunk-HBOOZ4W3.cjs → chunk-JRTFV63C.cjs} +27 -52
  43. package/dist/chunk-JRTFV63C.cjs.map +1 -0
  44. package/dist/{chunk-L77INLRG.js → chunk-JXRAFE3E.js} +3 -3
  45. package/dist/{chunk-L77INLRG.js.map → chunk-JXRAFE3E.js.map} +1 -1
  46. package/dist/{chunk-WYBYCVS3.cjs → chunk-L7Z3C5XG.cjs} +4 -4
  47. package/dist/{chunk-WYBYCVS3.cjs.map → chunk-L7Z3C5XG.cjs.map} +1 -1
  48. package/dist/{chunk-PRVMPHNQ.cjs → chunk-OVVKYARB.cjs} +10 -3
  49. package/dist/chunk-OVVKYARB.cjs.map +1 -0
  50. package/dist/{chunk-TD2CGJTC.cjs → chunk-QIXLPKMN.cjs} +4 -4
  51. package/dist/{chunk-TD2CGJTC.cjs.map → chunk-QIXLPKMN.cjs.map} +1 -1
  52. package/dist/{chunk-CIPXOPLS.js → chunk-SHFLPFKN.js} +3 -3
  53. package/dist/{chunk-CIPXOPLS.js.map → chunk-SHFLPFKN.js.map} +1 -1
  54. package/dist/{chunk-VRRY6NGC.js → chunk-SQFVIROI.js} +4 -3
  55. package/dist/chunk-SQFVIROI.js.map +1 -0
  56. package/dist/{chunk-RGJ7F32F.cjs → chunk-TJZ4ERV4.cjs} +13 -47
  57. package/dist/chunk-TJZ4ERV4.cjs.map +1 -0
  58. package/dist/{chunk-BZ4AOVOL.cjs → chunk-TRZT7QPJ.cjs} +6 -6
  59. package/dist/{chunk-BZ4AOVOL.cjs.map → chunk-TRZT7QPJ.cjs.map} +1 -1
  60. package/dist/{chunk-BJLIYOUK.js → chunk-TZZFP4EW.js} +3 -3
  61. package/dist/{chunk-BJLIYOUK.js.map → chunk-TZZFP4EW.js.map} +1 -1
  62. package/dist/{chunk-3N57EBJB.cjs → chunk-UMATHB4Q.cjs} +56 -23
  63. package/dist/chunk-UMATHB4Q.cjs.map +1 -0
  64. package/dist/{chunk-JXKSCEDW.js → chunk-USHKSVKL.js} +49 -16
  65. package/dist/chunk-USHKSVKL.js.map +1 -0
  66. package/dist/chunk-WAGAASWE.cjs +46 -0
  67. package/dist/chunk-WAGAASWE.cjs.map +1 -0
  68. package/dist/chunk-X2TVBX7O.js +41 -0
  69. package/dist/chunk-X2TVBX7O.js.map +1 -0
  70. package/dist/{chunk-WOC5SCZF.cjs → chunk-Y5XECV4O.cjs} +4 -4
  71. package/dist/{chunk-WOC5SCZF.cjs.map → chunk-Y5XECV4O.cjs.map} +1 -1
  72. package/dist/{chunk-C7EN3GVU.js → chunk-YDLEEOJ6.js} +3 -3
  73. package/dist/{chunk-C7EN3GVU.js.map → chunk-YDLEEOJ6.js.map} +1 -1
  74. package/dist/index.cjs +48 -44
  75. package/dist/index.cjs.map +1 -1
  76. package/dist/index.js +10 -10
  77. package/dist/index.js.map +1 -1
  78. package/dist/integration/index.cjs +3 -3
  79. package/dist/integration/index.js +1 -1
  80. package/dist/llm/model/model.loop.d.ts +1 -1
  81. package/dist/llm/model/model.loop.d.ts.map +1 -1
  82. package/dist/loop/index.cjs +2 -2
  83. package/dist/loop/index.js +1 -1
  84. package/dist/loop/loop.d.ts +1 -1
  85. package/dist/loop/loop.d.ts.map +1 -1
  86. package/dist/loop/network/index.d.ts +6 -6
  87. package/dist/loop/test-utils/options.d.ts.map +1 -1
  88. package/dist/loop/types.d.ts +10 -1
  89. package/dist/loop/types.d.ts.map +1 -1
  90. package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -1
  91. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  92. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts +1 -1
  93. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
  94. package/dist/loop/workflows/stream.d.ts +1 -1
  95. package/dist/loop/workflows/stream.d.ts.map +1 -1
  96. package/dist/mastra/hooks.d.ts.map +1 -1
  97. package/dist/mastra/index.cjs +2 -2
  98. package/dist/mastra/index.d.ts +3 -0
  99. package/dist/mastra/index.d.ts.map +1 -1
  100. package/dist/mastra/index.js +1 -1
  101. package/dist/memory/index.cjs +4 -4
  102. package/dist/memory/index.js +1 -1
  103. package/dist/memory/memory.d.ts +1 -1
  104. package/dist/memory/memory.d.ts.map +1 -1
  105. package/dist/memory/types.d.ts +27 -0
  106. package/dist/memory/types.d.ts.map +1 -1
  107. package/dist/network/vNext/index.cjs +34 -31
  108. package/dist/network/vNext/index.cjs.map +1 -1
  109. package/dist/network/vNext/index.d.ts +18 -18
  110. package/dist/network/vNext/index.d.ts.map +1 -1
  111. package/dist/network/vNext/index.js +7 -4
  112. package/dist/network/vNext/index.js.map +1 -1
  113. package/dist/processors/index.cjs +10 -10
  114. package/dist/processors/index.js +1 -1
  115. package/dist/relevance/index.cjs +4 -4
  116. package/dist/relevance/index.js +1 -1
  117. package/dist/scores/base.d.ts +24 -1
  118. package/dist/scores/base.d.ts.map +1 -1
  119. package/dist/scores/index.cjs +9 -8
  120. package/dist/scores/index.js +2 -1
  121. package/dist/scores/scoreTraces/index.cjs +442 -0
  122. package/dist/scores/scoreTraces/index.cjs.map +1 -0
  123. package/dist/scores/scoreTraces/index.d.ts +3 -0
  124. package/dist/scores/scoreTraces/index.d.ts.map +1 -0
  125. package/dist/scores/scoreTraces/index.js +434 -0
  126. package/dist/scores/scoreTraces/index.js.map +1 -0
  127. package/dist/scores/scoreTraces/scoreTraces.d.ts +10 -0
  128. package/dist/scores/scoreTraces/scoreTraces.d.ts.map +1 -0
  129. package/dist/scores/scoreTraces/scoreTracesWorkflow.d.ts +87 -0
  130. package/dist/scores/scoreTraces/scoreTracesWorkflow.d.ts.map +1 -0
  131. package/dist/scores/scoreTraces/utils.d.ts +25 -0
  132. package/dist/scores/scoreTraces/utils.d.ts.map +1 -0
  133. package/dist/scores/types.d.ts +8 -7
  134. package/dist/scores/types.d.ts.map +1 -1
  135. package/dist/storage/index.cjs +3 -3
  136. package/dist/storage/index.js +1 -1
  137. package/dist/stream/base/output.d.ts +30 -1
  138. package/dist/stream/base/output.d.ts.map +1 -1
  139. package/dist/stream/index.cjs +4 -4
  140. package/dist/stream/index.js +1 -1
  141. package/dist/stream/types.d.ts +16 -0
  142. package/dist/stream/types.d.ts.map +1 -1
  143. package/dist/test-utils/llm-mock.cjs +2 -2
  144. package/dist/test-utils/llm-mock.js +1 -1
  145. package/dist/tools/index.cjs +4 -4
  146. package/dist/tools/index.js +1 -1
  147. package/dist/tools/index.warning.d.ts +2 -2
  148. package/dist/tools/index.warning.d.ts.map +1 -1
  149. package/dist/tools/is-vercel-tool.cjs +2 -2
  150. package/dist/tools/is-vercel-tool.js +1 -1
  151. package/dist/tools/tool-builder/builder.d.ts.map +1 -1
  152. package/dist/tools/tool.d.ts +13 -8
  153. package/dist/tools/tool.d.ts.map +1 -1
  154. package/dist/tools/types.d.ts +7 -2
  155. package/dist/tools/types.d.ts.map +1 -1
  156. package/dist/utils.cjs +17 -17
  157. package/dist/utils.d.ts +1 -0
  158. package/dist/utils.d.ts.map +1 -1
  159. package/dist/utils.js +1 -1
  160. package/dist/workflows/default.d.ts.map +1 -1
  161. package/dist/workflows/evented/index.cjs +10 -10
  162. package/dist/workflows/evented/index.js +1 -1
  163. package/dist/workflows/evented/step-executor.d.ts.map +1 -1
  164. package/dist/workflows/evented/workflow-event-processor/index.d.ts.map +1 -1
  165. package/dist/workflows/evented/workflow.d.ts +1 -1
  166. package/dist/workflows/evented/workflow.d.ts.map +1 -1
  167. package/dist/workflows/index.cjs +14 -10
  168. package/dist/workflows/index.js +1 -1
  169. package/dist/workflows/legacy/index.cjs +22 -22
  170. package/dist/workflows/legacy/index.js +1 -1
  171. package/dist/workflows/step.d.ts +4 -2
  172. package/dist/workflows/step.d.ts.map +1 -1
  173. package/dist/workflows/types.d.ts +1 -0
  174. package/dist/workflows/types.d.ts.map +1 -1
  175. package/dist/workflows/workflow.d.ts +2 -2
  176. package/dist/workflows/workflow.d.ts.map +1 -1
  177. package/package.json +14 -4
  178. package/scores/scoreTraces.d.ts +1 -0
  179. package/dist/chunk-3N57EBJB.cjs.map +0 -1
  180. package/dist/chunk-DK7N45JH.cjs.map +0 -1
  181. package/dist/chunk-GWSHTBQY.js.map +0 -1
  182. package/dist/chunk-HBOOZ4W3.cjs.map +0 -1
  183. package/dist/chunk-JXKSCEDW.js.map +0 -1
  184. package/dist/chunk-MTJXEZUV.cjs.map +0 -1
  185. package/dist/chunk-N4YXCARN.cjs.map +0 -1
  186. package/dist/chunk-PRVMPHNQ.cjs.map +0 -1
  187. package/dist/chunk-R655GQ3Z.js.map +0 -1
  188. package/dist/chunk-RAQ4VAQ4.js.map +0 -1
  189. package/dist/chunk-RF32ODBL.js.map +0 -1
  190. package/dist/chunk-RGJ7F32F.cjs.map +0 -1
  191. package/dist/chunk-VRRY6NGC.js.map +0 -1
  192. package/dist/chunk-XSZYAAUC.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tools/validation.ts","../src/tools/tool.ts","../src/tools/toolchecks.ts"],"names":[],"mappings":"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","file":"chunk-PRVMPHNQ.cjs","sourcesContent":["import type { z } from 'zod';\n\nexport interface ValidationError<T = any> {\n error: true;\n message: string;\n validationErrors: z.ZodFormattedError<T>;\n}\n\n/**\n * Validates input against a Zod schema and returns a structured error if validation fails\n * @param schema The Zod schema to validate against\n * @param input The input to validate\n * @param toolId Optional tool ID for better error messages\n * @returns The validation error object if validation fails, undefined if successful\n */\nexport function validateToolInput<T = any>(\n schema: z.ZodSchema<T> | undefined,\n input: unknown,\n toolId?: string,\n): { data: T | unknown; error?: ValidationError<T> } {\n if (!schema || !('safeParse' in schema)) {\n return { data: input };\n }\n\n // Store validation results to avoid duplicate validation\n type ValidationAttempt = {\n result: z.SafeParseReturnType<any, T>;\n data: unknown;\n structure: 'direct' | 'context' | 'inputData';\n };\n\n const validationAttempts: ValidationAttempt[] = [];\n\n // Try validating the input directly first\n const directValidation = schema.safeParse(input);\n validationAttempts.push({\n result: directValidation,\n data: input,\n structure: 'direct',\n });\n\n if (directValidation.success) {\n return { data: input };\n }\n\n // Handle ToolExecutionContext format { context: data, ... }\n if (input && typeof input === 'object' && 'context' in input) {\n const contextData = (input as any).context;\n const contextValidation = schema.safeParse(contextData);\n validationAttempts.push({\n result: contextValidation,\n data: contextData,\n structure: 'context',\n });\n\n if (contextValidation.success) {\n return { data: { ...(input as object), context: contextValidation.data } };\n }\n\n // Handle StepExecutionContext format { context: { inputData: data, ... }, ... }\n if (contextData && typeof contextData === 'object' && 'inputData' in contextData) {\n const inputDataValue = (contextData as any).inputData;\n const inputDataValidation = schema.safeParse(inputDataValue);\n validationAttempts.push({\n result: inputDataValidation,\n data: inputDataValue,\n structure: 'inputData',\n });\n\n if (inputDataValidation.success) {\n // For inputData unwrapping, preserve the structure if the original context had additional properties\n // but return just the validated data if it was a pure inputData wrapper\n const contextKeys = Object.keys(contextData);\n\n // If context only has inputData, return the full structure with the validated data\n // Otherwise, return just the validated inputData\n if (contextKeys.length === 1 && contextKeys[0] === 'inputData') {\n return { data: { ...(input as object), context: { inputData: inputDataValidation.data } } };\n } else {\n // Multiple keys in context, return just the validated data\n return { data: inputDataValidation.data };\n }\n }\n }\n }\n\n // All validations failed, find the best error to return\n // Prefer the most specific error (deepest unwrapping level that has meaningful errors)\n let bestAttempt = validationAttempts[0]; // Start with direct validation\n\n for (const attempt of validationAttempts) {\n if (!attempt.result.success && attempt.result.error.issues.length > 0) {\n bestAttempt = attempt;\n }\n }\n\n // Use the best validation attempt for error reporting\n if (bestAttempt && !bestAttempt.result.success) {\n const errorMessages = bestAttempt.result.error.issues\n .map((e: z.ZodIssue) => `- ${e.path?.join('.') || 'root'}: ${e.message}`)\n .join('\\n');\n\n const error: ValidationError<T> = {\n error: true,\n message: `Tool validation failed${toolId ? ` for ${toolId}` : ''}. Please fix the following errors and try again:\\n${errorMessages}\\n\\nProvided arguments: ${JSON.stringify(bestAttempt.data, null, 2)}`,\n validationErrors: bestAttempt.result.error.format() as z.ZodFormattedError<T>,\n };\n\n return { data: input, error };\n }\n\n // This should not happen since we handle all valid cases above\n return { data: input };\n}\n","import type { z } from 'zod';\n\nimport type { Mastra } from '../mastra';\nimport type { ToolAction, ToolInvocationOptions, ToolExecutionContext } from './types';\nimport { validateToolInput } from './validation';\n\nexport class Tool<\n TSchemaIn extends z.ZodSchema | undefined = undefined,\n TSchemaOut extends z.ZodSchema | undefined = undefined,\n TContext extends ToolExecutionContext<TSchemaIn> = ToolExecutionContext<TSchemaIn>,\n> implements ToolAction<TSchemaIn, TSchemaOut, TContext>\n{\n id: string;\n description: string;\n inputSchema?: TSchemaIn;\n outputSchema?: TSchemaOut;\n execute?: ToolAction<TSchemaIn, TSchemaOut, TContext>['execute'];\n mastra?: Mastra;\n\n constructor(opts: ToolAction<TSchemaIn, TSchemaOut, TContext>) {\n this.id = opts.id;\n this.description = opts.description;\n this.inputSchema = opts.inputSchema;\n this.outputSchema = opts.outputSchema;\n this.mastra = opts.mastra;\n\n // Wrap the execute function with validation if it exists\n if (opts.execute) {\n const originalExecute = opts.execute;\n this.execute = async (context: TContext, options?: ToolInvocationOptions) => {\n // Validate input if schema exists\n const { data, error } = validateToolInput(this.inputSchema, context, this.id);\n if (error) {\n return error as any;\n }\n\n return originalExecute(data as TContext, options);\n };\n }\n }\n}\n\nexport function createTool<\n TSchemaIn extends z.ZodSchema | undefined = undefined,\n TSchemaOut extends z.ZodSchema | undefined = undefined,\n TContext extends ToolExecutionContext<TSchemaIn> = ToolExecutionContext<TSchemaIn>,\n TExecute extends ToolAction<TSchemaIn, TSchemaOut, TContext>['execute'] = ToolAction<\n TSchemaIn,\n TSchemaOut,\n TContext\n >['execute'],\n>(\n opts: ToolAction<TSchemaIn, TSchemaOut, TContext> & {\n execute?: TExecute;\n },\n): [TSchemaIn, TSchemaOut, TExecute] extends [z.ZodSchema, z.ZodSchema, Function]\n ? Tool<TSchemaIn, TSchemaOut, TContext> & {\n inputSchema: TSchemaIn;\n outputSchema: TSchemaOut;\n execute: (context: TContext, options: ToolInvocationOptions) => Promise<any>;\n }\n : Tool<TSchemaIn, TSchemaOut, TContext> {\n return new Tool(opts) as any;\n}\n","import { Tool } from './tool';\nimport type { ToolToConvert } from './tool-builder/builder';\nimport type { VercelTool } from './types';\n\n/**\n * Checks if a tool is a Vercel Tool\n * @param tool - The tool to check\n * @returns True if the tool is a Vercel Tool, false otherwise\n */\nexport function isVercelTool(tool?: ToolToConvert): tool is VercelTool {\n // Checks if this tool is not an instance of Tool\n return !!(tool && !(tool instanceof Tool) && 'parameters' in tool);\n}\n"]}