{"version":3,"sources":["../../src/test-utils/llm-mock.ts"],"names":["MockLanguageModelV1","simulateReadableStream","MastraLLM"],"mappings":"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","file":"llm-mock.cjs","sourcesContent":["import { simulateReadableStream } from 'ai';\nimport { MockLanguageModelV1 } from 'ai/test';\n\nimport { MastraLLM } from '../llm/model/model';\n\nexport function createMockModel({\n  objectGenerationMode,\n  mockText,\n  spyGenerate,\n  spyStream,\n}: {\n  objectGenerationMode?: 'json';\n  mockText: string | Record<string, any>;\n  spyGenerate?: (props: any) => void;\n  spyStream?: (props: any) => void;\n}) {\n  const mockModel = new MockLanguageModelV1({\n    defaultObjectGenerationMode: objectGenerationMode,\n    doGenerate: async props => {\n      if (spyGenerate) {\n        spyGenerate(props);\n      }\n\n      if (objectGenerationMode === 'json') {\n        return {\n          rawCall: { rawPrompt: null, rawSettings: {} },\n          finishReason: 'stop',\n          usage: { promptTokens: 10, completionTokens: 20 },\n          text: JSON.stringify(mockText),\n        };\n      }\n\n      return {\n        rawCall: { rawPrompt: null, rawSettings: {} },\n        finishReason: 'stop',\n        usage: { promptTokens: 10, completionTokens: 20 },\n        text: typeof mockText === 'string' ? mockText : JSON.stringify(mockText),\n      };\n    },\n    doStream: async props => {\n      if (spyStream) {\n        spyStream(props);\n      }\n\n      const text = typeof mockText === 'string' ? mockText : JSON.stringify(mockText);\n      // Split the mock text into chunks for streaming\n      const chunks = text.split(' ').map(word => ({\n        type: 'text-delta' as const,\n        textDelta: word + ' ',\n      }));\n\n      return {\n        stream: simulateReadableStream({\n          chunks: [\n            ...chunks,\n            {\n              type: 'finish',\n              finishReason: 'stop',\n              logprobs: undefined,\n              usage: { completionTokens: 10, promptTokens: 3 },\n            },\n          ],\n        }),\n        rawCall: { rawPrompt: null, rawSettings: {} },\n      };\n    },\n  });\n\n  return mockModel;\n}\n\nexport class MockProvider extends MastraLLM {\n  constructor({\n    spyGenerate,\n    spyStream,\n    objectGenerationMode,\n    mockText = 'Hello, world!',\n  }: {\n    spyGenerate?: (props: any) => void;\n    spyStream?: (props: any) => void;\n    objectGenerationMode?: 'json';\n    mockText?: string | Record<string, any>;\n  }) {\n    const mockModel = new MockLanguageModelV1({\n      defaultObjectGenerationMode: objectGenerationMode,\n      doGenerate: async props => {\n        if (spyGenerate) {\n          spyGenerate(props);\n        }\n\n        if (objectGenerationMode === 'json') {\n          return {\n            rawCall: { rawPrompt: null, rawSettings: {} },\n            finishReason: 'stop',\n            usage: { promptTokens: 10, completionTokens: 20 },\n            text: JSON.stringify(mockText),\n          };\n        }\n\n        return {\n          rawCall: { rawPrompt: null, rawSettings: {} },\n          finishReason: 'stop',\n          usage: { promptTokens: 10, completionTokens: 20 },\n          text: typeof mockText === 'string' ? mockText : JSON.stringify(mockText),\n        };\n      },\n      doStream: async props => {\n        if (spyStream) {\n          spyStream(props);\n        }\n\n        const text = typeof mockText === 'string' ? mockText : JSON.stringify(mockText);\n        // Split the mock text into chunks for streaming\n        const chunks = text.split(' ').map(word => ({\n          type: 'text-delta' as const,\n          textDelta: word + ' ',\n        }));\n\n        return {\n          stream: simulateReadableStream({\n            chunks: [\n              ...chunks,\n              {\n                type: 'finish',\n                finishReason: 'stop',\n                logprobs: undefined,\n                usage: { completionTokens: 10, promptTokens: 3 },\n              },\n            ],\n          }),\n          rawCall: { rawPrompt: null, rawSettings: {} },\n        };\n      },\n    });\n\n    super({ model: mockModel });\n  }\n\n  // @ts-ignore\n  stream(...args: any): PromiseLike<StreamReturn<any, any, any>> {\n    // @ts-ignore\n    const result = super.stream(...args);\n\n    return {\n      ...result,\n      // @ts-ignore on await read the stream\n      then: (onfulfilled, onrejected) => {\n        // @ts-ignore\n        return result.baseStream.pipeTo(new WritableStream()).then(onfulfilled, onrejected);\n      },\n    };\n  }\n\n  // @ts-ignore\n  __streamObject(...args): PromiseLike<StreamObjectResult<any>> {\n    // @ts-ignore\n    const result = super.__streamObject(...args);\n\n    return {\n      ...result,\n      // @ts-ignore on await read the stream\n      then: (onfulfilled, onrejected) => {\n        // @ts-ignore\n        return result.baseStream.pipeTo(new WritableStream()).then(onfulfilled, onrejected);\n      },\n    };\n  }\n}\n"]}