@mastra/core 0.16.0 → 0.16.1-alpha.0

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 (117) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/agent/index.cjs +11 -11
  3. package/dist/agent/index.d.ts.map +1 -1
  4. package/dist/agent/index.js +2 -2
  5. package/dist/agent/input-processor/index.cjs +6 -6
  6. package/dist/agent/input-processor/index.js +1 -1
  7. package/dist/agent/message-list/index.d.ts.map +1 -1
  8. package/dist/{chunk-HGYL2SSF.js → chunk-2QDX6OPE.js} +3 -3
  9. package/dist/{chunk-HGYL2SSF.js.map → chunk-2QDX6OPE.js.map} +1 -1
  10. package/dist/{chunk-3CJXUAA2.cjs → chunk-33GDW3SI.cjs} +2 -4
  11. package/dist/chunk-33GDW3SI.cjs.map +1 -0
  12. package/dist/{chunk-HF7HXOCC.js → chunk-4BQBSBQP.js} +31 -6
  13. package/dist/chunk-4BQBSBQP.js.map +1 -0
  14. package/dist/{chunk-DRMT4EQA.cjs → chunk-4FWIB47J.cjs} +4 -4
  15. package/dist/{chunk-DRMT4EQA.cjs.map → chunk-4FWIB47J.cjs.map} +1 -1
  16. package/dist/{chunk-LVGGMWSE.cjs → chunk-6FVCJBBG.cjs} +3 -3
  17. package/dist/chunk-6FVCJBBG.cjs.map +1 -0
  18. package/dist/{chunk-JTU7FZ5O.js → chunk-CWK46GAF.js} +2 -4
  19. package/dist/chunk-CWK46GAF.js.map +1 -0
  20. package/dist/{chunk-SLDGELU7.cjs → chunk-G7YM2FA2.cjs} +7 -7
  21. package/dist/{chunk-SLDGELU7.cjs.map → chunk-G7YM2FA2.cjs.map} +1 -1
  22. package/dist/chunk-GXSERFAG.js +3 -0
  23. package/dist/{chunk-S43VACTO.js.map → chunk-GXSERFAG.js.map} +1 -1
  24. package/dist/{chunk-EU3ADOKK.js → chunk-H33WOKEO.js} +4 -4
  25. package/dist/{chunk-EU3ADOKK.js.map → chunk-H33WOKEO.js.map} +1 -1
  26. package/dist/{chunk-7GYN2OE3.cjs → chunk-IUF2ESZH.cjs} +100 -76
  27. package/dist/chunk-IUF2ESZH.cjs.map +1 -0
  28. package/dist/{chunk-SIKEQ32R.cjs → chunk-KT4WNDGP.cjs} +32 -7
  29. package/dist/chunk-KT4WNDGP.cjs.map +1 -0
  30. package/dist/{chunk-YEZD4ZLX.cjs → chunk-LGJCH6XF.cjs} +6 -6
  31. package/dist/{chunk-YEZD4ZLX.cjs.map → chunk-LGJCH6XF.cjs.map} +1 -1
  32. package/dist/{chunk-YILDTNQM.js → chunk-MW4CYUSP.js} +70 -46
  33. package/dist/chunk-MW4CYUSP.js.map +1 -0
  34. package/dist/{chunk-JT2QXHUD.js → chunk-N3HXDMF2.js} +3 -3
  35. package/dist/{chunk-JT2QXHUD.js.map → chunk-N3HXDMF2.js.map} +1 -1
  36. package/dist/{chunk-MNDKBEEQ.cjs → chunk-OE3SL5VG.cjs} +6 -6
  37. package/dist/{chunk-MNDKBEEQ.cjs.map → chunk-OE3SL5VG.cjs.map} +1 -1
  38. package/dist/{chunk-A5VGUE2H.js → chunk-RT2ETR6A.js} +3 -3
  39. package/dist/{chunk-A5VGUE2H.js.map → chunk-RT2ETR6A.js.map} +1 -1
  40. package/dist/{chunk-WWQ3QRPF.js → chunk-ULA3AGAI.js} +3 -3
  41. package/dist/chunk-ULA3AGAI.js.map +1 -0
  42. package/dist/{chunk-2BFCQRWV.cjs → chunk-VMV5VND5.cjs} +7 -7
  43. package/dist/{chunk-2BFCQRWV.cjs.map → chunk-VMV5VND5.cjs.map} +1 -1
  44. package/dist/{chunk-D2Y5SXZN.js → chunk-WW62UQPE.js} +4 -4
  45. package/dist/{chunk-D2Y5SXZN.js.map → chunk-WW62UQPE.js.map} +1 -1
  46. package/dist/chunk-X4RMXTXF.cjs +4 -0
  47. package/dist/{chunk-IHVB4C5U.cjs.map → chunk-X4RMXTXF.cjs.map} +1 -1
  48. package/dist/{chunk-TCYQAAIT.cjs → chunk-Y6MXP3EN.cjs} +6 -6
  49. package/dist/{chunk-TCYQAAIT.cjs.map → chunk-Y6MXP3EN.cjs.map} +1 -1
  50. package/dist/{chunk-MMYGYTJK.js → chunk-YUJ7GETS.js} +3 -3
  51. package/dist/{chunk-MMYGYTJK.js.map → chunk-YUJ7GETS.js.map} +1 -1
  52. package/dist/index.cjs +43 -43
  53. package/dist/index.js +9 -9
  54. package/dist/llm/model/model.loop.d.ts.map +1 -1
  55. package/dist/loop/index.cjs +2 -2
  56. package/dist/loop/index.js +1 -1
  57. package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
  58. package/dist/mastra/index.cjs +2 -2
  59. package/dist/mastra/index.js +1 -1
  60. package/dist/mcp/index.cjs +4 -0
  61. package/dist/mcp/index.cjs.map +1 -1
  62. package/dist/mcp/index.d.ts +3 -1
  63. package/dist/mcp/index.d.ts.map +1 -1
  64. package/dist/mcp/index.js +4 -0
  65. package/dist/mcp/index.js.map +1 -1
  66. package/dist/memory/index.cjs +4 -4
  67. package/dist/memory/index.js +1 -1
  68. package/dist/network/index.cjs +2 -2
  69. package/dist/network/index.js +1 -1
  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 +8 -8
  77. package/dist/scores/index.js +1 -1
  78. package/dist/storage/base.d.ts.map +1 -1
  79. package/dist/storage/index.cjs +9 -9
  80. package/dist/storage/index.js +3 -3
  81. package/dist/stream/aisdk/v5/execute.d.ts.map +1 -1
  82. package/dist/stream/aisdk/v5/model-supports.d.ts +25 -0
  83. package/dist/stream/aisdk/v5/model-supports.d.ts.map +1 -0
  84. package/dist/stream/base/output-format-handlers.d.ts.map +1 -1
  85. package/dist/stream/index.cjs +3 -3
  86. package/dist/stream/index.js +1 -1
  87. package/dist/test-utils/llm-mock.cjs +2 -2
  88. package/dist/test-utils/llm-mock.js +1 -1
  89. package/dist/tools/index.cjs +0 -4
  90. package/dist/tools/index.d.ts +0 -1
  91. package/dist/tools/index.d.ts.map +1 -1
  92. package/dist/tools/index.js +1 -1
  93. package/dist/tools/types.d.ts +1 -1
  94. package/dist/tools/types.d.ts.map +1 -1
  95. package/dist/utils.cjs +17 -17
  96. package/dist/utils.d.ts +1 -1
  97. package/dist/utils.d.ts.map +1 -1
  98. package/dist/utils.js +1 -1
  99. package/dist/workflows/evented/index.cjs +10 -10
  100. package/dist/workflows/evented/index.js +1 -1
  101. package/dist/workflows/index.cjs +10 -10
  102. package/dist/workflows/index.js +1 -1
  103. package/dist/workflows/legacy/index.cjs +22 -22
  104. package/dist/workflows/legacy/index.js +1 -1
  105. package/dist/workflows/workflow.d.ts +2 -1
  106. package/dist/workflows/workflow.d.ts.map +1 -1
  107. package/package.json +3 -2
  108. package/dist/chunk-3CJXUAA2.cjs.map +0 -1
  109. package/dist/chunk-7GYN2OE3.cjs.map +0 -1
  110. package/dist/chunk-HF7HXOCC.js.map +0 -1
  111. package/dist/chunk-IHVB4C5U.cjs +0 -4
  112. package/dist/chunk-JTU7FZ5O.js.map +0 -1
  113. package/dist/chunk-LVGGMWSE.cjs.map +0 -1
  114. package/dist/chunk-S43VACTO.js +0 -3
  115. package/dist/chunk-SIKEQ32R.cjs.map +0 -1
  116. package/dist/chunk-WWQ3QRPF.js.map +0 -1
  117. package/dist/chunk-YILDTNQM.js.map +0 -1
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-GXSERFAG.js.map
3
+ //# sourceMappingURL=chunk-GXSERFAG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-S43VACTO.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-GXSERFAG.js"}
@@ -1,6 +1,6 @@
1
1
  import { augmentWithInit } from './chunk-436FFEF6.js';
2
- import { MessageList } from './chunk-HF7HXOCC.js';
3
- import { deepMerge } from './chunk-WWQ3QRPF.js';
2
+ import { MessageList } from './chunk-4BQBSBQP.js';
3
+ import { deepMerge } from './chunk-ULA3AGAI.js';
4
4
  import { MastraBase } from './chunk-6GF5M4GX.js';
5
5
 
6
6
  // src/memory/memory.ts
@@ -248,5 +248,5 @@ https://mastra.ai/en/docs/memory/overview`
248
248
  };
249
249
 
250
250
  export { MastraMemory, MemoryProcessor, memoryDefaultOptions };
251
- //# sourceMappingURL=chunk-EU3ADOKK.js.map
252
- //# sourceMappingURL=chunk-EU3ADOKK.js.map
251
+ //# sourceMappingURL=chunk-H33WOKEO.js.map
252
+ //# sourceMappingURL=chunk-H33WOKEO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/memory/memory.ts"],"names":[],"mappings":"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","file":"chunk-EU3ADOKK.js","sourcesContent":["import type { EmbeddingModelV2 } from '@ai-sdk/provider-v5';\nimport type { AssistantContent, UserContent, CoreMessage, EmbeddingModel } from 'ai';\nimport { MessageList } from '../agent/message-list';\nimport type { MastraMessageV2, UIMessageWithMetadata } from '../agent/message-list';\nimport { MastraBase } from '../base';\nimport type { Mastra } from '../mastra';\nimport type { MastraStorage, PaginationInfo, StorageGetMessagesArg, ThreadSortOptions } from '../storage';\nimport { augmentWithInit } from '../storage/storageWithInit';\nimport type { ToolAction } from '../tools';\nimport { deepMerge } from '../utils';\nimport type { MastraVector } from '../vector';\n\nimport type {\n SharedMemoryConfig,\n StorageThreadType,\n MemoryConfig,\n MastraMessageV1,\n WorkingMemoryTemplate,\n} from './types';\n\nexport type MemoryProcessorOpts = {\n systemMessage?: string;\n memorySystemMessage?: string;\n newMessages?: CoreMessage[];\n};\n/**\n * Interface for message processors that can filter or transform messages\n * before they're sent to the LLM.\n */\nexport abstract class MemoryProcessor extends MastraBase {\n /**\n * Process a list of messages and return a filtered or transformed list.\n * @param messages The messages to process\n * @returns The processed messages\n */\n process(messages: CoreMessage[], _opts: MemoryProcessorOpts): CoreMessage[] | Promise<CoreMessage[]> {\n return messages;\n }\n}\n\nexport const memoryDefaultOptions = {\n lastMessages: 10,\n semanticRecall: false,\n threads: {\n generateTitle: false,\n },\n workingMemory: {\n enabled: false,\n template: `\n# User Information\n- **First Name**: \n- **Last Name**: \n- **Location**: \n- **Occupation**: \n- **Interests**: \n- **Goals**: \n- **Events**: \n- **Facts**: \n- **Projects**: \n`,\n },\n} satisfies MemoryConfig;\n\n/**\n * Abstract Memory class that defines the interface for storing and retrieving\n * conversation threads and messages.\n */\nexport abstract class MastraMemory extends MastraBase {\n MAX_CONTEXT_TOKENS?: number;\n\n protected _storage?: MastraStorage;\n vector?: MastraVector;\n embedder?: EmbeddingModel<string> | EmbeddingModelV2<string>;\n private processors: MemoryProcessor[] = [];\n protected threadConfig: MemoryConfig = { ...memoryDefaultOptions };\n #mastra?: Mastra;\n\n constructor(config: { name: string } & SharedMemoryConfig) {\n super({ component: 'MEMORY', name: config.name });\n\n if (config.options) this.threadConfig = this.getMergedThreadConfig(config.options);\n if (config.processors) this.processors = config.processors;\n if (config.storage) {\n this._storage = augmentWithInit(config.storage);\n this._hasOwnStorage = true;\n }\n\n if (this.threadConfig.semanticRecall) {\n if (!config.vector) {\n throw new Error(\n `Semantic recall requires a vector store to be configured.\\n\\nhttps://mastra.ai/en/docs/memory/semantic-recall`,\n );\n }\n this.vector = config.vector;\n\n if (!config.embedder) {\n throw new Error(\n `Semantic recall requires an embedder to be configured.\\n\\nhttps://mastra.ai/en/docs/memory/semantic-recall`,\n );\n }\n this.embedder = config.embedder;\n }\n }\n\n /**\n * Internal method used by Mastra to register itself with the memory.\n * @param mastra The Mastra instance.\n * @internal\n */\n __registerMastra(mastra: Mastra): void {\n this.#mastra = mastra;\n }\n\n protected _hasOwnStorage = false;\n get hasOwnStorage() {\n return this._hasOwnStorage;\n }\n\n get storage() {\n if (!this._storage) {\n throw new Error(\n `Memory requires a storage provider to function. Add a storage configuration to Memory or to your Mastra instance.\\n\\nhttps://mastra.ai/en/docs/memory/overview`,\n );\n }\n return this._storage;\n }\n\n public setStorage(storage: MastraStorage) {\n this._storage = augmentWithInit(storage);\n }\n\n public setVector(vector: MastraVector) {\n this.vector = vector;\n }\n\n public setEmbedder(embedder: EmbeddingModel<string>) {\n this.embedder = embedder;\n }\n\n /**\n * Get a system message to inject into the conversation.\n * This will be called before each conversation turn.\n * Implementations can override this to inject custom system messages.\n */\n public async getSystemMessage(_input: {\n threadId: string;\n resourceId?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<string | null> {\n return null;\n }\n\n /**\n * Get tools that should be available to the agent.\n * This will be called when converting tools for the agent.\n * Implementations can override this to provide additional tools.\n */\n public getTools(_config?: MemoryConfig): Record<string, ToolAction<any, any, any>> {\n return {};\n }\n\n protected async createEmbeddingIndex(dimensions?: number): Promise<{ indexName: string }> {\n const defaultDimensions = 1536;\n const isDefault = dimensions === defaultDimensions;\n const usedDimensions = dimensions ?? defaultDimensions;\n const separator = this.vector?.indexSeparator ?? '_';\n const indexName = isDefault\n ? `memory${separator}messages`\n : `memory${separator}messages${separator}${usedDimensions}`;\n\n if (typeof this.vector === `undefined`) {\n throw new Error(`Tried to create embedding index but no vector db is attached to this Memory instance.`);\n }\n await this.vector.createIndex({\n indexName,\n dimension: usedDimensions,\n });\n return { indexName };\n }\n\n public getMergedThreadConfig(config?: MemoryConfig): MemoryConfig {\n if (config?.workingMemory && 'use' in config.workingMemory) {\n throw new Error('The workingMemory.use option has been removed. Working memory always uses tool-call mode.');\n }\n const mergedConfig = deepMerge(this.threadConfig, config || {});\n\n if (config?.workingMemory?.schema) {\n if (mergedConfig.workingMemory) {\n mergedConfig.workingMemory.schema = config.workingMemory.schema;\n }\n }\n\n return mergedConfig;\n }\n\n /**\n * Apply all configured message processors to a list of messages.\n * @param messages The messages to process\n * @returns The processed messages\n */\n protected async applyProcessors(\n messages: CoreMessage[],\n opts: {\n processors?: MemoryProcessor[];\n } & MemoryProcessorOpts,\n ): Promise<CoreMessage[]> {\n const processors = opts.processors || this.processors;\n if (!processors || processors.length === 0) {\n return messages;\n }\n\n let processedMessages = [...messages];\n\n for (const processor of processors) {\n processedMessages = await processor.process(processedMessages, {\n systemMessage: opts.systemMessage,\n newMessages: opts.newMessages,\n memorySystemMessage: opts.memorySystemMessage,\n });\n }\n\n return processedMessages;\n }\n\n processMessages({\n messages,\n processors,\n ...opts\n }: {\n messages: CoreMessage[];\n processors?: MemoryProcessor[];\n } & MemoryProcessorOpts) {\n return this.applyProcessors(messages, { processors: processors || this.processors, ...opts });\n }\n\n abstract rememberMessages({\n threadId,\n resourceId,\n vectorMessageSearch,\n config,\n }: {\n threadId: string;\n resourceId?: string;\n vectorMessageSearch?: string;\n config?: MemoryConfig;\n }): Promise<{ messages: MastraMessageV1[]; messagesV2: MastraMessageV2[] }>;\n\n estimateTokens(text: string): number {\n return Math.ceil(text.split(' ').length * 1.3);\n }\n\n /**\n * Retrieves a specific thread by its ID\n * @param threadId - The unique identifier of the thread\n * @returns Promise resolving to the thread or null if not found\n */\n abstract getThreadById({ threadId }: { threadId: string }): Promise<StorageThreadType | null>;\n\n /**\n * Retrieves all threads that belong to the specified resource.\n * @param resourceId - The unique identifier of the resource\n * @param orderBy - Which timestamp field to sort by (`'createdAt'` or `'updatedAt'`);\n * defaults to `'createdAt'`\n * @param sortDirection - Sort order for the results (`'ASC'` or `'DESC'`);\n * defaults to `'DESC'`\n * @returns Promise resolving to an array of matching threads; resolves to an empty array\n * if the resource has no threads\n */\n abstract getThreadsByResourceId({\n resourceId,\n orderBy,\n sortDirection,\n }: { resourceId: string } & ThreadSortOptions): Promise<StorageThreadType[]>;\n\n abstract getThreadsByResourceIdPaginated(\n args: {\n resourceId: string;\n page: number;\n perPage: number;\n } & ThreadSortOptions,\n ): Promise<PaginationInfo & { threads: StorageThreadType[] }>;\n\n /**\n * Saves or updates a thread\n * @param thread - The thread data to save\n * @returns Promise resolving to the saved thread\n */\n abstract saveThread({\n thread,\n memoryConfig,\n }: {\n thread: StorageThreadType;\n memoryConfig?: MemoryConfig;\n }): Promise<StorageThreadType>;\n\n /**\n * Saves messages to a thread\n * @param messages - Array of messages to save\n * @returns Promise resolving to the saved messages\n */\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format?: 'v1';\n }): Promise<MastraMessageV1[]>;\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format: 'v2';\n }): Promise<MastraMessageV2[]>;\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format?: 'v1' | 'v2';\n }): Promise<MastraMessageV2[] | MastraMessageV1[]>;\n\n /**\n * Retrieves all messages for a specific thread\n * @param threadId - The unique identifier of the thread\n * @returns Promise resolving to array of messages and uiMessages\n */\n abstract query({\n threadId,\n resourceId,\n selectBy,\n }: StorageGetMessagesArg): Promise<{ messages: CoreMessage[]; uiMessages: UIMessageWithMetadata[] }>;\n\n /**\n * Helper method to create a new thread\n * @param title - Optional title for the thread\n * @param metadata - Optional metadata for the thread\n * @returns Promise resolving to the created thread\n */\n async createThread({\n threadId,\n resourceId,\n title,\n metadata,\n memoryConfig,\n saveThread = true,\n }: {\n resourceId: string;\n threadId?: string;\n title?: string;\n metadata?: Record<string, unknown>;\n memoryConfig?: MemoryConfig;\n saveThread?: boolean;\n }): Promise<StorageThreadType> {\n const thread: StorageThreadType = {\n id: threadId || this.generateId(),\n title: title || `New Thread ${new Date().toISOString()}`,\n resourceId,\n createdAt: new Date(),\n updatedAt: new Date(),\n metadata,\n };\n\n return saveThread ? this.saveThread({ thread, memoryConfig }) : thread;\n }\n\n /**\n * Helper method to delete a thread\n * @param threadId - the id of the thread to delete\n */\n abstract deleteThread(threadId: string): Promise<void>;\n\n /**\n * Helper method to add a single message to a thread\n * @param threadId - The thread to add the message to\n * @param content - The message content\n * @param role - The role of the message sender\n * @param type - The type of the message\n * @param toolNames - Optional array of tool names that were called\n * @param toolCallArgs - Optional array of tool call arguments\n * @param toolCallIds - Optional array of tool call ids\n * @returns Promise resolving to the saved message\n * @deprecated use saveMessages instead\n */\n async addMessage({\n threadId,\n resourceId,\n config,\n content,\n role,\n type,\n toolNames,\n toolCallArgs,\n toolCallIds,\n }: {\n threadId: string;\n resourceId: string;\n config?: MemoryConfig;\n content: UserContent | AssistantContent;\n role: 'user' | 'assistant';\n type: 'text' | 'tool-call' | 'tool-result';\n toolNames?: string[];\n toolCallArgs?: Record<string, unknown>[];\n toolCallIds?: string[];\n }): Promise<MastraMessageV1> {\n const message: MastraMessageV1 = {\n id: this.generateId(),\n content,\n role,\n createdAt: new Date(),\n threadId,\n resourceId,\n type,\n toolNames,\n toolCallArgs,\n toolCallIds,\n };\n\n const savedMessages = await this.saveMessages({ messages: [message], memoryConfig: config });\n const list = new MessageList({ threadId, resourceId }).add(savedMessages[0]!, 'memory');\n return list.get.all.v1()[0]!;\n }\n\n /**\n * Generates a unique identifier\n * @returns A unique string ID\n */\n public generateId(): string {\n return this.#mastra?.generateId() || crypto.randomUUID();\n }\n\n /**\n * Retrieves working memory for a specific thread\n * @param threadId - The unique identifier of the thread\n * @param resourceId - The unique identifier of the resource\n * @param memoryConfig - Optional memory configuration\n * @returns Promise resolving to working memory data or null if not found\n */\n abstract getWorkingMemory({\n threadId,\n resourceId,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<string | null>;\n\n /**\n * Retrieves working memory template for a specific thread\n * @param memoryConfig - Optional memory configuration\n * @returns Promise resolving to working memory template or null if not found\n */\n abstract getWorkingMemoryTemplate({\n memoryConfig,\n }?: {\n memoryConfig?: MemoryConfig;\n }): Promise<WorkingMemoryTemplate | null>;\n\n abstract updateWorkingMemory({\n threadId,\n resourceId,\n workingMemory,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n workingMemory: string;\n memoryConfig?: MemoryConfig;\n }): Promise<void>;\n\n /**\n * @warning experimental! can be removed or changed at any time\n */\n abstract __experimental_updateWorkingMemoryVNext({\n threadId,\n resourceId,\n workingMemory,\n searchString,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n workingMemory: string;\n searchString?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<{ success: boolean; reason: string }>;\n\n /**\n * Deletes multiple messages by their IDs\n * @param messageIds - Array of message IDs to delete\n * @returns Promise that resolves when all messages are deleted\n */\n abstract deleteMessages(messageIds: string[]): Promise<void>;\n}\n"]}
1
+ {"version":3,"sources":["../src/memory/memory.ts"],"names":[],"mappings":"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","file":"chunk-H33WOKEO.js","sourcesContent":["import type { EmbeddingModelV2 } from '@ai-sdk/provider-v5';\nimport type { AssistantContent, UserContent, CoreMessage, EmbeddingModel } from 'ai';\nimport { MessageList } from '../agent/message-list';\nimport type { MastraMessageV2, UIMessageWithMetadata } from '../agent/message-list';\nimport { MastraBase } from '../base';\nimport type { Mastra } from '../mastra';\nimport type { MastraStorage, PaginationInfo, StorageGetMessagesArg, ThreadSortOptions } from '../storage';\nimport { augmentWithInit } from '../storage/storageWithInit';\nimport type { ToolAction } from '../tools';\nimport { deepMerge } from '../utils';\nimport type { MastraVector } from '../vector';\n\nimport type {\n SharedMemoryConfig,\n StorageThreadType,\n MemoryConfig,\n MastraMessageV1,\n WorkingMemoryTemplate,\n} from './types';\n\nexport type MemoryProcessorOpts = {\n systemMessage?: string;\n memorySystemMessage?: string;\n newMessages?: CoreMessage[];\n};\n/**\n * Interface for message processors that can filter or transform messages\n * before they're sent to the LLM.\n */\nexport abstract class MemoryProcessor extends MastraBase {\n /**\n * Process a list of messages and return a filtered or transformed list.\n * @param messages The messages to process\n * @returns The processed messages\n */\n process(messages: CoreMessage[], _opts: MemoryProcessorOpts): CoreMessage[] | Promise<CoreMessage[]> {\n return messages;\n }\n}\n\nexport const memoryDefaultOptions = {\n lastMessages: 10,\n semanticRecall: false,\n threads: {\n generateTitle: false,\n },\n workingMemory: {\n enabled: false,\n template: `\n# User Information\n- **First Name**: \n- **Last Name**: \n- **Location**: \n- **Occupation**: \n- **Interests**: \n- **Goals**: \n- **Events**: \n- **Facts**: \n- **Projects**: \n`,\n },\n} satisfies MemoryConfig;\n\n/**\n * Abstract Memory class that defines the interface for storing and retrieving\n * conversation threads and messages.\n */\nexport abstract class MastraMemory extends MastraBase {\n MAX_CONTEXT_TOKENS?: number;\n\n protected _storage?: MastraStorage;\n vector?: MastraVector;\n embedder?: EmbeddingModel<string> | EmbeddingModelV2<string>;\n private processors: MemoryProcessor[] = [];\n protected threadConfig: MemoryConfig = { ...memoryDefaultOptions };\n #mastra?: Mastra;\n\n constructor(config: { name: string } & SharedMemoryConfig) {\n super({ component: 'MEMORY', name: config.name });\n\n if (config.options) this.threadConfig = this.getMergedThreadConfig(config.options);\n if (config.processors) this.processors = config.processors;\n if (config.storage) {\n this._storage = augmentWithInit(config.storage);\n this._hasOwnStorage = true;\n }\n\n if (this.threadConfig.semanticRecall) {\n if (!config.vector) {\n throw new Error(\n `Semantic recall requires a vector store to be configured.\\n\\nhttps://mastra.ai/en/docs/memory/semantic-recall`,\n );\n }\n this.vector = config.vector;\n\n if (!config.embedder) {\n throw new Error(\n `Semantic recall requires an embedder to be configured.\\n\\nhttps://mastra.ai/en/docs/memory/semantic-recall`,\n );\n }\n this.embedder = config.embedder;\n }\n }\n\n /**\n * Internal method used by Mastra to register itself with the memory.\n * @param mastra The Mastra instance.\n * @internal\n */\n __registerMastra(mastra: Mastra): void {\n this.#mastra = mastra;\n }\n\n protected _hasOwnStorage = false;\n get hasOwnStorage() {\n return this._hasOwnStorage;\n }\n\n get storage() {\n if (!this._storage) {\n throw new Error(\n `Memory requires a storage provider to function. Add a storage configuration to Memory or to your Mastra instance.\\n\\nhttps://mastra.ai/en/docs/memory/overview`,\n );\n }\n return this._storage;\n }\n\n public setStorage(storage: MastraStorage) {\n this._storage = augmentWithInit(storage);\n }\n\n public setVector(vector: MastraVector) {\n this.vector = vector;\n }\n\n public setEmbedder(embedder: EmbeddingModel<string>) {\n this.embedder = embedder;\n }\n\n /**\n * Get a system message to inject into the conversation.\n * This will be called before each conversation turn.\n * Implementations can override this to inject custom system messages.\n */\n public async getSystemMessage(_input: {\n threadId: string;\n resourceId?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<string | null> {\n return null;\n }\n\n /**\n * Get tools that should be available to the agent.\n * This will be called when converting tools for the agent.\n * Implementations can override this to provide additional tools.\n */\n public getTools(_config?: MemoryConfig): Record<string, ToolAction<any, any, any>> {\n return {};\n }\n\n protected async createEmbeddingIndex(dimensions?: number): Promise<{ indexName: string }> {\n const defaultDimensions = 1536;\n const isDefault = dimensions === defaultDimensions;\n const usedDimensions = dimensions ?? defaultDimensions;\n const separator = this.vector?.indexSeparator ?? '_';\n const indexName = isDefault\n ? `memory${separator}messages`\n : `memory${separator}messages${separator}${usedDimensions}`;\n\n if (typeof this.vector === `undefined`) {\n throw new Error(`Tried to create embedding index but no vector db is attached to this Memory instance.`);\n }\n await this.vector.createIndex({\n indexName,\n dimension: usedDimensions,\n });\n return { indexName };\n }\n\n public getMergedThreadConfig(config?: MemoryConfig): MemoryConfig {\n if (config?.workingMemory && 'use' in config.workingMemory) {\n throw new Error('The workingMemory.use option has been removed. Working memory always uses tool-call mode.');\n }\n const mergedConfig = deepMerge(this.threadConfig, config || {});\n\n if (config?.workingMemory?.schema) {\n if (mergedConfig.workingMemory) {\n mergedConfig.workingMemory.schema = config.workingMemory.schema;\n }\n }\n\n return mergedConfig;\n }\n\n /**\n * Apply all configured message processors to a list of messages.\n * @param messages The messages to process\n * @returns The processed messages\n */\n protected async applyProcessors(\n messages: CoreMessage[],\n opts: {\n processors?: MemoryProcessor[];\n } & MemoryProcessorOpts,\n ): Promise<CoreMessage[]> {\n const processors = opts.processors || this.processors;\n if (!processors || processors.length === 0) {\n return messages;\n }\n\n let processedMessages = [...messages];\n\n for (const processor of processors) {\n processedMessages = await processor.process(processedMessages, {\n systemMessage: opts.systemMessage,\n newMessages: opts.newMessages,\n memorySystemMessage: opts.memorySystemMessage,\n });\n }\n\n return processedMessages;\n }\n\n processMessages({\n messages,\n processors,\n ...opts\n }: {\n messages: CoreMessage[];\n processors?: MemoryProcessor[];\n } & MemoryProcessorOpts) {\n return this.applyProcessors(messages, { processors: processors || this.processors, ...opts });\n }\n\n abstract rememberMessages({\n threadId,\n resourceId,\n vectorMessageSearch,\n config,\n }: {\n threadId: string;\n resourceId?: string;\n vectorMessageSearch?: string;\n config?: MemoryConfig;\n }): Promise<{ messages: MastraMessageV1[]; messagesV2: MastraMessageV2[] }>;\n\n estimateTokens(text: string): number {\n return Math.ceil(text.split(' ').length * 1.3);\n }\n\n /**\n * Retrieves a specific thread by its ID\n * @param threadId - The unique identifier of the thread\n * @returns Promise resolving to the thread or null if not found\n */\n abstract getThreadById({ threadId }: { threadId: string }): Promise<StorageThreadType | null>;\n\n /**\n * Retrieves all threads that belong to the specified resource.\n * @param resourceId - The unique identifier of the resource\n * @param orderBy - Which timestamp field to sort by (`'createdAt'` or `'updatedAt'`);\n * defaults to `'createdAt'`\n * @param sortDirection - Sort order for the results (`'ASC'` or `'DESC'`);\n * defaults to `'DESC'`\n * @returns Promise resolving to an array of matching threads; resolves to an empty array\n * if the resource has no threads\n */\n abstract getThreadsByResourceId({\n resourceId,\n orderBy,\n sortDirection,\n }: { resourceId: string } & ThreadSortOptions): Promise<StorageThreadType[]>;\n\n abstract getThreadsByResourceIdPaginated(\n args: {\n resourceId: string;\n page: number;\n perPage: number;\n } & ThreadSortOptions,\n ): Promise<PaginationInfo & { threads: StorageThreadType[] }>;\n\n /**\n * Saves or updates a thread\n * @param thread - The thread data to save\n * @returns Promise resolving to the saved thread\n */\n abstract saveThread({\n thread,\n memoryConfig,\n }: {\n thread: StorageThreadType;\n memoryConfig?: MemoryConfig;\n }): Promise<StorageThreadType>;\n\n /**\n * Saves messages to a thread\n * @param messages - Array of messages to save\n * @returns Promise resolving to the saved messages\n */\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format?: 'v1';\n }): Promise<MastraMessageV1[]>;\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format: 'v2';\n }): Promise<MastraMessageV2[]>;\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format?: 'v1' | 'v2';\n }): Promise<MastraMessageV2[] | MastraMessageV1[]>;\n\n /**\n * Retrieves all messages for a specific thread\n * @param threadId - The unique identifier of the thread\n * @returns Promise resolving to array of messages and uiMessages\n */\n abstract query({\n threadId,\n resourceId,\n selectBy,\n }: StorageGetMessagesArg): Promise<{ messages: CoreMessage[]; uiMessages: UIMessageWithMetadata[] }>;\n\n /**\n * Helper method to create a new thread\n * @param title - Optional title for the thread\n * @param metadata - Optional metadata for the thread\n * @returns Promise resolving to the created thread\n */\n async createThread({\n threadId,\n resourceId,\n title,\n metadata,\n memoryConfig,\n saveThread = true,\n }: {\n resourceId: string;\n threadId?: string;\n title?: string;\n metadata?: Record<string, unknown>;\n memoryConfig?: MemoryConfig;\n saveThread?: boolean;\n }): Promise<StorageThreadType> {\n const thread: StorageThreadType = {\n id: threadId || this.generateId(),\n title: title || `New Thread ${new Date().toISOString()}`,\n resourceId,\n createdAt: new Date(),\n updatedAt: new Date(),\n metadata,\n };\n\n return saveThread ? this.saveThread({ thread, memoryConfig }) : thread;\n }\n\n /**\n * Helper method to delete a thread\n * @param threadId - the id of the thread to delete\n */\n abstract deleteThread(threadId: string): Promise<void>;\n\n /**\n * Helper method to add a single message to a thread\n * @param threadId - The thread to add the message to\n * @param content - The message content\n * @param role - The role of the message sender\n * @param type - The type of the message\n * @param toolNames - Optional array of tool names that were called\n * @param toolCallArgs - Optional array of tool call arguments\n * @param toolCallIds - Optional array of tool call ids\n * @returns Promise resolving to the saved message\n * @deprecated use saveMessages instead\n */\n async addMessage({\n threadId,\n resourceId,\n config,\n content,\n role,\n type,\n toolNames,\n toolCallArgs,\n toolCallIds,\n }: {\n threadId: string;\n resourceId: string;\n config?: MemoryConfig;\n content: UserContent | AssistantContent;\n role: 'user' | 'assistant';\n type: 'text' | 'tool-call' | 'tool-result';\n toolNames?: string[];\n toolCallArgs?: Record<string, unknown>[];\n toolCallIds?: string[];\n }): Promise<MastraMessageV1> {\n const message: MastraMessageV1 = {\n id: this.generateId(),\n content,\n role,\n createdAt: new Date(),\n threadId,\n resourceId,\n type,\n toolNames,\n toolCallArgs,\n toolCallIds,\n };\n\n const savedMessages = await this.saveMessages({ messages: [message], memoryConfig: config });\n const list = new MessageList({ threadId, resourceId }).add(savedMessages[0]!, 'memory');\n return list.get.all.v1()[0]!;\n }\n\n /**\n * Generates a unique identifier\n * @returns A unique string ID\n */\n public generateId(): string {\n return this.#mastra?.generateId() || crypto.randomUUID();\n }\n\n /**\n * Retrieves working memory for a specific thread\n * @param threadId - The unique identifier of the thread\n * @param resourceId - The unique identifier of the resource\n * @param memoryConfig - Optional memory configuration\n * @returns Promise resolving to working memory data or null if not found\n */\n abstract getWorkingMemory({\n threadId,\n resourceId,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<string | null>;\n\n /**\n * Retrieves working memory template for a specific thread\n * @param memoryConfig - Optional memory configuration\n * @returns Promise resolving to working memory template or null if not found\n */\n abstract getWorkingMemoryTemplate({\n memoryConfig,\n }?: {\n memoryConfig?: MemoryConfig;\n }): Promise<WorkingMemoryTemplate | null>;\n\n abstract updateWorkingMemory({\n threadId,\n resourceId,\n workingMemory,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n workingMemory: string;\n memoryConfig?: MemoryConfig;\n }): Promise<void>;\n\n /**\n * @warning experimental! can be removed or changed at any time\n */\n abstract __experimental_updateWorkingMemoryVNext({\n threadId,\n resourceId,\n workingMemory,\n searchString,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n workingMemory: string;\n searchString?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<{ success: boolean; reason: string }>;\n\n /**\n * Deletes multiple messages by their IDs\n * @param messageIds - Array of message IDs to delete\n * @returns Promise that resolves when all messages are deleted\n */\n abstract deleteMessages(messageIds: string[]): Promise<void>;\n}\n"]}
@@ -3,10 +3,10 @@
3
3
  var chunkAHJY7RHO_cjs = require('./chunk-AHJY7RHO.cjs');
4
4
  var chunkABJOUEVA_cjs = require('./chunk-ABJOUEVA.cjs');
5
5
  var chunkBHB4PDNV_cjs = require('./chunk-BHB4PDNV.cjs');
6
- var chunkMNDKBEEQ_cjs = require('./chunk-MNDKBEEQ.cjs');
7
- var chunkSIKEQ32R_cjs = require('./chunk-SIKEQ32R.cjs');
6
+ var chunkOE3SL5VG_cjs = require('./chunk-OE3SL5VG.cjs');
7
+ var chunkKT4WNDGP_cjs = require('./chunk-KT4WNDGP.cjs');
8
8
  var chunkTSNDVBUU_cjs = require('./chunk-TSNDVBUU.cjs');
9
- var chunkLVGGMWSE_cjs = require('./chunk-LVGGMWSE.cjs');
9
+ var chunk6FVCJBBG_cjs = require('./chunk-6FVCJBBG.cjs');
10
10
  var chunkGPWMM745_cjs = require('./chunk-GPWMM745.cjs');
11
11
  var chunkS6MAHT7F_cjs = require('./chunk-S6MAHT7F.cjs');
12
12
  var chunkABRPHTOG_cjs = require('./chunk-ABRPHTOG.cjs');
@@ -1173,7 +1173,7 @@ function convertMastraChunkToAISDKv5({
1173
1173
  if (mode === "generate") {
1174
1174
  return {
1175
1175
  type: "file",
1176
- file: new chunkSIKEQ32R_cjs.DefaultGeneratedFile({
1176
+ file: new chunkKT4WNDGP_cjs.DefaultGeneratedFile({
1177
1177
  data: chunk.payload.data,
1178
1178
  mediaType: chunk.payload.mimeType
1179
1179
  })
@@ -1181,7 +1181,7 @@ function convertMastraChunkToAISDKv5({
1181
1181
  }
1182
1182
  return {
1183
1183
  type: "file",
1184
- file: new chunkSIKEQ32R_cjs.DefaultGeneratedFileWithType({
1184
+ file: new chunkKT4WNDGP_cjs.DefaultGeneratedFileWithType({
1185
1185
  data: chunk.payload.data,
1186
1186
  mediaType: chunk.payload.mimeType
1187
1187
  })
@@ -1641,22 +1641,32 @@ var ObjectFormatHandler = class extends BaseFormatHandler {
1641
1641
  shouldEmit: false
1642
1642
  };
1643
1643
  }
1644
- async validateAndTransformFinal(finalValue) {
1645
- if (!finalValue) {
1644
+ async validateAndTransformFinal(finalRawValue) {
1645
+ if (!finalRawValue) {
1646
1646
  return {
1647
1647
  success: false,
1648
1648
  error: new Error("No object generated: could not parse the response.")
1649
1649
  };
1650
1650
  }
1651
+ let rawValue = finalRawValue;
1652
+ if (typeof finalRawValue === "string" && finalRawValue?.includes?.("```json")) {
1653
+ const match = finalRawValue.match(/```json\s*\n?([\s\S]*?)\n?\s*```/);
1654
+ if (match && match[1]) {
1655
+ rawValue = match[1].trim();
1656
+ }
1657
+ }
1658
+ const {
1659
+ value
1660
+ } = await aiV5.parsePartialJson(rawValue);
1651
1661
  if (!this.schema) {
1652
1662
  return {
1653
1663
  success: true,
1654
- value: finalValue
1664
+ value
1655
1665
  };
1656
1666
  }
1657
1667
  try {
1658
1668
  const result = await safeValidateTypes({
1659
- value: finalValue,
1669
+ value,
1660
1670
  schema: this.schema
1661
1671
  });
1662
1672
  if (result.success) {
@@ -1822,7 +1832,17 @@ var EnumFormatHandler = class extends BaseFormatHandler {
1822
1832
  shouldEmit: false
1823
1833
  };
1824
1834
  }
1825
- async validateAndTransformFinal(finalValue) {
1835
+ async validateAndTransformFinal(rawFinalValue) {
1836
+ const {
1837
+ value
1838
+ } = await aiV5.parsePartialJson(rawFinalValue);
1839
+ if (!(typeof value === "object" && value !== null && "result" in value)) {
1840
+ return {
1841
+ success: false,
1842
+ error: new Error("Invalid enum format: expected object with result property")
1843
+ };
1844
+ }
1845
+ const finalValue = value.result;
1826
1846
  if (!finalValue || typeof finalValue !== "object" || typeof finalValue.result !== "string") {
1827
1847
  return {
1828
1848
  success: false,
@@ -1928,7 +1948,7 @@ function createObjectStreamTransformer({
1928
1948
  onFinish(void 0);
1929
1949
  return;
1930
1950
  }
1931
- const finalResult = await handler.validateAndTransformFinal(previousObject);
1951
+ const finalResult = await handler.validateAndTransformFinal(accumulatedText);
1932
1952
  if (!finalResult.success) {
1933
1953
  controller.enqueue({
1934
1954
  from: "AGENT" /* AGENT */,
@@ -2227,7 +2247,7 @@ var MastraModelOutput = class extends chunkKXCUCBEI_cjs.MastraBase {
2227
2247
  try {
2228
2248
  if (self.processorRunner) {
2229
2249
  self.messageList = await self.processorRunner.runOutputProcessors(self.messageList);
2230
- const outputText = self.messageList.get.response.aiV4.core().map(m => chunkSIKEQ32R_cjs.MessageList.coreContentToString(m.content)).join("\n");
2250
+ const outputText = self.messageList.get.response.aiV4.core().map(m => chunkKT4WNDGP_cjs.MessageList.coreContentToString(m.content)).join("\n");
2231
2251
  const messages = self.messageList.get.response.v2();
2232
2252
  const messagesWithStructuredData = messages.filter(msg => msg.content.metadata && msg.content.metadata.structuredOutput);
2233
2253
  if (messagesWithStructuredData[0] && messagesWithStructuredData[0].content.metadata?.structuredOutput) {
@@ -2955,6 +2975,12 @@ var AISDKV5InputStream = class extends MastraModelInput {
2955
2975
  }
2956
2976
  };
2957
2977
 
2978
+ // src/stream/aisdk/v5/model-supports.ts
2979
+ function getModelSupport(modelId, provider) {
2980
+ return modelSupports.find(m => m.modelId === modelId && m.provider === provider);
2981
+ }
2982
+ var modelSupports = [];
2983
+
2958
2984
  // src/stream/aisdk/v5/execute.ts
2959
2985
  function execute({
2960
2986
  runId,
@@ -2986,6 +3012,16 @@ function execute({
2986
3012
  "stream.prompt.tools": toolsAndToolChoice?.tools?.map(tool => JSON.stringify(tool))
2987
3013
  });
2988
3014
  }
3015
+ const modelSupports2 = getModelSupport(model.modelId, model.provider);
3016
+ const modelSupportsResponseFormat = modelSupports2?.capabilities.responseFormat?.support === "full";
3017
+ const responseFormat = output ? getResponseFormat(output) : void 0;
3018
+ let prompt = inputMessages;
3019
+ if (output && responseFormat?.type === "json" && !modelSupportsResponseFormat) {
3020
+ prompt = providerUtilsV5.injectJsonInstructionIntoMessages({
3021
+ messages: inputMessages,
3022
+ schema: responseFormat.schema
3023
+ });
3024
+ }
2989
3025
  const stream = v5.initialize({
2990
3026
  runId,
2991
3027
  onResult,
@@ -2993,11 +3029,11 @@ function execute({
2993
3029
  try {
2994
3030
  const stream2 = await model.doStream({
2995
3031
  ...toolsAndToolChoice,
2996
- prompt: inputMessages,
3032
+ prompt,
2997
3033
  providerOptions,
2998
3034
  abortSignal: options?.abortSignal,
2999
3035
  includeRawChunks,
3000
- responseFormat: output ? getResponseFormat(output) : void 0,
3036
+ responseFormat: modelSupportsResponseFormat ? responseFormat : void 0,
3001
3037
  ...(modelSettings ?? {}),
3002
3038
  headers
3003
3039
  });
@@ -3795,7 +3831,9 @@ function createOuterLLMWorkflow({
3795
3831
  })));
3796
3832
  }
3797
3833
  return inputData.output.toolCalls || [];
3798
- }).foreach(toolCallStep).then(llmMappingStep).commit();
3834
+ }).foreach(toolCallStep, {
3835
+ concurrency: 10
3836
+ }).then(llmMappingStep).commit();
3799
3837
  }
3800
3838
 
3801
3839
  // src/loop/workflow/stream.ts
@@ -4150,9 +4188,6 @@ var MastraLLMVNext = class extends chunkKXCUCBEI_cjs.MastraBase {
4150
4188
  messages,
4151
4189
  tools: Object.keys(tools || {})
4152
4190
  });
4153
- if (output) {
4154
- output = this._applySchemaCompat(output);
4155
- }
4156
4191
  const llmAISpan = tracingContext?.currentSpan?.createChildSpan({
4157
4192
  name: `llm stream: '${model.modelId}'`,
4158
4193
  type: "llm_generation" /* LLM_GENERATION */,
@@ -4168,7 +4203,7 @@ var MastraLLMVNext = class extends chunkKXCUCBEI_cjs.MastraBase {
4168
4203
  }
4169
4204
  });
4170
4205
  try {
4171
- const messageList = new chunkSIKEQ32R_cjs.MessageList({
4206
+ const messageList = new chunkKT4WNDGP_cjs.MessageList({
4172
4207
  threadId,
4173
4208
  resourceId
4174
4209
  });
@@ -4229,7 +4264,7 @@ var MastraLLMVNext = class extends chunkKXCUCBEI_cjs.MastraBase {
4229
4264
  this.logger.warn("Rate limit approaching, waiting 10 seconds", {
4230
4265
  runId
4231
4266
  });
4232
- await chunkLVGGMWSE_cjs.delay(10 * 1e3);
4267
+ await chunk6FVCJBBG_cjs.delay(10 * 1e3);
4233
4268
  }
4234
4269
  },
4235
4270
  onFinish: async props => {
@@ -5124,7 +5159,7 @@ var Machine = class extends EventEmitter__default.default {
5124
5159
  const logger = this.logger;
5125
5160
  let mastraProxy = void 0;
5126
5161
  if (this.#mastra) {
5127
- mastraProxy = chunkLVGGMWSE_cjs.createMastraProxy({
5162
+ mastraProxy = chunk6FVCJBBG_cjs.createMastraProxy({
5128
5163
  mastra: this.#mastra,
5129
5164
  logger
5130
5165
  });
@@ -9293,13 +9328,13 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9293
9328
  this.logger.error(mastraError.toString());
9294
9329
  throw mastraError;
9295
9330
  }
9296
- return chunkLVGGMWSE_cjs.ensureToolProperties(this.#tools);
9331
+ return chunk6FVCJBBG_cjs.ensureToolProperties(this.#tools);
9297
9332
  }
9298
9333
  getTools({
9299
9334
  runtimeContext = new chunkGPWMM745_cjs.RuntimeContext()
9300
9335
  } = {}) {
9301
9336
  if (typeof this.#tools !== "function") {
9302
- return chunkLVGGMWSE_cjs.ensureToolProperties(this.#tools);
9337
+ return chunk6FVCJBBG_cjs.ensureToolProperties(this.#tools);
9303
9338
  }
9304
9339
  const result = this.#tools({
9305
9340
  runtimeContext,
@@ -9320,7 +9355,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9320
9355
  this.logger.error(mastraError.toString());
9321
9356
  throw mastraError;
9322
9357
  }
9323
- return chunkLVGGMWSE_cjs.ensureToolProperties(tools);
9358
+ return chunk6FVCJBBG_cjs.ensureToolProperties(tools);
9324
9359
  });
9325
9360
  }
9326
9361
  get llm() {
@@ -9364,7 +9399,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9364
9399
  mastra: this.#mastra
9365
9400
  });
9366
9401
  } else {
9367
- llm = new chunkMNDKBEEQ_cjs.MastraLLMV1({
9402
+ llm = new chunkOE3SL5VG_cjs.MastraLLMV1({
9368
9403
  model: resolvedModel,
9369
9404
  mastra: this.#mastra
9370
9405
  });
@@ -9480,7 +9515,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9480
9515
  runtimeContext,
9481
9516
  model
9482
9517
  });
9483
- const normMessage = new chunkSIKEQ32R_cjs.MessageList().add(message, "user").get.all.ui().at(-1);
9518
+ const normMessage = new chunkKT4WNDGP_cjs.MessageList().add(message, "user").get.all.ui().at(-1);
9484
9519
  if (!normMessage) {
9485
9520
  throw new Error(`Could not generate title from input ${JSON.stringify(message)}`);
9486
9521
  }
@@ -9539,7 +9574,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9539
9574
  async genTitle(userMessage, runtimeContext, tracingContext, model, instructions) {
9540
9575
  try {
9541
9576
  if (userMessage) {
9542
- const normMessage = new chunkSIKEQ32R_cjs.MessageList().add(userMessage, "user").get.all.ui().at(-1);
9577
+ const normMessage = new chunkKT4WNDGP_cjs.MessageList().add(userMessage, "user").get.all.ui().at(-1);
9543
9578
  if (normMessage) {
9544
9579
  return await this.generateTitleFromUserMessage({
9545
9580
  message: normMessage,
@@ -9565,7 +9600,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9565
9600
  runId,
9566
9601
  userMessages,
9567
9602
  systemMessage,
9568
- messageList = new chunkSIKEQ32R_cjs.MessageList({
9603
+ messageList = new chunkKT4WNDGP_cjs.MessageList({
9569
9604
  threadId,
9570
9605
  resourceId
9571
9606
  }),
@@ -9620,7 +9655,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9620
9655
  systemMessage: systemMessages,
9621
9656
  memorySystemMessage: memorySystemMessage || void 0
9622
9657
  });
9623
- const returnList = new chunkSIKEQ32R_cjs.MessageList().addSystem(systemMessages).add(processedMemoryMessages, "memory").add(newMessages, "user");
9658
+ const returnList = new chunkKT4WNDGP_cjs.MessageList().addSystem(systemMessages).add(processedMemoryMessages, "memory").add(newMessages, "user");
9624
9659
  return {
9625
9660
  threadId: thread.id,
9626
9661
  messages: returnList.get.all.prompt()
@@ -9665,7 +9700,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9665
9700
  runtimeContext
9666
9701
  }) : this.model
9667
9702
  };
9668
- const convertedToCoreTool = chunkLVGGMWSE_cjs.makeCoreTool(toolObj, options);
9703
+ const convertedToCoreTool = chunk6FVCJBBG_cjs.makeCoreTool(toolObj, options);
9669
9704
  convertedMemoryTools[toolName] = convertedToCoreTool;
9670
9705
  }
9671
9706
  }
@@ -9836,7 +9871,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9836
9871
  }) : this.model,
9837
9872
  writableStream
9838
9873
  };
9839
- return [k, chunkLVGGMWSE_cjs.makeCoreTool(tool, options)];
9874
+ return [k, chunk6FVCJBBG_cjs.makeCoreTool(tool, options)];
9840
9875
  }));
9841
9876
  const assignedToolEntriesConverted = Object.fromEntries(assignedCoreToolEntries.filter(entry => Boolean(entry)));
9842
9877
  toolsForRequest = {
@@ -9880,7 +9915,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9880
9915
  runtimeContext
9881
9916
  }) : this.model
9882
9917
  };
9883
- const convertedToCoreTool = chunkLVGGMWSE_cjs.makeCoreTool(toolObj, options, "toolset");
9918
+ const convertedToCoreTool = chunk6FVCJBBG_cjs.makeCoreTool(toolObj, options, "toolset");
9884
9919
  toolsForRequest[toolName] = convertedToCoreTool;
9885
9920
  }
9886
9921
  }
@@ -9925,7 +9960,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9925
9960
  runtimeContext
9926
9961
  }) : this.model
9927
9962
  };
9928
- const convertedToCoreTool = chunkLVGGMWSE_cjs.makeCoreTool(rest, options, "client-tool");
9963
+ const convertedToCoreTool = chunk6FVCJBBG_cjs.makeCoreTool(rest, options, "client-tool");
9929
9964
  toolsForRequest[toolName] = convertedToCoreTool;
9930
9965
  }
9931
9966
  }
@@ -9936,8 +9971,8 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9936
9971
  threadId,
9937
9972
  resourceId,
9938
9973
  runtimeContext,
9939
- methodType,
9940
9974
  tracingContext,
9975
+ methodType,
9941
9976
  format
9942
9977
  }) {
9943
9978
  const convertedWorkflowTools = {};
@@ -9956,17 +9991,9 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9956
9991
  // current tool span onto the workflow to maintain continuity of the trace
9957
9992
  execute: async ({
9958
9993
  context,
9959
- writer
9994
+ writer,
9995
+ tracingContext: innerTracingContext
9960
9996
  }) => {
9961
- const toolAISpan = tracingContext.currentSpan?.createChildSpan({
9962
- type: "tool_call" /* TOOL_CALL */,
9963
- name: `tool: '${workflowName}'`,
9964
- input: context,
9965
- attributes: {
9966
- toolId: workflowName,
9967
- toolType: "workflow"
9968
- }
9969
- });
9970
9997
  try {
9971
9998
  this.logger.debug(`[Agent:${this.name}] - Executing workflow as tool ${workflowName}`, {
9972
9999
  name: workflowName,
@@ -9982,16 +10009,13 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
9982
10009
  result = await run.start({
9983
10010
  inputData: context,
9984
10011
  runtimeContext,
9985
- tracingContext: {
9986
- currentSpan: toolAISpan
9987
- }
10012
+ tracingContext: innerTracingContext
9988
10013
  });
9989
10014
  } else if (methodType === "stream") {
9990
- const streamResult = await run.stream({
10015
+ const streamResult = run.stream({
9991
10016
  inputData: context,
9992
- runtimeContext
9993
- // TODO: is this forgottn?
9994
- //currentSpan: toolAISpan,
10017
+ runtimeContext,
10018
+ tracingContext: innerTracingContext
9995
10019
  });
9996
10020
  if (writer) {
9997
10021
  await streamResult.stream.pipeTo(writer);
@@ -10010,9 +10034,6 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
10010
10034
  }
10011
10035
  result = await streamResult.result;
10012
10036
  }
10013
- toolAISpan?.end({
10014
- output: result
10015
- });
10016
10037
  return {
10017
10038
  result,
10018
10039
  runId: run.runId
@@ -10032,9 +10053,6 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
10032
10053
  }, err);
10033
10054
  this.logger.trackException(mastraError);
10034
10055
  this.logger.error(mastraError.toString());
10035
- toolAISpan?.error({
10036
- error: mastraError
10037
- });
10038
10056
  throw mastraError;
10039
10057
  }
10040
10058
  }
@@ -10056,7 +10074,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
10056
10074
  }) : this.model,
10057
10075
  tracingContext
10058
10076
  };
10059
- convertedWorkflowTools[workflowName] = chunkLVGGMWSE_cjs.makeCoreTool(toolObj, options);
10077
+ convertedWorkflowTools[workflowName] = chunk6FVCJBBG_cjs.makeCoreTool(toolObj, options);
10060
10078
  }
10061
10079
  }
10062
10080
  return convertedWorkflowTools;
@@ -10076,7 +10094,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
10076
10094
  let mastraProxy = void 0;
10077
10095
  const logger = this.logger;
10078
10096
  if (this.#mastra) {
10079
- mastraProxy = chunkLVGGMWSE_cjs.createMastraProxy({
10097
+ mastraProxy = chunk6FVCJBBG_cjs.createMastraProxy({
10080
10098
  mastra: this.#mastra,
10081
10099
  logger
10082
10100
  });
@@ -10265,7 +10283,7 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
10265
10283
  writableStream,
10266
10284
  methodType
10267
10285
  });
10268
- const messageList = new chunkSIKEQ32R_cjs.MessageList({
10286
+ const messageList = new chunkKT4WNDGP_cjs.MessageList({
10269
10287
  threadId,
10270
10288
  resourceId,
10271
10289
  generateMessageId: this.#mastra?.generateId?.bind(this.#mastra),
@@ -10350,10 +10368,12 @@ exports.Agent = class Agent extends (_a = chunkKXCUCBEI_cjs.MastraBase) {
10350
10368
  saveThread: false
10351
10369
  });
10352
10370
  }
10353
- let [memoryMessages, memorySystemMessage] = await Promise.all([existingThread ? this.getMemoryMessages({
10371
+ const config = memory.getMergedThreadConfig(memoryConfig || {});
10372
+ const hasResourceScopeSemanticRecall = typeof config?.semanticRecall === "object" && config?.semanticRecall?.scope === "resource";
10373
+ let [memoryMessages, memorySystemMessage] = await Promise.all([existingThread || hasResourceScopeSemanticRecall ? this.getMemoryMessages({
10354
10374
  resourceId,
10355
10375
  threadId: threadObject.id,
10356
- vectorMessageSearch: new chunkSIKEQ32R_cjs.MessageList().add(messages, `user`).getLatestUserContent() || "",
10376
+ vectorMessageSearch: new chunkKT4WNDGP_cjs.MessageList().add(messages, `user`).getLatestUserContent() || "",
10357
10377
  memoryConfig,
10358
10378
  runtimeContext
10359
10379
  }) : [], memory.getSystemMessage({
@@ -10376,7 +10396,7 @@ The following messages were remembered from a different conversation:
10376
10396
  <remembered_from_other_conversation>
10377
10397
  ${(() => {
10378
10398
  let result = ``;
10379
- const messages2 = new chunkSIKEQ32R_cjs.MessageList().add(resultsFromOtherThreads, "memory").get.all.v1();
10399
+ const messages2 = new chunkKT4WNDGP_cjs.MessageList().add(resultsFromOtherThreads, "memory").get.all.v1();
10380
10400
  let lastYmd = null;
10381
10401
  for (const msg of messages2) {
10382
10402
  const date = msg.createdAt;
@@ -10429,7 +10449,7 @@ Message ${msg.threadId && msg.threadId !== threadObject.id ? "from previous conv
10429
10449
  systemMessage,
10430
10450
  memorySystemMessage: memorySystemMessage || void 0
10431
10451
  });
10432
- const processedList = new chunkSIKEQ32R_cjs.MessageList({
10452
+ const processedList = new chunkKT4WNDGP_cjs.MessageList({
10433
10453
  threadId: threadObject.id,
10434
10454
  resourceId,
10435
10455
  generateMessageId: this.#mastra?.generateId?.bind(this.#mastra),
@@ -10485,7 +10505,7 @@ Message ${msg.threadId && msg.threadId !== threadObject.id ? "from previous conv
10485
10505
  result: resToLog,
10486
10506
  threadId
10487
10507
  });
10488
- const messageListResponses = new chunkSIKEQ32R_cjs.MessageList({
10508
+ const messageListResponses = new chunkKT4WNDGP_cjs.MessageList({
10489
10509
  threadId,
10490
10510
  resourceId,
10491
10511
  generateMessageId: this.#mastra?.generateId?.bind(this.#mastra),
@@ -11046,7 +11066,7 @@ Message ${msg.threadId && msg.threadId !== threadObject.id ? "from previous conv
11046
11066
  tracingContext
11047
11067
  }) => {
11048
11068
  const thread = threadFromArgs;
11049
- const messageList = new chunkSIKEQ32R_cjs.MessageList({
11069
+ const messageList = new chunkKT4WNDGP_cjs.MessageList({
11050
11070
  threadId: thread?.id,
11051
11071
  resourceId,
11052
11072
  generateMessageId: this.#mastra?.generateId?.bind(this.#mastra),
@@ -11126,10 +11146,12 @@ Message ${msg.threadId && msg.threadId !== threadObject.id ? "from previous conv
11126
11146
  saveThread: false
11127
11147
  });
11128
11148
  }
11129
- let [memoryMessages, memorySystemMessage] = await Promise.all([existingThread ? this.getMemoryMessages({
11149
+ const config = memory.getMergedThreadConfig(memoryConfig || {});
11150
+ const hasResourceScopeSemanticRecall = typeof config?.semanticRecall === "object" && config?.semanticRecall?.scope === "resource";
11151
+ let [memoryMessages, memorySystemMessage] = await Promise.all([existingThread || hasResourceScopeSemanticRecall ? this.getMemoryMessages({
11130
11152
  resourceId,
11131
11153
  threadId: threadObject.id,
11132
- vectorMessageSearch: new chunkSIKEQ32R_cjs.MessageList().add(options.messages, `user`).getLatestUserContent() || "",
11154
+ vectorMessageSearch: new chunkKT4WNDGP_cjs.MessageList().add(options.messages, `user`).getLatestUserContent() || "",
11133
11155
  memoryConfig,
11134
11156
  runtimeContext
11135
11157
  }) : [], memory.getSystemMessage({
@@ -11152,7 +11174,7 @@ The following messages were remembered from a different conversation:
11152
11174
  <remembered_from_other_conversation>
11153
11175
  ${(() => {
11154
11176
  let result2 = ``;
11155
- const messages = new chunkSIKEQ32R_cjs.MessageList().add(resultsFromOtherThreads, "memory").get.all.v1();
11177
+ const messages = new chunkKT4WNDGP_cjs.MessageList().add(resultsFromOtherThreads, "memory").get.all.v1();
11156
11178
  let lastYmd = null;
11157
11179
  for (const msg of messages) {
11158
11180
  const date = msg.createdAt;
@@ -11204,7 +11226,7 @@ the following messages are from ${ymd}
11204
11226
  systemMessage,
11205
11227
  memorySystemMessage: memorySystemMessage || void 0
11206
11228
  });
11207
- const processedList = new chunkSIKEQ32R_cjs.MessageList({
11229
+ const processedList = new chunkKT4WNDGP_cjs.MessageList({
11208
11230
  threadId: threadObject.id,
11209
11231
  resourceId,
11210
11232
  generateMessageId: this.#mastra?.generateId?.bind(this.#mastra),
@@ -11738,7 +11760,7 @@ the following messages are from ${ymd}
11738
11760
  runtimeContext: mergedGenerateOptions.runtimeContext || new chunkGPWMM745_cjs.RuntimeContext(),
11739
11761
  tracingContext,
11740
11762
  outputProcessorOverrides: finalOutputProcessors,
11741
- messageList: new chunkSIKEQ32R_cjs.MessageList({
11763
+ messageList: new chunkKT4WNDGP_cjs.MessageList({
11742
11764
  threadId: llmOptions.threadId || "",
11743
11765
  resourceId: llmOptions.resourceId || ""
11744
11766
  }).add({
@@ -11831,7 +11853,7 @@ the following messages are from ${ymd}
11831
11853
  const outputProcessorResult = await this.__runOutputProcessors({
11832
11854
  runtimeContext: mergedGenerateOptions.runtimeContext || new chunkGPWMM745_cjs.RuntimeContext(),
11833
11855
  tracingContext,
11834
- messageList: new chunkSIKEQ32R_cjs.MessageList({
11856
+ messageList: new chunkKT4WNDGP_cjs.MessageList({
11835
11857
  threadId: llmOptions.threadId || "",
11836
11858
  resourceId: llmOptions.resourceId || ""
11837
11859
  }).add({
@@ -15501,7 +15523,8 @@ var Run = class {
15501
15523
  */
15502
15524
  stream({
15503
15525
  inputData,
15504
- runtimeContext
15526
+ runtimeContext,
15527
+ tracingContext
15505
15528
  } = {}) {
15506
15529
  const {
15507
15530
  readable,
@@ -15566,7 +15589,8 @@ var Run = class {
15566
15589
  this.executionResults = this._start({
15567
15590
  inputData,
15568
15591
  runtimeContext,
15569
- format: "aisdk"
15592
+ format: "aisdk",
15593
+ tracingContext
15570
15594
  }).then(result => {
15571
15595
  if (result.status !== "suspended") {
15572
15596
  this.closeStreamAction?.().catch(() => {});
@@ -15939,5 +15963,5 @@ exports.recursivelyCheckForFinalState = recursivelyCheckForFinalState;
15939
15963
  exports.resolveVariables = resolveVariables;
15940
15964
  exports.updateStepInHierarchy = updateStepInHierarchy;
15941
15965
  exports.workflowToStep = workflowToStep;
15942
- //# sourceMappingURL=chunk-7GYN2OE3.cjs.map
15943
- //# sourceMappingURL=chunk-7GYN2OE3.cjs.map
15966
+ //# sourceMappingURL=chunk-IUF2ESZH.cjs.map
15967
+ //# sourceMappingURL=chunk-IUF2ESZH.cjs.map