UNPKG

@mastra/core

Version:

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

1 lines 7.71 kB
{"version":3,"sources":["../src/workflows/state-reader.ts"],"names":[],"mappings":"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","file":"chunk-MSZF6D4O.cjs","sourcesContent":["import type {\n WorkflowResumeLabel,\n WorkflowState,\n WorkflowStateSingleStepResult,\n WorkflowStateStepResult,\n} from './types';\n\nexport type WorkflowSuspendedStep = {\n stepId: string;\n path: string[];\n executionPath?: number[];\n step?: WorkflowStateStepResult;\n payload?: any;\n suspendPayload?: any;\n suspendOutput?: any;\n resumeLabels: Record<string, WorkflowResumeLabel>;\n};\n\nexport type WorkflowStateReader = {\n getStatus: () => WorkflowState['status'];\n getResult: () => WorkflowState['result'];\n getError: () => WorkflowState['error'];\n getStepOutput: <T = any>(stepId: string) => T | Array<T | undefined> | undefined;\n getStepPayload: <T = any>(stepId: string) => T | Array<T | undefined> | undefined;\n getSuspendedStep: () => WorkflowSuspendedStep | undefined;\n getSuspendedSteps: () => WorkflowSuspendedStep[];\n getResumeLabel: (label: string) => WorkflowResumeLabel | undefined;\n getResumeLabels: () => Record<string, WorkflowResumeLabel>;\n};\n\nconst getStep = (state: WorkflowState, stepId: string) => state.steps?.[stepId];\n\nconst getFirstStepResult = (step?: WorkflowStateStepResult): WorkflowStateSingleStepResult | undefined => {\n return Array.isArray(step) ? (step.find(result => result?.status === 'suspended') ?? step[0]) : step;\n};\n\nconst getNestedSuspendPath = (step?: WorkflowStateStepResult): string[] => {\n const path = getFirstStepResult(step)?.suspendPayload?.__workflow_meta?.path;\n return Array.isArray(path) ? path.filter((part): part is string => typeof part === 'string') : [];\n};\n\nexport function getWorkflowStepOutput<T = any>(\n state: WorkflowState,\n stepId: string,\n): T | Array<T | undefined> | undefined {\n const step = getStep(state, stepId);\n return Array.isArray(step) ? step.map(result => result?.output as T | undefined) : (step?.output as T | undefined);\n}\n\nexport function getWorkflowStepPayload<T = any>(\n state: WorkflowState,\n stepId: string,\n): T | Array<T | undefined> | undefined {\n const step = getStep(state, stepId);\n return Array.isArray(step) ? step.map(result => result?.payload as T | undefined) : (step?.payload as T | undefined);\n}\n\nexport function getWorkflowResumeLabel(state: WorkflowState, label: string) {\n const resumeLabel = state.resumeLabels?.[label];\n return resumeLabel ? { ...resumeLabel } : undefined;\n}\n\nexport function getWorkflowResumeLabels(state: WorkflowState): Record<string, WorkflowResumeLabel> {\n return Object.entries(state.resumeLabels ?? {}).reduce(\n (labels, [label, value]) => {\n labels[label] = { ...value };\n return labels;\n },\n {} as Record<string, WorkflowResumeLabel>,\n );\n}\n\nexport function getWorkflowSuspendedSteps(state: WorkflowState): WorkflowSuspendedStep[] {\n return Object.entries(state.suspendedPaths ?? {}).map(([stepId, executionPath]) => {\n const step = getStep(state, stepId);\n const firstStepResult = getFirstStepResult(step);\n const nestedPath = getNestedSuspendPath(step);\n const path = nestedPath.length > 0 ? (nestedPath[0] === stepId ? nestedPath : [stepId, ...nestedPath]) : [stepId];\n const resumeLabels = Object.entries(state.resumeLabels ?? {}).reduce(\n (labels, [label, value]) => {\n if (value.stepId === stepId) {\n labels[label] = { ...value };\n }\n return labels;\n },\n {} as Record<string, WorkflowResumeLabel>,\n );\n\n return {\n stepId,\n path,\n executionPath,\n step,\n payload: Array.isArray(step) ? step.map(result => result?.payload) : step?.payload,\n suspendPayload: firstStepResult?.suspendPayload,\n suspendOutput: firstStepResult?.suspendOutput,\n resumeLabels,\n };\n });\n}\n\nexport function getWorkflowSuspendedStep(state: WorkflowState): WorkflowSuspendedStep | undefined {\n return getWorkflowSuspendedSteps(state)[0];\n}\n\nexport function createWorkflowStateReader(state: WorkflowState): WorkflowStateReader {\n return {\n getStatus: () => state.status,\n getResult: () => state.result,\n getError: () => state.error,\n getStepOutput: stepId => getWorkflowStepOutput(state, stepId),\n getStepPayload: stepId => getWorkflowStepPayload(state, stepId),\n getSuspendedStep: () => getWorkflowSuspendedStep(state),\n getSuspendedSteps: () => getWorkflowSuspendedSteps(state),\n getResumeLabel: label => getWorkflowResumeLabel(state, label),\n getResumeLabels: () => getWorkflowResumeLabels(state),\n };\n}\n"]}