@particle-academy/fancy-flow 0.75.0 → 0.77.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 (46) hide show
  1. package/dist/{chunk-2H5H2DDP.js → chunk-44VXYZ4M.js} +4 -4
  2. package/dist/{chunk-2H5H2DDP.js.map → chunk-44VXYZ4M.js.map} +1 -1
  3. package/dist/{chunk-4BPCA3ZO.js → chunk-66JAEWPP.js} +3 -3
  4. package/dist/{chunk-4BPCA3ZO.js.map → chunk-66JAEWPP.js.map} +1 -1
  5. package/dist/{chunk-LKEDPVR3.js → chunk-KFC3BURT.js} +3 -3
  6. package/dist/{chunk-LKEDPVR3.js.map → chunk-KFC3BURT.js.map} +1 -1
  7. package/dist/{chunk-XZFLPKO2.js → chunk-MMCHYY6B.js} +3 -3
  8. package/dist/{chunk-XZFLPKO2.js.map → chunk-MMCHYY6B.js.map} +1 -1
  9. package/dist/{chunk-T7E7QPHI.js → chunk-OOQ2MMBE.js} +4 -4
  10. package/dist/{chunk-T7E7QPHI.js.map → chunk-OOQ2MMBE.js.map} +1 -1
  11. package/dist/{chunk-ZBHIEKCN.js → chunk-X2UHP2S5.js} +3 -3
  12. package/dist/{chunk-ZBHIEKCN.js.map → chunk-X2UHP2S5.js.map} +1 -1
  13. package/dist/{chunk-W7DMO3H7.js → chunk-YNKOEQLI.js} +48 -7
  14. package/dist/chunk-YNKOEQLI.js.map +1 -0
  15. package/dist/durable.cjs +42 -37
  16. package/dist/durable.cjs.map +1 -1
  17. package/dist/durable.js +1 -2
  18. package/dist/durable.js.map +1 -1
  19. package/dist/engine.cjs +45 -40
  20. package/dist/engine.cjs.map +1 -1
  21. package/dist/engine.js +4 -6
  22. package/dist/engine.js.map +1 -1
  23. package/dist/index.cjs +45 -40
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.js +12 -13
  26. package/dist/index.js.map +1 -1
  27. package/dist/registry.cjs +45 -40
  28. package/dist/registry.cjs.map +1 -1
  29. package/dist/registry.js +2 -3
  30. package/dist/runtime.cjs +35 -4
  31. package/dist/runtime.cjs.map +1 -1
  32. package/dist/runtime.js +3 -3
  33. package/dist/schema.cjs +35 -4
  34. package/dist/schema.cjs.map +1 -1
  35. package/dist/schema.js +3 -3
  36. package/dist/screens.cjs +35 -4
  37. package/dist/screens.cjs.map +1 -1
  38. package/dist/screens.js +4 -5
  39. package/dist/screens.js.map +1 -1
  40. package/dist/ux.cjs +35 -4
  41. package/dist/ux.cjs.map +1 -1
  42. package/dist/ux.js +1 -1
  43. package/package.json +2 -2
  44. package/dist/chunk-UEOE6B52.js +0 -39
  45. package/dist/chunk-UEOE6B52.js.map +0 -1
  46. package/dist/chunk-W7DMO3H7.js.map +0 -1
package/dist/runtime.js CHANGED
@@ -1,7 +1,7 @@
1
- export { applyOutputsToNodes, applyStatusesToNodes, createHistory, useFlowHistory, useFlowRun, useFlowState } from './chunk-ZBHIEKCN.js';
2
- export { runCohort } from './chunk-LKEDPVR3.js';
1
+ export { applyOutputsToNodes, applyStatusesToNodes, createHistory, useFlowHistory, useFlowRun, useFlowState } from './chunk-X2UHP2S5.js';
2
+ export { runCohort } from './chunk-KFC3BURT.js';
3
3
  import './chunk-OWENS2H5.js';
4
- export { RunIdentity, escapeSegment, runFlow } from './chunk-W7DMO3H7.js';
4
+ export { RunIdentity, escapeSegment, runFlow } from './chunk-YNKOEQLI.js';
5
5
  import './chunk-2QXKDLGT.js';
6
6
  //# sourceMappingURL=runtime.js.map
7
7
  //# sourceMappingURL=runtime.js.map
package/dist/schema.cjs CHANGED
@@ -523,8 +523,9 @@ function possiblePortIds(node) {
523
523
  if (!kind) return ["out"];
524
524
  const config = nodeConfig(node);
525
525
  const representative = typeof kind.outputs === "function" && !configDeclaresPorts(kind.name, config);
526
- const ids = (resolvePortSpec(kind.outputs, representative ? defaultConfigFor(kind) : config) ?? []).map((p) => p.id);
527
- return ids.length > 0 ? ids : ["out"];
526
+ const resolved = resolvePortSpec(kind.outputs, representative ? defaultConfigFor(kind) : config);
527
+ if (resolved === void 0) return ["out"];
528
+ return resolved.map((p) => p.id);
528
529
  }
529
530
  function configDeclaresPorts(kindName, config) {
530
531
  const bare = kindName.startsWith("@") ? kindName.slice(kindName.lastIndexOf("/") + 1) : kindName;
@@ -850,7 +851,7 @@ function activatedPorts(node, result) {
850
851
  }
851
852
  const kind = getNodeKind(node.data?.kind ?? node.type ?? "") ?? void 0;
852
853
  const declared = resolveNodePorts(node, kind).outputs?.map((p) => p.id);
853
- return { ports: declared?.length ? declared : ["out"], value: result };
854
+ return { ports: declared ?? ["out"], value: result };
854
855
  }
855
856
  function portValueOf(activated, portId) {
856
857
  return activated.values && Object.prototype.hasOwnProperty.call(activated.values, portId) ? activated.values[portId] : activated.value;
@@ -864,6 +865,32 @@ function announce(onEvent, node, phase) {
864
865
  onEvent({ type: "node-message", nodeId: node.id, phase, message });
865
866
  }
866
867
 
868
+ // src/registry/pause.ts
869
+ var PAUSE_PREFIX = "fancy-flow:pause:";
870
+ var LEGACY_PAUSE_PREFIXES = [
871
+ ["awaiting-approval:", "approval"],
872
+ ["awaiting-input:", "input"]
873
+ ];
874
+ function decodePause(reason) {
875
+ if (typeof reason !== "string") return null;
876
+ if (reason.startsWith(PAUSE_PREFIX)) {
877
+ const body = reason.slice(PAUSE_PREFIX.length);
878
+ try {
879
+ const parsed = JSON.parse(body);
880
+ if (typeof parsed?.nodeId !== "string" || typeof parsed?.awaiting !== "string") return null;
881
+ return "detail" in parsed ? { nodeId: parsed.nodeId, awaiting: parsed.awaiting, detail: parsed.detail } : { nodeId: parsed.nodeId, awaiting: parsed.awaiting };
882
+ } catch {
883
+ return null;
884
+ }
885
+ }
886
+ for (const [prefix, awaiting] of LEGACY_PAUSE_PREFIXES) {
887
+ if (reason.startsWith(prefix)) {
888
+ return { nodeId: reason.slice(prefix.length), awaiting };
889
+ }
890
+ }
891
+ return null;
892
+ }
893
+
867
894
  // src/registry/subflow.ts
868
895
  var DEFAULT_MAX_DEPTH = 8;
869
896
  function subflowMode(config) {
@@ -945,7 +972,11 @@ var subflowExecutor = async (ctx) => {
945
972
  }
946
973
  );
947
974
  if (!result.ok) {
948
- ctx.abort(`subflow "${ref}" failed: ${result.error ?? "unknown error"}`);
975
+ const reason = result.error ?? "unknown error";
976
+ if (decodePause(reason)) {
977
+ ctx.abort(reason);
978
+ }
979
+ ctx.abort(`subflow "${ref}" failed: ${reason}`);
949
980
  }
950
981
  if (mode === "stream") {
951
982
  return { __port: "stream", value: result.outputs };