UNPKG

@mastra/core

Version:

Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.

85 lines (83 loc) 3.27 kB
'use strict'; // src/workflows/state-reader.ts var getStep = (state, stepId) => state.steps?.[stepId]; var getFirstStepResult = (step) => { return Array.isArray(step) ? step.find((result) => result?.status === "suspended") ?? step[0] : step; }; var getNestedSuspendPath = (step) => { const path = getFirstStepResult(step)?.suspendPayload?.__workflow_meta?.path; return Array.isArray(path) ? path.filter((part) => typeof part === "string") : []; }; function getWorkflowStepOutput(state, stepId) { const step = getStep(state, stepId); return Array.isArray(step) ? step.map((result) => result?.output) : step?.output; } function getWorkflowStepPayload(state, stepId) { const step = getStep(state, stepId); return Array.isArray(step) ? step.map((result) => result?.payload) : step?.payload; } function getWorkflowResumeLabel(state, label) { const resumeLabel = state.resumeLabels?.[label]; return resumeLabel ? { ...resumeLabel } : void 0; } function getWorkflowResumeLabels(state) { return Object.entries(state.resumeLabels ?? {}).reduce( (labels, [label, value]) => { labels[label] = { ...value }; return labels; }, {} ); } function getWorkflowSuspendedSteps(state) { return Object.entries(state.suspendedPaths ?? {}).map(([stepId, executionPath]) => { const step = getStep(state, stepId); const firstStepResult = getFirstStepResult(step); const nestedPath = getNestedSuspendPath(step); const path = nestedPath.length > 0 ? nestedPath[0] === stepId ? nestedPath : [stepId, ...nestedPath] : [stepId]; const resumeLabels = Object.entries(state.resumeLabels ?? {}).reduce( (labels, [label, value]) => { if (value.stepId === stepId) { labels[label] = { ...value }; } return labels; }, {} ); return { stepId, path, executionPath, step, payload: Array.isArray(step) ? step.map((result) => result?.payload) : step?.payload, suspendPayload: firstStepResult?.suspendPayload, suspendOutput: firstStepResult?.suspendOutput, resumeLabels }; }); } function getWorkflowSuspendedStep(state) { return getWorkflowSuspendedSteps(state)[0]; } function createWorkflowStateReader(state) { return { getStatus: () => state.status, getResult: () => state.result, getError: () => state.error, getStepOutput: (stepId) => getWorkflowStepOutput(state, stepId), getStepPayload: (stepId) => getWorkflowStepPayload(state, stepId), getSuspendedStep: () => getWorkflowSuspendedStep(state), getSuspendedSteps: () => getWorkflowSuspendedSteps(state), getResumeLabel: (label) => getWorkflowResumeLabel(state, label), getResumeLabels: () => getWorkflowResumeLabels(state) }; } exports.createWorkflowStateReader = createWorkflowStateReader; exports.getWorkflowResumeLabel = getWorkflowResumeLabel; exports.getWorkflowResumeLabels = getWorkflowResumeLabels; exports.getWorkflowStepOutput = getWorkflowStepOutput; exports.getWorkflowStepPayload = getWorkflowStepPayload; exports.getWorkflowSuspendedStep = getWorkflowSuspendedStep; exports.getWorkflowSuspendedSteps = getWorkflowSuspendedSteps; //# sourceMappingURL=chunk-MSZF6D4O.cjs.map //# sourceMappingURL=chunk-MSZF6D4O.cjs.map