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