@foresthubai/workflow-builder 0.4.4 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/dist/BuilderLayout.d.ts.map +1 -1
  2. package/dist/BuilderLayout.js +52 -61
  3. package/dist/BuilderLayout.js.map +1 -1
  4. package/dist/Canvas.d.ts.map +1 -1
  5. package/dist/Canvas.js +10 -3
  6. package/dist/Canvas.js.map +1 -1
  7. package/dist/CanvasEditor.d.ts.map +1 -1
  8. package/dist/CanvasEditor.js.map +1 -1
  9. package/dist/CanvasTabsToolbar.d.ts.map +1 -1
  10. package/dist/CanvasTabsToolbar.js +3 -0
  11. package/dist/CanvasTabsToolbar.js.map +1 -1
  12. package/dist/RightConfigPanel.d.ts.map +1 -1
  13. package/dist/RightConfigPanel.js +3 -0
  14. package/dist/RightConfigPanel.js.map +1 -1
  15. package/dist/WorkflowBuilder.d.ts +7 -13
  16. package/dist/WorkflowBuilder.d.ts.map +1 -1
  17. package/dist/WorkflowBuilder.js +25 -13
  18. package/dist/WorkflowBuilder.js.map +1 -1
  19. package/dist/cn.d.ts.map +1 -1
  20. package/dist/cn.js +3 -0
  21. package/dist/cn.js.map +1 -1
  22. package/dist/components/ui/add-button.d.ts.map +1 -1
  23. package/dist/components/ui/add-button.js +3 -0
  24. package/dist/components/ui/add-button.js.map +1 -1
  25. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  26. package/dist/components/ui/alert-dialog.js +3 -0
  27. package/dist/components/ui/alert-dialog.js.map +1 -1
  28. package/dist/components/ui/alert.d.ts.map +1 -1
  29. package/dist/components/ui/alert.js +3 -0
  30. package/dist/components/ui/alert.js.map +1 -1
  31. package/dist/components/ui/badge.d.ts.map +1 -1
  32. package/dist/components/ui/badge.js.map +1 -1
  33. package/dist/components/ui/button.d.ts.map +1 -1
  34. package/dist/components/ui/button.js +3 -0
  35. package/dist/components/ui/button.js.map +1 -1
  36. package/dist/components/ui/card.d.ts.map +1 -1
  37. package/dist/components/ui/card.js +3 -0
  38. package/dist/components/ui/card.js.map +1 -1
  39. package/dist/components/ui/checkbox.d.ts.map +1 -1
  40. package/dist/components/ui/checkbox.js +3 -0
  41. package/dist/components/ui/checkbox.js.map +1 -1
  42. package/dist/components/ui/collapsible.d.ts.map +1 -1
  43. package/dist/components/ui/collapsible.js +3 -0
  44. package/dist/components/ui/collapsible.js.map +1 -1
  45. package/dist/components/ui/command.d.ts.map +1 -1
  46. package/dist/components/ui/command.js +3 -0
  47. package/dist/components/ui/command.js.map +1 -1
  48. package/dist/components/ui/delete-button.d.ts.map +1 -1
  49. package/dist/components/ui/delete-button.js +3 -0
  50. package/dist/components/ui/delete-button.js.map +1 -1
  51. package/dist/components/ui/dialog.d.ts.map +1 -1
  52. package/dist/components/ui/dialog.js +3 -0
  53. package/dist/components/ui/dialog.js.map +1 -1
  54. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  55. package/dist/components/ui/dropdown-menu.js +3 -0
  56. package/dist/components/ui/dropdown-menu.js.map +1 -1
  57. package/dist/components/ui/input.d.ts.map +1 -1
  58. package/dist/components/ui/input.js +3 -0
  59. package/dist/components/ui/input.js.map +1 -1
  60. package/dist/components/ui/label.d.ts.map +1 -1
  61. package/dist/components/ui/label.js +3 -0
  62. package/dist/components/ui/label.js.map +1 -1
  63. package/dist/components/ui/readonly-banner.d.ts.map +1 -1
  64. package/dist/components/ui/readonly-banner.js +3 -0
  65. package/dist/components/ui/readonly-banner.js.map +1 -1
  66. package/dist/components/ui/resizable.d.ts.map +1 -1
  67. package/dist/components/ui/resizable.js +3 -0
  68. package/dist/components/ui/resizable.js.map +1 -1
  69. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  70. package/dist/components/ui/scroll-area.js +3 -0
  71. package/dist/components/ui/scroll-area.js.map +1 -1
  72. package/dist/components/ui/select.d.ts.map +1 -1
  73. package/dist/components/ui/select.js +3 -0
  74. package/dist/components/ui/select.js.map +1 -1
  75. package/dist/components/ui/separator.d.ts.map +1 -1
  76. package/dist/components/ui/separator.js +3 -0
  77. package/dist/components/ui/separator.js.map +1 -1
  78. package/dist/components/ui/switch.d.ts.map +1 -1
  79. package/dist/components/ui/switch.js +3 -0
  80. package/dist/components/ui/switch.js.map +1 -1
  81. package/dist/components/ui/textarea.d.ts.map +1 -1
  82. package/dist/components/ui/textarea.js +3 -0
  83. package/dist/components/ui/textarea.js.map +1 -1
  84. package/dist/components/ui/toast.d.ts.map +1 -1
  85. package/dist/components/ui/toast.js +3 -0
  86. package/dist/components/ui/toast.js.map +1 -1
  87. package/dist/components/ui/toaster.d.ts.map +1 -1
  88. package/dist/components/ui/toaster.js +3 -0
  89. package/dist/components/ui/toaster.js.map +1 -1
  90. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  91. package/dist/components/ui/toggle-group.js +3 -0
  92. package/dist/components/ui/toggle-group.js.map +1 -1
  93. package/dist/components/ui/toggle.d.ts.map +1 -1
  94. package/dist/components/ui/toggle.js +3 -0
  95. package/dist/components/ui/toggle.js.map +1 -1
  96. package/dist/components/ui/tooltip.d.ts.map +1 -1
  97. package/dist/components/ui/tooltip.js +3 -0
  98. package/dist/components/ui/tooltip.js.map +1 -1
  99. package/dist/dialogs/NodePickerDialog.d.ts.map +1 -1
  100. package/dist/dialogs/NodePickerDialog.js +3 -0
  101. package/dist/dialogs/NodePickerDialog.js.map +1 -1
  102. package/dist/dialogs/ValidationDialog.d.ts.map +1 -1
  103. package/dist/dialogs/ValidationDialog.js +3 -0
  104. package/dist/dialogs/ValidationDialog.js.map +1 -1
  105. package/dist/graph/BaseNode.d.ts.map +1 -1
  106. package/dist/graph/BaseNode.js +11 -6
  107. package/dist/graph/BaseNode.js.map +1 -1
  108. package/dist/graph/CustomEdge.d.ts.map +1 -1
  109. package/dist/graph/CustomEdge.js +4 -1
  110. package/dist/graph/CustomEdge.js.map +1 -1
  111. package/dist/graph/CustomNode.d.ts.map +1 -1
  112. package/dist/graph/CustomNode.js +3 -0
  113. package/dist/graph/CustomNode.js.map +1 -1
  114. package/dist/graph/FunctionCallNode.d.ts.map +1 -1
  115. package/dist/graph/FunctionCallNode.js.map +1 -1
  116. package/dist/graph/PortHandle.d.ts.map +1 -1
  117. package/dist/graph/PortHandle.js.map +1 -1
  118. package/dist/graph/reactFlowRegistry.d.ts.map +1 -1
  119. package/dist/graph/reactFlowRegistry.js +3 -0
  120. package/dist/graph/reactFlowRegistry.js.map +1 -1
  121. package/dist/hooks/use-toast.d.ts.map +1 -1
  122. package/dist/hooks/use-toast.js +3 -0
  123. package/dist/hooks/use-toast.js.map +1 -1
  124. package/dist/hooks/useAvailableVariables.d.ts.map +1 -1
  125. package/dist/hooks/useAvailableVariables.js +3 -0
  126. package/dist/hooks/useAvailableVariables.js.map +1 -1
  127. package/dist/hooks/useCanvasHistory.d.ts.map +1 -1
  128. package/dist/hooks/useCanvasHistory.js +3 -0
  129. package/dist/hooks/useCanvasHistory.js.map +1 -1
  130. package/dist/hooks/useCanvasTabs.d.ts.map +1 -1
  131. package/dist/hooks/useCanvasTabs.js +3 -0
  132. package/dist/hooks/useCanvasTabs.js.map +1 -1
  133. package/dist/hooks/useFunctionDiagnosticsSync.d.ts.map +1 -1
  134. package/dist/hooks/useFunctionDiagnosticsSync.js +3 -0
  135. package/dist/hooks/useFunctionDiagnosticsSync.js.map +1 -1
  136. package/dist/hooks/useFunctionRegistry.d.ts.map +1 -1
  137. package/dist/hooks/useFunctionRegistry.js +3 -0
  138. package/dist/hooks/useFunctionRegistry.js.map +1 -1
  139. package/dist/hooks/useFunctions.d.ts.map +1 -1
  140. package/dist/hooks/useFunctions.js +3 -0
  141. package/dist/hooks/useFunctions.js.map +1 -1
  142. package/dist/hooks/useGraph.d.ts.map +1 -1
  143. package/dist/hooks/useGraph.js +3 -0
  144. package/dist/hooks/useGraph.js.map +1 -1
  145. package/dist/hooks/useNodeDefinitions.d.ts.map +1 -1
  146. package/dist/hooks/useNodeDefinitions.js +3 -0
  147. package/dist/hooks/useNodeDefinitions.js.map +1 -1
  148. package/dist/hooks/useParamErrors.d.ts.map +1 -1
  149. package/dist/hooks/useParamErrors.js +3 -0
  150. package/dist/hooks/useParamErrors.js.map +1 -1
  151. package/dist/hooks/useResolvedTheme.d.ts.map +1 -1
  152. package/dist/hooks/useResolvedTheme.js +3 -0
  153. package/dist/hooks/useResolvedTheme.js.map +1 -1
  154. package/dist/hooks/useResourceDiagnosticsSync.d.ts.map +1 -1
  155. package/dist/hooks/useResourceDiagnosticsSync.js +3 -0
  156. package/dist/hooks/useResourceDiagnosticsSync.js.map +1 -1
  157. package/dist/hooks/useSuppressThemeTransition.d.ts.map +1 -1
  158. package/dist/hooks/useSuppressThemeTransition.js +3 -0
  159. package/dist/hooks/useSuppressThemeTransition.js.map +1 -1
  160. package/dist/hooks/useWorkflowSerialization.d.ts.map +1 -1
  161. package/dist/hooks/useWorkflowSerialization.js +3 -0
  162. package/dist/hooks/useWorkflowSerialization.js.map +1 -1
  163. package/dist/i18n/index.d.ts.map +1 -1
  164. package/dist/i18n/index.js +3 -0
  165. package/dist/i18n/index.js.map +1 -1
  166. package/dist/index.d.ts +1 -1
  167. package/dist/index.d.ts.map +1 -1
  168. package/dist/index.js +3 -0
  169. package/dist/index.js.map +1 -1
  170. package/dist/inputs/ExpressionInput.d.ts.map +1 -1
  171. package/dist/inputs/ExpressionInput.js +3 -0
  172. package/dist/inputs/ExpressionInput.js.map +1 -1
  173. package/dist/inputs/ParameterEditor.d.ts.map +1 -1
  174. package/dist/inputs/ParameterEditor.js +3 -0
  175. package/dist/inputs/ParameterEditor.js.map +1 -1
  176. package/dist/inputs/PortSection.d.ts.map +1 -1
  177. package/dist/inputs/PortSection.js.map +1 -1
  178. package/dist/mode.d.ts +11 -0
  179. package/dist/mode.d.ts.map +1 -0
  180. package/dist/mode.js +8 -0
  181. package/dist/mode.js.map +1 -0
  182. package/dist/panels/BuilderSidebar.d.ts.map +1 -1
  183. package/dist/panels/BuilderSidebar.js +3 -0
  184. package/dist/panels/BuilderSidebar.js.map +1 -1
  185. package/dist/panels/ChannelConfigPanel.d.ts.map +1 -1
  186. package/dist/panels/ChannelConfigPanel.js +3 -0
  187. package/dist/panels/ChannelConfigPanel.js.map +1 -1
  188. package/dist/panels/ChannelsPanel.d.ts.map +1 -1
  189. package/dist/panels/ChannelsPanel.js +3 -0
  190. package/dist/panels/ChannelsPanel.js.map +1 -1
  191. package/dist/panels/DebugConsolePanel.d.ts.map +1 -1
  192. package/dist/panels/DebugConsolePanel.js +3 -0
  193. package/dist/panels/DebugConsolePanel.js.map +1 -1
  194. package/dist/panels/DebugContextPanel.d.ts.map +1 -1
  195. package/dist/panels/DebugContextPanel.js +3 -0
  196. package/dist/panels/DebugContextPanel.js.map +1 -1
  197. package/dist/panels/DebugExternalIOPanel.d.ts.map +1 -1
  198. package/dist/panels/DebugExternalIOPanel.js +3 -0
  199. package/dist/panels/DebugExternalIOPanel.js.map +1 -1
  200. package/dist/panels/DiagnosticsPanel.d.ts.map +1 -1
  201. package/dist/panels/DiagnosticsPanel.js +3 -0
  202. package/dist/panels/DiagnosticsPanel.js.map +1 -1
  203. package/dist/panels/EdgeConfigPanel.d.ts.map +1 -1
  204. package/dist/panels/EdgeConfigPanel.js +4 -1
  205. package/dist/panels/EdgeConfigPanel.js.map +1 -1
  206. package/dist/panels/FunctionConfigPanel.d.ts.map +1 -1
  207. package/dist/panels/FunctionConfigPanel.js +4 -1
  208. package/dist/panels/FunctionConfigPanel.js.map +1 -1
  209. package/dist/panels/FunctionListPanel.d.ts.map +1 -1
  210. package/dist/panels/FunctionListPanel.js +3 -0
  211. package/dist/panels/FunctionListPanel.js.map +1 -1
  212. package/dist/panels/MemoryConfigPanel.d.ts.map +1 -1
  213. package/dist/panels/MemoryConfigPanel.js +3 -0
  214. package/dist/panels/MemoryConfigPanel.js.map +1 -1
  215. package/dist/panels/MemoryPanel.d.ts.map +1 -1
  216. package/dist/panels/MemoryPanel.js +3 -0
  217. package/dist/panels/MemoryPanel.js.map +1 -1
  218. package/dist/panels/ModelConfigPanel.d.ts.map +1 -1
  219. package/dist/panels/ModelConfigPanel.js +3 -0
  220. package/dist/panels/ModelConfigPanel.js.map +1 -1
  221. package/dist/panels/ModelsPanel.d.ts.map +1 -1
  222. package/dist/panels/ModelsPanel.js +3 -0
  223. package/dist/panels/ModelsPanel.js.map +1 -1
  224. package/dist/panels/NodeConfigPanel.d.ts.map +1 -1
  225. package/dist/panels/NodeConfigPanel.js +4 -1
  226. package/dist/panels/NodeConfigPanel.js.map +1 -1
  227. package/dist/panels/NodeLibrary.d.ts.map +1 -1
  228. package/dist/panels/NodeLibrary.js +4 -1
  229. package/dist/panels/NodeLibrary.js.map +1 -1
  230. package/dist/panels/ResourceConfigPanel.d.ts.map +1 -1
  231. package/dist/panels/ResourceConfigPanel.js +4 -1
  232. package/dist/panels/ResourceConfigPanel.js.map +1 -1
  233. package/dist/panels/ResourceListPanel.d.ts.map +1 -1
  234. package/dist/panels/ResourceListPanel.js +4 -1
  235. package/dist/panels/ResourceListPanel.js.map +1 -1
  236. package/dist/panels/VariableConfigPanel.d.ts.map +1 -1
  237. package/dist/panels/VariableConfigPanel.js +4 -1
  238. package/dist/panels/VariableConfigPanel.js.map +1 -1
  239. package/dist/panels/VariablesPanel.d.ts.map +1 -1
  240. package/dist/panels/VariablesPanel.js +4 -1
  241. package/dist/panels/VariablesPanel.js.map +1 -1
  242. package/dist/stores/canvasStore.d.ts.map +1 -1
  243. package/dist/stores/canvasStore.js +3 -0
  244. package/dist/stores/canvasStore.js.map +1 -1
  245. package/dist/stores/debugStore.d.ts.map +1 -1
  246. package/dist/stores/debugStore.js +3 -0
  247. package/dist/stores/debugStore.js.map +1 -1
  248. package/dist/stores/diagnosticsStore.d.ts.map +1 -1
  249. package/dist/stores/diagnosticsStore.js +3 -0
  250. package/dist/stores/diagnosticsStore.js.map +1 -1
  251. package/dist/stores/editorStore.d.ts +1 -1
  252. package/dist/stores/editorStore.d.ts.map +1 -1
  253. package/dist/stores/editorStore.js +3 -0
  254. package/dist/stores/editorStore.js.map +1 -1
  255. package/dist/utils/categoryConstants.d.ts.map +1 -1
  256. package/dist/utils/categoryConstants.js +3 -0
  257. package/dist/utils/categoryConstants.js.map +1 -1
  258. package/dist/utils/channelOperations.d.ts.map +1 -1
  259. package/dist/utils/channelOperations.js +3 -0
  260. package/dist/utils/channelOperations.js.map +1 -1
  261. package/dist/utils/connectionRules.d.ts +3 -1
  262. package/dist/utils/connectionRules.d.ts.map +1 -1
  263. package/dist/utils/connectionRules.js +11 -16
  264. package/dist/utils/connectionRules.js.map +1 -1
  265. package/dist/utils/functionOperations.d.ts.map +1 -1
  266. package/dist/utils/functionOperations.js +3 -0
  267. package/dist/utils/functionOperations.js.map +1 -1
  268. package/dist/utils/graphOperations.d.ts.map +1 -1
  269. package/dist/utils/graphOperations.js +3 -0
  270. package/dist/utils/graphOperations.js.map +1 -1
  271. package/dist/utils/history.d.ts.map +1 -1
  272. package/dist/utils/history.js +4 -1
  273. package/dist/utils/history.js.map +1 -1
  274. package/dist/utils/memoryOperations.d.ts.map +1 -1
  275. package/dist/utils/memoryOperations.js +3 -0
  276. package/dist/utils/memoryOperations.js.map +1 -1
  277. package/dist/utils/migrateFunctionNodes.d.ts.map +1 -1
  278. package/dist/utils/migrateFunctionNodes.js +3 -0
  279. package/dist/utils/migrateFunctionNodes.js.map +1 -1
  280. package/dist/utils/modelOperations.d.ts.map +1 -1
  281. package/dist/utils/modelOperations.js +3 -0
  282. package/dist/utils/modelOperations.js.map +1 -1
  283. package/dist/utils/paramDisplay.d.ts.map +1 -1
  284. package/dist/utils/paramDisplay.js +3 -0
  285. package/dist/utils/paramDisplay.js.map +1 -1
  286. package/dist/utils/resourceHelpers.d.ts.map +1 -1
  287. package/dist/utils/resourceHelpers.js +3 -0
  288. package/dist/utils/resourceHelpers.js.map +1 -1
  289. package/dist/utils/translation.d.ts.map +1 -1
  290. package/dist/utils/translation.js +3 -0
  291. package/dist/utils/translation.js.map +1 -1
  292. package/dist/utils/variableOperations.d.ts.map +1 -1
  293. package/dist/utils/variableOperations.js +3 -0
  294. package/dist/utils/variableOperations.js.map +1 -1
  295. package/package.json +2 -2
  296. package/src/BuilderLayout.tsx +54 -61
  297. package/src/Canvas.tsx +12 -3
  298. package/src/CanvasEditor.tsx +4 -0
  299. package/src/CanvasTabsToolbar.tsx +4 -0
  300. package/src/RightConfigPanel.tsx +4 -0
  301. package/src/WorkflowBuilder.tsx +33 -18
  302. package/src/cn.ts +4 -0
  303. package/src/components/ui/add-button.tsx +4 -0
  304. package/src/components/ui/alert-dialog.tsx +4 -0
  305. package/src/components/ui/alert.tsx +4 -0
  306. package/src/components/ui/badge.tsx +4 -0
  307. package/src/components/ui/button.tsx +4 -0
  308. package/src/components/ui/card.tsx +4 -0
  309. package/src/components/ui/checkbox.tsx +4 -0
  310. package/src/components/ui/collapsible.tsx +4 -0
  311. package/src/components/ui/command.tsx +4 -0
  312. package/src/components/ui/delete-button.tsx +4 -0
  313. package/src/components/ui/dialog.tsx +4 -0
  314. package/src/components/ui/dropdown-menu.tsx +4 -0
  315. package/src/components/ui/input.tsx +4 -0
  316. package/src/components/ui/label.tsx +4 -0
  317. package/src/components/ui/readonly-banner.tsx +4 -0
  318. package/src/components/ui/resizable.tsx +4 -0
  319. package/src/components/ui/scroll-area.tsx +4 -0
  320. package/src/components/ui/select.tsx +4 -0
  321. package/src/components/ui/separator.tsx +4 -0
  322. package/src/components/ui/switch.tsx +4 -0
  323. package/src/components/ui/textarea.tsx +4 -0
  324. package/src/components/ui/toast.tsx +4 -0
  325. package/src/components/ui/toaster.tsx +4 -0
  326. package/src/components/ui/toggle-group.tsx +4 -0
  327. package/src/components/ui/toggle.tsx +4 -0
  328. package/src/components/ui/tooltip.tsx +4 -0
  329. package/src/dialogs/NodePickerDialog.tsx +4 -0
  330. package/src/dialogs/ValidationDialog.tsx +4 -0
  331. package/src/graph/BaseNode.tsx +12 -6
  332. package/src/graph/CustomEdge.tsx +5 -1
  333. package/src/graph/CustomNode.tsx +4 -0
  334. package/src/graph/FunctionCallNode.tsx +4 -0
  335. package/src/graph/PortHandle.tsx +4 -0
  336. package/src/graph/reactFlowRegistry.ts +4 -0
  337. package/src/hooks/use-toast.ts +4 -0
  338. package/src/hooks/useAvailableVariables.ts +4 -0
  339. package/src/hooks/useCanvasHistory.ts +4 -0
  340. package/src/hooks/useCanvasTabs.ts +4 -0
  341. package/src/hooks/useFunctionDiagnosticsSync.ts +4 -0
  342. package/src/hooks/useFunctionRegistry.ts +4 -0
  343. package/src/hooks/useFunctions.ts +4 -0
  344. package/src/hooks/useGraph.ts +4 -0
  345. package/src/hooks/useNodeDefinitions.ts +4 -0
  346. package/src/hooks/useParamErrors.ts +4 -0
  347. package/src/hooks/useResolvedTheme.ts +4 -0
  348. package/src/hooks/useResourceDiagnosticsSync.ts +4 -0
  349. package/src/hooks/useSuppressThemeTransition.ts +4 -0
  350. package/src/hooks/useWorkflowSerialization.ts +4 -0
  351. package/src/i18n/index.ts +4 -0
  352. package/src/index.ts +5 -1
  353. package/src/inputs/ExpressionInput.tsx +4 -0
  354. package/src/inputs/ParameterEditor.tsx +4 -0
  355. package/src/inputs/PortSection.tsx +4 -0
  356. package/src/mode.ts +15 -0
  357. package/src/panels/BuilderSidebar.tsx +4 -0
  358. package/src/panels/ChannelConfigPanel.tsx +4 -0
  359. package/src/panels/ChannelsPanel.tsx +4 -0
  360. package/src/panels/DebugConsolePanel.tsx +4 -0
  361. package/src/panels/DebugContextPanel.tsx +4 -0
  362. package/src/panels/DebugExternalIOPanel.tsx +4 -0
  363. package/src/panels/DiagnosticsPanel.tsx +4 -0
  364. package/src/panels/EdgeConfigPanel.tsx +5 -1
  365. package/src/panels/FunctionConfigPanel.tsx +5 -1
  366. package/src/panels/FunctionListPanel.tsx +4 -0
  367. package/src/panels/MemoryConfigPanel.tsx +4 -0
  368. package/src/panels/MemoryPanel.tsx +4 -0
  369. package/src/panels/ModelConfigPanel.tsx +4 -0
  370. package/src/panels/ModelsPanel.tsx +4 -0
  371. package/src/panels/NodeConfigPanel.tsx +5 -1
  372. package/src/panels/NodeLibrary.tsx +5 -1
  373. package/src/panels/ResourceConfigPanel.tsx +5 -1
  374. package/src/panels/ResourceListPanel.tsx +5 -1
  375. package/src/panels/VariableConfigPanel.tsx +5 -1
  376. package/src/panels/VariablesPanel.tsx +5 -1
  377. package/src/stores/canvasStore.test.ts +4 -0
  378. package/src/stores/canvasStore.ts +4 -0
  379. package/src/stores/debugStore.ts +4 -0
  380. package/src/stores/diagnosticsStore.ts +4 -0
  381. package/src/stores/editorStore.ts +5 -1
  382. package/src/utils/categoryConstants.ts +4 -0
  383. package/src/utils/channelOperations.ts +4 -0
  384. package/src/utils/connectionRules.ts +12 -9
  385. package/src/utils/functionOperations.ts +4 -0
  386. package/src/utils/graphOperations.ts +4 -0
  387. package/src/utils/history.test.ts +92 -0
  388. package/src/utils/history.ts +5 -1
  389. package/src/utils/memoryOperations.ts +4 -0
  390. package/src/utils/migrateFunctionNodes.ts +4 -0
  391. package/src/utils/modelOperations.ts +4 -0
  392. package/src/utils/paramDisplay.ts +4 -0
  393. package/src/utils/resourceHelpers.ts +4 -0
  394. package/src/utils/translation.ts +4 -0
  395. package/src/utils/variableOperations.ts +4 -0
  396. package/tailwind-preset.ts +4 -0
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  import type { Expression } from "@foresthubai/workflow-core";
2
6
  import type { DataType } from "@foresthubai/workflow-core/parameter";
3
7
  import type { FunctionDeclaration } from "@foresthubai/workflow-core/function";
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  import {
2
6
  NodeBase,
3
7
  NodeCategory,
@@ -0,0 +1,92 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
5
+ import { describe, it, expect, beforeEach } from "vitest";
6
+ import { create } from "zustand";
7
+ import { history } from "./history";
8
+
9
+ interface CounterState {
10
+ count: number;
11
+ label: string;
12
+ setCount: (n: number) => void;
13
+ }
14
+
15
+ // A store on DEFAULT config — no custom equality/partialize — so the default
16
+ // equality path is what's under test.
17
+ function makeStore() {
18
+ return create(
19
+ history<CounterState>()((set) => ({
20
+ count: 0,
21
+ label: "a",
22
+ setCount: (n) => set((s) => ({ ...s, count: n })),
23
+ })),
24
+ );
25
+ }
26
+
27
+ describe("history middleware (default config)", () => {
28
+ let store: ReturnType<typeof makeStore>;
29
+ beforeEach(() => {
30
+ store = makeStore();
31
+ });
32
+
33
+ it("withCheckpoint records a checkpoint when the operation changes state", () => {
34
+ store.getState().withCheckpoint(() => store.getState().setCount(1));
35
+ expect(store.getState().count).toBe(1);
36
+ expect(store.getState().canUndo()).toBe(true);
37
+
38
+ store.getState().undo();
39
+ expect(store.getState().count).toBe(0);
40
+ expect(store.getState().canRedo()).toBe(true);
41
+
42
+ store.getState().redo();
43
+ expect(store.getState().count).toBe(1);
44
+ });
45
+
46
+ it("withCheckpoint does NOT record a checkpoint for a no-op", () => {
47
+ store.getState().withCheckpoint(() => {});
48
+ expect(store.getState().canUndo()).toBe(false);
49
+ });
50
+
51
+ it("a no-op withCheckpoint preserves the redo stack", () => {
52
+ store.getState().withCheckpoint(() => store.getState().setCount(1));
53
+ store.getState().undo();
54
+ expect(store.getState().canRedo()).toBe(true);
55
+
56
+ store.getState().withCheckpoint(() => {});
57
+ expect(store.getState().canRedo()).toBe(true);
58
+ });
59
+
60
+ it("a real change clears the redo stack", () => {
61
+ store.getState().withCheckpoint(() => store.getState().setCount(1));
62
+ store.getState().undo();
63
+ store.getState().withCheckpoint(() => store.getState().setCount(7));
64
+ expect(store.getState().canRedo()).toBe(false);
65
+ });
66
+
67
+ it("withCheckpoint returns the operation's result and propagates throws without a checkpoint", () => {
68
+ expect(store.getState().withCheckpoint(() => 42)).toBe(42);
69
+ expect(() =>
70
+ store.getState().withCheckpoint(() => {
71
+ throw new Error("boom");
72
+ }),
73
+ ).toThrow("boom");
74
+ expect(store.getState().canUndo()).toBe(false);
75
+ });
76
+
77
+ it("mutationCount ticks on checkpointed changes only", () => {
78
+ const before = store.getState().mutationCount;
79
+ store.getState().withCheckpoint(() => {});
80
+ expect(store.getState().mutationCount).toBe(before);
81
+ store.getState().withCheckpoint(() => store.getState().setCount(5));
82
+ expect(store.getState().mutationCount).toBe(before + 1);
83
+ });
84
+
85
+ it("takeCheckpoint always records, and clearHistory empties both stacks", () => {
86
+ store.getState().takeCheckpoint();
87
+ expect(store.getState().canUndo()).toBe(true);
88
+ store.getState().clearHistory();
89
+ expect(store.getState().canUndo()).toBe(false);
90
+ expect(store.getState().canRedo()).toBe(false);
91
+ });
92
+ });
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  import { StateCreator, StoreMutatorIdentifier } from "zustand";
2
6
 
3
7
  // Opaque type for exporting/importing history state
@@ -99,7 +103,7 @@ export const history =
99
103
  const {
100
104
  limit = 50,
101
105
  partialize = (state) => state,
102
- equality = (before, after) => JSON.stringify(before) !== JSON.stringify(after),
106
+ equality = (before, after) => JSON.stringify(before) === JSON.stringify(after),
103
107
  } = config;
104
108
 
105
109
  return (set, get, store) => {
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  import { MemoryRegistry, type MemoryType, type Memory } from "@foresthubai/workflow-core/memory";
2
6
  import { useEditorStore } from "../stores/editorStore";
3
7
  import { generateId } from "@foresthubai/workflow-core/id";
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  import type { OutputBinding, FunctionCallNode } from "@foresthubai/workflow-core/node";
2
6
  import type { Expression } from "@foresthubai/workflow-core";
3
7
  import { toast } from "../hooks/use-toast";
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  import { ModelRegistry, type ModelType, type Model } from "@foresthubai/workflow-core/model";
2
6
  import { useEditorStore } from "../stores/editorStore";
3
7
  import { generateId } from "@foresthubai/workflow-core/id";
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  // Presentation-only formatters for inline node display. These render domain
2
6
  // values to human-readable text; they live in the builder (not headless
3
7
  // workflow-core) because formatting for display is an editor concern.
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  import type { Parameter } from "@foresthubai/workflow-core/parameter";
2
6
 
3
7
  /**
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  import type { TFunction } from "i18next";
2
6
  import type { NodeDefinition } from "@foresthubai/workflow-core/node";
3
7
  import type { Parameter } from "@foresthubai/workflow-core/parameter";
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  import { declaredVarKey, type DeclaredVariable } from "@foresthubai/workflow-core/variable";
2
6
  import type { DataType } from "@foresthubai/workflow-core";
3
7
  import { getOrCreateCanvasStore } from "../stores/canvasStore";
@@ -1,3 +1,7 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (c) 2026 ForestHub. All rights reserved.
3
+ // For commercial licensing, contact root@foresthub.ai
4
+
1
5
  import type { Config } from "tailwindcss";
2
6
  import animate from "tailwindcss-animate";
3
7