windmill-components 1.558.3 → 1.596.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 (1418) hide show
  1. package/README.md +1 -1
  2. package/package/aiStore.d.ts +2 -0
  3. package/package/aiStore.js +24 -0
  4. package/package/ansibleUtils.d.ts +60 -0
  5. package/package/ansibleUtils.js +338 -0
  6. package/package/assets/app.css +22 -2
  7. package/package/assets/tokens/README.md +1 -0
  8. package/package/assets/tokens/colorTokensConfig.d.ts +2 -0
  9. package/package/assets/tokens/colorTokensConfig.js +2 -0
  10. package/package/assets/tokens/tokens.json +481 -0
  11. package/package/cancelable-promise-utils.d.ts +11 -0
  12. package/package/cancelable-promise-utils.js +70 -0
  13. package/package/common.d.ts +5 -1
  14. package/package/components/AIAgentLogViewer.svelte +59 -1
  15. package/package/components/AIAgentLogViewer.svelte.d.ts +3 -2
  16. package/package/components/AIProviderPicker.svelte +140 -57
  17. package/package/components/AddUser.svelte +2 -3
  18. package/package/components/ApiConnectForm.svelte +3 -10
  19. package/package/components/ApiConnectForm.svelte.d.ts +1 -1
  20. package/package/components/AppConnectDrawer.svelte +3 -3
  21. package/package/components/AppConnectInner.svelte +212 -164
  22. package/package/components/AppConnectLightweightResourcePicker.svelte +2 -2
  23. package/package/components/AppTutorials.svelte +19 -42
  24. package/package/components/AppTutorials.svelte.d.ts +3 -25
  25. package/package/components/ArgEnum.svelte +9 -2
  26. package/package/components/ArgEnum.svelte.d.ts +1 -0
  27. package/package/components/ArgInfo.svelte +8 -8
  28. package/package/components/ArgInput.svelte +127 -88
  29. package/package/components/ArgInput.svelte.d.ts +2 -1
  30. package/package/components/ArrayTypeNarrowing.svelte +9 -5
  31. package/package/components/ArrayTypeNarrowing.svelte.d.ts +2 -1
  32. package/package/components/AssignableTags.svelte +3 -3
  33. package/package/components/AssignableTags.svelte.d.ts +1 -2
  34. package/package/components/AssignableTagsInner.svelte +116 -74
  35. package/package/components/AssignableTagsInner.svelte.d.ts +1 -1
  36. package/package/components/Auth0Setting.svelte +74 -29
  37. package/package/components/AuthSettings.svelte +295 -108
  38. package/package/components/AutheliaSetting.svelte +26 -15
  39. package/package/components/AuthentikSetting.svelte +16 -14
  40. package/package/components/AutoscalingConfigEditor.svelte +417 -337
  41. package/package/components/AutoscalingConfigEditor.svelte.d.ts +3 -19
  42. package/package/components/AutoscalingEvents.svelte +64 -42
  43. package/package/components/Awareness.svelte +14 -11
  44. package/package/components/Awareness.svelte.d.ts +2 -17
  45. package/package/components/AzureOauthSettings.svelte +10 -6
  46. package/package/components/CenteredModal.svelte +4 -4
  47. package/package/components/CenteredPage.svelte +6 -5
  48. package/package/components/CenteredPage.svelte.d.ts +8 -38
  49. package/package/components/ChangeInstanceUsernameInner.svelte +4 -5
  50. package/package/components/ChannelSelector.svelte +103 -72
  51. package/package/components/ChannelSelector.svelte.d.ts +2 -0
  52. package/package/components/CliHelpBox.svelte +17 -13
  53. package/package/components/CollapseLink.svelte +16 -16
  54. package/package/components/CollapseLink.svelte.d.ts +7 -30
  55. package/package/components/CompareWorkspaces.svelte +945 -0
  56. package/package/components/CompareWorkspaces.svelte.d.ts +9 -0
  57. package/package/components/ConnectionSection.svelte +122 -106
  58. package/package/components/ConnectionSection.svelte.d.ts +10 -20
  59. package/package/components/ContentSearchInner.svelte +15 -60
  60. package/package/components/ContentSearchInnerItem.svelte +1 -1
  61. package/package/components/ContextualVariableEditor.svelte +14 -9
  62. package/package/components/CronBuilder.svelte +11 -10
  63. package/package/components/CronInput.svelte +161 -162
  64. package/package/components/CronInput.svelte.d.ts +1 -1
  65. package/package/components/CustomOauth.svelte +56 -53
  66. package/package/components/CustomSso.svelte +7 -7
  67. package/package/components/DBManager.svelte +108 -90
  68. package/package/components/DBManager.svelte.d.ts +6 -6
  69. package/package/components/DBManagerDrawer.svelte +13 -26
  70. package/package/components/DBManagerDrawer.svelte.d.ts +1 -1
  71. package/package/components/DBTableEditor.svelte +25 -22
  72. package/package/components/DBTableEditor.svelte.d.ts +5 -5
  73. package/package/components/DateInput.svelte +3 -0
  74. package/package/components/DateInput.svelte.d.ts +1 -1
  75. package/package/components/DateTimeInput.svelte +18 -20
  76. package/package/components/DateTimeInput.svelte.d.ts +1 -1
  77. package/package/components/DefaultScripts.svelte +1 -8
  78. package/package/components/DefaultScriptsInner.svelte +2 -1
  79. package/package/components/DefaultTagsInner.svelte +108 -69
  80. package/package/components/DefaultTagsInner.svelte.d.ts +4 -18
  81. package/package/components/DependenciesDeploymentWarning.svelte +265 -0
  82. package/package/components/DependenciesDeploymentWarning.svelte.d.ts +13 -0
  83. package/package/components/DeployButton.svelte +5 -3
  84. package/package/components/DeployToSetting.svelte +7 -8
  85. package/package/components/DeployWorkspace.svelte +58 -28
  86. package/package/components/DeployWorkspace.svelte.d.ts +9 -9
  87. package/package/components/Description.svelte +1 -1
  88. package/package/components/Dev.svelte +32 -13
  89. package/package/components/Dev.svelte.d.ts +1 -0
  90. package/package/components/DiffDrawer.svelte +76 -37
  91. package/package/components/DiffDrawer.svelte.d.ts +1 -0
  92. package/package/components/DiffEditor.svelte +6 -0
  93. package/package/components/DiffEditor.svelte.d.ts +2 -1
  94. package/package/components/DisplayResult.svelte +59 -75
  95. package/package/components/DisplayResultControlBar.svelte +1 -1
  96. package/package/components/DraftBadge.svelte +2 -2
  97. package/package/components/DropdownV2.svelte +13 -9
  98. package/package/components/DropdownV2.svelte.d.ts +4 -0
  99. package/package/components/DropdownV2Inner.svelte +12 -4
  100. package/package/components/DynamicInput.svelte +1 -1
  101. package/package/components/EEOnly.svelte +25 -0
  102. package/package/components/EEOnly.svelte.d.ts +7 -0
  103. package/package/components/EditableSchemaForm.svelte +10 -12
  104. package/package/components/Editor.svelte +175 -18
  105. package/package/components/Editor.svelte.d.ts +5 -0
  106. package/package/components/EditorBar.svelte +210 -112
  107. package/package/components/EditorBar.svelte.d.ts +2 -4
  108. package/package/components/EditorSettings.svelte +2 -4
  109. package/package/components/EditorSettings.svelte.d.ts +3 -0
  110. package/package/components/ErrorOrRecoveryHandler.svelte +320 -334
  111. package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -0
  112. package/package/components/ExploreAssetButton.svelte +36 -11
  113. package/package/components/FakeMonacoPlaceHolder.svelte +11 -7
  114. package/package/components/FieldHeader.svelte +4 -4
  115. package/package/components/FlowBuilder.svelte +88 -69
  116. package/package/components/FlowGraphDiffViewer.svelte +210 -0
  117. package/package/components/FlowGraphDiffViewer.svelte.d.ts +7 -0
  118. package/package/components/FlowGraphViewer.svelte +2 -1
  119. package/package/components/FlowGraphViewerStep.svelte +6 -3
  120. package/package/components/FlowGraphViewerStep.svelte.d.ts +1 -0
  121. package/package/components/FlowHistoryJobPicker.svelte +9 -11
  122. package/package/components/FlowHistoryJobPicker.svelte.d.ts +8 -7
  123. package/package/components/FlowJobResult.svelte +8 -6
  124. package/package/components/FlowJobResult.svelte.d.ts +3 -2
  125. package/package/components/FlowLogRow.svelte +1 -1
  126. package/package/components/FlowLogViewer.svelte +18 -14
  127. package/package/components/FlowLoopIterationPreview.svelte +9 -9
  128. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  129. package/package/components/FlowMetadata.svelte +19 -19
  130. package/package/components/FlowPlugConnect.svelte +3 -5
  131. package/package/components/FlowPreviewContent.svelte +50 -129
  132. package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
  133. package/package/components/FlowPreviewResult.svelte +4 -0
  134. package/package/components/FlowRestartButton.svelte +192 -0
  135. package/package/components/FlowRestartButton.svelte.d.ts +15 -0
  136. package/package/components/FlowStatusViewerInner.svelte +171 -111
  137. package/package/components/FlowStatusWaitingForEvents.svelte +13 -7
  138. package/package/components/FlowTimelineBar.svelte +1 -1
  139. package/package/components/FlowTutorials.svelte +19 -60
  140. package/package/components/FlowTutorials.svelte.d.ts +3 -21
  141. package/package/components/FlowViewer.svelte +3 -3
  142. package/package/components/FlowViewerInner.svelte +5 -5
  143. package/package/components/FolderEditor.svelte +229 -207
  144. package/package/components/FolderInfo.svelte +3 -3
  145. package/package/components/FolderPicker.svelte +6 -9
  146. package/package/components/ForkWorkspaceBanner.svelte +183 -0
  147. package/package/components/ForkWorkspaceBanner.svelte.d.ts +3 -0
  148. package/package/components/GfmMarkdown.svelte +2 -2
  149. package/package/components/GfmMarkdown.svelte.d.ts +5 -18
  150. package/package/components/GitDiffPreview.svelte +5 -5
  151. package/package/components/GitHubAppIntegration.svelte +67 -41
  152. package/package/components/GitRepoPopoverPicker.svelte +83 -0
  153. package/package/components/GitRepoPopoverPicker.svelte.d.ts +26 -0
  154. package/package/components/GitRepoResourcePicker.svelte +230 -0
  155. package/package/components/GitRepoResourcePicker.svelte.d.ts +37 -0
  156. package/package/components/GitRepoViewer.svelte +167 -0
  157. package/package/components/GitRepoViewer.svelte.d.ts +8 -0
  158. package/package/components/GroupEditor.svelte +192 -163
  159. package/package/components/GroupInfo.svelte +25 -6
  160. package/package/components/HighlightCode.svelte +3 -0
  161. package/package/components/HighlightCode.svelte.d.ts +2 -2
  162. package/package/components/HighlightTheme.svelte +2 -5
  163. package/package/components/HistoricInputs.svelte +5 -5
  164. package/package/components/HistoricInputs.svelte.d.ts +1 -1
  165. package/package/components/HistoricList.svelte +1 -1
  166. package/package/components/HttpAgentWorkerDrawer.svelte +217 -148
  167. package/package/components/IconedPath.svelte +2 -3
  168. package/package/components/IconedPath.svelte.d.ts +6 -20
  169. package/package/components/IconedResourceType.svelte +1 -1
  170. package/package/components/InfiniteList.svelte.d.ts +1 -1
  171. package/package/components/InputTransformForm.svelte +233 -167
  172. package/package/components/InputTransformForm.svelte.d.ts +3 -1
  173. package/package/components/InputTransformSchemaForm.svelte +23 -7
  174. package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -1
  175. package/package/components/InputTransformsViewer.svelte +1 -1
  176. package/package/components/InstanceGroupEditor.svelte +1 -2
  177. package/package/components/InstanceNameEditor.svelte +28 -23
  178. package/package/components/InstanceSetting.svelte +358 -538
  179. package/package/components/InstanceSetting.svelte.d.ts +2 -0
  180. package/package/components/InstanceSettings.svelte +149 -124
  181. package/package/components/InviteGlobalUser.svelte +6 -7
  182. package/package/components/InviteUser.svelte +2 -8
  183. package/package/components/ItemPicker.svelte +2 -4
  184. package/package/components/JobArgs.svelte +1 -1
  185. package/package/components/JobLoader.svelte +4 -1
  186. package/package/components/JsonEditor.svelte +6 -7
  187. package/package/components/KanidmSetting.svelte +25 -15
  188. package/package/components/KeycloakSetting.svelte +26 -15
  189. package/package/components/Label.svelte +17 -5
  190. package/package/components/Label.svelte.d.ts +3 -1
  191. package/package/components/LightweightResourcePicker.svelte +1 -1
  192. package/package/components/LogViewer.svelte +15 -16
  193. package/package/components/LogViewerHeader.svelte +3 -4
  194. package/package/components/Login.svelte +27 -43
  195. package/package/components/Login.svelte.d.ts +3 -19
  196. package/package/components/ManageTagsDrawer.svelte +55 -0
  197. package/package/components/ManageTagsDrawer.svelte.d.ts +12 -0
  198. package/package/components/MapResult.svelte +9 -11
  199. package/package/components/McpToolCallDetails.svelte +33 -0
  200. package/package/components/McpToolCallDetails.svelte.d.ts +11 -0
  201. package/package/components/ModulePreview.svelte +3 -3
  202. package/package/components/ModulePreview.svelte.d.ts +1 -0
  203. package/package/components/ModulePreviewForm.svelte +3 -3
  204. package/package/components/ModulePreviewResultViewer.svelte +1 -1
  205. package/package/components/ModuleStatus.svelte +2 -2
  206. package/package/components/ModuleTest.svelte +4 -3
  207. package/package/components/NextcloudSetting.svelte +36 -24
  208. package/package/components/NumberTypeNarrowing.svelte +1 -1
  209. package/package/components/NumberTypeNarrowing.svelte.d.ts +1 -1
  210. package/package/components/OAuthSetting.svelte +132 -55
  211. package/package/components/OAuthSetting.svelte.d.ts +4 -18
  212. package/package/components/OauthExtraParams.svelte +12 -12
  213. package/package/components/OauthScopes.svelte +5 -7
  214. package/package/components/ObjectStoreConfigSettings.svelte +50 -59
  215. package/package/components/OccupancyBars.svelte +35 -0
  216. package/package/components/OccupancyBars.svelte.d.ts +9 -0
  217. package/package/components/OktaSetting.svelte +69 -33
  218. package/package/components/PageHeader.svelte +6 -3
  219. package/package/components/PageHeader.svelte.d.ts +1 -0
  220. package/package/components/Password.svelte +31 -33
  221. package/package/components/Password.svelte.d.ts +2 -0
  222. package/package/components/PasswordArgInput.svelte +2 -3
  223. package/package/components/Path.svelte +29 -28
  224. package/package/components/PermissionHistory.svelte +99 -0
  225. package/package/components/PermissionHistory.svelte.d.ts +15 -0
  226. package/package/components/PersistentScriptDrawer.svelte +1 -7
  227. package/package/components/Popover.svelte +7 -3
  228. package/package/components/QueueAlerts.svelte +544 -0
  229. package/package/components/QueueAlerts.svelte.d.ts +3 -0
  230. package/package/components/QueueMetricsDrawer.svelte +8 -375
  231. package/package/components/QueueMetricsDrawer.svelte.d.ts +0 -2
  232. package/package/components/QueueMetricsDrawerInner.svelte +79 -73
  233. package/package/components/QueuePosition.svelte +2 -2
  234. package/package/components/RepositorySelector.svelte +90 -0
  235. package/package/components/RepositorySelector.svelte.d.ts +18 -0
  236. package/package/components/Required.svelte +1 -1
  237. package/package/components/ResourceEditor.svelte +106 -97
  238. package/package/components/ResourceEditorDrawer.svelte +3 -1
  239. package/package/components/ResourcePicker.svelte +26 -10
  240. package/package/components/ResourceTypePicker.svelte +6 -8
  241. package/package/components/RunButton.svelte +3 -3
  242. package/package/components/RunChart.svelte +15 -14
  243. package/package/components/RunChart.svelte.d.ts +1 -0
  244. package/package/components/RunForm.svelte +3 -3
  245. package/package/components/RunFormAdvancedPopup.svelte +1 -2
  246. package/package/components/RunPageTutorials.svelte +21 -0
  247. package/package/components/RunPageTutorials.svelte.d.ts +23 -0
  248. package/package/components/RunsPage.svelte +1261 -0
  249. package/package/components/RunsPage.svelte.d.ts +7 -0
  250. package/package/components/S3ArrayHelperButton.svelte +1 -3
  251. package/package/components/S3FilePicker.svelte +42 -751
  252. package/package/components/S3FilePicker.svelte.d.ts +6 -25
  253. package/package/components/S3FilePickerInner.svelte +749 -0
  254. package/package/components/S3FilePickerInner.svelte.d.ts +74 -0
  255. package/package/components/S3ObjectPicker.svelte +3 -5
  256. package/package/components/SaveInputsButton.svelte +2 -3
  257. package/package/components/SaveToWorkspace.svelte +14 -0
  258. package/package/components/SaveToWorkspace.svelte.d.ts +6 -0
  259. package/package/components/SavedInputs.svelte +33 -46
  260. package/package/components/SavedInputs.svelte.d.ts +10 -9
  261. package/package/components/SavedInputsPicker.svelte +14 -18
  262. package/package/components/SavedInputsPickerViewer.svelte +7 -8
  263. package/package/components/SavedInputsV2.svelte +2 -3
  264. package/package/components/SchemaForm.svelte +6 -10
  265. package/package/components/SchemaForm.svelte.d.ts +1 -1
  266. package/package/components/SchemaFormWithArgPicker.svelte +1 -1
  267. package/package/components/SchemaViewer.svelte +2 -2
  268. package/package/components/ScriptBuilder.svelte +261 -206
  269. package/package/components/ScriptEditor.svelte +308 -198
  270. package/package/components/ScriptEditor.svelte.d.ts +10 -4
  271. package/package/components/ScriptEditorSkeleton.svelte +55 -0
  272. package/package/components/ScriptEditorSkeleton.svelte.d.ts +26 -0
  273. package/package/components/ScriptPicker.svelte +15 -20
  274. package/package/components/ScriptSchema.svelte +0 -3
  275. package/package/components/ScriptSchema.svelte.d.ts +1 -3
  276. package/package/components/ScriptVersionHistory.svelte +5 -5
  277. package/package/components/Section.svelte +22 -19
  278. package/package/components/Section.svelte.d.ts +3 -0
  279. package/package/components/ServiceLogsInner.svelte +7 -7
  280. package/package/components/ShareModal.svelte +66 -60
  281. package/package/components/SharedBadge.svelte +6 -8
  282. package/package/components/SimpleEditor.svelte +18 -32
  283. package/package/components/SimpleEditor.svelte.d.ts +1 -3
  284. package/package/components/SqlRepl.svelte +8 -6
  285. package/package/components/SqlRepl.svelte.d.ts +1 -1
  286. package/package/components/Star.svelte +3 -3
  287. package/package/components/StringTypeNarrowing.svelte +6 -2
  288. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
  289. package/package/components/Subsection.svelte +3 -5
  290. package/package/components/Summary.svelte +11 -60
  291. package/package/components/SupabaseConnect.svelte +4 -7
  292. package/package/components/SuperadminSettings.svelte +1 -1
  293. package/package/components/SuperadminSettingsInner.svelte +28 -24
  294. package/package/components/TableCustom.svelte +1 -1
  295. package/package/components/TagList.svelte +46 -0
  296. package/package/components/TagList.svelte.d.ts +8 -0
  297. package/package/components/TagsToListenTo.svelte +46 -13
  298. package/package/components/TagsToListenTo.svelte.d.ts +3 -19
  299. package/package/components/TeamSelector.svelte +217 -72
  300. package/package/components/TeamSelector.svelte.d.ts +1 -0
  301. package/package/components/TemplateEditor.svelte +23 -24
  302. package/package/components/TestConnection.svelte +2 -9
  303. package/package/components/TimeAgo.svelte +6 -7
  304. package/package/components/TimeAgo.svelte.d.ts +4 -18
  305. package/package/components/Toast.svelte +72 -16
  306. package/package/components/Toast.svelte.d.ts +1 -1
  307. package/package/components/Toggle.svelte +22 -40
  308. package/package/components/Toggle.svelte.d.ts +26 -28
  309. package/package/components/ToggleHubWorkspaceQuick.svelte +3 -3
  310. package/package/components/Tooltip.svelte +11 -14
  311. package/package/components/TooltipInner.svelte +2 -2
  312. package/package/components/Uptodate.svelte +1 -1
  313. package/package/components/UserSettings.svelte +23 -17
  314. package/package/components/VariableEditor.svelte +52 -42
  315. package/package/components/WhitelistIp.svelte +1 -1
  316. package/package/components/WorkerGroup.svelte +690 -552
  317. package/package/components/WorkerGroup.svelte.d.ts +7 -1
  318. package/package/components/WorkerRepl.svelte +10 -18
  319. package/package/components/WorkerTagPicker.svelte +2 -3
  320. package/package/components/WorkerTagSelect.svelte +17 -16
  321. package/package/components/WorkspaceDependenciesEditor.svelte +444 -0
  322. package/package/components/WorkspaceDependenciesEditor.svelte.d.ts +28 -0
  323. package/package/components/WorkspaceDependenciesViewer.svelte +90 -0
  324. package/package/components/WorkspaceDependenciesViewer.svelte.d.ts +7 -0
  325. package/package/components/WorkspaceTutorials.svelte +17 -0
  326. package/package/components/WorkspaceTutorials.svelte.d.ts +5 -0
  327. package/package/components/ZitadelSetting.svelte +25 -16
  328. package/package/components/apps/components/buttons/AppButton.svelte +3 -2
  329. package/package/components/apps/components/buttons/AppForm.svelte +6 -1
  330. package/package/components/apps/components/buttons/AppFormButton.svelte +8 -3
  331. package/package/components/apps/components/componentManagedFields.d.ts +33 -0
  332. package/package/components/apps/components/componentManagedFields.js +80 -0
  333. package/package/components/apps/components/display/AppAccordionList.svelte +1 -1
  334. package/package/components/apps/components/display/AppCarouselList.svelte +1 -1
  335. package/package/components/apps/components/display/AppChat.svelte +282 -0
  336. package/package/components/apps/components/display/AppChat.svelte.d.ts +14 -0
  337. package/package/components/apps/components/display/AppDownload.svelte +46 -4
  338. package/package/components/apps/components/display/AppImage.svelte +22 -26
  339. package/package/components/apps/components/display/AppJobProgressBar.svelte +102 -0
  340. package/package/components/apps/components/display/AppJobProgressBar.svelte.d.ts +11 -0
  341. package/package/components/apps/components/display/AppMap.svelte +8 -7
  342. package/package/components/apps/components/display/AppMenu.svelte +3 -1
  343. package/package/components/apps/components/display/AppNavbarItem.svelte +1 -0
  344. package/package/components/apps/components/display/AppPdf.svelte +41 -2
  345. package/package/components/apps/components/display/AppText.svelte +4 -5
  346. package/package/components/apps/components/display/InsertRowDrawerButton.svelte +3 -3
  347. package/package/components/apps/components/display/InsertRowDrawerButton.svelte.d.ts +2 -1
  348. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +5 -3
  349. package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +1 -1
  350. package/package/components/apps/components/display/dbtable/DeleteRow.svelte.d.ts +1 -1
  351. package/package/components/apps/components/display/dbtable/InsertRow.svelte +1 -2
  352. package/package/components/apps/components/display/dbtable/InsertRow.svelte.d.ts +2 -1
  353. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte.d.ts +1 -1
  354. package/package/components/apps/components/display/dbtable/UpdateCell.svelte.d.ts +1 -1
  355. package/package/components/apps/components/display/dbtable/metadata.d.ts +10 -0
  356. package/package/components/apps/components/display/dbtable/metadata.js +433 -0
  357. package/package/components/apps/components/display/dbtable/queries/count.d.ts +1 -2
  358. package/package/components/apps/components/display/dbtable/queries/count.js +2 -2
  359. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
  360. package/package/components/apps/components/display/dbtable/queries/delete.d.ts +2 -2
  361. package/package/components/apps/components/display/dbtable/queries/delete.js +2 -2
  362. package/package/components/apps/components/display/dbtable/queries/deleteTable.d.ts +2 -2
  363. package/package/components/apps/components/display/dbtable/queries/deleteTable.js +3 -1
  364. package/package/components/apps/components/display/dbtable/queries/insert.d.ts +1 -2
  365. package/package/components/apps/components/display/dbtable/queries/insert.js +6 -3
  366. package/package/components/apps/components/display/dbtable/queries/select.d.ts +1 -2
  367. package/package/components/apps/components/display/dbtable/queries/select.js +2 -2
  368. package/package/components/apps/components/display/dbtable/queries/update.d.ts +2 -2
  369. package/package/components/apps/components/display/dbtable/queries/update.js +2 -2
  370. package/package/components/apps/components/display/dbtable/utils.d.ts +15 -20
  371. package/package/components/apps/components/display/dbtable/utils.js +50 -438
  372. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +38 -1
  373. package/package/components/apps/components/display/table/AppTable.svelte.d.ts +2 -2
  374. package/package/components/apps/components/display/table/AppTableFooter.svelte +2 -4
  375. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +10 -22
  376. package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
  377. package/package/components/apps/components/helpers/InputValue.svelte +10 -10
  378. package/package/components/apps/components/helpers/Loader.svelte +1 -1
  379. package/package/components/apps/components/helpers/MissingConnectionWarning.svelte +1 -1
  380. package/package/components/apps/components/helpers/RunnableComponent.svelte +28 -25
  381. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +6 -2
  382. package/package/components/apps/components/helpers/RunnableWrapper.svelte +27 -2
  383. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +6 -1
  384. package/package/components/apps/components/helpers/eval.d.ts +1 -0
  385. package/package/components/apps/components/helpers/eval.js +3 -1
  386. package/package/components/apps/components/helpers/executeRunnable.d.ts +3 -3
  387. package/package/components/apps/components/helpers/executeRunnable.js +7 -3
  388. package/package/components/apps/components/inputs/AppDateTimeInput.svelte +10 -7
  389. package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +5 -1
  390. package/package/components/apps/components/inputs/AppQuillEditor.svelte +1 -1
  391. package/package/components/apps/components/inputs/AppSelectTab.svelte +2 -4
  392. package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -2
  393. package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
  394. package/package/components/apps/components/layout/AppDrawer.svelte +2 -1
  395. package/package/components/apps/components/layout/AppList.svelte +3 -5
  396. package/package/components/apps/components/layout/AppModal.svelte +5 -3
  397. package/package/components/apps/components/layout/AppModal.svelte.d.ts +1 -0
  398. package/package/components/apps/components/layout/AppStepper.svelte +3 -5
  399. package/package/components/apps/components/layout/AppTabs.svelte +3 -9
  400. package/package/components/apps/editor/AppEditor.svelte +21 -30
  401. package/package/components/apps/editor/AppEditorHeader.svelte +39 -212
  402. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +3 -1
  403. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +4 -5
  404. package/package/components/apps/editor/AppEditorTutorial.svelte +16 -43
  405. package/package/components/apps/editor/AppEditorTutorial.svelte.d.ts +4 -2
  406. package/package/components/apps/editor/AppExportButton.svelte +5 -6
  407. package/package/components/apps/editor/AppInputs.svelte +1 -1
  408. package/package/components/apps/editor/AppJobsDrawer.svelte +15 -17
  409. package/package/components/apps/editor/AppJsonEditor.svelte +2 -2
  410. package/package/components/apps/editor/AppPreview.svelte +2 -1
  411. package/package/components/apps/editor/AppReportsDrawerInner.svelte +30 -89
  412. package/package/components/apps/editor/ComponentHeader.svelte +1 -2
  413. package/package/components/apps/editor/DeploymentHistory.svelte +3 -3
  414. package/package/components/apps/editor/GridEditor.svelte +4 -4
  415. package/package/components/apps/editor/PreviewToggle.svelte +0 -1
  416. package/package/components/apps/editor/PublicApp.svelte +125 -0
  417. package/package/components/apps/editor/PublicApp.svelte.d.ts +14 -0
  418. package/package/components/apps/editor/RecomputeAllButton.svelte +2 -3
  419. package/package/components/apps/editor/RecomputeAllComponents.svelte +1 -1
  420. package/package/components/apps/editor/RecomputeAllWrapper.svelte +1 -1
  421. package/package/components/apps/editor/RunnableJobPanelInner.svelte +3 -3
  422. package/package/components/apps/editor/SettingsPanel.svelte +1 -1
  423. package/package/components/apps/editor/SubGridEditor.svelte +2 -1
  424. package/package/components/apps/editor/appPolicy.d.ts +6 -0
  425. package/package/components/apps/editor/appPolicy.js +186 -0
  426. package/package/components/apps/editor/appUtils.d.ts +1 -3
  427. package/package/components/apps/editor/appUtils.js +2 -60
  428. package/package/components/apps/editor/appUtilsCore.d.ts +7 -0
  429. package/package/components/apps/editor/appUtilsCore.js +66 -0
  430. package/package/components/apps/editor/appUtilsS3.d.ts +16 -16
  431. package/package/components/apps/editor/appUtilsS3.js +31 -9
  432. package/package/components/apps/editor/component/ComponentInner.svelte +23 -1
  433. package/package/components/apps/editor/component/componentCallbacks.svelte.js +2 -1
  434. package/package/components/apps/editor/component/components.d.ts +649 -17
  435. package/package/components/apps/editor/component/components.js +186 -9
  436. package/package/components/apps/editor/component/default-codes.js +13 -0
  437. package/package/components/apps/editor/component/sets.js +2 -0
  438. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +3 -3
  439. package/package/components/apps/editor/componentsPanel/CssHelperPanel.svelte +5 -8
  440. package/package/components/apps/editor/componentsPanel/CssProperty.svelte +37 -39
  441. package/package/components/apps/editor/componentsPanel/CssSettings.svelte +6 -8
  442. package/package/components/apps/editor/componentsPanel/CustomComponentsList.svelte +1 -1
  443. package/package/components/apps/editor/componentsPanel/GroupList.svelte +1 -1
  444. package/package/components/apps/editor/componentsPanel/ListItem.svelte +9 -7
  445. package/package/components/apps/editor/componentsPanel/NameEditor.svelte +1 -1
  446. package/package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +1 -1
  447. package/package/components/apps/editor/componentsPanel/QuickStyleProperty.svelte +2 -3
  448. package/package/components/apps/editor/componentsPanel/ThemeList.svelte +2 -3
  449. package/package/components/apps/editor/componentsPanel/ThemeNameEditor.svelte +1 -1
  450. package/package/components/apps/editor/componentsPanel/ThemeRow.svelte +1 -1
  451. package/package/components/apps/editor/componentsPanel/componentControlUtils.js +7 -0
  452. package/package/components/apps/editor/componentsPanel/cssUtils.js +25 -1
  453. package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +12 -0
  454. package/package/components/apps/editor/contextPanel/ComponentOutput.svelte +1 -1
  455. package/package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +2 -2
  456. package/package/components/apps/editor/contextPanel/DebugPanel.svelte +2 -2
  457. package/package/components/apps/editor/contextPanel/LazyModePanel.svelte +3 -3
  458. package/package/components/apps/editor/contextPanel/SubGridOutput.svelte +1 -1
  459. package/package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte +1 -1
  460. package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +2 -2
  461. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +6 -4
  462. package/package/components/apps/editor/inlineScriptsPanel/AppRunButton.svelte.d.ts +1 -1
  463. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +2 -1
  464. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte.d.ts +3 -0
  465. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +2 -12
  466. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -1
  467. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +34 -60
  468. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -2
  469. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +2 -2
  470. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +7 -9
  471. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -1
  472. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptHiddenRunnable.svelte +5 -4
  473. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +8 -14
  474. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +3 -3
  475. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +6 -6
  476. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +1 -1
  477. package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte +3 -3
  478. package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte.d.ts +1 -1
  479. package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +1 -1
  480. package/package/components/apps/editor/inlineScriptsPanel/utils.js +5 -4
  481. package/package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
  482. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +8 -6
  483. package/package/components/apps/editor/settingsPanel/CSSMigrationModal.svelte +3 -3
  484. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +33 -24
  485. package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +2 -1
  486. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +2 -3
  487. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +3 -8
  488. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +2 -3
  489. package/package/components/apps/editor/settingsPanel/GridGroup.svelte +2 -3
  490. package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +3 -10
  491. package/package/components/apps/editor/settingsPanel/GridPane.svelte +2 -9
  492. package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -9
  493. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +11 -38
  494. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +4 -3
  495. package/package/components/apps/editor/settingsPanel/MenuItems.svelte +5 -6
  496. package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +36 -17
  497. package/package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +5 -5
  498. package/package/components/apps/editor/settingsPanel/SelectedRunnable.svelte.d.ts +1 -1
  499. package/package/components/apps/editor/settingsPanel/StylePanel.svelte +26 -24
  500. package/package/components/apps/editor/settingsPanel/TableActions.svelte +44 -25
  501. package/package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -2
  502. package/package/components/apps/editor/settingsPanel/common/PanelSection.svelte +31 -3
  503. package/package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +3 -0
  504. package/package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +2 -2
  505. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +5 -5
  506. package/package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte +5 -1
  507. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +9 -9
  508. package/package/components/apps/editor/settingsPanel/inputEditor/TabSelectInput.svelte +3 -3
  509. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -34
  510. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +1 -2
  511. package/package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte +3 -2
  512. package/package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte +3 -2
  513. package/package/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte +3 -2
  514. package/package/components/apps/editor/settingsPanel/script/ComponentScriptSettings.svelte +4 -3
  515. package/package/components/apps/editor/settingsPanel/script/ComponentScriptSettings.svelte.d.ts +1 -1
  516. package/package/components/apps/editor/settingsPanel/script/shared/BackgroundScriptTriggerBy.svelte +5 -4
  517. package/package/components/apps/editor/settingsPanel/script/shared/ComponentScriptTriggerBy.svelte +4 -4
  518. package/package/components/apps/editor/settingsPanel/script/shared/ComponentScriptTriggerBy.svelte.d.ts +1 -1
  519. package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingsActions.svelte +1 -1
  520. package/package/components/apps/editor/settingsPanel/script/shared/ScriptTransformer.svelte +1 -1
  521. package/package/components/apps/editor/settingsPanel/script/shared/ScriptTransformer.svelte.d.ts +1 -1
  522. package/package/components/apps/editor/settingsPanel/script/shared/ScriptTriggers.svelte +1 -1
  523. package/package/components/apps/editor/settingsPanel/script/shared/ScriptTriggers.svelte.d.ts +1 -1
  524. package/package/components/apps/editor/settingsPanel/script/utils.d.ts +1 -1
  525. package/package/components/apps/editor/settingsPanel/script/utils.js +10 -3
  526. package/package/components/apps/inputType.d.ts +7 -5
  527. package/package/components/apps/inputType.js +6 -1
  528. package/package/components/apps/sharedTypes.d.ts +21 -0
  529. package/package/components/apps/sharedTypes.js +1 -0
  530. package/package/components/apps/types.d.ts +3 -20
  531. package/package/components/apps/utils.d.ts +2 -4
  532. package/package/components/apps/utils.js +15 -14
  533. package/package/components/assets/AssetButtons.svelte +37 -14
  534. package/package/components/assets/AssetButtons.svelte.d.ts +2 -0
  535. package/package/components/assets/AssetsDropdownButton.svelte +35 -16
  536. package/package/components/assets/AssetsUsageDrawer.svelte +4 -4
  537. package/package/components/assets/JobAssetsViewer.svelte +14 -11
  538. package/package/components/assets/lib.d.ts +2 -1
  539. package/package/components/assets/lib.js +10 -2
  540. package/package/components/auditLogs/AuditLogDetails.svelte +59 -53
  541. package/package/components/auditLogs/AuditLogMobileFilters.svelte +2 -2
  542. package/package/components/auditLogs/AuditLogsFilters.svelte +94 -98
  543. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +2 -1
  544. package/package/components/auditLogs/AuditLogsTable.svelte +52 -31
  545. package/package/components/auditLogs/AuditLogsTable.svelte.d.ts +1 -0
  546. package/package/components/auditLogs/AuditLogsTimeline.svelte +1 -1
  547. package/package/components/chat/ChatInput.svelte +53 -0
  548. package/package/components/chat/ChatInput.svelte.d.ts +29 -0
  549. package/package/components/chat/ChatMessage.svelte +101 -0
  550. package/package/components/chat/ChatMessage.svelte.d.ts +22 -0
  551. package/package/components/chat/utils.d.ts +5 -0
  552. package/package/components/chat/utils.js +26 -0
  553. package/package/components/common/CloseButton.svelte +3 -2
  554. package/package/components/common/OnChange.svelte +1 -2
  555. package/package/components/common/ResizeTransitionWrapper.svelte +17 -5
  556. package/package/components/common/Url.svelte +1 -1
  557. package/package/components/common/alert/Alert.svelte +6 -19
  558. package/package/components/common/alert/model.js +4 -4
  559. package/package/components/common/badge/Badge.svelte +71 -54
  560. package/package/components/common/badge/Badge.svelte.d.ts +21 -41
  561. package/package/components/common/badge/model.d.ts +1 -1
  562. package/package/components/common/breadcrumb/Breadcrumb.svelte +1 -1
  563. package/package/components/common/button/Button.svelte +110 -36
  564. package/package/components/common/button/Button.svelte.d.ts +33 -0
  565. package/package/components/common/button/ConnectionButton.svelte +5 -3
  566. package/package/components/common/button/RefreshButton.svelte +6 -11
  567. package/package/components/common/button/RefreshButton.svelte.d.ts +4 -20
  568. package/package/components/common/button/RoundIconButton.svelte +2 -2
  569. package/package/components/common/button/UndoRedo.svelte +8 -12
  570. package/package/components/common/button/model.d.ts +29 -5
  571. package/package/components/common/button/model.js +126 -8
  572. package/package/components/common/confirmationModal/ConfirmationModal.svelte +5 -3
  573. package/package/components/common/confirmationModal/DeployOverrideConfirmationModal.svelte +2 -3
  574. package/package/components/common/confirmationModal/DraftTriggersConfirmationModal.svelte +7 -18
  575. package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +16 -14
  576. package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +7 -18
  577. package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.d.ts +5 -4
  578. package/package/components/common/contextmenu/ContextMenu.svelte +83 -0
  579. package/package/components/common/contextmenu/ContextMenu.svelte.d.ts +22 -0
  580. package/package/components/common/contextmenu/contextMenuStyles.d.ts +33 -0
  581. package/package/components/common/contextmenu/contextMenuStyles.js +35 -0
  582. package/package/components/common/drawer/Drawer.svelte +1 -1
  583. package/package/components/common/drawer/DrawerContent.svelte +10 -4
  584. package/package/components/common/drawer/DrawerContent.svelte.d.ts +1 -0
  585. package/package/components/common/fileDownload/FileDownload.svelte +16 -14
  586. package/package/components/common/fileInput/FileInput.svelte +3 -3
  587. package/package/components/common/fileUpload/FileUpload.svelte +7 -10
  588. package/package/components/common/fileUpload/FileUploadModal.svelte +2 -2
  589. package/package/components/common/fileUpload/S3ArgInput.svelte +7 -8
  590. package/package/components/common/languageIcons/LanguageIcon.svelte +4 -4
  591. package/package/components/common/languageIcons/LanguageIcon.svelte.d.ts +1 -0
  592. package/package/components/common/modal/AlwaysMountedModal.svelte +1 -1
  593. package/package/components/common/modal/Modal.svelte +2 -2
  594. package/package/components/common/modal/Modal2.svelte +27 -15
  595. package/package/components/common/modal/Modal2.svelte.d.ts +3 -1
  596. package/package/components/common/popup/PopupV2.svelte +2 -2
  597. package/package/components/common/popup/PopupV2.svelte.d.ts +1 -0
  598. package/package/components/common/seconds/SecondsInput.svelte +2 -2
  599. package/package/components/common/slack/SlackConnectionStatus.svelte +63 -0
  600. package/package/components/common/slack/SlackConnectionStatus.svelte.d.ts +10 -0
  601. package/package/components/common/smtp/SmtpConfigurationStatus.svelte +22 -0
  602. package/package/components/common/smtp/SmtpConfigurationStatus.svelte.d.ts +7 -0
  603. package/package/components/common/stepper/Stepper.svelte +3 -3
  604. package/package/components/common/table/AppRow.svelte +9 -20
  605. package/package/components/common/table/FlowRow.svelte +8 -8
  606. package/package/components/common/table/RawAppRow.svelte +2 -3
  607. package/package/components/common/table/Row.svelte +55 -32
  608. package/package/components/common/table/Row.svelte.d.ts +10 -2
  609. package/package/components/common/table/RowIcon.svelte +13 -21
  610. package/package/components/common/table/RowIcon.svelte.d.ts +1 -2
  611. package/package/components/common/table/ScriptRow.svelte +20 -16
  612. package/package/components/common/tabs/Tab.svelte +20 -15
  613. package/package/components/common/tabs/Tab.svelte.d.ts +7 -2
  614. package/package/components/common/tabs/Tabs.svelte +14 -20
  615. package/package/components/common/tabs/Tabs.svelte.d.ts +7 -0
  616. package/package/components/common/teams/TeamsConnectionStatus.svelte +62 -0
  617. package/package/components/common/teams/TeamsConnectionStatus.svelte.d.ts +10 -0
  618. package/package/components/common/toggleButton-v2/ToggleButton.svelte +19 -11
  619. package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +1 -1
  620. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
  621. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +2 -3
  622. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -1
  623. package/package/components/copilot/AIFormAssistant.svelte +1 -1
  624. package/package/components/copilot/AIFormSettings.svelte +21 -17
  625. package/package/components/copilot/AskAiButton.svelte +3 -2
  626. package/package/components/copilot/CronGen.svelte +22 -15
  627. package/package/components/copilot/CronGen.svelte.d.ts +4 -18
  628. package/package/components/copilot/CustomAIPrompts.svelte +57 -0
  629. package/package/components/copilot/CustomAIPrompts.svelte.d.ts +8 -0
  630. package/package/components/copilot/FlowInlineScriptAIButton.svelte +3 -2
  631. package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +3 -0
  632. package/package/components/copilot/IteratorGen.svelte +5 -5
  633. package/package/components/copilot/MetadataGen.svelte +66 -65
  634. package/package/components/copilot/MetadataGen.svelte.d.ts +11 -25
  635. package/package/components/copilot/PredicateGen.svelte +5 -5
  636. package/package/components/copilot/RegexGen.svelte +2 -2
  637. package/package/components/copilot/ScriptFix.svelte +1 -1
  638. package/package/components/copilot/ScriptGen.svelte +23 -38
  639. package/package/components/copilot/ScriptGen.svelte.d.ts +3 -1
  640. package/package/components/copilot/StepGenQuick.svelte +13 -10
  641. package/package/components/copilot/StepInputGen.svelte +53 -71
  642. package/package/components/copilot/StepInputGen.svelte.d.ts +0 -2
  643. package/package/components/copilot/StepInputsGen.svelte +13 -9
  644. package/package/components/copilot/TestAIKey.svelte +4 -14
  645. package/package/components/copilot/TestAIKey.svelte.d.ts +4 -18
  646. package/package/components/copilot/chat/AIButton.svelte +56 -0
  647. package/package/components/copilot/chat/AIButton.svelte.d.ts +7 -0
  648. package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -0
  649. package/package/components/copilot/chat/AIButtonStyle.js +8 -0
  650. package/package/components/copilot/chat/AIChat.svelte +2 -10
  651. package/package/components/copilot/chat/AIChatDisplay.svelte +9 -13
  652. package/package/components/copilot/chat/AIChatInlineWidget.svelte +6 -6
  653. package/package/components/copilot/chat/AIChatInput.svelte +4 -2
  654. package/package/components/copilot/chat/AIChatManager.svelte.js +149 -45
  655. package/package/components/copilot/chat/AIChatMessage.svelte +11 -9
  656. package/package/components/copilot/chat/AiChatLayout.svelte +20 -10
  657. package/package/components/copilot/chat/AvailableContextList.svelte +4 -4
  658. package/package/components/copilot/chat/ChatMode.svelte +1 -1
  659. package/package/components/copilot/chat/ContextElementBadge.svelte +3 -3
  660. package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
  661. package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
  662. package/package/components/copilot/chat/ToolContentDisplay.svelte +33 -13
  663. package/package/components/copilot/chat/ToolContentDisplay.svelte.d.ts +3 -0
  664. package/package/components/copilot/chat/ToolExecutionDisplay.svelte +24 -15
  665. package/package/components/copilot/chat/__tests__/app/appChat.eval.test.d.ts +1 -0
  666. package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +137 -0
  667. package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +26 -0
  668. package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +131 -0
  669. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.d.ts +15 -0
  670. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +91 -0
  671. package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +41 -0
  672. package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +92 -0
  673. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.d.ts +29 -0
  674. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.js +134 -0
  675. package/package/components/copilot/chat/__tests__/app/appResultsWriter.d.ts +30 -0
  676. package/package/components/copilot/chat/__tests__/app/appResultsWriter.js +197 -0
  677. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.d.ts +10 -0
  678. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.js +9 -0
  679. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/meta.json +4 -0
  680. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.d.ts +6 -0
  681. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.js +5 -0
  682. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/meta.json +4 -0
  683. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.d.ts +12 -0
  684. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js +14 -0
  685. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/meta.json +4 -0
  686. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.d.ts +8 -0
  687. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.js +25 -0
  688. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/meta.json +4 -0
  689. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.d.ts +7 -0
  690. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.js +5 -0
  691. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/meta.json +4 -0
  692. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.d.ts +8 -0
  693. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.js +5 -0
  694. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/meta.json +4 -0
  695. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.d.ts +10 -0
  696. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.tsx +26 -0
  697. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.d.ts +10 -0
  698. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.tsx +79 -0
  699. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.d.ts +10 -0
  700. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.tsx +46 -0
  701. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.d.ts +10 -0
  702. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.tsx +56 -0
  703. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.d.ts +6 -0
  704. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.tsx +59 -0
  705. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.d.ts +16 -0
  706. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.tsx +119 -0
  707. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.d.ts +15 -0
  708. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.js +14 -0
  709. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/meta.json +4 -0
  710. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.d.ts +14 -0
  711. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.js +5 -0
  712. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/meta.json +4 -0
  713. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.d.ts +6 -0
  714. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.js +41 -0
  715. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/meta.json +4 -0
  716. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.d.ts +15 -0
  717. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.js +3 -0
  718. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/meta.json +4 -0
  719. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.d.ts +9 -0
  720. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.tsx +51 -0
  721. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.d.ts +8 -0
  722. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.tsx +27 -0
  723. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.d.ts +8 -0
  724. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.tsx +18 -0
  725. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.d.ts +12 -0
  726. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.tsx +81 -0
  727. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.d.ts +3 -0
  728. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.js +3 -0
  729. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/meta.json +4 -0
  730. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.d.ts +3 -0
  731. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.js +3 -0
  732. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/meta.json +4 -0
  733. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.d.ts +2 -0
  734. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.tsx +38 -0
  735. package/package/components/copilot/chat/__tests__/app/variants/baseline.d.ts +6 -0
  736. package/package/components/copilot/chat/__tests__/app/variants/baseline.js +10 -0
  737. package/package/components/copilot/chat/__tests__/app/variants/index.d.ts +3 -0
  738. package/package/components/copilot/chat/__tests__/app/variants/index.js +3 -0
  739. package/package/components/copilot/chat/__tests__/app/variants/streamlined.d.ts +6 -0
  740. package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +137 -0
  741. package/package/components/copilot/chat/__tests__/flow/expected/test1.json +134 -0
  742. package/package/components/copilot/chat/__tests__/flow/expected/test2.json +183 -0
  743. package/package/components/copilot/chat/__tests__/flow/expected/test3.json +204 -0
  744. package/package/components/copilot/chat/__tests__/flow/expected/test4.json +175 -0
  745. package/package/components/copilot/chat/__tests__/flow/expected/test5_modify_simple.json +68 -0
  746. package/package/components/copilot/chat/__tests__/flow/expected/test6_modify_medium.json +142 -0
  747. package/package/components/copilot/chat/__tests__/flow/expected/test7_modify_complex.json +136 -0
  748. package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.d.ts +1 -0
  749. package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +277 -0
  750. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.d.ts +17 -0
  751. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +52 -0
  752. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.d.ts +12 -0
  753. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +75 -0
  754. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +41 -0
  755. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +101 -0
  756. package/package/components/copilot/chat/__tests__/flow/initial/test5_initial.json +53 -0
  757. package/package/components/copilot/chat/__tests__/flow/initial/test6_initial.json +68 -0
  758. package/package/components/copilot/chat/__tests__/flow/initial/test7_initial.json +120 -0
  759. package/package/components/copilot/chat/__tests__/flow/variants/baseline.d.ts +6 -0
  760. package/package/components/copilot/chat/__tests__/flow/variants/baseline.js +10 -0
  761. package/package/components/copilot/chat/__tests__/flow/variants/index.d.ts +3 -0
  762. package/package/components/copilot/chat/__tests__/flow/variants/index.js +3 -0
  763. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.d.ts +15 -0
  764. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +386 -0
  765. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +48 -0
  766. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +147 -0
  767. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +31 -0
  768. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +88 -0
  769. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.d.ts +32 -0
  770. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.js +130 -0
  771. package/package/components/copilot/chat/__tests__/shared/baseVariants.d.ts +45 -0
  772. package/package/components/copilot/chat/__tests__/shared/baseVariants.js +57 -0
  773. package/package/components/copilot/chat/__tests__/shared/index.d.ts +10 -0
  774. package/package/components/copilot/chat/__tests__/shared/index.js +5 -0
  775. package/package/components/copilot/chat/__tests__/shared/types.d.ts +102 -0
  776. package/package/components/copilot/chat/__tests__/shared/types.js +9 -0
  777. package/package/components/copilot/chat/anthropic.d.ts +1 -1
  778. package/package/components/copilot/chat/anthropic.js +75 -2
  779. package/package/components/copilot/chat/app/core.d.ts +69 -0
  780. package/package/components/copilot/chat/app/core.js +552 -0
  781. package/package/components/copilot/chat/flow/FlowAIChat.svelte +119 -477
  782. package/package/components/copilot/chat/flow/FlowAIChat.svelte.d.ts +1 -0
  783. package/package/components/copilot/chat/flow/core.d.ts +24 -127
  784. package/package/components/copilot/chat/flow/core.js +461 -535
  785. package/package/components/copilot/chat/flow/inlineScriptsUtils.d.ts +31 -0
  786. package/package/components/copilot/chat/flow/inlineScriptsUtils.js +271 -0
  787. package/package/components/copilot/chat/flow/openFlow.json +1 -0
  788. package/package/components/copilot/chat/flow/openFlowZod.d.ts +3 -0
  789. package/package/components/copilot/chat/flow/openFlowZod.js +14 -0
  790. package/package/components/copilot/chat/flow/utils.d.ts +12 -6
  791. package/package/components/copilot/chat/flow/utils.js +66 -33
  792. package/package/components/copilot/chat/navigator/core.js +17 -10
  793. package/package/components/copilot/chat/openai-responses.d.ts +16 -0
  794. package/package/components/copilot/chat/openai-responses.js +318 -0
  795. package/package/components/copilot/chat/script/core.d.ts +7 -5
  796. package/package/components/copilot/chat/script/core.js +41 -208
  797. package/package/components/copilot/chat/shared.d.ts +28 -2
  798. package/package/components/copilot/chat/shared.js +174 -16
  799. package/package/components/copilot/lib.d.ts +4 -3
  800. package/package/components/copilot/lib.js +169 -52
  801. package/package/components/copilot/prompts/edit.yaml +38 -2
  802. package/package/components/copilot/prompts/editPrompt.d.ts +6 -3
  803. package/package/components/copilot/prompts/editPrompt.js +9 -6
  804. package/package/components/copilot/prompts/fix.yaml +40 -1
  805. package/package/components/copilot/prompts/fixPrompt.d.ts +3 -0
  806. package/package/components/copilot/prompts/fixPrompt.js +5 -2
  807. package/package/components/copilot/prompts/gen.yaml +25 -1
  808. package/package/components/copilot/prompts/genPrompt.d.ts +7 -4
  809. package/package/components/copilot/prompts/genPrompt.js +9 -6
  810. package/package/components/custom_ui.d.ts +2 -0
  811. package/package/components/dbOps.d.ts +26 -23
  812. package/package/components/dbOps.js +49 -27
  813. package/package/components/dbTypes.d.ts +14 -0
  814. package/package/components/dbTypes.js +9 -0
  815. package/package/components/details/ClipboardPanel.svelte +7 -7
  816. package/package/components/details/CopyableCodeBlock.svelte +13 -11
  817. package/package/components/details/CopyableCodeBlock.svelte.d.ts +5 -18
  818. package/package/components/details/DetailPageDetailPanel.svelte +5 -5
  819. package/package/components/details/DetailPageHeader.svelte +5 -4
  820. package/package/components/details/DetailPageLayout.svelte +5 -5
  821. package/package/components/details/ErrorHandlerToggleButton.svelte +2 -2
  822. package/package/components/details/ErrorHandlerToggleButtonV2.svelte +4 -4
  823. package/package/components/details/ErrorHandlerToggleButtonV2.svelte.d.ts +1 -1
  824. package/package/components/details/createAppFromScript.js +2 -2
  825. package/package/components/ducklake.d.ts +1 -0
  826. package/package/components/ducklake.js +4 -0
  827. package/package/components/flows/CreateActionsApp.svelte +5 -6
  828. package/package/components/flows/CreateActionsFlow.svelte +3 -3
  829. package/package/components/flows/DebounceLimit.svelte +58 -0
  830. package/package/components/flows/DebounceLimit.svelte.d.ts +11 -0
  831. package/package/components/flows/FlowAssetsHandler.svelte +47 -31
  832. package/package/components/flows/FlowEditor.svelte +6 -1
  833. package/package/components/flows/FlowEditor.svelte.d.ts +2 -1
  834. package/package/components/flows/FlowEditorTutorial.svelte +59 -0
  835. package/package/components/flows/{content/FlowInputsFlowQuick.svelte.d.ts → FlowEditorTutorial.svelte.d.ts} +8 -9
  836. package/package/components/flows/FlowHistoryInner.svelte +6 -8
  837. package/package/components/flows/FlowModuleIcon.svelte +1 -1
  838. package/package/components/flows/FlowProgressBar.svelte +1 -1
  839. package/package/components/flows/agentToolUtils.d.ts +45 -0
  840. package/package/components/flows/agentToolUtils.js +59 -0
  841. package/package/components/flows/common/FlowCardHeader.svelte +31 -7
  842. package/package/components/flows/content/AgentToolWrapper.svelte +30 -0
  843. package/package/components/flows/content/AgentToolWrapper.svelte.d.ts +14 -0
  844. package/package/components/flows/content/BranchPredicateEditor.svelte +1 -2
  845. package/package/components/flows/content/DynamicInputHelpBox.svelte +6 -9
  846. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +6 -6
  847. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +7 -7
  848. package/package/components/flows/content/FlowEditorPanel.svelte +23 -17
  849. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -1
  850. package/package/components/flows/content/FlowEnvironmentVariables.svelte +251 -0
  851. package/package/components/flows/content/FlowEnvironmentVariables.svelte.d.ts +6 -0
  852. package/package/components/flows/content/FlowInput.svelte +78 -45
  853. package/package/components/flows/content/FlowInput.svelte.d.ts +2 -1
  854. package/package/components/flows/content/FlowInputEditor.svelte +2 -2
  855. package/package/components/flows/content/FlowInputs.svelte +34 -6
  856. package/package/components/flows/content/FlowInputsFlow.svelte +16 -12
  857. package/package/components/flows/content/FlowInputsFlow.svelte.d.ts +6 -5
  858. package/package/components/flows/content/FlowInputsQuick.svelte +68 -70
  859. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +0 -1
  860. package/package/components/flows/content/FlowLoop.svelte +67 -31
  861. package/package/components/flows/content/FlowModuleCache.svelte +23 -11
  862. package/package/components/flows/content/FlowModuleComponent.svelte +123 -107
  863. package/package/components/flows/content/FlowModuleEarlyStop.svelte +8 -6
  864. package/package/components/flows/content/FlowModuleHeader.svelte +23 -42
  865. package/package/components/flows/content/FlowModuleMock.svelte +2 -1
  866. package/package/components/flows/content/FlowModuleScript.svelte +2 -2
  867. package/package/components/flows/content/FlowModuleSkip.svelte +4 -3
  868. package/package/components/flows/content/FlowModuleSleep.svelte +5 -4
  869. package/package/components/flows/content/FlowModuleSuspend.svelte +5 -12
  870. package/package/components/flows/content/FlowModuleTimeout.svelte +3 -3
  871. package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +5 -5
  872. package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte.d.ts +1 -0
  873. package/package/components/flows/content/FlowModuleWrapper.svelte +27 -20
  874. package/package/components/flows/content/FlowResult.svelte +4 -4
  875. package/package/components/flows/content/FlowRetries.svelte +32 -16
  876. package/package/components/flows/content/FlowSelectionPanel.svelte +35 -0
  877. package/package/components/flows/content/FlowSelectionPanel.svelte.d.ts +8 -0
  878. package/package/components/flows/content/FlowSettings.svelte +121 -122
  879. package/package/components/flows/content/FlowWhileLoop.svelte +35 -8
  880. package/package/components/flows/content/GenAiQuick.svelte +1 -1
  881. package/package/components/flows/content/McpToolEditor.svelte +169 -0
  882. package/package/components/flows/content/McpToolEditor.svelte.d.ts +8 -0
  883. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -5
  884. package/package/components/flows/content/SuspendDrawer.svelte +4 -5
  885. package/package/components/flows/content/WebsearchToolDisplay.svelte +9 -0
  886. package/package/components/{FlowBuilderTutorials.svelte.d.ts → flows/content/WebsearchToolDisplay.svelte.d.ts} +4 -6
  887. package/package/components/flows/conversations/FlowChat.svelte +32 -0
  888. package/package/components/flows/conversations/FlowChat.svelte.d.ts +10 -0
  889. package/package/components/flows/conversations/FlowChatInterface.svelte +58 -103
  890. package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +3 -14
  891. package/package/components/flows/conversations/FlowChatManager.svelte.js +172 -69
  892. package/package/components/flows/conversations/FlowConversationsSidebar.svelte +31 -110
  893. package/package/components/flows/conversations/FlowConversationsSidebar.svelte.d.ts +3 -11
  894. package/package/components/flows/flowDiff.d.ts +142 -0
  895. package/package/components/flows/flowDiff.js +769 -0
  896. package/package/components/flows/flowDiff.test.d.ts +1 -0
  897. package/package/components/flows/flowDiff.test.js +1173 -0
  898. package/package/components/flows/flowDiff.testUtils.d.ts +61 -0
  899. package/package/components/flows/flowDiff.testUtils.js +128 -0
  900. package/package/components/flows/flowDiffManager.svelte.d.ts +47 -0
  901. package/package/components/flows/flowDiffManager.svelte.js +461 -0
  902. package/package/components/flows/flowDiffManager.svelte.test.d.ts +1 -0
  903. package/package/components/flows/flowDiffManager.svelte.test.js +1255 -0
  904. package/package/components/flows/flowExplorer.js +15 -0
  905. package/package/components/flows/flowInfers.d.ts +1 -60
  906. package/package/components/flows/flowInfers.js +115 -8
  907. package/package/components/flows/flowState.js +1 -1
  908. package/package/components/flows/flowStateUtils.svelte.js +10 -2
  909. package/package/components/flows/flowStore.svelte.d.ts +4 -0
  910. package/package/components/flows/header/FlowImportExportMenu.svelte +3 -4
  911. package/package/components/flows/header/FlowPreviewButtons.svelte +11 -12
  912. package/package/components/flows/header/FlowYamlEditor.svelte +5 -4
  913. package/package/components/flows/map/DiffActionBar.svelte +50 -0
  914. package/package/components/flows/map/DiffActionBar.svelte.d.ts +14 -0
  915. package/package/components/flows/map/FlowErrorHandlerItem.svelte +60 -54
  916. package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +2 -1
  917. package/package/components/flows/map/FlowGraphPreviewButton.svelte +6 -3
  918. package/package/components/flows/map/FlowModuleSchemaItem.svelte +91 -42
  919. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +7 -6
  920. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +32 -25
  921. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +2 -0
  922. package/package/components/flows/map/FlowModuleSchemaMap.svelte +91 -35
  923. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +27 -2
  924. package/package/components/flows/map/FlowStickyNode.svelte +51 -38
  925. package/package/components/flows/map/FlowStickyNode.svelte.d.ts +4 -0
  926. package/package/components/flows/map/InsertModuleButton.svelte +11 -73
  927. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +8 -34
  928. package/package/components/flows/map/InsertModuleInner.svelte +89 -68
  929. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +3 -1
  930. package/package/components/flows/map/InsertModulePopover.svelte +41 -0
  931. package/package/components/{ConfirmButton.svelte.d.ts → flows/map/InsertModulePopover.svelte.d.ts} +18 -16
  932. package/package/components/flows/map/MapItem.svelte +33 -33
  933. package/package/components/flows/map/MapItem.svelte.d.ts +6 -6
  934. package/package/components/flows/map/VirtualItem.svelte +9 -17
  935. package/package/components/flows/map/VirtualItem.svelte.d.ts +1 -5
  936. package/package/components/flows/map/VirtualItemWrapper.svelte +11 -15
  937. package/package/components/flows/map/VirtualItemWrapper.svelte.d.ts +2 -3
  938. package/package/components/flows/pickers/FlowScriptPicker.svelte +1 -2
  939. package/package/components/flows/pickers/FlowScriptPickerQuick.svelte +11 -15
  940. package/package/components/flows/pickers/FlowToplevelNode.svelte +1 -1
  941. package/package/components/flows/pickers/PickHubApp.svelte +23 -19
  942. package/package/components/flows/pickers/PickHubApp.svelte.d.ts +9 -14
  943. package/package/components/flows/pickers/PickHubFlow.svelte +23 -18
  944. package/package/components/flows/pickers/PickHubFlow.svelte.d.ts +9 -14
  945. package/package/components/flows/pickers/PickHubScript.svelte +37 -28
  946. package/package/components/flows/pickers/PickHubScript.svelte.d.ts +2 -0
  947. package/package/components/flows/pickers/PickHubScriptQuick.svelte +59 -27
  948. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
  949. package/package/components/flows/pickers/TopLevelNode.svelte +34 -51
  950. package/package/components/flows/pickers/TopLevelNode.svelte.d.ts +7 -23
  951. package/package/components/flows/pickers/WorkspaceScriptPicker.svelte +31 -25
  952. package/package/components/flows/pickers/WorkspaceScriptPicker.svelte.d.ts +9 -17
  953. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +22 -18
  954. package/package/components/flows/previousResults.d.ts +5 -1
  955. package/package/components/flows/previousResults.js +24 -4
  956. package/package/components/flows/propPicker/InputPickerInner.svelte +1 -1
  957. package/package/components/flows/propPicker/OutputPicker.svelte +30 -32
  958. package/package/components/flows/propPicker/OutputPicker.svelte.d.ts +0 -4
  959. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +2 -2
  960. package/package/components/flows/propPicker/PropPickerWrapper.svelte +61 -66
  961. package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +15 -23
  962. package/package/components/flows/propPicker/StepHistory.svelte +1 -1
  963. package/package/components/flows/stepsInputArgs.svelte.js +1 -1
  964. package/package/components/flows/types.d.ts +4 -1
  965. package/package/components/flows/{utils.d.ts → utils.svelte.d.ts} +2 -2
  966. package/package/components/flows/{utils.js → utils.svelte.js} +10 -5
  967. package/package/components/git_sync/DetectionFlow.svelte +7 -5
  968. package/package/components/git_sync/GitSyncContext.svelte.d.ts +3 -2
  969. package/package/components/git_sync/GitSyncContext.svelte.js +25 -8
  970. package/package/components/git_sync/GitSyncModeDisplay.svelte +9 -4
  971. package/package/components/git_sync/GitSyncModeDisplay.svelte.d.ts +1 -1
  972. package/package/components/git_sync/GitSyncRepositoryCard.svelte +180 -74
  973. package/package/components/git_sync/GitSyncSection.svelte +70 -42
  974. package/package/components/git_sync/PullWorkspaceModal.svelte +79 -44
  975. package/package/components/git_sync/PushWorkspaceModal.svelte +42 -34
  976. package/package/components/graph/FlowGraphV2.svelte +433 -94
  977. package/package/components/graph/FlowGraphV2.svelte.d.ts +48 -3
  978. package/package/components/graph/NodeContextMenu.svelte +36 -0
  979. package/package/components/graph/NodeContextMenu.svelte.d.ts +8 -0
  980. package/package/components/graph/NoteColorPicker.svelte +42 -0
  981. package/package/components/graph/NoteColorPicker.svelte.d.ts +9 -0
  982. package/package/components/graph/NoteTool.svelte +182 -0
  983. package/package/components/graph/NoteTool.svelte.d.ts +7 -0
  984. package/package/components/graph/PaneContextMenu.svelte +95 -0
  985. package/package/components/graph/PaneContextMenu.svelte.d.ts +8 -0
  986. package/package/components/graph/SelectionBoundingBox.svelte +68 -0
  987. package/package/components/graph/SelectionBoundingBox.svelte.d.ts +10 -0
  988. package/package/components/graph/SelectionTool.svelte +32 -0
  989. package/package/components/graph/SelectionTool.svelte.d.ts +8 -0
  990. package/package/components/graph/ViewportSynchronizer.svelte +49 -0
  991. package/package/components/graph/ViewportSynchronizer.svelte.d.ts +12 -0
  992. package/package/components/graph/graphBuilder.svelte.d.ts +7 -1
  993. package/package/components/graph/graphBuilder.svelte.js +8 -4
  994. package/package/components/graph/graphContext.d.ts +15 -0
  995. package/package/components/graph/graphContext.js +5 -0
  996. package/package/components/graph/groupDetectionUtils.d.ts +9 -0
  997. package/package/components/graph/groupDetectionUtils.js +73 -0
  998. package/package/components/graph/model.d.ts +1 -0
  999. package/package/components/graph/noteColors.d.ts +30 -0
  1000. package/package/components/graph/noteColors.js +121 -0
  1001. package/package/components/graph/noteEditor.svelte.d.ts +97 -0
  1002. package/package/components/graph/noteEditor.svelte.js +259 -0
  1003. package/package/components/graph/noteManager.svelte.d.ts +32 -0
  1004. package/package/components/graph/noteManager.svelte.js +126 -0
  1005. package/package/components/graph/noteUtils.svelte.d.ts +87 -0
  1006. package/package/components/graph/noteUtils.svelte.js +294 -0
  1007. package/package/components/graph/renderers/edges/BaseEdge.svelte +50 -44
  1008. package/package/components/graph/renderers/edges/EmptyEdge.svelte +4 -3
  1009. package/package/components/graph/renderers/nodes/AIToolNode.svelte +63 -25
  1010. package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +3 -1
  1011. package/package/components/graph/renderers/nodes/AssetNode.svelte +37 -27
  1012. package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +7 -3
  1013. package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte +4 -6
  1014. package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte.d.ts +1 -0
  1015. package/package/components/graph/renderers/nodes/BranchAllStart.svelte +4 -10
  1016. package/package/components/graph/renderers/nodes/BranchAllStart.svelte.d.ts +1 -0
  1017. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +4 -8
  1018. package/package/components/graph/renderers/nodes/BranchOneStart.svelte.d.ts +1 -0
  1019. package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +4 -7
  1020. package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte.d.ts +1 -0
  1021. package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +4 -14
  1022. package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte.d.ts +1 -0
  1023. package/package/components/graph/renderers/nodes/InputNode.svelte +28 -13
  1024. package/package/components/graph/renderers/nodes/ModuleNode.svelte +16 -30
  1025. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +52 -30
  1026. package/package/components/graph/renderers/nodes/NoBranchNode.svelte +0 -4
  1027. package/package/components/graph/renderers/nodes/NodeWrapper.svelte +34 -22
  1028. package/package/components/graph/renderers/nodes/NodeWrapper.svelte.d.ts +2 -0
  1029. package/package/components/graph/renderers/nodes/NoteNode.svelte +329 -0
  1030. package/package/components/graph/renderers/nodes/NoteNode.svelte.d.ts +16 -0
  1031. package/package/components/graph/renderers/nodes/ResultNode.svelte +4 -10
  1032. package/package/components/graph/renderers/nodes/ResultNode.svelte.d.ts +1 -0
  1033. package/package/components/graph/renderers/nodes/SubflowBound.svelte +17 -17
  1034. package/package/components/graph/renderers/nodes/SubflowBound.svelte.d.ts +1 -0
  1035. package/package/components/graph/renderers/nodes/TriggersNode.svelte +22 -18
  1036. package/package/components/graph/renderers/nodes/TriggersNode.svelte.d.ts +4 -18
  1037. package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +4 -6
  1038. package/package/components/graph/renderers/nodes/branchOneEndNode.svelte.d.ts +1 -0
  1039. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +4 -4
  1040. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +5 -11
  1041. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte.d.ts +2 -2
  1042. package/package/components/graph/selectionUtils.svelte.d.ts +15 -0
  1043. package/package/components/graph/selectionUtils.svelte.js +94 -0
  1044. package/package/components/graph/util.d.ts +42 -2
  1045. package/package/components/graph/util.js +230 -38
  1046. package/package/components/home/ItemsList.svelte +35 -38
  1047. package/package/components/home/ListFilters.svelte +6 -9
  1048. package/package/components/home/ListFiltersQuick.svelte +28 -29
  1049. package/package/components/home/NoItemFound.svelte +19 -5
  1050. package/package/components/home/NoItemFound.svelte.d.ts +5 -25
  1051. package/package/components/home/TreeView.svelte +17 -19
  1052. package/package/components/home/TreeViewRoot.svelte +4 -4
  1053. package/package/components/home/TutorialBanner.svelte +119 -0
  1054. package/package/components/home/TutorialBanner.svelte.d.ts +3 -0
  1055. package/package/components/home/TutorialButton.svelte +97 -0
  1056. package/package/components/home/TutorialButton.svelte.d.ts +15 -0
  1057. package/package/components/icons/ApifyIcon.svelte +17 -0
  1058. package/package/components/icons/ApifyIcon.svelte.d.ts +7 -0
  1059. package/package/components/icons/AsanaIcon.svelte +13 -1
  1060. package/package/components/icons/AssetDatabaseIcon.svelte +23 -0
  1061. package/package/components/icons/AssetDatabaseIcon.svelte.d.ts +9 -0
  1062. package/package/components/icons/AssetGenericIcon.svelte +10 -10
  1063. package/package/components/icons/AssetGenericIcon.svelte.d.ts +0 -1
  1064. package/package/components/icons/Auth0Icon.svelte +10 -11
  1065. package/package/components/icons/Auth0Icon.svelte.d.ts +5 -25
  1066. package/package/components/icons/DucklakeIcon.svelte +2 -1
  1067. package/package/components/icons/DucklakeIcon.svelte.d.ts +2 -1
  1068. package/package/components/icons/FunnelCog.svelte +31 -0
  1069. package/package/components/icons/FunnelCog.svelte.d.ts +11 -0
  1070. package/package/components/icons/MSTeamsIcon.svelte +76 -2
  1071. package/package/components/icons/MSTeamsIcon.svelte.d.ts +1 -2
  1072. package/package/components/icons/McpIcon.svelte +18 -0
  1073. package/package/components/icons/McpIcon.svelte.d.ts +7 -0
  1074. package/package/components/icons/NextcloudIcon.svelte +13 -5
  1075. package/package/components/icons/NextcloudIcon.svelte.d.ts +3 -2
  1076. package/package/components/icons/SageIcon.svelte +10 -0
  1077. package/package/components/icons/SageIcon.svelte.d.ts +7 -0
  1078. package/package/components/icons/WindmillIcon.svelte +3 -1
  1079. package/package/components/icons/WindmillIcon.svelte.d.ts +1 -0
  1080. package/package/components/icons/ZohoIcon.svelte +30 -0
  1081. package/package/components/icons/ZohoIcon.svelte.d.ts +7 -0
  1082. package/package/components/icons/index.js +9 -1
  1083. package/package/components/instanceSettings/CriticalAlertChannels.svelte +146 -0
  1084. package/package/components/instanceSettings/CriticalAlertChannels.svelte.d.ts +9 -0
  1085. package/package/components/instanceSettings/EmailChannelCard.svelte +91 -0
  1086. package/package/components/instanceSettings/EmailChannelCard.svelte.d.ts +18 -0
  1087. package/package/components/instanceSettings/IntegrationCard.svelte +48 -0
  1088. package/package/components/instanceSettings/IntegrationCard.svelte.d.ts +13 -0
  1089. package/package/components/instanceSettings/SlackChannelCard.svelte +96 -0
  1090. package/package/components/instanceSettings/SlackChannelCard.svelte.d.ts +18 -0
  1091. package/package/components/instanceSettings/SmtpSettings.svelte +167 -0
  1092. package/package/components/instanceSettings/SmtpSettings.svelte.d.ts +9 -0
  1093. package/package/components/instanceSettings/TeamsChannelCard.svelte +131 -0
  1094. package/package/components/instanceSettings/TeamsChannelCard.svelte.d.ts +29 -0
  1095. package/package/components/instanceSettings.d.ts +6 -0
  1096. package/package/components/instanceSettings.js +29 -11
  1097. package/package/components/jobs/JobPreview.svelte +2 -2
  1098. package/package/components/meltComponents/MenuItem.svelte +3 -1
  1099. package/package/components/meltComponents/MenuItem.svelte.d.ts +1 -0
  1100. package/package/components/meltComponents/Popover.svelte +43 -12
  1101. package/package/components/meltComponents/Popover.svelte.d.ts +3 -0
  1102. package/package/components/meltComponents/Tooltip.svelte +2 -2
  1103. package/package/components/preview/FlowPreviewStatus.svelte +3 -3
  1104. package/package/components/propertyPicker/ObjectViewer.svelte +18 -19
  1105. package/package/components/propertyPicker/PropPicker.svelte +96 -44
  1106. package/package/components/propertyPicker/PropPicker.svelte.d.ts +1 -1
  1107. package/package/components/propertyPicker/PropPickerResult.svelte +7 -0
  1108. package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
  1109. package/package/components/propertyPicker/WarningMessage.svelte +1 -1
  1110. package/package/components/raw_apps/FileTreeNode.svelte +237 -0
  1111. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +15 -9
  1112. package/package/components/raw_apps/RawAppBackgroundRunner.svelte.d.ts +3 -2
  1113. package/package/components/raw_apps/RawAppEditor.svelte +385 -48
  1114. package/package/components/raw_apps/RawAppEditor.svelte.d.ts +2 -2
  1115. package/package/components/raw_apps/RawAppEditorHeader.svelte +29 -48
  1116. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +6 -2
  1117. package/package/components/raw_apps/RawAppHistoryList.svelte +106 -0
  1118. package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +10 -0
  1119. package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +142 -0
  1120. package/package/components/raw_apps/RawAppHistoryManager.svelte.js +314 -0
  1121. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +114 -115
  1122. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +6 -4
  1123. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +84 -19
  1124. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +2 -19
  1125. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +36 -40
  1126. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +10 -2
  1127. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +33 -46
  1128. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +4 -21
  1129. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +3 -3
  1130. package/package/components/raw_apps/RawAppModules.svelte +55 -0
  1131. package/package/components/raw_apps/RawAppModules.svelte.d.ts +14 -0
  1132. package/package/components/raw_apps/RawAppPreview.svelte.d.ts +2 -2
  1133. package/package/components/raw_apps/RawAppSidebar.svelte +277 -0
  1134. package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +18 -0
  1135. package/package/components/raw_apps/fileTreeUtils.d.ts +7 -0
  1136. package/package/components/raw_apps/fileTreeUtils.js +54 -0
  1137. package/package/components/raw_apps/lintStore.d.ts +33 -0
  1138. package/package/components/raw_apps/lintStore.js +62 -0
  1139. package/package/components/raw_apps/rawAppPolicy.d.ts +10 -0
  1140. package/package/components/raw_apps/rawAppPolicy.js +42 -0
  1141. package/package/components/raw_apps/utils.d.ts +11 -2
  1142. package/package/components/raw_apps/utils.js +32 -45
  1143. package/package/components/runs/BatchReRunOptionsPane.svelte +57 -52
  1144. package/package/components/runs/JobRunsPreview.svelte +24 -14
  1145. package/package/components/runs/JobsLoader.svelte +171 -135
  1146. package/package/components/runs/JobsLoader.svelte.d.ts +5 -4
  1147. package/package/components/runs/ManuelDatePicker.svelte +6 -12
  1148. package/package/components/runs/ManuelDatePicker.svelte.d.ts +11 -14
  1149. package/package/components/runs/MobileFilters.svelte +1 -1
  1150. package/package/components/runs/PreprocessedArgsDisplay.svelte +1 -1
  1151. package/package/components/runs/QueuePopover.svelte +1 -1
  1152. package/package/components/runs/RunBadges.svelte +1 -1
  1153. package/package/components/runs/RunOption.svelte +3 -1
  1154. package/package/components/runs/RunRow.svelte +38 -61
  1155. package/package/components/runs/RunRow.svelte.d.ts +1 -1
  1156. package/package/components/runs/RunsBatchActionsDropdown.svelte +16 -18
  1157. package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +1 -1
  1158. package/package/components/runs/RunsFilter.svelte +116 -90
  1159. package/package/components/runs/RunsFilter.svelte.d.ts +4 -2
  1160. package/package/components/runs/RunsQueue.svelte +17 -9
  1161. package/package/components/runs/RunsTable.svelte +10 -8
  1162. package/package/components/runs/RunsTable.svelte.d.ts +2 -1
  1163. package/package/components/schema/AddPropertyForm.svelte +9 -9
  1164. package/package/components/schema/AddPropertyFormV2.svelte +1 -2
  1165. package/package/components/schema/EditableSchemaDrawer.svelte +3 -4
  1166. package/package/components/schema/EditableSchemaSdkWrapper.svelte +2 -2
  1167. package/package/components/schema/FlowPropertyEditor.svelte +6 -8
  1168. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  1169. package/package/components/schema/PropertyEditor.svelte +2 -1
  1170. package/package/components/schema/PropertyEditor.svelte.d.ts +2 -1
  1171. package/package/components/schema/SchemaFormDND.svelte +4 -3
  1172. package/package/components/schema/SchemaPickerRow.svelte +3 -3
  1173. package/package/components/schema/jsonSchemaResource.svelte.js +6 -1
  1174. package/package/components/scriptEditor/LogPanel.svelte +4 -4
  1175. package/package/components/scripts/CreateActionsScript.svelte +5 -4
  1176. package/package/components/search/GlobalSearchModal.svelte +11 -21
  1177. package/package/components/search/RunsSearch.svelte +6 -6
  1178. package/package/components/search/RunsSearch.svelte.d.ts +1 -1
  1179. package/package/components/select/DraggableTags.svelte +4 -4
  1180. package/package/components/select/MultiSelect.svelte +13 -9
  1181. package/package/components/select/MultiSelect.svelte.d.ts +10 -2
  1182. package/package/components/select/Select.svelte +28 -9
  1183. package/package/components/select/Select.svelte.d.ts +8 -0
  1184. package/package/components/select/SelectDropdown.svelte +20 -12
  1185. package/package/components/select/utils.svelte.d.ts +1 -0
  1186. package/package/components/select/utils.svelte.js +1 -2
  1187. package/package/components/settings/AIUserSettings.svelte +7 -3
  1188. package/package/components/settings/ChangeWorkspaceColor.svelte +6 -4
  1189. package/package/components/settings/ChangeWorkspaceId.svelte +4 -4
  1190. package/package/components/settings/ChangeWorkspaceName.svelte +4 -4
  1191. package/package/components/settings/CreateToken.svelte +278 -57
  1192. package/package/components/settings/PremiumInfo.svelte +4 -4
  1193. package/package/components/settings/ScopeSelector.svelte +32 -33
  1194. package/package/components/settings/TokenDisplay.svelte +50 -61
  1195. package/package/components/settings/TokenDisplay.svelte.d.ts +1 -1
  1196. package/package/components/settings/TokensTable.svelte +33 -34
  1197. package/package/components/settings/UserAIPromptsSettings.svelte +31 -0
  1198. package/package/components/settings/UserAIPromptsSettings.svelte.d.ts +3 -0
  1199. package/package/components/settings/UserInfoSettings.svelte +37 -39
  1200. package/package/components/settings/WorkspaceOperatorSettings.svelte +2 -2
  1201. package/package/components/settings/WorkspaceUserSettings.svelte +12 -11
  1202. package/package/components/sidebar/CriticalAlertModal.svelte +10 -7
  1203. package/package/components/sidebar/CriticalAlertModalInner.svelte +4 -4
  1204. package/package/components/sidebar/CriticalAlertTable.svelte +4 -4
  1205. package/package/components/sidebar/MenuButton.svelte +11 -12
  1206. package/package/components/sidebar/MenuButton.svelte.d.ts +5 -0
  1207. package/package/components/sidebar/MenuLink.svelte +8 -33
  1208. package/package/components/sidebar/MultiplayerMenu.svelte +1 -1
  1209. package/package/components/sidebar/OperatorMenu.svelte +29 -20
  1210. package/package/components/sidebar/SidebarContent.svelte +38 -11
  1211. package/package/components/sidebar/UserMenu.svelte +2 -6
  1212. package/package/components/sidebar/WorkspaceMenu.svelte +9 -13
  1213. package/package/components/sidebar/changelogs.js +5 -0
  1214. package/package/components/splitPanes/AnimatedPane.svelte +38 -0
  1215. package/package/components/splitPanes/AnimatedPane.svelte.d.ts +12 -0
  1216. package/package/components/sqlTypeService.d.ts +19 -0
  1217. package/package/components/sqlTypeService.js +146 -0
  1218. package/package/components/stepHistoryLoader.svelte.js +1 -1
  1219. package/package/components/table/Cell.svelte +4 -3
  1220. package/package/components/table/DataTable.svelte +1 -1
  1221. package/package/components/table/DownloadCsv.svelte +2 -2
  1222. package/package/components/text_input/TextInput.svelte +38 -19
  1223. package/package/components/text_input/TextInput.svelte.d.ts +42 -9
  1224. package/package/components/triggers/AddTriggersButton.svelte +2 -3
  1225. package/package/components/triggers/CaptureButton.svelte +2 -3
  1226. package/package/components/triggers/CaptureSection.svelte +88 -34
  1227. package/package/components/triggers/CaptureSection.svelte.d.ts +3 -1
  1228. package/package/components/triggers/CaptureTable.svelte +3 -3
  1229. package/package/components/triggers/CaptureTable.svelte.d.ts +3 -1
  1230. package/package/components/triggers/DeleteTriggerButton.svelte +4 -7
  1231. package/package/components/triggers/TestTriggerConnection.svelte +1 -2
  1232. package/package/components/triggers/TriggerEditorToolbar.svelte +23 -23
  1233. package/package/components/triggers/TriggerEditorToolbar.svelte.d.ts +7 -3
  1234. package/package/components/triggers/TriggerLabel.svelte +8 -30
  1235. package/package/components/triggers/TriggerModeToggle.svelte +73 -0
  1236. package/package/components/triggers/TriggerModeToggle.svelte.d.ts +18 -0
  1237. package/package/components/triggers/TriggerSuspendedJobsAlert.svelte +21 -0
  1238. package/package/components/triggers/TriggerSuspendedJobsAlert.svelte.d.ts +7 -0
  1239. package/package/components/triggers/TriggerSuspendedJobsModal.svelte +471 -0
  1240. package/package/components/triggers/TriggerSuspendedJobsModal.svelte.d.ts +22 -0
  1241. package/package/components/triggers/TriggersEditor.svelte +113 -69
  1242. package/package/components/triggers/TriggersEditor.svelte.d.ts +1 -1
  1243. package/package/components/triggers/TriggersTable.svelte +14 -15
  1244. package/package/components/triggers/TriggersWrapper.svelte +5 -9
  1245. package/package/components/triggers/TriggersWrapper.svelte.d.ts +1 -1
  1246. package/package/components/triggers/email/DefaultEmailCapture.svelte.d.ts +3 -1
  1247. package/package/components/triggers/email/DefaultEmailConfigSection.svelte +19 -27
  1248. package/package/components/triggers/email/DefaultEmailConfigSection.svelte.d.ts +1 -1
  1249. package/package/components/triggers/email/DefaultEmailPanel.svelte +3 -3
  1250. package/package/components/triggers/email/DefaultEmailPanel.svelte.d.ts +1 -1
  1251. package/package/components/triggers/email/EmailCapture.svelte.d.ts +3 -1
  1252. package/package/components/triggers/email/EmailTriggerEditorInner.svelte +75 -16
  1253. package/package/components/triggers/email/utils.d.ts +1 -1
  1254. package/package/components/triggers/email/utils.js +14 -13
  1255. package/package/components/triggers/gcp/GcpCapture.svelte.d.ts +3 -1
  1256. package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +4 -8
  1257. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +60 -25
  1258. package/package/components/triggers/gcp/utils.js +2 -2
  1259. package/package/components/triggers/http/OpenAPISpecGenerator.svelte +8 -14
  1260. package/package/components/triggers/http/RouteBodyTransformerOption.svelte +4 -2
  1261. package/package/components/triggers/http/RouteCapture.svelte.d.ts +3 -1
  1262. package/package/components/triggers/http/RouteEditorConfigSection.svelte +38 -35
  1263. package/package/components/triggers/http/RouteEditorInner.svelte +402 -303
  1264. package/package/components/triggers/http/RoutesGenerator.svelte +2 -3
  1265. package/package/components/triggers/http/utils.js +5 -4
  1266. package/package/components/triggers/kafka/KafkaCapture.svelte.d.ts +3 -1
  1267. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +63 -20
  1268. package/package/components/triggers/kafka/utils.js +2 -2
  1269. package/package/components/triggers/mqtt/MqttCapture.svelte.d.ts +3 -1
  1270. package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +2 -3
  1271. package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +58 -20
  1272. package/package/components/triggers/mqtt/utils.js +3 -3
  1273. package/package/components/triggers/nats/NatsCapture.svelte.d.ts +3 -1
  1274. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +57 -19
  1275. package/package/components/triggers/nats/utils.js +2 -2
  1276. package/package/components/triggers/postgres/CheckPostgresRequirement.svelte +1 -2
  1277. package/package/components/triggers/postgres/PostgresCapture.svelte.d.ts +3 -1
  1278. package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +79 -35
  1279. package/package/components/triggers/postgres/PublicationPicker.svelte +3 -6
  1280. package/package/components/triggers/postgres/RelationPicker.svelte +3 -6
  1281. package/package/components/triggers/postgres/SlotPicker.svelte +2 -4
  1282. package/package/components/triggers/postgres/utils.js +3 -3
  1283. package/package/components/triggers/scheduled/ScheduledPollPanel.svelte +1 -1
  1284. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +152 -135
  1285. package/package/components/triggers/sqs/SqsCapture.svelte.d.ts +3 -1
  1286. package/package/components/triggers/sqs/SqsTriggerEditorConfigSection.svelte +3 -4
  1287. package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +60 -19
  1288. package/package/components/triggers/sqs/utils.js +3 -3
  1289. package/package/components/triggers/testingBadge.svelte +1 -1
  1290. package/package/components/triggers/utils.js +30 -0
  1291. package/package/components/triggers/webhook/WebhooksCapture.svelte.d.ts +3 -1
  1292. package/package/components/triggers/webhook/WebhooksConfigSection.svelte +124 -155
  1293. package/package/components/triggers/webhook/WebhooksConfigSection.svelte.d.ts +1 -1
  1294. package/package/components/triggers/webhook/WebhooksPanel.svelte +2 -2
  1295. package/package/components/triggers/webhook/WebhooksPanel.svelte.d.ts +1 -1
  1296. package/package/components/triggers/websocket/WebsocketCapture.svelte.d.ts +3 -1
  1297. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +67 -27
  1298. package/package/components/triggers/websocket/utils.js +2 -2
  1299. package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +703 -0
  1300. package/package/components/tutorials/{app/AppTutorial.svelte.d.ts → FlowBuilderLiveTutorial.svelte.d.ts} +7 -8
  1301. package/package/components/tutorials/SkipTutorials.svelte +2 -4
  1302. package/package/components/tutorials/TroubleshootFlowTutorial.svelte +410 -0
  1303. package/package/components/tutorials/{FlowBuilderTutorialErrorHandler.svelte.d.ts → TroubleshootFlowTutorial.svelte.d.ts} +8 -7
  1304. package/package/components/tutorials/TutorialControls.svelte +1 -1
  1305. package/package/components/tutorials/TutorialProgressBar.svelte +20 -0
  1306. package/package/components/tutorials/TutorialProgressBar.svelte.d.ts +8 -0
  1307. package/package/components/tutorials/TutorialRouter.svelte +45 -0
  1308. package/package/components/tutorials/TutorialRouter.svelte.d.ts +16 -0
  1309. package/package/components/tutorials/TutorialWrapper.svelte +23 -0
  1310. package/package/components/tutorials/TutorialWrapper.svelte.d.ts +28 -0
  1311. package/package/components/tutorials/utils.js +6 -6
  1312. package/package/components/tutorials/workspace/WorkspaceOnboardingTutorial.svelte +106 -0
  1313. package/package/components/tutorials/{FlowBuilderTutorialSimpleFlow.svelte.d.ts → workspace/WorkspaceOnboardingTutorial.svelte.d.ts} +7 -8
  1314. package/package/components/vscode.d.ts +1 -0
  1315. package/package/components/vscode.js +12 -6
  1316. package/package/components/wizards/AgChartWizard.svelte +1 -1
  1317. package/package/components/wizards/AgGridWizard.svelte +55 -55
  1318. package/package/components/wizards/DBExplorerWizard.svelte +1 -2
  1319. package/package/components/wizards/LoggedWizardResult.svelte +3 -3
  1320. package/package/components/wizards/TableActionsWizard.svelte +4 -10
  1321. package/package/components/wizards/TableActionsWizard.svelte.d.ts +2 -2
  1322. package/package/components/worker_group.js +3 -2
  1323. package/package/components/workspaceSettings/AISettings.svelte +21 -70
  1324. package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
  1325. package/package/components/workspaceSettings/CreateWorkspace.svelte +325 -159
  1326. package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +69 -0
  1327. package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte.d.ts +17 -0
  1328. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +188 -0
  1329. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte.d.ts +19 -0
  1330. package/package/components/workspaceSettings/DataTableSettings.svelte +256 -0
  1331. package/package/components/workspaceSettings/DataTableSettings.svelte.d.ts +23 -0
  1332. package/package/components/workspaceSettings/DucklakeSettings.svelte +41 -205
  1333. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +1 -0
  1334. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +42 -21
  1335. package/package/components/workspaceSettings/ModelTokenLimits.svelte +1 -1
  1336. package/package/components/workspaceSettings/StorageSettings.svelte +18 -17
  1337. package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +1 -0
  1338. package/package/components/workspaceSettings/WorkspaceDependenciesSettings.svelte +365 -0
  1339. package/package/components/workspaceSettings/WorkspaceDependenciesSettings.svelte.d.ts +3 -0
  1340. package/package/components/workspaceSettings/utils.svelte.d.ts +1 -0
  1341. package/package/components/workspaceSettings/utils.svelte.js +4 -0
  1342. package/package/consts.d.ts +1 -1
  1343. package/package/cookies.d.ts +7 -0
  1344. package/package/cookies.js +25 -0
  1345. package/package/gen/core/OpenAPI.js +1 -1
  1346. package/package/gen/schemas.gen.d.ts +1053 -97
  1347. package/package/gen/schemas.gen.js +1139 -174
  1348. package/package/gen/services.gen.d.ts +539 -35
  1349. package/package/gen/services.gen.js +1125 -87
  1350. package/package/gen/types.gen.d.ts +2833 -299
  1351. package/package/hub.d.ts +4 -0
  1352. package/package/hub.js +2 -0
  1353. package/package/hubPaths.json +10 -9
  1354. package/package/infer.d.ts +27 -1
  1355. package/package/infer.js +27 -9
  1356. package/package/infer.svelte.d.ts +4 -0
  1357. package/package/infer.svelte.js +70 -0
  1358. package/package/mcpEndpointTools.d.ts +11 -0
  1359. package/package/mcpEndpointTools.js +1414 -0
  1360. package/package/monaco_workers/sqlTypePlugin.worker.d.ts +151 -0
  1361. package/package/monaco_workers/sqlTypePlugin.worker.js +789 -0
  1362. package/package/monaco_workers/sqlTypePlugin.worker.test.d.ts +1 -0
  1363. package/package/monaco_workers/sqlTypePlugin.worker.test.js +99 -0
  1364. package/package/rawAppWmillTs.d.ts +4 -0
  1365. package/package/rawAppWmillTs.js +46 -0
  1366. package/package/script_helpers.d.ts +14 -1
  1367. package/package/script_helpers.js +205 -33
  1368. package/package/scripts.d.ts +2 -1
  1369. package/package/scripts.js +9 -0
  1370. package/package/sharedUtils.d.ts +5 -0
  1371. package/package/sharedUtils.js +7 -0
  1372. package/package/storeUtils.js +2 -2
  1373. package/package/stores.d.ts +3 -0
  1374. package/package/stores.js +26 -14
  1375. package/package/svelte5Utils.svelte.d.ts +27 -1
  1376. package/package/svelte5Utils.svelte.js +68 -2
  1377. package/package/test-setup.d.ts +4 -0
  1378. package/package/test-setup.js +76 -0
  1379. package/package/toast.d.ts +3 -0
  1380. package/package/toast.js +3 -2
  1381. package/package/tutorialUtils.d.ts +36 -0
  1382. package/package/tutorialUtils.js +152 -6
  1383. package/package/tutorials/config.d.ts +28 -0
  1384. package/package/tutorials/config.js +103 -0
  1385. package/package/tutorials/roleUtils.d.ts +20 -0
  1386. package/package/tutorials/roleUtils.js +52 -0
  1387. package/package/utils.js +164 -9
  1388. package/package/utils.test.d.ts +1 -0
  1389. package/package/utils.test.js +208 -0
  1390. package/package/utils_deployable.d.ts +18 -18
  1391. package/package/utils_deployable.js +16 -16
  1392. package/package.json +33 -25
  1393. package/package/components/ConfirmButton.svelte +0 -31
  1394. package/package/components/DefaultTags.svelte +0 -24
  1395. package/package/components/DefaultTags.svelte.d.ts +0 -7
  1396. package/package/components/FlowBuilderTutorials.svelte +0 -79
  1397. package/package/components/copilot/chat/flow/FlowAIButton.svelte +0 -64
  1398. package/package/components/copilot/chat/flow/FlowAIButton.svelte.d.ts +0 -8
  1399. package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +0 -52
  1400. package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte.d.ts +0 -10
  1401. package/package/components/flows/content/FlowConstants.svelte +0 -120
  1402. package/package/components/flows/content/FlowConstants.svelte.d.ts +0 -6
  1403. package/package/components/flows/content/FlowInputsFlowQuick.svelte +0 -65
  1404. package/package/components/flows/conversations/FlowChatManager.svelte.d.ts +0 -52
  1405. package/package/components/flows/conversations/FlowChatMessage.svelte +0 -68
  1406. package/package/components/flows/conversations/FlowChatMessage.svelte.d.ts +0 -7
  1407. package/package/components/tutorials/FlowBuilderTutorialBranchAll.svelte +0 -96
  1408. package/package/components/tutorials/FlowBuilderTutorialBranchAll.svelte.d.ts +0 -25
  1409. package/package/components/tutorials/FlowBuilderTutorialBranchOne.svelte +0 -116
  1410. package/package/components/tutorials/FlowBuilderTutorialBranchOne.svelte.d.ts +0 -26
  1411. package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +0 -131
  1412. package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +0 -273
  1413. package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte.d.ts +0 -26
  1414. package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +0 -280
  1415. package/package/components/tutorials/app/AppTutorial.svelte +0 -247
  1416. package/package/defaults.d.ts +0 -5
  1417. package/package/defaults.js +0 -5
  1418. package/package/utils.d.ts +0 -240
@@ -0,0 +1,1173 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { buildFlowTimeline, hasInputSchemaChanged } from './flowDiff';
3
+ import { createRawScriptModule, createIdentityModule, createForloopModule, createWhileloopModule, createBranchOneModule, createBranchAllModule, createFlow, createFlowWithSpecialModules, expectModuleOrder } from './flowDiff.testUtils';
4
+ describe('buildFlowTimeline', () => {
5
+ describe('basic detection', () => {
6
+ it('returns empty actions for identical flows', () => {
7
+ const moduleA = createRawScriptModule('a', 'console.log("hello")');
8
+ const beforeFlow = createFlow([moduleA]);
9
+ const afterFlow = createFlow([moduleA]);
10
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
11
+ expect(Object.keys(result.beforeActions)).toHaveLength(0);
12
+ expect(Object.keys(result.afterActions)).toHaveLength(0);
13
+ });
14
+ it('detects added module', () => {
15
+ const moduleA = createRawScriptModule('a', 'console.log("a")');
16
+ const moduleB = createRawScriptModule('b', 'console.log("b")');
17
+ const beforeFlow = createFlow([moduleA]);
18
+ const afterFlow = createFlow([moduleA, moduleB]);
19
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
20
+ expect(result.beforeActions).toEqual({});
21
+ expect(result.afterActions).toEqual({
22
+ b: { action: 'added', pending: false }
23
+ });
24
+ });
25
+ it('detects removed module', () => {
26
+ const moduleA = createRawScriptModule('a', 'console.log("a")');
27
+ const moduleB = createRawScriptModule('b', 'console.log("b")');
28
+ const beforeFlow = createFlow([moduleA, moduleB]);
29
+ const afterFlow = createFlow([moduleA]);
30
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
31
+ expect(result.beforeActions).toEqual({
32
+ b: { action: 'removed', pending: false }
33
+ });
34
+ // By default markRemovedAsShadowed is false, so removed modules show as 'removed' in afterActions
35
+ expect(result.afterActions).toEqual({
36
+ b: { action: 'removed', pending: false }
37
+ });
38
+ });
39
+ it('detects modified module (same type, different content)', () => {
40
+ const moduleBeforeA = createRawScriptModule('a', 'console.log("before")');
41
+ const moduleAfterA = createRawScriptModule('a', 'console.log("after")');
42
+ const beforeFlow = createFlow([moduleBeforeA]);
43
+ const afterFlow = createFlow([moduleAfterA]);
44
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
45
+ expect(result.beforeActions).toEqual({
46
+ a: { action: 'modified', pending: false }
47
+ });
48
+ expect(result.afterActions).toEqual({
49
+ a: { action: 'modified', pending: false }
50
+ });
51
+ });
52
+ it('treats type change as removed + added (not modified)', () => {
53
+ const moduleBeforeA = createRawScriptModule('a', 'console.log("script")');
54
+ const moduleAfterA = createIdentityModule('a');
55
+ const beforeFlow = createFlow([moduleBeforeA]);
56
+ const afterFlow = createFlow([moduleAfterA]);
57
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
58
+ expect(result.beforeActions).toEqual({
59
+ a: { action: 'removed', pending: false }
60
+ });
61
+ // The new module is 'added', and the old module is kept in mergedFlow
62
+ // with a prefixed ID 'old__a' and marked as 'removed'
63
+ expect(result.afterActions['a']).toEqual({ action: 'added', pending: false });
64
+ expect(result.afterActions['old__a']).toEqual({ action: 'removed', pending: false });
65
+ });
66
+ });
67
+ describe('options', () => {
68
+ it('markAsPending sets pending: true on all actions', () => {
69
+ const moduleA = createRawScriptModule('a', 'console.log("a")');
70
+ const moduleB = createRawScriptModule('b', 'console.log("b")');
71
+ const beforeFlow = createFlow([moduleA]);
72
+ const afterFlow = createFlow([moduleB]);
73
+ const result = buildFlowTimeline(beforeFlow, afterFlow, {
74
+ markAsPending: true,
75
+ markRemovedAsShadowed: false
76
+ });
77
+ expect(result.beforeActions).toEqual({
78
+ a: { action: 'removed', pending: true }
79
+ });
80
+ expect(result.afterActions).toEqual({
81
+ a: { action: 'removed', pending: true },
82
+ b: { action: 'added', pending: true }
83
+ });
84
+ });
85
+ it('markRemovedAsShadowed: true shows removed as shadowed in afterActions', () => {
86
+ const moduleA = createRawScriptModule('a', 'console.log("a")');
87
+ const moduleB = createRawScriptModule('b', 'console.log("b")');
88
+ const beforeFlow = createFlow([moduleA, moduleB]);
89
+ const afterFlow = createFlow([moduleA]);
90
+ const result = buildFlowTimeline(beforeFlow, afterFlow, {
91
+ markAsPending: false,
92
+ markRemovedAsShadowed: true
93
+ });
94
+ expect(result.beforeActions).toEqual({
95
+ b: { action: 'removed', pending: false }
96
+ });
97
+ expect(result.afterActions).toEqual({
98
+ b: { action: 'shadowed', pending: false }
99
+ });
100
+ });
101
+ it('markRemovedAsShadowed: false shows removed as removed in afterActions', () => {
102
+ const moduleA = createRawScriptModule('a', 'console.log("a")');
103
+ const moduleB = createRawScriptModule('b', 'console.log("b")');
104
+ const beforeFlow = createFlow([moduleA, moduleB]);
105
+ const afterFlow = createFlow([moduleA]);
106
+ const result = buildFlowTimeline(beforeFlow, afterFlow, {
107
+ markAsPending: false,
108
+ markRemovedAsShadowed: false
109
+ });
110
+ expect(result.beforeActions).toEqual({
111
+ b: { action: 'removed', pending: false }
112
+ });
113
+ expect(result.afterActions).toEqual({
114
+ b: { action: 'removed', pending: false }
115
+ });
116
+ });
117
+ });
118
+ describe('mergedFlow', () => {
119
+ it('mergedFlow contains all modules from afterFlow', () => {
120
+ const moduleA = createRawScriptModule('a', 'console.log("a")');
121
+ const moduleB = createRawScriptModule('b', 'console.log("b")');
122
+ const beforeFlow = createFlow([moduleA]);
123
+ const afterFlow = createFlow([moduleA, moduleB]);
124
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
125
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['a', 'b']);
126
+ });
127
+ it('mergedFlow includes removed modules from beforeFlow', () => {
128
+ const moduleA = createRawScriptModule('a', 'console.log("a")');
129
+ const moduleB = createRawScriptModule('b', 'console.log("b")');
130
+ const beforeFlow = createFlow([moduleA, moduleB]);
131
+ const afterFlow = createFlow([moduleA]);
132
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
133
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['a', 'b']);
134
+ });
135
+ });
136
+ describe('edge cases', () => {
137
+ it('handles empty flows', () => {
138
+ const beforeFlow = createFlow([]);
139
+ const afterFlow = createFlow([]);
140
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
141
+ expect(Object.keys(result.beforeActions)).toHaveLength(0);
142
+ expect(Object.keys(result.afterActions)).toHaveLength(0);
143
+ expect(result.mergedFlow.modules).toHaveLength(0);
144
+ });
145
+ it('handles flow with undefined modules', () => {
146
+ const beforeFlow = {};
147
+ const afterFlow = {};
148
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
149
+ expect(Object.keys(result.beforeActions)).toHaveLength(0);
150
+ expect(Object.keys(result.afterActions)).toHaveLength(0);
151
+ });
152
+ it('handles multiple changes at once', () => {
153
+ const moduleA = createRawScriptModule('a', 'original');
154
+ const moduleB = createRawScriptModule('b', 'to be removed');
155
+ const moduleAModified = createRawScriptModule('a', 'modified');
156
+ const moduleC = createRawScriptModule('c', 'newly added');
157
+ const beforeFlow = createFlow([moduleA, moduleB]);
158
+ const afterFlow = createFlow([moduleAModified, moduleC]);
159
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
160
+ // Module 'a' was modified
161
+ expect(result.beforeActions['a']).toEqual({ action: 'modified', pending: false });
162
+ expect(result.afterActions['a']).toEqual({ action: 'modified', pending: false });
163
+ // Module 'b' was removed
164
+ expect(result.beforeActions['b']).toEqual({ action: 'removed', pending: false });
165
+ expect(result.afterActions['b']).toEqual({ action: 'removed', pending: false });
166
+ // Module 'c' was added
167
+ expect(result.afterActions['c']).toEqual({ action: 'added', pending: false });
168
+ });
169
+ });
170
+ describe('forloop operations', () => {
171
+ it('detects added module inside forloop', () => {
172
+ const innerA = createRawScriptModule('inner_a', 'step a');
173
+ const innerB = createRawScriptModule('inner_b', 'step b');
174
+ const beforeLoop = createForloopModule('loop1', [innerA]);
175
+ const afterLoop = createForloopModule('loop1', [innerA, innerB]);
176
+ const beforeFlow = createFlow([beforeLoop]);
177
+ const afterFlow = createFlow([afterLoop]);
178
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
179
+ expect(result.afterActions['inner_b']).toEqual({ action: 'added', pending: false });
180
+ expect(result.beforeActions['inner_b']).toBeUndefined();
181
+ // Verify mergedFlow contains the loop with both modules in correct order
182
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['loop1']);
183
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'loop1');
184
+ expect(mergedLoop?.value.type).toBe('forloopflow');
185
+ const loopModules = (mergedLoop?.value).modules;
186
+ expectModuleOrder(loopModules, ['inner_a', 'inner_b']);
187
+ });
188
+ it('detects removed module from inside forloop', () => {
189
+ const innerA = createRawScriptModule('inner_a', 'step a');
190
+ const innerB = createRawScriptModule('inner_b', 'step b');
191
+ const beforeLoop = createForloopModule('loop1', [innerA, innerB]);
192
+ const afterLoop = createForloopModule('loop1', [innerA]);
193
+ const beforeFlow = createFlow([beforeLoop]);
194
+ const afterFlow = createFlow([afterLoop]);
195
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
196
+ expect(result.beforeActions['inner_b']).toEqual({ action: 'removed', pending: false });
197
+ expect(result.afterActions['inner_b']).toEqual({ action: 'removed', pending: false });
198
+ // Verify removed module is in mergedFlow inside the loop at correct position
199
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'loop1');
200
+ expect(mergedLoop?.value.type).toBe('forloopflow');
201
+ const loopModules = (mergedLoop?.value).modules;
202
+ expectModuleOrder(loopModules, ['inner_a', 'inner_b']);
203
+ });
204
+ it('detects modified module inside forloop', () => {
205
+ const innerBefore = createRawScriptModule('inner_a', 'original code');
206
+ const innerAfter = createRawScriptModule('inner_a', 'modified code');
207
+ const beforeLoop = createForloopModule('loop1', [innerBefore]);
208
+ const afterLoop = createForloopModule('loop1', [innerAfter]);
209
+ const beforeFlow = createFlow([beforeLoop]);
210
+ const afterFlow = createFlow([afterLoop]);
211
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
212
+ expect(result.beforeActions['inner_a']).toEqual({ action: 'modified', pending: false });
213
+ expect(result.afterActions['inner_a']).toEqual({ action: 'modified', pending: false });
214
+ // Verify mergedFlow contains the loop with the modified module
215
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['loop1']);
216
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'loop1');
217
+ const loopModules = (mergedLoop?.value).modules;
218
+ expectModuleOrder(loopModules, ['inner_a']);
219
+ // Verify the modified content is present (from afterFlow)
220
+ const innerModule = loopModules.find((m) => m.id === 'inner_a');
221
+ expect((innerModule?.value).content).toBe('modified code');
222
+ });
223
+ it('detects removal of entire forloop with nested children', () => {
224
+ const innerA = createRawScriptModule('inner_a', 'step a');
225
+ const innerB = createRawScriptModule('inner_b', 'step b');
226
+ const loop = createForloopModule('loop1', [innerA, innerB]);
227
+ const moduleC = createRawScriptModule('c', 'step c');
228
+ const beforeFlow = createFlow([loop, moduleC]);
229
+ const afterFlow = createFlow([moduleC]);
230
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
231
+ // The loop itself and all nested modules should be marked as removed
232
+ expect(result.beforeActions['loop1']).toEqual({ action: 'removed', pending: false });
233
+ expect(result.beforeActions['inner_a']).toEqual({ action: 'removed', pending: false });
234
+ expect(result.beforeActions['inner_b']).toEqual({ action: 'removed', pending: false });
235
+ // Verify mergedFlow contains the removed loop with all nested children at correct positions
236
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['loop1', 'c']);
237
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'loop1');
238
+ expect(mergedLoop?.value.type).toBe('forloopflow');
239
+ const loopModules = (mergedLoop?.value).modules;
240
+ expectModuleOrder(loopModules, ['inner_a', 'inner_b']);
241
+ });
242
+ it('handles nested forloop inside forloop with changes at inner level', () => {
243
+ const deepInnerA = createRawScriptModule('deep_a', 'deep step');
244
+ const deepInnerB = createRawScriptModule('deep_b', 'new deep step');
245
+ const innerLoopBefore = createForloopModule('inner_loop', [deepInnerA]);
246
+ const innerLoopAfter = createForloopModule('inner_loop', [deepInnerA, deepInnerB]);
247
+ const outerLoopBefore = createForloopModule('outer_loop', [innerLoopBefore]);
248
+ const outerLoopAfter = createForloopModule('outer_loop', [innerLoopAfter]);
249
+ const beforeFlow = createFlow([outerLoopBefore]);
250
+ const afterFlow = createFlow([outerLoopAfter]);
251
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
252
+ // The new nested module is detected as added
253
+ expect(result.afterActions['deep_b']).toEqual({ action: 'added', pending: false });
254
+ // Note: Container modules are marked as 'modified' because their nested content changed
255
+ // (deepEqual comparison includes nested modules array)
256
+ expect(result.beforeActions['outer_loop']).toEqual({ action: 'modified', pending: false });
257
+ expect(result.beforeActions['inner_loop']).toEqual({ action: 'modified', pending: false });
258
+ // Verify mergedFlow preserves the outer_loop → inner_loop → [deep_a, deep_b] structure
259
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['outer_loop']);
260
+ const mergedOuterLoop = result.mergedFlow.modules?.find((m) => m.id === 'outer_loop');
261
+ expect(mergedOuterLoop?.value.type).toBe('forloopflow');
262
+ const outerLoopModules = (mergedOuterLoop?.value).modules;
263
+ expectModuleOrder(outerLoopModules, ['inner_loop']);
264
+ const mergedInnerLoop = outerLoopModules.find((m) => m.id === 'inner_loop');
265
+ expect(mergedInnerLoop?.value.type).toBe('forloopflow');
266
+ const innerLoopModules = (mergedInnerLoop?.value).modules;
267
+ expectModuleOrder(innerLoopModules, ['deep_a', 'deep_b']);
268
+ });
269
+ });
270
+ describe('whileloop operations', () => {
271
+ it('detects changes inside whileloop', () => {
272
+ const innerA = createRawScriptModule('while_inner_a', 'step a');
273
+ const innerB = createRawScriptModule('while_inner_b', 'step b');
274
+ const beforeLoop = createWhileloopModule('while1', [innerA]);
275
+ const afterLoop = createWhileloopModule('while1', [innerA, innerB]);
276
+ const beforeFlow = createFlow([beforeLoop]);
277
+ const afterFlow = createFlow([afterLoop]);
278
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
279
+ expect(result.afterActions['while_inner_b']).toEqual({ action: 'added', pending: false });
280
+ // Verify mergedFlow contains the whileloop with both modules in correct order
281
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['while1']);
282
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'while1');
283
+ expect(mergedLoop?.value.type).toBe('whileloopflow');
284
+ const loopModules = (mergedLoop?.value).modules;
285
+ expectModuleOrder(loopModules, ['while_inner_a', 'while_inner_b']);
286
+ });
287
+ it('handles removal of module from whileloop and restores in mergedFlow', () => {
288
+ const innerA = createRawScriptModule('while_a', 'step a');
289
+ const innerB = createRawScriptModule('while_b', 'step b');
290
+ const beforeLoop = createWhileloopModule('while1', [innerA, innerB]);
291
+ const afterLoop = createWhileloopModule('while1', [innerA]);
292
+ const beforeFlow = createFlow([beforeLoop]);
293
+ const afterFlow = createFlow([afterLoop]);
294
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
295
+ expect(result.beforeActions['while_b']).toEqual({ action: 'removed', pending: false });
296
+ // Verify mergedFlow contains the removed module at correct position
297
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'while1');
298
+ const loopModules = (mergedLoop?.value).modules;
299
+ expectModuleOrder(loopModules, ['while_a', 'while_b']);
300
+ });
301
+ });
302
+ describe('branchone operations', () => {
303
+ it('detects added module in default branch', () => {
304
+ const defaultA = createRawScriptModule('default_a', 'default step a');
305
+ const defaultB = createRawScriptModule('default_b', 'default step b');
306
+ const beforeBranch = createBranchOneModule('branch1', [defaultA], []);
307
+ const afterBranch = createBranchOneModule('branch1', [defaultA, defaultB], []);
308
+ const beforeFlow = createFlow([beforeBranch]);
309
+ const afterFlow = createFlow([afterBranch]);
310
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
311
+ expect(result.afterActions['default_b']).toEqual({ action: 'added', pending: false });
312
+ // Verify mergedFlow.branch1.default contains both modules in correct order
313
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['branch1']);
314
+ const mergedBranch = result.mergedFlow.modules?.find((m) => m.id === 'branch1');
315
+ expect(mergedBranch?.value.type).toBe('branchone');
316
+ const defaultModules = (mergedBranch?.value).default;
317
+ expectModuleOrder(defaultModules, ['default_a', 'default_b']);
318
+ });
319
+ it('detects removed module from conditional branch', () => {
320
+ const branchModuleA = createRawScriptModule('branch_a', 'branch step a');
321
+ const branchModuleB = createRawScriptModule('branch_b', 'branch step b');
322
+ const beforeBranch = createBranchOneModule('branch1', [], [
323
+ { expr: 'true', modules: [branchModuleA, branchModuleB] }
324
+ ]);
325
+ const afterBranch = createBranchOneModule('branch1', [], [
326
+ { expr: 'true', modules: [branchModuleA] }
327
+ ]);
328
+ const beforeFlow = createFlow([beforeBranch]);
329
+ const afterFlow = createFlow([afterBranch]);
330
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
331
+ expect(result.beforeActions['branch_b']).toEqual({ action: 'removed', pending: false });
332
+ expect(result.afterActions['branch_b']).toEqual({ action: 'removed', pending: false });
333
+ // Verify mergedFlow.branch1.branches[0].modules contains the removed branch_b at correct position
334
+ const mergedBranch = result.mergedFlow.modules?.find((m) => m.id === 'branch1');
335
+ const branches = (mergedBranch?.value).branches;
336
+ expect(branches).toHaveLength(1);
337
+ expectModuleOrder(branches[0].modules, ['branch_a', 'branch_b']);
338
+ });
339
+ it('detects removal of entire conditional branch', () => {
340
+ const defaultModule = createRawScriptModule('default_mod', 'default');
341
+ const branch1ModuleA = createRawScriptModule('b1_a', 'branch 1 a');
342
+ const branch2ModuleA = createRawScriptModule('b2_a', 'branch 2 a');
343
+ const branch2ModuleB = createRawScriptModule('b2_b', 'branch 2 b');
344
+ const beforeBranch = createBranchOneModule('branch1', [defaultModule], [
345
+ { expr: 'x > 0', modules: [branch1ModuleA] },
346
+ { expr: 'x < 0', modules: [branch2ModuleA, branch2ModuleB] } // entire branch removed
347
+ ]);
348
+ const afterBranch = createBranchOneModule('branch1', [defaultModule], [
349
+ { expr: 'x > 0', modules: [branch1ModuleA] }
350
+ ]);
351
+ const beforeFlow = createFlow([beforeBranch]);
352
+ const afterFlow = createFlow([afterBranch]);
353
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
354
+ // All modules from removed branch should be marked as removed
355
+ expect(result.beforeActions['b2_a']).toEqual({ action: 'removed', pending: false });
356
+ expect(result.beforeActions['b2_b']).toEqual({ action: 'removed', pending: false });
357
+ expect(result.afterActions['b2_a']).toEqual({ action: 'removed', pending: false });
358
+ expect(result.afterActions['b2_b']).toEqual({ action: 'removed', pending: false });
359
+ // Verify mergedFlow structure - should have 2 branches with removed modules restored
360
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['branch1']);
361
+ const mergedBranch = result.mergedFlow.modules?.find((m) => m.id === 'branch1');
362
+ const branchValue = mergedBranch?.value;
363
+ // Default branch unchanged
364
+ expectModuleOrder(branchValue.default, ['default_mod']);
365
+ // First branch unchanged
366
+ expectModuleOrder(branchValue.branches[0].modules, ['b1_a']);
367
+ // Second branch should be restored with its modules
368
+ expect(branchValue.branches).toHaveLength(2);
369
+ expectModuleOrder(branchValue.branches[1].modules, ['b2_a', 'b2_b']);
370
+ });
371
+ it('detects changes across multiple branches simultaneously', () => {
372
+ const defaultModule = createRawScriptModule('default_mod', 'default');
373
+ const branch1ModuleA = createRawScriptModule('b1_a', 'branch 1 a');
374
+ const branch1ModuleB = createRawScriptModule('b1_b', 'branch 1 b - new');
375
+ const branch2ModuleA = createRawScriptModule('b2_a', 'branch 2 a - original');
376
+ const branch2ModuleAModified = createRawScriptModule('b2_a', 'branch 2 a - modified');
377
+ const beforeBranch = createBranchOneModule('branch1', [defaultModule], [
378
+ { expr: 'x > 0', modules: [branch1ModuleA] },
379
+ { expr: 'x < 0', modules: [branch2ModuleA] }
380
+ ]);
381
+ const afterBranch = createBranchOneModule('branch1', [defaultModule], [
382
+ { expr: 'x > 0', modules: [branch1ModuleA, branch1ModuleB] },
383
+ { expr: 'x < 0', modules: [branch2ModuleAModified] }
384
+ ]);
385
+ const beforeFlow = createFlow([beforeBranch]);
386
+ const afterFlow = createFlow([afterBranch]);
387
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
388
+ // branch1ModuleB was added
389
+ expect(result.afterActions['b1_b']).toEqual({ action: 'added', pending: false });
390
+ // branch2ModuleA was modified
391
+ expect(result.beforeActions['b2_a']).toEqual({ action: 'modified', pending: false });
392
+ expect(result.afterActions['b2_a']).toEqual({ action: 'modified', pending: false });
393
+ // Verify mergedFlow preserves structure with correct ordering
394
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['branch1']);
395
+ const mergedBranch = result.mergedFlow.modules?.find((m) => m.id === 'branch1');
396
+ const branchValue = mergedBranch?.value;
397
+ // Check default branch
398
+ expectModuleOrder(branchValue.default, ['default_mod']);
399
+ // Check first conditional branch (should have b1_a and b1_b in order)
400
+ expectModuleOrder(branchValue.branches[0].modules, ['b1_a', 'b1_b']);
401
+ // Check second conditional branch (should have modified b2_a)
402
+ expectModuleOrder(branchValue.branches[1].modules, ['b2_a']);
403
+ const b2aModule = branchValue.branches[1].modules.find((m) => m.id === 'b2_a');
404
+ expect((b2aModule?.value).content).toBe('branch 2 a - modified');
405
+ });
406
+ it('handles nested branch inside loop with changes', () => {
407
+ const branchInnerA = createRawScriptModule('nested_branch_a', 'nested a');
408
+ const branchInnerB = createRawScriptModule('nested_branch_b', 'nested b');
409
+ const beforeBranch = createBranchOneModule('inner_branch', [branchInnerA], []);
410
+ const afterBranch = createBranchOneModule('inner_branch', [branchInnerA, branchInnerB], []);
411
+ const beforeLoop = createForloopModule('outer_loop', [beforeBranch]);
412
+ const afterLoop = createForloopModule('outer_loop', [afterBranch]);
413
+ const beforeFlow = createFlow([beforeLoop]);
414
+ const afterFlow = createFlow([afterLoop]);
415
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
416
+ expect(result.afterActions['nested_branch_b']).toEqual({ action: 'added', pending: false });
417
+ // Verify mergedFlow.outer_loop.inner_branch.default contains added nested_branch_b at correct position
418
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['outer_loop']);
419
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'outer_loop');
420
+ const loopModules = (mergedLoop?.value).modules;
421
+ expectModuleOrder(loopModules, ['inner_branch']);
422
+ const mergedBranch = loopModules.find((m) => m.id === 'inner_branch');
423
+ const branchDefault = (mergedBranch?.value).default;
424
+ expectModuleOrder(branchDefault, ['nested_branch_a', 'nested_branch_b']);
425
+ });
426
+ });
427
+ describe('branchall operations', () => {
428
+ it('detects changes in parallel branches', () => {
429
+ const parallel1A = createRawScriptModule('p1_a', 'parallel 1 a');
430
+ const parallel2A = createRawScriptModule('p2_a', 'parallel 2 a');
431
+ const parallel2B = createRawScriptModule('p2_b', 'parallel 2 b - new');
432
+ const beforeBranchAll = createBranchAllModule('branchall1', [
433
+ { modules: [parallel1A] },
434
+ { modules: [parallel2A] }
435
+ ]);
436
+ const afterBranchAll = createBranchAllModule('branchall1', [
437
+ { modules: [parallel1A] },
438
+ { modules: [parallel2A, parallel2B] }
439
+ ]);
440
+ const beforeFlow = createFlow([beforeBranchAll]);
441
+ const afterFlow = createFlow([afterBranchAll]);
442
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
443
+ expect(result.afterActions['p2_b']).toEqual({ action: 'added', pending: false });
444
+ // Verify mergedFlow.branchall1.branches have correct module order
445
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['branchall1']);
446
+ const mergedBranchAll = result.mergedFlow.modules?.find((m) => m.id === 'branchall1');
447
+ expect(mergedBranchAll?.value.type).toBe('branchall');
448
+ const branches = (mergedBranchAll?.value).branches;
449
+ expect(branches).toHaveLength(2);
450
+ // First branch unchanged
451
+ expectModuleOrder(branches[0].modules, ['p1_a']);
452
+ // Second branch has added module in correct order
453
+ expectModuleOrder(branches[1].modules, ['p2_a', 'p2_b']);
454
+ });
455
+ it('detects removal of entire branchall with all nested modules', () => {
456
+ const parallel1A = createRawScriptModule('p1_a', 'parallel 1');
457
+ const parallel2A = createRawScriptModule('p2_a', 'parallel 2');
458
+ const branchAll = createBranchAllModule('branchall1', [
459
+ { modules: [parallel1A] },
460
+ { modules: [parallel2A] }
461
+ ]);
462
+ const moduleC = createRawScriptModule('c', 'step c');
463
+ const beforeFlow = createFlow([branchAll, moduleC]);
464
+ const afterFlow = createFlow([moduleC]);
465
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
466
+ expect(result.beforeActions['branchall1']).toEqual({ action: 'removed', pending: false });
467
+ expect(result.beforeActions['p1_a']).toEqual({ action: 'removed', pending: false });
468
+ expect(result.beforeActions['p2_a']).toEqual({ action: 'removed', pending: false });
469
+ // Verify mergedFlow contains the removed branchall with correct structure
470
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['branchall1', 'c']);
471
+ const mergedBranchAll = result.mergedFlow.modules?.find((m) => m.id === 'branchall1');
472
+ expect(mergedBranchAll?.value.type).toBe('branchall');
473
+ const branches = (mergedBranchAll?.value).branches;
474
+ expect(branches).toHaveLength(2);
475
+ expectModuleOrder(branches[0].modules, ['p1_a']);
476
+ expectModuleOrder(branches[1].modules, ['p2_a']);
477
+ });
478
+ it('handles removal from one parallel branch while adding to another', () => {
479
+ const parallel1A = createRawScriptModule('p1_a', 'parallel 1 a');
480
+ const parallel1B = createRawScriptModule('p1_b', 'parallel 1 b - to remove');
481
+ const parallel2A = createRawScriptModule('p2_a', 'parallel 2 a');
482
+ const parallel2B = createRawScriptModule('p2_b', 'parallel 2 b - new');
483
+ const beforeBranchAll = createBranchAllModule('branchall1', [
484
+ { modules: [parallel1A, parallel1B] },
485
+ { modules: [parallel2A] }
486
+ ]);
487
+ const afterBranchAll = createBranchAllModule('branchall1', [
488
+ { modules: [parallel1A] },
489
+ { modules: [parallel2A, parallel2B] }
490
+ ]);
491
+ const beforeFlow = createFlow([beforeBranchAll]);
492
+ const afterFlow = createFlow([afterBranchAll]);
493
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
494
+ expect(result.beforeActions['p1_b']).toEqual({ action: 'removed', pending: false });
495
+ expect(result.afterActions['p2_b']).toEqual({ action: 'added', pending: false });
496
+ // Verify mergedFlow.branchall1 has correct structure with all modules in order
497
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['branchall1']);
498
+ const mergedBranchAll = result.mergedFlow.modules?.find((m) => m.id === 'branchall1');
499
+ const branches = (mergedBranchAll?.value).branches;
500
+ expect(branches).toHaveLength(2);
501
+ // First branch should have both p1_a and removed p1_b restored in order
502
+ expectModuleOrder(branches[0].modules, ['p1_a', 'p1_b']);
503
+ // Second branch should have p2_a and added p2_b in order
504
+ expectModuleOrder(branches[1].modules, ['p2_a', 'p2_b']);
505
+ });
506
+ });
507
+ describe('deep nesting', () => {
508
+ it('handles loop inside branch inside loop with modifications at each level', () => {
509
+ // Structure: outerLoop -> branch -> innerLoop -> scripts
510
+ const deepScript1 = createRawScriptModule('deep1', 'deep script 1');
511
+ const deepScript2 = createRawScriptModule('deep2', 'deep script 2');
512
+ const deepScript3 = createRawScriptModule('deep3', 'deep script 3 - new');
513
+ const innerLoopBefore = createForloopModule('inner_loop', [deepScript1, deepScript2]);
514
+ const innerLoopAfter = createForloopModule('inner_loop', [deepScript1, deepScript3]);
515
+ const branchBefore = createBranchOneModule('mid_branch', [innerLoopBefore], []);
516
+ const branchAfter = createBranchOneModule('mid_branch', [innerLoopAfter], []);
517
+ const outerLoopBefore = createForloopModule('outer_loop', [branchBefore]);
518
+ const outerLoopAfter = createForloopModule('outer_loop', [branchAfter]);
519
+ const beforeFlow = createFlow([outerLoopBefore]);
520
+ const afterFlow = createFlow([outerLoopAfter]);
521
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
522
+ // deep2 was removed
523
+ expect(result.beforeActions['deep2']).toEqual({ action: 'removed', pending: false });
524
+ // deep3 was added
525
+ expect(result.afterActions['deep3']).toEqual({ action: 'added', pending: false });
526
+ // Note: Container modules are marked as 'modified' because their nested content changed
527
+ // (deepEqual comparison includes nested modules array)
528
+ expect(result.beforeActions['outer_loop']).toEqual({ action: 'modified', pending: false });
529
+ expect(result.beforeActions['mid_branch']).toEqual({ action: 'modified', pending: false });
530
+ expect(result.beforeActions['inner_loop']).toEqual({ action: 'modified', pending: false });
531
+ // Verify full structure with correct ordering at each level
532
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['outer_loop']);
533
+ const mergedOuterLoop = result.mergedFlow.modules?.find((m) => m.id === 'outer_loop');
534
+ expect(mergedOuterLoop?.value.type).toBe('forloopflow');
535
+ const outerLoopModules = (mergedOuterLoop?.value).modules;
536
+ expectModuleOrder(outerLoopModules, ['mid_branch']);
537
+ const mergedMidBranch = outerLoopModules.find((m) => m.id === 'mid_branch');
538
+ expect(mergedMidBranch?.value.type).toBe('branchone');
539
+ const midBranchDefault = (mergedMidBranch?.value).default;
540
+ expectModuleOrder(midBranchDefault, ['inner_loop']);
541
+ const mergedInnerLoop = midBranchDefault.find((m) => m.id === 'inner_loop');
542
+ expect(mergedInnerLoop?.value.type).toBe('forloopflow');
543
+ const innerLoopModules = (mergedInnerLoop?.value).modules;
544
+ // deep1 is unchanged, deep2 was removed (but restored in mergedFlow), deep3 was added
545
+ expectModuleOrder(innerLoopModules, ['deep1', 'deep2', 'deep3']);
546
+ });
547
+ it('handles complex scenario with multiple nested structures and simultaneous changes', () => {
548
+ // Before: loop1 -> [scriptA, branch1 -> [scriptB, scriptC]]
549
+ // After: loop1 -> [scriptA_modified, branch1 -> [scriptB, scriptD]]
550
+ const scriptA = createRawScriptModule('a', 'script a original');
551
+ const scriptAModified = createRawScriptModule('a', 'script a modified');
552
+ const scriptB = createRawScriptModule('b', 'script b');
553
+ const scriptC = createRawScriptModule('c', 'script c - to remove');
554
+ const scriptD = createRawScriptModule('d', 'script d - new');
555
+ const branchBefore = createBranchOneModule('branch1', [scriptB, scriptC], []);
556
+ const branchAfter = createBranchOneModule('branch1', [scriptB, scriptD], []);
557
+ const loopBefore = createForloopModule('loop1', [scriptA, branchBefore]);
558
+ const loopAfter = createForloopModule('loop1', [scriptAModified, branchAfter]);
559
+ const beforeFlow = createFlow([loopBefore]);
560
+ const afterFlow = createFlow([loopAfter]);
561
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
562
+ // scriptA was modified
563
+ expect(result.beforeActions['a']).toEqual({ action: 'modified', pending: false });
564
+ expect(result.afterActions['a']).toEqual({ action: 'modified', pending: false });
565
+ // scriptC was removed
566
+ expect(result.beforeActions['c']).toEqual({ action: 'removed', pending: false });
567
+ // scriptD was added
568
+ expect(result.afterActions['d']).toEqual({ action: 'added', pending: false });
569
+ // scriptB unchanged
570
+ expect(result.beforeActions['b']).toBeUndefined();
571
+ expect(result.afterActions['b']).toBeUndefined();
572
+ // Verify mergedFlow structure with correct ordering
573
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['loop1']);
574
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'loop1');
575
+ const loopModules = (mergedLoop?.value).modules;
576
+ expectModuleOrder(loopModules, ['a', 'branch1']);
577
+ // Modified scriptA should be in mergedFlow with updated content
578
+ const mergedA = loopModules.find((m) => m.id === 'a');
579
+ expect((mergedA?.value).content).toBe('script a modified');
580
+ // Branch1 should contain scriptB, removed c, and added d in correct order
581
+ const mergedBranch = loopModules.find((m) => m.id === 'branch1');
582
+ const branchDefault = (mergedBranch?.value).default;
583
+ expectModuleOrder(branchDefault, ['b', 'c', 'd']);
584
+ });
585
+ it('preserves correct structure in mergedFlow for deeply nested removals', () => {
586
+ // Remove a script from inside a loop that is inside a branch
587
+ const deepScript = createRawScriptModule('deep', 'deep script to remove');
588
+ const keepScript = createRawScriptModule('keep', 'script to keep');
589
+ const innerLoopBefore = createForloopModule('inner_loop', [deepScript, keepScript]);
590
+ const innerLoopAfter = createForloopModule('inner_loop', [keepScript]);
591
+ const branchBefore = createBranchOneModule('branch', [innerLoopBefore], []);
592
+ const branchAfter = createBranchOneModule('branch', [innerLoopAfter], []);
593
+ const beforeFlow = createFlow([branchBefore]);
594
+ const afterFlow = createFlow([branchAfter]);
595
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
596
+ // Navigate into the merged flow structure and verify correct ordering
597
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['branch']);
598
+ const mergedBranch = result.mergedFlow.modules?.find((m) => m.id === 'branch');
599
+ const branchDefault = (mergedBranch?.value).default;
600
+ expectModuleOrder(branchDefault, ['inner_loop']);
601
+ const mergedInnerLoop = branchDefault.find((m) => m.id === 'inner_loop');
602
+ const innerLoopModules = (mergedInnerLoop?.value).modules;
603
+ // Both modules should be present in the merged flow in correct order
604
+ expectModuleOrder(innerLoopModules, ['deep', 'keep']);
605
+ });
606
+ it('handles branchall inside branchone with nested changes', () => {
607
+ const scriptInParallel1 = createRawScriptModule('par1', 'parallel 1');
608
+ const scriptInParallel2 = createRawScriptModule('par2', 'parallel 2');
609
+ const scriptInParallel3 = createRawScriptModule('par3', 'parallel 3 - new');
610
+ const branchAllBefore = createBranchAllModule('parallel_section', [
611
+ { modules: [scriptInParallel1] },
612
+ { modules: [scriptInParallel2] }
613
+ ]);
614
+ const branchAllAfter = createBranchAllModule('parallel_section', [
615
+ { modules: [scriptInParallel1] },
616
+ { modules: [scriptInParallel2, scriptInParallel3] }
617
+ ]);
618
+ const branchOneBefore = createBranchOneModule('outer_branch', [branchAllBefore], [
619
+ { expr: 'x > 0', modules: [] }
620
+ ]);
621
+ const branchOneAfter = createBranchOneModule('outer_branch', [branchAllAfter], [
622
+ { expr: 'x > 0', modules: [] }
623
+ ]);
624
+ const beforeFlow = createFlow([branchOneBefore]);
625
+ const afterFlow = createFlow([branchOneAfter]);
626
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
627
+ expect(result.afterActions['par3']).toEqual({ action: 'added', pending: false });
628
+ // Other modules unchanged
629
+ expect(result.beforeActions['par1']).toBeUndefined();
630
+ expect(result.beforeActions['par2']).toBeUndefined();
631
+ // Verify full nested structure is preserved in mergedFlow with correct ordering
632
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['outer_branch']);
633
+ const mergedBranchOne = result.mergedFlow.modules?.find((m) => m.id === 'outer_branch');
634
+ expect(mergedBranchOne?.value.type).toBe('branchone');
635
+ const branchOneDefault = (mergedBranchOne?.value).default;
636
+ expectModuleOrder(branchOneDefault, ['parallel_section']);
637
+ const mergedBranchAll = branchOneDefault.find((m) => m.id === 'parallel_section');
638
+ expect(mergedBranchAll?.value.type).toBe('branchall');
639
+ const parallelBranches = (mergedBranchAll?.value).branches;
640
+ expect(parallelBranches).toHaveLength(2);
641
+ // First parallel branch has par1
642
+ expectModuleOrder(parallelBranches[0].modules, ['par1']);
643
+ // Second parallel branch has par2 and added par3 in correct order
644
+ expectModuleOrder(parallelBranches[1].modules, ['par2', 'par3']);
645
+ });
646
+ });
647
+ describe('special modules', () => {
648
+ it('detects added failure_module', () => {
649
+ const moduleA = createRawScriptModule('a', 'main step');
650
+ const failureModule = createRawScriptModule('failure', 'handle failure');
651
+ const beforeFlow = createFlowWithSpecialModules({ modules: [moduleA] });
652
+ const afterFlow = createFlowWithSpecialModules({
653
+ modules: [moduleA],
654
+ failure_module: failureModule
655
+ });
656
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
657
+ expect(result.afterActions['failure']).toEqual({ action: 'added', pending: false });
658
+ expect(result.beforeActions['failure']).toBeUndefined();
659
+ // Verify mergedFlow contains the failure_module
660
+ expect(result.mergedFlow.failure_module?.id).toBe('failure');
661
+ });
662
+ it('detects removed failure_module', () => {
663
+ const moduleA = createRawScriptModule('a', 'main step');
664
+ const failureModule = createRawScriptModule('failure', 'handle failure');
665
+ const beforeFlow = createFlowWithSpecialModules({
666
+ modules: [moduleA],
667
+ failure_module: failureModule
668
+ });
669
+ const afterFlow = createFlowWithSpecialModules({ modules: [moduleA] });
670
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
671
+ expect(result.beforeActions['failure']).toEqual({ action: 'removed', pending: false });
672
+ expect(result.afterActions['failure']).toEqual({ action: 'removed', pending: false });
673
+ // Verify mergedFlow contains the removed failure_module
674
+ expect(result.mergedFlow.failure_module?.id).toBe('failure');
675
+ });
676
+ it('detects modified failure_module', () => {
677
+ const moduleA = createRawScriptModule('a', 'main step');
678
+ const failureModuleBefore = createRawScriptModule('failure', 'handle failure v1');
679
+ const failureModuleAfter = createRawScriptModule('failure', 'handle failure v2');
680
+ const beforeFlow = createFlowWithSpecialModules({
681
+ modules: [moduleA],
682
+ failure_module: failureModuleBefore
683
+ });
684
+ const afterFlow = createFlowWithSpecialModules({
685
+ modules: [moduleA],
686
+ failure_module: failureModuleAfter
687
+ });
688
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
689
+ expect(result.beforeActions['failure']).toEqual({ action: 'modified', pending: false });
690
+ expect(result.afterActions['failure']).toEqual({ action: 'modified', pending: false });
691
+ // Verify mergedFlow contains the modified failure_module with new content
692
+ expect(result.mergedFlow.failure_module?.id).toBe('failure');
693
+ expect((result.mergedFlow.failure_module?.value).content).toBe('handle failure v2');
694
+ });
695
+ it('detects added preprocessor_module', () => {
696
+ const moduleA = createRawScriptModule('a', 'main step');
697
+ const preprocessorModule = createRawScriptModule('preprocessor', 'preprocess input');
698
+ const beforeFlow = createFlowWithSpecialModules({ modules: [moduleA] });
699
+ const afterFlow = createFlowWithSpecialModules({
700
+ modules: [moduleA],
701
+ preprocessor_module: preprocessorModule
702
+ });
703
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
704
+ expect(result.afterActions['preprocessor']).toEqual({ action: 'added', pending: false });
705
+ expect(result.beforeActions['preprocessor']).toBeUndefined();
706
+ // Verify mergedFlow contains the preprocessor_module
707
+ expect(result.mergedFlow.preprocessor_module?.id).toBe('preprocessor');
708
+ });
709
+ it('detects removed preprocessor_module', () => {
710
+ const moduleA = createRawScriptModule('a', 'main step');
711
+ const preprocessorModule = createRawScriptModule('preprocessor', 'preprocess input');
712
+ const beforeFlow = createFlowWithSpecialModules({
713
+ modules: [moduleA],
714
+ preprocessor_module: preprocessorModule
715
+ });
716
+ const afterFlow = createFlowWithSpecialModules({ modules: [moduleA] });
717
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
718
+ expect(result.beforeActions['preprocessor']).toEqual({ action: 'removed', pending: false });
719
+ expect(result.afterActions['preprocessor']).toEqual({ action: 'removed', pending: false });
720
+ // Verify mergedFlow contains the removed preprocessor_module
721
+ expect(result.mergedFlow.preprocessor_module?.id).toBe('preprocessor');
722
+ });
723
+ it('detects changes to both failure and preprocessor modules simultaneously', () => {
724
+ const moduleA = createRawScriptModule('a', 'main step');
725
+ const failureModuleBefore = createRawScriptModule('failure', 'handle failure v1');
726
+ const failureModuleAfter = createRawScriptModule('failure', 'handle failure v2');
727
+ const preprocessorModule = createRawScriptModule('preprocessor', 'preprocess input');
728
+ const beforeFlow = createFlowWithSpecialModules({
729
+ modules: [moduleA],
730
+ failure_module: failureModuleBefore,
731
+ preprocessor_module: preprocessorModule
732
+ });
733
+ const afterFlow = createFlowWithSpecialModules({
734
+ modules: [moduleA],
735
+ failure_module: failureModuleAfter
736
+ // preprocessor_module removed
737
+ });
738
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
739
+ // failure_module was modified
740
+ expect(result.beforeActions['failure']).toEqual({ action: 'modified', pending: false });
741
+ expect(result.afterActions['failure']).toEqual({ action: 'modified', pending: false });
742
+ // preprocessor_module was removed
743
+ expect(result.beforeActions['preprocessor']).toEqual({ action: 'removed', pending: false });
744
+ expect(result.afterActions['preprocessor']).toEqual({ action: 'removed', pending: false });
745
+ // Verify mergedFlow structure
746
+ expect(result.mergedFlow.failure_module?.id).toBe('failure');
747
+ expect(result.mergedFlow.preprocessor_module?.id).toBe('preprocessor');
748
+ });
749
+ });
750
+ describe('branchall entire branch removal', () => {
751
+ it('detects removal of entire parallel branch from branchall', () => {
752
+ const parallel1A = createRawScriptModule('p1_a', 'parallel 1 a');
753
+ const parallel1B = createRawScriptModule('p1_b', 'parallel 1 b');
754
+ const parallel2A = createRawScriptModule('p2_a', 'parallel 2 a');
755
+ const beforeBranchAll = createBranchAllModule('branchall1', [
756
+ { modules: [parallel1A, parallel1B] },
757
+ { modules: [parallel2A] } // entire branch removed
758
+ ]);
759
+ const afterBranchAll = createBranchAllModule('branchall1', [
760
+ { modules: [parallel1A, parallel1B] }
761
+ ]);
762
+ const beforeFlow = createFlow([beforeBranchAll]);
763
+ const afterFlow = createFlow([afterBranchAll]);
764
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
765
+ // Module from removed branch should be marked as removed
766
+ expect(result.beforeActions['p2_a']).toEqual({ action: 'removed', pending: false });
767
+ expect(result.afterActions['p2_a']).toEqual({ action: 'removed', pending: false });
768
+ // Modules from preserved branch should be unchanged
769
+ expect(result.beforeActions['p1_a']).toBeUndefined();
770
+ expect(result.beforeActions['p1_b']).toBeUndefined();
771
+ // Verify mergedFlow structure - should have 2 branches with removed modules restored
772
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['branchall1']);
773
+ const mergedBranchAll = result.mergedFlow.modules?.find((m) => m.id === 'branchall1');
774
+ const branches = (mergedBranchAll?.value).branches;
775
+ // First branch unchanged
776
+ expectModuleOrder(branches[0].modules, ['p1_a', 'p1_b']);
777
+ // Second branch should be restored with its module
778
+ expect(branches).toHaveLength(2);
779
+ expectModuleOrder(branches[1].modules, ['p2_a']);
780
+ });
781
+ it('detects removal of multiple parallel branches from branchall', () => {
782
+ const p1_a = createRawScriptModule('p1_a', 'parallel 1');
783
+ const p2_a = createRawScriptModule('p2_a', 'parallel 2');
784
+ const p3_a = createRawScriptModule('p3_a', 'parallel 3');
785
+ const beforeBranchAll = createBranchAllModule('branchall1', [
786
+ { modules: [p1_a] },
787
+ { modules: [p2_a] }, // removed
788
+ { modules: [p3_a] } // removed
789
+ ]);
790
+ const afterBranchAll = createBranchAllModule('branchall1', [{ modules: [p1_a] }]);
791
+ const beforeFlow = createFlow([beforeBranchAll]);
792
+ const afterFlow = createFlow([afterBranchAll]);
793
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
794
+ // Modules from removed branches should be marked as removed
795
+ expect(result.beforeActions['p2_a']).toEqual({ action: 'removed', pending: false });
796
+ expect(result.beforeActions['p3_a']).toEqual({ action: 'removed', pending: false });
797
+ // Verify mergedFlow structure - should have 3 branches restored
798
+ const mergedBranchAll = result.mergedFlow.modules?.find((m) => m.id === 'branchall1');
799
+ const branches = (mergedBranchAll?.value).branches;
800
+ expect(branches).toHaveLength(3);
801
+ expectModuleOrder(branches[0].modules, ['p1_a']);
802
+ expectModuleOrder(branches[1].modules, ['p2_a']);
803
+ expectModuleOrder(branches[2].modules, ['p3_a']);
804
+ });
805
+ });
806
+ describe('hasInputSchemaChanged', () => {
807
+ it('returns false for identical schemas', () => {
808
+ const schema = {
809
+ type: 'object',
810
+ properties: {
811
+ name: { type: 'string' },
812
+ age: { type: 'number' }
813
+ }
814
+ };
815
+ const beforeFlow = { schema };
816
+ const afterFlow = { schema: JSON.parse(JSON.stringify(schema)) };
817
+ expect(hasInputSchemaChanged(beforeFlow, afterFlow)).toBe(false);
818
+ });
819
+ it('returns true for different schemas', () => {
820
+ const beforeFlow = {
821
+ schema: {
822
+ type: 'object',
823
+ properties: {
824
+ name: { type: 'string' }
825
+ }
826
+ }
827
+ };
828
+ const afterFlow = {
829
+ schema: {
830
+ type: 'object',
831
+ properties: {
832
+ name: { type: 'string' },
833
+ email: { type: 'string' }
834
+ }
835
+ }
836
+ };
837
+ expect(hasInputSchemaChanged(beforeFlow, afterFlow)).toBe(true);
838
+ });
839
+ it('returns false for undefined flows', () => {
840
+ expect(hasInputSchemaChanged(undefined, undefined)).toBe(false);
841
+ expect(hasInputSchemaChanged(undefined, { schema: {} })).toBe(false);
842
+ expect(hasInputSchemaChanged({ schema: {} }, undefined)).toBe(false);
843
+ });
844
+ it('returns true when schema is added', () => {
845
+ const beforeFlow = {};
846
+ const afterFlow = { schema: { type: 'object' } };
847
+ expect(hasInputSchemaChanged(beforeFlow, afterFlow)).toBe(true);
848
+ });
849
+ it('returns true when schema is removed', () => {
850
+ const beforeFlow = { schema: { type: 'object' } };
851
+ const afterFlow = {};
852
+ expect(hasInputSchemaChanged(beforeFlow, afterFlow)).toBe(true);
853
+ });
854
+ it('returns false for both empty schemas', () => {
855
+ const beforeFlow = { schema: {} };
856
+ const afterFlow = { schema: {} };
857
+ expect(hasInputSchemaChanged(beforeFlow, afterFlow)).toBe(false);
858
+ });
859
+ });
860
+ describe('multiple removed modules ordering', () => {
861
+ it('restores multiple removed modules in correct order', () => {
862
+ const moduleA = createRawScriptModule('a', 'first');
863
+ const moduleB = createRawScriptModule('b', 'second');
864
+ const moduleC = createRawScriptModule('c', 'third');
865
+ const moduleD = createRawScriptModule('d', 'fourth');
866
+ const moduleE = createRawScriptModule('e', 'fifth');
867
+ // Remove modules at beginning, middle, and end
868
+ const beforeFlow = createFlow([moduleA, moduleB, moduleC, moduleD, moduleE]);
869
+ const afterFlow = createFlow([moduleB, moduleD]); // Remove a, c, e
870
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
871
+ // All removed modules should be marked as removed
872
+ expect(result.beforeActions['a']).toEqual({ action: 'removed', pending: false });
873
+ expect(result.beforeActions['c']).toEqual({ action: 'removed', pending: false });
874
+ expect(result.beforeActions['e']).toEqual({ action: 'removed', pending: false });
875
+ // Verify mergedFlow restores all modules in the original order
876
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['a', 'b', 'c', 'd', 'e']);
877
+ });
878
+ it('restores multiple removed modules inside a loop in correct order', () => {
879
+ const innerA = createRawScriptModule('inner_a', 'first');
880
+ const innerB = createRawScriptModule('inner_b', 'second');
881
+ const innerC = createRawScriptModule('inner_c', 'third');
882
+ const innerD = createRawScriptModule('inner_d', 'fourth');
883
+ const beforeLoop = createForloopModule('loop1', [innerA, innerB, innerC, innerD]);
884
+ const afterLoop = createForloopModule('loop1', [innerB]); // Remove a, c, d
885
+ const beforeFlow = createFlow([beforeLoop]);
886
+ const afterFlow = createFlow([afterLoop]);
887
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
888
+ // All removed modules should be marked as removed
889
+ expect(result.beforeActions['inner_a']).toEqual({ action: 'removed', pending: false });
890
+ expect(result.beforeActions['inner_c']).toEqual({ action: 'removed', pending: false });
891
+ expect(result.beforeActions['inner_d']).toEqual({ action: 'removed', pending: false });
892
+ // Verify mergedFlow restores all modules in the original order inside the loop
893
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'loop1');
894
+ const loopModules = (mergedLoop?.value).modules;
895
+ expectModuleOrder(loopModules, ['inner_a', 'inner_b', 'inner_c', 'inner_d']);
896
+ });
897
+ });
898
+ describe('insert position tests', () => {
899
+ it('handles module added at beginning of list', () => {
900
+ const moduleA = createRawScriptModule('a', 'existing first');
901
+ const moduleB = createRawScriptModule('b', 'existing second');
902
+ const moduleNew = createRawScriptModule('new', 'new at beginning');
903
+ const beforeFlow = createFlow([moduleA, moduleB]);
904
+ const afterFlow = createFlow([moduleNew, moduleA, moduleB]);
905
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
906
+ expect(result.afterActions['new']).toEqual({ action: 'added', pending: false });
907
+ // Verify mergedFlow maintains correct order with new module at beginning
908
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['new', 'a', 'b']);
909
+ });
910
+ it('handles module added in middle of list', () => {
911
+ const moduleA = createRawScriptModule('a', 'first');
912
+ const moduleB = createRawScriptModule('b', 'second');
913
+ const moduleC = createRawScriptModule('c', 'third');
914
+ const moduleNew = createRawScriptModule('new', 'new in middle');
915
+ const beforeFlow = createFlow([moduleA, moduleB, moduleC]);
916
+ const afterFlow = createFlow([moduleA, moduleNew, moduleB, moduleC]);
917
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
918
+ expect(result.afterActions['new']).toEqual({ action: 'added', pending: false });
919
+ // Verify mergedFlow maintains correct order with new module in middle
920
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['a', 'new', 'b', 'c']);
921
+ });
922
+ it('handles module added at beginning inside a loop', () => {
923
+ const innerA = createRawScriptModule('inner_a', 'existing first');
924
+ const innerB = createRawScriptModule('inner_b', 'existing second');
925
+ const innerNew = createRawScriptModule('inner_new', 'new at beginning');
926
+ const beforeLoop = createForloopModule('loop1', [innerA, innerB]);
927
+ const afterLoop = createForloopModule('loop1', [innerNew, innerA, innerB]);
928
+ const beforeFlow = createFlow([beforeLoop]);
929
+ const afterFlow = createFlow([afterLoop]);
930
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
931
+ expect(result.afterActions['inner_new']).toEqual({ action: 'added', pending: false });
932
+ // Verify correct order inside the loop
933
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'loop1');
934
+ const loopModules = (mergedLoop?.value).modules;
935
+ expectModuleOrder(loopModules, ['inner_new', 'inner_a', 'inner_b']);
936
+ });
937
+ it('handles multiple modules added at different positions', () => {
938
+ const moduleA = createRawScriptModule('a', 'original a');
939
+ const moduleB = createRawScriptModule('b', 'original b');
940
+ const moduleNew1 = createRawScriptModule('new1', 'new at start');
941
+ const moduleNew2 = createRawScriptModule('new2', 'new in middle');
942
+ const moduleNew3 = createRawScriptModule('new3', 'new at end');
943
+ const beforeFlow = createFlow([moduleA, moduleB]);
944
+ const afterFlow = createFlow([moduleNew1, moduleA, moduleNew2, moduleB, moduleNew3]);
945
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
946
+ expect(result.afterActions['new1']).toEqual({ action: 'added', pending: false });
947
+ expect(result.afterActions['new2']).toEqual({ action: 'added', pending: false });
948
+ expect(result.afterActions['new3']).toEqual({ action: 'added', pending: false });
949
+ // Verify mergedFlow maintains correct order
950
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['new1', 'a', 'new2', 'b', 'new3']);
951
+ });
952
+ });
953
+ describe('empty containers', () => {
954
+ it('handles adding empty forloop', () => {
955
+ const moduleA = createRawScriptModule('a', 'step a');
956
+ const emptyLoop = createForloopModule('empty_loop', []);
957
+ const beforeFlow = createFlow([moduleA]);
958
+ const afterFlow = createFlow([moduleA, emptyLoop]);
959
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
960
+ expect(result.afterActions['empty_loop']).toEqual({ action: 'added', pending: false });
961
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['a', 'empty_loop']);
962
+ // Verify the empty loop has no modules
963
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'empty_loop');
964
+ expect((mergedLoop?.value).modules).toHaveLength(0);
965
+ });
966
+ it('handles removing empty forloop', () => {
967
+ const moduleA = createRawScriptModule('a', 'step a');
968
+ const emptyLoop = createForloopModule('empty_loop', []);
969
+ const beforeFlow = createFlow([moduleA, emptyLoop]);
970
+ const afterFlow = createFlow([moduleA]);
971
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
972
+ expect(result.beforeActions['empty_loop']).toEqual({ action: 'removed', pending: false });
973
+ expect(result.afterActions['empty_loop']).toEqual({ action: 'removed', pending: false });
974
+ // Verify the removed empty loop is in mergedFlow
975
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['a', 'empty_loop']);
976
+ });
977
+ it('handles adding empty branchone', () => {
978
+ const moduleA = createRawScriptModule('a', 'step a');
979
+ const emptyBranch = createBranchOneModule('empty_branch', [], []);
980
+ const beforeFlow = createFlow([moduleA]);
981
+ const afterFlow = createFlow([moduleA, emptyBranch]);
982
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
983
+ expect(result.afterActions['empty_branch']).toEqual({ action: 'added', pending: false });
984
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['a', 'empty_branch']);
985
+ // Verify the empty branch has no modules in default or branches
986
+ const mergedBranch = result.mergedFlow.modules?.find((m) => m.id === 'empty_branch');
987
+ expect((mergedBranch?.value).default).toHaveLength(0);
988
+ expect((mergedBranch?.value).branches).toHaveLength(0);
989
+ });
990
+ it('handles removing empty branchone with empty default and branches', () => {
991
+ const moduleA = createRawScriptModule('a', 'step a');
992
+ const emptyBranch = createBranchOneModule('empty_branch', [], [{ expr: 'true', modules: [] }]);
993
+ const beforeFlow = createFlow([moduleA, emptyBranch]);
994
+ const afterFlow = createFlow([moduleA]);
995
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
996
+ expect(result.beforeActions['empty_branch']).toEqual({ action: 'removed', pending: false });
997
+ expect(result.afterActions['empty_branch']).toEqual({ action: 'removed', pending: false });
998
+ // Verify the removed empty branch is in mergedFlow with its structure
999
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['a', 'empty_branch']);
1000
+ const mergedBranch = result.mergedFlow.modules?.find((m) => m.id === 'empty_branch');
1001
+ expect((mergedBranch?.value).default).toHaveLength(0);
1002
+ expect((mergedBranch?.value).branches).toHaveLength(1);
1003
+ });
1004
+ });
1005
+ describe('container type changes', () => {
1006
+ it('treats forloop to whileloop change as removed + added', () => {
1007
+ const innerModule = createRawScriptModule('inner', 'inner step');
1008
+ const forLoop = createForloopModule('loop1', [innerModule]);
1009
+ const whileLoop = createWhileloopModule('loop1', [innerModule]);
1010
+ const beforeFlow = createFlow([forLoop]);
1011
+ const afterFlow = createFlow([whileLoop]);
1012
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
1013
+ // The container itself should be treated as removed + added (type changed)
1014
+ expect(result.beforeActions['loop1']).toEqual({ action: 'removed', pending: false });
1015
+ expect(result.afterActions['loop1']).toEqual({ action: 'added', pending: false });
1016
+ // Inner module's location type changes (forloop -> whileloop), so it's also treated as moved
1017
+ expect(result.beforeActions['inner']).toEqual({ action: 'removed', pending: false });
1018
+ expect(result.afterActions['inner']).toEqual({ action: 'added', pending: false });
1019
+ // The old inner module should appear with prefix in the merged flow
1020
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'loop1');
1021
+ expect(mergedLoop).toBeDefined();
1022
+ const loopModules = (mergedLoop?.value).modules;
1023
+ // The whileloop contains 'inner' (new) and the old one gets prefixed
1024
+ expect(loopModules.some((m) => m.id === 'inner')).toBe(true);
1025
+ });
1026
+ it('treats branchone to branchall change as removed + added', () => {
1027
+ const innerModule = createRawScriptModule('inner', 'inner step');
1028
+ const branchOne = createBranchOneModule('branch1', [innerModule], []);
1029
+ const branchAll = createBranchAllModule('branch1', [{ modules: [innerModule] }]);
1030
+ const beforeFlow = createFlow([branchOne]);
1031
+ const afterFlow = createFlow([branchAll]);
1032
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
1033
+ // The container itself should be treated as removed + added (type changed)
1034
+ expect(result.beforeActions['branch1']).toEqual({ action: 'removed', pending: false });
1035
+ expect(result.afterActions['branch1']).toEqual({ action: 'added', pending: false });
1036
+ // Inner module's location type changes (branchone-default -> branchall-branch), so it's also treated as moved
1037
+ expect(result.beforeActions['inner']).toEqual({ action: 'removed', pending: false });
1038
+ expect(result.afterActions['inner']).toEqual({ action: 'added', pending: false });
1039
+ // The new inner module should appear in the branchall
1040
+ const mergedBranch = result.mergedFlow.modules?.find((m) => m.id === 'branch1');
1041
+ expect(mergedBranch).toBeDefined();
1042
+ const branchModules = (mergedBranch?.value).branches[0].modules;
1043
+ expect(branchModules.some((m) => m.id === 'inner')).toBe(true);
1044
+ });
1045
+ });
1046
+ describe('module movement', () => {
1047
+ it('detects module moved from root to inside a loop', () => {
1048
+ const moduleA = createRawScriptModule('a', 'step a');
1049
+ const moduleB = createRawScriptModule('b', 'step b');
1050
+ const emptyLoop = createForloopModule('loop1', []);
1051
+ const loopWithB = createForloopModule('loop1', [moduleB]);
1052
+ // Before: a, b, loop1(empty)
1053
+ // After: a, loop1(b)
1054
+ const beforeFlow = createFlow([moduleA, moduleB, emptyLoop]);
1055
+ const afterFlow = createFlow([moduleA, loopWithB]);
1056
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
1057
+ // Module b is in both flows but at different locations
1058
+ // The implementation doesn't track "movement" - it sees b in both places
1059
+ // The loop itself is modified because its modules changed
1060
+ expect(result.beforeActions['loop1']).toEqual({ action: 'modified', pending: false });
1061
+ expect(result.afterActions['loop1']).toEqual({ action: 'modified', pending: false });
1062
+ // b is removed from root and added inside loop - implementation sees it as existing in both
1063
+ // but since it's the same module ID, no action is recorded
1064
+ // The mergedFlow should contain both the old position (at root) and the new position (in loop)
1065
+ // This is handled by the duplicate ID logic - old__b prefix
1066
+ const rootModuleIds = result.mergedFlow.modules?.map((m) => m.id) ?? [];
1067
+ expect(rootModuleIds).toContain('a');
1068
+ expect(rootModuleIds).toContain('loop1');
1069
+ // The old 'b' at root level gets prefixed with 'old__'
1070
+ expect(rootModuleIds).toContain('old__b');
1071
+ });
1072
+ it('detects module moved from one branch to another', () => {
1073
+ const moduleA = createRawScriptModule('a', 'step a');
1074
+ // Before: branch with 'a' in first conditional branch
1075
+ const beforeBranch = createBranchOneModule('branch1', [], [
1076
+ { expr: 'x > 0', modules: [moduleA] },
1077
+ { expr: 'x < 0', modules: [] }
1078
+ ]);
1079
+ // After: branch with 'a' in second conditional branch
1080
+ const afterBranch = createBranchOneModule('branch1', [], [
1081
+ { expr: 'x > 0', modules: [] },
1082
+ { expr: 'x < 0', modules: [moduleA] }
1083
+ ]);
1084
+ const beforeFlow = createFlow([beforeBranch]);
1085
+ const afterFlow = createFlow([afterBranch]);
1086
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
1087
+ // The branch container is modified
1088
+ expect(result.beforeActions['branch1']).toEqual({ action: 'modified', pending: false });
1089
+ expect(result.afterActions['branch1']).toEqual({ action: 'modified', pending: false });
1090
+ // Module 'a' moved from branchIndex 0 to branchIndex 1, so it's treated as removed + added
1091
+ expect(result.beforeActions['a']).toEqual({ action: 'removed', pending: false });
1092
+ expect(result.afterActions['a']).toEqual({ action: 'added', pending: false });
1093
+ // The old 'a' should appear with prefix in the first branch of mergedFlow
1094
+ const mergedBranch = result.mergedFlow.modules?.find((m) => m.id === 'branch1');
1095
+ expect(mergedBranch).toBeDefined();
1096
+ const firstBranchModules = (mergedBranch?.value).branches[0].modules;
1097
+ expect(firstBranchModules.some((m) => m.id === 'old__a')).toBe(true);
1098
+ // The new 'a' should appear in the second branch
1099
+ const secondBranchModules = (mergedBranch?.value).branches[1].modules;
1100
+ expect(secondBranchModules.some((m) => m.id === 'a')).toBe(true);
1101
+ });
1102
+ it('detects module moved from loop to root', () => {
1103
+ const moduleA = createRawScriptModule('a', 'step a');
1104
+ const moduleB = createRawScriptModule('b', 'step b');
1105
+ const loopWithA = createForloopModule('loop1', [moduleA]);
1106
+ const emptyLoop = createForloopModule('loop1', []);
1107
+ // Before: b, loop1(a)
1108
+ // After: b, loop1(empty), a
1109
+ const beforeFlow = createFlow([moduleB, loopWithA]);
1110
+ const afterFlow = createFlow([moduleB, emptyLoop, moduleA]);
1111
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
1112
+ // The loop is modified because its modules changed
1113
+ expect(result.beforeActions['loop1']).toEqual({ action: 'modified', pending: false });
1114
+ expect(result.afterActions['loop1']).toEqual({ action: 'modified', pending: false });
1115
+ // Module 'a' exists in both flows, so no action recorded for it
1116
+ // The mergedFlow should contain the old 'a' inside the loop (prefixed) and new 'a' at root
1117
+ const rootModuleIds = result.mergedFlow.modules?.map((m) => m.id) ?? [];
1118
+ expect(rootModuleIds).toContain('b');
1119
+ expect(rootModuleIds).toContain('loop1');
1120
+ expect(rootModuleIds).toContain('a');
1121
+ // The old 'a' inside the loop gets prefixed
1122
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'loop1');
1123
+ const loopModuleIds = (mergedLoop?.value).modules.map((m) => m.id);
1124
+ expect(loopModuleIds).toContain('old__a');
1125
+ });
1126
+ });
1127
+ describe('module reordering', () => {
1128
+ it('detects modules reordered at root level', () => {
1129
+ const moduleA = createRawScriptModule('a', 'step a');
1130
+ const moduleB = createRawScriptModule('b', 'step b');
1131
+ const moduleC = createRawScriptModule('c', 'step c');
1132
+ // Before: a, b, c
1133
+ // After: c, a, b
1134
+ const beforeFlow = createFlow([moduleA, moduleB, moduleC]);
1135
+ const afterFlow = createFlow([moduleC, moduleA, moduleB]);
1136
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
1137
+ // No modules were added, removed, or modified - just reordered
1138
+ // The implementation doesn't detect reordering as a change
1139
+ expect(result.beforeActions['a']).toBeUndefined();
1140
+ expect(result.beforeActions['b']).toBeUndefined();
1141
+ expect(result.beforeActions['c']).toBeUndefined();
1142
+ expect(result.afterActions['a']).toBeUndefined();
1143
+ expect(result.afterActions['b']).toBeUndefined();
1144
+ expect(result.afterActions['c']).toBeUndefined();
1145
+ // mergedFlow should reflect the afterFlow order
1146
+ expectModuleOrder(result.mergedFlow.modules ?? [], ['c', 'a', 'b']);
1147
+ });
1148
+ it('detects modules reordered inside a loop', () => {
1149
+ const innerA = createRawScriptModule('inner_a', 'inner a');
1150
+ const innerB = createRawScriptModule('inner_b', 'inner b');
1151
+ const innerC = createRawScriptModule('inner_c', 'inner c');
1152
+ // Before: loop with [a, b, c]
1153
+ // After: loop with [c, b, a]
1154
+ const beforeLoop = createForloopModule('loop1', [innerA, innerB, innerC]);
1155
+ const afterLoop = createForloopModule('loop1', [innerC, innerB, innerA]);
1156
+ const beforeFlow = createFlow([beforeLoop]);
1157
+ const afterFlow = createFlow([afterLoop]);
1158
+ const result = buildFlowTimeline(beforeFlow, afterFlow);
1159
+ // The loop is modified because its internal structure changed
1160
+ // (deepEqual compares the modules array which includes order)
1161
+ expect(result.beforeActions['loop1']).toEqual({ action: 'modified', pending: false });
1162
+ expect(result.afterActions['loop1']).toEqual({ action: 'modified', pending: false });
1163
+ // Individual modules are not marked as changed
1164
+ expect(result.beforeActions['inner_a']).toBeUndefined();
1165
+ expect(result.beforeActions['inner_b']).toBeUndefined();
1166
+ expect(result.beforeActions['inner_c']).toBeUndefined();
1167
+ // mergedFlow should reflect the afterFlow order inside the loop
1168
+ const mergedLoop = result.mergedFlow.modules?.find((m) => m.id === 'loop1');
1169
+ const loopModules = (mergedLoop?.value).modules;
1170
+ expectModuleOrder(loopModules, ['inner_c', 'inner_b', 'inner_a']);
1171
+ });
1172
+ });
1173
+ });