@mastra/core 0.15.1 → 0.15.3-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.
- package/dist/agent/agent.types.d.ts +2 -0
- package/dist/agent/agent.types.d.ts.map +1 -1
- package/dist/agent/index.cjs +8 -8
- package/dist/agent/index.d.ts +0 -2
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/input-processor/index.cjs +6 -6
- package/dist/agent/input-processor/index.js +1 -1
- package/dist/ai-tracing/base.d.ts +3 -1
- package/dist/ai-tracing/base.d.ts.map +1 -1
- package/dist/ai-tracing/default.d.ts +1 -9
- package/dist/ai-tracing/default.d.ts.map +1 -1
- package/dist/ai-tracing/exporters/console.d.ts +10 -0
- package/dist/ai-tracing/exporters/console.d.ts.map +1 -0
- package/dist/ai-tracing/exporters/default.d.ts +97 -0
- package/dist/ai-tracing/exporters/default.d.ts.map +1 -0
- package/dist/ai-tracing/exporters/index.d.ts +6 -0
- package/dist/ai-tracing/exporters/index.d.ts.map +1 -0
- package/dist/ai-tracing/index.cjs +31 -27
- package/dist/ai-tracing/index.d.ts +1 -0
- package/dist/ai-tracing/index.d.ts.map +1 -1
- package/dist/ai-tracing/index.js +1 -1
- package/dist/ai-tracing/no-op.d.ts +8 -0
- package/dist/ai-tracing/no-op.d.ts.map +1 -1
- package/dist/ai-tracing/types.d.ts +33 -0
- package/dist/ai-tracing/types.d.ts.map +1 -1
- package/dist/{chunk-DPE6K23N.cjs → chunk-2KK7QQH2.cjs} +47 -8
- package/dist/chunk-2KK7QQH2.cjs.map +1 -0
- package/dist/{chunk-EQLCC3M7.cjs → chunk-4DKPMUAC.cjs} +646 -101
- package/dist/chunk-4DKPMUAC.cjs.map +1 -0
- package/dist/{chunk-FCFQE5BD.js → chunk-6JAIHLZY.js} +130 -99
- package/dist/chunk-6JAIHLZY.js.map +1 -0
- package/dist/{chunk-RMEG4MOG.cjs → chunk-6VROHRAR.cjs} +45 -30
- package/dist/chunk-6VROHRAR.cjs.map +1 -0
- package/dist/{chunk-DAJYN7HG.cjs → chunk-7U76TYYN.cjs} +4 -4
- package/dist/{chunk-DAJYN7HG.cjs.map → chunk-7U76TYYN.cjs.map} +1 -1
- package/dist/{chunk-VKJWTAHZ.js → chunk-E3LAPNKY.js} +3 -3
- package/dist/{chunk-VKJWTAHZ.js.map → chunk-E3LAPNKY.js.map} +1 -1
- package/dist/{chunk-QLRALF4I.js → chunk-EEGBKQYC.js} +6 -4
- package/dist/chunk-EEGBKQYC.js.map +1 -0
- package/dist/{chunk-FFGJPMKP.js → chunk-FLXWZUIG.js} +45 -30
- package/dist/chunk-FLXWZUIG.js.map +1 -0
- package/dist/{chunk-SNYSVGIU.cjs → chunk-I2YGYG3Y.cjs} +144 -113
- package/dist/chunk-I2YGYG3Y.cjs.map +1 -0
- package/dist/{chunk-HRPTZGDT.js → chunk-IAOFOXVA.js} +3 -3
- package/dist/{chunk-HRPTZGDT.js.map → chunk-IAOFOXVA.js.map} +1 -1
- package/dist/{chunk-UKQI74TN.cjs → chunk-K6UMYGK5.cjs} +17 -2
- package/dist/chunk-K6UMYGK5.cjs.map +1 -0
- package/dist/{chunk-XJFIB2FO.js → chunk-Q67FV4QB.js} +3 -3
- package/dist/{chunk-XJFIB2FO.js.map → chunk-Q67FV4QB.js.map} +1 -1
- package/dist/{chunk-7EXGDKNQ.cjs → chunk-QBNRMJAN.cjs} +4 -4
- package/dist/{chunk-7EXGDKNQ.cjs.map → chunk-QBNRMJAN.cjs.map} +1 -1
- package/dist/{chunk-G6WYC4SF.cjs → chunk-SFLYVXLG.cjs} +6 -6
- package/dist/{chunk-G6WYC4SF.cjs.map → chunk-SFLYVXLG.cjs.map} +1 -1
- package/dist/{chunk-7TH2KSEC.js → chunk-WOTBMZCN.js} +645 -101
- package/dist/chunk-WOTBMZCN.js.map +1 -0
- package/dist/{chunk-6NYFECSO.js → chunk-Y3WIANDM.js} +43 -4
- package/dist/chunk-Y3WIANDM.js.map +1 -0
- package/dist/{chunk-Y44DK4T5.js → chunk-YGW2WEJ5.js} +17 -2
- package/dist/chunk-YGW2WEJ5.js.map +1 -0
- package/dist/{chunk-ASRKKIW7.cjs → chunk-YPT3YX6U.cjs} +10 -8
- package/dist/chunk-YPT3YX6U.cjs.map +1 -0
- package/dist/index.cjs +42 -42
- package/dist/index.js +9 -9
- package/dist/llm/model/model.loop.d.ts +1 -1
- package/dist/llm/model/model.loop.d.ts.map +1 -1
- package/dist/loop/index.cjs +2 -2
- package/dist/loop/index.js +1 -1
- package/dist/loop/types.d.ts +1 -0
- package/dist/loop/types.d.ts.map +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.d.ts +8 -0
- package/dist/mastra/index.d.ts.map +1 -1
- package/dist/mastra/index.js +1 -1
- package/dist/memory/index.cjs +4 -4
- package/dist/memory/index.js +1 -1
- package/dist/network/index.cjs +2 -2
- package/dist/network/index.js +1 -1
- package/dist/network/vNext/index.cjs +15 -13
- package/dist/network/vNext/index.cjs.map +1 -1
- package/dist/network/vNext/index.d.ts.map +1 -1
- package/dist/network/vNext/index.js +4 -2
- package/dist/network/vNext/index.js.map +1 -1
- package/dist/processors/index.cjs +8 -8
- package/dist/processors/index.js +2 -2
- package/dist/relevance/index.cjs +4 -4
- package/dist/relevance/index.js +1 -1
- package/dist/scores/index.cjs +282 -88
- package/dist/scores/index.cjs.map +1 -1
- package/dist/scores/index.d.ts +1 -1
- package/dist/scores/index.js +279 -85
- package/dist/scores/index.js.map +1 -1
- package/dist/scores/run-experiment/index.d.ts +59 -0
- package/dist/scores/run-experiment/index.d.ts.map +1 -0
- package/dist/scores/run-experiment/scorerAccumulator.d.ts +12 -0
- package/dist/scores/run-experiment/scorerAccumulator.d.ts.map +1 -0
- package/dist/storage/base.d.ts +9 -0
- package/dist/storage/base.d.ts.map +1 -1
- package/dist/storage/domains/observability/base.d.ts +9 -0
- package/dist/storage/domains/observability/base.d.ts.map +1 -1
- package/dist/storage/domains/observability/index.d.ts +1 -0
- package/dist/storage/domains/observability/index.d.ts.map +1 -1
- package/dist/storage/domains/observability/inmemory.d.ts +5 -0
- package/dist/storage/domains/observability/inmemory.d.ts.map +1 -1
- package/dist/storage/index.cjs +24 -6
- package/dist/storage/index.cjs.map +1 -1
- package/dist/storage/index.js +20 -3
- package/dist/storage/index.js.map +1 -1
- package/dist/stream/index.cjs +3 -3
- package/dist/stream/index.js +1 -1
- package/dist/test-utils/llm-mock.cjs +2 -2
- package/dist/test-utils/llm-mock.js +1 -1
- package/dist/tools/tool-builder/builder.d.ts.map +1 -1
- package/dist/tools/types.d.ts +2 -2
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils.cjs +16 -16
- package/dist/utils.js +1 -1
- package/dist/workflows/default.d.ts +25 -6
- package/dist/workflows/default.d.ts.map +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/evented/workflow.d.ts.map +1 -1
- package/dist/workflows/execution-engine.d.ts +1 -0
- package/dist/workflows/execution-engine.d.ts.map +1 -1
- package/dist/workflows/index.cjs +10 -10
- package/dist/workflows/index.js +1 -1
- package/dist/workflows/legacy/index.cjs +22 -22
- package/dist/workflows/legacy/index.js +1 -1
- package/dist/workflows/workflow.d.ts +7 -0
- package/dist/workflows/workflow.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/chunk-6NYFECSO.js.map +0 -1
- package/dist/chunk-7TH2KSEC.js.map +0 -1
- package/dist/chunk-ASRKKIW7.cjs.map +0 -1
- package/dist/chunk-DPE6K23N.cjs.map +0 -1
- package/dist/chunk-EQLCC3M7.cjs.map +0 -1
- package/dist/chunk-FCFQE5BD.js.map +0 -1
- package/dist/chunk-FFGJPMKP.js.map +0 -1
- package/dist/chunk-QLRALF4I.js.map +0 -1
- package/dist/chunk-RMEG4MOG.cjs.map +0 -1
- package/dist/chunk-SNYSVGIU.cjs.map +0 -1
- package/dist/chunk-UKQI74TN.cjs.map +0 -1
- package/dist/chunk-Y44DK4T5.js.map +0 -1
- package/dist/scores/run-experiment.d.ts +0 -35
- package/dist/scores/run-experiment.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/workflows/evented/step-executor.ts","../src/events/processor.ts","../src/workflows/evented/workflow-event-processor/loop.ts","../src/workflows/evented/workflow-event-processor/parallel.ts","../src/workflows/evented/workflow-event-processor/sleep.ts","../src/workflows/evented/workflow-event-processor/index.ts","../src/workflows/evented/workflow.ts","../src/workflows/evented/workflow-event-processor/utils.ts","../src/workflows/evented/execution-engine.ts"],"names":["step","result","EventEmitter","randomUUID"],"mappings":"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","file":"chunk-EEGBKQYC.js","sourcesContent":["import EventEmitter from 'events';\nimport type { Emitter, ExecuteFunction, Mastra, Step, StepFlowEntry, StepResult } from '../..';\nimport { MastraBase } from '../../base';\nimport type { RuntimeContext } from '../../di';\nimport type { PubSub } from '../../events';\nimport { RegisteredLogger } from '../../logger';\nimport { EMITTER_SYMBOL } from '../constants';\n\nexport class StepExecutor extends MastraBase {\n protected mastra?: Mastra;\n constructor({ mastra }: { mastra?: Mastra }) {\n super({ name: 'StepExecutor', component: RegisteredLogger.WORKFLOW });\n this.mastra = mastra;\n }\n\n __registerMastra(mastra: Mastra) {\n this.mastra = mastra;\n }\n\n async execute(params: {\n workflowId: string;\n step: Step<any, any, any, any>;\n runId: string;\n input?: any;\n resumeData?: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n emitter: EventEmitter;\n runtimeContext: RuntimeContext;\n runCount?: number;\n foreachIdx?: number;\n }): Promise<StepResult<any, any, any, any>> {\n const { step, stepResults, runId, runtimeContext, runCount = 0 } = params;\n\n const abortController = new AbortController();\n\n let suspended: { payload: any } | undefined;\n let bailed: { payload: any } | undefined;\n const startedAt = Date.now();\n let stepInfo: {\n startedAt: number;\n payload: any;\n resumePayload?: any;\n resumedAt?: number;\n [key: string]: any;\n } = {\n ...stepResults[step.id],\n startedAt,\n payload: params.input ?? {},\n };\n\n if (params.resumeData) {\n delete stepInfo.suspendPayload?.['__workflow_meta'];\n stepInfo.resumePayload = params.resumeData;\n stepInfo.resumedAt = Date.now();\n }\n\n try {\n const stepResult = await step.execute({\n workflowId: params.workflowId,\n runId,\n mastra: this.mastra!,\n runtimeContext,\n inputData: typeof params.foreachIdx === 'number' ? params.input?.[params.foreachIdx] : params.input,\n runCount,\n resumeData: params.resumeData,\n getInitData: () => stepResults?.input as any,\n getStepResult: (step: any) => {\n if (!step?.id) {\n return null;\n }\n\n const result = stepResults[step.id];\n if (result?.status === 'success') {\n return result.output;\n }\n\n return null;\n },\n suspend: async (suspendPayload: any): Promise<any> => {\n suspended = { payload: { ...suspendPayload, __workflow_meta: { runId, path: [step.id] } } };\n },\n bail: (result: any) => {\n bailed = { payload: result };\n },\n // TODO\n writer: undefined as any,\n abort: () => {\n abortController?.abort();\n },\n [EMITTER_SYMBOL]: params.emitter as unknown as Emitter, // TODO: refactor this to use our PubSub actually\n engine: {},\n abortSignal: abortController?.signal,\n // TODO\n tracingContext: {},\n });\n\n const endedAt = Date.now();\n\n let finalResult: StepResult<any, any, any, any>;\n if (suspended) {\n finalResult = {\n ...stepInfo,\n status: 'suspended',\n suspendedAt: endedAt,\n };\n\n if (suspended.payload) {\n finalResult.suspendPayload = suspended.payload;\n }\n } else if (bailed) {\n finalResult = {\n ...stepInfo,\n // @ts-ignore\n status: 'bailed',\n endedAt,\n output: bailed.payload,\n };\n } else {\n finalResult = {\n ...stepInfo,\n status: 'success',\n endedAt,\n output: stepResult,\n };\n }\n\n return finalResult;\n } catch (error: any) {\n const endedAt = Date.now();\n\n return {\n ...stepInfo,\n status: 'failed',\n endedAt,\n error: error instanceof Error ? (error?.stack ?? error.message) : error,\n };\n }\n }\n\n async evaluateConditions(params: {\n workflowId: string;\n step: Extract<StepFlowEntry, { type: 'conditional' }>;\n runId: string;\n input?: any;\n resumeData?: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n emitter: { runtime: PubSub; events: PubSub };\n runtimeContext: RuntimeContext;\n runCount?: number;\n }): Promise<number[]> {\n const { step, stepResults, runId, runtimeContext, runCount = 0 } = params;\n\n const abortController = new AbortController();\n const ee = new EventEmitter();\n\n const results = await Promise.all(\n step.conditions.map(condition => {\n try {\n return this.evaluateCondition({\n workflowId: params.workflowId,\n condition,\n runId,\n runtimeContext,\n inputData: params.input,\n runCount,\n resumeData: params.resumeData,\n abortController,\n stepResults,\n emitter: ee,\n });\n } catch (e) {\n console.error('error evaluating condition', e);\n return false;\n }\n }),\n );\n\n const idxs = results.reduce((acc, result, idx) => {\n if (result) {\n acc.push(idx);\n }\n\n return acc;\n }, [] as number[]);\n\n return idxs;\n }\n\n async evaluateCondition({\n workflowId,\n condition,\n runId,\n inputData,\n resumeData,\n stepResults,\n runtimeContext,\n emitter,\n abortController,\n runCount = 0,\n }: {\n workflowId: string;\n condition: ExecuteFunction<any, any, any, any, any>;\n runId: string;\n inputData?: any;\n resumeData?: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n emitter: EventEmitter;\n runtimeContext: RuntimeContext;\n abortController: AbortController;\n runCount?: number;\n }): Promise<boolean> {\n return condition({\n workflowId,\n runId,\n mastra: this.mastra!,\n runtimeContext,\n inputData,\n runCount,\n resumeData: resumeData,\n getInitData: () => stepResults?.input as any,\n getStepResult: (step: any) => {\n if (!step?.id) {\n return null;\n }\n\n const result = stepResults[step.id];\n if (result?.status === 'success') {\n return result.output;\n }\n\n return null;\n },\n suspend: async (_suspendPayload: any): Promise<any> => {\n throw new Error('Not implemented');\n },\n bail: (_result: any) => {\n throw new Error('Not implemented');\n },\n // TODO\n writer: undefined as any,\n abort: () => {\n abortController?.abort();\n },\n [EMITTER_SYMBOL]: emitter as unknown as Emitter, // TODO: refactor this to use our PubSub actually\n engine: {},\n abortSignal: abortController?.signal,\n // TODO\n tracingContext: {},\n });\n }\n\n async resolveSleep(params: {\n workflowId: string;\n step: Extract<StepFlowEntry, { type: 'sleep' }>;\n runId: string;\n input?: any;\n resumeData?: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n emitter: { runtime: PubSub; events: PubSub };\n runtimeContext: RuntimeContext;\n runCount?: number;\n }): Promise<number> {\n const { step, stepResults, runId, runtimeContext, runCount = 0 } = params;\n\n const abortController = new AbortController();\n const ee = new EventEmitter();\n\n if (step.duration) {\n return step.duration;\n }\n\n if (!step.fn) {\n return 0;\n }\n\n try {\n return await step.fn({\n workflowId: params.workflowId,\n runId,\n mastra: this.mastra!,\n runtimeContext,\n inputData: params.input,\n runCount,\n resumeData: params.resumeData,\n getInitData: () => stepResults?.input as any,\n getStepResult: (step: any) => {\n if (!step?.id) {\n return null;\n }\n\n const result = stepResults[step.id];\n if (result?.status === 'success') {\n return result.output;\n }\n\n return null;\n },\n suspend: async (_suspendPayload: any): Promise<any> => {\n throw new Error('Not implemented');\n },\n bail: (_result: any) => {\n throw new Error('Not implemented');\n },\n abort: () => {\n abortController?.abort();\n },\n // TODO\n writer: undefined as any,\n [EMITTER_SYMBOL]: ee as unknown as Emitter, // TODO: refactor this to use our PubSub actually\n engine: {},\n abortSignal: abortController?.signal,\n // TODO\n tracingContext: {},\n });\n } catch (e) {\n console.error('error evaluating condition', e);\n return 0;\n }\n }\n\n async resolveSleepUntil(params: {\n workflowId: string;\n step: Extract<StepFlowEntry, { type: 'sleepUntil' }>;\n runId: string;\n input?: any;\n resumeData?: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n emitter: { runtime: PubSub; events: PubSub };\n runtimeContext: RuntimeContext;\n runCount?: number;\n }): Promise<number> {\n const { step, stepResults, runId, runtimeContext, runCount = 0 } = params;\n\n const abortController = new AbortController();\n const ee = new EventEmitter();\n\n if (step.date) {\n return step.date.getTime() - Date.now();\n }\n\n if (!step.fn) {\n return 0;\n }\n\n try {\n const result = await step.fn({\n workflowId: params.workflowId,\n runId,\n mastra: this.mastra!,\n runtimeContext,\n inputData: params.input,\n runCount,\n resumeData: params.resumeData,\n getInitData: () => stepResults?.input as any,\n getStepResult: (step: any) => {\n if (!step?.id) {\n return null;\n }\n\n const result = stepResults[step.id];\n if (result?.status === 'success') {\n return result.output;\n }\n\n return null;\n },\n suspend: async (_suspendPayload: any): Promise<any> => {\n throw new Error('Not implemented');\n },\n bail: (_result: any) => {\n throw new Error('Not implemented');\n },\n abort: () => {\n abortController?.abort();\n },\n // TODO\n writer: undefined as any,\n [EMITTER_SYMBOL]: ee as unknown as Emitter, // TODO: refactor this to use our PubSub actually\n engine: {},\n abortSignal: abortController?.signal,\n // TODO\n tracingContext: {},\n });\n\n return result.getTime() - Date.now();\n } catch (e) {\n console.error('error evaluating condition', e);\n return 0;\n }\n }\n}\n","import type { Mastra } from '../mastra';\nimport type { Event } from './types';\n\nexport abstract class EventProcessor {\n protected mastra: Mastra;\n\n __registerMastra(mastra: Mastra) {\n this.mastra = mastra;\n }\n\n constructor({ mastra }: { mastra: Mastra }) {\n this.mastra = mastra;\n }\n\n protected abstract process(event: Event): Promise<void>;\n}\n","import EventEmitter from 'events';\nimport type { StepFlowEntry, StepResult } from '../..';\nimport type { Mastra } from '../../..';\nimport { RuntimeContext } from '../../../di';\nimport type { PubSub } from '../../../events';\nimport type { StepExecutor } from '../step-executor';\nimport type { ProcessorArgs } from '.';\n\nexport async function processWorkflowLoop(\n {\n workflowId,\n prevResult,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n resumeData,\n parentWorkflow,\n runtimeContext,\n runCount = 0,\n }: ProcessorArgs,\n {\n pubsub,\n stepExecutor,\n step,\n stepResult,\n }: {\n pubsub: PubSub;\n stepExecutor: StepExecutor;\n step: Extract<StepFlowEntry, { type: 'loop' }>;\n stepResult: StepResult<any, any, any, any>;\n },\n) {\n const loopCondition = await stepExecutor.evaluateCondition({\n workflowId,\n condition: step.condition,\n runId,\n stepResults,\n emitter: new EventEmitter() as any, // TODO\n runtimeContext: new RuntimeContext(), // TODO\n inputData: prevResult?.status === 'success' ? prevResult.output : undefined,\n resumeData,\n abortController: new AbortController(),\n runCount,\n });\n\n if (step.loopType === 'dountil') {\n if (loopCondition) {\n await pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n resumeData,\n activeSteps,\n runtimeContext,\n },\n });\n } else {\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n resumeData,\n activeSteps,\n runtimeContext,\n runCount,\n },\n });\n }\n } else {\n if (loopCondition) {\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n resumeData,\n activeSteps,\n runtimeContext,\n runCount,\n },\n });\n } else {\n await pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n resumeData,\n activeSteps,\n runtimeContext,\n },\n });\n }\n }\n}\n\nexport async function processWorkflowForEach(\n {\n workflowId,\n prevResult,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n resumeData,\n parentWorkflow,\n runtimeContext,\n }: ProcessorArgs,\n {\n pubsub,\n mastra,\n step,\n }: {\n pubsub: PubSub;\n mastra: Mastra;\n step: Extract<StepFlowEntry, { type: 'foreach' }>;\n },\n) {\n const currentResult: Extract<StepResult<any, any, any, any>, { status: 'success' }> = stepResults[\n step.step.id\n ] as any;\n\n const idx = currentResult?.output?.length ?? 0;\n const targetLen = (prevResult as any)?.output?.length ?? 0;\n\n if (idx >= targetLen && currentResult.output.filter((r: any) => r !== null).length >= targetLen) {\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1]! + 1]),\n resumeSteps,\n stepResults,\n prevResult: currentResult,\n resumeData,\n activeSteps,\n runtimeContext,\n },\n });\n\n return;\n } else if (idx >= targetLen) {\n // wait for the 'null' values to be filled from the concurrent run\n return;\n }\n\n if (executionPath.length === 1 && idx === 0) {\n // on first iteratation we need to kick off up to the set concurrency\n const concurrency = Math.min(step.opts.concurrency ?? 1, targetLen);\n const dummyResult = Array.from({ length: concurrency }, () => null);\n\n await mastra.getStorage()?.updateWorkflowResults({\n workflowName: workflowId,\n runId,\n stepId: step.step.id,\n result: {\n status: 'succcess',\n output: dummyResult as any,\n startedAt: Date.now(),\n payload: (prevResult as any)?.output,\n } as any,\n runtimeContext,\n });\n\n for (let i = 0; i < concurrency; i++) {\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath: [executionPath[0]!, i],\n resumeSteps,\n stepResults,\n prevResult,\n resumeData,\n activeSteps,\n runtimeContext,\n },\n });\n }\n\n return;\n }\n\n (currentResult as any).output.push(null);\n await mastra.getStorage()?.updateWorkflowResults({\n workflowName: workflowId,\n runId,\n stepId: step.step.id,\n result: {\n status: 'succcess',\n output: (currentResult as any).output,\n startedAt: Date.now(),\n payload: (prevResult as any)?.output,\n } as any,\n runtimeContext,\n });\n\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath: [executionPath[0]!, idx],\n resumeSteps,\n stepResults,\n prevResult,\n resumeData,\n activeSteps,\n runtimeContext,\n },\n });\n}\n","import EventEmitter from 'events';\nimport type { StepFlowEntry } from '../..';\nimport { RuntimeContext } from '../../../di';\nimport type { PubSub } from '../../../events';\nimport type { StepExecutor } from '../step-executor';\nimport type { ProcessorArgs } from '.';\n\nexport async function processWorkflowParallel(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n }: ProcessorArgs,\n {\n pubsub,\n step,\n }: {\n pubsub: PubSub;\n step: Extract<StepFlowEntry, { type: 'parallel' }>;\n },\n) {\n for (let i = 0; i < step.steps.length; i++) {\n const nestedStep = step.steps[i];\n if (nestedStep?.type === 'step') {\n activeSteps[nestedStep.step.id] = true;\n }\n }\n\n await Promise.all(\n step.steps.map(async (_step, idx) => {\n return pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.concat([idx]),\n resumeSteps,\n stepResults,\n prevResult,\n resumeData,\n parentWorkflow,\n activeSteps,\n runtimeContext,\n },\n });\n }),\n );\n}\n\nexport async function processWorkflowConditional(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n }: ProcessorArgs,\n {\n pubsub,\n stepExecutor,\n step,\n }: {\n pubsub: PubSub;\n stepExecutor: StepExecutor;\n step: Extract<StepFlowEntry, { type: 'conditional' }>;\n },\n) {\n const idxs = await stepExecutor.evaluateConditions({\n workflowId,\n step,\n runId,\n stepResults,\n emitter: new EventEmitter() as any, // TODO\n runtimeContext: new RuntimeContext(), // TODO\n input: prevResult?.status === 'success' ? prevResult.output : undefined,\n resumeData,\n });\n\n const truthyIdxs: Record<number, boolean> = {};\n for (let i = 0; i < idxs.length; i++) {\n truthyIdxs[idxs[i]!] = true;\n }\n\n await Promise.all(\n step.steps.map(async (step, idx) => {\n if (truthyIdxs[idx]) {\n if (step?.type === 'step') {\n activeSteps[step.step.id] = true;\n }\n return pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.concat([idx]),\n resumeSteps,\n stepResults,\n prevResult,\n resumeData,\n parentWorkflow,\n activeSteps,\n runtimeContext,\n },\n });\n } else {\n return pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.concat([idx]),\n resumeSteps,\n stepResults,\n prevResult: { status: 'skipped' },\n resumeData,\n parentWorkflow,\n activeSteps,\n runtimeContext,\n },\n });\n }\n }),\n );\n}\n","import EventEmitter from 'events';\nimport type { StepFlowEntry, WorkflowRunState } from '../..';\nimport { RuntimeContext } from '../../../di';\nimport type { PubSub } from '../../../events';\nimport type { StepExecutor } from '../step-executor';\nimport { getStep } from './utils';\nimport type { ProcessorArgs } from '.';\n\nexport async function processWorkflowWaitForEvent(\n workflowData: ProcessorArgs,\n {\n pubsub,\n eventName,\n currentState,\n }: {\n pubsub: PubSub;\n eventName: string;\n currentState: WorkflowRunState;\n },\n) {\n const executionPath = currentState?.waitingPaths[eventName];\n if (!executionPath) {\n return;\n }\n\n const currentStep = getStep(workflowData.workflow, executionPath);\n const prevResult = {\n status: 'success',\n output: currentState?.context[currentStep?.id ?? 'input']?.payload,\n };\n\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId: workflowData.runId,\n data: {\n workflowId: workflowData.workflowId,\n runId: workflowData.runId,\n executionPath,\n resumeSteps: [],\n resumeData: workflowData.resumeData,\n parentWorkflow: workflowData.parentWorkflow,\n stepResults: currentState?.context,\n prevResult,\n activeSteps: [],\n runtimeContext: currentState?.runtimeContext,\n },\n });\n}\n\nexport async function processWorkflowSleep(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n }: ProcessorArgs,\n {\n pubsub,\n stepExecutor,\n step,\n }: {\n pubsub: PubSub;\n stepExecutor: StepExecutor;\n step: Extract<StepFlowEntry, { type: 'sleep' }>;\n },\n) {\n const startedAt = Date.now();\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-waiting',\n payload: {\n id: step.id,\n status: 'waiting',\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n startedAt,\n },\n },\n });\n\n const duration = await stepExecutor.resolveSleep({\n workflowId,\n step,\n runId,\n stepResults,\n emitter: new EventEmitter() as any, // TODO\n runtimeContext: new RuntimeContext(), // TODO\n input: prevResult?.status === 'success' ? prevResult.output : undefined,\n resumeData,\n });\n\n setTimeout(\n async () => {\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-result',\n payload: {\n id: step.id,\n status: 'success',\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n output: prevResult.status === 'success' ? prevResult.output : undefined,\n startedAt,\n endedAt: Date.now(),\n },\n },\n });\n\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-finish',\n payload: {\n id: step.id,\n metadata: {},\n },\n },\n });\n\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1]! + 1]),\n resumeSteps,\n stepResults,\n prevResult,\n resumeData,\n parentWorkflow,\n activeSteps,\n runtimeContext,\n },\n });\n },\n duration < 0 ? 0 : duration,\n );\n}\n\nexport async function processWorkflowSleepUntil(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n }: ProcessorArgs,\n {\n pubsub,\n stepExecutor,\n step,\n }: {\n pubsub: PubSub;\n stepExecutor: StepExecutor;\n step: Extract<StepFlowEntry, { type: 'sleepUntil' }>;\n },\n) {\n const startedAt = Date.now();\n const duration = await stepExecutor.resolveSleepUntil({\n workflowId,\n step,\n runId,\n stepResults,\n emitter: new EventEmitter() as any, // TODO\n runtimeContext: new RuntimeContext(), // TODO\n input: prevResult?.status === 'success' ? prevResult.output : undefined,\n resumeData,\n });\n\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-waiting',\n payload: {\n id: step.id,\n status: 'waiting',\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n startedAt,\n },\n },\n });\n\n setTimeout(\n async () => {\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-result',\n payload: {\n id: step.id,\n status: 'success',\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n output: prevResult.status === 'success' ? prevResult.output : undefined,\n startedAt,\n endedAt: Date.now(),\n },\n },\n });\n\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-finish',\n payload: {\n id: step.id,\n metadata: {},\n },\n },\n });\n\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1]! + 1]),\n resumeSteps,\n stepResults,\n prevResult,\n resumeData,\n parentWorkflow,\n activeSteps,\n runtimeContext,\n },\n });\n },\n duration < 0 ? 0 : duration,\n );\n}\n","import { randomUUID } from 'crypto';\nimport EventEmitter from 'events';\nimport { ErrorCategory, ErrorDomain, MastraError } from '../../../error';\nimport { EventProcessor } from '../../../events/processor';\nimport type { Event } from '../../../events/types';\nimport type { Mastra } from '../../../mastra';\nimport { RuntimeContext } from '../../../runtime-context/';\nimport type { StepFlowEntry, StepResult, WorkflowRunState } from '../../../workflows/types';\nimport type { Workflow } from '../../../workflows/workflow';\nimport { StepExecutor } from '../step-executor';\nimport { EventedWorkflow } from '../workflow';\nimport { processWorkflowForEach, processWorkflowLoop } from './loop';\nimport { processWorkflowConditional, processWorkflowParallel } from './parallel';\nimport { processWorkflowSleep, processWorkflowSleepUntil, processWorkflowWaitForEvent } from './sleep';\nimport { getNestedWorkflow, getStep, isExecutableStep } from './utils';\n\nexport type ProcessorArgs = {\n activeSteps: Record<string, boolean>;\n workflow: Workflow;\n workflowId: string;\n runId: string;\n executionPath: number[];\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resumeSteps: string[];\n prevResult: StepResult<any, any, any, any>;\n runtimeContext: Record<string, any>;\n resumeData?: any;\n parentWorkflow?: ParentWorkflow;\n parentContext?: {\n workflowId: string;\n input: any;\n };\n runCount?: number;\n};\n\nexport type ParentWorkflow = {\n workflowId: string;\n runId: string;\n executionPath: number[];\n resume: boolean;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n parentWorkflow?: ParentWorkflow;\n stepId: string;\n};\n\nexport class WorkflowEventProcessor extends EventProcessor {\n private stepExecutor: StepExecutor;\n\n constructor({ mastra }: { mastra: Mastra }) {\n super({ mastra });\n this.stepExecutor = new StepExecutor({ mastra });\n }\n\n __registerMastra(mastra: Mastra) {\n super.__registerMastra(mastra);\n this.stepExecutor.__registerMastra(mastra);\n }\n\n private async errorWorkflow(\n {\n parentWorkflow,\n workflowId,\n runId,\n resumeSteps,\n stepResults,\n resumeData,\n runtimeContext,\n }: Omit<ProcessorArgs, 'workflow'>,\n e: Error,\n ) {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.fail',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: [],\n resumeSteps,\n stepResults,\n prevResult: { status: 'failed', error: e.stack ?? e.message },\n runtimeContext,\n resumeData,\n activeSteps: {},\n parentWorkflow: parentWorkflow,\n },\n });\n }\n\n protected async processWorkflowCancel({ workflowId, runId }: ProcessorArgs) {\n const currentState = await this.mastra.getStorage()?.updateWorkflowState({\n workflowName: workflowId,\n runId,\n opts: {\n status: 'canceled',\n },\n });\n\n await this.endWorkflow({\n workflow: undefined as any,\n workflowId,\n runId,\n stepResults: currentState?.context as any,\n prevResult: { status: 'canceled' } as any,\n runtimeContext: currentState?.runtimeContext as any,\n executionPath: [],\n activeSteps: {},\n resumeSteps: [],\n resumeData: undefined,\n parentWorkflow: undefined,\n });\n }\n\n protected async processWorkflowStart({\n workflow,\n parentWorkflow,\n workflowId,\n runId,\n resumeSteps,\n prevResult,\n resumeData,\n executionPath,\n stepResults,\n runtimeContext,\n }: ProcessorArgs) {\n await this.mastra.getStorage()?.persistWorkflowSnapshot({\n workflowName: workflow.id,\n runId,\n snapshot: {\n activePaths: [],\n suspendedPaths: {},\n waitingPaths: {},\n serializedStepGraph: workflow.serializedStepGraph,\n timestamp: Date.now(),\n runId,\n status: 'running',\n context: stepResults ?? {\n input: prevResult?.status === 'success' ? prevResult.output : undefined,\n },\n value: {},\n },\n });\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath: executionPath ?? [0],\n resumeSteps,\n stepResults: stepResults ?? {\n input: prevResult?.status === 'success' ? prevResult.output : undefined,\n },\n prevResult,\n runtimeContext,\n resumeData,\n activeSteps: {},\n },\n });\n }\n\n protected async endWorkflow(args: ProcessorArgs) {\n const { stepResults, workflowId, runId, prevResult } = args;\n await this.mastra.getStorage()?.updateWorkflowState({\n workflowName: workflowId,\n runId,\n opts: {\n status: 'success',\n result: prevResult,\n },\n });\n\n await this.mastra.pubsub.publish(`workflow.events.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'watch',\n payload: {\n currentStep: undefined,\n workflowState: {\n status: prevResult.status,\n steps: stepResults,\n result: prevResult.status === 'success' ? prevResult.output : null,\n error: (prevResult as any).error ?? null,\n },\n },\n eventTimestamp: Date.now(),\n },\n });\n\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'finish',\n payload: {\n runId,\n },\n },\n });\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.end',\n runId,\n data: { ...args, workflow: undefined },\n });\n }\n\n protected async processWorkflowEnd(args: ProcessorArgs) {\n const { resumeSteps, prevResult, resumeData, parentWorkflow, activeSteps, runtimeContext, runId } = args;\n\n // handle nested workflow\n if (parentWorkflow) {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n workflowId: parentWorkflow.workflowId,\n runId: parentWorkflow.runId,\n executionPath: parentWorkflow.executionPath,\n resumeSteps,\n stepResults: parentWorkflow.stepResults,\n prevResult,\n resumeData,\n activeSteps,\n parentWorkflow: parentWorkflow.parentWorkflow,\n parentContext: parentWorkflow,\n runtimeContext,\n },\n });\n }\n\n await this.mastra.pubsub.publish('workflows-finish', {\n type: 'workflow.end',\n runId,\n data: { ...args, workflow: undefined },\n });\n }\n\n protected async processWorkflowSuspend(args: ProcessorArgs) {\n const { resumeSteps, prevResult, resumeData, parentWorkflow, activeSteps, runId, runtimeContext } = args;\n\n // TODO: if there are still active paths don't end the workflow yet\n // handle nested workflow\n if (parentWorkflow) {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n workflowId: parentWorkflow.workflowId,\n runId: parentWorkflow.runId,\n executionPath: parentWorkflow.executionPath,\n resumeSteps,\n stepResults: parentWorkflow.stepResults,\n prevResult: {\n ...prevResult,\n suspendPayload: {\n ...prevResult.suspendPayload,\n __workflow_meta: {\n runId: runId,\n path: parentWorkflow?.stepId\n ? [parentWorkflow.stepId].concat(prevResult.suspendPayload?.__workflow_meta?.path ?? [])\n : (prevResult.suspendPayload?.__workflow_meta?.path ?? []),\n },\n },\n },\n resumeData,\n activeSteps,\n runtimeContext,\n parentWorkflow: parentWorkflow.parentWorkflow,\n parentContext: parentWorkflow,\n },\n });\n }\n\n await this.mastra.pubsub.publish('workflows-finish', {\n type: 'workflow.suspend',\n runId,\n data: { ...args, workflow: undefined },\n });\n }\n\n protected async processWorkflowFail(args: ProcessorArgs) {\n const { workflowId, runId, resumeSteps, prevResult, resumeData, parentWorkflow, activeSteps, runtimeContext } =\n args;\n\n await this.mastra.getStorage()?.updateWorkflowState({\n workflowName: workflowId,\n runId,\n opts: {\n status: 'failed',\n error: (prevResult as any).error,\n },\n });\n\n // handle nested workflow\n if (parentWorkflow) {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n workflowId: parentWorkflow.workflowId,\n runId: parentWorkflow.runId,\n executionPath: parentWorkflow.executionPath,\n resumeSteps,\n stepResults: parentWorkflow.stepResults,\n prevResult,\n resumeData,\n activeSteps,\n runtimeContext,\n parentWorkflow: parentWorkflow.parentWorkflow,\n parentContext: parentWorkflow,\n },\n });\n }\n\n await this.mastra.pubsub.publish('workflows-finish', {\n type: 'workflow.fail',\n runId,\n data: { ...args, workflow: undefined },\n });\n }\n\n protected async processWorkflowStepRun({\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n runCount = 0,\n }: ProcessorArgs) {\n let stepGraph: StepFlowEntry[] = workflow.stepGraph;\n\n if (!executionPath?.length) {\n return this.errorWorkflow(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n },\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Execution path is empty: ${JSON.stringify(executionPath)}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n let step: StepFlowEntry | undefined = stepGraph[executionPath[0]!];\n\n if (!step) {\n return this.errorWorkflow(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n },\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Step not found in step graph: ${JSON.stringify(executionPath)}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n if ((step.type === 'parallel' || step.type === 'conditional') && executionPath.length > 1) {\n step = step.steps[executionPath[1]!] as StepFlowEntry;\n } else if (step.type === 'parallel') {\n return processWorkflowParallel(\n {\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n },\n {\n pubsub: this.mastra.pubsub,\n step,\n },\n );\n } else if (step?.type === 'conditional') {\n return processWorkflowConditional(\n {\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n },\n {\n pubsub: this.mastra.pubsub,\n stepExecutor: this.stepExecutor,\n step,\n },\n );\n } else if (step?.type === 'sleep') {\n return processWorkflowSleep(\n {\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n },\n {\n pubsub: this.mastra.pubsub,\n stepExecutor: this.stepExecutor,\n step,\n },\n );\n } else if (step?.type === 'sleepUntil') {\n return processWorkflowSleepUntil(\n {\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n },\n {\n pubsub: this.mastra.pubsub,\n stepExecutor: this.stepExecutor,\n step,\n },\n );\n } else if (step?.type === 'waitForEvent' && !resumeData) {\n // wait for event to arrive externally (with resumeData)\n await this.mastra.getStorage()?.updateWorkflowResults({\n workflowName: workflowId,\n runId,\n stepId: step.step.id,\n result: {\n startedAt: Date.now(),\n status: 'waiting',\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n },\n runtimeContext,\n });\n await this.mastra.getStorage()?.updateWorkflowState({\n workflowName: workflowId,\n runId,\n opts: {\n status: 'waiting',\n waitingPaths: {\n [step.event]: executionPath,\n },\n },\n });\n\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-waiting',\n payload: {\n id: step.step.id,\n status: 'waiting',\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n startedAt: Date.now(),\n },\n },\n });\n\n return;\n } else if (step?.type === 'foreach' && executionPath.length === 1) {\n return processWorkflowForEach(\n {\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n },\n {\n pubsub: this.mastra.pubsub,\n mastra: this.mastra,\n step,\n },\n );\n }\n\n if (!isExecutableStep(step)) {\n return this.errorWorkflow(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n },\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Step is not executable: ${step?.type} -- ${JSON.stringify(executionPath)}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n activeSteps[step.step.id] = true;\n\n // Run nested workflow\n if (step.step instanceof EventedWorkflow) {\n if (resumeSteps?.length > 1) {\n const stepData = stepResults[step.step.id];\n const nestedRunId = stepData?.suspendPayload?.__workflow_meta?.runId;\n if (!nestedRunId) {\n return this.errorWorkflow(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n runtimeContext,\n },\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Nested workflow run id not found: ${JSON.stringify(stepResults)}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n const snapshot = await this.mastra?.getStorage()?.loadWorkflowSnapshot({\n workflowName: step.step.id,\n runId: nestedRunId,\n });\n\n const nestedStepResults = snapshot?.context;\n const nestedSteps = resumeSteps.slice(1);\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.resume',\n runId,\n data: {\n workflowId: step.step.id,\n parentWorkflow: {\n stepId: step.step.id,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n input: prevResult,\n parentWorkflow,\n },\n executionPath: snapshot?.suspendedPaths?.[nestedSteps[0]!] as any,\n runId: nestedRunId,\n resumeSteps: nestedSteps,\n stepResults: nestedStepResults,\n prevResult,\n resumeData,\n activeSteps,\n runtimeContext,\n },\n });\n } else {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.start',\n runId,\n data: {\n workflowId: step.step.id,\n parentWorkflow: {\n stepId: step.step.id,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n input: prevResult,\n parentWorkflow,\n },\n executionPath: [0],\n runId: randomUUID(),\n resumeSteps,\n prevResult,\n resumeData,\n activeSteps,\n runtimeContext,\n },\n });\n }\n\n return;\n }\n\n if (step.type === 'step' || step.type === 'waitForEvent') {\n await this.mastra.pubsub.publish(`workflow.events.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'watch',\n payload: {\n currentStep: { id: step.step.id, status: 'running' },\n workflowState: {\n status: 'running',\n steps: stepResults,\n error: null,\n result: null,\n },\n },\n eventTimestamp: Date.now(),\n },\n });\n\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-start',\n payload: {\n id: step.step.id,\n startedAt: Date.now(),\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n status: 'running',\n },\n },\n });\n }\n\n const ee = new EventEmitter();\n ee.on('watch-v2', async (event: any) => {\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: event,\n });\n });\n const rc = new RuntimeContext();\n for (const [key, value] of Object.entries(runtimeContext)) {\n rc.set(key, value);\n }\n const stepResult = await this.stepExecutor.execute({\n workflowId,\n step: step.step,\n runId,\n stepResults,\n emitter: ee,\n runtimeContext: rc,\n input: (prevResult as any)?.output,\n resumeData:\n step.type === 'waitForEvent' || (resumeSteps?.length === 1 && resumeSteps?.[0] === step.step.id)\n ? resumeData\n : undefined,\n runCount,\n foreachIdx: step.type === 'foreach' ? executionPath[1] : undefined,\n });\n runtimeContext = Object.fromEntries(rc.entries());\n\n // @ts-ignore\n if (stepResult.status === 'bailed') {\n // @ts-ignore\n stepResult.status = 'success';\n\n await this.endWorkflow({\n workflow,\n resumeData,\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults: {\n ...stepResults,\n [step.step.id]: stepResult,\n },\n prevResult: stepResult,\n activeSteps,\n runtimeContext,\n });\n return;\n }\n\n if (stepResult.status === 'failed') {\n if (runCount >= (workflow.retryConfig.attempts ?? 0)) {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n activeSteps,\n runtimeContext,\n },\n });\n } else {\n return this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult,\n activeSteps,\n runtimeContext,\n runCount: runCount + 1,\n },\n });\n }\n }\n\n if (step.type === 'loop') {\n await processWorkflowLoop(\n {\n workflow,\n workflowId,\n prevResult: stepResult,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n resumeData,\n parentWorkflow,\n runtimeContext,\n runCount: runCount + 1,\n },\n {\n pubsub: this.mastra.pubsub,\n stepExecutor: this.stepExecutor,\n step,\n stepResult,\n },\n );\n } else {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n activeSteps,\n runtimeContext,\n },\n });\n }\n }\n\n protected async processWorkflowStepEnd({\n workflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n prevResult,\n parentWorkflow,\n stepResults,\n activeSteps,\n parentContext,\n runtimeContext,\n }: ProcessorArgs) {\n let step = workflow.stepGraph[executionPath[0]!];\n\n if ((step?.type === 'parallel' || step?.type === 'conditional') && executionPath.length > 1) {\n step = step.steps[executionPath[1]!];\n }\n\n if (!step) {\n return this.errorWorkflow(\n {\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n prevResult,\n stepResults,\n activeSteps,\n runtimeContext,\n },\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Step not found: ${JSON.stringify(executionPath)}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n if (step.type === 'foreach') {\n const snapshot = await this.mastra.getStorage()?.loadWorkflowSnapshot({\n workflowName: workflowId,\n runId,\n });\n\n const currentIdx = executionPath[1];\n const currentResult = (snapshot?.context?.[step.step.id] as any)?.output;\n\n let newResult = prevResult;\n if (currentIdx !== undefined) {\n if (currentResult) {\n currentResult[currentIdx] = (prevResult as any).output;\n newResult = { ...prevResult, output: currentResult } as any;\n } else {\n newResult = { ...prevResult, output: [(prevResult as any).output] } as any;\n }\n }\n const newStepResults = await this.mastra.getStorage()?.updateWorkflowResults({\n workflowName: workflow.id,\n runId,\n stepId: step.step.id,\n result: newResult,\n runtimeContext,\n });\n\n if (!newStepResults) {\n return;\n }\n\n stepResults = newStepResults;\n } else if (isExecutableStep(step)) {\n // clear from activeSteps\n delete activeSteps[step.step.id];\n\n // handle nested workflow\n if (parentContext) {\n prevResult = stepResults[step.step.id] = {\n ...prevResult,\n payload: parentContext.input?.output ?? {},\n };\n }\n\n const newStepResults = await this.mastra.getStorage()?.updateWorkflowResults({\n workflowName: workflow.id,\n runId,\n stepId: step.step.id,\n result: prevResult,\n runtimeContext,\n });\n\n if (!newStepResults) {\n return;\n }\n\n stepResults = newStepResults;\n }\n\n if (!prevResult?.status || prevResult.status === 'failed') {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.fail',\n runId,\n data: {\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n parentWorkflow,\n stepResults,\n prevResult,\n activeSteps,\n runtimeContext,\n },\n });\n\n return;\n } else if (prevResult.status === 'suspended') {\n const suspendedPaths: Record<string, number[]> = {};\n const suspendedStep = getStep(workflow, executionPath);\n if (suspendedStep) {\n suspendedPaths[suspendedStep.id] = executionPath;\n }\n\n await this.mastra.getStorage()?.updateWorkflowState({\n workflowName: workflowId,\n runId,\n opts: {\n status: 'suspended',\n result: prevResult,\n suspendedPaths,\n },\n });\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.suspend',\n runId,\n data: {\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n parentWorkflow,\n stepResults,\n prevResult,\n activeSteps,\n runtimeContext,\n },\n });\n\n await this.mastra.pubsub.publish(`workflow.events.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'watch',\n payload: {\n currentStep: { ...prevResult, id: (step as any)?.step?.id },\n workflowState: {\n status: 'suspended',\n steps: stepResults,\n suspendPayload: prevResult.suspendPayload,\n },\n },\n },\n });\n\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-suspended',\n payload: {\n id: (step as any)?.step?.id,\n ...prevResult,\n suspendedAt: Date.now(),\n suspendPayload: prevResult.suspendPayload,\n },\n },\n });\n\n return;\n }\n\n if (step?.type === 'step' || step?.type === 'waitForEvent') {\n await this.mastra.pubsub.publish(`workflow.events.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'watch',\n payload: {\n currentStep: { ...prevResult, id: step.step.id },\n workflowState: {\n status: 'running',\n steps: stepResults,\n error: null,\n result: null,\n },\n },\n eventTimestamp: Date.now(),\n },\n });\n\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-result',\n payload: {\n id: step.step.id,\n ...prevResult,\n },\n },\n });\n\n if (prevResult.status === 'success') {\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'step-finish',\n payload: {\n id: step.step.id,\n metadata: {},\n },\n },\n });\n }\n }\n\n step = workflow.stepGraph[executionPath[0]!];\n if ((step?.type === 'parallel' || step?.type === 'conditional') && executionPath.length > 1) {\n let skippedCount = 0;\n const allResults: Record<string, any> = step.steps.reduce(\n (acc, step) => {\n if (isExecutableStep(step)) {\n const res = stepResults?.[step.step.id];\n if (res && res.status === 'success') {\n acc[step.step.id] = res?.output;\n // @ts-ignore\n } else if (res?.status === 'skipped') {\n skippedCount++;\n }\n }\n\n return acc;\n },\n {} as Record<string, StepResult<any, any, any, any>>,\n );\n\n const keys = Object.keys(allResults);\n if (keys.length + skippedCount < step.steps.length) {\n return;\n }\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1),\n resumeSteps,\n stepResults,\n prevResult: { status: 'success', output: allResults },\n activeSteps,\n runtimeContext,\n },\n });\n } else if (step?.type === 'foreach') {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1),\n resumeSteps,\n parentWorkflow,\n stepResults,\n prevResult: { ...prevResult, output: prevResult?.payload },\n activeSteps,\n runtimeContext,\n },\n });\n } else if (executionPath[0]! >= workflow.stepGraph.length - 1) {\n await this.endWorkflow({\n workflow,\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult,\n activeSteps,\n runtimeContext,\n });\n } else {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1]! + 1]),\n resumeSteps,\n parentWorkflow,\n stepResults,\n prevResult,\n activeSteps,\n runtimeContext,\n },\n });\n }\n }\n\n async loadData({\n workflowId,\n runId,\n }: {\n workflowId: string;\n runId: string;\n }): Promise<WorkflowRunState | null | undefined> {\n const snapshot = await this.mastra.getStorage()?.loadWorkflowSnapshot({\n workflowName: workflowId,\n runId,\n });\n\n return snapshot;\n }\n\n async process(event: Event, ack?: () => Promise<void>) {\n const { type, data } = event;\n\n const workflowData = data as Omit<ProcessorArgs, 'workflow'>;\n\n const currentState = await this.loadData({\n workflowId: workflowData.workflowId,\n runId: workflowData.runId,\n });\n\n if (currentState?.status === 'canceled' && type !== 'workflow.end') {\n return;\n }\n\n if (type.startsWith('workflow.user-event.')) {\n await processWorkflowWaitForEvent(\n {\n ...workflowData,\n workflow: this.mastra.getWorkflow(workflowData.workflowId),\n },\n {\n pubsub: this.mastra.pubsub,\n eventName: type.split('.').slice(2).join('.'),\n currentState: currentState!,\n },\n );\n return;\n }\n\n const workflow = workflowData.parentWorkflow\n ? getNestedWorkflow(this.mastra, workflowData.parentWorkflow)\n : this.mastra.getWorkflow(workflowData.workflowId);\n\n if (!workflow) {\n return this.errorWorkflow(\n workflowData,\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Workflow not found: ${workflowData.workflowId}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n if (type === 'workflow.start' || type === 'workflow.resume') {\n const { runId } = workflowData;\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'start',\n payload: {\n runId,\n },\n },\n });\n }\n\n switch (type) {\n case 'workflow.cancel':\n await this.processWorkflowCancel({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.start':\n await this.processWorkflowStart({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.resume':\n await this.processWorkflowStart({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.end':\n await this.processWorkflowEnd({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.step.end':\n await this.processWorkflowStepEnd({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.step.run':\n await this.processWorkflowStepRun({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.suspend':\n await this.processWorkflowSuspend({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.fail':\n await this.processWorkflowFail({\n workflow,\n ...workflowData,\n });\n break;\n default:\n break;\n }\n\n try {\n await ack?.();\n } catch (e) {\n console.error('Error acking event', e);\n }\n }\n}\n","import { randomUUID } from 'crypto';\nimport type { ReadableStream } from 'stream/web';\nimport z from 'zod';\nimport type { Agent } from '../../agent';\nimport { RuntimeContext } from '../../di';\nimport type { Mastra } from '../../mastra';\nimport { Tool } from '../../tools';\nimport type { ToolExecutionContext } from '../../tools/types';\nimport { Workflow, Run } from '../../workflows';\nimport type { ExecutionEngine, ExecutionGraph } from '../../workflows/execution-engine';\nimport type { ExecuteFunction, Step } from '../../workflows/step';\nimport type {\n SerializedStepFlowEntry,\n WorkflowConfig,\n WorkflowResult,\n StreamEvent,\n WatchEvent,\n} from '../../workflows/types';\nimport { EMITTER_SYMBOL } from '../constants';\nimport { EventedExecutionEngine } from './execution-engine';\nimport { WorkflowEventProcessor } from './workflow-event-processor';\n\nexport type EventedEngineType = {};\n\nexport function cloneWorkflow<\n TWorkflowId extends string = string,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n TSteps extends Step<string, any, any, any, any, EventedEngineType>[] = Step<\n string,\n any,\n any,\n any,\n any,\n EventedEngineType\n >[],\n TPrevSchema extends z.ZodType<any> = TInput,\n>(\n workflow: Workflow<EventedEngineType, TSteps, string, TInput, TOutput, TPrevSchema>,\n opts: { id: TWorkflowId },\n): Workflow<EventedEngineType, TSteps, TWorkflowId, TInput, TOutput, TPrevSchema> {\n const wf: Workflow<EventedEngineType, TSteps, TWorkflowId, TInput, TOutput, TPrevSchema> = new Workflow({\n id: opts.id,\n inputSchema: workflow.inputSchema,\n outputSchema: workflow.outputSchema,\n steps: workflow.stepDefs,\n mastra: workflow.mastra,\n });\n\n wf.setStepFlow(workflow.stepGraph);\n wf.commit();\n return wf;\n}\n\nexport function cloneStep<TStepId extends string>(\n step: Step<string, any, any, any, any, EventedEngineType>,\n opts: { id: TStepId },\n): Step<TStepId, any, any, any, any, EventedEngineType> {\n return {\n id: opts.id,\n description: step.description,\n inputSchema: step.inputSchema,\n outputSchema: step.outputSchema,\n execute: step.execute,\n };\n}\n\nfunction isAgent(params: any): params is Agent<any, any, any> {\n return params?.component === 'AGENT';\n}\n\nfunction isTool(params: any): params is Tool<any, any, any> {\n return params instanceof Tool;\n}\n\nexport function createStep<\n TStepId extends string,\n TStepInput extends z.ZodType<any>,\n TStepOutput extends z.ZodType<any>,\n TResumeSchema extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n>(params: {\n id: TStepId;\n description?: string;\n inputSchema: TStepInput;\n outputSchema: TStepOutput;\n resumeSchema?: TResumeSchema;\n suspendSchema?: TSuspendSchema;\n execute: ExecuteFunction<\n z.infer<TStepInput>,\n z.infer<TStepOutput>,\n z.infer<TResumeSchema>,\n z.infer<TSuspendSchema>,\n EventedEngineType\n >;\n}): Step<TStepId, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, EventedEngineType>;\n\nexport function createStep<\n TStepId extends string,\n TStepInput extends z.ZodObject<{ prompt: z.ZodString }>,\n TStepOutput extends z.ZodObject<{ text: z.ZodString }>,\n TResumeSchema extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n>(\n agent: Agent<TStepId, any, any>,\n): Step<TStepId, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, EventedEngineType>;\n\nexport function createStep<\n TSchemaIn extends z.ZodType<any>,\n TSchemaOut extends z.ZodType<any>,\n TContext extends ToolExecutionContext<TSchemaIn>,\n>(\n tool: Tool<TSchemaIn, TSchemaOut, TContext> & {\n inputSchema: TSchemaIn;\n outputSchema: TSchemaOut;\n execute: (context: TContext) => Promise<any>;\n },\n): Step<string, TSchemaIn, TSchemaOut, z.ZodType<any>, z.ZodType<any>, EventedEngineType>;\n\nexport function createStep<\n TStepId extends string,\n TStepInput extends z.ZodType<any>,\n TStepOutput extends z.ZodType<any>,\n TResumeSchema extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n>(\n params:\n | {\n id: TStepId;\n description?: string;\n inputSchema: TStepInput;\n outputSchema: TStepOutput;\n resumeSchema?: TResumeSchema;\n suspendSchema?: TSuspendSchema;\n execute: ExecuteFunction<\n z.infer<TStepInput>,\n z.infer<TStepOutput>,\n z.infer<TResumeSchema>,\n z.infer<TSuspendSchema>,\n EventedEngineType\n >;\n }\n | Agent<any, any, any>\n | (Tool<TStepInput, TStepOutput, any> & {\n inputSchema: TStepInput;\n outputSchema: TStepOutput;\n execute: (context: ToolExecutionContext<TStepInput>) => Promise<any>;\n }),\n): Step<TStepId, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, EventedEngineType> {\n if (isAgent(params)) {\n return {\n id: params.name,\n // @ts-ignore\n inputSchema: z.object({\n prompt: z.string(),\n // resourceId: z.string().optional(),\n // threadId: z.string().optional(),\n }),\n // @ts-ignore\n outputSchema: z.object({\n text: z.string(),\n }),\n execute: async ({ inputData, [EMITTER_SYMBOL]: emitter, runtimeContext, abortSignal, abort }) => {\n let streamPromise = {} as {\n promise: Promise<string>;\n resolve: (value: string) => void;\n reject: (reason?: any) => void;\n };\n\n streamPromise.promise = new Promise((resolve, reject) => {\n streamPromise.resolve = resolve;\n streamPromise.reject = reject;\n });\n const toolData = {\n name: params.name,\n args: inputData,\n };\n await emitter.emit('watch-v2', {\n type: 'tool-call-streaming-start',\n ...toolData,\n });\n const { fullStream } = await params.stream(inputData.prompt, {\n // resourceId: inputData.resourceId,\n // threadId: inputData.threadId,\n runtimeContext,\n onFinish: result => {\n streamPromise.resolve(result.text);\n },\n abortSignal,\n });\n\n if (abortSignal.aborted) {\n return abort();\n }\n\n for await (const chunk of fullStream) {\n switch (chunk.type) {\n case 'text-delta':\n await emitter.emit('watch-v2', {\n type: 'tool-call-delta',\n ...toolData,\n argsTextDelta: chunk.textDelta,\n });\n break;\n\n case 'step-start':\n case 'step-finish':\n case 'finish':\n break;\n\n case 'tool-call':\n case 'tool-result':\n case 'tool-call-streaming-start':\n case 'tool-call-delta':\n case 'source':\n case 'file':\n default:\n await emitter.emit('watch-v2', chunk);\n break;\n }\n }\n\n return {\n text: await streamPromise.promise,\n };\n },\n };\n }\n\n if (isTool(params)) {\n if (!params.inputSchema || !params.outputSchema) {\n throw new Error('Tool must have input and output schemas defined');\n }\n\n return {\n // TODO: tool probably should have strong id type\n // @ts-ignore\n id: params.id,\n inputSchema: params.inputSchema,\n outputSchema: params.outputSchema,\n execute: async ({ inputData, mastra, runtimeContext }) => {\n return params.execute({\n context: inputData,\n mastra,\n runtimeContext,\n // TODO: Pass proper tracing context when evented workflows support tracing\n tracingContext: { currentSpan: undefined },\n });\n },\n };\n }\n\n return {\n id: params.id,\n description: params.description,\n inputSchema: params.inputSchema,\n outputSchema: params.outputSchema,\n resumeSchema: params.resumeSchema,\n suspendSchema: params.suspendSchema,\n execute: params.execute,\n };\n}\n\nexport function createWorkflow<\n TWorkflowId extends string = string,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n TSteps extends Step<string, any, any, any, any, EventedEngineType>[] = Step<\n string,\n any,\n any,\n any,\n any,\n EventedEngineType\n >[],\n>(params: WorkflowConfig<TWorkflowId, TInput, TOutput, TSteps>) {\n const eventProcessor = new WorkflowEventProcessor({ mastra: params.mastra! });\n const executionEngine = new EventedExecutionEngine({ mastra: params.mastra!, eventProcessor });\n return new EventedWorkflow<EventedEngineType, TSteps, TWorkflowId, TInput, TOutput, TInput>({\n ...params,\n executionEngine,\n });\n}\n\nexport class EventedWorkflow<\n TEngineType = EventedEngineType,\n TSteps extends Step<string, any, any>[] = Step<string, any, any>[],\n TWorkflowId extends string = string,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n TPrevSchema extends z.ZodType<any> = TInput,\n> extends Workflow<TEngineType, TSteps, TWorkflowId, TInput, TOutput, TPrevSchema> {\n constructor(params: WorkflowConfig<TWorkflowId, TInput, TOutput, TSteps>) {\n super(params);\n }\n\n __registerMastra(mastra: Mastra) {\n super.__registerMastra(mastra);\n this.executionEngine.__registerMastra(mastra);\n }\n\n async createRunAsync(options?: { runId?: string }): Promise<Run<TEngineType, TSteps, TInput, TOutput>> {\n const runIdToUse = options?.runId || randomUUID();\n\n // Return a new Run instance with object parameters\n const run: Run<TEngineType, TSteps, TInput, TOutput> =\n this.runs.get(runIdToUse) ??\n new EventedRun({\n workflowId: this.id,\n runId: runIdToUse,\n executionEngine: this.executionEngine,\n executionGraph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n mastra: this.mastra,\n retryConfig: this.retryConfig,\n cleanup: () => this.runs.delete(runIdToUse),\n });\n\n this.runs.set(runIdToUse, run);\n\n const workflowSnapshotInStorage = await this.getWorkflowRunExecutionResult(runIdToUse);\n\n if (!workflowSnapshotInStorage) {\n await this.mastra?.getStorage()?.persistWorkflowSnapshot({\n workflowName: this.id,\n runId: runIdToUse,\n snapshot: {\n runId: runIdToUse,\n status: 'pending',\n value: {},\n context: {},\n activePaths: [],\n serializedStepGraph: this.serializedStepGraph,\n suspendedPaths: {},\n waitingPaths: {},\n result: undefined,\n error: undefined,\n // @ts-ignore\n timestamp: Date.now(),\n },\n });\n }\n\n return run;\n }\n}\n\nexport class EventedRun<\n TEngineType = EventedEngineType,\n TSteps extends Step<string, any, any>[] = Step<string, any, any>[],\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n> extends Run<TEngineType, TSteps, TInput, TOutput> {\n constructor(params: {\n workflowId: string;\n runId: string;\n executionEngine: ExecutionEngine;\n executionGraph: ExecutionGraph;\n serializedStepGraph: SerializedStepFlowEntry[];\n mastra?: Mastra;\n retryConfig?: {\n attempts?: number;\n delay?: number;\n };\n cleanup?: () => void;\n }) {\n super(params);\n this.serializedStepGraph = params.serializedStepGraph;\n }\n\n async start({\n inputData,\n runtimeContext,\n }: {\n inputData?: z.infer<TInput>;\n runtimeContext?: RuntimeContext;\n }): Promise<WorkflowResult<TOutput, TSteps>> {\n runtimeContext = runtimeContext ?? new RuntimeContext();\n\n await this.mastra?.getStorage()?.persistWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n snapshot: {\n runId: this.runId,\n serializedStepGraph: this.serializedStepGraph,\n value: {},\n context: {} as any,\n runtimeContext: Object.fromEntries(runtimeContext.entries()),\n activePaths: [],\n suspendedPaths: {},\n waitingPaths: {},\n timestamp: Date.now(),\n status: 'running',\n },\n });\n\n const result = await this.executionEngine.execute<z.infer<TInput>, WorkflowResult<TOutput, TSteps>>({\n workflowId: this.workflowId,\n runId: this.runId,\n graph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n input: inputData,\n emitter: {\n emit: async (event: string, data: any) => {\n this.emitter.emit(event, data);\n },\n on: (event: string, callback: (data: any) => void) => {\n this.emitter.on(event, callback);\n },\n off: (event: string, callback: (data: any) => void) => {\n this.emitter.off(event, callback);\n },\n once: (event: string, callback: (data: any) => void) => {\n this.emitter.once(event, callback);\n },\n },\n retryConfig: this.retryConfig,\n runtimeContext,\n abortController: this.abortController,\n });\n\n console.dir({ startResult: result }, { depth: null });\n\n if (result.status !== 'suspended') {\n this.cleanup?.();\n }\n\n return result;\n }\n\n /**\n * Starts the workflow execution with the provided input as a stream\n * @param input The input data for the workflow\n * @returns A promise that resolves to the workflow output\n */\n stream({ inputData, runtimeContext }: { inputData?: z.infer<TInput>; runtimeContext?: RuntimeContext } = {}): {\n stream: ReadableStream<StreamEvent>;\n getWorkflowState: () => Promise<WorkflowResult<TOutput, TSteps>>;\n } {\n const { readable, writable } = new TransformStream<StreamEvent, StreamEvent>();\n\n const writer = writable.getWriter();\n const unwatch = this.watch(async event => {\n try {\n // watch-v2 events are data stream events, so we need to cast them to the correct type\n await writer.write(event as any);\n } catch {}\n }, 'watch-v2');\n\n this.closeStreamAction = async () => {\n unwatch();\n\n try {\n await writer.close();\n } catch (err) {\n console.error('Error closing stream:', err);\n } finally {\n writer.releaseLock();\n }\n };\n\n this.executionResults = this.start({ inputData, runtimeContext }).then(result => {\n if (result.status !== 'suspended') {\n this.closeStreamAction?.().catch(() => {});\n }\n\n return result;\n });\n\n return {\n stream: readable as ReadableStream<StreamEvent>,\n getWorkflowState: () => this.executionResults!,\n };\n }\n\n async streamAsync({\n inputData,\n runtimeContext,\n }: { inputData?: z.infer<TInput>; runtimeContext?: RuntimeContext } = {}): Promise<{\n stream: ReadableStream<StreamEvent>;\n getWorkflowState: () => Promise<WorkflowResult<TOutput, TSteps>>;\n }> {\n const { readable, writable } = new TransformStream<StreamEvent, StreamEvent>();\n\n const writer = writable.getWriter();\n const unwatch = await this.watchAsync(async event => {\n try {\n // watch-v2 events are data stream events, so we need to cast them to the correct type\n await writer.write(event as any);\n } catch {}\n }, 'watch-v2');\n\n this.closeStreamAction = async () => {\n await unwatch();\n\n try {\n await writer.close();\n } catch (err) {\n console.error('Error closing stream:', err);\n } finally {\n writer.releaseLock();\n }\n };\n\n this.executionResults = this.start({ inputData, runtimeContext }).then(result => {\n if (result.status !== 'suspended') {\n this.closeStreamAction?.().catch(() => {});\n }\n\n return result;\n });\n\n return {\n stream: readable as ReadableStream<StreamEvent>,\n getWorkflowState: () => this.executionResults!,\n };\n }\n\n async resume<TResumeSchema extends z.ZodType<any>>(params: {\n resumeData?: z.infer<TResumeSchema>;\n step:\n | Step<string, any, any, TResumeSchema, any, TEngineType>\n | [...Step<string, any, any, any, any, TEngineType>[], Step<string, any, any, TResumeSchema, any, TEngineType>]\n | string\n | string[];\n runtimeContext?: RuntimeContext;\n }): Promise<WorkflowResult<TOutput, TSteps>> {\n const steps: string[] = (Array.isArray(params.step) ? params.step : [params.step]).map(step =>\n typeof step === 'string' ? step : step?.id,\n );\n\n if (steps.length === 0) {\n throw new Error('No steps provided to resume');\n }\n\n const snapshot = await this.mastra?.getStorage()?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n\n const resumePath = snapshot?.suspendedPaths?.[steps[0]!] as any;\n if (!resumePath) {\n throw new Error(\n `No resume path found for step ${JSON.stringify(steps)}, currently suspended paths are ${JSON.stringify(snapshot?.suspendedPaths)}`,\n );\n }\n\n console.dir(\n { resume: { runtimeContextObj: snapshot?.runtimeContext, runtimeContext: params.runtimeContext } },\n { depth: null },\n );\n const runtimeContextObj = snapshot?.runtimeContext ?? {};\n const runtimeContext = params.runtimeContext ?? new RuntimeContext();\n for (const [key, value] of Object.entries(runtimeContextObj)) {\n runtimeContext.set(key, value);\n }\n\n const executionResultPromise = this.executionEngine\n .execute<z.infer<TInput>, WorkflowResult<TOutput, TSteps>>({\n workflowId: this.workflowId,\n runId: this.runId,\n graph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n input: params.resumeData,\n resume: {\n steps,\n stepResults: snapshot?.context as any,\n resumePayload: params.resumeData,\n resumePath,\n },\n emitter: {\n emit: (event: string, data: any) => {\n this.emitter.emit(event, data);\n return Promise.resolve();\n },\n on: (event: string, callback: (data: any) => void) => {\n this.emitter.on(event, callback);\n },\n off: (event: string, callback: (data: any) => void) => {\n this.emitter.off(event, callback);\n },\n once: (event: string, callback: (data: any) => void) => {\n this.emitter.once(event, callback);\n },\n },\n runtimeContext,\n abortController: this.abortController,\n })\n .then(result => {\n if (result.status !== 'suspended') {\n this.closeStreamAction?.().catch(() => {});\n }\n\n return result;\n });\n\n this.executionResults = executionResultPromise;\n\n return executionResultPromise;\n }\n\n watch(cb: (event: WatchEvent) => void, type: 'watch' | 'watch-v2' = 'watch'): () => void {\n const watchCb = async (event: any, ack?: () => Promise<void>) => {\n if (event.runId !== this.runId) {\n return;\n }\n\n cb(event.data);\n await ack?.();\n };\n\n if (type === 'watch-v2') {\n this.mastra?.pubsub.subscribe(`workflow.events.v2.${this.runId}`, watchCb).catch(() => {});\n } else {\n this.mastra?.pubsub.subscribe(`workflow.events.${this.runId}`, watchCb).catch(() => {});\n }\n\n return () => {\n if (type === 'watch-v2') {\n this.mastra?.pubsub.unsubscribe(`workflow.events.v2.${this.runId}`, watchCb).catch(() => {});\n } else {\n this.mastra?.pubsub.unsubscribe(`workflow.events.${this.runId}`, watchCb).catch(() => {});\n }\n };\n }\n\n async watchAsync(\n cb: (event: WatchEvent) => void,\n type: 'watch' | 'watch-v2' = 'watch',\n ): Promise<() => Promise<void>> {\n const watchCb = async (event: any, ack?: () => Promise<void>) => {\n if (event.runId !== this.runId) {\n return;\n }\n\n cb(event.data);\n await ack?.();\n };\n\n if (type === 'watch-v2') {\n await this.mastra?.pubsub.subscribe(`workflow.events.v2.${this.runId}`, watchCb).catch(() => {});\n } else {\n await this.mastra?.pubsub.subscribe(`workflow.events.${this.runId}`, watchCb).catch(() => {});\n }\n\n return async () => {\n if (type === 'watch-v2') {\n await this.mastra?.pubsub.unsubscribe(`workflow.events.v2.${this.runId}`, watchCb).catch(() => {});\n } else {\n await this.mastra?.pubsub.unsubscribe(`workflow.events.${this.runId}`, watchCb).catch(() => {});\n }\n };\n }\n\n async cancel() {\n await this.mastra?.pubsub.publish('workflows', {\n type: 'workflow.cancel',\n runId: this.runId,\n data: {\n workflowId: this.workflowId,\n runId: this.runId,\n },\n });\n }\n\n async sendEvent(eventName: string, data: any) {\n await this.mastra?.pubsub.publish('workflows', {\n type: `workflow.user-event.${eventName}`,\n runId: this.runId,\n data: {\n workflowId: this.workflowId,\n runId: this.runId,\n resumeData: data,\n },\n });\n }\n}\n","import type { Workflow } from '../..';\nimport type { Mastra, Step, StepFlowEntry } from '../../..';\nimport { EventedWorkflow } from '../workflow';\nimport type { ParentWorkflow } from '.';\n\nexport function getNestedWorkflow(\n mastra: Mastra,\n { workflowId, executionPath, parentWorkflow }: ParentWorkflow,\n): Workflow | null {\n let workflow: Workflow | null = null;\n\n if (parentWorkflow) {\n const nestedWorkflow = getNestedWorkflow(mastra, parentWorkflow);\n if (!nestedWorkflow) {\n return null;\n }\n\n workflow = nestedWorkflow;\n }\n\n workflow = workflow ?? mastra.getWorkflow(workflowId);\n const stepGraph = workflow.stepGraph;\n let parentStep = stepGraph[executionPath[0]!];\n if (parentStep?.type === 'parallel' || parentStep?.type === 'conditional') {\n parentStep = parentStep.steps[executionPath[1]!];\n }\n\n if (parentStep?.type === 'step' || parentStep?.type === 'loop') {\n return parentStep.step as Workflow;\n }\n\n return null;\n}\n\nexport function getStep(workflow: Workflow, executionPath: number[]): Step<string, any, any, any, any, any> | null {\n let idx = 0;\n const stepGraph = workflow.stepGraph;\n let parentStep = stepGraph[executionPath[0]!];\n if (parentStep?.type === 'parallel' || parentStep?.type === 'conditional') {\n parentStep = parentStep.steps[executionPath[1]!];\n idx++;\n } else if (parentStep?.type === 'foreach') {\n return parentStep.step;\n }\n\n if (!(parentStep?.type === 'step' || parentStep?.type === 'loop' || parentStep?.type === 'waitForEvent')) {\n return null;\n }\n\n if (parentStep instanceof EventedWorkflow) {\n return getStep(parentStep, executionPath.slice(idx + 1));\n }\n\n return parentStep.step;\n}\n\nexport function isExecutableStep(step: StepFlowEntry<any>) {\n return step.type === 'step' || step.type === 'loop' || step.type === 'waitForEvent' || step.type === 'foreach';\n}\n","import type { Emitter, ExecutionGraph, SerializedStepFlowEntry, StepResult, Mastra } from '../..';\nimport type { RuntimeContext } from '../../di';\nimport type { Event } from '../../events/types';\nimport { ExecutionEngine } from '../../workflows/execution-engine';\nimport type { WorkflowEventProcessor } from './workflow-event-processor';\nimport { getStep } from './workflow-event-processor/utils';\n\nexport class EventedExecutionEngine extends ExecutionEngine {\n protected eventProcessor: WorkflowEventProcessor;\n\n constructor({ mastra, eventProcessor }: { mastra?: Mastra; eventProcessor: WorkflowEventProcessor }) {\n super({ mastra });\n this.eventProcessor = eventProcessor;\n }\n\n __registerMastra(mastra: Mastra) {\n this.mastra = mastra;\n this.eventProcessor.__registerMastra(mastra);\n }\n\n /**\n * Executes a workflow run with the provided execution graph and input\n * @param graph The execution graph to execute\n * @param input The input data for the workflow\n * @returns A promise that resolves to the workflow output\n */\n async execute<TInput, TOutput>(params: {\n workflowId: string;\n runId: string;\n graph: ExecutionGraph;\n serializedStepGraph: SerializedStepFlowEntry[];\n input?: TInput;\n resume?: {\n steps: string[];\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resumePayload: any;\n resumePath: number[];\n };\n emitter: Emitter;\n runtimeContext: RuntimeContext;\n retryConfig?: {\n attempts?: number;\n delay?: number;\n };\n abortController: AbortController;\n }): Promise<TOutput> {\n const pubsub = this.mastra?.pubsub;\n if (!pubsub) {\n throw new Error('No Pubsub adapter configured on the Mastra instance');\n }\n\n if (params.resume) {\n const prevStep = getStep(this.mastra!.getWorkflow(params.workflowId), params.resume.resumePath);\n const prevResult = params.resume.stepResults[prevStep?.id ?? 'input'];\n\n await pubsub.publish('workflows', {\n type: 'workflow.resume',\n runId: params.runId,\n data: {\n workflowId: params.workflowId,\n runId: params.runId,\n executionPath: params.resume.resumePath,\n stepResults: params.resume.stepResults,\n resumeSteps: params.resume.steps,\n prevResult: { status: 'success', output: prevResult?.payload },\n resumeData: params.resume.resumePayload,\n runtimeContext: Object.fromEntries(params.runtimeContext.entries()),\n },\n });\n } else {\n await pubsub.publish('workflows', {\n type: 'workflow.start',\n runId: params.runId,\n data: {\n workflowId: params.workflowId,\n runId: params.runId,\n prevResult: { status: 'success', output: params.input },\n runtimeContext: Object.fromEntries(params.runtimeContext.entries()),\n },\n });\n }\n\n const resultData: any = await new Promise(resolve => {\n const finishCb = async (event: Event, ack?: () => Promise<void>) => {\n if (event.runId !== params.runId) {\n await ack?.();\n return;\n }\n\n if (['workflow.end', 'workflow.fail', 'workflow.suspend'].includes(event.type)) {\n await ack?.();\n await pubsub.unsubscribe('workflows-finish', finishCb);\n resolve(event.data);\n return;\n }\n\n await ack?.();\n };\n\n pubsub.subscribe('workflows-finish', finishCb).catch(() => {});\n });\n\n if (resultData.prevResult.status === 'failed') {\n return {\n status: 'failed',\n error: resultData.prevResult.error,\n steps: resultData.stepResults,\n } as TOutput;\n } else if (resultData.prevResult.status === 'suspended') {\n const suspendedSteps = Object.entries(resultData.stepResults)\n .map(([_stepId, stepResult]: [string, any]) => {\n if (stepResult.status === 'suspended') {\n return stepResult.suspendPayload?.__workflow_meta?.path ?? [];\n }\n\n return null;\n })\n .filter(Boolean);\n return {\n status: 'suspended',\n steps: resultData.stepResults,\n suspended: suspendedSteps,\n } as TOutput;\n }\n\n return {\n status: resultData.prevResult.status,\n result: resultData.prevResult?.output,\n steps: resultData.stepResults,\n } as TOutput;\n }\n}\n"]}
|
|
@@ -72,30 +72,50 @@ var CoreToolBuilder = class extends MastraBase {
|
|
|
72
72
|
type: logType
|
|
73
73
|
});
|
|
74
74
|
const execFunction = async (args, execOptions) => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
{
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
75
|
+
const toolSpan = options.agentAISpan?.createChildSpan({
|
|
76
|
+
type: "tool_call" /* TOOL_CALL */,
|
|
77
|
+
name: `tool: ${options.name}`,
|
|
78
|
+
input: args,
|
|
79
|
+
attributes: {
|
|
80
|
+
toolId: options.name,
|
|
81
|
+
toolDescription: options.description,
|
|
82
|
+
toolType: logType || "tool"
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
try {
|
|
86
|
+
let result;
|
|
87
|
+
if (isVercelTool(tool)) {
|
|
88
|
+
result = await tool?.execute?.(args, execOptions);
|
|
89
|
+
} else {
|
|
90
|
+
result = await tool?.execute?.(
|
|
88
91
|
{
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
context: args,
|
|
93
|
+
threadId: options.threadId,
|
|
94
|
+
resourceId: options.resourceId,
|
|
95
|
+
mastra: options.mastra,
|
|
96
|
+
memory: options.memory,
|
|
97
|
+
runId: options.runId,
|
|
98
|
+
runtimeContext: options.runtimeContext ?? new RuntimeContext(),
|
|
99
|
+
writer: new ToolStream(
|
|
100
|
+
{
|
|
101
|
+
prefix: "tool",
|
|
102
|
+
callId: execOptions.toolCallId,
|
|
103
|
+
name: options.name,
|
|
104
|
+
runId: options.runId
|
|
105
|
+
},
|
|
106
|
+
options.writableStream || execOptions.writableStream
|
|
107
|
+
),
|
|
108
|
+
tracingContext: { currentSpan: toolSpan }
|
|
93
109
|
},
|
|
94
|
-
|
|
95
|
-
)
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
110
|
+
execOptions
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
toolSpan?.end({ output: result });
|
|
114
|
+
return result ?? void 0;
|
|
115
|
+
} catch (error2) {
|
|
116
|
+
toolSpan?.error({ error: error2 });
|
|
117
|
+
throw error2;
|
|
118
|
+
}
|
|
99
119
|
};
|
|
100
120
|
return async (args, execOptions) => {
|
|
101
121
|
let logger2 = options.logger || this.logger;
|
|
@@ -174,12 +194,7 @@ var CoreToolBuilder = class extends MastraBase {
|
|
|
174
194
|
const model = this.options.model;
|
|
175
195
|
const schemaCompatLayers = [];
|
|
176
196
|
if (model) {
|
|
177
|
-
|
|
178
|
-
if (model.specificationVersion === "v2") {
|
|
179
|
-
supportsStructuredOutputs = true;
|
|
180
|
-
} else {
|
|
181
|
-
supportsStructuredOutputs = model.supportsStructuredOutputs ?? false;
|
|
182
|
-
}
|
|
197
|
+
const supportsStructuredOutputs = model.specificationVersion !== "v2" ? model.supportsStructuredOutputs ?? false : false;
|
|
183
198
|
const modelInfo = {
|
|
184
199
|
modelId: model.modelId,
|
|
185
200
|
supportsStructuredOutputs,
|
|
@@ -484,5 +499,5 @@ function parseFieldKey(key) {
|
|
|
484
499
|
}
|
|
485
500
|
|
|
486
501
|
export { checkEvalStorageFields, createMastraProxy, deepMerge, delay, ensureToolProperties, generateEmptyFromSchema, isCoreMessage, isUiMessage, isZodType, makeCoreTool, makeCoreToolV5, maskStreamTags, parseFieldKey, parseSqlIdentifier, resolveSerializedZodOutput };
|
|
487
|
-
//# sourceMappingURL=chunk-
|
|
488
|
-
//# sourceMappingURL=chunk-
|
|
502
|
+
//# sourceMappingURL=chunk-FLXWZUIG.js.map
|
|
503
|
+
//# sourceMappingURL=chunk-FLXWZUIG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/tool-builder/builder.ts","../src/utils.ts"],"names":["error","logger","z"],"mappings":"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","file":"chunk-FLXWZUIG.js","sourcesContent":["import type { ToolCallOptions } from '@ai-sdk/provider-utils-v5';\nimport {\n OpenAIReasoningSchemaCompatLayer,\n OpenAISchemaCompatLayer,\n GoogleSchemaCompatLayer,\n AnthropicSchemaCompatLayer,\n DeepSeekSchemaCompatLayer,\n MetaSchemaCompatLayer,\n applyCompatLayer,\n convertZodSchemaToAISDKSchema,\n} from '@mastra/schema-compat';\nimport type { ToolExecutionOptions } from 'ai';\nimport { z } from 'zod';\nimport { AISpanType } from '../../ai-tracing';\nimport { MastraBase } from '../../base';\nimport { ErrorCategory, MastraError, ErrorDomain } from '../../error';\nimport { RuntimeContext } from '../../runtime-context';\nimport { isVercelTool } from '../../tools/toolchecks';\nimport type { ToolOptions } from '../../utils';\nimport { ToolStream } from '../stream';\nimport type { CoreTool, ToolAction, VercelTool, VercelToolV5 } from '../types';\nimport { validateToolInput } from '../validation';\n\nexport type ToolToConvert = VercelTool | ToolAction<any, any, any> | VercelToolV5;\nexport type LogType = 'tool' | 'toolset' | 'client-tool';\n\ninterface LogOptions {\n agentName?: string;\n toolName: string;\n type?: 'tool' | 'toolset' | 'client-tool';\n}\n\ninterface LogMessageOptions {\n start: string;\n error: string;\n}\n\nexport class CoreToolBuilder extends MastraBase {\n private originalTool: ToolToConvert;\n private options: ToolOptions;\n private logType?: LogType;\n\n constructor(input: { originalTool: ToolToConvert; options: ToolOptions; logType?: LogType }) {\n super({ name: 'CoreToolBuilder' });\n this.originalTool = input.originalTool;\n this.options = input.options;\n this.logType = input.logType;\n }\n\n // Helper to get parameters based on tool type\n private getParameters = () => {\n if (isVercelTool(this.originalTool)) {\n return this.originalTool.parameters ?? z.object({});\n }\n\n return this.originalTool.inputSchema ?? z.object({});\n };\n\n private getOutputSchema = () => {\n if ('outputSchema' in this.originalTool) return this.originalTool.outputSchema;\n return null;\n };\n\n // For provider-defined tools, we need to include all required properties\n private buildProviderTool(tool: ToolToConvert): (CoreTool & { id: `${string}.${string}` }) | undefined {\n if (\n 'type' in tool &&\n tool.type === 'provider-defined' &&\n 'id' in tool &&\n typeof tool.id === 'string' &&\n tool.id.includes('.')\n ) {\n const parameters = this.getParameters();\n const outputSchema = this.getOutputSchema();\n return {\n type: 'provider-defined' as const,\n id: tool.id,\n args: ('args' in this.originalTool ? this.originalTool.args : {}) as Record<string, unknown>,\n description: tool.description,\n parameters: convertZodSchemaToAISDKSchema(parameters),\n ...(outputSchema ? { outputSchema: convertZodSchemaToAISDKSchema(outputSchema) } : {}),\n execute: this.originalTool.execute\n ? this.createExecute(\n this.originalTool,\n { ...this.options, description: this.originalTool.description },\n this.logType,\n )\n : undefined,\n };\n }\n\n return undefined;\n }\n\n private createLogMessageOptions({ agentName, toolName, type }: LogOptions): LogMessageOptions {\n // If no agent name, use default format\n if (!agentName) {\n return {\n start: `Executing tool ${toolName}`,\n error: `Failed tool execution`,\n };\n }\n\n const prefix = `[Agent:${agentName}]`;\n const toolType = type === 'toolset' ? 'toolset' : 'tool';\n\n return {\n start: `${prefix} - Executing ${toolType} ${toolName}`,\n error: `${prefix} - Failed ${toolType} execution`,\n };\n }\n\n private createExecute(tool: ToolToConvert, options: ToolOptions, logType?: 'tool' | 'toolset' | 'client-tool') {\n // dont't add memory or mastra to logging\n const { logger, mastra: _mastra, memory: _memory, runtimeContext, ...rest } = options;\n\n const { start, error } = this.createLogMessageOptions({\n agentName: options.agentName,\n toolName: options.name,\n type: logType,\n });\n\n const execFunction = async (args: unknown, execOptions: ToolExecutionOptions | ToolCallOptions) => {\n // Create tool span if we have an agent span available\n const toolSpan = options.agentAISpan?.createChildSpan({\n type: AISpanType.TOOL_CALL,\n name: `tool: ${options.name}`,\n input: args,\n attributes: {\n toolId: options.name,\n toolDescription: options.description,\n toolType: logType || 'tool',\n },\n });\n\n try {\n let result;\n\n if (isVercelTool(tool)) {\n // Handle Vercel tools (AI SDK tools)\n result = await tool?.execute?.(args, execOptions as ToolExecutionOptions);\n } else {\n // Handle Mastra tools\n result = await tool?.execute?.(\n {\n context: args,\n threadId: options.threadId,\n resourceId: options.resourceId,\n mastra: options.mastra,\n memory: options.memory,\n runId: options.runId,\n runtimeContext: options.runtimeContext ?? new RuntimeContext(),\n writer: new ToolStream(\n {\n prefix: 'tool',\n callId: execOptions.toolCallId,\n name: options.name,\n runId: options.runId!,\n },\n options.writableStream || (execOptions as any).writableStream,\n ),\n tracingContext: { currentSpan: toolSpan },\n },\n execOptions as ToolExecutionOptions & ToolCallOptions,\n );\n }\n\n toolSpan?.end({ output: result });\n return result ?? undefined;\n } catch (error) {\n toolSpan?.error({ error: error as Error });\n throw error;\n }\n };\n\n return async (args: unknown, execOptions?: ToolExecutionOptions | ToolCallOptions) => {\n let logger = options.logger || this.logger;\n try {\n logger.debug(start, { ...rest, args });\n\n // Validate input parameters if schema exists\n const parameters = this.getParameters();\n const { data, error } = validateToolInput(parameters, args, options.name);\n if (error) {\n logger.warn(`Tool input validation failed for '${options.name}'`, {\n toolName: options.name,\n errors: error.validationErrors,\n args,\n });\n return error;\n }\n // Use validated/transformed data\n args = data;\n\n // there is a small delay in stream output so we add an immediate to ensure the stream is ready\n return await new Promise((resolve, reject) => {\n setImmediate(async () => {\n try {\n const result = await execFunction(args, execOptions!);\n resolve(result);\n } catch (err) {\n reject(err);\n }\n });\n });\n } catch (err) {\n const mastraError = new MastraError(\n {\n id: 'TOOL_EXECUTION_FAILED',\n domain: ErrorDomain.TOOL,\n category: ErrorCategory.USER,\n details: {\n errorMessage: String(error),\n argsJson: JSON.stringify(args),\n model: rest.model?.modelId ?? '',\n },\n },\n err,\n );\n logger.trackException(mastraError);\n logger.error(error, { ...rest, error: mastraError, args });\n return mastraError;\n }\n };\n }\n\n buildV5() {\n const builtTool = this.build();\n\n if (!builtTool.parameters) {\n throw new Error('Tool parameters are required');\n }\n\n return {\n ...builtTool,\n inputSchema: builtTool.parameters,\n onInputStart: 'onInputStart' in this.originalTool ? this.originalTool.onInputStart : undefined,\n onInputDelta: 'onInputDelta' in this.originalTool ? this.originalTool.onInputDelta : undefined,\n onInputAvailable: 'onInputAvailable' in this.originalTool ? this.originalTool.onInputAvailable : undefined,\n } as VercelToolV5;\n }\n\n build(): CoreTool {\n const providerTool = this.buildProviderTool(this.originalTool);\n if (providerTool) {\n return providerTool;\n }\n\n const definition = {\n type: 'function' as const,\n description: this.originalTool.description,\n parameters: this.getParameters(),\n outputSchema: this.getOutputSchema(),\n execute: this.originalTool.execute\n ? this.createExecute(\n this.originalTool,\n { ...this.options, description: this.originalTool.description },\n this.logType,\n )\n : undefined,\n };\n\n const model = this.options.model;\n\n const schemaCompatLayers = [];\n\n if (model) {\n const supportsStructuredOutputs =\n model.specificationVersion !== 'v2' ? (model.supportsStructuredOutputs ?? false) : false;\n\n const modelInfo = {\n modelId: model.modelId,\n supportsStructuredOutputs,\n provider: model.provider,\n };\n\n schemaCompatLayers.push(\n new OpenAIReasoningSchemaCompatLayer(modelInfo),\n new OpenAISchemaCompatLayer(modelInfo),\n new GoogleSchemaCompatLayer(modelInfo),\n new AnthropicSchemaCompatLayer(modelInfo),\n new DeepSeekSchemaCompatLayer(modelInfo),\n new MetaSchemaCompatLayer(modelInfo),\n );\n }\n\n const processedSchema = applyCompatLayer({\n schema: this.getParameters(),\n compatLayers: schemaCompatLayers,\n mode: 'aiSdkSchema',\n });\n\n let processedOutputSchema;\n\n if (this.getOutputSchema()) {\n processedOutputSchema = applyCompatLayer({\n schema: this.getOutputSchema(),\n compatLayers: schemaCompatLayers,\n mode: 'aiSdkSchema',\n });\n }\n\n return {\n ...definition,\n id: 'id' in this.originalTool ? this.originalTool.id : undefined,\n parameters: processedSchema,\n outputSchema: processedOutputSchema,\n };\n }\n}\n","import { createHash } from 'crypto';\nimport type { WritableStream } from 'stream/web';\nimport type { CoreMessage } from 'ai';\nimport jsonSchemaToZod from 'json-schema-to-zod';\nimport { z } from 'zod';\nimport type { MastraPrimitives } from './action';\nimport type { ToolsInput } from './agent';\nimport type { AnyAISpan } from './ai-tracing';\nimport type { IMastraLogger } from './logger';\nimport type { Mastra } from './mastra';\nimport type { AiMessageType, MastraLanguageModel, MastraMemory } from './memory';\nimport type { RuntimeContext } from './runtime-context';\nimport type { ChunkType } from './stream/types';\nimport type { CoreTool, VercelTool, VercelToolV5 } from './tools';\nimport { CoreToolBuilder } from './tools/tool-builder/builder';\nimport type { ToolToConvert } from './tools/tool-builder/builder';\nimport { isVercelTool } from './tools/toolchecks';\n\nexport const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n\n/**\n * Deep merges two objects, recursively merging nested objects and arrays\n */\nexport function deepMerge<T extends object = object>(target: T, source: Partial<T>): T {\n const output = { ...target };\n\n if (!source) return output;\n\n Object.keys(source).forEach(key => {\n const targetValue = output[key as keyof T];\n const sourceValue = source[key as keyof T];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n (output as any)[key] = sourceValue;\n } else if (\n sourceValue instanceof Object &&\n targetValue instanceof Object &&\n !Array.isArray(sourceValue) &&\n !Array.isArray(targetValue)\n ) {\n (output as any)[key] = deepMerge(targetValue, sourceValue as T);\n } else if (sourceValue !== undefined) {\n (output as any)[key] = sourceValue;\n }\n });\n\n return output;\n}\n\nexport function generateEmptyFromSchema(schema: string) {\n try {\n const parsedSchema = JSON.parse(schema);\n if (!parsedSchema || parsedSchema.type !== 'object' || !parsedSchema.properties) return {};\n const obj: Record<string, any> = {};\n const TYPE_DEFAULTS = {\n string: '',\n array: [],\n object: {},\n number: 0,\n integer: 0,\n boolean: false,\n };\n for (const [key, prop] of Object.entries<any>(parsedSchema.properties)) {\n obj[key] = TYPE_DEFAULTS[prop.type as keyof typeof TYPE_DEFAULTS] ?? null;\n }\n return obj;\n } catch {\n return {};\n }\n}\n\nexport interface TagMaskOptions {\n /** Called when masking begins */\n onStart?: () => void;\n /** Called when masking ends */\n onEnd?: () => void;\n /** Called for each chunk that is masked */\n onMask?: (chunk: string) => void;\n}\n\n/**\n * Transforms a stream by masking content between XML tags.\n * @param stream Input stream to transform\n * @param tag Tag name to mask between (e.g. for <foo>...</foo>, use 'foo')\n * @param options Optional configuration for masking behavior\n */\nexport async function* maskStreamTags(\n stream: AsyncIterable<string>,\n tag: string,\n options: TagMaskOptions = {},\n): AsyncIterable<string> {\n const { onStart, onEnd, onMask } = options;\n const openTag = `<${tag}>`;\n const closeTag = `</${tag}>`;\n\n let buffer = '';\n let fullContent = '';\n let isMasking = false;\n let isBuffering = false;\n\n // used for checking in chunks that include tags or partial tags + some other non-tag text\n // eg: \"o <tag_name\" or \"name> w\", can trim before-start to get \"<tag_name\" or after-end to get \"name>\"\n const trimOutsideDelimiter = (text: string, delimiter: string, trim: 'before-start' | 'after-end') => {\n if (!text.includes(delimiter)) {\n return text;\n }\n\n const parts = text.split(delimiter);\n\n if (trim === `before-start`) {\n return `${delimiter}${parts[1]}`;\n }\n\n return `${parts[0]}${delimiter}`;\n };\n\n // Helper to check if text starts with pattern (ignoring whitespace)\n // When checking partial tags: startsWith(buffer, openTag) checks if buffer could be start of tag\n // When checking full tags: startsWith(chunk, openTag) checks if chunk starts with full tag\n const startsWith = (text: string, pattern: string) => {\n // check start of opening tag\n if (pattern.includes(openTag.substring(0, 3))) {\n // our pattern for checking the start is always based on xml-like tags\n // if the pattern looks like our opening tag and the pattern also includes\n // some other chunked text before it, we just wanted to check the xml part of the pattern\n pattern = trimOutsideDelimiter(pattern, `<`, `before-start`);\n }\n\n return text.trim().startsWith(pattern.trim());\n };\n\n for await (const chunk of stream) {\n fullContent += chunk;\n\n if (isBuffering) buffer += chunk;\n\n const chunkHasTag = startsWith(chunk, openTag);\n const bufferHasTag = !chunkHasTag && isBuffering && startsWith(openTag, buffer);\n\n let toYieldBeforeMaskedStartTag = ``;\n // Check if we should start masking chunks\n if (!isMasking && (chunkHasTag || bufferHasTag)) {\n isMasking = true;\n isBuffering = false;\n\n // check if the buffered text includes text before the start tag. ex \"o <tag_name\", \"o\" should be yielded and not masked\n const taggedTextToMask = trimOutsideDelimiter(buffer, `<`, `before-start`);\n if (taggedTextToMask !== buffer.trim()) {\n toYieldBeforeMaskedStartTag = buffer.replace(taggedTextToMask, ``);\n }\n\n buffer = '';\n onStart?.();\n }\n\n // Check if we should start buffering (looks like part of the opening tag but it's not the full <tag> yet eg <ta - could be <table> but we don't know yet)\n if (!isMasking && !isBuffering && startsWith(openTag, chunk) && chunk.trim() !== '') {\n isBuffering = true;\n buffer += chunk;\n continue;\n }\n\n // We're buffering, need to check again if our buffer has deviated from the opening <tag> eg <tag2>\n if (isBuffering && buffer && !startsWith(openTag, buffer)) {\n yield buffer;\n buffer = '';\n isBuffering = false;\n continue;\n }\n\n // Check if we should stop masking chunks (since the content includes the closing </tag>)\n if (isMasking && fullContent.includes(closeTag)) {\n onMask?.(chunk);\n onEnd?.();\n isMasking = false;\n const lastFullContent = fullContent;\n fullContent = ``; // reset to handle streams with multiple full tags that have text inbetween\n\n // check to see if we have a partial chunk outside the close tag. if we do we need to yield it so it isn't swallowed with the masked text\n const textUntilEndTag = trimOutsideDelimiter(lastFullContent, closeTag, 'after-end');\n if (textUntilEndTag !== lastFullContent) {\n yield lastFullContent.replace(textUntilEndTag, ``);\n }\n\n continue;\n }\n\n // We're currently masking chunks inside a <tag>\n if (isMasking) {\n onMask?.(chunk);\n // in the case that there was a chunk that included a tag to mask and some other text, ex \"o <tag_name\" we need to still yield the\n // text before the tag (\"o \") so it's not swallowed with the masked text\n if (toYieldBeforeMaskedStartTag) {\n yield toYieldBeforeMaskedStartTag;\n }\n continue;\n }\n\n // default yield the chunk\n yield chunk;\n }\n}\n\n/**\n * Resolve serialized zod output - This function takes the string output ot the `jsonSchemaToZod` function\n * and instantiates the zod object correctly.\n *\n * @param schema - serialized zod object\n * @returns resolved zod object\n */\nexport function resolveSerializedZodOutput(schema: string): z.ZodType {\n // Creates and immediately executes a new function that takes 'z' as a parameter\n // The function body is a string that returns the serialized zod schema\n // When executed with the 'z' parameter, it reconstructs the zod schema in the current context\n return Function('z', `\"use strict\";return (${schema});`)(z);\n}\n\nexport interface ToolOptions {\n name: string;\n runId?: string;\n threadId?: string;\n resourceId?: string;\n logger?: IMastraLogger;\n description?: string;\n mastra?: (Mastra & MastraPrimitives) | MastraPrimitives;\n runtimeContext: RuntimeContext;\n memory?: MastraMemory;\n agentName?: string;\n model?: MastraLanguageModel;\n writableStream?: WritableStream<ChunkType>;\n agentAISpan?: AnyAISpan;\n}\n\n/**\n * Checks if a value is a Zod type\n * @param value - The value to check\n * @returns True if the value is a Zod type, false otherwise\n */\nexport function isZodType(value: unknown): value is z.ZodType {\n // Check if it's a Zod schema by looking for common Zod properties and methods\n return (\n typeof value === 'object' &&\n value !== null &&\n '_def' in value &&\n 'parse' in value &&\n typeof (value as any).parse === 'function' &&\n 'safeParse' in value &&\n typeof (value as any).safeParse === 'function'\n );\n}\n\n// Helper function to create a deterministic hash\nfunction createDeterministicId(input: string): string {\n return createHash('sha256').update(input).digest('hex').slice(0, 8); // Take first 8 characters for a shorter but still unique ID\n}\n\n/**\n * Sets the properties for a Vercel Tool, including an ID and inputSchema\n * @param tool - The tool to set the properties for\n * @returns The tool with the properties set\n */\nfunction setVercelToolProperties(tool: VercelTool) {\n const inputSchema = convertVercelToolParameters(tool);\n const toolId = !('id' in tool)\n ? tool.description\n ? `tool-${createDeterministicId(tool.description)}`\n : `tool-${Math.random().toString(36).substring(2, 9)}`\n : tool.id;\n return {\n ...tool,\n id: toolId,\n inputSchema,\n };\n}\n\n/**\n * Ensures a tool has an ID and inputSchema by generating one if not present\n * @param tool - The tool to ensure has an ID and inputSchema\n * @returns The tool with an ID and inputSchema\n */\nexport function ensureToolProperties(tools: ToolsInput): ToolsInput {\n const toolsWithProperties = Object.keys(tools).reduce<ToolsInput>((acc, key) => {\n const tool = tools?.[key];\n if (tool) {\n if (isVercelTool(tool)) {\n acc[key] = setVercelToolProperties(tool) as VercelTool;\n } else {\n acc[key] = tool;\n }\n }\n return acc;\n }, {});\n\n return toolsWithProperties;\n}\n\nfunction convertVercelToolParameters(tool: VercelTool): z.ZodType {\n // If the tool is a Vercel Tool, check if the parameters are already a zod object\n // If not, convert the parameters to a zod object using jsonSchemaToZod\n const schema = tool.parameters ?? z.object({});\n return isZodType(schema) ? schema : resolveSerializedZodOutput(jsonSchemaToZod(schema));\n}\n\n/**\n * Converts a Vercel Tool or Mastra Tool into a CoreTool format\n * @param originalTool - The tool to convert (either VercelTool or ToolAction)\n * @param options - Tool options including Mastra-specific settings\n * @param logType - Type of tool to log (tool or toolset)\n * @returns A CoreTool that can be used by the system\n */\nexport function makeCoreTool(\n originalTool: ToolToConvert,\n options: ToolOptions,\n logType?: 'tool' | 'toolset' | 'client-tool',\n): CoreTool {\n return new CoreToolBuilder({ originalTool, options, logType }).build();\n}\n\nexport function makeCoreToolV5(\n originalTool: ToolToConvert,\n options: ToolOptions,\n logType?: 'tool' | 'toolset' | 'client-tool',\n): VercelToolV5 {\n return new CoreToolBuilder({ originalTool, options, logType }).buildV5();\n}\n\n/**\n * Creates a proxy for a Mastra instance to handle deprecated properties\n * @param mastra - The Mastra instance to proxy\n * @param logger - The logger to use for warnings\n * @returns A proxy for the Mastra instance\n */\nexport function createMastraProxy({ mastra, logger }: { mastra: Mastra; logger: IMastraLogger }) {\n return new Proxy(mastra, {\n get(target, prop) {\n const hasProp = Reflect.has(target, prop);\n\n if (hasProp) {\n const value = Reflect.get(target, prop);\n const isFunction = typeof value === 'function';\n if (isFunction) {\n return value.bind(target);\n }\n return value;\n }\n\n if (prop === 'logger') {\n logger.warn(`Please use 'getLogger' instead, logger is deprecated`);\n return Reflect.apply(target.getLogger, target, []);\n }\n\n if (prop === 'telemetry') {\n logger.warn(`Please use 'getTelemetry' instead, telemetry is deprecated`);\n return Reflect.apply(target.getTelemetry, target, []);\n }\n\n if (prop === 'storage') {\n logger.warn(`Please use 'getStorage' instead, storage is deprecated`);\n return Reflect.get(target, 'storage');\n }\n\n if (prop === 'agents') {\n logger.warn(`Please use 'getAgents' instead, agents is deprecated`);\n return Reflect.apply(target.getAgents, target, []);\n }\n\n if (prop === 'tts') {\n logger.warn(`Please use 'getTTS' instead, tts is deprecated`);\n return Reflect.apply(target.getTTS, target, []);\n }\n\n if (prop === 'vectors') {\n logger.warn(`Please use 'getVectors' instead, vectors is deprecated`);\n return Reflect.apply(target.getVectors, target, []);\n }\n\n if (prop === 'memory') {\n logger.warn(`Please use 'getMemory' instead, memory is deprecated`);\n return Reflect.get(target, 'memory');\n }\n\n return Reflect.get(target, prop);\n },\n });\n}\n\nexport function checkEvalStorageFields(traceObject: any, logger?: IMastraLogger) {\n const missingFields = [];\n if (!traceObject.input) missingFields.push('input');\n if (!traceObject.output) missingFields.push('output');\n if (!traceObject.agentName) missingFields.push('agent_name');\n if (!traceObject.metricName) missingFields.push('metric_name');\n if (!traceObject.instructions) missingFields.push('instructions');\n if (!traceObject.globalRunId) missingFields.push('global_run_id');\n if (!traceObject.runId) missingFields.push('run_id');\n\n if (missingFields.length > 0) {\n if (logger) {\n logger.warn('Skipping evaluation storage due to missing required fields', {\n missingFields,\n runId: traceObject.runId,\n agentName: traceObject.agentName,\n });\n } else {\n console.warn('Skipping evaluation storage due to missing required fields', {\n missingFields,\n runId: traceObject.runId,\n agentName: traceObject.agentName,\n });\n }\n return false;\n }\n\n return true;\n}\n\n// lifted from https://github.com/vercel/ai/blob/main/packages/ai/core/prompt/detect-prompt-type.ts#L27\nfunction detectSingleMessageCharacteristics(\n message: any,\n): 'has-ui-specific-parts' | 'has-core-specific-parts' | 'message' | 'other' {\n if (\n typeof message === 'object' &&\n message !== null &&\n (message.role === 'function' || // UI-only role\n message.role === 'data' || // UI-only role\n 'toolInvocations' in message || // UI-specific field\n 'parts' in message || // UI-specific field\n 'experimental_attachments' in message)\n ) {\n return 'has-ui-specific-parts';\n } else if (\n typeof message === 'object' &&\n message !== null &&\n 'content' in message &&\n (Array.isArray(message.content) || // Core messages can have array content\n 'experimental_providerMetadata' in message ||\n 'providerOptions' in message)\n ) {\n return 'has-core-specific-parts';\n } else if (\n typeof message === 'object' &&\n message !== null &&\n 'role' in message &&\n 'content' in message &&\n typeof message.content === 'string' &&\n ['system', 'user', 'assistant', 'tool'].includes(message.role)\n ) {\n return 'message';\n } else {\n return 'other';\n }\n}\n\nexport function isUiMessage(message: CoreMessage | AiMessageType): message is AiMessageType {\n return detectSingleMessageCharacteristics(message) === `has-ui-specific-parts`;\n}\nexport function isCoreMessage(message: CoreMessage | AiMessageType): message is CoreMessage {\n return [`has-core-specific-parts`, `message`].includes(detectSingleMessageCharacteristics(message));\n}\n\n/** Represents a validated SQL identifier (e.g., table or column name). */\ntype SqlIdentifier = string & { __brand: 'SqlIdentifier' };\n/** Represents a validated dot-separated SQL field key. */\ntype FieldKey = string & { __brand: 'FieldKey' };\n\nconst SQL_IDENTIFIER_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\n/**\n * Parses and returns a valid SQL identifier (such as a table or column name).\n * The identifier must:\n * - Start with a letter (a-z, A-Z) or underscore (_)\n * - Contain only letters, numbers, or underscores\n * - Be at most 63 characters long\n *\n * @param name - The identifier string to parse.\n * @param kind - Optional label for error messages (e.g., 'table name').\n * @returns The validated identifier as a branded type.\n * @throws {Error} If the identifier does not conform to SQL naming rules.\n *\n * @example\n * const id = parseSqlIdentifier('my_table'); // Ok\n * parseSqlIdentifier('123table'); // Throws error\n */\nexport function parseSqlIdentifier(name: string, kind = 'identifier'): SqlIdentifier {\n if (!SQL_IDENTIFIER_PATTERN.test(name) || name.length > 63) {\n throw new Error(\n `Invalid ${kind}: ${name}. Must start with a letter or underscore, contain only letters, numbers, or underscores, and be at most 63 characters long.`,\n );\n }\n return name as SqlIdentifier;\n}\n\n/**\n * Parses and returns a valid dot-separated SQL field key (e.g., 'user.profile.name').\n * Each segment must:\n * - Start with a letter (a-z, A-Z) or underscore (_)\n * - Contain only letters, numbers, or underscores\n * - Be at most 63 characters long\n *\n * @param key - The dot-separated field key string to parse.\n * @returns The validated field key as a branded type.\n * @throws {Error} If any segment of the key is invalid.\n *\n * @example\n * const key = parseFieldKey('user_profile.name'); // Ok\n * parseFieldKey('user..name'); // Throws error\n * parseFieldKey('user.123name'); // Throws error\n */\nexport function parseFieldKey(key: string): FieldKey {\n if (!key) throw new Error('Field key cannot be empty');\n const segments = key.split('.');\n for (const segment of segments) {\n if (!SQL_IDENTIFIER_PATTERN.test(segment) || segment.length > 63) {\n throw new Error(`Invalid field key segment: ${segment} in ${key}`);\n }\n }\n return key as FieldKey;\n}\n"]}
|