@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
JavaScript
;
// 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