FN-5766: add flagged-off workflow graph executor scaffold
Add the Phase 2 workflow-graph interpreter scaffold and builtin coding IR wiring while keeping execution behavior unchanged by default. - add BUILTIN_CODING_WORKFLOW_IR and builder in @fusion/core with coverage tests - export new coding workflow IR APIs from core index - add WorkflowGraphExecutor scaffold in @fusion/engine plus parity-focused test coverage - document the flagged-off interpreter scaffold, parity gate, and v1 IR gap reconciliation in workflow docs - include a changeset for published @runfusion/fusion Files changed: .../fn-5766-workflow-graph-executor-scaffold.md | 11 +++ docs/workflow-steps.md | 27 +++++++ .../__tests__/builtin-coding-workflow-ir.test.ts | 34 +++++++++ packages/core/src/builtin-coding-workflow-ir.ts | 60 ++++++++++++++++ packages/core/src/index.ts | 4 ++ .../workflow-graph-executor-parity.test.ts | 32 +++++++++ packages/engine/src/index.ts | 7 ++ packages/engine/src/workflow-graph-executor.ts | 82 ++++++++++++++++++++++ 8 files changed, 257 insertions(+) Fusion-Task-Id: FN-5766 Fusion-Task-Lineage: 4bbef713-a415-4d42-a20b-9ae4f3235419
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
BUILTIN_CODING_WORKFLOW_IR,
|
||||
WORKFLOW_IR_SCHEMA_VERSION,
|
||||
buildBuiltinCodingWorkflowIr,
|
||||
parseWorkflowIr,
|
||||
serializeWorkflowIr,
|
||||
} from "../index.js";
|
||||
|
||||
describe("builtin coding workflow ir", () => {
|
||||
it("parses and round-trips", () => {
|
||||
const parsed = parseWorkflowIr(BUILTIN_CODING_WORKFLOW_IR);
|
||||
const reparsed = parseWorkflowIr(serializeWorkflowIr(parsed));
|
||||
expect(reparsed).toEqual(parsed);
|
||||
expect(parsed.schemaVersion).toBe(WORKFLOW_IR_SCHEMA_VERSION);
|
||||
});
|
||||
|
||||
it("contains exactly one start and one end node", () => {
|
||||
const nodes = BUILTIN_CODING_WORKFLOW_IR.nodes;
|
||||
expect(nodes.filter((node) => node.kind === "start")).toHaveLength(1);
|
||||
expect(nodes.filter((node) => node.kind === "end")).toHaveLength(1);
|
||||
});
|
||||
|
||||
it("exposes coding lifecycle stages", () => {
|
||||
const stageNodes = BUILTIN_CODING_WORKFLOW_IR.nodes.filter((node) => node.config?.stage);
|
||||
const stages = stageNodes.map((node) => String(node.config?.stage));
|
||||
expect(stages).toEqual(expect.arrayContaining(["triage", "execute", "review", "merge"]));
|
||||
});
|
||||
|
||||
it("builder returns parser-validated ir", () => {
|
||||
const built = buildBuiltinCodingWorkflowIr();
|
||||
expect(built.metadata.name).toContain("Coding Lifecycle");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user