@particle-academy/fancy-flow 0.74.1 → 0.76.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 (41) hide show
  1. package/dist/{chunk-2GU3V2ZD.js → chunk-4KYW5BT4.js} +4 -4
  2. package/dist/{chunk-2GU3V2ZD.js.map → chunk-4KYW5BT4.js.map} +1 -1
  3. package/dist/{chunk-VAF2SWTC.js → chunk-CYVVUKHH.js} +3 -3
  4. package/dist/{chunk-VAF2SWTC.js.map → chunk-CYVVUKHH.js.map} +1 -1
  5. package/dist/{chunk-K7KO3UJ3.js → chunk-G4GKDJG5.js} +3 -3
  6. package/dist/{chunk-K7KO3UJ3.js.map → chunk-G4GKDJG5.js.map} +1 -1
  7. package/dist/{chunk-3RXQGYGH.js → chunk-M34S7XUM.js} +3 -3
  8. package/dist/{chunk-3RXQGYGH.js.map → chunk-M34S7XUM.js.map} +1 -1
  9. package/dist/{chunk-7DJ56PUA.js → chunk-PXVISCSC.js} +4 -4
  10. package/dist/{chunk-7DJ56PUA.js.map → chunk-PXVISCSC.js.map} +1 -1
  11. package/dist/{chunk-EX34GCKK.js → chunk-V2657EQG.js} +22 -9
  12. package/dist/chunk-V2657EQG.js.map +1 -0
  13. package/dist/{chunk-GQ5LEA7Q.js → chunk-ZKAPSUTL.js} +3 -3
  14. package/dist/{chunk-GQ5LEA7Q.js.map → chunk-ZKAPSUTL.js.map} +1 -1
  15. package/dist/durable.cjs +20 -7
  16. package/dist/durable.cjs.map +1 -1
  17. package/dist/durable.js +1 -1
  18. package/dist/engine.cjs +20 -7
  19. package/dist/engine.cjs.map +1 -1
  20. package/dist/engine.js +4 -4
  21. package/dist/index.cjs +20 -7
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.js +12 -12
  24. package/dist/registry.cjs +20 -7
  25. package/dist/registry.cjs.map +1 -1
  26. package/dist/registry.js +2 -2
  27. package/dist/runtime.cjs +20 -7
  28. package/dist/runtime.cjs.map +1 -1
  29. package/dist/runtime.js +3 -3
  30. package/dist/schema.cjs +20 -7
  31. package/dist/schema.cjs.map +1 -1
  32. package/dist/schema.js +3 -3
  33. package/dist/screens.cjs +20 -7
  34. package/dist/screens.cjs.map +1 -1
  35. package/dist/screens.js +4 -4
  36. package/dist/ux.cjs +21 -8
  37. package/dist/ux.cjs.map +1 -1
  38. package/dist/ux.js +2 -2
  39. package/dist/ux.js.map +1 -1
  40. package/package.json +2 -2
  41. package/dist/chunk-EX34GCKK.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,19 +1,19 @@
1
- import { removeNodes, removeEdges, cloneSubgraph, alignNodes, distributeNodes, reconnectEdge, assignToLane, removeFromLane, duplicateNode, setEdgeLabel, FlowCanvas } from './chunk-2GU3V2ZD.js';
2
- export { ActionNode, DecisionNode, FlowCanvas, FlowViewer, NodeShell, OutputNode, SubgraphNode, TriggerNode, alignNodes, cloneSubgraph, defaultNodeTypes, distributeNodes, reconnectEdge } from './chunk-2GU3V2ZD.js';
3
- import { useFlowState, useFlowRun, useFlowHistory, applyOutputsToNodes, applyStatusesToNodes } from './chunk-GQ5LEA7Q.js';
4
- export { applyOutputsToNodes, applyStatusesToNodes, createHistory, useFlowHistory, useFlowRun, useFlowState } from './chunk-GQ5LEA7Q.js';
5
- export { runCohort } from './chunk-K7KO3UJ3.js';
6
- import { buildNodeTypes, FlowEditorProvider, registerBuiltinKinds } from './chunk-3RXQGYGH.js';
7
- export { ANY_PORT_TYPE, BUILTIN_KINDS, LaneNode, NoteNode, RegistryNode, buildNodeTypes, createConnectionValidator, defaultPortCompatibility, registerBuiltinKinds, useFlowEditor, useFlowEditorOptional } from './chunk-3RXQGYGH.js';
1
+ import { removeNodes, removeEdges, cloneSubgraph, alignNodes, distributeNodes, reconnectEdge, assignToLane, removeFromLane, duplicateNode, setEdgeLabel, FlowCanvas } from './chunk-4KYW5BT4.js';
2
+ export { ActionNode, DecisionNode, FlowCanvas, FlowViewer, NodeShell, OutputNode, SubgraphNode, TriggerNode, alignNodes, cloneSubgraph, defaultNodeTypes, distributeNodes, reconnectEdge } from './chunk-4KYW5BT4.js';
3
+ import { useFlowState, useFlowRun, useFlowHistory, applyOutputsToNodes, applyStatusesToNodes } from './chunk-ZKAPSUTL.js';
4
+ export { applyOutputsToNodes, applyStatusesToNodes, createHistory, useFlowHistory, useFlowRun, useFlowState } from './chunk-ZKAPSUTL.js';
5
+ export { runCohort } from './chunk-G4GKDJG5.js';
6
+ import { buildNodeTypes, FlowEditorProvider, registerBuiltinKinds } from './chunk-M34S7XUM.js';
7
+ export { ANY_PORT_TYPE, BUILTIN_KINDS, LaneNode, NoteNode, RegistryNode, buildNodeTypes, createConnectionValidator, defaultPortCompatibility, registerBuiltinKinds, useFlowEditor, useFlowEditorOptional } from './chunk-M34S7XUM.js';
8
8
  import { getRichInputAdapter } from './chunk-F5RPRB7A.js';
9
9
  export { RichInputPreview, getRichInputAdapter, isRichInputEnabled, onRichInputAdapterChanged, registerRichInputAdapter } from './chunk-F5RPRB7A.js';
10
10
  import { ReactFlowProvider, useReactFlow, addEdge, applyEdgeChanges, applyNodeChanges, Position, Handle } from './chunk-OWENS2H5.js';
11
11
  export { LEGACY_PAUSE_PREFIXES, PAUSE_PREFIX, decodePause, encodePause, isPause, pauseForHuman } from './chunk-UEOE6B52.js';
12
- import { workflowToBlob, importWorkflow, exportWorkflow } from './chunk-7DJ56PUA.js';
13
- export { WORKFLOW_SCHEMA_URL, WORKFLOW_SCHEMA_VERSION, exportWorkflow, importWorkflow, migrateSchema, workflowToBlob } from './chunk-7DJ56PUA.js';
14
- import './chunk-VAF2SWTC.js';
15
- import { humanInputFields, onNodeKindsChanged, listNodeKinds, getNodeKind, defaultConfigFor, ensureBuiltinKinds, validateConfig, categoryAccent, availableVariables, baseVariables, describeExpressionGrammar } from './chunk-EX34GCKK.js';
16
- export { UnresolvedPathError, applyKindSchemaOverlay, availableVariables, baseVariables, categoryAccent, clearKindSchemaOverlays, clearNodeKindOverrides, defaultConfigFor, describeExpressionGrammar, ensureBuiltinKinds, evaluateConfig, evaluateExpression, getNodeKind, listNodeKinds, onNodeKindsChanged, outputFieldsFor, overrideNodeKind, registerNodeKind, resolveNodePorts, resolvePath, resolvePortSpec, runFlow, text, truthy, tryResolvePath, unregisterNodeKind, validateConfig } from './chunk-EX34GCKK.js';
12
+ import { workflowToBlob, importWorkflow, exportWorkflow } from './chunk-PXVISCSC.js';
13
+ export { WORKFLOW_SCHEMA_URL, WORKFLOW_SCHEMA_VERSION, exportWorkflow, importWorkflow, migrateSchema, workflowToBlob } from './chunk-PXVISCSC.js';
14
+ import './chunk-CYVVUKHH.js';
15
+ import { humanInputFields, onNodeKindsChanged, listNodeKinds, getNodeKind, defaultConfigFor, ensureBuiltinKinds, validateConfig, categoryAccent, availableVariables, baseVariables, describeExpressionGrammar } from './chunk-V2657EQG.js';
16
+ export { UnresolvedPathError, applyKindSchemaOverlay, availableVariables, baseVariables, categoryAccent, clearKindSchemaOverlays, clearNodeKindOverrides, defaultConfigFor, describeExpressionGrammar, ensureBuiltinKinds, evaluateConfig, evaluateExpression, getNodeKind, listNodeKinds, onNodeKindsChanged, outputFieldsFor, overrideNodeKind, registerNodeKind, resolveNodePorts, resolvePath, resolvePortSpec, runFlow, text, truthy, tryResolvePath, unregisterNodeKind, validateConfig } from './chunk-V2657EQG.js';
17
17
  import './chunk-2QXKDLGT.js';
18
18
  import { forwardRef, useState, useMemo, useEffect, useCallback, useRef, useImperativeHandle, useId, memo } from 'react';
19
19
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
package/dist/registry.cjs CHANGED
@@ -583,8 +583,9 @@ function possiblePortIds(node) {
583
583
  if (!kind) return ["out"];
584
584
  const config = nodeConfig(node);
585
585
  const representative = typeof kind.outputs === "function" && !configDeclaresPorts(kind.name, config);
586
- const ids = (resolvePortSpec(kind.outputs, representative ? defaultConfigFor(kind) : config) ?? []).map((p) => p.id);
587
- return ids.length > 0 ? ids : ["out"];
586
+ const resolved = resolvePortSpec(kind.outputs, representative ? defaultConfigFor(kind) : config);
587
+ if (resolved === void 0) return ["out"];
588
+ return resolved.map((p) => p.id);
588
589
  }
589
590
  function configDeclaresPorts(kindName, config) {
590
591
  const bare = kindName.startsWith("@") ? kindName.slice(kindName.lastIndexOf("/") + 1) : kindName;
@@ -724,8 +725,9 @@ async function runFlow(graph, executors, onEvent = () => {
724
725
  outputs[node.id] = stored;
725
726
  const activated = activatedPorts(node, stored);
726
727
  for (const portId of activated.ports) {
727
- portValues.set(`${node.id}:${portId}`, activated.value);
728
- onEvent({ type: "node-output", nodeId: node.id, portId, value: activated.value });
728
+ const value = portValueOf(activated, portId);
729
+ portValues.set(`${node.id}:${portId}`, value);
730
+ onEvent({ type: "node-output", nodeId: node.id, portId, value });
729
731
  }
730
732
  completed.add(node.id);
731
733
  onEvent({ type: "node-status", nodeId: node.id, status: "done", text: "resumed" });
@@ -788,8 +790,9 @@ async function runFlow(graph, executors, onEvent = () => {
788
790
  outputs[node.id] = result;
789
791
  const activated = activatedPorts(node, result);
790
792
  for (const portId of activated.ports) {
791
- portValues.set(`${node.id}:${portId}`, activated.value);
792
- onEvent({ type: "node-output", nodeId: node.id, portId, value: activated.value });
793
+ const value = portValueOf(activated, portId);
794
+ portValues.set(`${node.id}:${portId}`, value);
795
+ onEvent({ type: "node-output", nodeId: node.id, portId, value });
793
796
  }
794
797
  completed.add(node.id);
795
798
  onEvent({ type: "node-status", nodeId: node.id, status: "done" });
@@ -895,13 +898,23 @@ function activatedPorts(node, result) {
895
898
  if (typeof r.__port === "string") {
896
899
  return { ports: [r.__port], value: r.value };
897
900
  }
901
+ if (Array.isArray(r.__ports)) {
902
+ return { ports: r.__ports.filter((p) => typeof p === "string"), value: r.value };
903
+ }
904
+ if (r.__ports && typeof r.__ports === "object") {
905
+ const values = r.__ports;
906
+ return { ports: Object.keys(values), value: r.value, values };
907
+ }
898
908
  if (typeof r.branch === "string") {
899
909
  return { ports: [r.branch], value: Object.prototype.hasOwnProperty.call(r, "value") ? r.value : r };
900
910
  }
901
911
  }
902
912
  const kind = getNodeKind(node.data?.kind ?? node.type ?? "") ?? void 0;
903
913
  const declared = resolveNodePorts(node, kind).outputs?.map((p) => p.id);
904
- return { ports: declared?.length ? declared : ["out"], value: result };
914
+ return { ports: declared ?? ["out"], value: result };
915
+ }
916
+ function portValueOf(activated, portId) {
917
+ return activated.values && Object.prototype.hasOwnProperty.call(activated.values, portId) ? activated.values[portId] : activated.value;
905
918
  }
906
919
  function announce(onEvent, node, phase) {
907
920
  const data = node.data;