@mastra/core 1.0.0-beta.17 → 1.0.0-beta.19

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 (135) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/index.cjs +11 -11
  4. package/dist/agent/index.js +2 -2
  5. package/dist/agent/message-list/index.cjs +3 -3
  6. package/dist/agent/message-list/index.d.ts +8 -0
  7. package/dist/agent/message-list/index.d.ts.map +1 -1
  8. package/dist/agent/message-list/index.js +1 -1
  9. package/dist/{chunk-3AISNGWY.cjs → chunk-3LVC2TGA.cjs} +7 -7
  10. package/dist/{chunk-3AISNGWY.cjs.map → chunk-3LVC2TGA.cjs.map} +1 -1
  11. package/dist/{chunk-JBEKXEX6.js → chunk-43VR5ZNS.js} +3 -3
  12. package/dist/{chunk-JBEKXEX6.js.map → chunk-43VR5ZNS.js.map} +1 -1
  13. package/dist/{chunk-G6YCU7HJ.cjs → chunk-4BYMMTK6.cjs} +5 -5
  14. package/dist/{chunk-G6YCU7HJ.cjs.map → chunk-4BYMMTK6.cjs.map} +1 -1
  15. package/dist/{chunk-SRQTDHF5.js → chunk-5ABMEQEN.js} +101 -25
  16. package/dist/chunk-5ABMEQEN.js.map +1 -0
  17. package/dist/{chunk-RGX4NX5L.cjs → chunk-5ISEMRYZ.cjs} +102 -26
  18. package/dist/chunk-5ISEMRYZ.cjs.map +1 -0
  19. package/dist/{chunk-7CDELQD6.js → chunk-6CJM5Y6Z.js} +4 -4
  20. package/dist/{chunk-7CDELQD6.js.map → chunk-6CJM5Y6Z.js.map} +1 -1
  21. package/dist/{chunk-O4YSWWLB.cjs → chunk-ABHX6L4P.cjs} +20 -3
  22. package/dist/chunk-ABHX6L4P.cjs.map +1 -0
  23. package/dist/{chunk-OHQ4PC6P.cjs → chunk-DE4ZHUSC.cjs} +13 -13
  24. package/dist/{chunk-OHQ4PC6P.cjs.map → chunk-DE4ZHUSC.cjs.map} +1 -1
  25. package/dist/{chunk-SDR22R4D.cjs → chunk-E77HNO5E.cjs} +14 -14
  26. package/dist/{chunk-SDR22R4D.cjs.map → chunk-E77HNO5E.cjs.map} +1 -1
  27. package/dist/{chunk-QXL3F3T2.js → chunk-HUHM6BXV.js} +50 -6
  28. package/dist/chunk-HUHM6BXV.js.map +1 -0
  29. package/dist/{chunk-N6HPK6I3.cjs → chunk-I7HSIQRP.cjs} +15 -15
  30. package/dist/{chunk-N6HPK6I3.cjs.map → chunk-I7HSIQRP.cjs.map} +1 -1
  31. package/dist/{chunk-RC7RN5MY.js → chunk-IIGB2Z6S.js} +3 -3
  32. package/dist/{chunk-RC7RN5MY.js.map → chunk-IIGB2Z6S.js.map} +1 -1
  33. package/dist/{chunk-4DFWV4IR.js → chunk-ILOI5OB3.js} +3 -3
  34. package/dist/chunk-ILOI5OB3.js.map +1 -0
  35. package/dist/{chunk-AAX7ZOM7.cjs → chunk-IMMRWP4F.cjs} +3 -3
  36. package/dist/chunk-IMMRWP4F.cjs.map +1 -0
  37. package/dist/{chunk-5YYAQUEF.js → chunk-M55RALU2.js} +20 -3
  38. package/dist/chunk-M55RALU2.js.map +1 -0
  39. package/dist/{chunk-4QYTF4ZB.cjs → chunk-MV7R7B6Z.cjs} +30 -30
  40. package/dist/{chunk-4QYTF4ZB.cjs.map → chunk-MV7R7B6Z.cjs.map} +1 -1
  41. package/dist/{chunk-EMLEZXTQ.cjs → chunk-MVLOJX6I.cjs} +50 -6
  42. package/dist/chunk-MVLOJX6I.cjs.map +1 -0
  43. package/dist/{chunk-SGRMJZMJ.cjs → chunk-N55KRGVI.cjs} +6 -6
  44. package/dist/{chunk-SGRMJZMJ.cjs.map → chunk-N55KRGVI.cjs.map} +1 -1
  45. package/dist/{chunk-YORDI4E7.js → chunk-O3DUSIUY.js} +37 -23
  46. package/dist/chunk-O3DUSIUY.js.map +1 -0
  47. package/dist/{chunk-SJ3MF5G2.js → chunk-OSXQXATR.js} +4 -4
  48. package/dist/{chunk-SJ3MF5G2.js.map → chunk-OSXQXATR.js.map} +1 -1
  49. package/dist/{chunk-6ZKYNY3H.cjs → chunk-S6HUG6SH.cjs} +84 -70
  50. package/dist/chunk-S6HUG6SH.cjs.map +1 -0
  51. package/dist/{chunk-4M75INXO.cjs → chunk-TRSSKBDY.cjs} +16 -16
  52. package/dist/{chunk-4M75INXO.cjs.map → chunk-TRSSKBDY.cjs.map} +1 -1
  53. package/dist/{chunk-GPC7WOLN.js → chunk-XUQY6EIK.js} +4 -4
  54. package/dist/{chunk-GPC7WOLN.js.map → chunk-XUQY6EIK.js.map} +1 -1
  55. package/dist/{chunk-HGWVTZWK.js → chunk-Y3PUB5GS.js} +6 -6
  56. package/dist/{chunk-HGWVTZWK.js.map → chunk-Y3PUB5GS.js.map} +1 -1
  57. package/dist/{chunk-ABMWK6JU.js → chunk-Z2JFMLEA.js} +3 -3
  58. package/dist/{chunk-ABMWK6JU.js.map → chunk-Z2JFMLEA.js.map} +1 -1
  59. package/dist/{chunk-I55X7FYN.js → chunk-ZKE2ZPHB.js} +5 -5
  60. package/dist/{chunk-I55X7FYN.js.map → chunk-ZKE2ZPHB.js.map} +1 -1
  61. package/dist/evals/index.cjs +4 -4
  62. package/dist/evals/index.js +1 -1
  63. package/dist/evals/scoreTraces/index.cjs +3 -3
  64. package/dist/evals/scoreTraces/index.js +1 -1
  65. package/dist/index.cjs +2 -2
  66. package/dist/index.js +1 -1
  67. package/dist/integration/index.cjs +2 -2
  68. package/dist/integration/index.js +1 -1
  69. package/dist/llm/index.cjs +11 -11
  70. package/dist/llm/index.js +3 -3
  71. package/dist/llm/model/gateways/models-dev.d.ts.map +1 -1
  72. package/dist/llm/model/provider-types.generated.d.ts +41 -11
  73. package/dist/loop/index.cjs +2 -2
  74. package/dist/loop/index.js +1 -1
  75. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -1
  76. package/dist/mastra/index.cjs +2 -2
  77. package/dist/mastra/index.js +1 -1
  78. package/dist/memory/index.cjs +11 -11
  79. package/dist/memory/index.js +1 -1
  80. package/dist/memory/memory.d.ts +1 -1
  81. package/dist/memory/memory.d.ts.map +1 -1
  82. package/dist/memory/types.d.ts +19 -1
  83. package/dist/memory/types.d.ts.map +1 -1
  84. package/dist/models-dev-FHJWQQO5.cjs +12 -0
  85. package/dist/{models-dev-26XLUKVK.cjs.map → models-dev-FHJWQQO5.cjs.map} +1 -1
  86. package/dist/models-dev-JMCO6M5W.js +3 -0
  87. package/dist/{models-dev-HUFLQFPB.js.map → models-dev-JMCO6M5W.js.map} +1 -1
  88. package/dist/processors/index.cjs +37 -37
  89. package/dist/processors/index.js +1 -1
  90. package/dist/processors/memory/semantic-recall.d.ts +19 -1
  91. package/dist/processors/memory/semantic-recall.d.ts.map +1 -1
  92. package/dist/provider-registry-IZPSWLPV.js +3 -0
  93. package/dist/{provider-registry-LUBC7RIO.js.map → provider-registry-IZPSWLPV.js.map} +1 -1
  94. package/dist/provider-registry-OZWLA7RR.cjs +40 -0
  95. package/dist/{provider-registry-AUJKATCF.cjs.map → provider-registry-OZWLA7RR.cjs.map} +1 -1
  96. package/dist/provider-registry.json +98 -22
  97. package/dist/relevance/index.cjs +3 -3
  98. package/dist/relevance/index.js +1 -1
  99. package/dist/storage/index.cjs +30 -30
  100. package/dist/storage/index.js +1 -1
  101. package/dist/stream/base/output-format-handlers.d.ts.map +1 -1
  102. package/dist/stream/base/schema.d.ts.map +1 -1
  103. package/dist/stream/index.cjs +12 -12
  104. package/dist/stream/index.js +2 -2
  105. package/dist/test-utils/llm-mock.cjs +4 -4
  106. package/dist/test-utils/llm-mock.js +1 -1
  107. package/dist/tool-loop-agent/index.cjs +4 -4
  108. package/dist/tool-loop-agent/index.js +1 -1
  109. package/dist/tools/index.cjs +4 -4
  110. package/dist/tools/index.js +1 -1
  111. package/dist/tools/is-vercel-tool.cjs +2 -2
  112. package/dist/tools/is-vercel-tool.js +1 -1
  113. package/dist/tools/validation.d.ts.map +1 -1
  114. package/dist/utils.cjs +22 -22
  115. package/dist/utils.js +1 -1
  116. package/dist/workflows/evented/index.cjs +10 -10
  117. package/dist/workflows/evented/index.js +1 -1
  118. package/dist/workflows/index.cjs +23 -23
  119. package/dist/workflows/index.js +1 -1
  120. package/package.json +5 -5
  121. package/src/llm/model/provider-types.generated.d.ts +41 -11
  122. package/dist/chunk-4DFWV4IR.js.map +0 -1
  123. package/dist/chunk-5YYAQUEF.js.map +0 -1
  124. package/dist/chunk-6ZKYNY3H.cjs.map +0 -1
  125. package/dist/chunk-AAX7ZOM7.cjs.map +0 -1
  126. package/dist/chunk-EMLEZXTQ.cjs.map +0 -1
  127. package/dist/chunk-O4YSWWLB.cjs.map +0 -1
  128. package/dist/chunk-QXL3F3T2.js.map +0 -1
  129. package/dist/chunk-RGX4NX5L.cjs.map +0 -1
  130. package/dist/chunk-SRQTDHF5.js.map +0 -1
  131. package/dist/chunk-YORDI4E7.js.map +0 -1
  132. package/dist/models-dev-26XLUKVK.cjs +0 -12
  133. package/dist/models-dev-HUFLQFPB.js +0 -3
  134. package/dist/provider-registry-AUJKATCF.cjs +0 -40
  135. package/dist/provider-registry-LUBC7RIO.js +0 -3
@@ -44,11 +44,28 @@ function normalizeNullishInput(schema, input) {
44
44
  }
45
45
  return input;
46
46
  }
47
+ function convertUndefinedToNull(input) {
48
+ if (input === void 0) {
49
+ return null;
50
+ }
51
+ if (input === null || typeof input !== "object") {
52
+ return input;
53
+ }
54
+ if (Array.isArray(input)) {
55
+ return input.map(convertUndefinedToNull);
56
+ }
57
+ const result = {};
58
+ for (const [key, value] of Object.entries(input)) {
59
+ result[key] = convertUndefinedToNull(value);
60
+ }
61
+ return result;
62
+ }
47
63
  function validateToolInput(schema, input, toolId) {
48
64
  if (!schema || !("safeParse" in schema)) {
49
65
  return { data: input };
50
66
  }
51
- const normalizedInput = normalizeNullishInput(schema, input);
67
+ let normalizedInput = normalizeNullishInput(schema, input);
68
+ normalizedInput = convertUndefinedToNull(normalizedInput);
52
69
  const validation = schema.safeParse(normalizedInput);
53
70
  if (validation.success) {
54
71
  return { data: validation.data };
@@ -265,5 +282,5 @@ function isVercelTool(tool) {
265
282
  }
266
283
 
267
284
  export { Tool, createTool, isVercelTool, validateToolInput, validateToolOutput, validateToolSuspendData };
268
- //# sourceMappingURL=chunk-5YYAQUEF.js.map
269
- //# sourceMappingURL=chunk-5YYAQUEF.js.map
285
+ //# sourceMappingURL=chunk-M55RALU2.js.map
286
+ //# sourceMappingURL=chunk-M55RALU2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tools/validation.ts","../src/tools/tool.ts","../src/tools/toolchecks.ts"],"names":["resumeData"],"mappings":"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","file":"chunk-M55RALU2.js","sourcesContent":["import type { z } from 'zod';\nimport type { ZodLikeSchema } from '../types/zod-compat';\nimport { isZodArray, isZodObject } from '../utils/zod-utils';\n\nexport interface ValidationError<T = any> {\n error: true;\n message: string;\n validationErrors: z.ZodFormattedError<T>;\n}\n\n/**\n * Safely truncates data for error messages to avoid exposing sensitive information.\n * @param data The data to truncate\n * @param maxLength Maximum length of the truncated string (default: 200)\n * @returns Truncated string representation\n */\nfunction truncateForLogging(data: unknown, maxLength: number = 200): string {\n try {\n const stringified = JSON.stringify(data, null, 2);\n if (stringified.length <= maxLength) {\n return stringified;\n }\n return stringified.slice(0, maxLength) + '... (truncated)';\n } catch {\n return '[Unable to serialize data]';\n }\n}\n\n/**\n * Validates raw suspend data against a Zod schema.\n *\n * @param schema The Zod schema to validate against\n * @param suspendData The raw suspend data to validate\n * @param toolId Optional tool ID for better error messages\n * @returns The validated data or a validation error\n */\nexport function validateToolSuspendData<T = any>(\n schema: ZodLikeSchema | undefined,\n suspendData: unknown,\n toolId?: string,\n): { data: T | unknown; error?: ValidationError<T> } {\n // If no schema, return suspend data as-is\n if (!schema || !('safeParse' in schema)) {\n return { data: suspendData };\n }\n\n // Validate the input directly - no unwrapping needed in v1.0\n const validation = schema.safeParse(suspendData);\n\n if (validation.success) {\n return { data: validation.data };\n }\n\n // Validation failed, return error\n const errorMessages = validation.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 suspension data validation failed${toolId ? ` for ${toolId}` : ''}. Please fix the following errors and try again:\\n${errorMessages}\\n\\nProvided arguments: ${truncateForLogging(suspendData)}`,\n validationErrors: validation.error.format() as z.ZodFormattedError<T>,\n };\n\n return { data: suspendData, error };\n}\n\n/**\n * Normalizes undefined/null input to an appropriate default value based on schema type.\n * This handles LLMs (Claude Sonnet 4.5, Gemini 2.4, etc.) that send undefined/null\n * instead of {} or [] when all parameters are optional.\n *\n * @param schema The Zod schema to check\n * @param input The input to normalize\n * @returns The normalized input (original value, {}, or [])\n */\nfunction normalizeNullishInput(schema: ZodLikeSchema, input: unknown): unknown {\n if (input !== undefined && input !== null) {\n return input;\n }\n\n // Check if schema is an array type (using typeName to avoid dual-package hazard)\n if (isZodArray(schema as z.ZodTypeAny)) {\n return [];\n }\n\n // Check if schema is an object type (using typeName to avoid dual-package hazard)\n if (isZodObject(schema as z.ZodTypeAny)) {\n return {};\n }\n\n // For other schema types, return the original input and let Zod validate\n return input;\n}\n\n/**\n * Recursively converts undefined values to null in an object.\n * This is needed for OpenAI compat layers which convert .optional() to .nullable()\n * for strict mode compliance. When fields are omitted (undefined), we convert them\n * to null so the schema validation passes, and the transform then converts null back\n * to undefined. (GitHub #11457)\n *\n * @param input The input to process\n * @returns The processed input with undefined values converted to null\n */\nfunction convertUndefinedToNull(input: unknown): unknown {\n if (input === undefined) {\n return null;\n }\n\n if (input === null || typeof input !== 'object') {\n return input;\n }\n\n if (Array.isArray(input)) {\n return input.map(convertUndefinedToNull);\n }\n\n // It's an object - recursively process all properties\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input as Record<string, unknown>)) {\n result[key] = convertUndefinedToNull(value);\n }\n return result;\n}\n\n/**\n * Validates raw input data against a Zod schema.\n *\n * @param schema The Zod schema to validate against\n * @param input The raw input data to validate\n * @param toolId Optional tool ID for better error messages\n * @returns The validated data or a validation error\n */\nexport function validateToolInput<T = any>(\n schema: ZodLikeSchema | undefined,\n input: unknown,\n toolId?: string,\n): { data: T | unknown; error?: ValidationError<T> } {\n // If no schema, return input as-is\n if (!schema || !('safeParse' in schema)) {\n return { data: input };\n }\n\n // Normalize undefined/null input to appropriate default for the schema type\n // This handles LLMs that send undefined instead of {} or [] for optional parameters\n let normalizedInput = normalizeNullishInput(schema, input);\n\n // Convert undefined values to null recursively (GitHub #11457)\n // This is needed because OpenAI compat layers convert .optional() to .nullable()\n // for strict mode compliance. When fields are omitted (undefined), we convert them\n // to null so the schema validation passes. The schema's transform will then convert\n // null back to undefined to match the original .optional() semantics.\n normalizedInput = convertUndefinedToNull(normalizedInput);\n\n // Validate the normalized input\n const validation = schema.safeParse(normalizedInput);\n\n if (validation.success) {\n return { data: validation.data };\n }\n\n // Validation failed, return error\n const errorMessages = validation.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 input validation failed${toolId ? ` for ${toolId}` : ''}. Please fix the following errors and try again:\\n${errorMessages}\\n\\nProvided arguments: ${truncateForLogging(input)}`,\n validationErrors: validation.error.format() as z.ZodFormattedError<T>,\n };\n\n return { data: input, error };\n}\n\n/**\n * Validates tool output data against a Zod schema.\n *\n * @param schema The Zod schema to validate against\n * @param output The output data to validate\n * @param toolId Optional tool ID for better error messages\n * @returns The validated data or a validation error\n */\nexport function validateToolOutput<T = any>(\n schema: ZodLikeSchema | undefined,\n output: unknown,\n toolId?: string,\n suspendCalled?: boolean,\n): { data: T | unknown; error?: ValidationError<T> } {\n // If no schema, return output as-is\n if (!schema || !('safeParse' in schema) || suspendCalled) {\n return { data: output };\n }\n\n // Validate the output\n const validation = schema.safeParse(output);\n\n if (validation.success) {\n return { data: validation.data };\n }\n\n // Validation failed, return error\n const errorMessages = validation.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 output validation failed${toolId ? ` for ${toolId}` : ''}. The tool returned invalid output:\\n${errorMessages}\\n\\nReturned output: ${truncateForLogging(output)}`,\n validationErrors: validation.error.format() as z.ZodFormattedError<T>,\n };\n\n return { data: output, error };\n}\n","import type { Mastra } from '../mastra';\nimport { RequestContext } from '../request-context';\nimport type { ZodLikeSchema, InferZodLikeSchema, InferZodLikeSchemaInput } from '../types/zod-compat';\nimport type { SuspendOptions } from '../workflows';\nimport type { ToolAction, ToolExecutionContext } from './types';\nimport { validateToolInput, validateToolOutput, validateToolSuspendData } from './validation';\n\n/**\n * A type-safe tool that agents and workflows can call to perform specific actions.\n *\n * @template TSchemaIn - Input schema type\n * @template TSchemaOut - Output schema type\n * @template TSuspendSchema - Suspend operation schema type\n * @template TResumeSchema - Resume operation schema type\n * @template TContext - Execution context type\n *\n * @example Basic tool with validation\n * ```typescript\n * const weatherTool = createTool({\n * id: 'get-weather',\n * description: 'Get weather for a location',\n * inputSchema: z.object({\n * location: z.string(),\n * units: z.enum(['celsius', 'fahrenheit']).optional()\n * }),\n * execute: async (inputData) => {\n * return await fetchWeather(inputData.location, inputData.units);\n * }\n * });\n * ```\n *\n * @example Tool requiring approval\n * ```typescript\n * const deleteFileTool = createTool({\n * id: 'delete-file',\n * description: 'Delete a file',\n * requireApproval: true,\n * inputSchema: z.object({ filepath: z.string() }),\n * execute: async (inputData) => {\n * await fs.unlink(inputData.filepath);\n * return { deleted: true };\n * }\n * });\n * ```\n *\n * @example Tool with Mastra integration\n * ```typescript\n * const saveTool = createTool({\n * id: 'save-data',\n * description: 'Save data to storage',\n * inputSchema: z.object({ key: z.string(), value: z.any() }),\n * execute: async (inputData, context) => {\n * const storage = context?.mastra?.getStorage();\n * await storage?.set(inputData.key, inputData.value);\n * return { saved: true };\n * }\n * });\n * ```\n */\nexport class Tool<\n TSchemaIn extends ZodLikeSchema | undefined = undefined,\n TSchemaOut extends ZodLikeSchema | undefined = undefined,\n TSuspendSchema extends ZodLikeSchema = any,\n TResumeSchema extends ZodLikeSchema = any,\n TContext extends ToolExecutionContext<TSuspendSchema, TResumeSchema> = ToolExecutionContext<\n TSuspendSchema,\n TResumeSchema\n >,\n TId extends string = string,\n> implements ToolAction<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId>\n{\n /** Unique identifier for the tool */\n id: TId;\n\n /** Description of what the tool does */\n description: string;\n\n /** Schema for validating input parameters */\n inputSchema?: TSchemaIn;\n\n /** Schema for validating output structure */\n outputSchema?: TSchemaOut;\n\n /** Schema for suspend operation data */\n suspendSchema?: TSuspendSchema;\n\n /** Schema for resume operation data */\n resumeSchema?: TResumeSchema;\n\n /**\n * Tool execution function\n * @param inputData - The raw, validated input data\n * @param context - Optional execution context with metadata\n * @returns Promise resolving to tool output or a ValidationError if input validation fails\n */\n execute?: ToolAction<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext>['execute'];\n\n /** Parent Mastra instance for accessing shared resources */\n mastra?: Mastra;\n\n /**\n * Whether the tool requires explicit user approval before execution\n * @example\n * ```typescript\n * // For destructive operations\n * requireApproval: true\n * ```\n */\n requireApproval?: boolean;\n\n /**\n * Provider-specific options passed to the model when this tool is used.\n * Keys are provider names (e.g., 'anthropic', 'openai'), values are provider-specific configs.\n * @example\n * ```typescript\n * providerOptions: {\n * anthropic: {\n * cacheControl: { type: 'ephemeral' }\n * }\n * }\n * ```\n */\n providerOptions?: Record<string, Record<string, unknown>>;\n\n /**\n * Creates a new Tool instance with input validation wrapper.\n *\n * @param opts - Tool configuration and execute function\n * @example\n * ```typescript\n * const tool = new Tool({\n * id: 'my-tool',\n * description: 'Does something useful',\n * inputSchema: z.object({ name: z.string() }),\n * execute: async (inputData) => ({ greeting: `Hello ${inputData.name}` })\n * });\n * ```\n */\n constructor(opts: ToolAction<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId>) {\n this.id = opts.id;\n this.description = opts.description;\n this.inputSchema = opts.inputSchema;\n this.outputSchema = opts.outputSchema;\n this.suspendSchema = opts.suspendSchema;\n this.resumeSchema = opts.resumeSchema;\n this.mastra = opts.mastra;\n this.requireApproval = opts.requireApproval || false;\n this.providerOptions = opts.providerOptions;\n\n // Tools receive two parameters:\n // 1. input - The raw, validated input data\n // 2. context - Execution metadata (mastra, suspend, etc.)\n if (opts.execute) {\n const originalExecute = opts.execute;\n this.execute = async (inputData: unknown, context?: any) => {\n // Validate input if schema exists\n const { data, error } = validateToolInput(this.inputSchema, inputData, this.id);\n if (error) {\n return error as any;\n }\n\n let suspendData = null;\n\n const baseContext = context\n ? {\n ...context,\n ...(context.suspend\n ? {\n suspend: (args: any, suspendOptions?: SuspendOptions) => {\n suspendData = args;\n return context.suspend?.(args, suspendOptions);\n },\n }\n : {}),\n }\n : {};\n\n // Organize context based on execution source\n let organizedContext = baseContext;\n if (!context) {\n // No context provided - create a minimal context with requestContext\n organizedContext = {\n requestContext: new RequestContext(),\n mastra: undefined,\n };\n } else {\n // Check if this is agent execution (has toolCallId and messages)\n const isAgentExecution = baseContext.toolCallId && baseContext.messages;\n\n // Check if this is workflow execution (has workflow properties)\n // Agent execution takes precedence - don't treat as workflow if it's an agent call\n const isWorkflowExecution = !isAgentExecution && (baseContext.workflow || baseContext.workflowId);\n\n if (isAgentExecution && !baseContext.agent) {\n // Reorganize agent context - nest agent-specific properties under 'agent' key\n const { toolCallId, messages, suspend, resumeData, threadId, resourceId, writableStream, ...rest } =\n baseContext;\n organizedContext = {\n ...rest,\n agent: {\n toolCallId,\n messages,\n suspend,\n resumeData,\n threadId,\n resourceId,\n writableStream,\n },\n // Ensure requestContext is always present\n requestContext: rest.requestContext || new RequestContext(),\n };\n } else if (isWorkflowExecution && !baseContext.workflow) {\n // Reorganize workflow context - nest workflow-specific properties under 'workflow' key\n const { workflowId, runId, state, setState, suspend, resumeData, ...rest } = baseContext;\n organizedContext = {\n ...rest,\n workflow: {\n workflowId,\n runId,\n state,\n setState,\n suspend,\n resumeData,\n },\n // Ensure requestContext is always present\n requestContext: rest.requestContext || new RequestContext(),\n };\n } else {\n // Ensure requestContext is always present even for direct execution\n organizedContext = {\n ...baseContext,\n agent: baseContext.agent\n ? {\n ...baseContext.agent,\n suspend: (args: any, suspendOptions?: SuspendOptions) => {\n suspendData = args;\n return baseContext.agent?.suspend?.(args, suspendOptions);\n },\n }\n : baseContext.agent,\n workflow: baseContext.workflow\n ? {\n ...baseContext.workflow,\n suspend: (args: any, suspendOptions?: SuspendOptions) => {\n suspendData = args;\n return baseContext.workflow?.suspend?.(args, suspendOptions);\n },\n }\n : baseContext.workflow,\n requestContext: baseContext.requestContext || new RequestContext(),\n };\n }\n }\n\n const resumeData =\n organizedContext.agent?.resumeData ?? organizedContext.workflow?.resumeData ?? organizedContext?.resumeData;\n\n if (resumeData) {\n const resumeValidation = validateToolInput(this.resumeSchema, resumeData, this.id);\n if (resumeValidation.error) {\n return resumeValidation.error as any;\n }\n }\n\n // Call the original execute with validated input and organized context\n const output = await originalExecute(data as any, organizedContext);\n\n if (suspendData) {\n const suspendValidation = validateToolSuspendData(this.suspendSchema, suspendData, this.id);\n if (suspendValidation.error) {\n return suspendValidation.error as any;\n }\n }\n\n const skiptOutputValidation = !!(typeof output === 'undefined' && suspendData);\n\n // Validate output if schema exists\n const outputValidation = validateToolOutput(this.outputSchema, output, this.id, skiptOutputValidation);\n if (outputValidation.error) {\n return outputValidation.error as any;\n }\n\n return outputValidation.data;\n };\n }\n }\n}\n\n/**\n * Creates a type-safe tool with automatic input validation.\n *\n * @template TSchemaIn - Input schema type\n * @template TSchemaOut - Output schema type\n * @template TSuspendSchema - Suspend operation schema type\n * @template TResumeSchema - Resume operation schema type\n * @template TContext - Execution context type\n * @template TExecute - Execute function type\n *\n * @param opts - Tool configuration including schemas and execute function\n * @returns Type-safe Tool instance with conditional typing based on schemas\n *\n * @example Simple tool\n * ```typescript\n * const greetTool = createTool({\n * id: 'greet',\n * description: 'Say hello',\n * execute: async () => ({ message: 'Hello!' })\n * });\n * ```\n *\n * @example Tool with input validation\n * ```typescript\n * const calculateTool = createTool({\n * id: 'calculate',\n * description: 'Perform calculations',\n * inputSchema: z.object({\n * operation: z.enum(['add', 'subtract']),\n * a: z.number(),\n * b: z.number()\n * }),\n * execute: async (inputData) => {\n * const result = inputData.operation === 'add'\n * ? inputData.a + inputData.b\n * : inputData.a - inputData.b;\n * return { result };\n * }\n * });\n * ```\n *\n * @example Tool with output schema\n * ```typescript\n * const userTool = createTool({\n * id: 'get-user',\n * description: 'Get user data',\n * inputSchema: z.object({ userId: z.string() }),\n * outputSchema: z.object({\n * id: z.string(),\n * name: z.string(),\n * email: z.string()\n * }),\n * execute: async (inputData) => {\n * return await fetchUser(inputData.userId);\n * }\n * });\n * ```\n *\n * @example Tool with external API\n * ```typescript\n * const weatherTool = createTool({\n * id: 'weather',\n * description: 'Get weather data',\n * inputSchema: z.object({\n * city: z.string(),\n * units: z.enum(['metric', 'imperial']).default('metric')\n * }),\n * execute: async (inputData) => {\n * const response = await fetch(\n * `https://api.weather.com/v1/weather?q=${inputData.city}&units=${inputData.units}`\n * );\n * return response.json();\n * }\n * });\n * ```\n */\nexport function createTool<\n TId extends string = string,\n TSchemaIn extends ZodLikeSchema | undefined = undefined,\n TSchemaOut extends ZodLikeSchema | undefined = undefined,\n TSuspendSchema extends ZodLikeSchema = any,\n TResumeSchema extends ZodLikeSchema = any,\n TContext extends ToolExecutionContext<TSuspendSchema, TResumeSchema> = ToolExecutionContext<\n TSuspendSchema,\n TResumeSchema\n >,\n>(\n opts: ToolAction<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId>,\n): [TSchemaIn, TSchemaOut] extends [ZodLikeSchema, ZodLikeSchema]\n ? Tool<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId> & {\n inputSchema: TSchemaIn;\n outputSchema: TSchemaOut;\n execute: (\n inputData: InferZodLikeSchema<TSchemaIn>,\n context?: TContext,\n ) => Promise<InferZodLikeSchemaInput<TSchemaOut> & { error?: never }>;\n }\n : Tool<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId> {\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 (AI SDK 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 Mastra's Tool class\n // AI SDK tools must have an execute function and either:\n // - 'parameters' (v4) or 'inputSchema' (v5/v6)\n // This prevents plain objects with inputSchema (like client tools) from being treated as VercelTools\n return !!(\n tool &&\n !(tool instanceof Tool) &&\n ('parameters' in tool || ('execute' in tool && typeof tool.execute === 'function' && 'inputSchema' in tool))\n );\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunk6ZKYNY3H_cjs = require('./chunk-6ZKYNY3H.cjs');
3
+ var chunkS6HUG6SH_cjs = require('./chunk-S6HUG6SH.cjs');
4
4
  var chunkL3NKIMF5_cjs = require('./chunk-L3NKIMF5.cjs');
5
5
  var chunk4U7ZLI36_cjs = require('./chunk-4U7ZLI36.cjs');
6
- var chunkO4YSWWLB_cjs = require('./chunk-O4YSWWLB.cjs');
6
+ var chunkABHX6L4P_cjs = require('./chunk-ABHX6L4P.cjs');
7
7
  var chunkUVHSM2GU_cjs = require('./chunk-UVHSM2GU.cjs');
8
8
  var chunkDGV2FWB4_cjs = require('./chunk-DGV2FWB4.cjs');
9
9
  var chunkAF74UXR5_cjs = require('./chunk-AF74UXR5.cjs');
@@ -31,7 +31,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
31
31
  let suspended;
32
32
  let bailed;
33
33
  const startedAt = Date.now();
34
- const { inputData, validationError } = await chunk6ZKYNY3H_cjs.validateStepInput({
34
+ const { inputData, validationError } = await chunkS6HUG6SH_cjs.validateStepInput({
35
35
  prevOutput: typeof params.foreachIdx === "number" ? params.input?.[params.foreachIdx] : params.input,
36
36
  step,
37
37
  validateInputs: params.validateInputs ?? true
@@ -56,7 +56,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
56
56
  throw validationError;
57
57
  }
58
58
  const stepOutput = await step.execute(
59
- chunk6ZKYNY3H_cjs.createDeprecationProxy(
59
+ chunkS6HUG6SH_cjs.createDeprecationProxy(
60
60
  {
61
61
  workflowId: params.workflowId,
62
62
  runId,
@@ -71,9 +71,9 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
71
71
  resumeData: params.resumeData,
72
72
  suspendData: suspendDataToUse,
73
73
  getInitData: () => stepResults?.input,
74
- getStepResult: chunk6ZKYNY3H_cjs.getStepResult.bind(this, stepResults),
74
+ getStepResult: chunkS6HUG6SH_cjs.getStepResult.bind(this, stepResults),
75
75
  suspend: async (suspendPayload) => {
76
- const { suspendData, validationError: validationError2 } = await chunk6ZKYNY3H_cjs.validateStepSuspendData({
76
+ const { suspendData, validationError: validationError2 } = await chunkS6HUG6SH_cjs.validateStepSuspendData({
77
77
  suspendData: suspendPayload,
78
78
  step,
79
79
  validateInputs: params.validateInputs ?? true
@@ -91,7 +91,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
91
91
  abort: () => {
92
92
  abortController?.abort();
93
93
  },
94
- [chunkL3NKIMF5_cjs.PUBSUB_SYMBOL]: this.mastra?.pubsub ?? new chunk6ZKYNY3H_cjs.EventEmitterPubSub(params.emitter),
94
+ [chunkL3NKIMF5_cjs.PUBSUB_SYMBOL]: this.mastra?.pubsub ?? new chunkS6HUG6SH_cjs.EventEmitterPubSub(params.emitter),
95
95
  [chunkL3NKIMF5_cjs.STREAM_FORMAT_SYMBOL]: void 0,
96
96
  // TODO
97
97
  engine: {},
@@ -101,7 +101,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
101
101
  },
102
102
  {
103
103
  paramName: "runCount",
104
- deprecationMessage: chunk6ZKYNY3H_cjs.runCountDeprecationMessage,
104
+ deprecationMessage: chunkS6HUG6SH_cjs.runCountDeprecationMessage,
105
105
  logger: this.logger
106
106
  }
107
107
  )
@@ -206,7 +206,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
206
206
  iterationCount
207
207
  }) {
208
208
  return condition(
209
- chunk6ZKYNY3H_cjs.createDeprecationProxy(
209
+ chunkS6HUG6SH_cjs.createDeprecationProxy(
210
210
  {
211
211
  workflowId,
212
212
  runId,
@@ -217,7 +217,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
217
217
  retryCount,
218
218
  resumeData,
219
219
  getInitData: () => stepResults?.input,
220
- getStepResult: chunk6ZKYNY3H_cjs.getStepResult.bind(this, stepResults),
220
+ getStepResult: chunkS6HUG6SH_cjs.getStepResult.bind(this, stepResults),
221
221
  bail: (_result) => {
222
222
  throw new Error("Not implemented");
223
223
  },
@@ -226,7 +226,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
226
226
  abort: () => {
227
227
  abortController?.abort();
228
228
  },
229
- [chunkL3NKIMF5_cjs.PUBSUB_SYMBOL]: this.mastra?.pubsub ?? new chunk6ZKYNY3H_cjs.EventEmitterPubSub(emitter),
229
+ [chunkL3NKIMF5_cjs.PUBSUB_SYMBOL]: this.mastra?.pubsub ?? new chunkS6HUG6SH_cjs.EventEmitterPubSub(emitter),
230
230
  [chunkL3NKIMF5_cjs.STREAM_FORMAT_SYMBOL]: void 0,
231
231
  // TODO
232
232
  engine: {},
@@ -237,7 +237,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
237
237
  },
238
238
  {
239
239
  paramName: "runCount",
240
- deprecationMessage: chunk6ZKYNY3H_cjs.runCountDeprecationMessage,
240
+ deprecationMessage: chunkS6HUG6SH_cjs.runCountDeprecationMessage,
241
241
  logger: this.logger
242
242
  }
243
243
  )
@@ -255,7 +255,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
255
255
  }
256
256
  try {
257
257
  return await step.fn(
258
- chunk6ZKYNY3H_cjs.createDeprecationProxy(
258
+ chunkS6HUG6SH_cjs.createDeprecationProxy(
259
259
  {
260
260
  workflowId: params.workflowId,
261
261
  runId,
@@ -269,7 +269,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
269
269
  retryCount,
270
270
  resumeData: params.resumeData,
271
271
  getInitData: () => stepResults?.input,
272
- getStepResult: chunk6ZKYNY3H_cjs.getStepResult.bind(this, stepResults),
272
+ getStepResult: chunkS6HUG6SH_cjs.getStepResult.bind(this, stepResults),
273
273
  suspend: async (_suspendPayload) => {
274
274
  throw new Error("Not implemented");
275
275
  },
@@ -281,7 +281,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
281
281
  },
282
282
  // TODO
283
283
  writer: void 0,
284
- [chunkL3NKIMF5_cjs.PUBSUB_SYMBOL]: this.mastra?.pubsub ?? new chunk6ZKYNY3H_cjs.EventEmitterPubSub(ee),
284
+ [chunkL3NKIMF5_cjs.PUBSUB_SYMBOL]: this.mastra?.pubsub ?? new chunkS6HUG6SH_cjs.EventEmitterPubSub(ee),
285
285
  [chunkL3NKIMF5_cjs.STREAM_FORMAT_SYMBOL]: void 0,
286
286
  // TODO
287
287
  engine: {},
@@ -291,7 +291,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
291
291
  },
292
292
  {
293
293
  paramName: "runCount",
294
- deprecationMessage: chunk6ZKYNY3H_cjs.runCountDeprecationMessage,
294
+ deprecationMessage: chunkS6HUG6SH_cjs.runCountDeprecationMessage,
295
295
  logger: this.logger
296
296
  }
297
297
  )
@@ -313,7 +313,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
313
313
  }
314
314
  try {
315
315
  const result = await step.fn(
316
- chunk6ZKYNY3H_cjs.createDeprecationProxy(
316
+ chunkS6HUG6SH_cjs.createDeprecationProxy(
317
317
  {
318
318
  workflowId: params.workflowId,
319
319
  runId,
@@ -327,7 +327,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
327
327
  retryCount,
328
328
  resumeData: params.resumeData,
329
329
  getInitData: () => stepResults?.input,
330
- getStepResult: chunk6ZKYNY3H_cjs.getStepResult.bind(this, stepResults),
330
+ getStepResult: chunkS6HUG6SH_cjs.getStepResult.bind(this, stepResults),
331
331
  suspend: async (_suspendPayload) => {
332
332
  throw new Error("Not implemented");
333
333
  },
@@ -339,7 +339,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
339
339
  },
340
340
  // TODO
341
341
  writer: void 0,
342
- [chunkL3NKIMF5_cjs.PUBSUB_SYMBOL]: this.mastra?.pubsub ?? new chunk6ZKYNY3H_cjs.EventEmitterPubSub(ee),
342
+ [chunkL3NKIMF5_cjs.PUBSUB_SYMBOL]: this.mastra?.pubsub ?? new chunkS6HUG6SH_cjs.EventEmitterPubSub(ee),
343
343
  [chunkL3NKIMF5_cjs.STREAM_FORMAT_SYMBOL]: void 0,
344
344
  // TODO
345
345
  engine: {},
@@ -349,7 +349,7 @@ var StepExecutor = class extends chunkDGV2FWB4_cjs.MastraBase {
349
349
  },
350
350
  {
351
351
  paramName: "runCount",
352
- deprecationMessage: chunk6ZKYNY3H_cjs.runCountDeprecationMessage,
352
+ deprecationMessage: chunkS6HUG6SH_cjs.runCountDeprecationMessage,
353
353
  logger: this.logger
354
354
  }
355
355
  )
@@ -1574,7 +1574,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1574
1574
  workflowName: step.step.id,
1575
1575
  runId
1576
1576
  }) ?? { context: {} };
1577
- const timeTravelParams = chunk6ZKYNY3H_cjs.createTimeTravelExecutionParams({
1577
+ const timeTravelParams = chunkS6HUG6SH_cjs.createTimeTravelExecutionParams({
1578
1578
  steps: timeTravel.steps.slice(1),
1579
1579
  inputData: timeTravel.inputData,
1580
1580
  resumeData: timeTravel.resumeData,
@@ -1668,7 +1668,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1668
1668
  for (const [key, value] of Object.entries(requestContext)) {
1669
1669
  rc.set(key, value);
1670
1670
  }
1671
- const { resumeData: timeTravelResumeData, validationError: timeTravelResumeValidationError } = await chunk6ZKYNY3H_cjs.validateStepResumeData({
1671
+ const { resumeData: timeTravelResumeData, validationError: timeTravelResumeValidationError } = await chunkS6HUG6SH_cjs.validateStepResumeData({
1672
1672
  resumeData: timeTravel?.stepResults[step.step.id]?.status === "suspended" ? timeTravel?.resumeData : void 0,
1673
1673
  step: step.step
1674
1674
  });
@@ -2224,7 +2224,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
2224
2224
 
2225
2225
  // src/workflows/evented/workflow.ts
2226
2226
  function cloneWorkflow(workflow, opts) {
2227
- const wf = new chunk6ZKYNY3H_cjs.Workflow({
2227
+ const wf = new chunkS6HUG6SH_cjs.Workflow({
2228
2228
  id: opts.id,
2229
2229
  inputSchema: workflow.inputSchema,
2230
2230
  outputSchema: workflow.outputSchema,
@@ -2255,7 +2255,7 @@ function isAgent(params) {
2255
2255
  return params?.component === "AGENT";
2256
2256
  }
2257
2257
  function isTool(params) {
2258
- return params instanceof chunkO4YSWWLB_cjs.Tool;
2258
+ return params instanceof chunkABHX6L4P_cjs.Tool;
2259
2259
  }
2260
2260
  function createStep(params) {
2261
2261
  if (isAgent(params)) {
@@ -2392,7 +2392,7 @@ function createWorkflow(params) {
2392
2392
  executionEngine
2393
2393
  });
2394
2394
  }
2395
- var EventedWorkflow = class extends chunk6ZKYNY3H_cjs.Workflow {
2395
+ var EventedWorkflow = class extends chunkS6HUG6SH_cjs.Workflow {
2396
2396
  constructor(params) {
2397
2397
  super(params);
2398
2398
  this.engineType = "evented";
@@ -2452,7 +2452,7 @@ var EventedWorkflow = class extends chunk6ZKYNY3H_cjs.Workflow {
2452
2452
  return run;
2453
2453
  }
2454
2454
  };
2455
- var EventedRun = class extends chunk6ZKYNY3H_cjs.Run {
2455
+ var EventedRun = class extends chunkS6HUG6SH_cjs.Run {
2456
2456
  constructor(params) {
2457
2457
  super(params);
2458
2458
  this.serializedStepGraph = params.serializedStepGraph;
@@ -2757,7 +2757,7 @@ function isExecutableStep(step) {
2757
2757
  }
2758
2758
 
2759
2759
  // src/workflows/evented/execution-engine.ts
2760
- var EventedExecutionEngine = class extends chunk6ZKYNY3H_cjs.ExecutionEngine {
2760
+ var EventedExecutionEngine = class extends chunkS6HUG6SH_cjs.ExecutionEngine {
2761
2761
  eventProcessor;
2762
2762
  constructor({
2763
2763
  mastra,
@@ -2843,7 +2843,7 @@ var EventedExecutionEngine = class extends chunk6ZKYNY3H_cjs.ExecutionEngine {
2843
2843
  await ack?.();
2844
2844
  await pubsub.unsubscribe("workflows-finish", finishCb);
2845
2845
  if (event.type === "workflow.fail" && event.data.stepResults) {
2846
- event.data.stepResults = chunk6ZKYNY3H_cjs.hydrateSerializedStepErrors(event.data.stepResults);
2846
+ event.data.stepResults = chunkS6HUG6SH_cjs.hydrateSerializedStepErrors(event.data.stepResults);
2847
2847
  }
2848
2848
  resolve(event.data);
2849
2849
  return;
@@ -2910,5 +2910,5 @@ exports.cloneStep = cloneStep;
2910
2910
  exports.cloneWorkflow = cloneWorkflow;
2911
2911
  exports.createStep = createStep;
2912
2912
  exports.createWorkflow = createWorkflow;
2913
- //# sourceMappingURL=chunk-4QYTF4ZB.cjs.map
2914
- //# sourceMappingURL=chunk-4QYTF4ZB.cjs.map
2913
+ //# sourceMappingURL=chunk-MV7R7B6Z.cjs.map
2914
+ //# sourceMappingURL=chunk-MV7R7B6Z.cjs.map