@kiberon-labs/behave-graph-flow 1.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/.fallowrc.json +16 -0
  2. package/.storybook/main.ts +32 -0
  3. package/.storybook/manager.ts +6 -0
  4. package/.storybook/preview.ts +64 -0
  5. package/.storybook/styles.css +16 -0
  6. package/.turbo/turbo-build.log +7 -0
  7. package/CHANGELOG.md +368 -0
  8. package/LICENSE +6 -0
  9. package/README.md +2 -2
  10. package/data/Polynomial.json +510 -0
  11. package/data/sequence.json +337 -0
  12. package/data/trigger-event.json +241 -0
  13. package/data/variable-change.json +210 -0
  14. package/dist/AnyControlImpl-Ds-CShIB.js +20 -0
  15. package/dist/AnyControlImpl-Ds-CShIB.js.map +1 -0
  16. package/dist/DocumentationBrowserPanelImpl-deZNzFX8.js +166 -0
  17. package/dist/DocumentationBrowserPanelImpl-deZNzFX8.js.map +1 -0
  18. package/dist/entry.css +4 -0
  19. package/dist/index.css +42 -0
  20. package/dist/index.css.map +1 -0
  21. package/dist/index.d.ts +3597 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +18009 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/noteImpl-KkrrWgJd.js +242 -0
  26. package/dist/noteImpl-KkrrWgJd.js.map +1 -0
  27. package/dist/styles.module-CvmpDkZj.css +3 -0
  28. package/dist/styles.module-CvmpDkZj.css.map +1 -0
  29. package/dist/styles.module-DZxg8aW9.js +271 -0
  30. package/dist/styles.module-DZxg8aW9.js.map +1 -0
  31. package/dist/useChangeNodeData-ChQGK7AI.js +23 -0
  32. package/dist/useChangeNodeData-ChQGK7AI.js.map +1 -0
  33. package/docs/notifications.md +246 -0
  34. package/docs/protocol.md +702 -0
  35. package/docs/specifics.md +191 -0
  36. package/package.json +82 -22
  37. package/postcss.config.ts +3 -4
  38. package/src/annotations/index.ts +32 -0
  39. package/src/components/FloatingToolbar/index.module.css +37 -0
  40. package/src/components/FloatingToolbar/index.tsx +256 -0
  41. package/src/components/Flow.tsx +287 -75
  42. package/src/components/contextMenus/DynamicContextMenu.tsx +85 -0
  43. package/src/components/contextMenus/NodePicker.module.css +274 -0
  44. package/src/components/contextMenus/NodePicker.tsx +481 -0
  45. package/src/components/contextMenus/edge.tsx +22 -0
  46. package/src/components/contextMenus/node.tsx +15 -0
  47. package/src/components/contextMenus/selection.tsx +11 -0
  48. package/src/components/controls/any/AnyControlImpl.tsx +14 -0
  49. package/src/components/controls/any/index.tsx +19 -0
  50. package/src/components/controls/boolean/index.tsx +13 -0
  51. package/src/components/controls/colorPicker/InputPopover.module.css +100 -0
  52. package/src/components/controls/colorPicker/InputPopover.tsx +31 -0
  53. package/src/components/controls/colorPicker/index.module.css +18 -0
  54. package/src/components/controls/colorPicker/index.tsx +61 -0
  55. package/src/components/controls/number/index.tsx +35 -0
  56. package/src/components/controls/string/index.tsx +16 -0
  57. package/src/components/edges/index.tsx +475 -0
  58. package/src/components/edges/offsetBezier.ts +134 -0
  59. package/src/components/hotKeys.tsx +20 -0
  60. package/src/components/layoutController/index.module.css +13 -0
  61. package/src/components/layoutController/index.tsx +140 -0
  62. package/src/components/layoutController/utils.ts +248 -0
  63. package/src/components/menubar/defaults.tsx +516 -0
  64. package/src/components/menubar/index.tsx +49 -0
  65. package/src/components/menubar/menuItem.module.css +31 -0
  66. package/src/components/menubar/menuItem.tsx +65 -0
  67. package/src/components/nodes/behave/Node.module.css +23 -0
  68. package/src/components/nodes/behave/Node.tsx +176 -0
  69. package/src/components/nodes/behave/NodeContainer.module.css +88 -0
  70. package/src/components/nodes/behave/NodeContainer.tsx +46 -0
  71. package/src/components/nodes/behave/index.tsx +14 -0
  72. package/src/components/nodes/group/index.tsx +109 -0
  73. package/src/components/nodes/wrapper/index.tsx +73 -0
  74. package/src/components/nodes/wrapper/styles.module.css +87 -0
  75. package/src/components/notifications/NotificationProvider.tsx +81 -0
  76. package/src/components/notifications/index.ts +2 -0
  77. package/src/components/notifications/utils.ts +71 -0
  78. package/src/components/panels/alignment/index.module.css +10 -0
  79. package/src/components/panels/alignment/index.tsx +244 -0
  80. package/src/components/panels/base/index.tsx +5 -0
  81. package/src/components/panels/base/styles.module.css +12 -0
  82. package/src/components/panels/common/PanelHeader.module.css +24 -0
  83. package/src/components/panels/common/PanelHeader.tsx +22 -0
  84. package/src/components/panels/common/SectionTitle.module.css +13 -0
  85. package/src/components/panels/common/SectionTitle.tsx +10 -0
  86. package/src/components/panels/events/EditEventPanel.tsx +324 -0
  87. package/src/components/panels/events/ManageEventsPanel.tsx +101 -0
  88. package/src/components/panels/events/index.tsx +23 -0
  89. package/src/components/panels/events/styles.module.css +178 -0
  90. package/src/components/panels/graphProperties/index.tsx +125 -0
  91. package/src/components/panels/history/index.tsx +92 -0
  92. package/src/components/panels/history/styles.module.css +97 -0
  93. package/src/components/panels/keymaps/index.module.css +68 -0
  94. package/src/components/panels/keymaps/index.tsx +166 -0
  95. package/src/components/panels/layers/index.tsx +245 -0
  96. package/src/components/panels/layers/styles.module.css +107 -0
  97. package/src/components/panels/legend/index.module.css +6 -0
  98. package/src/components/panels/legend/index.tsx +76 -0
  99. package/src/components/panels/logs/index.module.css +218 -0
  100. package/src/components/panels/logs/index.tsx +288 -0
  101. package/src/components/panels/nodeInputs/InputControl.tsx +63 -0
  102. package/src/components/panels/nodeInputs/InputsGroup.tsx +65 -0
  103. package/src/components/panels/nodeInputs/MultipleNodesView.tsx +37 -0
  104. package/src/components/panels/nodeInputs/NodeSettings.tsx +92 -0
  105. package/src/components/panels/nodeInputs/NodeTitleEditor.tsx +125 -0
  106. package/src/components/panels/nodeInputs/OutputsGroup.tsx +55 -0
  107. package/src/components/panels/nodeInputs/SocketGenerators.tsx +32 -0
  108. package/src/components/panels/nodeInputs/index.module.css +308 -0
  109. package/src/components/panels/nodeInputs/index.tsx +349 -0
  110. package/src/components/panels/nodeInputs/useNodeHandlers.ts +76 -0
  111. package/src/components/panels/nodeInputs/useNodeInputsData.ts +153 -0
  112. package/src/components/panels/nodePicker/index.tsx +115 -0
  113. package/src/components/panels/panel/index.module.css +66 -0
  114. package/src/components/panels/panel/index.tsx +88 -0
  115. package/src/components/panels/search/index.module.css +16 -0
  116. package/src/components/panels/search/index.tsx +215 -0
  117. package/src/components/panels/systemSettings/ConversionsSettings.tsx +203 -0
  118. package/src/components/panels/systemSettings/index.tsx +251 -0
  119. package/src/components/panels/systemSettings/styles.module.css +138 -0
  120. package/src/components/panels/traces/GridLines.tsx +38 -0
  121. package/src/components/panels/traces/TimeGrid.tsx +48 -0
  122. package/src/components/panels/traces/TraceLane.tsx +62 -0
  123. package/src/components/panels/traces/TraceTooltip.tsx +22 -0
  124. package/src/components/panels/traces/TracesHeader.tsx +56 -0
  125. package/src/components/panels/traces/index.module.css +159 -0
  126. package/src/components/panels/traces/index.tsx +298 -0
  127. package/src/components/panels/traces/types.ts +48 -0
  128. package/src/components/panels/traces/useDerivedSpans.ts +307 -0
  129. package/src/components/panels/traces/utils.ts +33 -0
  130. package/src/components/panels/variables/CreateVariableScreen.tsx +162 -0
  131. package/src/components/panels/variables/ManageVariablesScreen.tsx +147 -0
  132. package/src/components/panels/variables/index.tsx +125 -0
  133. package/src/components/panels/variables/styles.module.css +149 -0
  134. package/src/components/primitives/icon.module.css +45 -0
  135. package/src/components/primitives/icon.tsx +38 -0
  136. package/src/components/sockets/input/index.tsx +83 -0
  137. package/src/components/sockets/input/styles.module.css +26 -0
  138. package/src/components/sockets/output/index.tsx +68 -0
  139. package/src/components/sockets/output/styles.module.css +22 -0
  140. package/src/css/notes.css +135 -0
  141. package/src/css/prosemirror.css +57 -0
  142. package/src/css/rc-dock.css +212 -0
  143. package/src/css/rc-menu.css +101 -0
  144. package/src/css/themes/kiberon.css +127 -0
  145. package/src/css/vars.css +198 -0
  146. package/src/css/vscode-elements.css +124 -0
  147. package/src/entry.css +4 -0
  148. package/src/generators/CallSubgraphGenerator.tsx +136 -0
  149. package/src/generators/CustomEventOnTriggeredGenerator.tsx +85 -0
  150. package/src/generators/GraphBoundaryGenerator.module.css +32 -0
  151. package/src/generators/GraphBoundaryGenerator.tsx +193 -0
  152. package/src/generators/SequenceGenerator.tsx +104 -0
  153. package/src/generators/SwitchOnIntegerGenerator.tsx +256 -0
  154. package/src/generators/SwitchOnStringGenerator.tsx +263 -0
  155. package/src/generators/callSubgraphSync.ts +126 -0
  156. package/src/generators/registerDefaultGenerators.ts +55 -0
  157. package/src/generators/registerDefaults.ts +26 -0
  158. package/src/hooks/useBehaveGraphFlow.ts +17 -16
  159. package/src/hooks/useFlowHandlers.ts +154 -30
  160. package/src/hooks/useWasdPan.ts +210 -0
  161. package/src/index.css +134 -0
  162. package/src/index.ts +53 -18
  163. package/src/manifest/contributionRegistry.ts +93 -0
  164. package/src/manifest/index.ts +4 -0
  165. package/src/manifest/loadManifest.ts +82 -0
  166. package/src/manifest/manifestPlugin.ts +29 -0
  167. package/src/manifest/passthroughValueType.ts +40 -0
  168. package/src/plugin/alignment/index.ts +91 -0
  169. package/src/plugin/autosave/controller.ts +366 -0
  170. package/src/plugin/autosave/index.tsx +114 -0
  171. package/src/plugin/autosave/panel/BackupPanel.tsx +141 -0
  172. package/src/plugin/autosave/panel/index.tsx +1 -0
  173. package/src/plugin/autosave/panel/styles.module.css +56 -0
  174. package/src/plugin/autosave/settings.ts +65 -0
  175. package/src/plugin/autosave/storage.ts +147 -0
  176. package/src/plugin/docs/index.tsx +297 -0
  177. package/src/plugin/docs/panel/DocumentationBrowserPanelImpl.tsx +200 -0
  178. package/src/plugin/docs/panel/index.tsx +21 -0
  179. package/src/plugin/docs/panel/styles.module.css +174 -0
  180. package/src/plugin/graphrunner/actions.ts +326 -0
  181. package/src/plugin/graphrunner/buttons.tsx +95 -0
  182. package/src/plugin/graphrunner/client.ts +707 -0
  183. package/src/plugin/graphrunner/index.tsx +184 -0
  184. package/src/plugin/graphrunner/panel.tsx +386 -0
  185. package/src/plugin/graphrunner/runController.ts +283 -0
  186. package/src/plugin/graphrunner/runner.ts +187 -0
  187. package/src/plugin/graphrunner/session.ts +243 -0
  188. package/src/plugin/graphrunner/store.ts +196 -0
  189. package/src/plugin/graphrunner/styles.module.css +171 -0
  190. package/src/plugin/graphrunner/transport.ts +250 -0
  191. package/src/plugin/graphrunner/types.ts +693 -0
  192. package/src/plugin/graphrunner-local/execution-utils.ts +637 -0
  193. package/src/plugin/graphrunner-local/index.tsx +172 -0
  194. package/src/plugin/graphrunner-local/panel.tsx +187 -0
  195. package/src/plugin/graphrunner-local/store.ts +41 -0
  196. package/src/plugin/graphrunner-local/styles.module.css +82 -0
  197. package/src/plugin/graphrunner-local/transport.ts +1339 -0
  198. package/src/plugin/graphrunner-local/types.ts +10 -0
  199. package/src/plugin/graphrunner-webworker/graph-executor.worker.ts +635 -0
  200. package/src/plugin/graphrunner-webworker/index.tsx +140 -0
  201. package/src/plugin/graphrunner-webworker/panel.tsx +173 -0
  202. package/src/plugin/graphrunner-webworker/store.ts +98 -0
  203. package/src/plugin/graphrunner-webworker/worker-transport.ts +123 -0
  204. package/src/plugin/kitchen-sink/index.ts +38 -0
  205. package/src/plugin/layout/dagre.ts +131 -0
  206. package/src/plugin/layout/elk.ts +216 -0
  207. package/src/plugin/layout/index.ts +80 -0
  208. package/src/plugin/notes/FormatToolbar.tsx +200 -0
  209. package/src/plugin/notes/index.tsx +191 -0
  210. package/src/plugin/notes/nodeActions.ts +100 -0
  211. package/src/plugin/notes/note.tsx +20 -0
  212. package/src/plugin/notes/noteImpl.tsx +89 -0
  213. package/src/plugin/realtime/realtimeRunner.ts +624 -0
  214. package/src/specifics/CustomEventOnTriggeredSpecific.tsx +92 -0
  215. package/src/specifics/CustomEventTriggerSpecific.tsx +141 -0
  216. package/src/specifics/VariableGetSpecific.tsx +110 -0
  217. package/src/specifics/VariableSetSpecific.tsx +110 -0
  218. package/src/store/actions.tsx +698 -0
  219. package/src/store/commands.ts +278 -0
  220. package/src/store/contextMenu.ts +192 -0
  221. package/src/store/controls.tsx +62 -0
  222. package/src/store/conversions.ts +47 -0
  223. package/src/store/documentation.tsx +69 -0
  224. package/src/store/events.tsx +116 -0
  225. package/src/store/flow.tsx +230 -0
  226. package/src/store/graphMeta.ts +39 -0
  227. package/src/store/hotKeys.tsx +364 -0
  228. package/src/store/layers.ts +259 -0
  229. package/src/store/legend.tsx +76 -0
  230. package/src/store/logs.ts +28 -0
  231. package/src/store/menubar.ts +41 -0
  232. package/src/store/refs.ts +84 -0
  233. package/src/store/registry.ts +51 -0
  234. package/src/store/selection.ts +22 -0
  235. package/src/store/settings.ts +99 -0
  236. package/src/store/settingsSchema.ts +210 -0
  237. package/src/store/socketGenerator.tsx +54 -0
  238. package/src/store/specific.tsx +75 -0
  239. package/src/store/specs.tsx +35 -0
  240. package/src/store/tabs.ts +282 -0
  241. package/src/store/toolbar.tsx +45 -0
  242. package/src/store/traces.ts +240 -0
  243. package/src/store/variables.ts +37 -0
  244. package/src/system/graph.ts +131 -0
  245. package/src/system/graphSession.ts +172 -0
  246. package/src/system/index.ts +6 -0
  247. package/src/system/notifications.ts +111 -0
  248. package/src/system/persistence.ts +82 -0
  249. package/src/system/plugin.ts +55 -0
  250. package/src/system/provider.tsx +86 -0
  251. package/src/system/pubsub.ts +323 -0
  252. package/src/system/system.ts +653 -0
  253. package/src/system/tabLoader.tsx +303 -0
  254. package/src/system/undoRedo.ts +103 -0
  255. package/src/transformers/Uigraph.ts +61 -0
  256. package/src/transformers/behaveToFlow.ts +16 -4
  257. package/src/transformers/contract.ts +87 -0
  258. package/src/transformers/flowToBehave.ts +40 -12
  259. package/src/types/NodeMetadata.ts +27 -0
  260. package/src/types/graph.ts +49 -0
  261. package/src/types/nodes.ts +50 -0
  262. package/src/types.ts +18 -0
  263. package/src/util/autoConvert.ts +200 -0
  264. package/src/util/colors.ts +1 -29
  265. package/src/util/downloadJson.ts +18 -0
  266. package/src/util/extractNodeMetadata.ts +16 -0
  267. package/src/util/getPickerFilters.ts +1 -1
  268. package/src/util/isBehaveNode.ts +6 -0
  269. package/src/util/isValidConnection.ts +51 -17
  270. package/src/util/mergeSockets.ts +29 -0
  271. package/src/util/serializeVariables.ts +66 -0
  272. package/src/util/sockets.ts +43 -0
  273. package/stories/apex/layoutController/example-graph.worker.ts +39 -0
  274. package/stories/apex/layoutController/index.stories.tsx +48 -0
  275. package/stories/apex/layoutController/webworker.stories.tsx +103 -0
  276. package/stories/apex/menubar/menubar.stories.tsx +19 -0
  277. package/stories/components/colorpicker/index.stories.tsx +20 -0
  278. package/stories/components/contextMenus/edge.stories.tsx +32 -0
  279. package/stories/components/contextMenus/node.stories.tsx +26 -0
  280. package/stories/components/contextMenus/nodePicker.stories.tsx +115 -0
  281. package/stories/components/controls/any/index.stories.tsx +19 -0
  282. package/stories/components/controls/boolean/index.stories.tsx +19 -0
  283. package/stories/components/controls/colorPicker/index.stories.tsx +49 -0
  284. package/stories/components/controls/number/index.stories.tsx +19 -0
  285. package/stories/components/controls/string/index.stories.tsx +19 -0
  286. package/stories/components/nodes/behaveNode.stories.tsx +108 -0
  287. package/stories/components/panels/alignment.stories.tsx +24 -0
  288. package/stories/components/panels/events.stories.tsx +38 -0
  289. package/stories/components/panels/graphRunner.stories.tsx +317 -0
  290. package/stories/components/panels/history.stories.tsx +37 -0
  291. package/stories/components/panels/keymaps.stories.tsx +21 -0
  292. package/stories/components/panels/legend.stories.tsx +37 -0
  293. package/stories/components/panels/logs.stories.tsx +24 -0
  294. package/stories/components/panels/nodeInputs.stories.tsx +21 -0
  295. package/stories/components/panels/nodePicker.stories.tsx +37 -0
  296. package/stories/components/panels/panel.stories.tsx +39 -0
  297. package/stories/components/panels/search.stories.tsx +24 -0
  298. package/stories/components/panels/systemSettings.stories.tsx +26 -0
  299. package/stories/components/panels/traces.stories.tsx +225 -0
  300. package/stories/components/panels/variables.stories.tsx +24 -0
  301. package/stories/defaults/defaultStoryProvider.tsx +170 -0
  302. package/stories/defaults/systemGenerator.ts +43 -0
  303. package/stories/plugins/notes.stories.tsx +100 -0
  304. package/tests/autoConvert.test.ts +329 -0
  305. package/tests/autosavePlugin.test.ts +204 -0
  306. package/tests/callSubgraphSync.test.ts +148 -0
  307. package/tests/commandRegistry.test.ts +137 -0
  308. package/tests/components/edges/offsetBezier.test.ts +51 -0
  309. package/tests/components/layoutController/utils.test.ts +68 -0
  310. package/tests/components/panels/traces/utils.test.ts +52 -0
  311. package/tests/contract.test.ts +51 -0
  312. package/tests/contractSerialize.test.ts +62 -0
  313. package/tests/deriveSpans.test.ts +71 -0
  314. package/tests/flowToBehave.test.ts +27 -4
  315. package/tests/hotkeys.test.ts +79 -0
  316. package/tests/keepAliveLifecycle.test.ts +167 -0
  317. package/tests/loadManifest.test.ts +113 -0
  318. package/tests/noteMarkdown.test.ts +65 -0
  319. package/tests/notesPlugin.test.ts +162 -0
  320. package/tests/notifications.test.ts +87 -0
  321. package/tests/persistence.test.ts +51 -0
  322. package/tests/saveLoad.test.ts +373 -0
  323. package/tests/settings.test.ts +178 -0
  324. package/tests/traceStore.test.ts +46 -0
  325. package/tests/util/calculateNewEdge.test.ts +98 -0
  326. package/tests/util/getSocketsByNodeTypeAndHandleType.test.ts +31 -0
  327. package/tests/util/hasPositionMetaData.test.ts +33 -0
  328. package/tests/util/isBehaveNode.test.ts +22 -0
  329. package/tests/util/isHandleConnected.test.ts +37 -0
  330. package/tests/util/mergeSockets.test.ts +43 -0
  331. package/tests/visual/README.md +64 -0
  332. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-alignment-chromium-win32.png +0 -0
  333. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-conversation-chromium-win32.png +0 -0
  334. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-events-chromium-win32.png +0 -0
  335. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-history-chromium-win32.png +0 -0
  336. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-keymaps-chromium-win32.png +0 -0
  337. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-layers-chromium-win32.png +0 -0
  338. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-legend-chromium-win32.png +0 -0
  339. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-localGraphRunner-chromium-win32.png +0 -0
  340. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-logs-chromium-win32.png +0 -0
  341. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-nodeInputs-chromium-win32.png +0 -0
  342. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-nodePicker-chromium-win32.png +0 -0
  343. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-panel-chromium-win32.png +0 -0
  344. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-search-chromium-win32.png +0 -0
  345. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-systemSettings-chromium-win32.png +0 -0
  346. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-traces-chromium-win32.png +0 -0
  347. package/tests/visual/__screenshots__/panels.visual.test.tsx/panel-variables-chromium-win32.png +0 -0
  348. package/tests/visual/panels.visual.test.tsx +76 -0
  349. package/tests/wasdPan.test.ts +71 -0
  350. package/tsconfig.base.json +39 -0
  351. package/tsconfig.json +18 -59
  352. package/tsconfig.prod.json +23 -0
  353. package/tsdown.config.ts +15 -3
  354. package/typedoc.json +7 -7
  355. package/vite.config.js +7 -0
  356. package/vitest.config.ts +5 -2
  357. package/vitest.visual.config.ts +55 -0
  358. package/src/components/AutoSizeInput.tsx +0 -65
  359. package/src/components/Controls.tsx +0 -87
  360. package/src/components/InputSocket.tsx +0 -142
  361. package/src/components/Node.tsx +0 -68
  362. package/src/components/NodeContainer.tsx +0 -46
  363. package/src/components/NodePicker.tsx +0 -77
  364. package/src/components/OutputSocket.tsx +0 -58
  365. package/src/components/modals/ClearModal.tsx +0 -40
  366. package/src/components/modals/HelpModal.tsx +0 -36
  367. package/src/components/modals/LoadModal.tsx +0 -96
  368. package/src/components/modals/Modal.tsx +0 -64
  369. package/src/components/modals/SaveModal.tsx +0 -60
  370. package/src/hooks/useCustomNodeTypes.tsx +0 -31
  371. package/src/hooks/useGraphRunner.ts +0 -104
  372. package/src/hooks/useMergeMap.ts +0 -14
  373. package/src/hooks/useNodeSpecJson.ts +0 -20
  374. package/src/hooks/useQueriableDefinitions.ts +0 -22
  375. package/src/styles.css +0 -8
  376. package/tailwind.config.ts +0 -19
  377. package/tests/tsconfig.json +0 -10
  378. /package/src/{types.d.ts → types-declarations.d.ts} +0 -0
@@ -0,0 +1,693 @@
1
+ import {
2
+ type CustomEventJSON,
3
+ type GraphJSON,
4
+ type NodeSpecJSON,
5
+ type VariableJSON
6
+ } from '@kiberon-labs/behave-graph';
7
+
8
+ // Protocol Types (from protocol spec)
9
+ export type RunStatus =
10
+ | 'pending'
11
+ | 'running'
12
+ | 'completed'
13
+ | 'stopped'
14
+ | 'error';
15
+
16
+ export type ErrorCode =
17
+ | 'PROTOCOL_VERSION_MISMATCH'
18
+ | 'PROTOCOL_VIOLATION'
19
+ | 'AUTHENTICATION_FAILED'
20
+ | 'AUTHENTICATION_REQUIRED'
21
+ | 'SESSION_NOT_FOUND'
22
+ | 'SESSION_EXPIRED'
23
+ | 'INVALID_GRAPH'
24
+ | 'VALIDATION_FAILED'
25
+ | 'RUN_NOT_FOUND'
26
+ | 'NODE_EXECUTION_ERROR'
27
+ | 'TIMEOUT'
28
+ | 'CONCURRENT_LIMIT_EXCEEDED'
29
+ | 'PERMISSION_DENIED';
30
+
31
+ export interface GraphRunnerCapabilities {
32
+ trace: boolean;
33
+ validation?: boolean;
34
+ graphRegistry?: boolean;
35
+ eventFiltering?: boolean;
36
+ batchOperations?: boolean;
37
+ runHistory?: boolean;
38
+ runtimeMetadata?: boolean;
39
+ maxConcurrentRuns?: number;
40
+ /**
41
+ * Can the graph be modified in realtime?
42
+ */
43
+ realtime?: boolean;
44
+ maxConcurrentDynamicRuns?: number;
45
+ updateGranularity?: 'node' | 'socket' | 'full';
46
+ }
47
+
48
+ export interface RunPerformance {
49
+ nodesExecuted: number;
50
+ eventsEmitted: number;
51
+ variableChanges: number;
52
+ }
53
+
54
+ export interface EventFilter {
55
+ eventTypes?: string[];
56
+ variableNames?: string[];
57
+ eventNames?: string[];
58
+ }
59
+
60
+ export interface ServerVariable extends VariableJSON {
61
+ readonly: boolean;
62
+ description?: string;
63
+ }
64
+
65
+ export interface ServerEvent extends CustomEventJSON {
66
+ readonly: boolean;
67
+ description?: string;
68
+ payloadSchema?: unknown;
69
+ }
70
+
71
+ export interface SocketConstraint {
72
+ type: 'enum' | 'range' | 'pattern' | 'custom';
73
+ choices?: Array<{ value: unknown; label: string }>;
74
+ min?: number;
75
+ max?: number;
76
+ pattern?: string;
77
+ validator?: string;
78
+ }
79
+
80
+ export interface NodeSocket {
81
+ name: string;
82
+ valueType: string;
83
+ required?: boolean;
84
+ hasConstraints?: boolean;
85
+ }
86
+
87
+ export interface AuthCredentials {
88
+ type: 'bearer' | 'apiKey' | 'none';
89
+ token?: string;
90
+ key?: string;
91
+ }
92
+
93
+ // Server Message Types
94
+ export interface ServerPongMessage {
95
+ type: 'pong';
96
+ timestamp: number;
97
+ }
98
+
99
+ export interface ServerWelcomeMessage {
100
+ type: 'welcome';
101
+ protocolVersion: string;
102
+ serverId: string;
103
+ authenticated: boolean;
104
+ userId?: string;
105
+ }
106
+
107
+ export interface CapabilitiesMessage {
108
+ type: 'capabilities';
109
+ capabilities: GraphRunnerCapabilities;
110
+ }
111
+
112
+ export interface SessionCreatedMessage {
113
+ type: 'sessionCreated';
114
+ sessionId: string;
115
+ expiresAt: number;
116
+ }
117
+
118
+ export interface SessionResumedMessage {
119
+ type: 'sessionResumed';
120
+ sessionId: string;
121
+ activeRuns: string[];
122
+ }
123
+
124
+ export interface SessionClosedMessage {
125
+ type: 'sessionClosed';
126
+ sessionId: string;
127
+ }
128
+
129
+ export interface ServerVariablesMessage {
130
+ type: 'serverVariables';
131
+ variables: ServerVariable[];
132
+ }
133
+
134
+ export interface ServerEventsMessage {
135
+ type: 'serverEvents';
136
+ events: ServerEvent[];
137
+ }
138
+
139
+ export interface SocketConstraintsMessage {
140
+ type: 'socketConstraints';
141
+ nodeType: string;
142
+ socketName: string;
143
+ valueType: string;
144
+ constraints: SocketConstraint;
145
+ }
146
+
147
+ export interface NodeTypesMessage {
148
+ type: 'nodeTypes';
149
+ nodes: NodeSpecJSON[];
150
+ }
151
+
152
+ export interface RunStartedMessage {
153
+ type: 'runStarted';
154
+ runId: string;
155
+ graphId: string;
156
+ startedAt: number;
157
+ }
158
+
159
+ export interface ServerGraphRegisteredMessage {
160
+ type: 'graphRegistered';
161
+ graphId: string;
162
+ }
163
+
164
+ export interface ServerGraphListMessage {
165
+ type: 'graphList';
166
+ graphs: Array<{ graphId: string; registeredAt: number }>;
167
+ }
168
+
169
+ export interface ValidationResultMessage {
170
+ type: 'validationResult';
171
+ graphId: string;
172
+ valid: boolean;
173
+ errors: Array<{ nodeId: string; message: string; severity: string }>;
174
+ warnings: Array<{ nodeId: string; message: string; severity: string }>;
175
+ }
176
+
177
+ export interface TraceMessage {
178
+ type: 'trace';
179
+ runId: string;
180
+ graphId: string;
181
+ nodeId: string;
182
+ event: string;
183
+ data: unknown;
184
+ timestamp: number;
185
+ }
186
+
187
+ /** A single node-execution event inside a {@link TraceBatchMessage}. */
188
+ export interface TraceBatchEvent {
189
+ nodeId: string;
190
+ event: string;
191
+ data?: unknown;
192
+ timestamp: number;
193
+ }
194
+
195
+ /**
196
+ * Coalesced trace events for one run. Runners buffer per-node execution events
197
+ * and flush them roughly once per frame, so a tick that executes hundreds of
198
+ * nodes costs one message instead of hundreds.
199
+ */
200
+ export interface TraceBatchMessage {
201
+ type: 'traceBatch';
202
+ runId: string;
203
+ graphId: string;
204
+ events: TraceBatchEvent[];
205
+ }
206
+
207
+ export interface LogMessage {
208
+ type: 'log';
209
+ runId: string;
210
+ graphId: string;
211
+ level: string;
212
+ message: string;
213
+ data?: unknown;
214
+ }
215
+
216
+ export interface VariableChangedMessage {
217
+ type: 'variableChanged';
218
+ runId: string;
219
+ graphId: string;
220
+ variableName: string;
221
+ oldValue: unknown;
222
+ newValue: unknown;
223
+ nodeId?: string;
224
+ }
225
+
226
+ export interface CompletedMessage {
227
+ type: 'completed';
228
+ runId: string;
229
+ graphId: string;
230
+ completedAt: number;
231
+ elapsedMs: number;
232
+ result: unknown;
233
+ performance: RunPerformance;
234
+ }
235
+
236
+ export interface StoppedMessage {
237
+ type: 'stopped';
238
+ runId: string;
239
+ graphId: string;
240
+ reason: string;
241
+ }
242
+
243
+ export interface StatusMessage {
244
+ type: 'status';
245
+ runId: string;
246
+ graphId: string;
247
+ status: RunStatus;
248
+ startedAt: number;
249
+ elapsedMs: number;
250
+ currentNodeId?: string;
251
+ startedGraphs: Array<{
252
+ runId: string;
253
+ graphId: string;
254
+ status: RunStatus;
255
+ }>;
256
+ performance: RunPerformance;
257
+ }
258
+
259
+ export interface BatchStatusMessage {
260
+ type: 'batchStatus';
261
+ statuses: Array<{ runId: string; status: RunStatus; elapsedMs: number }>;
262
+ }
263
+
264
+ export interface ErrorMessage {
265
+ type: 'error';
266
+ code: ErrorCode;
267
+ message: string;
268
+ runId?: string;
269
+ graphId?: string;
270
+ nodeId?: string;
271
+ details?: unknown;
272
+ supportedVersions?: string[];
273
+ }
274
+
275
+ export interface RunHistoryMessage {
276
+ type: 'runHistory';
277
+ runs: Array<{
278
+ runId: string;
279
+ graphId: string;
280
+ status: RunStatus;
281
+ startedAt: number;
282
+ completedAt?: number;
283
+ elapsedMs: number;
284
+ result?: unknown;
285
+ }>;
286
+ }
287
+
288
+ export type ServerGraphRunnerMessage =
289
+ // Connection
290
+ | ServerPongMessage
291
+ | ServerWelcomeMessage
292
+ // Capabilities
293
+ | CapabilitiesMessage
294
+ // Session Management
295
+ | SessionCreatedMessage
296
+ | SessionResumedMessage
297
+ | SessionClosedMessage
298
+ // Runtime Metadata
299
+ | ServerVariablesMessage
300
+ | ServerEventsMessage
301
+ | SocketConstraintsMessage
302
+ | NodeTypesMessage
303
+ // Execution
304
+ | RunStartedMessage
305
+ // Graph Registry
306
+ | ServerGraphRegisteredMessage
307
+ | ServerGraphListMessage
308
+ // Validation
309
+ | ValidationResultMessage
310
+ // Events
311
+ | TraceMessage
312
+ | TraceBatchMessage
313
+ | LogMessage
314
+ | VariableChangedMessage
315
+ | CompletedMessage
316
+ | NodeAddedMessage
317
+ // Status
318
+ | StoppedMessage
319
+ | StatusMessage
320
+ | BatchStatusMessage
321
+ // Errors
322
+ | ErrorMessage
323
+ // Realtime State Changes
324
+ | NodeRemovedMessage
325
+ | LinkCreatedMessage
326
+ | LinkRemovedMessage
327
+ | NodeParamUpdatedMessage
328
+ | AffectedNodesMessage
329
+ // History
330
+ | RunHistoryMessage;
331
+
332
+ // Client Message Types
333
+ export interface HelloMessage {
334
+ type: 'hello';
335
+ protocolVersion: string;
336
+ auth: AuthCredentials;
337
+ }
338
+
339
+ export interface WelcomeMessage {
340
+ type: 'welcome';
341
+ protocolVersion: string;
342
+ serverId: string;
343
+ authenticated: boolean;
344
+ userId?: string;
345
+ }
346
+
347
+ export interface PingMessage {
348
+ type: 'ping';
349
+ timestamp: number;
350
+ }
351
+
352
+ export interface PongMessage {
353
+ type: 'pong';
354
+ timestamp: number;
355
+ }
356
+
357
+ export interface CreateSessionMessage {
358
+ type: 'createSession';
359
+ metadata?: Record<string, unknown>;
360
+ }
361
+
362
+ export interface ResumeSessionMessage {
363
+ type: 'resumeSession';
364
+ sessionId: string;
365
+ }
366
+
367
+ export interface CloseSessionMessage {
368
+ type: 'closeSession';
369
+ sessionId: string;
370
+ }
371
+
372
+ export interface GetCapabilitiesMessage {
373
+ type: 'getCapabilities';
374
+ }
375
+
376
+ export interface GetServerVariablesMessage {
377
+ type: 'getServerVariables';
378
+ sessionId: string;
379
+ }
380
+
381
+ export interface GetServerEventsMessage {
382
+ type: 'getServerEvents';
383
+ sessionId: string;
384
+ }
385
+
386
+ export interface GetSocketConstraintsMessage {
387
+ type: 'getSocketConstraints';
388
+ sessionId: string;
389
+ nodeType: string;
390
+ socketName: string;
391
+ }
392
+
393
+ export interface GetNodeTypesMessage {
394
+ type: 'getNodeTypes';
395
+ sessionId: string;
396
+ }
397
+
398
+ export interface RegisterGraphMessage {
399
+ type: 'registerGraph';
400
+ sessionId: string;
401
+ graphId: string;
402
+ graph: GraphJSON;
403
+ }
404
+
405
+ export interface GraphRegisteredMessage {
406
+ type: 'graphRegistered';
407
+ graphId: string;
408
+ }
409
+
410
+ export interface GraphListMessage {
411
+ type: 'graphList';
412
+ graphs: Array<{ graphId: string; registeredAt: number }>;
413
+ }
414
+
415
+ export interface ValidateGraphMessage {
416
+ type: 'validateGraph';
417
+ sessionId: string;
418
+ graphId: string;
419
+ graph: unknown;
420
+ }
421
+
422
+ export interface RunGraphMessage {
423
+ type: 'runGraph';
424
+ sessionId: string;
425
+ graphId: string;
426
+ graph: GraphJSON;
427
+ inputs?: unknown;
428
+ options?: {
429
+ autoEnd?: boolean;
430
+ trace?: boolean;
431
+ eventFilter?: EventFilter;
432
+ maxExecutionTimeMs?: number;
433
+ autoExecMode?: 'new' | 'current';
434
+ allowDynamicChanges?: boolean;
435
+ streamDeltas?: boolean;
436
+ };
437
+ }
438
+
439
+ export interface ListGraphsMessage {
440
+ type: 'listGraphs';
441
+ sessionId: string;
442
+ }
443
+
444
+ export interface BatchRunStartedMessage {
445
+ type: 'batchRunStarted';
446
+ runs: Array<{ runId: string; graphId: string }>;
447
+ }
448
+
449
+ export interface StopGraphMessage {
450
+ type: 'stopGraph';
451
+ sessionId: string;
452
+ runId: string;
453
+ }
454
+
455
+ export interface GetStatusMessage {
456
+ type: 'getStatus';
457
+ sessionId: string;
458
+ runId: string;
459
+ }
460
+
461
+ export interface BatchGetStatusMessage {
462
+ type: 'batchGetStatus';
463
+ sessionId: string;
464
+ runIds: string[];
465
+ }
466
+
467
+ export interface SubscribeMessage {
468
+ type: 'subscribe';
469
+ sessionId: string;
470
+ runId: string;
471
+ filter?: EventFilter;
472
+ }
473
+
474
+ export interface UnsubscribeMessage {
475
+ type: 'unsubscribe';
476
+ sessionId: string;
477
+ runId: string;
478
+ }
479
+
480
+ export interface EventEmittedMessage {
481
+ type: 'eventEmitted';
482
+ runId: string;
483
+ graphId: string;
484
+ eventName: string;
485
+ payload: unknown;
486
+ nodeId?: string;
487
+ }
488
+
489
+ export interface NodeAddedMessage {
490
+ type: 'nodeAdded';
491
+ runId: string;
492
+ graphId: string;
493
+ nodeId: string;
494
+ nodeType: string;
495
+ nodeData?: unknown;
496
+ }
497
+
498
+ export interface GetRunHistoryMessage {
499
+ type: 'getRunHistory';
500
+ sessionId: string;
501
+ limit?: number;
502
+ graphId?: string;
503
+ }
504
+
505
+ // Realtime Modification Messages (Client → Server)
506
+ export interface AddNodeMessage {
507
+ type: 'addNode';
508
+ sessionId: string;
509
+ runId: string;
510
+ nodeId: string;
511
+ nodeType: string;
512
+ nodeData?: Record<string, unknown>;
513
+ position?: { x: number; y: number };
514
+ }
515
+
516
+ export interface RemoveNodeMessage {
517
+ type: 'removeNode';
518
+ sessionId: string;
519
+ runId: string;
520
+ nodeId: string;
521
+ }
522
+
523
+ export interface UpdateSocketValueMessage {
524
+ type: 'updateSocketValue';
525
+ sessionId: string;
526
+ runId: string;
527
+ nodeId: string;
528
+ socketName: string;
529
+ value: unknown;
530
+ }
531
+
532
+ export interface UpdateNodeParamMessage {
533
+ type: 'updateNodeParam';
534
+ sessionId: string;
535
+ runId: string;
536
+ nodeId: string;
537
+ paramName: string;
538
+ value: unknown;
539
+ }
540
+
541
+ export interface CreateLinkMessage {
542
+ type: 'createLink';
543
+ sessionId: string;
544
+ runId: string;
545
+ fromNodeId: string;
546
+ fromSocket: string;
547
+ toNodeId: string;
548
+ toSocket: string;
549
+ }
550
+
551
+ export interface RemoveLinkMessage {
552
+ type: 'removeLink';
553
+ sessionId: string;
554
+ runId: string;
555
+ fromNodeId: string;
556
+ fromSocket: string;
557
+ toNodeId: string;
558
+ toSocket: string;
559
+ }
560
+
561
+ export interface DirectExecuteNodeMessage {
562
+ type: 'directExecuteNode';
563
+ sessionId: string;
564
+ runId: string;
565
+ nodeId: string;
566
+ inputSocketName: string;
567
+ inputValue: unknown;
568
+ autoExecMode?: 'new' | 'current';
569
+ }
570
+
571
+ // Realtime State Change Events (Server → Client)
572
+ export interface NodeRemovedMessage {
573
+ type: 'nodeRemoved';
574
+ runId: string;
575
+ graphId: string;
576
+ nodeId: string;
577
+ }
578
+
579
+ export interface LinkCreatedMessage {
580
+ type: 'linkCreated';
581
+ runId: string;
582
+ graphId: string;
583
+ fromNodeId: string;
584
+ fromSocket: string;
585
+ toNodeId: string;
586
+ toSocket: string;
587
+ }
588
+
589
+ export interface LinkRemovedMessage {
590
+ type: 'linkRemoved';
591
+ runId: string;
592
+ graphId: string;
593
+ fromNodeId: string;
594
+ fromSocket: string;
595
+ toNodeId: string;
596
+ toSocket: string;
597
+ }
598
+
599
+ export interface NodeParamUpdatedMessage {
600
+ type: 'nodeParamUpdated';
601
+ runId: string;
602
+ graphId: string;
603
+ nodeId: string;
604
+ paramName: string;
605
+ oldValue: unknown;
606
+ newValue: unknown;
607
+ }
608
+
609
+ export interface AffectedNodesMessage {
610
+ type: 'affectedNodes';
611
+ runId: string;
612
+ graphId: string;
613
+ nodeIds: string[];
614
+ reason:
615
+ | 'direct-execution'
616
+ | 'socket-value-update'
617
+ | 'param-update'
618
+ | 'link-change';
619
+ }
620
+
621
+ export type GraphRunnerMessage =
622
+ // Connection
623
+ | HelloMessage
624
+ | WelcomeMessage
625
+ | PingMessage
626
+ | PongMessage
627
+ // Session Management
628
+ | CreateSessionMessage
629
+ | ResumeSessionMessage
630
+ | CloseSessionMessage
631
+ // Capabilities
632
+ | GetCapabilitiesMessage
633
+ // Runtime Metadata
634
+ | GetServerVariablesMessage
635
+ | GetServerEventsMessage
636
+ | GetSocketConstraintsMessage
637
+ | GetNodeTypesMessage
638
+ // Graph Registry
639
+ | RegisterGraphMessage
640
+ | GraphRegisteredMessage
641
+ | GraphListMessage
642
+ // Validation
643
+ | ValidateGraphMessage
644
+ // Execution
645
+ | RunGraphMessage
646
+ | ListGraphsMessage
647
+ | BatchRunStartedMessage
648
+ | StopGraphMessage
649
+ // Status
650
+ | GetStatusMessage
651
+ | BatchGetStatusMessage
652
+ // Events
653
+ | SubscribeMessage
654
+ | UnsubscribeMessage
655
+ | EventEmittedMessage
656
+ | NodeAddedMessage
657
+ // Realtime Modifications
658
+ | AddNodeMessage
659
+ | RemoveNodeMessage
660
+ | UpdateSocketValueMessage
661
+ | UpdateNodeParamMessage
662
+ | CreateLinkMessage
663
+ | RemoveLinkMessage
664
+ | DirectExecuteNodeMessage
665
+ // Realtime State Changes
666
+ | NodeRemovedMessage
667
+ | LinkCreatedMessage
668
+ | LinkRemovedMessage
669
+ | NodeParamUpdatedMessage
670
+ | AffectedNodesMessage
671
+ // History
672
+ | GetRunHistoryMessage;
673
+
674
+ export interface GraphRunnerClientConfig {
675
+ url?: string;
676
+ auth?: AuthCredentials;
677
+ protocolVersion?: string;
678
+ autoReconnect?: boolean;
679
+ reconnectInterval?: number;
680
+ heartbeatInterval?: number;
681
+ metadata?: Record<string, unknown>;
682
+ transport?: import('./transport').ITransport;
683
+ trace?: boolean;
684
+ eventFilter?: EventFilter;
685
+ maxExecutionTimeMs?: number;
686
+ allowDynamicChanges?: boolean;
687
+ autoExecMode?: 'new' | 'current';
688
+ streamDeltas?: boolean;
689
+ onMessageActivity?: (
690
+ direction: 'sent' | 'received',
691
+ message: GraphRunnerMessage
692
+ ) => void;
693
+ }