@particle-academy/fancy-flow 0.16.0 → 0.18.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.
package/dist/registry.js CHANGED
@@ -1,4 +1,4 @@
1
- export { BUILTIN_KINDS, DEFAULT_MAX_DEPTH, RegistryNode, buildNodeTypes, declaredRoutes, llmRouterExecutor as llmBranchExecutor, llmRouterExecutor, registerBuiltinKinds, resolveFallbackPort, subflowExecutor, subflowMode, subflowPorts } from './chunk-M2QTDA3B.js';
1
+ export { ANY_PORT_TYPE, BUILTIN_KINDS, DEFAULT_MAX_DEPTH, RegistryNode, buildNodeTypes, createConnectionValidator, declaredRoutes, defaultPortCompatibility, llmRouterExecutor as llmBranchExecutor, llmRouterExecutor, registerBuiltinKinds, resolveFallbackPort, subflowExecutor, subflowMode, subflowPorts } from './chunk-FSC64BPD.js';
2
2
  import './chunk-NF6NPY5N.js';
3
3
  export { LEGACY_PAUSE_PREFIXES, PAUSE_PREFIX, decodePause, encodePause, isPause, pauseForHuman } from './chunk-UEOE6B52.js';
4
4
  import './chunk-L4AX73Q6.js';
package/dist/styles.css CHANGED
@@ -1226,6 +1226,33 @@ svg.react-flow__connectionline {
1226
1226
  .dark .ff-panel__divider {
1227
1227
  border-top-color: #3f3f46;
1228
1228
  }
1229
+ .ff-panel__actions {
1230
+ margin-top: auto;
1231
+ padding-top: 12px;
1232
+ }
1233
+ .ff-panel__delete {
1234
+ width: 100%;
1235
+ padding: 7px 10px;
1236
+ font-size: 13px;
1237
+ font-weight: 500;
1238
+ color: #dc2626;
1239
+ background: transparent;
1240
+ border: 1px solid #fca5a5;
1241
+ border-radius: 6px;
1242
+ cursor: pointer;
1243
+ }
1244
+ .ff-panel__delete:hover {
1245
+ background: #fef2f2;
1246
+ border-color: #dc2626;
1247
+ }
1248
+ .dark .ff-panel__delete {
1249
+ color: #f87171;
1250
+ border-color: #7f1d1d;
1251
+ }
1252
+ .dark .ff-panel__delete:hover {
1253
+ background: rgba(127, 29, 29, 0.25);
1254
+ border-color: #f87171;
1255
+ }
1229
1256
  .ff-panel__field {
1230
1257
  display: flex;
1231
1258
  flex-direction: column;
@@ -1 +1 @@
1
- {"version":3,"sources":["../node_modules/@xyflow/react/dist/style.css","../src/styles.css"],"sourcesContent":["/* this gets exported as style.css and can be used for the default theming */\n/* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */\n.react-flow {\n direction: ltr;\n\n --xy-edge-stroke-default: #b1b1b7;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #555;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);\n\n --xy-minimap-background-color-default: #fff;\n --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #e2e2e2;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: transparent;\n --xy-background-pattern-dots-color-default: #91919a;\n --xy-background-pattern-lines-color-default: #eee;\n --xy-background-pattern-cross-color-default: #e2e2e2;\n background-color: var(--xy-background-color, var(--xy-background-color-default));\n --xy-node-color-default: inherit;\n --xy-node-border-default: 1px solid #1a192b;\n --xy-node-background-color-default: #fff;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;\n --xy-node-border-radius-default: 3px;\n\n --xy-handle-background-color-default: #1a192b;\n --xy-handle-border-color-default: #fff;\n\n --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);\n\n --xy-controls-button-background-color-default: #fefefe;\n --xy-controls-button-background-color-hover-default: #f4f4f4;\n --xy-controls-button-color-default: inherit;\n --xy-controls-button-color-hover-default: inherit;\n --xy-controls-button-border-color-default: #eee;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #ffffff;\n --xy-edge-label-color-default: inherit;\n --xy-resize-background-color-default: #3367d9;\n}\n.react-flow.dark {\n --xy-edge-stroke-default: #3e3e3e;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #727272;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);\n\n --xy-minimap-background-color-default: #141414;\n --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #2b2b2b;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: #141414;\n --xy-background-pattern-dots-color-default: #777;\n --xy-background-pattern-lines-color-default: #777;\n --xy-background-pattern-cross-color-default: #777;\n --xy-node-color-default: #f8f8f8;\n --xy-node-border-default: 1px solid #3c3c3c;\n --xy-node-background-color-default: #1e1e1e;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;\n\n --xy-handle-background-color-default: #bebebe;\n --xy-handle-border-color-default: #1e1e1e;\n\n --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);\n\n --xy-controls-button-background-color-default: #2b2b2b;\n --xy-controls-button-background-color-hover-default: #3e3e3e;\n --xy-controls-button-color-default: #f8f8f8;\n --xy-controls-button-color-hover-default: #fff;\n --xy-controls-button-border-color-default: #5b5b5b;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #141414;\n --xy-edge-label-color-default: #f8f8f8;\n}\n.react-flow__background {\n background-color: var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));\n pointer-events: none;\n z-index: -1;\n}\n.react-flow__container {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n}\n.react-flow__pane {\n z-index: 1;\n touch-action: none;\n}\n.react-flow__pane.draggable {\n cursor: grab;\n }\n.react-flow__pane.dragging {\n cursor: grabbing;\n }\n.react-flow__pane.selection {\n cursor: pointer;\n }\n.react-flow__viewport {\n transform-origin: 0 0;\n z-index: 2;\n pointer-events: none;\n}\n.react-flow__renderer {\n z-index: 4;\n}\n.react-flow__selection {\n z-index: 6;\n}\n.react-flow__nodesselection-rect:focus,\n.react-flow__nodesselection-rect:focus-visible {\n outline: none;\n}\n.react-flow__edge-path {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));\n fill: none;\n}\n.react-flow__connection-path {\n stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));\n stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));\n fill: none;\n}\n.react-flow .react-flow__edges {\n position: absolute;\n}\n.react-flow .react-flow__edges svg {\n overflow: visible;\n position: absolute;\n pointer-events: none;\n }\n.react-flow__edge {\n pointer-events: visibleStroke;\n}\n.react-flow__edge.selectable {\n cursor: pointer;\n }\n.react-flow__edge.animated path {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\n.react-flow__edge.animated path.react-flow__edge-interaction {\n stroke-dasharray: none;\n animation: none;\n }\n.react-flow__edge.inactive {\n pointer-events: none;\n }\n.react-flow__edge.selected,\n .react-flow__edge:focus,\n .react-flow__edge:focus-visible {\n outline: none;\n }\n.react-flow__edge.selected .react-flow__edge-path,\n .react-flow__edge.selectable:focus .react-flow__edge-path,\n .react-flow__edge.selectable:focus-visible .react-flow__edge-path {\n stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));\n }\n.react-flow__edge-textwrapper {\n pointer-events: all;\n }\n.react-flow__edge .react-flow__edge-text {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n/* Arrowhead marker styles - use CSS custom properties as default */\n.react-flow__arrowhead polyline {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__arrowhead polyline.arrowclosed {\n fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__connection {\n pointer-events: none;\n}\n.react-flow__connection .animated {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\nsvg.react-flow__connectionline {\n z-index: 1001;\n overflow: visible;\n position: absolute;\n}\n.react-flow__nodes {\n pointer-events: none;\n transform-origin: 0 0;\n}\n.react-flow__node {\n position: absolute;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n box-sizing: border-box;\n cursor: default;\n}\n.react-flow__node.selectable {\n cursor: pointer;\n }\n.react-flow__node.draggable {\n cursor: grab;\n pointer-events: all;\n }\n.react-flow__node.draggable.dragging {\n cursor: grabbing;\n }\n.react-flow__nodesselection {\n z-index: 3;\n transform-origin: left top;\n pointer-events: none;\n}\n.react-flow__nodesselection-rect {\n position: absolute;\n pointer-events: all;\n cursor: grab;\n }\n.react-flow__handle {\n position: absolute;\n pointer-events: none;\n min-width: 5px;\n min-height: 5px;\n width: 6px;\n height: 6px;\n background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));\n border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));\n border-radius: 100%;\n}\n.react-flow__handle.connectingfrom {\n pointer-events: all;\n }\n.react-flow__handle.connectionindicator {\n pointer-events: all;\n cursor: crosshair;\n }\n.react-flow__handle-bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 50%);\n }\n.react-flow__handle-top {\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-left {\n top: 50%;\n left: 0;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-right {\n top: 50%;\n right: 0;\n transform: translate(50%, -50%);\n }\n.react-flow__edgeupdater {\n cursor: move;\n pointer-events: all;\n}\n.react-flow__pane.selection .react-flow__panel {\n pointer-events: none;\n}\n.react-flow__panel {\n position: absolute;\n z-index: 5;\n margin: 15px;\n}\n.react-flow__panel.top {\n top: 0;\n }\n.react-flow__panel.bottom {\n bottom: 0;\n }\n.react-flow__panel.top.center, .react-flow__panel.bottom.center {\n left: 50%;\n transform: translateX(-15px) translateX(-50%);\n }\n.react-flow__panel.left {\n left: 0;\n }\n.react-flow__panel.right {\n right: 0;\n }\n.react-flow__panel.left.center, .react-flow__panel.right.center {\n top: 50%;\n transform: translateY(-15px) translateY(-50%);\n }\n.react-flow__attribution {\n font-size: 10px;\n background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));\n padding: 2px 3px;\n margin: 0;\n}\n.react-flow__attribution a {\n text-decoration: none;\n color: #999;\n }\n@keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n.react-flow__edgelabel-renderer {\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n left: 0;\n top: 0;\n}\n.react-flow__viewport-portal {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.react-flow__minimap {\n background: var(\n --xy-minimap-background-color-props,\n var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))\n );\n}\n.react-flow__minimap-svg {\n display: block;\n }\n.react-flow__minimap-mask {\n fill: var(\n --xy-minimap-mask-background-color-props,\n var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))\n );\n stroke: var(\n --xy-minimap-mask-stroke-color-props,\n var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-mask-stroke-width-props,\n var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))\n );\n }\n.react-flow__minimap-node {\n fill: var(\n --xy-minimap-node-background-color-props,\n var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))\n );\n stroke: var(\n --xy-minimap-node-stroke-color-props,\n var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-node-stroke-width-props,\n var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))\n );\n }\n.react-flow__background-pattern.dots {\n fill: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))\n );\n }\n.react-flow__background-pattern.lines {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))\n );\n }\n.react-flow__background-pattern.cross {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))\n );\n }\n.react-flow__controls {\n display: flex;\n flex-direction: column;\n box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));\n}\n.react-flow__controls.horizontal {\n flex-direction: row;\n }\n.react-flow__controls-button {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 26px;\n width: 26px;\n padding: 4px;\n border: none;\n background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));\n border-bottom: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n color: var(\n --xy-controls-button-color-props,\n var(--xy-controls-button-color, var(--xy-controls-button-color-default))\n );\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n.react-flow__controls-button svg {\n width: 100%;\n max-width: 12px;\n max-height: 12px;\n fill: currentColor;\n }\n.react-flow__edge.updating .react-flow__edge-path {\n stroke: #777;\n }\n.react-flow__edge-text {\n font-size: 10px;\n }\n.react-flow__node.selectable:focus,\n .react-flow__node.selectable:focus-visible {\n outline: none;\n }\n.react-flow__node-input,\n.react-flow__node-default,\n.react-flow__node-output,\n.react-flow__node-group {\n padding: 10px;\n border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));\n width: 150px;\n font-size: 12px;\n color: var(--xy-node-color, var(--xy-node-color-default));\n text-align: center;\n border: var(--xy-node-border, var(--xy-node-border-default));\n background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));\n}\n.react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {\n box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));\n }\n.react-flow__node-input.selectable.selected,\n .react-flow__node-input.selectable:focus,\n .react-flow__node-input.selectable:focus-visible,\n .react-flow__node-default.selectable.selected,\n .react-flow__node-default.selectable:focus,\n .react-flow__node-default.selectable:focus-visible,\n .react-flow__node-output.selectable.selected,\n .react-flow__node-output.selectable:focus,\n .react-flow__node-output.selectable:focus-visible,\n .react-flow__node-group.selectable.selected,\n .react-flow__node-group.selectable:focus,\n .react-flow__node-group.selectable:focus-visible {\n box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));\n }\n.react-flow__node-group {\n background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));\n}\n.react-flow__nodesselection-rect,\n.react-flow__selection {\n background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));\n border: var(--xy-selection-border, var(--xy-selection-border-default));\n}\n.react-flow__nodesselection-rect:focus,\n .react-flow__nodesselection-rect:focus-visible,\n .react-flow__selection:focus,\n .react-flow__selection:focus-visible {\n outline: none;\n }\n.react-flow__controls-button:hover {\n background: var(\n --xy-controls-button-background-color-hover-props,\n var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))\n );\n color: var(\n --xy-controls-button-color-hover-props,\n var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))\n );\n }\n.react-flow__controls-button:disabled {\n pointer-events: none;\n }\n.react-flow__controls-button:disabled svg {\n fill-opacity: 0.4;\n }\n.react-flow__controls-button:last-child {\n border-bottom: none;\n }\n.react-flow__controls.horizontal .react-flow__controls-button {\n border-bottom: none;\n border-right: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n }\n.react-flow__controls.horizontal .react-flow__controls-button:last-child {\n border-right: none;\n }\n.react-flow__resize-control {\n position: absolute;\n}\n.react-flow__resize-control.left,\n.react-flow__resize-control.right {\n cursor: ew-resize;\n}\n.react-flow__resize-control.top,\n.react-flow__resize-control.bottom {\n cursor: ns-resize;\n}\n.react-flow__resize-control.top.left,\n.react-flow__resize-control.bottom.right {\n cursor: nwse-resize;\n}\n.react-flow__resize-control.bottom.left,\n.react-flow__resize-control.top.right {\n cursor: nesw-resize;\n}\n/* handle styles */\n.react-flow__resize-control.handle {\n width: 5px;\n height: 5px;\n border: 1px solid #fff;\n border-radius: 1px;\n background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n translate: -50% -50%;\n}\n.react-flow__resize-control.handle.left {\n left: 0;\n top: 50%;\n}\n.react-flow__resize-control.handle.right {\n left: 100%;\n top: 50%;\n}\n.react-flow__resize-control.handle.top {\n left: 50%;\n top: 0;\n}\n.react-flow__resize-control.handle.bottom {\n left: 50%;\n top: 100%;\n}\n.react-flow__resize-control.handle.top.left {\n left: 0;\n}\n.react-flow__resize-control.handle.bottom.left {\n left: 0;\n}\n.react-flow__resize-control.handle.top.right {\n left: 100%;\n}\n.react-flow__resize-control.handle.bottom.right {\n left: 100%;\n}\n/* line styles */\n.react-flow__resize-control.line {\n border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n border-width: 0;\n border-style: solid;\n}\n.react-flow__resize-control.line.left,\n.react-flow__resize-control.line.right {\n width: 1px;\n transform: translate(-50%, 0);\n top: 0;\n height: 100%;\n}\n.react-flow__resize-control.line.left {\n left: 0;\n border-left-width: 1px;\n}\n.react-flow__resize-control.line.right {\n left: 100%;\n border-right-width: 1px;\n}\n.react-flow__resize-control.line.top,\n.react-flow__resize-control.line.bottom {\n height: 1px;\n transform: translate(0, -50%);\n left: 0;\n width: 100%;\n}\n.react-flow__resize-control.line.top {\n top: 0;\n border-top-width: 1px;\n}\n.react-flow__resize-control.line.bottom {\n border-bottom-width: 1px;\n top: 100%;\n}\n.react-flow__edge-textbg {\n fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));\n}\n.react-flow__edge-text {\n fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));\n}\n","/* @particle-academy/fancy-flow styles.\n Dark mode honors both `.dark` ancestor (Tailwind class strategy) and OS\n `prefers-color-scheme: dark`. */\n\n/* React Flow base layout CSS — bundled in so consumers import only this one\n stylesheet. Without it `.react-flow__node` isn't absolutely positioned and the\n pane/viewport transforms don't work, so the canvas renders blank. xyflow's JS is\n already bundled into our dist, so the consumer has no separate @xyflow/react to\n import its CSS from. */\n@import \"@xyflow/react/dist/style.css\";\n\n.ff-canvas {\n display: flex;\n flex-direction: column;\n border: 1px solid #e4e4e7;\n border-radius: 12px;\n overflow: hidden;\n background: white;\n}\n.dark .ff-canvas { background: #0a0a0a; border-color: #3f3f46; }\n@media (prefers-color-scheme: dark) {\n .ff-canvas:not(.ff-canvas--light) { background: #0a0a0a; border-color: #3f3f46; }\n}\n\n.ff-canvas__toolbar {\n border-bottom: 1px solid #e4e4e7;\n padding: 6px 8px;\n display: flex; gap: 6px; align-items: center;\n background: rgba(244, 244, 245, 0.6);\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: 12px;\n}\n.dark .ff-canvas__toolbar { background: rgba(24, 24, 27, 0.6); border-color: #3f3f46; color: #e4e4e7; }\n@media (prefers-color-scheme: dark) {\n .ff-canvas__toolbar { background: rgba(24, 24, 27, 0.6); border-color: #3f3f46; color: #e4e4e7; }\n}\n.ff-canvas__surface { flex: 1; min-height: 0; position: relative; }\n\n/* xyflow background grid color override for dark canvas */\n.dark .react-flow__background pattern circle { fill: rgba(255, 255, 255, 0.10); }\n\n/* === Nodes === */\n.ff-node {\n min-width: 200px;\n max-width: 280px;\n background: white;\n border: 1px solid #d4d4d8;\n border-radius: 8px;\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: 12px;\n color: #18181b;\n box-shadow: 0 1px 2px rgba(0,0,0,0.04), 0 4px 12px rgba(0,0,0,0.06);\n transition: box-shadow 200ms, border-color 200ms;\n overflow: hidden;\n}\n.dark .ff-node {\n background: #1c1917;\n color: #fafafa;\n border-color: #3f3f46;\n box-shadow: 0 1px 2px rgba(0,0,0,0.4), 0 6px 16px rgba(0,0,0,0.5);\n}\n@media (prefers-color-scheme: dark) {\n .ff-node { background: #1c1917; color: #fafafa; border-color: #3f3f46; box-shadow: 0 1px 2px rgba(0,0,0,0.4), 0 6px 16px rgba(0,0,0,0.5); }\n}\n.ff-node--selected {\n box-shadow: 0 0 0 2px currentColor, 0 4px 16px rgba(0,0,0,0.20);\n}\n\n.ff-node__header {\n display: flex; align-items: center; gap: 8px;\n padding: 7px 10px;\n color: white;\n font-weight: 600;\n}\n.ff-node__icon { font-size: 14px; line-height: 1; }\n.ff-node__tag {\n font-size: 10px;\n letter-spacing: 0.06em;\n font-weight: 700;\n opacity: 0.85;\n text-transform: uppercase;\n}\n.ff-node__label { flex: 1; font-size: 13px; }\n.ff-node__desc {\n margin: 0;\n padding: 8px 10px 0;\n font-size: 11px;\n color: #71717a;\n}\n.dark .ff-node__desc { color: #a1a1aa; }\n@media (prefers-color-scheme: dark) { .ff-node__desc { color: #a1a1aa; } }\n\n.ff-node__body { padding: 8px 10px 10px; }\n.ff-node__status-text {\n margin: 0;\n padding: 4px 10px 8px;\n font-size: 11px;\n color: #71717a;\n}\n.dark .ff-node__status-text { color: #a1a1aa; }\n@media (prefers-color-scheme: dark) { .ff-node__status-text { color: #a1a1aa; } }\n.ff-node--status-error .ff-node__status-text { color: #dc2626; }\n.dark .ff-node--status-error .ff-node__status-text { color: #f87171; }\n\n.ff-node--status-running { animation: ff-pulse 1.4s ease-in-out infinite; }\n@keyframes ff-pulse {\n 0%, 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4), 0 4px 12px rgba(0,0,0,0.06); }\n 50% { box-shadow: 0 0 0 6px rgba(59, 130, 246, 0.05), 0 4px 12px rgba(0,0,0,0.06); }\n}\n\n/* Status dot in the header */\n.ff-node__dot {\n width: 8px; height: 8px; border-radius: 50%;\n background: rgba(255,255,255,0.5);\n}\n.ff-node__dot--queued { background: #fbbf24; }\n.ff-node__dot--running { background: #fde68a; box-shadow: 0 0 6px #fde68a; }\n.ff-node__dot--done { background: #34d399; }\n.ff-node__dot--error { background: #f87171; }\n\n/* Subgraph metadata row */\n.ff-subgraph__meta {\n display: flex; justify-content: space-between;\n font-size: 11px; color: #71717a;\n}\n.dark .ff-subgraph__meta { color: #a1a1aa; }\n@media (prefers-color-scheme: dark) { .ff-subgraph__meta { color: #a1a1aa; } }\n\n/* Note node — no header chrome, sticky-style */\n.ff-note {\n background: #fef3c7;\n border: 1px solid rgba(0,0,0,0.06);\n border-radius: 6px;\n padding: 8px 10px;\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: 12px;\n color: #1f2937;\n min-width: 180px;\n box-shadow: 0 1px 2px rgba(0,0,0,0.06), 0 4px 12px rgba(0,0,0,0.06);\n /* Pin to light text-on-yellow even in dark mode for readability */\n color-scheme: light;\n}\n.ff-note--selected { box-shadow: 0 0 0 2px #a855f7, 0 4px 12px rgba(0,0,0,0.2); }\n.ff-note__title { font-weight: 600; margin-bottom: 4px; }\n.ff-note__body { margin: 0; white-space: pre-wrap; }\n\n/* xyflow wraps every custom node in a `.react-flow__node-{type}` div with\n default border / background / box-shadow / padding. Our kit ships its\n own chrome via `.ff-node`, so strip xyflow's defaults for our types\n to avoid the white \"frame\" effect around the colored cards. */\n.react-flow__node-trigger,\n.react-flow__node-action,\n.react-flow__node-decision,\n.react-flow__node-output,\n.react-flow__node-note,\n.react-flow__node-subgraph {\n background: transparent !important;\n border: none !important;\n padding: 0 !important;\n box-shadow: none !important;\n border-radius: 0 !important;\n}\n\n/* xyflow handle — match accent + visible on both themes. */\n.react-flow__handle {\n width: 10px; height: 10px;\n background: white;\n border: 2px solid #94a3b8;\n border-radius: 50%;\n}\n.dark .react-flow__handle { background: #18181b; border-color: #71717a; }\n@media (prefers-color-scheme: dark) {\n .react-flow__handle { background: #18181b; border-color: #71717a; }\n}\n.react-flow__handle:hover { background: #3b82f6; border-color: #3b82f6; }\n\n/* xyflow edge color — softer in dark */\n.dark .react-flow__edge-path { stroke: #71717a; }\n@media (prefers-color-scheme: dark) {\n .react-flow__edge-path { stroke: #71717a; }\n}\n.react-flow__connection-path { stroke: #3b82f6; stroke-width: 2; }\n\n/* xyflow controls — bump specificity + !important so dark theming wins\n over xyflow's default stylesheet. */\n.dark .react-flow__controls,\n.react-flow__controls.ff-controls {\n background: transparent;\n box-shadow: none;\n}\n.dark .react-flow__controls .react-flow__controls-button {\n background: #18181b !important;\n border-color: #3f3f46 !important;\n border-bottom-color: #3f3f46 !important;\n color: #fafafa !important;\n}\n.dark .react-flow__controls .react-flow__controls-button:hover {\n background: #27272a !important;\n}\n.dark .react-flow__controls .react-flow__controls-button svg,\n.dark .react-flow__controls .react-flow__controls-button svg path,\n.dark .react-flow__controls .react-flow__controls-button svg polyline,\n.dark .react-flow__controls .react-flow__controls-button svg polygon {\n fill: currentColor !important;\n stroke: currentColor !important;\n}\n\n/* Run controls */\n.ff-run-controls { display: flex; gap: 6px; }\n.ff-run-controls__btn {\n border: 0; border-radius: 6px;\n padding: 6px 12px;\n font: inherit; font-size: 12px; font-weight: 500;\n cursor: pointer;\n background: #e4e4e7; color: #18181b;\n}\n.dark .ff-run-controls__btn { background: #27272a; color: #fafafa; }\n.ff-run-controls__btn--run { background: #10b981; color: white; }\n.dark .ff-run-controls__btn--run { background: #10b981; color: white; }\n.ff-run-controls__btn--cancel { background: #ef4444; color: white; }\n.ff-run-controls__btn:disabled { opacity: 0.5; cursor: default; }\n\n/* Run feed */\n.ff-run-feed {\n font-family: ui-monospace, monospace;\n font-size: 11px;\n background: #0a0a0a;\n color: #fafafa;\n border-radius: 8px;\n padding: 8px 10px;\n overflow: auto;\n max-height: 240px;\n border: 1px solid #1f1f23;\n}\n.ff-run-feed__empty { color: #71717a; margin: 0; }\n.ff-run-feed__row { display: flex; gap: 8px; padding: 1px 0; }\n.ff-run-feed__row--error .ff-run-feed__text { color: #f87171; }\n.ff-run-feed__row--warn .ff-run-feed__text { color: #fbbf24; }\n.ff-run-feed__row--status .ff-run-feed__text { color: #93c5fd; }\n.ff-run-feed__time { color: #71717a; }\n.ff-run-feed__node { color: #c4b5fd; }\n.ff-run-feed__text { flex: 1; }\n\n/* === Node summary inside the card === */\n.ff-node__summary { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }\n.ff-node__summary li { display: flex; gap: 6px; font-size: 11px; }\n.ff-node__summary-key { color: #71717a; }\n.dark .ff-node__summary-key { color: #a1a1aa; }\n.ff-node__summary-value { font-family: ui-monospace, monospace; }\n.ff-node__summary-more { color: #71717a; font-size: 10px; }\n.ff-node__body-empty { font-size: 11px; color: #a1a1aa; font-style: italic; }\n\n/* === FlowEditor layout === */\n.ff-editor {\n display: grid;\n grid-template-columns: 220px 1fr 320px;\n gap: 12px;\n font-family: ui-sans-serif, system-ui, sans-serif;\n}\n.ff-editor__main { display: flex; flex-direction: column; gap: 8px; min-width: 0; position: relative; }\n/* Slot: rendered over the canvas while the graph is empty. */\n.ff-editor__empty {\n position: absolute; inset: 0; display: grid; place-items: center;\n padding: 24px; text-align: center; pointer-events: none;\n}\n.ff-editor__empty > * { pointer-events: auto; }\n/* Slot: config panel + an optional footer for per-node actions. */\n.ff-editor__panel-wrap { display: flex; flex-direction: column; gap: 8px; min-height: 0; }\n.ff-editor__panel-footer { flex-shrink: 0; display: flex; flex-wrap: wrap; gap: 6px; }\n/* Node right-click menu — fixed so the canvas' overflow can't clip it. */\n.ff-editor__ctx {\n position: fixed; z-index: 50; min-width: 140px; padding: 4px;\n display: flex; flex-direction: column;\n background: white; border: 1px solid #d4d4d8; border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n}\n.dark .ff-editor__ctx { background: #18181b; border-color: #3f3f46; }\n.ff-editor__ctx-item {\n border: 0; background: transparent; cursor: pointer; text-align: left;\n padding: 6px 10px; border-radius: 5px; font-size: 12.5px; color: inherit;\n}\n.ff-editor__ctx-item:hover { background: rgba(0,0,0,0.05); }\n.dark .ff-editor__ctx-item:hover { background: #27272a; }\n.ff-editor__ctx-item--danger { color: #dc2626; }\n.dark .ff-editor__ctx-item--danger { color: #f87171; }\n.ff-editor__feed { flex-shrink: 0; }\n.ff-editor__sep { width: 1px; align-self: stretch; background: #e4e4e7; }\n.dark .ff-editor__sep { background: #3f3f46; }\n.ff-editor__btn {\n border: 1px solid #d4d4d8; background: transparent; cursor: pointer;\n border-radius: 6px; padding: 4px 10px;\n color: inherit; font-size: 12px;\n}\n.ff-editor__btn:hover:not(:disabled) { background: rgba(0,0,0,0.04); }\n.ff-editor__btn:disabled { opacity: 0.45; cursor: not-allowed; }\n.dark .ff-editor__btn { border-color: #3f3f46; }\n.dark .ff-editor__btn:hover { background: #27272a; }\n.ff-editor__count {\n margin-left: auto; font-size: 11px; color: #71717a;\n}\n.dark .ff-editor__count { color: #a1a1aa; }\n\n/* === NodePalette === */\n.ff-palette {\n display: flex; flex-direction: column;\n background: white;\n border: 1px solid #e4e4e7;\n border-radius: 12px;\n overflow: hidden;\n font-size: 13px;\n color: #18181b;\n}\n.dark .ff-palette { background: #18181b; color: #fafafa; border-color: #3f3f46; }\n.ff-palette__search { padding: 8px; border-bottom: 1px solid #e4e4e7; }\n.dark .ff-palette__search { border-color: #3f3f46; }\n.ff-palette__search-input {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid #d4d4d8;\n border-radius: 6px;\n background: transparent;\n color: inherit;\n font: inherit;\n}\n.dark .ff-palette__search-input { border-color: #3f3f46; }\n.ff-palette__list { flex: 1; overflow: auto; padding: 4px; }\n.ff-palette__group { padding: 4px 0; }\n.ff-palette__group-label {\n font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;\n color: #71717a;\n padding: 4px 8px;\n}\n.dark .ff-palette__group-label { color: #a1a1aa; }\n.ff-palette__row {\n width: 100%;\n display: flex; align-items: center; gap: 8px;\n padding: 6px 8px; border: 0; background: transparent; cursor: grab;\n border-radius: 6px;\n text-align: left; color: inherit; font: inherit;\n}\n.ff-palette__row:hover { background: rgba(0,0,0,0.04); }\n.dark .ff-palette__row:hover { background: #27272a; }\n.ff-palette__row:active { cursor: grabbing; }\n.ff-palette__row-dot {\n flex-shrink: 0;\n width: 24px; height: 24px;\n border-radius: 6px;\n display: inline-flex; align-items: center; justify-content: center;\n color: white; font-size: 14px;\n}\n.ff-palette__row-text { display: flex; flex-direction: column; min-width: 0; }\n.ff-palette__row-label { font-size: 12px; font-weight: 500; }\n.ff-palette__row-desc {\n font-size: 11px; color: #71717a;\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n}\n.dark .ff-palette__row-desc { color: #a1a1aa; }\n\n/* === NodeConfigPanel === */\n.ff-panel {\n background: white;\n border: 1px solid #e4e4e7;\n border-radius: 12px;\n padding: 12px;\n display: flex; flex-direction: column; gap: 10px;\n overflow: auto;\n font-size: 13px;\n color: #18181b;\n}\n.dark .ff-panel { background: #18181b; color: #fafafa; border-color: #3f3f46; }\n.ff-panel--empty { align-items: center; justify-content: center; }\n.ff-panel__empty { font-size: 12px; color: #a1a1aa; }\n.ff-panel__header { display: flex; flex-direction: column; gap: 4px; }\n.ff-panel__kind-tag {\n align-self: flex-start;\n font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;\n background: rgba(168, 85, 247, 0.12); color: #a855f7;\n padding: 2px 8px; border-radius: 999px;\n}\n.ff-panel__kind-desc { margin: 0; font-size: 12px; color: #71717a; }\n.dark .ff-panel__kind-desc { color: #a1a1aa; }\n.ff-panel__divider { border: 0; border-top: 1px solid #e4e4e7; margin: 4px 0; }\n.dark .ff-panel__divider { border-top-color: #3f3f46; }\n.ff-panel__field { display: flex; flex-direction: column; gap: 4px; }\n.ff-panel__label { font-size: 12px; font-weight: 500; }\n.ff-panel__hint { font-size: 11px; color: #71717a; margin: 0; }\n.dark .ff-panel__hint { color: #a1a1aa; }\n.ff-panel__required { color: #dc2626; }\n.ff-panel__input {\n width: 100%;\n padding: 6px 8px;\n border: 1px solid #d4d4d8;\n border-radius: 6px;\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: 12px;\n box-sizing: border-box;\n}\n.ff-panel__input:focus { outline: 2px solid #a855f7; outline-offset: -1px; }\n.dark .ff-panel__input { border-color: #3f3f46; }\n.ff-panel__input--textarea { font-family: inherit; resize: vertical; }\n.ff-panel__input--expression,\n.ff-panel__input--json {\n font-family: ui-monospace, monospace; font-size: 11px;\n}\n.ff-panel__switch { display: inline-flex; align-items: center; cursor: pointer; }\n.ff-panel__switch input { display: none; }\n.ff-panel__switch-slider {\n width: 32px; height: 18px;\n background: #d4d4d8;\n border-radius: 999px;\n position: relative;\n transition: background 200ms;\n}\n.ff-panel__switch-slider::before {\n content: \"\";\n position: absolute; left: 2px; top: 2px;\n width: 14px; height: 14px;\n background: white;\n border-radius: 50%;\n transition: left 200ms;\n}\n.ff-panel__switch input:checked + .ff-panel__switch-slider { background: #a855f7; }\n.ff-panel__switch input:checked + .ff-panel__switch-slider::before { left: 16px; }\n.ff-panel__issues { margin-top: 4px; }\n.ff-panel__issue { font-size: 11px; color: #b45309; margin: 2px 0; }\n.dark .ff-panel__issue { color: #fbbf24; }\n\n/* ── Repeater / key-value config fields ───────────────────────────── */\n.ff-repeater { display: flex; flex-direction: column; gap: 8px; }\n.ff-repeater__empty { font-size: 11px; color: #71717a; margin: 0; font-style: italic; }\n.dark .ff-repeater__empty { color: #a1a1aa; }\n.ff-repeater__row {\n display: flex; flex-direction: column; gap: 6px;\n border: 1px solid #e4e4e7; border-radius: 6px; padding: 8px; background: #fafafa;\n}\n.dark .ff-repeater__row { border-color: #3f3f46; background: #27272a; }\n.ff-repeater__row-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }\n.ff-repeater__row-title {\n font-size: 11px; font-weight: 600; color: #52525b;\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.dark .ff-repeater__row-title { color: #d4d4d8; }\n.ff-repeater__row-actions { display: flex; gap: 2px; flex-shrink: 0; }\n.ff-repeater__btn {\n border: 1px solid transparent; background: transparent; cursor: pointer;\n border-radius: 4px; font-size: 11px; line-height: 1; padding: 3px 5px; color: #71717a;\n}\n.ff-repeater__btn:hover:not(:disabled) { background: #e4e4e7; color: #18181b; }\n.dark .ff-repeater__btn:hover:not(:disabled) { background: #3f3f46; color: #fafafa; }\n.ff-repeater__btn:disabled { opacity: .35; cursor: not-allowed; }\n.ff-repeater__btn--danger:hover:not(:disabled) { background: #fee2e2; color: #b91c1c; }\n.dark .ff-repeater__btn--danger:hover:not(:disabled) { background: #7f1d1d; color: #fecaca; }\n.ff-repeater__cell { display: flex; flex-direction: column; gap: 3px; }\n.ff-panel__label--sub { font-size: 11px; color: #71717a; font-weight: 400; }\n.dark .ff-panel__label--sub { color: #a1a1aa; }\n.ff-repeater__add {\n align-self: flex-start; border: 1px dashed #d4d4d8; background: transparent;\n border-radius: 6px; padding: 5px 10px; font-size: 11px; color: #52525b; cursor: pointer;\n}\n.ff-repeater__add:hover:not(:disabled) { border-color: #a855f7; color: #a855f7; }\n.ff-repeater__add:disabled { opacity: .4; cursor: not-allowed; }\n.dark .ff-repeater__add { border-color: #52525b; color: #d4d4d8; }\n\n.ff-keyvalue { display: flex; flex-direction: column; gap: 6px; }\n.ff-keyvalue__head,\n.ff-keyvalue__row { display: grid; grid-template-columns: 1fr 1fr auto; gap: 6px; align-items: center; }\n.ff-keyvalue__head { font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: #a1a1aa; }\n.ff-panel__hint--missing { color: #b45309; font-style: italic; }\n.dark .ff-panel__hint--missing { color: #fbbf24; }\n\n/* ── Edge label editor ────────────────────────────────────────────── */\n.ff-editor__edge-label { padding: 6px; min-width: 200px; }\n.ff-editor__edge-label .ff-panel__input { width: 100%; }\n\n/* ── Rich user input preview ──────────────────────────────────────── */\n.ff-rich-preview { display: flex; flex-direction: column; gap: 6px; }\n.ff-rich-preview__frame {\n border: 1px solid #e4e4e7; border-radius: 6px; overflow: hidden;\n max-height: 180px; background: #fff;\n}\n.dark .ff-rich-preview__frame { border-color: #3f3f46; background: #18181b; }\n.ff-rich-preview__unavailable {\n border: 1px dashed #d4d4d8; border-radius: 6px; padding: 10px;\n font-size: 11px; color: #71717a; line-height: 1.5;\n}\n.dark .ff-rich-preview__unavailable { border-color: #52525b; color: #a1a1aa; }\n.ff-rich-preview__unavailable code {\n font-size: 10px; background: #f4f4f5; padding: 1px 4px; border-radius: 3px;\n}\n.dark .ff-rich-preview__unavailable code { background: #27272a; }\n.ff-rich-preview__title { font-size: 11px; font-weight: 600; color: #52525b; }\n.dark .ff-rich-preview__title { color: #d4d4d8; }\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../node_modules/@xyflow/react/dist/style.css","../src/styles.css"],"sourcesContent":["/* this gets exported as style.css and can be used for the default theming */\n/* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */\n.react-flow {\n direction: ltr;\n\n --xy-edge-stroke-default: #b1b1b7;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #555;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);\n\n --xy-minimap-background-color-default: #fff;\n --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #e2e2e2;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: transparent;\n --xy-background-pattern-dots-color-default: #91919a;\n --xy-background-pattern-lines-color-default: #eee;\n --xy-background-pattern-cross-color-default: #e2e2e2;\n background-color: var(--xy-background-color, var(--xy-background-color-default));\n --xy-node-color-default: inherit;\n --xy-node-border-default: 1px solid #1a192b;\n --xy-node-background-color-default: #fff;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;\n --xy-node-border-radius-default: 3px;\n\n --xy-handle-background-color-default: #1a192b;\n --xy-handle-border-color-default: #fff;\n\n --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);\n\n --xy-controls-button-background-color-default: #fefefe;\n --xy-controls-button-background-color-hover-default: #f4f4f4;\n --xy-controls-button-color-default: inherit;\n --xy-controls-button-color-hover-default: inherit;\n --xy-controls-button-border-color-default: #eee;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #ffffff;\n --xy-edge-label-color-default: inherit;\n --xy-resize-background-color-default: #3367d9;\n}\n.react-flow.dark {\n --xy-edge-stroke-default: #3e3e3e;\n --xy-edge-stroke-width-default: 1;\n --xy-edge-stroke-selected-default: #727272;\n\n --xy-connectionline-stroke-default: #b1b1b7;\n --xy-connectionline-stroke-width-default: 1;\n\n --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);\n\n --xy-minimap-background-color-default: #141414;\n --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);\n --xy-minimap-mask-stroke-color-default: transparent;\n --xy-minimap-mask-stroke-width-default: 1;\n --xy-minimap-node-background-color-default: #2b2b2b;\n --xy-minimap-node-stroke-color-default: transparent;\n --xy-minimap-node-stroke-width-default: 2;\n\n --xy-background-color-default: #141414;\n --xy-background-pattern-dots-color-default: #777;\n --xy-background-pattern-lines-color-default: #777;\n --xy-background-pattern-cross-color-default: #777;\n --xy-node-color-default: #f8f8f8;\n --xy-node-border-default: 1px solid #3c3c3c;\n --xy-node-background-color-default: #1e1e1e;\n --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);\n --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);\n --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;\n\n --xy-handle-background-color-default: #bebebe;\n --xy-handle-border-color-default: #1e1e1e;\n\n --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);\n --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);\n\n --xy-controls-button-background-color-default: #2b2b2b;\n --xy-controls-button-background-color-hover-default: #3e3e3e;\n --xy-controls-button-color-default: #f8f8f8;\n --xy-controls-button-color-hover-default: #fff;\n --xy-controls-button-border-color-default: #5b5b5b;\n --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n\n --xy-edge-label-background-color-default: #141414;\n --xy-edge-label-color-default: #f8f8f8;\n}\n.react-flow__background {\n background-color: var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));\n pointer-events: none;\n z-index: -1;\n}\n.react-flow__container {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n}\n.react-flow__pane {\n z-index: 1;\n touch-action: none;\n}\n.react-flow__pane.draggable {\n cursor: grab;\n }\n.react-flow__pane.dragging {\n cursor: grabbing;\n }\n.react-flow__pane.selection {\n cursor: pointer;\n }\n.react-flow__viewport {\n transform-origin: 0 0;\n z-index: 2;\n pointer-events: none;\n}\n.react-flow__renderer {\n z-index: 4;\n}\n.react-flow__selection {\n z-index: 6;\n}\n.react-flow__nodesselection-rect:focus,\n.react-flow__nodesselection-rect:focus-visible {\n outline: none;\n}\n.react-flow__edge-path {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));\n fill: none;\n}\n.react-flow__connection-path {\n stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));\n stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));\n fill: none;\n}\n.react-flow .react-flow__edges {\n position: absolute;\n}\n.react-flow .react-flow__edges svg {\n overflow: visible;\n position: absolute;\n pointer-events: none;\n }\n.react-flow__edge {\n pointer-events: visibleStroke;\n}\n.react-flow__edge.selectable {\n cursor: pointer;\n }\n.react-flow__edge.animated path {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\n.react-flow__edge.animated path.react-flow__edge-interaction {\n stroke-dasharray: none;\n animation: none;\n }\n.react-flow__edge.inactive {\n pointer-events: none;\n }\n.react-flow__edge.selected,\n .react-flow__edge:focus,\n .react-flow__edge:focus-visible {\n outline: none;\n }\n.react-flow__edge.selected .react-flow__edge-path,\n .react-flow__edge.selectable:focus .react-flow__edge-path,\n .react-flow__edge.selectable:focus-visible .react-flow__edge-path {\n stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));\n }\n.react-flow__edge-textwrapper {\n pointer-events: all;\n }\n.react-flow__edge .react-flow__edge-text {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n/* Arrowhead marker styles - use CSS custom properties as default */\n.react-flow__arrowhead polyline {\n stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__arrowhead polyline.arrowclosed {\n fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));\n}\n.react-flow__connection {\n pointer-events: none;\n}\n.react-flow__connection .animated {\n stroke-dasharray: 5;\n animation: dashdraw 0.5s linear infinite;\n }\nsvg.react-flow__connectionline {\n z-index: 1001;\n overflow: visible;\n position: absolute;\n}\n.react-flow__nodes {\n pointer-events: none;\n transform-origin: 0 0;\n}\n.react-flow__node {\n position: absolute;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n box-sizing: border-box;\n cursor: default;\n}\n.react-flow__node.selectable {\n cursor: pointer;\n }\n.react-flow__node.draggable {\n cursor: grab;\n pointer-events: all;\n }\n.react-flow__node.draggable.dragging {\n cursor: grabbing;\n }\n.react-flow__nodesselection {\n z-index: 3;\n transform-origin: left top;\n pointer-events: none;\n}\n.react-flow__nodesselection-rect {\n position: absolute;\n pointer-events: all;\n cursor: grab;\n }\n.react-flow__handle {\n position: absolute;\n pointer-events: none;\n min-width: 5px;\n min-height: 5px;\n width: 6px;\n height: 6px;\n background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));\n border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));\n border-radius: 100%;\n}\n.react-flow__handle.connectingfrom {\n pointer-events: all;\n }\n.react-flow__handle.connectionindicator {\n pointer-events: all;\n cursor: crosshair;\n }\n.react-flow__handle-bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 50%);\n }\n.react-flow__handle-top {\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-left {\n top: 50%;\n left: 0;\n transform: translate(-50%, -50%);\n }\n.react-flow__handle-right {\n top: 50%;\n right: 0;\n transform: translate(50%, -50%);\n }\n.react-flow__edgeupdater {\n cursor: move;\n pointer-events: all;\n}\n.react-flow__pane.selection .react-flow__panel {\n pointer-events: none;\n}\n.react-flow__panel {\n position: absolute;\n z-index: 5;\n margin: 15px;\n}\n.react-flow__panel.top {\n top: 0;\n }\n.react-flow__panel.bottom {\n bottom: 0;\n }\n.react-flow__panel.top.center, .react-flow__panel.bottom.center {\n left: 50%;\n transform: translateX(-15px) translateX(-50%);\n }\n.react-flow__panel.left {\n left: 0;\n }\n.react-flow__panel.right {\n right: 0;\n }\n.react-flow__panel.left.center, .react-flow__panel.right.center {\n top: 50%;\n transform: translateY(-15px) translateY(-50%);\n }\n.react-flow__attribution {\n font-size: 10px;\n background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));\n padding: 2px 3px;\n margin: 0;\n}\n.react-flow__attribution a {\n text-decoration: none;\n color: #999;\n }\n@keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n.react-flow__edgelabel-renderer {\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n left: 0;\n top: 0;\n}\n.react-flow__viewport-portal {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.react-flow__minimap {\n background: var(\n --xy-minimap-background-color-props,\n var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))\n );\n}\n.react-flow__minimap-svg {\n display: block;\n }\n.react-flow__minimap-mask {\n fill: var(\n --xy-minimap-mask-background-color-props,\n var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))\n );\n stroke: var(\n --xy-minimap-mask-stroke-color-props,\n var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-mask-stroke-width-props,\n var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))\n );\n }\n.react-flow__minimap-node {\n fill: var(\n --xy-minimap-node-background-color-props,\n var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))\n );\n stroke: var(\n --xy-minimap-node-stroke-color-props,\n var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))\n );\n stroke-width: var(\n --xy-minimap-node-stroke-width-props,\n var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))\n );\n }\n.react-flow__background-pattern.dots {\n fill: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))\n );\n }\n.react-flow__background-pattern.lines {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))\n );\n }\n.react-flow__background-pattern.cross {\n stroke: var(\n --xy-background-pattern-color-props,\n var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))\n );\n }\n.react-flow__controls {\n display: flex;\n flex-direction: column;\n box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));\n}\n.react-flow__controls.horizontal {\n flex-direction: row;\n }\n.react-flow__controls-button {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 26px;\n width: 26px;\n padding: 4px;\n border: none;\n background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));\n border-bottom: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n color: var(\n --xy-controls-button-color-props,\n var(--xy-controls-button-color, var(--xy-controls-button-color-default))\n );\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n.react-flow__controls-button svg {\n width: 100%;\n max-width: 12px;\n max-height: 12px;\n fill: currentColor;\n }\n.react-flow__edge.updating .react-flow__edge-path {\n stroke: #777;\n }\n.react-flow__edge-text {\n font-size: 10px;\n }\n.react-flow__node.selectable:focus,\n .react-flow__node.selectable:focus-visible {\n outline: none;\n }\n.react-flow__node-input,\n.react-flow__node-default,\n.react-flow__node-output,\n.react-flow__node-group {\n padding: 10px;\n border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));\n width: 150px;\n font-size: 12px;\n color: var(--xy-node-color, var(--xy-node-color-default));\n text-align: center;\n border: var(--xy-node-border, var(--xy-node-border-default));\n background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));\n}\n.react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {\n box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));\n }\n.react-flow__node-input.selectable.selected,\n .react-flow__node-input.selectable:focus,\n .react-flow__node-input.selectable:focus-visible,\n .react-flow__node-default.selectable.selected,\n .react-flow__node-default.selectable:focus,\n .react-flow__node-default.selectable:focus-visible,\n .react-flow__node-output.selectable.selected,\n .react-flow__node-output.selectable:focus,\n .react-flow__node-output.selectable:focus-visible,\n .react-flow__node-group.selectable.selected,\n .react-flow__node-group.selectable:focus,\n .react-flow__node-group.selectable:focus-visible {\n box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));\n }\n.react-flow__node-group {\n background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));\n}\n.react-flow__nodesselection-rect,\n.react-flow__selection {\n background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));\n border: var(--xy-selection-border, var(--xy-selection-border-default));\n}\n.react-flow__nodesselection-rect:focus,\n .react-flow__nodesselection-rect:focus-visible,\n .react-flow__selection:focus,\n .react-flow__selection:focus-visible {\n outline: none;\n }\n.react-flow__controls-button:hover {\n background: var(\n --xy-controls-button-background-color-hover-props,\n var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))\n );\n color: var(\n --xy-controls-button-color-hover-props,\n var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))\n );\n }\n.react-flow__controls-button:disabled {\n pointer-events: none;\n }\n.react-flow__controls-button:disabled svg {\n fill-opacity: 0.4;\n }\n.react-flow__controls-button:last-child {\n border-bottom: none;\n }\n.react-flow__controls.horizontal .react-flow__controls-button {\n border-bottom: none;\n border-right: 1px solid\n var(\n --xy-controls-button-border-color-props,\n var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))\n );\n }\n.react-flow__controls.horizontal .react-flow__controls-button:last-child {\n border-right: none;\n }\n.react-flow__resize-control {\n position: absolute;\n}\n.react-flow__resize-control.left,\n.react-flow__resize-control.right {\n cursor: ew-resize;\n}\n.react-flow__resize-control.top,\n.react-flow__resize-control.bottom {\n cursor: ns-resize;\n}\n.react-flow__resize-control.top.left,\n.react-flow__resize-control.bottom.right {\n cursor: nwse-resize;\n}\n.react-flow__resize-control.bottom.left,\n.react-flow__resize-control.top.right {\n cursor: nesw-resize;\n}\n/* handle styles */\n.react-flow__resize-control.handle {\n width: 5px;\n height: 5px;\n border: 1px solid #fff;\n border-radius: 1px;\n background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n translate: -50% -50%;\n}\n.react-flow__resize-control.handle.left {\n left: 0;\n top: 50%;\n}\n.react-flow__resize-control.handle.right {\n left: 100%;\n top: 50%;\n}\n.react-flow__resize-control.handle.top {\n left: 50%;\n top: 0;\n}\n.react-flow__resize-control.handle.bottom {\n left: 50%;\n top: 100%;\n}\n.react-flow__resize-control.handle.top.left {\n left: 0;\n}\n.react-flow__resize-control.handle.bottom.left {\n left: 0;\n}\n.react-flow__resize-control.handle.top.right {\n left: 100%;\n}\n.react-flow__resize-control.handle.bottom.right {\n left: 100%;\n}\n/* line styles */\n.react-flow__resize-control.line {\n border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));\n border-width: 0;\n border-style: solid;\n}\n.react-flow__resize-control.line.left,\n.react-flow__resize-control.line.right {\n width: 1px;\n transform: translate(-50%, 0);\n top: 0;\n height: 100%;\n}\n.react-flow__resize-control.line.left {\n left: 0;\n border-left-width: 1px;\n}\n.react-flow__resize-control.line.right {\n left: 100%;\n border-right-width: 1px;\n}\n.react-flow__resize-control.line.top,\n.react-flow__resize-control.line.bottom {\n height: 1px;\n transform: translate(0, -50%);\n left: 0;\n width: 100%;\n}\n.react-flow__resize-control.line.top {\n top: 0;\n border-top-width: 1px;\n}\n.react-flow__resize-control.line.bottom {\n border-bottom-width: 1px;\n top: 100%;\n}\n.react-flow__edge-textbg {\n fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));\n}\n.react-flow__edge-text {\n fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));\n}\n","/* @particle-academy/fancy-flow styles.\n Dark mode honors both `.dark` ancestor (Tailwind class strategy) and OS\n `prefers-color-scheme: dark`. */\n\n/* React Flow base layout CSS — bundled in so consumers import only this one\n stylesheet. Without it `.react-flow__node` isn't absolutely positioned and the\n pane/viewport transforms don't work, so the canvas renders blank. xyflow's JS is\n already bundled into our dist, so the consumer has no separate @xyflow/react to\n import its CSS from. */\n@import \"@xyflow/react/dist/style.css\";\n\n.ff-canvas {\n display: flex;\n flex-direction: column;\n border: 1px solid #e4e4e7;\n border-radius: 12px;\n overflow: hidden;\n background: white;\n}\n.dark .ff-canvas { background: #0a0a0a; border-color: #3f3f46; }\n@media (prefers-color-scheme: dark) {\n .ff-canvas:not(.ff-canvas--light) { background: #0a0a0a; border-color: #3f3f46; }\n}\n\n.ff-canvas__toolbar {\n border-bottom: 1px solid #e4e4e7;\n padding: 6px 8px;\n display: flex; gap: 6px; align-items: center;\n background: rgba(244, 244, 245, 0.6);\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: 12px;\n}\n.dark .ff-canvas__toolbar { background: rgba(24, 24, 27, 0.6); border-color: #3f3f46; color: #e4e4e7; }\n@media (prefers-color-scheme: dark) {\n .ff-canvas__toolbar { background: rgba(24, 24, 27, 0.6); border-color: #3f3f46; color: #e4e4e7; }\n}\n.ff-canvas__surface { flex: 1; min-height: 0; position: relative; }\n\n/* xyflow background grid color override for dark canvas */\n.dark .react-flow__background pattern circle { fill: rgba(255, 255, 255, 0.10); }\n\n/* === Nodes === */\n.ff-node {\n min-width: 200px;\n max-width: 280px;\n background: white;\n border: 1px solid #d4d4d8;\n border-radius: 8px;\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: 12px;\n color: #18181b;\n box-shadow: 0 1px 2px rgba(0,0,0,0.04), 0 4px 12px rgba(0,0,0,0.06);\n transition: box-shadow 200ms, border-color 200ms;\n overflow: hidden;\n}\n.dark .ff-node {\n background: #1c1917;\n color: #fafafa;\n border-color: #3f3f46;\n box-shadow: 0 1px 2px rgba(0,0,0,0.4), 0 6px 16px rgba(0,0,0,0.5);\n}\n@media (prefers-color-scheme: dark) {\n .ff-node { background: #1c1917; color: #fafafa; border-color: #3f3f46; box-shadow: 0 1px 2px rgba(0,0,0,0.4), 0 6px 16px rgba(0,0,0,0.5); }\n}\n.ff-node--selected {\n box-shadow: 0 0 0 2px currentColor, 0 4px 16px rgba(0,0,0,0.20);\n}\n\n.ff-node__header {\n display: flex; align-items: center; gap: 8px;\n padding: 7px 10px;\n color: white;\n font-weight: 600;\n}\n.ff-node__icon { font-size: 14px; line-height: 1; }\n.ff-node__tag {\n font-size: 10px;\n letter-spacing: 0.06em;\n font-weight: 700;\n opacity: 0.85;\n text-transform: uppercase;\n}\n.ff-node__label { flex: 1; font-size: 13px; }\n.ff-node__desc {\n margin: 0;\n padding: 8px 10px 0;\n font-size: 11px;\n color: #71717a;\n}\n.dark .ff-node__desc { color: #a1a1aa; }\n@media (prefers-color-scheme: dark) { .ff-node__desc { color: #a1a1aa; } }\n\n.ff-node__body { padding: 8px 10px 10px; }\n.ff-node__status-text {\n margin: 0;\n padding: 4px 10px 8px;\n font-size: 11px;\n color: #71717a;\n}\n.dark .ff-node__status-text { color: #a1a1aa; }\n@media (prefers-color-scheme: dark) { .ff-node__status-text { color: #a1a1aa; } }\n.ff-node--status-error .ff-node__status-text { color: #dc2626; }\n.dark .ff-node--status-error .ff-node__status-text { color: #f87171; }\n\n.ff-node--status-running { animation: ff-pulse 1.4s ease-in-out infinite; }\n@keyframes ff-pulse {\n 0%, 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4), 0 4px 12px rgba(0,0,0,0.06); }\n 50% { box-shadow: 0 0 0 6px rgba(59, 130, 246, 0.05), 0 4px 12px rgba(0,0,0,0.06); }\n}\n\n/* Status dot in the header */\n.ff-node__dot {\n width: 8px; height: 8px; border-radius: 50%;\n background: rgba(255,255,255,0.5);\n}\n.ff-node__dot--queued { background: #fbbf24; }\n.ff-node__dot--running { background: #fde68a; box-shadow: 0 0 6px #fde68a; }\n.ff-node__dot--done { background: #34d399; }\n.ff-node__dot--error { background: #f87171; }\n\n/* Subgraph metadata row */\n.ff-subgraph__meta {\n display: flex; justify-content: space-between;\n font-size: 11px; color: #71717a;\n}\n.dark .ff-subgraph__meta { color: #a1a1aa; }\n@media (prefers-color-scheme: dark) { .ff-subgraph__meta { color: #a1a1aa; } }\n\n/* Note node — no header chrome, sticky-style */\n.ff-note {\n background: #fef3c7;\n border: 1px solid rgba(0,0,0,0.06);\n border-radius: 6px;\n padding: 8px 10px;\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: 12px;\n color: #1f2937;\n min-width: 180px;\n box-shadow: 0 1px 2px rgba(0,0,0,0.06), 0 4px 12px rgba(0,0,0,0.06);\n /* Pin to light text-on-yellow even in dark mode for readability */\n color-scheme: light;\n}\n.ff-note--selected { box-shadow: 0 0 0 2px #a855f7, 0 4px 12px rgba(0,0,0,0.2); }\n.ff-note__title { font-weight: 600; margin-bottom: 4px; }\n.ff-note__body { margin: 0; white-space: pre-wrap; }\n\n/* xyflow wraps every custom node in a `.react-flow__node-{type}` div with\n default border / background / box-shadow / padding. Our kit ships its\n own chrome via `.ff-node`, so strip xyflow's defaults for our types\n to avoid the white \"frame\" effect around the colored cards. */\n.react-flow__node-trigger,\n.react-flow__node-action,\n.react-flow__node-decision,\n.react-flow__node-output,\n.react-flow__node-note,\n.react-flow__node-subgraph {\n background: transparent !important;\n border: none !important;\n padding: 0 !important;\n box-shadow: none !important;\n border-radius: 0 !important;\n}\n\n/* xyflow handle — match accent + visible on both themes. */\n.react-flow__handle {\n width: 10px; height: 10px;\n background: white;\n border: 2px solid #94a3b8;\n border-radius: 50%;\n}\n.dark .react-flow__handle { background: #18181b; border-color: #71717a; }\n@media (prefers-color-scheme: dark) {\n .react-flow__handle { background: #18181b; border-color: #71717a; }\n}\n.react-flow__handle:hover { background: #3b82f6; border-color: #3b82f6; }\n\n/* xyflow edge color — softer in dark */\n.dark .react-flow__edge-path { stroke: #71717a; }\n@media (prefers-color-scheme: dark) {\n .react-flow__edge-path { stroke: #71717a; }\n}\n.react-flow__connection-path { stroke: #3b82f6; stroke-width: 2; }\n\n/* xyflow controls — bump specificity + !important so dark theming wins\n over xyflow's default stylesheet. */\n.dark .react-flow__controls,\n.react-flow__controls.ff-controls {\n background: transparent;\n box-shadow: none;\n}\n.dark .react-flow__controls .react-flow__controls-button {\n background: #18181b !important;\n border-color: #3f3f46 !important;\n border-bottom-color: #3f3f46 !important;\n color: #fafafa !important;\n}\n.dark .react-flow__controls .react-flow__controls-button:hover {\n background: #27272a !important;\n}\n.dark .react-flow__controls .react-flow__controls-button svg,\n.dark .react-flow__controls .react-flow__controls-button svg path,\n.dark .react-flow__controls .react-flow__controls-button svg polyline,\n.dark .react-flow__controls .react-flow__controls-button svg polygon {\n fill: currentColor !important;\n stroke: currentColor !important;\n}\n\n/* Run controls */\n.ff-run-controls { display: flex; gap: 6px; }\n.ff-run-controls__btn {\n border: 0; border-radius: 6px;\n padding: 6px 12px;\n font: inherit; font-size: 12px; font-weight: 500;\n cursor: pointer;\n background: #e4e4e7; color: #18181b;\n}\n.dark .ff-run-controls__btn { background: #27272a; color: #fafafa; }\n.ff-run-controls__btn--run { background: #10b981; color: white; }\n.dark .ff-run-controls__btn--run { background: #10b981; color: white; }\n.ff-run-controls__btn--cancel { background: #ef4444; color: white; }\n.ff-run-controls__btn:disabled { opacity: 0.5; cursor: default; }\n\n/* Run feed */\n.ff-run-feed {\n font-family: ui-monospace, monospace;\n font-size: 11px;\n background: #0a0a0a;\n color: #fafafa;\n border-radius: 8px;\n padding: 8px 10px;\n overflow: auto;\n max-height: 240px;\n border: 1px solid #1f1f23;\n}\n.ff-run-feed__empty { color: #71717a; margin: 0; }\n.ff-run-feed__row { display: flex; gap: 8px; padding: 1px 0; }\n.ff-run-feed__row--error .ff-run-feed__text { color: #f87171; }\n.ff-run-feed__row--warn .ff-run-feed__text { color: #fbbf24; }\n.ff-run-feed__row--status .ff-run-feed__text { color: #93c5fd; }\n.ff-run-feed__time { color: #71717a; }\n.ff-run-feed__node { color: #c4b5fd; }\n.ff-run-feed__text { flex: 1; }\n\n/* === Node summary inside the card === */\n.ff-node__summary { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }\n.ff-node__summary li { display: flex; gap: 6px; font-size: 11px; }\n.ff-node__summary-key { color: #71717a; }\n.dark .ff-node__summary-key { color: #a1a1aa; }\n.ff-node__summary-value { font-family: ui-monospace, monospace; }\n.ff-node__summary-more { color: #71717a; font-size: 10px; }\n.ff-node__body-empty { font-size: 11px; color: #a1a1aa; font-style: italic; }\n\n/* === FlowEditor layout === */\n.ff-editor {\n display: grid;\n grid-template-columns: 220px 1fr 320px;\n gap: 12px;\n font-family: ui-sans-serif, system-ui, sans-serif;\n}\n.ff-editor__main { display: flex; flex-direction: column; gap: 8px; min-width: 0; position: relative; }\n/* Slot: rendered over the canvas while the graph is empty. */\n.ff-editor__empty {\n position: absolute; inset: 0; display: grid; place-items: center;\n padding: 24px; text-align: center; pointer-events: none;\n}\n.ff-editor__empty > * { pointer-events: auto; }\n/* Slot: config panel + an optional footer for per-node actions. */\n.ff-editor__panel-wrap { display: flex; flex-direction: column; gap: 8px; min-height: 0; }\n.ff-editor__panel-footer { flex-shrink: 0; display: flex; flex-wrap: wrap; gap: 6px; }\n/* Node right-click menu — fixed so the canvas' overflow can't clip it. */\n.ff-editor__ctx {\n position: fixed; z-index: 50; min-width: 140px; padding: 4px;\n display: flex; flex-direction: column;\n background: white; border: 1px solid #d4d4d8; border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n}\n.dark .ff-editor__ctx { background: #18181b; border-color: #3f3f46; }\n.ff-editor__ctx-item {\n border: 0; background: transparent; cursor: pointer; text-align: left;\n padding: 6px 10px; border-radius: 5px; font-size: 12.5px; color: inherit;\n}\n.ff-editor__ctx-item:hover { background: rgba(0,0,0,0.05); }\n.dark .ff-editor__ctx-item:hover { background: #27272a; }\n.ff-editor__ctx-item--danger { color: #dc2626; }\n.dark .ff-editor__ctx-item--danger { color: #f87171; }\n.ff-editor__feed { flex-shrink: 0; }\n.ff-editor__sep { width: 1px; align-self: stretch; background: #e4e4e7; }\n.dark .ff-editor__sep { background: #3f3f46; }\n.ff-editor__btn {\n border: 1px solid #d4d4d8; background: transparent; cursor: pointer;\n border-radius: 6px; padding: 4px 10px;\n color: inherit; font-size: 12px;\n}\n.ff-editor__btn:hover:not(:disabled) { background: rgba(0,0,0,0.04); }\n.ff-editor__btn:disabled { opacity: 0.45; cursor: not-allowed; }\n.dark .ff-editor__btn { border-color: #3f3f46; }\n.dark .ff-editor__btn:hover { background: #27272a; }\n.ff-editor__count {\n margin-left: auto; font-size: 11px; color: #71717a;\n}\n.dark .ff-editor__count { color: #a1a1aa; }\n\n/* === NodePalette === */\n.ff-palette {\n display: flex; flex-direction: column;\n background: white;\n border: 1px solid #e4e4e7;\n border-radius: 12px;\n overflow: hidden;\n font-size: 13px;\n color: #18181b;\n}\n.dark .ff-palette { background: #18181b; color: #fafafa; border-color: #3f3f46; }\n.ff-palette__search { padding: 8px; border-bottom: 1px solid #e4e4e7; }\n.dark .ff-palette__search { border-color: #3f3f46; }\n.ff-palette__search-input {\n width: 100%;\n padding: 6px 10px;\n border: 1px solid #d4d4d8;\n border-radius: 6px;\n background: transparent;\n color: inherit;\n font: inherit;\n}\n.dark .ff-palette__search-input { border-color: #3f3f46; }\n.ff-palette__list { flex: 1; overflow: auto; padding: 4px; }\n.ff-palette__group { padding: 4px 0; }\n.ff-palette__group-label {\n font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;\n color: #71717a;\n padding: 4px 8px;\n}\n.dark .ff-palette__group-label { color: #a1a1aa; }\n.ff-palette__row {\n width: 100%;\n display: flex; align-items: center; gap: 8px;\n padding: 6px 8px; border: 0; background: transparent; cursor: grab;\n border-radius: 6px;\n text-align: left; color: inherit; font: inherit;\n}\n.ff-palette__row:hover { background: rgba(0,0,0,0.04); }\n.dark .ff-palette__row:hover { background: #27272a; }\n.ff-palette__row:active { cursor: grabbing; }\n.ff-palette__row-dot {\n flex-shrink: 0;\n width: 24px; height: 24px;\n border-radius: 6px;\n display: inline-flex; align-items: center; justify-content: center;\n color: white; font-size: 14px;\n}\n.ff-palette__row-text { display: flex; flex-direction: column; min-width: 0; }\n.ff-palette__row-label { font-size: 12px; font-weight: 500; }\n.ff-palette__row-desc {\n font-size: 11px; color: #71717a;\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n}\n.dark .ff-palette__row-desc { color: #a1a1aa; }\n\n/* === NodeConfigPanel === */\n.ff-panel {\n background: white;\n border: 1px solid #e4e4e7;\n border-radius: 12px;\n padding: 12px;\n display: flex; flex-direction: column; gap: 10px;\n overflow: auto;\n font-size: 13px;\n color: #18181b;\n}\n.dark .ff-panel { background: #18181b; color: #fafafa; border-color: #3f3f46; }\n.ff-panel--empty { align-items: center; justify-content: center; }\n.ff-panel__empty { font-size: 12px; color: #a1a1aa; }\n.ff-panel__header { display: flex; flex-direction: column; gap: 4px; }\n.ff-panel__kind-tag {\n align-self: flex-start;\n font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;\n background: rgba(168, 85, 247, 0.12); color: #a855f7;\n padding: 2px 8px; border-radius: 999px;\n}\n.ff-panel__kind-desc { margin: 0; font-size: 12px; color: #71717a; }\n.dark .ff-panel__kind-desc { color: #a1a1aa; }\n.ff-panel__divider { border: 0; border-top: 1px solid #e4e4e7; margin: 4px 0; }\n.dark .ff-panel__divider { border-top-color: #3f3f46; }\n\n/* Delete lives at the foot of the panel, separated from the config fields, so\n it is always reachable while a node is selected but never mistaken for one. */\n.ff-panel__actions { margin-top: auto; padding-top: 12px; }\n.ff-panel__delete {\n width: 100%;\n padding: 7px 10px;\n font-size: 13px;\n font-weight: 500;\n color: #dc2626;\n background: transparent;\n border: 1px solid #fca5a5;\n border-radius: 6px;\n cursor: pointer;\n}\n.ff-panel__delete:hover { background: #fef2f2; border-color: #dc2626; }\n.dark .ff-panel__delete { color: #f87171; border-color: #7f1d1d; }\n.dark .ff-panel__delete:hover { background: rgba(127,29,29,0.25); border-color: #f87171; }\n.ff-panel__field { display: flex; flex-direction: column; gap: 4px; }\n.ff-panel__label { font-size: 12px; font-weight: 500; }\n.ff-panel__hint { font-size: 11px; color: #71717a; margin: 0; }\n.dark .ff-panel__hint { color: #a1a1aa; }\n.ff-panel__required { color: #dc2626; }\n.ff-panel__input {\n width: 100%;\n padding: 6px 8px;\n border: 1px solid #d4d4d8;\n border-radius: 6px;\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: 12px;\n box-sizing: border-box;\n}\n.ff-panel__input:focus { outline: 2px solid #a855f7; outline-offset: -1px; }\n.dark .ff-panel__input { border-color: #3f3f46; }\n.ff-panel__input--textarea { font-family: inherit; resize: vertical; }\n.ff-panel__input--expression,\n.ff-panel__input--json {\n font-family: ui-monospace, monospace; font-size: 11px;\n}\n.ff-panel__switch { display: inline-flex; align-items: center; cursor: pointer; }\n.ff-panel__switch input { display: none; }\n.ff-panel__switch-slider {\n width: 32px; height: 18px;\n background: #d4d4d8;\n border-radius: 999px;\n position: relative;\n transition: background 200ms;\n}\n.ff-panel__switch-slider::before {\n content: \"\";\n position: absolute; left: 2px; top: 2px;\n width: 14px; height: 14px;\n background: white;\n border-radius: 50%;\n transition: left 200ms;\n}\n.ff-panel__switch input:checked + .ff-panel__switch-slider { background: #a855f7; }\n.ff-panel__switch input:checked + .ff-panel__switch-slider::before { left: 16px; }\n.ff-panel__issues { margin-top: 4px; }\n.ff-panel__issue { font-size: 11px; color: #b45309; margin: 2px 0; }\n.dark .ff-panel__issue { color: #fbbf24; }\n\n/* ── Repeater / key-value config fields ───────────────────────────── */\n.ff-repeater { display: flex; flex-direction: column; gap: 8px; }\n.ff-repeater__empty { font-size: 11px; color: #71717a; margin: 0; font-style: italic; }\n.dark .ff-repeater__empty { color: #a1a1aa; }\n.ff-repeater__row {\n display: flex; flex-direction: column; gap: 6px;\n border: 1px solid #e4e4e7; border-radius: 6px; padding: 8px; background: #fafafa;\n}\n.dark .ff-repeater__row { border-color: #3f3f46; background: #27272a; }\n.ff-repeater__row-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }\n.ff-repeater__row-title {\n font-size: 11px; font-weight: 600; color: #52525b;\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.dark .ff-repeater__row-title { color: #d4d4d8; }\n.ff-repeater__row-actions { display: flex; gap: 2px; flex-shrink: 0; }\n.ff-repeater__btn {\n border: 1px solid transparent; background: transparent; cursor: pointer;\n border-radius: 4px; font-size: 11px; line-height: 1; padding: 3px 5px; color: #71717a;\n}\n.ff-repeater__btn:hover:not(:disabled) { background: #e4e4e7; color: #18181b; }\n.dark .ff-repeater__btn:hover:not(:disabled) { background: #3f3f46; color: #fafafa; }\n.ff-repeater__btn:disabled { opacity: .35; cursor: not-allowed; }\n.ff-repeater__btn--danger:hover:not(:disabled) { background: #fee2e2; color: #b91c1c; }\n.dark .ff-repeater__btn--danger:hover:not(:disabled) { background: #7f1d1d; color: #fecaca; }\n.ff-repeater__cell { display: flex; flex-direction: column; gap: 3px; }\n.ff-panel__label--sub { font-size: 11px; color: #71717a; font-weight: 400; }\n.dark .ff-panel__label--sub { color: #a1a1aa; }\n.ff-repeater__add {\n align-self: flex-start; border: 1px dashed #d4d4d8; background: transparent;\n border-radius: 6px; padding: 5px 10px; font-size: 11px; color: #52525b; cursor: pointer;\n}\n.ff-repeater__add:hover:not(:disabled) { border-color: #a855f7; color: #a855f7; }\n.ff-repeater__add:disabled { opacity: .4; cursor: not-allowed; }\n.dark .ff-repeater__add { border-color: #52525b; color: #d4d4d8; }\n\n.ff-keyvalue { display: flex; flex-direction: column; gap: 6px; }\n.ff-keyvalue__head,\n.ff-keyvalue__row { display: grid; grid-template-columns: 1fr 1fr auto; gap: 6px; align-items: center; }\n.ff-keyvalue__head { font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: #a1a1aa; }\n.ff-panel__hint--missing { color: #b45309; font-style: italic; }\n.dark .ff-panel__hint--missing { color: #fbbf24; }\n\n/* ── Edge label editor ────────────────────────────────────────────── */\n.ff-editor__edge-label { padding: 6px; min-width: 200px; }\n.ff-editor__edge-label .ff-panel__input { width: 100%; }\n\n/* ── Rich user input preview ──────────────────────────────────────── */\n.ff-rich-preview { display: flex; flex-direction: column; gap: 6px; }\n.ff-rich-preview__frame {\n border: 1px solid #e4e4e7; border-radius: 6px; overflow: hidden;\n max-height: 180px; background: #fff;\n}\n.dark .ff-rich-preview__frame { border-color: #3f3f46; background: #18181b; }\n.ff-rich-preview__unavailable {\n border: 1px dashed #d4d4d8; border-radius: 6px; padding: 10px;\n font-size: 11px; color: #71717a; line-height: 1.5;\n}\n.dark .ff-rich-preview__unavailable { border-color: #52525b; color: #a1a1aa; }\n.ff-rich-preview__unavailable code {\n font-size: 10px; background: #f4f4f5; padding: 1px 4px; border-radius: 3px;\n}\n.dark .ff-rich-preview__unavailable code { background: #27272a; }\n.ff-rich-preview__title { font-size: 11px; font-weight: 600; color: #52525b; }\n.dark .ff-rich-preview__title { color: #d4d4d8; }\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@particle-academy/fancy-flow",
3
- "version": "0.16.0",
3
+ "version": "0.18.0",
4
4
  "description": "Workflow editor + runner. Six built-in node kits (trigger / action / decision / output / note / subgraph), tokenized theme, topological execution with per-node status. React-flow bundled; consumers npm install fancy-flow and get nothing extra.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/registry/subflow.ts","../src/registry/llm-router.ts","../src/registry/RegistryNode.tsx","../src/registry/builtin.ts","../src/registry/index.ts"],"names":[],"mappings":"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","file":"chunk-M2QTDA3B.js","sourcesContent":["import { getWorkflowResolver, isResolutionFailure } from \"./capabilities\";\nimport { runFlow } from \"../runtime/run-flow\";\nimport type { NodeExecutor, RunEvent } from \"../types\";\n\n/**\n * `@fancy/subflow` — run another workflow and bring its result home.\n *\n * Core, not marketplace: it introduces no third-party dependency. It runs a\n * child graph through the very same engine, so the only thing it needs from the\n * host is where workflows live (`registerWorkflowResolver`).\n *\n * Three output modes, because both halves are genuinely useful:\n *\n * - `output` — the child's outputs arrive on `out` when it finishes.\n * - `stream` — the child's events are forwarded live on `stream` as they\n * happen, so a parent can show progress instead of a spinner.\n * - `both` — stream while running AND deliver the final outputs.\n *\n * Recursion is guarded by depth. A workflow that references itself (directly or\n * through a chain) would otherwise recurse until the stack dies, which surfaces\n * as an opaque crash rather than \"you built a loop\".\n */\n\nexport const DEFAULT_MAX_DEPTH = 8;\n\nexport type SubflowMode = \"output\" | \"stream\" | \"both\";\n\nexport function subflowMode(config: Record<string, unknown>): SubflowMode {\n const mode = config.mode;\n return mode === \"stream\" || mode === \"both\" ? mode : \"output\";\n}\n\n/** Ports follow the mode — `stream` only exists when something streams. */\nexport function subflowPorts(config: Record<string, unknown>) {\n const mode = subflowMode(config);\n const ports = [{ id: \"out\", label: \"result\" }];\n if (mode === \"stream\" || mode === \"both\") ports.unshift({ id: \"stream\", label: \"stream\" });\n return ports;\n}\n\nexport const subflowExecutor: NodeExecutor = async (ctx) => {\n const config = ((ctx.node.data as any)?.config ?? {}) as Record<string, unknown>;\n const ref = String(config.workflow ?? \"\").trim();\n if (!ref) ctx.abort(\"subflow has no workflow reference configured\");\n\n const resolver = getWorkflowResolver();\n if (!resolver) {\n ctx.abort(\n \"No workflow resolver registered. Call registerWorkflowResolver() so subflow can find the workflow it references.\",\n );\n }\n\n const maxDepth = Number.isFinite(config.maxDepth) ? Number(config.maxDepth) : DEFAULT_MAX_DEPTH;\n const depth = ctx.depth ?? 0;\n if (depth + 1 > maxDepth) {\n // Name the cause. \"Maximum call stack exceeded\" tells an author nothing\n // about the workflow they wired into itself.\n ctx.abort(\n `subflow depth limit reached (${maxDepth}) at \"${ref}\" — a workflow is referencing itself, directly or through a chain.`,\n );\n }\n\n // An optional pin. A workflow another workflow depends on is an interface:\n // without a pin, someone edits the child and the parent silently runs\n // different logic while still reporting success.\n const pinned = config.version === undefined || config.version === \"\" ? undefined : Number(config.version);\n if (pinned !== undefined && !Number.isInteger(pinned)) {\n ctx.abort(`subflow \"${ref}\" has a non-integer version pin (${String(config.version)}).`);\n }\n\n const resolved = await resolver!(ref, pinned);\n\n // A mismatch names BOTH versions. Reporting it as \"not found\" would send an\n // author looking for a workflow that is sitting right there — which is why\n // the resolver can say which of the two failures it hit.\n const child = isResolutionFailure(resolved)\n ? ctx.abort(\n resolved.reason === \"version-mismatch\"\n ? (resolved.message ??\n `subflow \"${ref}\" is pinned to version ${pinned}, but the host has ${resolved.available ?? \"a different version\"}.`)\n : (resolved.message ?? `subflow could not resolve workflow \"${ref}\"`),\n )\n : resolved;\n\n if (!child) ctx.abort(`subflow could not resolve workflow \"${ref}\"`);\n\n const mode = subflowMode(config);\n const streaming = mode === \"stream\" || mode === \"both\";\n\n const forward = (event: RunEvent) => {\n if (!streaming) return;\n // Surface the child's progress on the PARENT's feed as a log line against\n // this node. Re-emitting the child's raw events would collide with the\n // parent's own node ids — a child's \"node-status\" for its `output` node is\n // not a status for anything in the parent graph.\n const detail =\n event.type === \"node-status\"\n ? `${event.nodeId} ${event.status}`\n : event.type === \"run-end\"\n ? `finished (${event.ok ? \"ok\" : \"failed\"})`\n : event.type;\n ctx.emit({\n type: \"log\",\n nodeId: ctx.node.id,\n level: \"info\",\n message: `[${ref}] ${detail}`,\n });\n };\n\n const result = await runFlow(\n child!,\n (config.executors as never) ?? {},\n forward,\n {\n initialInputs: (config.inputs as Record<string, Record<string, unknown>>) ?? {\n // With no explicit mapping, hand the parent's inputs to the child's\n // entry points — the obvious default, and it makes the simple case\n // require no configuration at all.\n __parent: ctx.inputs as Record<string, unknown>,\n },\n depth: depth + 1,\n },\n );\n\n if (!result.ok) {\n ctx.abort(`subflow \"${ref}\" failed: ${result.error ?? \"unknown error\"}`);\n }\n\n // `stream` alone still emits a final value on `stream` so downstream nodes\n // have something to run on; `both` publishes on every declared port.\n if (mode === \"stream\") {\n return { __port: \"stream\", value: result.outputs };\n }\n if (mode === \"both\") {\n return result.outputs;\n }\n return { __port: \"out\", value: result.outputs };\n};\n","import { getLlmClient, type LlmRoute } from \"./capabilities\";\nimport type { NodeExecutor } from \"../types\";\n\n/**\n * `@fancy/llm_branch` — a SHUTTLE, not an engine.\n *\n * It carries the declared routes and the decision prompt out to whatever LLM\n * client the host registered, and carries the chosen port back down the graph.\n * It contains no provider SDK, no prompt engineering, no response parsing and\n * no retry policy — all of that belongs to the host's client, which is what\n * lets this node live in core without every consumer inheriting an LLM\n * dependency.\n *\n * The one thing it does own is graph integrity, because that is a workflow\n * concern rather than an AI one: a port the model invents must never route.\n */\n\n/** Read the node's declared routes out of config. */\nexport function declaredRoutes(config: Record<string, unknown>): LlmRoute[] {\n const raw = config.routes;\n if (!Array.isArray(raw)) return [];\n return raw\n .map((r) => ({ port: String((r as any)?.port ?? \"\").trim(), description: (r as any)?.description }))\n .filter((r) => r.port !== \"\");\n}\n\n/**\n * Where a run goes when the model returns a port that was never offered.\n *\n * Emitting on a port with no edge silently ends the branch — the worst failure\n * mode in a workflow engine, because the run reports success having done\n * nothing. So: the `fallback` port when it exists, else the first declared\n * route, and always loudly.\n */\nexport function resolveFallbackPort(routes: LlmRoute[], fallbackEnabled: boolean): string {\n if (fallbackEnabled) return \"fallback\";\n // Callers only reach this with at least one declared route (a node with none\n // aborts earlier), so there is always somewhere safe to land.\n return routes[0]?.port ?? \"out\";\n}\n\nexport const llmRouterExecutor: NodeExecutor = async (ctx) => {\n const config = ((ctx.node.data as any)?.config ?? {}) as Record<string, unknown>;\n const routes = declaredRoutes(config);\n\n if (routes.length === 0) {\n ctx.abort(\"llm_router has no routes configured\");\n }\n\n const client = getLlmClient();\n if (!client) {\n // Fail loudly rather than guessing a branch. A silent default here would\n // look like the model made a choice.\n ctx.abort(\n \"No LLM client registered. Call registerLlmClient() with your provider adapter — fancy-flow ships the routing, not the model call.\",\n );\n }\n\n const fallbackEnabled = config.fallback !== false;\n\n const choice = await client!.chooseRoute({\n system: typeof config.system === \"string\" ? config.system : undefined,\n prompt: String(config.prompt ?? ctx.inputs ?? \"\"),\n routes,\n provider: typeof config.provider === \"string\" ? config.provider : undefined,\n model: typeof config.model === \"string\" ? config.model : undefined,\n credential: typeof config.credential === \"string\" ? config.credential : undefined,\n });\n\n const offered = new Set(routes.map((r) => r.port));\n let port = choice?.port ?? \"\";\n let reason = choice?.reason;\n\n if (!offered.has(port)) {\n const safe = resolveFallbackPort(routes, fallbackEnabled);\n ctx.emit({\n type: \"log\",\n nodeId: ctx.node.id,\n level: \"warn\",\n message: `llm_router: model returned \"${port || \"(nothing)\"}\", which is not a declared route. Routing to \"${safe}\".`,\n });\n reason = reason ?? `unrecognised route \"${port}\"`;\n port = safe;\n }\n\n // The reason travels WITH the value, so a completed run explains itself\n // without needing the model call replayed.\n return { __port: port, value: { route: port, reason, input: ctx.inputs } };\n};\n","import { memo, useMemo } from \"react\";\nimport { Handle, Position, type NodeProps } from \"@xyflow/react\";\nimport type { FlowNode, NodeRunStatus, PortDescriptor } from \"../types\";\nimport { categoryAccent, getNodeKind } from \"./registry\";\nimport { nodeConfig, resolveNodePorts } from \"./ports\";\n\n/**\n * RegistryNode — generic node renderer that looks up the node's kind in\n * the registry and applies its `accent`/`label`/`icon`/`renderBody`. Used\n * as the xyflow node component for every registered kind.\n */\nfunction RegistryNodeInner(props: NodeProps<FlowNode>) {\n const kindName = (props.data as any).kind ?? props.type;\n const kind = useMemo(() => getNodeKind(kindName), [kindName]);\n\n if (!kind) {\n return (\n <div className=\"ff-node ff-node--unknown\">\n <div className=\"ff-node__header\" style={{ background: \"#71717a\" }}>\n <span className=\"ff-node__tag\">UNKNOWN</span>\n <span className=\"ff-node__label\">{kindName}</span>\n </div>\n <p className=\"ff-node__desc\">No registered kind for \"{kindName}\".</p>\n </div>\n );\n }\n\n const data = props.data;\n const status: NodeRunStatus = data.status ?? \"idle\";\n const accent = kind.accent ?? categoryAccent(kind.category);\n const resolved = resolveNodePorts(props, kind);\n const inputs: PortDescriptor[] = resolved.inputs ?? defaultInputs(kind.category);\n const outputs: PortDescriptor[] = resolved.outputs ?? defaultOutputs(kind.category);\n const config = nodeConfig(props);\n const label = data.label ?? kind.label;\n\n return (\n <div\n className={[\n \"ff-node\",\n `ff-node--status-${status}`,\n `ff-node--cat-${kind.category}`,\n props.selected ? \"ff-node--selected\" : \"\",\n ].filter(Boolean).join(\" \")}\n style={{ borderColor: props.selected ? accent : undefined }}\n >\n <header className=\"ff-node__header\" style={{ background: accent }}>\n {kind.icon && <span className=\"ff-node__icon\" aria-hidden>{kind.icon}</span>}\n <span className=\"ff-node__tag\">{kind.label.toUpperCase()}</span>\n <span className=\"ff-node__label\">{label}</span>\n {status !== \"idle\" && <span className={`ff-node__dot ff-node__dot--${status}`} aria-label={`status ${status}`} />}\n </header>\n\n {data.description && <p className=\"ff-node__desc\">{data.description}</p>}\n\n <div className=\"ff-node__body\">\n {kind.renderBody\n ? kind.renderBody({ nodeId: props.id, config: config as any, selected: props.selected ?? false })\n : <DefaultBody config={config} kind={kind.configSchema} />}\n </div>\n\n {data.statusText && <p className=\"ff-node__status-text\">{data.statusText}</p>}\n\n {inputs.map((p, i) => (\n <Handle\n key={p.id}\n type=\"target\"\n position={Position.Left}\n id={p.id}\n style={portStyle(i, inputs.length)}\n title={p.label ?? p.id}\n />\n ))}\n {outputs.map((p, i) => (\n <Handle\n key={p.id}\n type=\"source\"\n position={Position.Right}\n id={p.id}\n style={portStyle(i, outputs.length)}\n title={p.label ?? p.id}\n />\n ))}\n </div>\n );\n}\n\nexport const RegistryNode = memo(RegistryNodeInner);\n\nfunction defaultInputs(category: string): PortDescriptor[] {\n return category === \"trigger\" ? [] : [{ id: \"in\" }];\n}\nfunction defaultOutputs(category: string): PortDescriptor[] {\n return category === \"output\" ? [] : [{ id: \"out\" }];\n}\n\nfunction portStyle(i: number, total: number): React.CSSProperties {\n if (total <= 1) return {};\n const slot = (100 / (total + 1)) * (i + 1);\n return { top: `${slot}%` };\n}\n\n/**\n * DefaultBody — compact summary of the config values for nodes that\n * don't provide a custom renderBody. Skips fields that look empty.\n */\nfunction DefaultBody({ config, kind }: { config: Record<string, unknown>; kind?: import(\"./types\").ConfigField[] }) {\n const fields = kind ?? [];\n const visible = fields\n .map((f) => ({ field: f, value: config[f.key] }))\n .filter(({ value }) => value !== undefined && value !== \"\" && value !== null);\n if (visible.length === 0) {\n return <div className=\"ff-node__body-empty\">— configure in the panel</div>;\n }\n return (\n <ul className=\"ff-node__summary\">\n {visible.slice(0, 4).map(({ field, value }) => (\n <li key={field.key}>\n <span className=\"ff-node__summary-key\">{field.label}:</span>\n <span className=\"ff-node__summary-value\">{previewValue(value)}</span>\n </li>\n ))}\n {visible.length > 4 && <li className=\"ff-node__summary-more\">+ {visible.length - 4} more</li>}\n </ul>\n );\n}\n\nfunction previewValue(v: unknown): string {\n if (typeof v === \"string\") return v.length > 30 ? v.slice(0, 27) + \"…\" : v;\n if (typeof v === \"number\" || typeof v === \"boolean\") return String(v);\n try {\n const j = JSON.stringify(v);\n return j.length > 30 ? j.slice(0, 27) + \"…\" : j;\n } catch {\n return \"[object]\";\n }\n}\n","import { createElement } from \"react\";\nimport { registerNodeKind } from \"./registry\";\nimport { RichInputPreview } from \"./rich-input\";\nimport { llmRouterExecutor } from \"./llm-router\";\nimport { subflowExecutor, subflowPorts, DEFAULT_MAX_DEPTH } from \"./subflow\";\nimport type { PortDescriptor } from \"../types\";\nimport type { ConfigField, NodeKindDefinition } from \"./types\";\n\n/**\n * Built-in agentic node kit. Every kind ships with schema + UI but\n * NO executor — host apps wire executors per kind so they control where\n * memory, data, network, and AI calls actually go.\n */\n\n/**\n * Ports for `switch_case`, derived from its `cases` map (match value → port).\n *\n * Several match values may route to the same port, so ports are de-duplicated\n * and labelled with every value that reaches them (\"a|c\"). `default` is always\n * present — unmatched input has to land somewhere.\n */\nfunction casePorts(cases: unknown): PortDescriptor[] {\n const byPort = new Map<string, string[]>();\n if (cases && typeof cases === \"object\" && !Array.isArray(cases)) {\n for (const [match, port] of Object.entries(cases as Record<string, unknown>)) {\n if (typeof port !== \"string\" || port === \"\" || port === \"default\") continue;\n const matches = byPort.get(port) ?? [];\n matches.push(match);\n byPort.set(port, matches);\n }\n }\n const ports: PortDescriptor[] = [...byPort].map(([id, matches]) => ({\n id,\n label: matches.join(\"|\"),\n }));\n return [...ports, { id: \"default\", label: \"default\" }];\n}\n\n/**\n * Ports for `llm_branch`, derived from its `routes` list. Blank and duplicate\n * port names are dropped so a half-typed route can't collide with a real one.\n */\nfunction routePorts(routes: unknown, fallback?: unknown): PortDescriptor[] {\n const ports: PortDescriptor[] = [];\n const seen = new Set<string>();\n if (Array.isArray(routes)) {\n for (const route of routes) {\n const id = (route as any)?.port;\n if (typeof id !== \"string\" || id.trim() === \"\" || seen.has(id)) continue;\n seen.add(id);\n ports.push({ id, label: id });\n }\n }\n if (fallback !== false && !seen.has(\"fallback\")) {\n ports.push({ id: \"fallback\", label: \"fallback\" });\n }\n if (ports.length === 0) ports.push({ id: \"out\" });\n return ports;\n}\n\nconst HTTP_METHODS: ConfigField[] = [\n { type: \"select\", key: \"method\", label: \"Method\", options: [\n { value: \"GET\", label: \"GET\" },\n { value: \"POST\", label: \"POST\" },\n { value: \"PUT\", label: \"PUT\" },\n { value: \"PATCH\", label: \"PATCH\" },\n { value: \"DELETE\", label: \"DELETE\" },\n ], default: \"GET\", required: true },\n];\n\nconst KINDS: NodeKindDefinition[] = [\n // ───────────── Triggers ─────────────\n {\n name: \"@particle-academy/manual_trigger\",\n aliases: [\"manual_trigger\", \"@fancy/manual_trigger\"],\n category: \"trigger\",\n label: \"Manual\",\n description: \"Entry point fired when the user clicks Run.\",\n icon: \"⚡\",\n inputs: [],\n outputs: [{ id: \"out\" }],\n },\n {\n name: \"@particle-academy/webhook_trigger\",\n aliases: [\"webhook_trigger\", \"@fancy/webhook_trigger\"],\n category: \"trigger\",\n label: \"Webhook\",\n description: \"Triggered by an inbound HTTP request to a host-provided URL.\",\n icon: \"📡\",\n inputs: [],\n outputs: [{ id: \"out\", label: \"payload\" }],\n configSchema: [\n { type: \"text\", key: \"path\", label: \"Path\", placeholder: \"/hooks/my-flow\", required: true },\n { type: \"select\", key: \"method\", label: \"Method\", options: [\n { value: \"POST\", label: \"POST\" }, { value: \"GET\", label: \"GET\" },\n ], default: \"POST\" },\n { type: \"credential\", key: \"secret\", label: \"Verifying secret\", credentialType: \"webhook_secret\" },\n ],\n },\n {\n name: \"@particle-academy/schedule_trigger\",\n aliases: [\"schedule_trigger\", \"@fancy/schedule_trigger\"],\n category: \"trigger\",\n label: \"Schedule\",\n description: \"Fires on a cron schedule (host-implemented).\",\n icon: \"⏱\",\n inputs: [],\n outputs: [{ id: \"out\" }],\n configSchema: [\n { type: \"text\", key: \"cron\", label: \"Cron\", placeholder: \"*/5 * * * *\", required: true,\n description: \"Standard 5-field cron expression.\" },\n { type: \"text\", key: \"timezone\", label: \"Timezone\", placeholder: \"UTC\", default: \"UTC\" },\n ],\n },\n {\n name: \"@particle-academy/user_input\",\n aliases: [\"user_input\", \"@fancy/user_input\"],\n pausesForHuman: \"input\",\n category: \"human\",\n label: \"User Input\",\n description: \"Pause the flow until the user submits the configured form.\",\n icon: \"✎\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\", label: \"values\" }],\n configSchema: [\n { type: \"text\", key: \"title\", label: \"Form title\", default: \"Need your input\" },\n {\n type: \"repeater\",\n key: \"fields\",\n label: \"Fields\",\n description: \"The form the run pauses on.\",\n titleKey: \"label\",\n addLabel: \"Add field\",\n minItems: 1,\n fields: [\n { type: \"text\", key: \"key\", label: \"Key\", required: true, placeholder: \"answer\" },\n { type: \"text\", key: \"label\", label: \"Label\", required: true, placeholder: \"Your answer\" },\n {\n type: \"select\", key: \"type\", label: \"Type\", default: \"text\",\n options: [\n { value: \"text\", label: \"Text\" },\n { value: \"textarea\", label: \"Long text\" },\n { value: \"number\", label: \"Number\" },\n { value: \"select\", label: \"Select\" },\n { value: \"switch\", label: \"Switch\" },\n ],\n },\n { type: \"switch\", key: \"required\", label: \"Required\", default: false },\n ],\n default: [{ key: \"answer\", label: \"Your answer\", type: \"textarea\", required: true }],\n },\n ],\n },\n\n {\n name: \"@particle-academy/rich_user_input\",\n aliases: [\"rich_user_input\", \"@fancy/rich_user_input\"],\n pausesForHuman: \"input\",\n category: \"human\",\n label: \"Rich User Input\",\n description: \"Pause the flow on a fully authored page — content, required reading, multi-section forms.\",\n icon: \"▤\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"out\", label: \"values\" }],\n configSchema: [\n { type: \"text\", key: \"title\", label: \"Step title\", default: \"Please review\" },\n {\n type: \"document\",\n key: \"document\",\n label: \"Page content\",\n documentType: \"stages\",\n description: \"Authored with the host's document editor (fancy-cms Stages).\",\n },\n { type: \"switch\", key: \"requireConfirm\", label: \"Require explicit confirmation\", default: true },\n { type: \"text\", key: \"submitLabel\", label: \"Submit button\", default: \"Continue\" },\n ],\n // Preview the authored page inside a FauxClient frame, so the canvas shows\n // what the person hitting this step will actually see.\n renderBody: (ctx) => createElement(RichInputPreview, { config: (ctx.config ?? {}) as Record<string, unknown> }),\n },\n\n {\n name: \"@particle-academy/subflow\",\n aliases: [\"subflow\", \"@fancy/subflow\"],\n category: \"logic\",\n label: \"SubFlow\",\n description: \"Run another workflow and bring its result — or its live progress — back into this one.\",\n icon: \"⧉\",\n inputs: [{ id: \"in\" }],\n // The stream port only exists when something actually streams.\n outputs: (config: any) => subflowPorts(config ?? {}),\n // Core, not marketplace: it runs a child graph through this same engine and\n // needs nothing from outside except where workflows live.\n executor: subflowExecutor,\n configSchema: [\n { type: \"text\", key: \"workflow\", label: \"Workflow\", required: true,\n placeholder: \"onboarding-v2\",\n description: \"Reference resolved by the host's registerWorkflowResolver().\" },\n { type: \"number\", key: \"version\", label: \"Pin to version\",\n description: \"Optional. Leave blank to always run the child's current version. Pinning fails the run loudly if the child has moved on — without it, someone edits the child and this flow silently runs different logic.\" },\n {\n type: \"select\", key: \"mode\", label: \"Return\", default: \"output\",\n options: [\n { value: \"output\", label: \"Output when it finishes\" },\n { value: \"stream\", label: \"Stream progress as it runs\" },\n { value: \"both\", label: \"Both — stream, then output\" },\n ],\n description: \"Streaming adds a second port so a parent can show progress instead of a spinner.\",\n },\n { type: \"keyvalue\", key: \"inputs\", label: \"Input mapping\",\n description: \"Values handed to the child's entry points. Omit to pass this node's inputs straight through.\",\n keyLabel: \"Name\", valueLabel: \"Value\", addLabel: \"Add input\" },\n { type: \"number\", key: \"maxDepth\", label: \"Max nesting depth\", default: DEFAULT_MAX_DEPTH, min: 1, max: 32,\n description: \"Guards against a workflow referencing itself.\" },\n ],\n },\n\n // ───────────── Logic ─────────────\n {\n name: \"@particle-academy/branch\",\n aliases: [\"branch\", \"@fancy/branch\"],\n category: \"logic\",\n label: \"Branch\",\n description: \"Multi-way branch on a condition or value.\",\n icon: \"◇\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"true\", label: \"true\" }, { id: \"false\", label: \"false\" }],\n configSchema: [\n {\n type: \"select\", key: \"match\", label: \"Match\", default: \"all\",\n options: [\n { value: \"all\", label: \"All conditions (AND)\" },\n { value: \"any\", label: \"Any condition (OR)\" },\n ],\n },\n {\n type: \"repeater\",\n key: \"conditions\",\n label: \"Conditions\",\n description: \"Routes to `true` when these match, otherwise `false`.\",\n titleKey: \"left\",\n addLabel: \"Add condition\",\n minItems: 1,\n fields: [\n { type: \"expression\", key: \"left\", label: \"Value\", example: \"{{ $json.status }}\", required: true },\n {\n type: \"select\", key: \"operator\", label: \"Is\", default: \"eq\",\n options: [\n { value: \"eq\", label: \"equal to\" },\n { value: \"neq\", label: \"not equal to\" },\n { value: \"contains\", label: \"contains\" },\n { value: \"not_contains\", label: \"does not contain\" },\n { value: \"gt\", label: \"greater than\" },\n { value: \"gte\", label: \"greater than or equal to\" },\n { value: \"lt\", label: \"less than\" },\n { value: \"lte\", label: \"less than or equal to\" },\n { value: \"truthy\", label: \"true\" },\n { value: \"falsy\", label: \"false\" },\n { value: \"empty\", label: \"empty\" },\n { value: \"not_empty\", label: \"not empty\" },\n ],\n },\n { type: \"text\", key: \"right\", label: \"Compared to\", placeholder: \"active\" },\n ],\n default: [{ left: \"\", operator: \"eq\", right: \"\" }],\n },\n {\n type: \"expression\",\n key: \"condition\",\n label: \"Raw expression (advanced)\",\n example: \"{{ $json.active && $json.score > 10 }}\",\n description: \"Escape hatch for logic the builder can't express. Overrides the conditions above when set.\",\n },\n ],\n },\n {\n name: \"@particle-academy/switch_case\",\n aliases: [\"switch_case\", \"@fancy/switch_case\"],\n category: \"logic\",\n label: \"Switch\",\n description: \"Route to one of N labelled outputs based on a key.\",\n icon: \"⤳\",\n inputs: [{ id: \"in\" }],\n // Ports ARE the config: every distinct port a case routes to becomes an\n // output handle, plus the always-present `default`. Editing the cases map\n // moves the ports on the canvas and the ports the runtime activates.\n outputs: (config: any) => casePorts(config?.cases),\n configSchema: [\n { type: \"expression\", key: \"value\", label: \"Switch on\", example: \"{{ $json.kind }}\", required: true },\n {\n type: \"keyvalue\",\n key: \"cases\",\n label: \"Cases\",\n description: \"Match value → output port. Unmatched input takes `default`.\",\n keyLabel: \"When value is\",\n valueLabel: \"Route to port\",\n keyPlaceholder: \"a\",\n valuePlaceholder: \"case_a\",\n addLabel: \"Add case\",\n default: { a: \"case_a\", b: \"case_b\" },\n },\n ],\n },\n {\n name: \"@particle-academy/for_each\",\n aliases: [\"for_each\", \"@fancy/for_each\"],\n category: \"logic\",\n label: \"For Each\",\n description: \"Iterate over a list, emitting each item on `item`.\",\n icon: \"↻\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"item\", label: \"item\" }, { id: \"done\", label: \"done\" }],\n configSchema: [\n { type: \"expression\", key: \"source\", label: \"List\", example: \"{{ $json.users }}\", required: true },\n { type: \"number\", key: \"concurrency\", label: \"Concurrency\", default: 1, min: 1, max: 50 },\n ],\n },\n {\n name: \"@particle-academy/merge\",\n aliases: [\"merge\", \"@fancy/merge\"],\n category: \"logic\",\n label: \"Merge\",\n description: \"Combine multiple inputs into one object or array.\",\n icon: \"⊕\",\n inputs: [{ id: \"a\" }, { id: \"b\" }],\n outputs: [{ id: \"out\" }],\n configSchema: [\n { type: \"select\", key: \"mode\", label: \"Mode\", default: \"merge\",\n options: [{ value: \"merge\", label: \"Object merge\" }, { value: \"concat\", label: \"Array concat\" }] },\n ],\n },\n {\n name: \"@particle-academy/wait\",\n aliases: [\"wait\", \"@fancy/wait\"],\n category: \"logic\",\n label: \"Wait\",\n description: \"Sleep or wait for an external event.\",\n icon: \"⏸\",\n configSchema: [\n { type: \"select\", key: \"mode\", label: \"Mode\", default: \"duration\",\n options: [{ value: \"duration\", label: \"Duration\" }, { value: \"until\", label: \"Until timestamp\" }, { value: \"event\", label: \"External event\" }] },\n { type: \"text\", key: \"duration\", label: \"Duration\", placeholder: \"5s, 10m, 1h\", description: \"Used when mode = duration.\" },\n ],\n },\n {\n name: \"@particle-academy/transform\",\n aliases: [\"transform\", \"@fancy/transform\"],\n category: \"logic\",\n label: \"Transform\",\n description: \"Reshape data with an expression.\",\n icon: \"ƒ\",\n configSchema: [\n {\n type: \"select\", key: \"mode\", label: \"Build the output\", default: \"fields\",\n options: [\n { value: \"fields\", label: \"Field by field\" },\n { value: \"expression\", label: \"One expression\" },\n ],\n },\n {\n type: \"repeater\",\n key: \"fields\",\n label: \"Output fields\",\n description: \"Each row becomes a key on the result.\",\n titleKey: \"key\",\n addLabel: \"Add field\",\n fields: [\n { type: \"text\", key: \"key\", label: \"Key\", required: true, placeholder: \"name\" },\n { type: \"expression\", key: \"value\", label: \"Value\", example: \"{{ $json.first }}\", required: true },\n ],\n default: [{ key: \"\", value: \"\" }],\n },\n {\n type: \"expression\",\n key: \"expression\",\n label: \"Expression (advanced)\",\n example: \"{{ { id: $json.id, name: $json.first + ' ' + $json.last } }}\",\n description: \"Used when the mode above is set to one expression.\",\n },\n ],\n },\n\n // ───────────── Data ─────────────\n {\n name: \"@particle-academy/memory_store\",\n aliases: [\"memory_store\", \"@fancy/memory_store\"],\n category: \"data\",\n label: \"Memory Store\",\n description: \"Read or write per-conversation memory.\",\n icon: \"🧠\",\n configSchema: [\n { type: \"select\", key: \"operation\", label: \"Operation\", required: true, default: \"read\",\n options: [{ value: \"read\", label: \"Read\" }, { value: \"write\", label: \"Write\" }, { value: \"append\", label: \"Append\" }] },\n { type: \"text\", key: \"key\", label: \"Key\", placeholder: \"user.preferences\", required: true },\n { type: \"expression\", key: \"value\", label: \"Value (write/append only)\", example: \"{{ $json }}\" },\n { type: \"credential\", key: \"store\", label: \"Memory store\", credentialType: \"memory_store\" },\n ],\n },\n {\n name: \"@particle-academy/data_store\",\n aliases: [\"data_store\", \"@fancy/data_store\"],\n category: \"data\",\n label: \"Data Store\",\n description: \"Key-value or table read/write against a host store.\",\n icon: \"🗃\",\n configSchema: [\n { type: \"select\", key: \"operation\", label: \"Operation\", required: true, default: \"get\",\n options: [\n { value: \"get\", label: \"Get\" }, { value: \"set\", label: \"Set\" }, { value: \"delete\", label: \"Delete\" },\n { value: \"query\", label: \"Query\" }, { value: \"list\", label: \"List\" },\n ] },\n { type: \"text\", key: \"table\", label: \"Table / collection\", required: true },\n { type: \"text\", key: \"key\", label: \"Key\" },\n { type: \"keyvalue\", key: \"where\", label: \"Where\",\n description: \"Field/value pairs to match. For query and list operations.\",\n keyLabel: \"Field\", valueLabel: \"Equals\", addLabel: \"Add filter\" },\n { type: \"expression\", key: \"value\", label: \"Value (set only)\", example: \"{{ $json }}\" },\n { type: \"credential\", key: \"store\", label: \"Data store\", credentialType: \"data_store\" },\n ],\n },\n {\n name: \"@particle-academy/variable\",\n aliases: [\"variable\", \"@fancy/variable\"],\n category: \"data\",\n label: \"Variable\",\n description: \"Workflow-scoped value used by other nodes.\",\n icon: \"𝓍\",\n configSchema: [\n { type: \"text\", key: \"name\", label: \"Name\", required: true },\n { type: \"expression\", key: \"value\", label: \"Value\", required: true },\n ],\n },\n\n // ───────────── AI ─────────────\n {\n name: \"@particle-academy/llm_call\",\n aliases: [\"llm_call\", \"@fancy/llm_call\"],\n category: \"ai\",\n label: \"LLM Call\",\n description: \"Send a prompt + context to a model and receive a response.\",\n icon: \"✦\",\n configSchema: [\n { type: \"select\", key: \"provider\", label: \"Provider\", default: \"anthropic\",\n options: [\n { value: \"anthropic\", label: \"Anthropic\" },\n { value: \"openai\", label: \"OpenAI\" },\n { value: \"custom\", label: \"Custom\" },\n ] },\n { type: \"text\", key: \"model\", label: \"Model\", placeholder: \"claude-sonnet-4-5\", required: true },\n { type: \"textarea\", key: \"system\", label: \"System prompt\", rows: 4 },\n { type: \"expression\", key: \"prompt\", label: \"User prompt\", example: \"{{ $json.question }}\", required: true },\n { type: \"number\", key: \"temperature\", label: \"Temperature\", min: 0, max: 2, step: 0.1, default: 0.7 },\n { type: \"number\", key: \"max_tokens\", label: \"Max tokens\", min: 1, max: 8192, default: 1024 },\n {\n type: \"repeater\", key: \"tools\", label: \"Tools\",\n description: \"Tools the model may call.\",\n titleKey: \"name\", addLabel: \"Add tool\",\n fields: [\n { type: \"text\", key: \"name\", label: \"Name\", required: true, placeholder: \"search_index\" },\n { type: \"text\", key: \"description\", label: \"When to use it\" },\n { type: \"json\", key: \"input_schema\", label: \"Input schema\",\n description: \"JSON Schema for the tool's arguments.\" },\n ],\n },\n { type: \"credential\", key: \"credential\", label: \"API credential\", credentialType: \"llm_credential\" },\n ],\n },\n {\n name: \"@particle-academy/llm_router\",\n // Every id this node has ever shipped under keeps resolving — MOIC's saved\n // flows carry the bare `llm_branch`.\n aliases: [\"llm_router\", \"llm_branch\", \"@fancy/llm_branch\", \"@fancy/llm_router\"],\n category: \"ai\",\n label: \"LLM Router\",\n description: \"Let a model choose which route the flow takes.\",\n icon: \"✧\",\n inputs: [{ id: \"in\" }],\n // Each declared route is a port. The executor returns `{ __port: id }`\n // (or `Port.only(id)` on the PHP runtime) to pick one.\n outputs: (config: any) => routePorts(config?.routes, config?.fallback),\n // A shuttle, not an engine: it carries the routes out to whatever LLM\n // client the host registered and carries the choice back. No provider SDK\n // reaches core, so this stays a builtin without adding a dependency.\n executor: llmRouterExecutor,\n configSchema: [\n { type: \"textarea\", key: \"system\", label: \"System prompt\", rows: 3,\n description: \"Optional framing for the routing decision.\" },\n { type: \"expression\", key: \"prompt\", label: \"What to route on\",\n example: \"{{ $json.message }}\", required: true },\n {\n type: \"repeater\",\n key: \"routes\",\n label: \"Routes\",\n description: \"The model picks exactly one. Descriptions are what it chooses between — make them distinct.\",\n titleKey: \"port\",\n addLabel: \"Add route\",\n minItems: 2,\n fields: [\n { type: \"text\", key: \"port\", label: \"Port\", required: true, placeholder: \"billing\" },\n { type: \"text\", key: \"description\", label: \"When to choose it\", required: true,\n placeholder: \"The user is asking about an invoice, refund, or payment.\" },\n ],\n default: [\n { port: \"a\", description: \"Describe when the model should pick this route.\" },\n { port: \"b\", description: \"Describe when the model should pick this route.\" },\n ],\n },\n { type: \"select\", key: \"provider\", label: \"Provider\", default: \"anthropic\",\n options: [\n { value: \"anthropic\", label: \"Anthropic\" },\n { value: \"openai\", label: \"OpenAI\" },\n { value: \"custom\", label: \"Custom\" },\n ] },\n { type: \"text\", key: \"model\", label: \"Model\", placeholder: \"claude-sonnet-4-5\" },\n { type: \"switch\", key: \"fallback\", label: \"Add a `fallback` port\", default: true,\n description: \"Where the flow goes if the model returns no usable route.\" },\n { type: \"credential\", key: \"credential\", label: \"API credential\", credentialType: \"llm_credential\" },\n ],\n },\n {\n name: \"@particle-academy/tool_use\",\n aliases: [\"tool_use\", \"@fancy/tool_use\"],\n category: \"ai\",\n label: \"Tool Use\",\n description: \"Hand control to a host-registered tool by name.\",\n icon: \"🛠\",\n configSchema: [\n { type: \"text\", key: \"tool\", label: \"Tool name\", placeholder: \"search_index\", required: true },\n { type: \"expression\", key: \"args\", label: \"Arguments\", example: \"{{ { query: $json.q } }}\" },\n ],\n },\n {\n name: \"@particle-academy/embed_search\",\n aliases: [\"embed_search\", \"@fancy/embed_search\"],\n category: \"ai\",\n label: \"Embed & Search\",\n description: \"Embed a query and search a vector store.\",\n icon: \"✺\",\n configSchema: [\n { type: \"expression\", key: \"query\", label: \"Query\", required: true, example: \"{{ $json.question }}\" },\n { type: \"number\", key: \"topK\", label: \"Top K\", default: 5, min: 1, max: 50 },\n { type: \"credential\", key: \"vectorStore\", label: \"Vector store\", credentialType: \"vector_store\" },\n ],\n },\n\n // ───────────── IO ─────────────\n {\n name: \"@particle-academy/api_request\",\n aliases: [\"api_request\", \"@fancy/api_request\"],\n category: \"io\",\n label: \"API Request\",\n description: \"HTTP request to any URL.\",\n icon: \"↔\",\n configSchema: [\n ...HTTP_METHODS,\n { type: \"text\", key: \"url\", label: \"URL\", placeholder: \"https://api.example.com/...\", required: true },\n { type: \"keyvalue\", key: \"headers\", label: \"Headers\",\n keyLabel: \"Header\", valueLabel: \"Value\",\n keyPlaceholder: \"content-type\", valuePlaceholder: \"application/json\",\n addLabel: \"Add header\",\n default: { \"content-type\": \"application/json\" } },\n { type: \"json\", key: \"body\", label: \"Body\" },\n { type: \"credential\", key: \"auth\", label: \"Auth\", credentialType: \"api_credential\" },\n ],\n },\n {\n name: \"@particle-academy/webhook_out\",\n aliases: [\"webhook_out\", \"@fancy/webhook_out\"],\n category: \"io\",\n label: \"Send Webhook\",\n description: \"POST a payload to a configured URL.\",\n icon: \"↗\",\n configSchema: [\n { type: \"text\", key: \"url\", label: \"URL\", required: true },\n { type: \"keyvalue\", key: \"headers\", label: \"Headers\",\n keyLabel: \"Header\", valueLabel: \"Value\", addLabel: \"Add header\" },\n { type: \"expression\", key: \"payload\", label: \"Payload\", required: true, example: \"{{ $json }}\" },\n ],\n },\n\n // ───────────── Human ─────────────\n {\n name: \"@particle-academy/human_approval\",\n aliases: [\"human_approval\", \"@fancy/human_approval\"],\n pausesForHuman: \"approval\",\n category: \"human\",\n label: \"Human Approval\",\n description: \"Pause until a human approves or denies.\",\n icon: \"✓\",\n inputs: [{ id: \"in\" }],\n outputs: [{ id: \"approved\", label: \"approved\" }, { id: \"denied\", label: \"denied\" }],\n configSchema: [\n { type: \"text\", key: \"title\", label: \"Approval title\", default: \"Approve action\" },\n { type: \"textarea\", key: \"description\", label: \"Description for approver\", rows: 3 },\n { type: \"credential\", key: \"channel\", label: \"Notify channel\", credentialType: \"notify_channel\" },\n ],\n },\n {\n name: \"@particle-academy/notify\",\n aliases: [\"notify\", \"@fancy/notify\"],\n category: \"human\",\n label: \"Notify\",\n description: \"Send a message via Slack / email / SMS / etc.\",\n icon: \"🔔\",\n configSchema: [\n { type: \"select\", key: \"channel\", label: \"Channel\", default: \"slack\",\n options: [\n { value: \"slack\", label: \"Slack\" }, { value: \"email\", label: \"Email\" },\n { value: \"sms\", label: \"SMS\" }, { value: \"discord\", label: \"Discord\" },\n ] },\n { type: \"text\", key: \"to\", label: \"To\", required: true },\n { type: \"expression\", key: \"message\", label: \"Message\", required: true, example: \"{{ $json.summary }}\" },\n ],\n },\n\n // ───────────── Output ─────────────\n {\n name: \"@particle-academy/output\",\n aliases: [\"output\", \"@fancy/output\"],\n category: \"output\",\n label: \"Output\",\n description: \"Terminal node — captures the workflow's result.\",\n icon: \"●\",\n inputs: [{ id: \"in\" }],\n outputs: [],\n },\n {\n name: \"@particle-academy/log\",\n aliases: [\"log\", \"@fancy/log\"],\n category: \"output\",\n label: \"Log\",\n description: \"Send to the run feed.\",\n icon: \"≡\",\n inputs: [{ id: \"in\" }],\n outputs: [],\n configSchema: [\n { type: \"select\", key: \"level\", label: \"Level\", default: \"info\",\n options: [{ value: \"info\", label: \"info\" }, { value: \"warn\", label: \"warn\" }, { value: \"error\", label: \"error\" }] },\n { type: \"expression\", key: \"message\", label: \"Message\", required: true, example: \"{{ $json }}\" },\n ],\n },\n];\n\n/** Register every built-in kind. Idempotent via the registry. */\nexport function registerBuiltinKinds(): void {\n for (const k of KINDS) registerNodeKind(k);\n}\n\n/** Exported list for hosts that want to selectively re-register. */\nexport const BUILTIN_KINDS: NodeKindDefinition[] = KINDS;\n","export type {\n ConfigField,\n TextConfigField,\n TextareaConfigField,\n NumberConfigField,\n SelectConfigField,\n SwitchConfigField,\n JsonConfigField,\n ExpressionConfigField,\n CredentialConfigField,\n RepeaterConfigField,\n RepeaterRowField,\n KeyValueConfigField,\n DocumentConfigField,\n NodeCategory,\n NodeKindDefinition,\n PortSpec,\n RenderBodyContext,\n} from \"./types\";\n\nexport { resolvePortSpec, resolveNodePorts, nodeConfig } from \"./ports\";\n\n/** Host capabilities — core declares the contract, the host supplies the impl. */\nexport {\n registerLlmClient,\n getLlmClient,\n registerWorkflowResolver,\n getWorkflowResolver,\n capabilityStatus,\n type LlmClient,\n type LlmRoute,\n type LlmRouteRequest,\n type LlmRouteChoice,\n type WorkflowResolver,\n type WorkflowResolution,\n type WorkflowResolutionFailure,\n type CapabilityId,\n isResolutionFailure,\n} from \"./capabilities\";\n\n/**\n * The human-pause contract — a run waiting for a person, not a failure.\n * `decodePause` is the one function a durable runner needs.\n */\nexport {\n pauseForHuman,\n encodePause,\n decodePause,\n isPause,\n PAUSE_PREFIX,\n LEGACY_PAUSE_PREFIXES,\n type PauseAwaiting,\n type PauseSignal,\n} from \"./pause\";\n\nexport { subflowExecutor, subflowPorts, subflowMode, DEFAULT_MAX_DEPTH, type SubflowMode } from \"./subflow\";\nexport { llmRouterExecutor, declaredRoutes, resolveFallbackPort } from \"./llm-router\";\n/** @deprecated Renamed to `llmRouterExecutor` — the id and label now match. */\nexport { llmRouterExecutor as llmBranchExecutor } from \"./llm-router\";\n\nexport {\n registerRichInputAdapter,\n getRichInputAdapter,\n isRichInputEnabled,\n onRichInputAdapterChanged,\n RichInputPreview,\n type RichInputAdapter,\n} from \"./rich-input\";\n\nexport {\n registerNodeKind,\n getNodeKind,\n resolveKindId,\n kindIds,\n listNodeKinds,\n onNodeKindsChanged,\n defaultConfigFor,\n validateConfig,\n categoryAccent,\n} from \"./registry\";\n\nexport { RegistryNode } from \"./RegistryNode\";\nexport { registerBuiltinKinds, BUILTIN_KINDS } from \"./builtin\";\n\nimport type { NodeTypes } from \"@xyflow/react\";\nimport { RegistryNode } from \"./RegistryNode\";\nimport { kindIds, listNodeKinds } from \"./registry\";\n\n/**\n * Build an xyflow `nodeTypes` map from the registry — every registered\n * kind gets `RegistryNode` as its renderer. Refresh manually via\n * `useNodeTypes()` (a hook that subscribes to registry changes).\n */\nexport function buildNodeTypes(): NodeTypes {\n const map: NodeTypes = {};\n for (const k of listNodeKinds()) {\n // Key on every id the kind answers to, not just the canonical one. xyflow\n // looks the renderer up by `node.type` BEFORE RegistryNode gets a chance to\n // resolve aliases, so a graph still carrying pre-namespace types would fall\n // through to the unknown-node placeholder.\n for (const id of kindIds(k)) map[id] = RegistryNode;\n }\n return map;\n}\n"]}