@executioncontrolprotocol/format-reactflow 0.12.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.
Files changed (42) hide show
  1. package/README.md +24 -0
  2. package/dist/extension.d.ts +3 -0
  3. package/dist/extension.d.ts.map +1 -0
  4. package/dist/extension.js +94 -0
  5. package/dist/extension.js.map +1 -0
  6. package/dist/extract-data-edges.d.ts +17 -0
  7. package/dist/extract-data-edges.d.ts.map +1 -0
  8. package/dist/extract-data-edges.js +95 -0
  9. package/dist/extract-data-edges.js.map +1 -0
  10. package/dist/index.d.ts +13 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +17 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/io-from-schema.d.ts +36 -0
  15. package/dist/io-from-schema.d.ts.map +1 -0
  16. package/dist/io-from-schema.js +136 -0
  17. package/dist/io-from-schema.js.map +1 -0
  18. package/dist/layout.d.ts +7 -0
  19. package/dist/layout.d.ts.map +1 -0
  20. package/dist/layout.js +67 -0
  21. package/dist/layout.js.map +1 -0
  22. package/dist/ports-from-zod.d.ts +28 -0
  23. package/dist/ports-from-zod.d.ts.map +1 -0
  24. package/dist/ports-from-zod.js +169 -0
  25. package/dist/ports-from-zod.js.map +1 -0
  26. package/dist/progress.d.ts +19 -0
  27. package/dist/progress.d.ts.map +1 -0
  28. package/dist/progress.js +23 -0
  29. package/dist/progress.js.map +1 -0
  30. package/dist/types.d.ts +133 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/types.js +2 -0
  33. package/dist/types.js.map +1 -0
  34. package/dist/value-schema-hint.d.ts +31 -0
  35. package/dist/value-schema-hint.d.ts.map +1 -0
  36. package/dist/value-schema-hint.js +156 -0
  37. package/dist/value-schema-hint.js.map +1 -0
  38. package/dist/workflow-to-reactflow.d.ts +11 -0
  39. package/dist/workflow-to-reactflow.d.ts.map +1 -0
  40. package/dist/workflow-to-reactflow.js +207 -0
  41. package/dist/workflow-to-reactflow.js.map +1 -0
  42. package/package.json +36 -0
@@ -0,0 +1,207 @@
1
+ import { extractDataEdges } from "./extract-data-edges.js";
2
+ import { acceptsReactFlowNode, jsonSchemaObjectProperties, returnsReactFlowNode, WORKFLOW_ACCEPTS_NODE_ID, WORKFLOW_RETURNS_NODE_ID, } from "./io-from-schema.js";
3
+ import { layoutReactFlowDocument } from "./layout.js";
4
+ import { portsForStep, ensureOutputPort } from "./ports-from-zod.js";
5
+ function isStepNode(node) {
6
+ return !node.type || node.type === "step";
7
+ }
8
+ function connectControl(edges, fromIds, toIds, prefix) {
9
+ if (fromIds.length === 0 || toIds.length === 0)
10
+ return;
11
+ let i = 0;
12
+ for (const from of fromIds) {
13
+ for (const to of toIds) {
14
+ edges.push({
15
+ id: `ctrl-${prefix}-${i++}-${from}-${to}`,
16
+ source: from,
17
+ target: to,
18
+ data: { kind: "control" },
19
+ });
20
+ }
21
+ }
22
+ }
23
+ function renderStep(node, registry) {
24
+ const ports = portsForStep(node, registry);
25
+ const data = {
26
+ label: node.label ?? node.id,
27
+ uses: String(node.uses),
28
+ ...(node.as !== undefined ? { as: node.as } : {}),
29
+ inputs: ports.inputs,
30
+ outputs: ports.outputs,
31
+ };
32
+ const rfNode = {
33
+ id: node.id,
34
+ type: "ecp-step",
35
+ position: { x: 0, y: 0 },
36
+ data,
37
+ };
38
+ return { nodes: [rfNode], edges: [], entryIds: [node.id], exitIds: [node.id] };
39
+ }
40
+ /**
41
+ * Flatten structural containers (parallel / branch / loop) to step nodes only.
42
+ * The React Flow canvas is the workflow surface — no subgroup wrappers.
43
+ */
44
+ function renderParallel(node, registry) {
45
+ const nodes = [];
46
+ const edges = [];
47
+ const entryIds = [];
48
+ const exitIds = [];
49
+ node.branches.forEach((branch) => {
50
+ const seg = renderNodes(branch, registry);
51
+ nodes.push(...seg.nodes);
52
+ edges.push(...seg.edges);
53
+ entryIds.push(...seg.entryIds);
54
+ exitIds.push(...seg.exitIds);
55
+ });
56
+ return { nodes, edges, entryIds, exitIds };
57
+ }
58
+ function renderBranch(node, registry) {
59
+ const nodes = [];
60
+ const edges = [];
61
+ const entryIds = [];
62
+ const exitIds = [];
63
+ for (const arm of node.branches) {
64
+ const seg = renderNodes(arm.steps, registry);
65
+ nodes.push(...seg.nodes);
66
+ edges.push(...seg.edges);
67
+ entryIds.push(...seg.entryIds);
68
+ exitIds.push(...seg.exitIds);
69
+ }
70
+ return { nodes, edges, entryIds, exitIds };
71
+ }
72
+ function renderLoop(node, registry) {
73
+ return renderNodes(node.steps, registry);
74
+ }
75
+ function renderNode(node, registry) {
76
+ if (isStepNode(node))
77
+ return renderStep(node, registry);
78
+ if (node.type === "parallel")
79
+ return renderParallel(node, registry);
80
+ if (node.type === "branch")
81
+ return renderBranch(node, registry);
82
+ return renderLoop(node, registry);
83
+ }
84
+ function renderNodes(nodes, registry) {
85
+ const outNodes = [];
86
+ const outEdges = [];
87
+ let entryIds = [];
88
+ let exitIds = [];
89
+ nodes.forEach((node, index) => {
90
+ const segment = renderNode(node, registry);
91
+ outNodes.push(...segment.nodes);
92
+ outEdges.push(...segment.edges);
93
+ if (segment.entryIds.length === 0)
94
+ return;
95
+ if (entryIds.length === 0) {
96
+ entryIds = segment.entryIds;
97
+ }
98
+ else {
99
+ connectControl(outEdges, exitIds, segment.entryIds, `seq-root-${index}`);
100
+ }
101
+ exitIds = segment.exitIds;
102
+ });
103
+ return { nodes: outNodes, edges: outEdges, entryIds, exitIds };
104
+ }
105
+ function acceptsPropertyKeys(manifest) {
106
+ return new Set(jsonSchemaObjectProperties(manifest.workflow.accepts).map((field) => field.name));
107
+ }
108
+ function sourceHandleForStep(data) {
109
+ return data.outputs[0]?.id ?? "output";
110
+ }
111
+ /**
112
+ * Edges from steps whose `.as` matches a `returns` property, or from Inputs
113
+ * when the property is an `accepts` key, to the Outputs node.
114
+ */
115
+ function extractReturnsEdges(manifest, nodes) {
116
+ const returnsNode = nodes.find((n) => n.id === WORKFLOW_RETURNS_NODE_ID && n.type === "ecp-io");
117
+ if (!returnsNode)
118
+ return [];
119
+ const fields = jsonSchemaObjectProperties(manifest.workflow.returns);
120
+ const acceptsKeys = acceptsPropertyKeys(manifest);
121
+ const asToStep = new Map();
122
+ for (const node of nodes) {
123
+ if (node.type !== "ecp-step")
124
+ continue;
125
+ const data = node.data;
126
+ if (data.as)
127
+ asToStep.set(data.as, node);
128
+ }
129
+ const edges = [];
130
+ let i = 0;
131
+ for (const field of fields) {
132
+ const stepSource = asToStep.get(field.name);
133
+ if (stepSource && stepSource.type === "ecp-step") {
134
+ const data = stepSource.data;
135
+ edges.push({
136
+ id: `data-returns-${i++}-${stepSource.id}-${field.name}`,
137
+ source: stepSource.id,
138
+ target: WORKFLOW_RETURNS_NODE_ID,
139
+ sourceHandle: sourceHandleForStep(data),
140
+ targetHandle: field.name,
141
+ data: { kind: "data" },
142
+ });
143
+ continue;
144
+ }
145
+ if (!acceptsKeys.has(field.name))
146
+ continue;
147
+ edges.push({
148
+ id: `data-returns-${i++}-${WORKFLOW_ACCEPTS_NODE_ID}-${field.name}`,
149
+ source: WORKFLOW_ACCEPTS_NODE_ID,
150
+ target: WORKFLOW_RETURNS_NODE_ID,
151
+ sourceHandle: field.name,
152
+ targetHandle: field.name,
153
+ data: { kind: "data" },
154
+ });
155
+ }
156
+ return edges;
157
+ }
158
+ /**
159
+ * Convert a workflow manifest into a positioned React Flow document.
160
+ * Emits step nodes, projected Inputs / Outputs (`ecp-io`), and **data** edges.
161
+ * Sequential control edges are used internally for layout, then discarded.
162
+ * @category Encoding
163
+ */
164
+ export function workflowToReactFlow(manifest, registry, options) {
165
+ const acceptsNode = acceptsReactFlowNode(manifest);
166
+ const returnsNode = returnsReactFlowNode(manifest);
167
+ const body = manifest.steps.length === 0
168
+ ? { nodes: [], edges: [], entryIds: [], exitIds: [] }
169
+ : renderNodes(manifest.steps, registry);
170
+ const nodes = [acceptsNode, ...body.nodes];
171
+ if (returnsNode)
172
+ nodes.push(returnsNode);
173
+ const dataEdges = extractDataEdges(manifest.steps, acceptsPropertyKeys(manifest));
174
+ const returnsEdges = extractReturnsEdges(manifest, nodes);
175
+ const allDataEdges = [...dataEdges, ...returnsEdges];
176
+ for (const edge of allDataEdges) {
177
+ if (!edge.sourceHandle)
178
+ continue;
179
+ const source = nodes.find((n) => n.id === edge.source);
180
+ if (!source || source.type !== "ecp-step")
181
+ continue;
182
+ const data = source.data;
183
+ ensureOutputPort(data.outputs, edge.sourceHandle);
184
+ }
185
+ const layoutEdges = [...body.edges, ...allDataEdges];
186
+ if (body.entryIds.length > 0) {
187
+ connectControl(layoutEdges, [acceptsNode.id], body.entryIds, "io-accepts");
188
+ }
189
+ else if (returnsNode) {
190
+ connectControl(layoutEdges, [acceptsNode.id], [returnsNode.id], "io-empty");
191
+ }
192
+ if (returnsNode && body.exitIds.length > 0) {
193
+ connectControl(layoutEdges, body.exitIds, [returnsNode.id], "io-returns");
194
+ }
195
+ const doc = {
196
+ nodes,
197
+ // Control edges rank sequential / parallel steps for dagre; they are not
198
+ // property mappings and are stripped from the published document below.
199
+ edges: layoutEdges,
200
+ };
201
+ const laid = layoutReactFlowDocument(doc, options);
202
+ return {
203
+ nodes: laid.nodes,
204
+ edges: laid.edges.filter((edge) => edge.data.kind === "data"),
205
+ };
206
+ }
207
+ //# sourceMappingURL=workflow-to-reactflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-to-reactflow.js","sourceRoot":"","sources":["../src/workflow-to-reactflow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAgBpE,SAAS,UAAU,CAAC,IAAkB;IACpC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AAC3C,CAAC;AAED,SAAS,cAAc,CACrB,KAAsB,EACtB,OAAiB,EACjB,KAAe,EACf,MAAc;IAEd,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IACtD,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,QAAQ,MAAM,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE;gBACzC,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aAC1B,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAc,EAAE,QAA8B;IAChE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC1C,MAAM,IAAI,GAAsB;QAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE;QAC5B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAA;IACD,MAAM,MAAM,GAAkB;QAC5B,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACxB,IAAI;KACL,CAAA;IACD,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AAChF,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CACrB,IAAiD,EACjD,QAA8B;IAE9B,MAAM,KAAK,GAAoB,EAAE,CAAA;IACjC,MAAM,KAAK,GAAoB,EAAE,CAAA;IACjC,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;QACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AAC5C,CAAC;AAED,SAAS,YAAY,CACnB,IAA+C,EAC/C,QAA8B;IAE9B,MAAM,KAAK,GAAoB,EAAE,CAAA;IACjC,MAAM,KAAK,GAAoB,EAAE,CAAA;IACjC,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC5C,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;QACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AAC5C,CAAC;AAED,SAAS,UAAU,CACjB,IAA6C,EAC7C,QAA8B;IAE9B,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,IAAkB,EAAE,QAA8B;IACpE,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACvD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACnE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC/D,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,WAAW,CAAC,KAAqB,EAAE,QAA8B;IACxE,MAAM,QAAQ,GAAoB,EAAE,CAAA;IACpC,MAAM,QAAQ,GAAoB,EAAE,CAAA;IACpC,IAAI,QAAQ,GAAa,EAAE,CAAA;IAC3B,IAAI,OAAO,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAEzC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,KAAK,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AAChE,CAAC;AAED,SAAS,mBAAmB,CAAC,QAA0B;IACrD,OAAO,IAAI,GAAG,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AAClG,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAuB;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,QAAQ,CAAA;AACxC,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,QAA0B,EAAE,KAAsB;IAC7E,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,wBAAwB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;IAC/F,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAA;IAC3B,MAAM,MAAM,GAAG,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACpE,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAA;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,SAAQ;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAyB,CAAA;QAC3C,IAAI,IAAI,CAAC,EAAE;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC;IACD,MAAM,KAAK,GAAoB,EAAE,CAAA;IACjC,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAyB,CAAA;YACjD,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,gBAAgB,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE;gBACxD,MAAM,EAAE,UAAU,CAAC,EAAE;gBACrB,MAAM,EAAE,wBAAwB;gBAChC,YAAY,EAAE,mBAAmB,CAAC,IAAI,CAAC;gBACvC,YAAY,EAAE,KAAK,CAAC,IAAI;gBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aACvB,CAAC,CAAA;YACF,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC1C,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,gBAAgB,CAAC,EAAE,IAAI,wBAAwB,IAAI,KAAK,CAAC,IAAI,EAAE;YACnE,MAAM,EAAE,wBAAwB;YAChC,MAAM,EAAE,wBAAwB;YAChC,YAAY,EAAE,KAAK,CAAC,IAAI;YACxB,YAAY,EAAE,KAAK,CAAC,IAAI;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACvB,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA0B,EAC1B,QAAmB,EACnB,OAAgC;IAEhC,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAClD,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAClD,MAAM,IAAI,GACR,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QACzB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAqB,EAAE,KAAK,EAAE,EAAqB,EAAE,QAAQ,EAAE,EAAc,EAAE,OAAO,EAAE,EAAc,EAAE;QACnH,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAE3C,MAAM,KAAK,GAAoB,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3D,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAExC,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjF,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACzD,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC,CAAA;IAEpD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,SAAQ;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAA;QACtD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;YAAE,SAAQ;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAyB,CAAA;QAC7C,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,WAAW,GAAoB,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,YAAY,CAAC,CAAA;IACrE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,cAAc,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAC5E,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,cAAc,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAA;IAC7E,CAAC;IACD,IAAI,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,GAAG,GAAsB;QAC7B,KAAK;QACL,yEAAyE;QACzE,wEAAwE;QACxE,KAAK,EAAE,WAAW;KACnB,CAAA;IACD,MAAM,IAAI,GAAG,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAClD,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;KAC9D,CAAA;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@executioncontrolprotocol/format-reactflow",
3
+ "version": "0.12.0",
4
+ "description": "ECP React Flow graph encode extension with run-progress hooks",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc -b"
21
+ },
22
+ "dependencies": {
23
+ "@dagrejs/dagre": "^1.1.4"
24
+ },
25
+ "peerDependencies": {
26
+ "@executioncontrolprotocol/core": "^0.12.0",
27
+ "@executioncontrolprotocol/types": "^0.12.0",
28
+ "zod": "^3.24.0"
29
+ },
30
+ "devDependencies": {
31
+ "@executioncontrolprotocol/core": "0.12.0",
32
+ "@executioncontrolprotocol/types": "0.12.0",
33
+ "typescript": "^5.7.0",
34
+ "zod": "^3.24.0"
35
+ }
36
+ }