@mastra/core 0.15.3-alpha.1 → 0.15.3-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 (131) hide show
  1. package/dist/agent/index.cjs +11 -11
  2. package/dist/agent/index.js +2 -2
  3. package/dist/agent/input-processor/index.cjs +6 -6
  4. package/dist/agent/input-processor/index.js +1 -1
  5. package/dist/agent/message-list/index.d.ts +5 -1
  6. package/dist/agent/message-list/index.d.ts.map +1 -1
  7. package/dist/agent/message-list/prompt/convert-file.d.ts +7 -0
  8. package/dist/agent/message-list/prompt/convert-file.d.ts.map +1 -0
  9. package/dist/agent/message-list/prompt/download-assets.d.ts +15 -0
  10. package/dist/agent/message-list/prompt/download-assets.d.ts.map +1 -0
  11. package/dist/{chunk-6VROHRAR.cjs → chunk-24TFSB6Z.cjs} +30 -7
  12. package/dist/chunk-24TFSB6Z.cjs.map +1 -0
  13. package/dist/{chunk-BRNBKCHE.js → chunk-5TFCIXWE.js} +10 -8
  14. package/dist/chunk-5TFCIXWE.js.map +1 -0
  15. package/dist/{chunk-TINMY4WA.js → chunk-APVV75XG.js} +3 -3
  16. package/dist/{chunk-TINMY4WA.js.map → chunk-APVV75XG.js.map} +1 -1
  17. package/dist/{chunk-HRDADYVX.cjs → chunk-AYFN43FB.cjs} +4 -4
  18. package/dist/{chunk-HRDADYVX.cjs.map → chunk-AYFN43FB.cjs.map} +1 -1
  19. package/dist/{chunk-FGCA6CCM.js → chunk-BGOXFBFK.js} +295 -275
  20. package/dist/chunk-BGOXFBFK.js.map +1 -0
  21. package/dist/{chunk-XEY3CWQW.cjs → chunk-D2GH2HAK.cjs} +9 -9
  22. package/dist/{chunk-XEY3CWQW.cjs.map → chunk-D2GH2HAK.cjs.map} +1 -1
  23. package/dist/{chunk-6Z7D7CA3.cjs → chunk-DJKIK6ZB.cjs} +326 -306
  24. package/dist/chunk-DJKIK6ZB.cjs.map +1 -0
  25. package/dist/{chunk-XOZ737RO.js → chunk-EMAAAVRA.js} +3 -3
  26. package/dist/{chunk-XOZ737RO.js.map → chunk-EMAAAVRA.js.map} +1 -1
  27. package/dist/chunk-GOG77M6R.js +103 -0
  28. package/dist/chunk-GOG77M6R.js.map +1 -0
  29. package/dist/{chunk-UG3KS3XV.cjs → chunk-HXEHQLBD.cjs} +4 -4
  30. package/dist/{chunk-UG3KS3XV.cjs.map → chunk-HXEHQLBD.cjs.map} +1 -1
  31. package/dist/{chunk-MKWJKRSX.js → chunk-MEROMP3Z.js} +3 -3
  32. package/dist/{chunk-MKWJKRSX.js.map → chunk-MEROMP3Z.js.map} +1 -1
  33. package/dist/{chunk-C5C4PN54.js → chunk-O7IQL4DX.js} +288 -5
  34. package/dist/chunk-O7IQL4DX.js.map +1 -0
  35. package/dist/{chunk-VBAWR62U.cjs → chunk-QHEB6ZLO.cjs} +13 -11
  36. package/dist/chunk-QHEB6ZLO.cjs.map +1 -0
  37. package/dist/{chunk-5MCNXLGT.js → chunk-TQRLZH64.js} +4 -4
  38. package/dist/{chunk-5MCNXLGT.js.map → chunk-TQRLZH64.js.map} +1 -1
  39. package/dist/{chunk-QA2TWVUS.cjs → chunk-TWNFR6MQ.cjs} +288 -5
  40. package/dist/chunk-TWNFR6MQ.cjs.map +1 -0
  41. package/dist/{chunk-CDLIHAX2.cjs → chunk-UGN2UU3K.cjs} +4 -4
  42. package/dist/{chunk-CDLIHAX2.cjs.map → chunk-UGN2UU3K.cjs.map} +1 -1
  43. package/dist/{chunk-E3LAPNKY.js → chunk-WUQSFK7W.js} +4 -4
  44. package/dist/{chunk-E3LAPNKY.js.map → chunk-WUQSFK7W.js.map} +1 -1
  45. package/dist/{chunk-QBNRMJAN.cjs → chunk-YTVX52NU.cjs} +6 -6
  46. package/dist/{chunk-QBNRMJAN.cjs.map → chunk-YTVX52NU.cjs.map} +1 -1
  47. package/dist/chunk-ZAJTIZZF.cjs +108 -0
  48. package/dist/chunk-ZAJTIZZF.cjs.map +1 -0
  49. package/dist/{chunk-FLXWZUIG.js → chunk-ZC64CG7J.js} +26 -4
  50. package/dist/chunk-ZC64CG7J.js.map +1 -0
  51. package/dist/index.cjs +47 -43
  52. package/dist/index.js +10 -10
  53. package/dist/integration/index.cjs +3 -3
  54. package/dist/integration/index.js +1 -1
  55. package/dist/llm/model/model.d.ts.map +1 -1
  56. package/dist/llm/model/model.loop.d.ts +1 -1
  57. package/dist/llm/model/model.loop.d.ts.map +1 -1
  58. package/dist/loop/index.cjs +2 -2
  59. package/dist/loop/index.js +1 -1
  60. package/dist/loop/types.d.ts +2 -0
  61. package/dist/loop/types.d.ts.map +1 -1
  62. package/dist/loop/workflow/llm-execution.d.ts +1 -1
  63. package/dist/loop/workflow/llm-execution.d.ts.map +1 -1
  64. package/dist/mastra/index.cjs +2 -2
  65. package/dist/mastra/index.js +1 -1
  66. package/dist/memory/index.cjs +4 -4
  67. package/dist/memory/index.js +1 -1
  68. package/dist/network/index.cjs +4 -4
  69. package/dist/network/index.js +2 -2
  70. package/dist/network/vNext/index.cjs +14 -14
  71. package/dist/network/vNext/index.js +2 -2
  72. package/dist/processors/index.cjs +8 -8
  73. package/dist/processors/index.js +2 -2
  74. package/dist/relevance/index.cjs +4 -4
  75. package/dist/relevance/index.js +1 -1
  76. package/dist/scores/index.cjs +5 -5
  77. package/dist/scores/index.js +1 -1
  78. package/dist/storage/index.cjs +3 -3
  79. package/dist/storage/index.js +1 -1
  80. package/dist/stream/aisdk/v5/compat/consume-stream.d.ts +8 -0
  81. package/dist/stream/aisdk/v5/compat/consume-stream.d.ts.map +1 -0
  82. package/dist/stream/aisdk/v5/compat/content.d.ts +7 -0
  83. package/dist/stream/aisdk/v5/compat/content.d.ts.map +1 -0
  84. package/dist/stream/aisdk/v5/compat/delayed-promise.d.ts +23 -0
  85. package/dist/stream/aisdk/v5/compat/delayed-promise.d.ts.map +1 -0
  86. package/dist/stream/aisdk/v5/compat/index.d.ts +8 -0
  87. package/dist/stream/aisdk/v5/compat/index.d.ts.map +1 -0
  88. package/dist/stream/aisdk/v5/compat/media.d.ts +91 -0
  89. package/dist/stream/aisdk/v5/compat/media.d.ts.map +1 -0
  90. package/dist/stream/aisdk/v5/compat/prepare-tools.d.ts +11 -0
  91. package/dist/stream/aisdk/v5/compat/prepare-tools.d.ts.map +1 -0
  92. package/dist/stream/aisdk/v5/compat/ui-message.d.ts +20 -0
  93. package/dist/stream/aisdk/v5/compat/ui-message.d.ts.map +1 -0
  94. package/dist/stream/aisdk/v5/compat/validation.d.ts +17 -0
  95. package/dist/stream/aisdk/v5/compat/validation.d.ts.map +1 -0
  96. package/dist/stream/aisdk/v5/output.d.ts +1 -1
  97. package/dist/stream/base/output.d.ts +1 -1
  98. package/dist/stream/index.cjs +3 -3
  99. package/dist/stream/index.js +1 -1
  100. package/dist/test-utils/llm-mock.cjs +2 -2
  101. package/dist/test-utils/llm-mock.js +1 -1
  102. package/dist/tools/index.cjs +4 -4
  103. package/dist/tools/index.js +1 -1
  104. package/dist/tools/is-vercel-tool.cjs +2 -2
  105. package/dist/tools/is-vercel-tool.js +1 -1
  106. package/dist/tools/validation.d.ts.map +1 -1
  107. package/dist/utils.cjs +20 -16
  108. package/dist/utils.d.ts +9 -0
  109. package/dist/utils.d.ts.map +1 -1
  110. package/dist/utils.js +1 -1
  111. package/dist/workflows/evented/index.cjs +10 -10
  112. package/dist/workflows/evented/index.js +1 -1
  113. package/dist/workflows/index.cjs +10 -10
  114. package/dist/workflows/index.js +1 -1
  115. package/dist/workflows/legacy/index.cjs +22 -22
  116. package/dist/workflows/legacy/index.js +1 -1
  117. package/package.json +3 -3
  118. package/dist/chunk-6VROHRAR.cjs.map +0 -1
  119. package/dist/chunk-6Z7D7CA3.cjs.map +0 -1
  120. package/dist/chunk-BRNBKCHE.js.map +0 -1
  121. package/dist/chunk-C5C4PN54.js.map +0 -1
  122. package/dist/chunk-E4XQMNEI.cjs +0 -77
  123. package/dist/chunk-E4XQMNEI.cjs.map +0 -1
  124. package/dist/chunk-FGCA6CCM.js.map +0 -1
  125. package/dist/chunk-FLXWZUIG.js.map +0 -1
  126. package/dist/chunk-IVGAHFAJ.js +0 -72
  127. package/dist/chunk-IVGAHFAJ.js.map +0 -1
  128. package/dist/chunk-QA2TWVUS.cjs.map +0 -1
  129. package/dist/chunk-VBAWR62U.cjs.map +0 -1
  130. package/dist/stream/aisdk/v5/compat.d.ts +0 -182
  131. package/dist/stream/aisdk/v5/compat.d.ts.map +0 -1
@@ -1,4 +1,4 @@
1
- import { createTool } from './chunk-IVGAHFAJ.js';
1
+ import { createTool } from './chunk-GOG77M6R.js';
2
2
  import { z } from 'zod';
3
3
 
4
4
  // src/integration/integration.ts
@@ -86,5 +86,5 @@ var OpenAPIToolset = class {
86
86
  };
87
87
 
88
88
  export { Integration, OpenAPIToolset };
89
- //# sourceMappingURL=chunk-XOZ737RO.js.map
90
- //# sourceMappingURL=chunk-XOZ737RO.js.map
89
+ //# sourceMappingURL=chunk-EMAAAVRA.js.map
90
+ //# sourceMappingURL=chunk-EMAAAVRA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/integration/integration.ts","../src/integration/openapi-toolset.ts"],"names":[],"mappings":"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","file":"chunk-XOZ737RO.js","sourcesContent":["import type { ToolAction } from '../tools';\nimport type { Workflow } from '../workflows';\n\nexport class Integration<ToolsParams = void, ApiClient = void> {\n name: string = 'Integration';\n private workflows: Record<string, Workflow>;\n\n constructor() {\n this.workflows = {};\n }\n\n /**\n * Workflows\n */\n\n registerWorkflow(name: string, fn: Workflow) {\n if (this.workflows[name]) {\n throw new Error(`Sync function \"${name}\" already registered`);\n }\n this.workflows[name] = fn;\n }\n\n public getWorkflows({ serialized }: { serialized?: boolean }): Record<string, Workflow> {\n if (serialized) {\n return Object.entries(this.workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: {\n name: v.name,\n },\n };\n }, {});\n }\n return this.workflows;\n }\n\n /**\n * TOOLS\n */\n getStaticTools(_params?: ToolsParams): Record<string, ToolAction<any, any, any>> {\n throw new Error('Method not implemented.');\n }\n\n async getTools(_params?: ToolsParams): Promise<Record<string, ToolAction<any, any, any>>> {\n throw new Error('Method not implemented.');\n }\n\n async getApiClient(): Promise<ApiClient> {\n throw new Error('Method not implemented');\n }\n}\n","import { z } from 'zod';\n\nimport { createTool } from '../tools';\nimport type { ToolAction } from '../tools';\n\nexport abstract class OpenAPIToolset {\n abstract readonly name: string;\n abstract readonly tools: Record<string, ToolAction<any, any, any>>;\n\n authType: string = 'API_KEY';\n\n constructor() {}\n\n protected get toolSchemas(): any {\n return {};\n }\n\n protected get toolDocumentations(): Record<string, { comment: string; doc?: string }> {\n return {};\n }\n\n protected get baseClient(): any {\n return {};\n }\n\n async getApiClient(): Promise<any> {\n throw new Error('API not implemented');\n }\n\n protected _generateIntegrationTools<T>() {\n const { client: _client, ...clientMethods } = this.baseClient;\n const schemas = this.toolSchemas;\n const documentations = this.toolDocumentations;\n\n const tools = Object.keys(clientMethods).reduce((acc, key) => {\n const comment = documentations[key]?.comment;\n // const doc = documentations[key]?.doc;\n const fallbackComment = `Execute ${key}`;\n\n const tool = createTool({\n id: key,\n inputSchema: schemas[key] || z.object({}),\n description: comment || fallbackComment,\n // documentation: doc || fallbackComment,\n execute: async ({ context }) => {\n const client = await this.getApiClient();\n const value = client[key as keyof typeof client];\n return (value as any)({\n ...(context as any),\n });\n },\n });\n\n return { ...acc, [key]: tool };\n }, {});\n\n return tools as T;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/integration/integration.ts","../src/integration/openapi-toolset.ts"],"names":[],"mappings":"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","file":"chunk-EMAAAVRA.js","sourcesContent":["import type { ToolAction } from '../tools';\nimport type { Workflow } from '../workflows';\n\nexport class Integration<ToolsParams = void, ApiClient = void> {\n name: string = 'Integration';\n private workflows: Record<string, Workflow>;\n\n constructor() {\n this.workflows = {};\n }\n\n /**\n * Workflows\n */\n\n registerWorkflow(name: string, fn: Workflow) {\n if (this.workflows[name]) {\n throw new Error(`Sync function \"${name}\" already registered`);\n }\n this.workflows[name] = fn;\n }\n\n public getWorkflows({ serialized }: { serialized?: boolean }): Record<string, Workflow> {\n if (serialized) {\n return Object.entries(this.workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: {\n name: v.name,\n },\n };\n }, {});\n }\n return this.workflows;\n }\n\n /**\n * TOOLS\n */\n getStaticTools(_params?: ToolsParams): Record<string, ToolAction<any, any, any>> {\n throw new Error('Method not implemented.');\n }\n\n async getTools(_params?: ToolsParams): Promise<Record<string, ToolAction<any, any, any>>> {\n throw new Error('Method not implemented.');\n }\n\n async getApiClient(): Promise<ApiClient> {\n throw new Error('Method not implemented');\n }\n}\n","import { z } from 'zod';\n\nimport { createTool } from '../tools';\nimport type { ToolAction } from '../tools';\n\nexport abstract class OpenAPIToolset {\n abstract readonly name: string;\n abstract readonly tools: Record<string, ToolAction<any, any, any>>;\n\n authType: string = 'API_KEY';\n\n constructor() {}\n\n protected get toolSchemas(): any {\n return {};\n }\n\n protected get toolDocumentations(): Record<string, { comment: string; doc?: string }> {\n return {};\n }\n\n protected get baseClient(): any {\n return {};\n }\n\n async getApiClient(): Promise<any> {\n throw new Error('API not implemented');\n }\n\n protected _generateIntegrationTools<T>() {\n const { client: _client, ...clientMethods } = this.baseClient;\n const schemas = this.toolSchemas;\n const documentations = this.toolDocumentations;\n\n const tools = Object.keys(clientMethods).reduce((acc, key) => {\n const comment = documentations[key]?.comment;\n // const doc = documentations[key]?.doc;\n const fallbackComment = `Execute ${key}`;\n\n const tool = createTool({\n id: key,\n inputSchema: schemas[key] || z.object({}),\n description: comment || fallbackComment,\n // documentation: doc || fallbackComment,\n execute: async ({ context }) => {\n const client = await this.getApiClient();\n const value = client[key as keyof typeof client];\n return (value as any)({\n ...(context as any),\n });\n },\n });\n\n return { ...acc, [key]: tool };\n }, {});\n\n return tools as T;\n }\n}\n"]}
@@ -0,0 +1,103 @@
1
+ // src/tools/validation.ts
2
+ function validateToolInput(schema, input, toolId) {
3
+ if (!schema || !("safeParse" in schema)) {
4
+ return { data: input };
5
+ }
6
+ const validationAttempts = [];
7
+ const directValidation = schema.safeParse(input);
8
+ validationAttempts.push({
9
+ result: directValidation,
10
+ data: input,
11
+ structure: "direct"
12
+ });
13
+ if (directValidation.success) {
14
+ return { data: input };
15
+ }
16
+ if (input && typeof input === "object" && "context" in input) {
17
+ const contextData = input.context;
18
+ const contextValidation = schema.safeParse(contextData);
19
+ validationAttempts.push({
20
+ result: contextValidation,
21
+ data: contextData,
22
+ structure: "context"
23
+ });
24
+ if (contextValidation.success) {
25
+ return { data: { ...input, context: contextValidation.data } };
26
+ }
27
+ if (contextData && typeof contextData === "object" && "inputData" in contextData) {
28
+ const inputDataValue = contextData.inputData;
29
+ const inputDataValidation = schema.safeParse(inputDataValue);
30
+ validationAttempts.push({
31
+ result: inputDataValidation,
32
+ data: inputDataValue,
33
+ structure: "inputData"
34
+ });
35
+ if (inputDataValidation.success) {
36
+ const contextKeys = Object.keys(contextData);
37
+ if (contextKeys.length === 1 && contextKeys[0] === "inputData") {
38
+ return { data: { ...input, context: { inputData: inputDataValidation.data } } };
39
+ } else {
40
+ return { data: inputDataValidation.data };
41
+ }
42
+ }
43
+ }
44
+ }
45
+ let bestAttempt = validationAttempts[0];
46
+ for (const attempt of validationAttempts) {
47
+ if (!attempt.result.success && attempt.result.error.issues.length > 0) {
48
+ bestAttempt = attempt;
49
+ }
50
+ }
51
+ if (bestAttempt && !bestAttempt.result.success) {
52
+ const errorMessages = bestAttempt.result.error.issues.map((e) => `- ${e.path?.join(".") || "root"}: ${e.message}`).join("\n");
53
+ const error = {
54
+ error: true,
55
+ message: `Tool validation failed${toolId ? ` for ${toolId}` : ""}. Please fix the following errors and try again:
56
+ ${errorMessages}
57
+
58
+ Provided arguments: ${JSON.stringify(bestAttempt.data, null, 2)}`,
59
+ validationErrors: bestAttempt.result.error.format()
60
+ };
61
+ return { data: input, error };
62
+ }
63
+ return { data: input };
64
+ }
65
+
66
+ // src/tools/tool.ts
67
+ var Tool = class {
68
+ id;
69
+ description;
70
+ inputSchema;
71
+ outputSchema;
72
+ execute;
73
+ mastra;
74
+ constructor(opts) {
75
+ this.id = opts.id;
76
+ this.description = opts.description;
77
+ this.inputSchema = opts.inputSchema;
78
+ this.outputSchema = opts.outputSchema;
79
+ this.mastra = opts.mastra;
80
+ if (opts.execute) {
81
+ const originalExecute = opts.execute;
82
+ this.execute = async (context, options) => {
83
+ const { data, error } = validateToolInput(this.inputSchema, context, this.id);
84
+ if (error) {
85
+ return error;
86
+ }
87
+ return originalExecute(data, options);
88
+ };
89
+ }
90
+ }
91
+ };
92
+ function createTool(opts) {
93
+ return new Tool(opts);
94
+ }
95
+
96
+ // src/tools/toolchecks.ts
97
+ function isVercelTool(tool) {
98
+ return !!(tool && !(tool instanceof Tool) && "parameters" in tool);
99
+ }
100
+
101
+ export { Tool, createTool, isVercelTool, validateToolInput };
102
+ //# sourceMappingURL=chunk-GOG77M6R.js.map
103
+ //# sourceMappingURL=chunk-GOG77M6R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tools/validation.ts","../src/tools/tool.ts","../src/tools/toolchecks.ts"],"names":[],"mappings":"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","file":"chunk-GOG77M6R.js","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 { ToolExecutionOptions } from 'ai';\nimport type { z } from 'zod';\n\nimport type { Mastra } from '../mastra';\nimport type { ToolAction, 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?: ToolExecutionOptions) => {\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) => 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"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkE4XQMNEI_cjs = require('./chunk-E4XQMNEI.cjs');
3
+ var chunkZAJTIZZF_cjs = require('./chunk-ZAJTIZZF.cjs');
4
4
  var zod = require('zod');
5
5
 
6
6
  // src/integration/integration.ts
@@ -68,7 +68,7 @@ var OpenAPIToolset = class {
68
68
  const tools = Object.keys(clientMethods).reduce((acc, key) => {
69
69
  const comment = documentations[key]?.comment;
70
70
  const fallbackComment = `Execute ${key}`;
71
- const tool = chunkE4XQMNEI_cjs.createTool({
71
+ const tool = chunkZAJTIZZF_cjs.createTool({
72
72
  id: key,
73
73
  inputSchema: schemas[key] || zod.z.object({}),
74
74
  description: comment || fallbackComment,
@@ -89,5 +89,5 @@ var OpenAPIToolset = class {
89
89
 
90
90
  exports.Integration = Integration;
91
91
  exports.OpenAPIToolset = OpenAPIToolset;
92
- //# sourceMappingURL=chunk-UG3KS3XV.cjs.map
93
- //# sourceMappingURL=chunk-UG3KS3XV.cjs.map
92
+ //# sourceMappingURL=chunk-HXEHQLBD.cjs.map
93
+ //# sourceMappingURL=chunk-HXEHQLBD.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/integration/integration.ts","../src/integration/openapi-toolset.ts"],"names":["createTool","z"],"mappings":";;;;;;AAGO,IAAM,cAAN,MAAwD;AAAA,EAC7D,IAAA,GAAe,aAAA;AAAA,EACP,SAAA;AAAA,EAER,WAAA,GAAc;AACZ,IAAA,IAAA,CAAK,YAAY,EAAC;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAA,CAAiB,MAAc,EAAA,EAAc;AAC3C,IAAA,IAAI,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG;AACxB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,IAAI,CAAA,oBAAA,CAAsB,CAAA;AAAA,IAC9D;AACA,IAAA,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,GAAI,EAAA;AAAA,EACzB;AAAA,EAEO,YAAA,CAAa,EAAE,UAAA,EAAW,EAAuD;AACtF,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AAC5D,QAAA,OAAO;AAAA,UACL,GAAG,GAAA;AAAA,UACH,CAAC,CAAC,GAAG;AAAA,YACH,MAAM,CAAA,CAAE;AAAA;AACV,SACF;AAAA,MACF,CAAA,EAAG,EAAE,CAAA;AAAA,IACP;AACA,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,OAAA,EAAkE;AAC/E,IAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,SAAS,OAAA,EAA2E;AACxF,IAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,YAAA,GAAmC;AACvC,IAAA,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA,EAC1C;AACF;AC7CO,IAAe,iBAAf,MAA8B;AAAA,EAInC,QAAA,GAAmB,SAAA;AAAA,EAEnB,WAAA,GAAc;AAAA,EAAC;AAAA,EAEf,IAAc,WAAA,GAAmB;AAC/B,IAAA,OAAO,EAAC;AAAA,EACV;AAAA,EAEA,IAAc,kBAAA,GAAwE;AACpF,IAAA,OAAO,EAAC;AAAA,EACV;AAAA,EAEA,IAAc,UAAA,GAAkB;AAC9B,IAAA,OAAO,EAAC;AAAA,EACV;AAAA,EAEA,MAAM,YAAA,GAA6B;AACjC,IAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,EACvC;AAAA,EAEU,yBAAA,GAA+B;AACvC,IAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,GAAG,aAAA,KAAkB,IAAA,CAAK,UAAA;AACnD,IAAA,MAAM,UAAU,IAAA,CAAK,WAAA;AACrB,IAAA,MAAM,iBAAiB,IAAA,CAAK,kBAAA;AAE5B,IAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,aAAa,EAAE,MAAA,CAAO,CAAC,KAAK,GAAA,KAAQ;AAC5D,MAAA,MAAM,OAAA,GAAU,cAAA,CAAe,GAAG,CAAA,EAAG,OAAA;AAErC,MAAA,MAAM,eAAA,GAAkB,WAAW,GAAG,CAAA,CAAA;AAEtC,MAAA,MAAM,OAAOA,4BAAA,CAAW;AAAA,QACtB,EAAA,EAAI,GAAA;AAAA,QACJ,aAAa,OAAA,CAAQ,GAAG,KAAKC,KAAA,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,QACxC,aAAa,OAAA,IAAW,eAAA;AAAA;AAAA,QAExB,OAAA,EAAS,OAAO,EAAE,OAAA,EAAQ,KAAM;AAC9B,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,YAAA,EAAa;AACvC,UAAA,MAAM,KAAA,GAAQ,OAAO,GAA0B,CAAA;AAC/C,UAAA,OAAQ,KAAA,CAAc;AAAA,YACpB,GAAI;AAAA,WACL,CAAA;AAAA,QACH;AAAA,OACD,CAAA;AAED,MAAA,OAAO,EAAE,GAAG,GAAA,EAAK,CAAC,GAAG,GAAG,IAAA,EAAK;AAAA,IAC/B,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,OAAO,KAAA;AAAA,EACT;AACF","file":"chunk-UG3KS3XV.cjs","sourcesContent":["import type { ToolAction } from '../tools';\nimport type { Workflow } from '../workflows';\n\nexport class Integration<ToolsParams = void, ApiClient = void> {\n name: string = 'Integration';\n private workflows: Record<string, Workflow>;\n\n constructor() {\n this.workflows = {};\n }\n\n /**\n * Workflows\n */\n\n registerWorkflow(name: string, fn: Workflow) {\n if (this.workflows[name]) {\n throw new Error(`Sync function \"${name}\" already registered`);\n }\n this.workflows[name] = fn;\n }\n\n public getWorkflows({ serialized }: { serialized?: boolean }): Record<string, Workflow> {\n if (serialized) {\n return Object.entries(this.workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: {\n name: v.name,\n },\n };\n }, {});\n }\n return this.workflows;\n }\n\n /**\n * TOOLS\n */\n getStaticTools(_params?: ToolsParams): Record<string, ToolAction<any, any, any>> {\n throw new Error('Method not implemented.');\n }\n\n async getTools(_params?: ToolsParams): Promise<Record<string, ToolAction<any, any, any>>> {\n throw new Error('Method not implemented.');\n }\n\n async getApiClient(): Promise<ApiClient> {\n throw new Error('Method not implemented');\n }\n}\n","import { z } from 'zod';\n\nimport { createTool } from '../tools';\nimport type { ToolAction } from '../tools';\n\nexport abstract class OpenAPIToolset {\n abstract readonly name: string;\n abstract readonly tools: Record<string, ToolAction<any, any, any>>;\n\n authType: string = 'API_KEY';\n\n constructor() {}\n\n protected get toolSchemas(): any {\n return {};\n }\n\n protected get toolDocumentations(): Record<string, { comment: string; doc?: string }> {\n return {};\n }\n\n protected get baseClient(): any {\n return {};\n }\n\n async getApiClient(): Promise<any> {\n throw new Error('API not implemented');\n }\n\n protected _generateIntegrationTools<T>() {\n const { client: _client, ...clientMethods } = this.baseClient;\n const schemas = this.toolSchemas;\n const documentations = this.toolDocumentations;\n\n const tools = Object.keys(clientMethods).reduce((acc, key) => {\n const comment = documentations[key]?.comment;\n // const doc = documentations[key]?.doc;\n const fallbackComment = `Execute ${key}`;\n\n const tool = createTool({\n id: key,\n inputSchema: schemas[key] || z.object({}),\n description: comment || fallbackComment,\n // documentation: doc || fallbackComment,\n execute: async ({ context }) => {\n const client = await this.getApiClient();\n const value = client[key as keyof typeof client];\n return (value as any)({\n ...(context as any),\n });\n },\n });\n\n return { ...acc, [key]: tool };\n }, {});\n\n return tools as T;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/integration/integration.ts","../src/integration/openapi-toolset.ts"],"names":["createTool","z"],"mappings":"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","file":"chunk-HXEHQLBD.cjs","sourcesContent":["import type { ToolAction } from '../tools';\nimport type { Workflow } from '../workflows';\n\nexport class Integration<ToolsParams = void, ApiClient = void> {\n name: string = 'Integration';\n private workflows: Record<string, Workflow>;\n\n constructor() {\n this.workflows = {};\n }\n\n /**\n * Workflows\n */\n\n registerWorkflow(name: string, fn: Workflow) {\n if (this.workflows[name]) {\n throw new Error(`Sync function \"${name}\" already registered`);\n }\n this.workflows[name] = fn;\n }\n\n public getWorkflows({ serialized }: { serialized?: boolean }): Record<string, Workflow> {\n if (serialized) {\n return Object.entries(this.workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: {\n name: v.name,\n },\n };\n }, {});\n }\n return this.workflows;\n }\n\n /**\n * TOOLS\n */\n getStaticTools(_params?: ToolsParams): Record<string, ToolAction<any, any, any>> {\n throw new Error('Method not implemented.');\n }\n\n async getTools(_params?: ToolsParams): Promise<Record<string, ToolAction<any, any, any>>> {\n throw new Error('Method not implemented.');\n }\n\n async getApiClient(): Promise<ApiClient> {\n throw new Error('Method not implemented');\n }\n}\n","import { z } from 'zod';\n\nimport { createTool } from '../tools';\nimport type { ToolAction } from '../tools';\n\nexport abstract class OpenAPIToolset {\n abstract readonly name: string;\n abstract readonly tools: Record<string, ToolAction<any, any, any>>;\n\n authType: string = 'API_KEY';\n\n constructor() {}\n\n protected get toolSchemas(): any {\n return {};\n }\n\n protected get toolDocumentations(): Record<string, { comment: string; doc?: string }> {\n return {};\n }\n\n protected get baseClient(): any {\n return {};\n }\n\n async getApiClient(): Promise<any> {\n throw new Error('API not implemented');\n }\n\n protected _generateIntegrationTools<T>() {\n const { client: _client, ...clientMethods } = this.baseClient;\n const schemas = this.toolSchemas;\n const documentations = this.toolDocumentations;\n\n const tools = Object.keys(clientMethods).reduce((acc, key) => {\n const comment = documentations[key]?.comment;\n // const doc = documentations[key]?.doc;\n const fallbackComment = `Execute ${key}`;\n\n const tool = createTool({\n id: key,\n inputSchema: schemas[key] || z.object({}),\n description: comment || fallbackComment,\n // documentation: doc || fallbackComment,\n execute: async ({ context }) => {\n const client = await this.getApiClient();\n const value = client[key as keyof typeof client];\n return (value as any)({\n ...(context as any),\n });\n },\n });\n\n return { ...acc, [key]: tool };\n }, {});\n\n return tools as T;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Agent } from './chunk-FGCA6CCM.js';
1
+ import { Agent } from './chunk-BGOXFBFK.js';
2
2
 
3
3
  // src/relevance/cohere/index.ts
4
4
  var CohereRelevanceScorer = class {
@@ -83,5 +83,5 @@ Always return just the number, no explanation.`,
83
83
  };
84
84
 
85
85
  export { CohereRelevanceScorer, MastraAgentRelevanceScorer, createSimilarityPrompt };
86
- //# sourceMappingURL=chunk-MKWJKRSX.js.map
87
- //# sourceMappingURL=chunk-MKWJKRSX.js.map
86
+ //# sourceMappingURL=chunk-MEROMP3Z.js.map
87
+ //# sourceMappingURL=chunk-MEROMP3Z.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/relevance/cohere/index.ts","../src/relevance/relevance-score-provider.ts","../src/relevance/mastra-agent/index.ts"],"names":[],"mappings":";;;AAoBO,IAAM,wBAAN,MAA8D;AAAA,EAC3D,KAAA;AAAA,EACA,MAAA;AAAA,EACR,WAAA,CAAY,OAAe,MAAA,EAAiB;AAC1C,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KACF;AACA,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AAAA,EACA,MAAM,iBAAA,CAAkB,KAAA,EAAe,IAAA,EAA+B;AACpE,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,gCAAA,CAAA,EAAoC;AAAA,MAC/D,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB,kBAAA;AAAA,QAChB,aAAA,EAAe,CAAA,OAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AAAA,OACtC;AAAA,MACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,QACnB,KAAA;AAAA,QACA,SAAA,EAAW,CAAC,IAAI,CAAA;AAAA,QAChB,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,KAAA,EAAO;AAAA,OACR;AAAA,KACF,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,QAAA,CAAS,MAAM,IAAI,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,CAAE,CAAA;AAAA,IACjF;AAEA,IAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAClC,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,EAAG,eAAA;AAExC,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,IAC/D;AAEA,IAAA,OAAO,cAAA;AAAA,EACT;AACF;;;ACpDO,SAAS,sBAAA,CAAuB,OAAe,IAAA,EAAsB;AAC1E,EAAA,OAAO,CAAA;;AAAA,OAAA,EAEA,KAAK;;AAAA,MAAA,EAEN,IAAI;;AAAA,sBAAA,CAAA;AAGZ;;;ACRO,IAAM,6BAAN,MAAmE;AAAA,EAChE,KAAA;AAAA,EAER,WAAA,CAAY,MAAc,KAAA,EAA4B;AACpD,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,KAAA,CAAM;AAAA,MACrB,IAAA,EAAM,oBAAoB,IAAI,CAAA,CAAA;AAAA,MAC9B,YAAA,EAAc,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CAAA,CAAA;AAAA,MAUd;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,iBAAA,CAAkB,KAAA,EAAe,IAAA,EAA+B;AACpE,IAAA,MAAM,MAAA,GAAS,sBAAA,CAAuB,KAAA,EAAO,IAAI,CAAA;AAEjD,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,KAAA,CAAM,QAAA,EAAS;AAExC,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI,KAAA,CAAM,yBAAyB,IAAA,EAAM;AACvC,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,KAAA,CAAM,cAAc,MAAM,CAAA;AAC1D,MAAA,QAAA,GAAW,YAAA,CAAa,IAAA;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,KAAA,CAAM,SAAS,MAAM,CAAA;AACrD,MAAA,QAAA,GAAW,YAAA,CAAa,IAAA;AAAA,IAC1B;AACA,IAAA,OAAO,WAAW,QAAQ,CAAA;AAAA,EAC5B;AACF","file":"chunk-MKWJKRSX.js","sourcesContent":["import type { RelevanceScoreProvider } from '../relevance-score-provider';\n\ninterface CohereRerankingResponse {\n results: Array<{\n index: number;\n relevance_score: number;\n }>;\n id: string;\n meta: {\n api_version: {\n version: string;\n is_experimental: boolean;\n };\n billed_units: {\n search_units: number;\n };\n };\n}\n\n/** @deprecated Import from `@mastra/rag` instead */\nexport class CohereRelevanceScorer implements RelevanceScoreProvider {\n private model: string;\n private apiKey?: string;\n constructor(model: string, apiKey?: string) {\n console.warn(\n 'CohereRelevanceScorer exported from @mastra/core is deprecated. Please import from \"@mastra/rag\" instead.',\n );\n this.apiKey = apiKey;\n this.model = model;\n }\n async getRelevanceScore(query: string, text: string): Promise<number> {\n const response = await fetch(`https://api.cohere.com/v2/rerank`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n },\n body: JSON.stringify({\n query,\n documents: [text],\n model: this.model,\n top_n: 1,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Cohere API error: ${response.status} ${await response.text()}`);\n }\n\n const data = (await response.json()) as CohereRerankingResponse;\n const relevanceScore = data.results[0]?.relevance_score;\n\n if (!relevanceScore) {\n throw new Error('No relevance score found on Cohere response');\n }\n\n return relevanceScore;\n }\n}\n","// Provider interfaces\nexport interface RelevanceScoreProvider {\n getRelevanceScore(text1: string, text2: string): Promise<number>;\n}\n\n// Helper function used by providers\nexport function createSimilarityPrompt(query: string, text: string): string {\n return `Rate the semantic similarity between the following the query and the text on a scale from 0 to 1 (decimals allowed), where 1 means exactly the same meaning and 0 means completely different:\n\nQuery: ${query}\n\nText: ${text}\n\nRelevance score (0-1):`;\n}\n","import { Agent } from '../../agent';\nimport type { MastraLanguageModel } from '../../llm/model/shared.types';\nimport { createSimilarityPrompt } from '../relevance-score-provider';\nimport type { RelevanceScoreProvider } from '../relevance-score-provider';\n\n// Mastra Agent implementation\nexport class MastraAgentRelevanceScorer implements RelevanceScoreProvider {\n private agent: Agent;\n\n constructor(name: string, model: MastraLanguageModel) {\n this.agent = new Agent({\n name: `Relevance Scorer ${name}`,\n instructions: `You are a specialized agent for evaluating the relevance of text to queries.\nYour task is to rate how well a text passage answers a given query.\nOutput only a number between 0 and 1, where:\n1.0 = Perfectly relevant, directly answers the query\n0.0 = Completely irrelevant\nConsider:\n- Direct relevance to the question\n- Completeness of information\n- Quality and specificity\nAlways return just the number, no explanation.`,\n model,\n });\n }\n\n async getRelevanceScore(query: string, text: string): Promise<number> {\n const prompt = createSimilarityPrompt(query, text);\n\n const model = await this.agent.getModel();\n\n let response: string;\n if (model.specificationVersion === 'v2') {\n const responseText = await this.agent.generateVNext(prompt);\n response = responseText.text;\n } else {\n const responseText = await this.agent.generate(prompt);\n response = responseText.text;\n }\n return parseFloat(response);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/relevance/cohere/index.ts","../src/relevance/relevance-score-provider.ts","../src/relevance/mastra-agent/index.ts"],"names":[],"mappings":";;;AAoBO,IAAM,wBAAN,MAA8D;AAAA,EAC3D,KAAA;AAAA,EACA,MAAA;AAAA,EACR,WAAA,CAAY,OAAe,MAAA,EAAiB;AAC1C,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KACF;AACA,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AAAA,EACA,MAAM,iBAAA,CAAkB,KAAA,EAAe,IAAA,EAA+B;AACpE,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,gCAAA,CAAA,EAAoC;AAAA,MAC/D,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB,kBAAA;AAAA,QAChB,aAAA,EAAe,CAAA,OAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AAAA,OACtC;AAAA,MACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,QACnB,KAAA;AAAA,QACA,SAAA,EAAW,CAAC,IAAI,CAAA;AAAA,QAChB,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,KAAA,EAAO;AAAA,OACR;AAAA,KACF,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,QAAA,CAAS,MAAM,IAAI,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,CAAE,CAAA;AAAA,IACjF;AAEA,IAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAClC,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,EAAG,eAAA;AAExC,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,IAC/D;AAEA,IAAA,OAAO,cAAA;AAAA,EACT;AACF;;;ACpDO,SAAS,sBAAA,CAAuB,OAAe,IAAA,EAAsB;AAC1E,EAAA,OAAO,CAAA;;AAAA,OAAA,EAEA,KAAK;;AAAA,MAAA,EAEN,IAAI;;AAAA,sBAAA,CAAA;AAGZ;;;ACRO,IAAM,6BAAN,MAAmE;AAAA,EAChE,KAAA;AAAA,EAER,WAAA,CAAY,MAAc,KAAA,EAA4B;AACpD,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,KAAA,CAAM;AAAA,MACrB,IAAA,EAAM,oBAAoB,IAAI,CAAA,CAAA;AAAA,MAC9B,YAAA,EAAc,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CAAA,CAAA;AAAA,MAUd;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,iBAAA,CAAkB,KAAA,EAAe,IAAA,EAA+B;AACpE,IAAA,MAAM,MAAA,GAAS,sBAAA,CAAuB,KAAA,EAAO,IAAI,CAAA;AAEjD,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,KAAA,CAAM,QAAA,EAAS;AAExC,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI,KAAA,CAAM,yBAAyB,IAAA,EAAM;AACvC,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,KAAA,CAAM,cAAc,MAAM,CAAA;AAC1D,MAAA,QAAA,GAAW,YAAA,CAAa,IAAA;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,KAAA,CAAM,SAAS,MAAM,CAAA;AACrD,MAAA,QAAA,GAAW,YAAA,CAAa,IAAA;AAAA,IAC1B;AACA,IAAA,OAAO,WAAW,QAAQ,CAAA;AAAA,EAC5B;AACF","file":"chunk-MEROMP3Z.js","sourcesContent":["import type { RelevanceScoreProvider } from '../relevance-score-provider';\n\ninterface CohereRerankingResponse {\n results: Array<{\n index: number;\n relevance_score: number;\n }>;\n id: string;\n meta: {\n api_version: {\n version: string;\n is_experimental: boolean;\n };\n billed_units: {\n search_units: number;\n };\n };\n}\n\n/** @deprecated Import from `@mastra/rag` instead */\nexport class CohereRelevanceScorer implements RelevanceScoreProvider {\n private model: string;\n private apiKey?: string;\n constructor(model: string, apiKey?: string) {\n console.warn(\n 'CohereRelevanceScorer exported from @mastra/core is deprecated. Please import from \"@mastra/rag\" instead.',\n );\n this.apiKey = apiKey;\n this.model = model;\n }\n async getRelevanceScore(query: string, text: string): Promise<number> {\n const response = await fetch(`https://api.cohere.com/v2/rerank`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n },\n body: JSON.stringify({\n query,\n documents: [text],\n model: this.model,\n top_n: 1,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Cohere API error: ${response.status} ${await response.text()}`);\n }\n\n const data = (await response.json()) as CohereRerankingResponse;\n const relevanceScore = data.results[0]?.relevance_score;\n\n if (!relevanceScore) {\n throw new Error('No relevance score found on Cohere response');\n }\n\n return relevanceScore;\n }\n}\n","// Provider interfaces\nexport interface RelevanceScoreProvider {\n getRelevanceScore(text1: string, text2: string): Promise<number>;\n}\n\n// Helper function used by providers\nexport function createSimilarityPrompt(query: string, text: string): string {\n return `Rate the semantic similarity between the following the query and the text on a scale from 0 to 1 (decimals allowed), where 1 means exactly the same meaning and 0 means completely different:\n\nQuery: ${query}\n\nText: ${text}\n\nRelevance score (0-1):`;\n}\n","import { Agent } from '../../agent';\nimport type { MastraLanguageModel } from '../../llm/model/shared.types';\nimport { createSimilarityPrompt } from '../relevance-score-provider';\nimport type { RelevanceScoreProvider } from '../relevance-score-provider';\n\n// Mastra Agent implementation\nexport class MastraAgentRelevanceScorer implements RelevanceScoreProvider {\n private agent: Agent;\n\n constructor(name: string, model: MastraLanguageModel) {\n this.agent = new Agent({\n name: `Relevance Scorer ${name}`,\n instructions: `You are a specialized agent for evaluating the relevance of text to queries.\nYour task is to rate how well a text passage answers a given query.\nOutput only a number between 0 and 1, where:\n1.0 = Perfectly relevant, directly answers the query\n0.0 = Completely irrelevant\nConsider:\n- Direct relevance to the question\n- Completeness of information\n- Quality and specificity\nAlways return just the number, no explanation.`,\n model,\n });\n }\n\n async getRelevanceScore(query: string, text: string): Promise<number> {\n const prompt = createSimilarityPrompt(query, text);\n\n const model = await this.agent.getModel();\n\n let response: string;\n if (model.specificationVersion === 'v2') {\n const responseText = await this.agent.generateVNext(prompt);\n response = responseText.text;\n } else {\n const responseText = await this.agent.generate(prompt);\n response = responseText.text;\n }\n return parseFloat(response);\n }\n}\n"]}
@@ -1,8 +1,10 @@
1
+ import { fetchWithRetry } from './chunk-ZC64CG7J.js';
1
2
  import { MastraError } from './chunk-MCOVMKIS.js';
2
3
  import { randomUUID } from 'crypto';
3
4
  import * as AIV4 from 'ai';
4
5
  import * as AIV5 from 'ai-v5';
5
6
  import { convertUint8ArrayToBase64, convertBase64ToUint8Array } from '@ai-sdk/provider-utils';
7
+ import { isUrlSupported, convertBase64ToUint8Array as convertBase64ToUint8Array$1 } from '@ai-sdk/provider-utils-v5';
6
8
  import { z } from 'zod';
7
9
 
8
10
  var DefaultGeneratedFile = class {
@@ -37,6 +39,178 @@ var DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {
37
39
  }
38
40
  };
39
41
 
42
+ // src/stream/aisdk/v5/compat/content.ts
43
+ function splitDataUrl(dataUrl) {
44
+ try {
45
+ const [header, base64Content] = dataUrl.split(",");
46
+ return {
47
+ mediaType: header?.split(";")[0]?.split(":")[1],
48
+ base64Content
49
+ };
50
+ } catch {
51
+ return {
52
+ mediaType: void 0,
53
+ base64Content: void 0
54
+ };
55
+ }
56
+ }
57
+ function convertToDataContent(content) {
58
+ if (content instanceof Uint8Array) {
59
+ return { data: content, mediaType: void 0 };
60
+ }
61
+ if (content instanceof ArrayBuffer) {
62
+ return { data: new Uint8Array(content), mediaType: void 0 };
63
+ }
64
+ if (typeof content === "string") {
65
+ try {
66
+ content = new URL(content);
67
+ } catch {
68
+ }
69
+ }
70
+ if (content instanceof URL && content.protocol === "data:") {
71
+ const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(content.toString());
72
+ if (dataUrlMediaType == null || base64Content == null) {
73
+ throw new MastraError({
74
+ id: "INVALID_DATA_URL_FORMAT",
75
+ text: `Invalid data URL format in content ${content.toString()}`,
76
+ domain: "LLM" /* LLM */,
77
+ category: "USER" /* USER */
78
+ });
79
+ }
80
+ return { data: base64Content, mediaType: dataUrlMediaType };
81
+ }
82
+ return { data: content, mediaType: void 0 };
83
+ }
84
+ var imageMediaTypeSignatures = [
85
+ {
86
+ mediaType: "image/gif",
87
+ bytesPrefix: [71, 73, 70],
88
+ base64Prefix: "R0lG"
89
+ },
90
+ {
91
+ mediaType: "image/png",
92
+ bytesPrefix: [137, 80, 78, 71],
93
+ base64Prefix: "iVBORw"
94
+ },
95
+ {
96
+ mediaType: "image/jpeg",
97
+ bytesPrefix: [255, 216],
98
+ base64Prefix: "/9j/"
99
+ },
100
+ {
101
+ mediaType: "image/webp",
102
+ bytesPrefix: [82, 73, 70, 70],
103
+ base64Prefix: "UklGRg"
104
+ },
105
+ {
106
+ mediaType: "image/bmp",
107
+ bytesPrefix: [66, 77],
108
+ base64Prefix: "Qk"
109
+ },
110
+ {
111
+ mediaType: "image/tiff",
112
+ bytesPrefix: [73, 73, 42, 0],
113
+ base64Prefix: "SUkqAA"
114
+ },
115
+ {
116
+ mediaType: "image/tiff",
117
+ bytesPrefix: [77, 77, 0, 42],
118
+ base64Prefix: "TU0AKg"
119
+ },
120
+ {
121
+ mediaType: "image/avif",
122
+ bytesPrefix: [0, 0, 0, 32, 102, 116, 121, 112, 97, 118, 105, 102],
123
+ base64Prefix: "AAAAIGZ0eXBhdmlm"
124
+ },
125
+ {
126
+ mediaType: "image/heic",
127
+ bytesPrefix: [0, 0, 0, 32, 102, 116, 121, 112, 104, 101, 105, 99],
128
+ base64Prefix: "AAAAIGZ0eXBoZWlj"
129
+ }
130
+ ];
131
+ var stripID3 = (data) => {
132
+ const bytes = typeof data === "string" ? convertBase64ToUint8Array$1(data) : data;
133
+ const id3Size = (
134
+ // @ts-ignore
135
+ (bytes[6] & 127) << 21 | // @ts-ignore
136
+ (bytes[7] & 127) << 14 | // @ts-ignore
137
+ (bytes[8] & 127) << 7 | // @ts-ignore
138
+ bytes[9] & 127
139
+ );
140
+ return bytes.slice(id3Size + 10);
141
+ };
142
+ function stripID3TagsIfPresent(data) {
143
+ const hasId3 = typeof data === "string" && data.startsWith("SUQz") || typeof data !== "string" && data.length > 10 && data[0] === 73 && // 'I'
144
+ data[1] === 68 && // 'D'
145
+ data[2] === 51;
146
+ return hasId3 ? stripID3(data) : data;
147
+ }
148
+ function detectMediaType({
149
+ data,
150
+ signatures
151
+ }) {
152
+ const processedData = stripID3TagsIfPresent(data);
153
+ for (const signature of signatures) {
154
+ if (typeof processedData === "string" ? processedData.startsWith(signature.base64Prefix) : processedData.length >= signature.bytesPrefix.length && signature.bytesPrefix.every((byte, index) => processedData[index] === byte)) {
155
+ return signature.mediaType;
156
+ }
157
+ }
158
+ return void 0;
159
+ }
160
+
161
+ // src/agent/message-list/prompt/convert-file.ts
162
+ function convertImageFilePart(part, downloadedAssets) {
163
+ let originalData;
164
+ const type = part.type;
165
+ switch (type) {
166
+ case "image":
167
+ originalData = part.image;
168
+ break;
169
+ case "file":
170
+ originalData = part.data;
171
+ break;
172
+ default:
173
+ throw new Error(`Unsupported part type: ${type}`);
174
+ }
175
+ const { data: convertedData, mediaType: convertedMediaType } = convertToDataContent(originalData);
176
+ let mediaType = convertedMediaType ?? part.mediaType;
177
+ let data = convertedData;
178
+ if (data instanceof URL) {
179
+ const downloadedFile = downloadedAssets[data.toString()];
180
+ if (downloadedFile) {
181
+ data = downloadedFile.data;
182
+ mediaType ??= downloadedFile.mediaType;
183
+ }
184
+ }
185
+ switch (type) {
186
+ case "image": {
187
+ if (data instanceof Uint8Array || typeof data === "string") {
188
+ mediaType = detectMediaType({ data, signatures: imageMediaTypeSignatures }) ?? mediaType;
189
+ }
190
+ return {
191
+ type: "file",
192
+ mediaType: mediaType ?? "image/*",
193
+ // any image
194
+ filename: void 0,
195
+ data,
196
+ providerOptions: part.providerOptions
197
+ };
198
+ }
199
+ case "file": {
200
+ if (mediaType == null) {
201
+ throw new Error(`Media type is missing for file part`);
202
+ }
203
+ return {
204
+ type: "file",
205
+ mediaType,
206
+ filename: part.filename,
207
+ data,
208
+ providerOptions: part.providerOptions
209
+ };
210
+ }
211
+ }
212
+ }
213
+
40
214
  // src/agent/message-list/prompt/attachments-to-parts.ts
41
215
  function attachmentsToParts(attachments) {
42
216
  const parts = [];
@@ -414,6 +588,79 @@ function convertDataContentToBase64String(content) {
414
588
  }
415
589
  return convertUint8ArrayToBase64(content);
416
590
  }
591
+ var downloadFromUrl = async ({ url, downloadRetries }) => {
592
+ const urlText = url.toString();
593
+ try {
594
+ const response = await fetchWithRetry(
595
+ urlText,
596
+ {
597
+ method: "GET"
598
+ },
599
+ downloadRetries
600
+ );
601
+ if (!response.ok) {
602
+ throw new MastraError({
603
+ id: "DOWNLOAD_ASSETS_FAILED",
604
+ text: "Failed to download asset",
605
+ domain: "LLM" /* LLM */,
606
+ category: "USER" /* USER */
607
+ });
608
+ }
609
+ return {
610
+ data: new Uint8Array(await response.arrayBuffer()),
611
+ mediaType: response.headers.get("content-type") ?? void 0
612
+ };
613
+ } catch (error) {
614
+ throw new MastraError(
615
+ {
616
+ id: "DOWNLOAD_ASSETS_FAILED",
617
+ text: "Failed to download asset",
618
+ domain: "LLM" /* LLM */,
619
+ category: "USER" /* USER */
620
+ },
621
+ error
622
+ );
623
+ }
624
+ };
625
+ async function downloadAssetsFromMessages({
626
+ messages,
627
+ downloadConcurrency = 10,
628
+ downloadRetries = 3,
629
+ supportedUrls
630
+ }) {
631
+ const pMap = (await import('p-map')).default;
632
+ const filesToDownload = messages.filter((message) => message.role === "user").map((message) => message.content).filter((content) => Array.isArray(content)).flat().filter((part) => part.type === "image" || part.type === "file").map((part) => {
633
+ const mediaType = part.mediaType ?? (part.type === "image" ? "image/*" : void 0);
634
+ let data = part.type === "image" ? part.image : part.data;
635
+ if (typeof data === "string") {
636
+ try {
637
+ data = new URL(data);
638
+ } catch {
639
+ }
640
+ }
641
+ return { mediaType, data };
642
+ }).filter((part) => part.data instanceof URL).map((part) => ({
643
+ url: part.data,
644
+ isUrlSupportedByModel: part.mediaType != null && isUrlSupported({
645
+ url: part.data.toString(),
646
+ mediaType: part.mediaType,
647
+ supportedUrls: supportedUrls ?? {}
648
+ })
649
+ }));
650
+ const downloadedFiles = await pMap(
651
+ filesToDownload,
652
+ async (fileItem) => {
653
+ return downloadFromUrl({ url: fileItem.url, downloadRetries });
654
+ },
655
+ {
656
+ concurrency: downloadConcurrency
657
+ }
658
+ );
659
+ const downloadFileList = downloadedFiles.filter(
660
+ (downloadedFile) => downloadedFile?.data != null
661
+ ).map(({ data, mediaType }, index) => [filesToDownload?.[index]?.url.toString(), { data, mediaType }]);
662
+ return Object.fromEntries(downloadFileList);
663
+ }
417
664
 
418
665
  // src/agent/message-list/utils/ai-v5/tool.ts
419
666
  function getToolName(type) {
@@ -547,13 +794,47 @@ var MessageList = class _MessageList {
547
794
  return messages;
548
795
  },
549
796
  // Used for creating LLM prompt messages without AI SDK streamText/generateText
550
- llmPrompt: () => {
797
+ llmPrompt: async (options = {
798
+ downloadConcurrency: 10,
799
+ downloadRetries: 3
800
+ }) => {
551
801
  const modelMessages = this.all.aiV5.model();
552
802
  const systemMessages = this.aiV4CoreMessagesToAIV5ModelMessages(
553
803
  [...this.systemMessages, ...Object.values(this.taggedSystemMessages).flat()],
554
804
  `system`
555
805
  );
556
- const messages = [...systemMessages, ...modelMessages];
806
+ const downloadedAssets = await downloadAssetsFromMessages({
807
+ messages: modelMessages,
808
+ downloadConcurrency: options?.downloadConcurrency,
809
+ downloadRetries: options?.downloadRetries,
810
+ supportedUrls: options?.supportedUrls
811
+ });
812
+ let messages = [...systemMessages, ...modelMessages];
813
+ if (Object.keys(downloadedAssets || {}).length > 0) {
814
+ messages = messages.map((message) => {
815
+ if (message.role === "user") {
816
+ if (typeof message.content === "string") {
817
+ return {
818
+ role: "user",
819
+ content: [{ type: "text", text: message.content }],
820
+ providerOptions: message.providerOptions
821
+ };
822
+ }
823
+ const convertedContent = message.content.map((part) => {
824
+ if (part.type === "image" || part.type === "file") {
825
+ return convertImageFilePart(part, downloadedAssets);
826
+ }
827
+ return part;
828
+ }).filter((part) => part.type !== "text" || part.text !== "");
829
+ return {
830
+ role: "user",
831
+ content: convertedContent,
832
+ providerOptions: message.providerOptions
833
+ };
834
+ }
835
+ return message;
836
+ });
837
+ }
557
838
  const needsDefaultUserMessage = !messages.length || messages[0]?.role === "assistant";
558
839
  if (needsDefaultUserMessage) {
559
840
  const defaultMessage = {
@@ -1991,7 +2272,9 @@ var MessageList = class _MessageList {
1991
2272
  return v3Msg;
1992
2273
  }
1993
2274
  aiV5UIMessagesToAIV5ModelMessages(messages) {
1994
- return AIV5.convertToModelMessages(this.addStartStepPartsForAIV5(this.sanitizeV5UIMessages(messages)));
2275
+ const preprocessed = this.addStartStepPartsForAIV5(this.sanitizeV5UIMessages(messages));
2276
+ const result = AIV5.convertToModelMessages(preprocessed);
2277
+ return result;
1995
2278
  }
1996
2279
  addStartStepPartsForAIV5(messages) {
1997
2280
  for (const message of messages) {
@@ -2304,5 +2587,5 @@ function convertMessages(messages) {
2304
2587
  }
2305
2588
 
2306
2589
  export { DefaultGeneratedFile, DefaultGeneratedFileWithType, MessageList, convertMessages };
2307
- //# sourceMappingURL=chunk-C5C4PN54.js.map
2308
- //# sourceMappingURL=chunk-C5C4PN54.js.map
2590
+ //# sourceMappingURL=chunk-O7IQL4DX.js.map
2591
+ //# sourceMappingURL=chunk-O7IQL4DX.js.map