windmill-components 1.677.1 → 1.695.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 (552) hide show
  1. package/package/components/AppConnectInner.svelte +6 -0
  2. package/package/components/ArgInput.svelte +2 -0
  3. package/package/components/AutoscalingConfigEditor.svelte +18 -4
  4. package/package/components/CiTestResults.svelte +64 -0
  5. package/package/components/CiTestResults.svelte.d.ts +7 -0
  6. package/package/components/CompareWorkspaces.svelte +741 -484
  7. package/package/components/DBManager.svelte +35 -4
  8. package/package/components/DBManager.svelte.d.ts +2 -0
  9. package/package/components/DBManagerContent.svelte +3 -1
  10. package/package/components/DBManagerContent.svelte.d.ts +3 -0
  11. package/package/components/DBManagerDrawer.svelte +145 -3
  12. package/package/components/DBTableEditor.svelte +14 -4
  13. package/package/components/DatatablePicker.svelte +2 -5
  14. package/package/components/DatatableSchemaDiff.svelte +531 -0
  15. package/package/components/DatatableSchemaDiff.svelte.d.ts +29 -0
  16. package/package/components/DedicatedWorkersSelector.svelte +4 -2
  17. package/package/components/DefaultTagsInner.svelte +42 -2
  18. package/package/components/DeployWorkspaceDrawer.svelte +1 -1
  19. package/package/components/Dev.svelte +407 -74
  20. package/package/components/EditableSchemaForm.svelte +4 -0
  21. package/package/components/Editor.svelte +1 -1
  22. package/package/components/EditorBar.svelte +1 -1
  23. package/package/components/EditorBar.svelte.d.ts +1 -1
  24. package/package/components/ErrorOrRecoveryHandler.svelte +2 -2
  25. package/package/components/FlowPreviewContent.svelte +32 -30
  26. package/package/components/FlowRestartButton.svelte +143 -61
  27. package/package/components/FlowRestartButton.svelte.d.ts +37 -0
  28. package/package/components/FlowStatusViewer.svelte +15 -1
  29. package/package/components/FlowStatusViewer.svelte.d.ts +10 -2
  30. package/package/components/FlowStatusViewerInner.svelte +270 -222
  31. package/package/components/FlowStatusViewerInner.svelte.d.ts +6 -2
  32. package/package/components/FlowTimeline.svelte +1 -1
  33. package/package/components/FolderEditor.svelte +189 -4
  34. package/package/components/ForkConflictModal.svelte +57 -0
  35. package/package/components/ForkConflictModal.svelte.d.ts +3 -0
  36. package/package/components/ForkWorkspaceBanner.svelte +82 -11
  37. package/package/components/GitRepoViewer.svelte +251 -97
  38. package/package/components/GlobalUserOffboardingModal.svelte +293 -0
  39. package/package/components/GlobalUserOffboardingModal.svelte.d.ts +10 -0
  40. package/package/components/InputTransformSchemaForm.svelte +1 -1
  41. package/package/components/InstanceSettings.svelte +58 -19
  42. package/package/components/Login.svelte +133 -36
  43. package/package/components/Login.svelte.d.ts +1 -0
  44. package/package/components/ModuleTest.svelte +2 -1
  45. package/package/components/NoMainFuncBadge.svelte +1 -1
  46. package/package/components/OffboardItemsBox.svelte +56 -0
  47. package/package/components/OffboardItemsBox.svelte.d.ts +12 -0
  48. package/package/components/OffboardReassignControls.svelte +47 -0
  49. package/package/components/OffboardReassignControls.svelte.d.ts +20 -0
  50. package/package/components/OffboardWorkspaceSection.svelte +110 -0
  51. package/package/components/OffboardWorkspaceSection.svelte.d.ts +24 -0
  52. package/package/components/OnBehalfOfSelector.svelte +21 -3
  53. package/package/components/OnBehalfOfSelector.svelte.d.ts +7 -0
  54. package/package/components/Path.svelte +7 -1
  55. package/package/components/Path.svelte.d.ts +1 -1
  56. package/package/components/QueueAlerts.svelte +10 -10
  57. package/package/components/ResourcePicker.svelte +2 -2
  58. package/package/components/RunsPage.svelte +2 -1
  59. package/package/components/S3FilePickerInner.svelte +89 -89
  60. package/package/components/ScriptBuilder.svelte +52 -11
  61. package/package/components/ScriptEditor.svelte +19 -8
  62. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  63. package/package/components/ShareModal.svelte +236 -98
  64. package/package/components/ShareModal.svelte.d.ts +1 -1
  65. package/package/components/SuperadminSettingsInner.svelte +362 -315
  66. package/package/components/UserOffboardingModal.svelte +238 -0
  67. package/package/components/UserOffboardingModal.svelte.d.ts +10 -0
  68. package/package/components/WorkspaceDeployLayout.svelte +3 -3
  69. package/package/components/WorkspaceDeployLayout.svelte.d.ts +1 -0
  70. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -0
  71. package/package/components/apps/components/helpers/executeRunnable.js +2 -1
  72. package/package/components/apps/editor/AppReportsDrawerInner.svelte +1 -1
  73. package/package/components/apps/editor/appPolicy.js +2 -1
  74. package/package/components/apps/editor/commonAppUtils.d.ts +3 -0
  75. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -1
  76. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +7 -0
  77. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +4 -2
  78. package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte +49 -0
  79. package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte.d.ts +9 -0
  80. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -0
  81. package/package/components/apps/inputType.d.ts +1 -0
  82. package/package/components/apps/sharedTypes.d.ts +1 -0
  83. package/package/components/assets/AssetsDropdownButton.svelte +1 -1
  84. package/package/components/auditLogs/AuditLogsFilters.svelte +8 -3
  85. package/package/components/common/confirmationModal/ConfirmationModal.svelte +1 -1
  86. package/package/components/common/fileUpload/S3ArgInput.svelte +12 -10
  87. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +2 -0
  88. package/package/components/common/table/AppRow.svelte +3 -3
  89. package/package/components/common/table/FlowRow.svelte +3 -3
  90. package/package/components/common/table/RawAppRow.svelte +4 -4
  91. package/package/components/common/table/Row.svelte +6 -2
  92. package/package/components/common/table/ScriptRow.svelte +11 -3
  93. package/package/components/copilot/chat/AIChatDisplay.svelte +5 -36
  94. package/package/components/copilot/chat/AIChatInput.svelte +56 -47
  95. package/package/components/copilot/chat/AIChatManager.svelte.js +50 -48
  96. package/package/components/copilot/chat/ContextElementBadge.svelte +6 -4
  97. package/package/components/copilot/chat/anthropic.d.ts +7 -1
  98. package/package/components/copilot/chat/anthropic.js +5 -2
  99. package/package/components/copilot/chat/app/core.d.ts +12 -20
  100. package/package/components/copilot/chat/app/core.js +230 -159
  101. package/package/components/copilot/chat/app/core.test.js +417 -0
  102. package/package/components/copilot/chat/chatLoop.d.ts +3 -0
  103. package/package/components/copilot/chat/chatLoop.js +13 -5
  104. package/package/components/copilot/chat/context.js +44 -0
  105. package/package/components/copilot/chat/flow/FlowAIChat.svelte +57 -76
  106. package/package/components/copilot/chat/flow/core.d.ts +14 -3
  107. package/package/components/copilot/chat/flow/core.js +494 -116
  108. package/package/components/copilot/chat/flow/helperUtils.d.ts +22 -0
  109. package/package/components/copilot/chat/flow/helperUtils.js +100 -0
  110. package/package/components/copilot/chat/flow/helperUtils.test.js +231 -0
  111. package/package/components/copilot/chat/flow/inlineScriptsUtils.d.ts +5 -24
  112. package/package/components/copilot/chat/flow/inlineScriptsUtils.js +30 -55
  113. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  114. package/package/components/copilot/chat/flow/openFlowZod.gen.js +24 -0
  115. package/package/components/copilot/chat/flow/utils.test.js +59 -0
  116. package/package/components/copilot/chat/openai-responses.d.ts +7 -1
  117. package/package/components/copilot/chat/openai-responses.js +5 -2
  118. package/package/components/copilot/chat/script/core.js +3 -0
  119. package/package/components/copilot/chat/shared.d.ts +7 -2
  120. package/package/components/copilot/chat/shared.js +116 -53
  121. package/package/components/copilot/chat/shared.test.d.ts +1 -0
  122. package/package/components/copilot/chat/shared.test.js +412 -0
  123. package/package/components/copilot/chat/tokenUsage.d.ts +23 -0
  124. package/package/components/copilot/chat/tokenUsage.js +42 -0
  125. package/package/components/copilot/chat/workspaceTools.d.ts +7 -0
  126. package/package/components/copilot/chat/workspaceTools.js +239 -0
  127. package/package/components/copilot/chat/workspaceToolsZod.gen.d.ts +1295 -0
  128. package/package/components/copilot/chat/workspaceToolsZod.gen.js +424 -0
  129. package/package/components/copilot/lib.d.ts +5 -1
  130. package/package/components/copilot/lib.js +24 -6
  131. package/package/components/copilot/lib.test.d.ts +1 -0
  132. package/package/components/copilot/lib.test.js +19 -0
  133. package/package/components/copilot/modelConfig.d.ts +3 -0
  134. package/package/components/copilot/modelConfig.js +10 -0
  135. package/package/components/deploymentRequest/DeploymentRequestPanel.svelte +337 -0
  136. package/package/components/deploymentRequest/DeploymentRequestPanel.svelte.d.ts +15 -0
  137. package/package/components/details/CopyableCodeBlock.svelte +18 -8
  138. package/package/components/details/CopyableCodeBlock.svelte.d.ts +1 -0
  139. package/package/components/flows/FlowAssetsHandler.svelte +19 -21
  140. package/package/components/flows/FlowProgressBar.svelte +5 -2
  141. package/package/components/flows/agentToolTree.d.ts +17 -0
  142. package/package/components/flows/agentToolTree.js +114 -0
  143. package/package/components/flows/agentToolTree.test.d.ts +1 -0
  144. package/package/components/flows/agentToolTree.test.js +86 -0
  145. package/package/components/flows/agentToolUtils.d.ts +0 -5
  146. package/package/components/flows/agentToolUtils.js +0 -49
  147. package/package/components/flows/content/FlowLoop.svelte +7 -4
  148. package/package/components/flows/content/FlowModuleComponent.svelte +636 -599
  149. package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +15 -7
  150. package/package/components/flows/content/FlowSettings.svelte +29 -0
  151. package/package/components/flows/conversations/FlowChatManager.svelte.js +21 -10
  152. package/package/components/flows/dfs.d.ts +6 -2
  153. package/package/components/flows/dfs.js +19 -11
  154. package/package/components/flows/flowDeleteController.d.ts +32 -0
  155. package/package/components/flows/flowDeleteController.js +54 -0
  156. package/package/components/flows/flowDeleteController.test.d.ts +1 -0
  157. package/package/components/flows/flowDeleteController.test.js +121 -0
  158. package/package/components/flows/flowDeleteUtils.d.ts +48 -0
  159. package/package/components/flows/flowDeleteUtils.js +150 -0
  160. package/package/components/flows/flowDeleteUtils.test.d.ts +1 -0
  161. package/package/components/flows/flowDeleteUtils.test.js +131 -0
  162. package/package/components/flows/flowDiff.d.ts +2 -47
  163. package/package/components/flows/flowDiff.js +16 -293
  164. package/package/components/flows/flowDiff.testUtils.d.ts +8 -0
  165. package/package/components/flows/flowDiff.testUtils.js +26 -0
  166. package/package/components/flows/flowDiffManager.svelte.js +20 -75
  167. package/package/components/flows/flowDiffManager.svelte.test.js +103 -2
  168. package/package/components/flows/flowExplorer.d.ts +4 -0
  169. package/package/components/flows/flowExplorer.js +7 -30
  170. package/package/components/flows/flowState.d.ts +1 -0
  171. package/package/components/flows/flowStateUtils.svelte.js +11 -2
  172. package/package/components/flows/flowTree.d.ts +91 -0
  173. package/package/components/flows/flowTree.js +326 -0
  174. package/package/components/flows/flowTree.test.d.ts +1 -0
  175. package/package/components/flows/flowTree.test.js +236 -0
  176. package/package/components/flows/map/FlowJobsMenu.svelte +36 -30
  177. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
  178. package/package/components/flows/map/FlowModuleSchemaMap.svelte +73 -229
  179. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -2
  180. package/package/components/flows/pickers/PickHubScriptQuick.svelte +2 -2
  181. package/package/components/flows/previousResults.js +13 -41
  182. package/package/components/flows/previousResults.test.d.ts +1 -0
  183. package/package/components/flows/previousResults.test.js +65 -0
  184. package/package/components/flows/propPicker/OutputPicker.svelte +2 -1
  185. package/package/components/flows/propPicker/OutputPickerInner.svelte +41 -4
  186. package/package/components/flows/propPicker/StepHistory.svelte +9 -1
  187. package/package/components/git_sync/GitSyncContext.svelte.js +11 -7
  188. package/package/components/git_sync/GitSyncRepositoryCard.svelte +2 -29
  189. package/package/components/git_sync/PullWorkspaceModal.svelte +6 -7
  190. package/package/components/graph/FlowGraphV2.svelte +8 -4
  191. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -0
  192. package/package/components/graph/groupedModulesProxy.svelte.d.ts +10 -0
  193. package/package/components/graph/groupedModulesProxy.svelte.js +17 -1
  194. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +8 -2
  195. package/package/components/home/HomeConnectDrawer.svelte +125 -0
  196. package/package/components/home/HomeConnectDrawer.svelte.d.ts +5 -0
  197. package/package/components/home/deploy_ui.js +1 -1
  198. package/package/components/icons/AzureIcon.svelte +12 -25
  199. package/package/components/icons/AzureIcon.svelte.d.ts +3 -2
  200. package/package/components/icons/GithubIcon.svelte +4 -4
  201. package/package/components/icons/GithubIcon.svelte.d.ts +5 -2
  202. package/package/components/instanceSettings/ExternalJwtTokens.svelte +85 -0
  203. package/package/components/instanceSettings/ExternalJwtTokens.svelte.d.ts +12 -0
  204. package/package/components/instanceSettings/GhesAppSettings.svelte +17 -0
  205. package/package/components/instanceSettings/IndexerMemorySettings.svelte +56 -29
  206. package/package/components/instanceSettings/SecretBackendConfig.svelte +9 -2
  207. package/package/components/instanceSettings.d.ts +1 -0
  208. package/package/components/instanceSettings.js +66 -8
  209. package/package/components/mcp/McpScopeSelector.svelte +119 -9
  210. package/package/components/mcp/McpScopeSelector.svelte.d.ts +1 -0
  211. package/package/components/offboarding-utils.d.ts +11 -0
  212. package/package/components/offboarding-utils.js +102 -0
  213. package/package/components/progressBar/ProgressBar.svelte +9 -5
  214. package/package/components/progressBar/ProgressBar.svelte.d.ts +1 -0
  215. package/package/components/raw_apps/DeleteAfterUsePopup.svelte +52 -0
  216. package/package/components/raw_apps/DeleteAfterUsePopup.svelte.d.ts +9 -0
  217. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +5 -1
  218. package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -1
  219. package/package/components/raw_apps/RawAppEditor.svelte +186 -102
  220. package/package/components/raw_apps/RawAppEditorHeader.svelte +6 -1
  221. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +1 -0
  222. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +9 -3
  223. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +2 -1
  224. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +1 -0
  225. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +1 -0
  226. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +48 -5
  227. package/package/components/raw_apps/RawAppSharedUiDrawer.svelte +129 -0
  228. package/package/components/raw_apps/RawAppSharedUiDrawer.svelte.d.ts +5 -0
  229. package/package/components/raw_apps/RawAppSidebar.svelte +12 -0
  230. package/package/components/raw_apps/RawAppYamlEditor.svelte +81 -0
  231. package/package/components/raw_apps/RawAppYamlEditor.svelte.d.ts +20 -0
  232. package/package/components/raw_apps/dataTableRefUtils.d.ts +7 -0
  233. package/package/components/raw_apps/dataTableRefUtils.js +34 -0
  234. package/package/components/raw_apps/dataTableRefUtils.test.d.ts +1 -0
  235. package/package/components/raw_apps/dataTableRefUtils.test.js +29 -0
  236. package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
  237. package/package/components/raw_apps/rawAppPolicy.d.ts +1 -0
  238. package/package/components/raw_apps/rawAppPolicy.js +17 -2
  239. package/package/components/resources/resourceTypesFilter.d.ts +19 -0
  240. package/package/components/resources/resourceTypesFilter.js +21 -0
  241. package/package/components/restartFromStepPath.d.ts +39 -0
  242. package/package/components/restartFromStepPath.js +89 -0
  243. package/package/components/runs/JobDetailFieldConfig.d.ts +1 -0
  244. package/package/components/runs/JobDetailFieldConfig.js +57 -10
  245. package/package/components/runs/JobDetailHeader.svelte +24 -3
  246. package/package/components/runs/runsFilter.d.ts +1 -1
  247. package/package/components/schema/FlowPropertyEditor.svelte +30 -1
  248. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +5 -2
  249. package/package/components/script_builder.d.ts +1 -1
  250. package/package/components/search/GlobalSearchModal.svelte +8 -1
  251. package/package/components/select/Select.svelte +3 -2
  252. package/package/components/select/Select.svelte.d.ts +1 -0
  253. package/package/components/settings/CreateToken.svelte +91 -71
  254. package/package/components/settings/CreateToken.svelte.d.ts +3 -0
  255. package/package/components/settings/EditTokenScopesModal.svelte +57 -0
  256. package/package/components/settings/EditTokenScopesModal.svelte.d.ts +10 -0
  257. package/package/components/settings/ScopesPicker.svelte +43 -0
  258. package/package/components/settings/ScopesPicker.svelte.d.ts +11 -0
  259. package/package/components/settings/TokensTable.svelte +51 -15
  260. package/package/components/settings/WorkspaceUserSettings.svelte +34 -28
  261. package/package/components/sidebar/OperatorMenu.svelte +6 -0
  262. package/package/components/sidebar/SidebarContent.svelte +68 -2
  263. package/package/components/sidebar/WorkspaceMenu.svelte +8 -4
  264. package/package/components/triggers/AddTriggersButton.svelte +17 -0
  265. package/package/components/triggers/CaptureWrapper.svelte +19 -1
  266. package/package/components/triggers/PermissionedAsLine.svelte +37 -3
  267. package/package/components/triggers/PermissionedAsLine.svelte.d.ts +6 -0
  268. package/package/components/triggers/TriggerEditorToolbar.svelte.d.ts +1 -1
  269. package/package/components/triggers/TriggerModeToggle.svelte +36 -7
  270. package/package/components/triggers/TriggerModeToggle.svelte.d.ts +1 -1
  271. package/package/components/triggers/TriggerSuspendedJobsModal.svelte.d.ts +1 -1
  272. package/package/components/triggers/TriggersEditor.svelte +10 -2
  273. package/package/components/triggers/TriggersWrapper.svelte +20 -0
  274. package/package/components/triggers/azure/AzureCapture.svelte +41 -0
  275. package/package/components/triggers/azure/AzureCapture.svelte.d.ts +44 -0
  276. package/package/components/triggers/azure/AzureTriggerEditor.svelte +20 -0
  277. package/package/components/triggers/azure/AzureTriggerEditor.svelte.d.ts +9 -0
  278. package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte +301 -0
  279. package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte.d.ts +16 -0
  280. package/package/components/triggers/azure/AzureTriggerEditorInner.svelte +422 -0
  281. package/package/components/triggers/azure/AzureTriggerEditorInner.svelte.d.ts +25 -0
  282. package/package/components/triggers/azure/AzureTriggerPanel.svelte +55 -0
  283. package/package/components/triggers/azure/AzureTriggerPanel.svelte.d.ts +10 -0
  284. package/{dist/sharedUtils/components/triggers/kafka → package/components/triggers/azure}/utils.d.ts +1 -1
  285. package/package/components/triggers/azure/utils.js +56 -0
  286. package/package/components/triggers/email/EmailTriggerEditorInner.svelte +15 -11
  287. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +22 -14
  288. package/package/components/triggers/http/RouteEditorConfigSection.svelte +15 -7
  289. package/package/components/triggers/http/RouteEditorInner.svelte +16 -14
  290. package/package/components/triggers/http/RoutesGenerator.svelte +6 -1
  291. package/package/components/triggers/http/RoutesPanel.svelte +1 -1
  292. package/package/components/triggers/http/utils.d.ts +1 -1
  293. package/package/components/triggers/http/utils.js +2 -2
  294. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +22 -14
  295. package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +22 -14
  296. package/package/components/triggers/native/NativeTriggerEditor.svelte +3 -0
  297. package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte +118 -0
  298. package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte.d.ts +17 -0
  299. package/package/components/triggers/native/utils.js +14 -0
  300. package/package/components/triggers/nats/NatsTriggerEditor.svelte.d.ts +4 -3
  301. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +22 -14
  302. package/package/components/triggers/postgres/PostgresTriggerEditor.svelte.d.ts +4 -3
  303. package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +22 -14
  304. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +22 -14
  305. package/package/components/triggers/sqs/SqsTriggerEditor.svelte.d.ts +4 -3
  306. package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +22 -14
  307. package/package/components/triggers/triggers.svelte.d.ts +1 -0
  308. package/package/components/triggers/triggers.svelte.js +24 -1
  309. package/package/components/triggers/utils.js +47 -6
  310. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +22 -14
  311. package/package/components/triggers.d.ts +1 -1
  312. package/package/components/useFolderDefaultPermissionedAs.svelte.d.ts +13 -0
  313. package/package/components/useFolderDefaultPermissionedAs.svelte.js +63 -0
  314. package/package/components/useNestedRestartState.svelte.d.ts +56 -0
  315. package/package/components/useNestedRestartState.svelte.js +320 -0
  316. package/package/components/workspaceSettings/CreateWorkspace.svelte +16 -677
  317. package/package/components/workspaceSettings/CreateWorkspaceInner.svelte +604 -0
  318. package/package/components/workspaceSettings/CreateWorkspaceInner.svelte.d.ts +7 -0
  319. package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +27 -25
  320. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +46 -8
  321. package/package/components/workspaceSettings/DataTableSettings.svelte +27 -22
  322. package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
  323. package/package/components/workspaceSettings/ForkDatatableSection.svelte +228 -0
  324. package/package/components/workspaceSettings/ForkDatatableSection.svelte.d.ts +28 -0
  325. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +8 -2
  326. package/package/components/workspaceSettings/RulesetEditor.svelte +27 -2
  327. package/package/components/workspaceSettings/SharedUiSettings.svelte +175 -0
  328. package/package/components/workspaceSettings/SharedUiSettings.svelte.d.ts +3 -0
  329. package/package/components/workspaceSettings/VolumeStorageSettings.svelte +1 -1
  330. package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +17 -1
  331. package/package/consts.d.ts +3 -0
  332. package/package/consts.js +10 -0
  333. package/package/gen/core/OpenAPI.js +1 -1
  334. package/package/gen/schemas.gen.d.ts +795 -59
  335. package/package/gen/schemas.gen.js +801 -60
  336. package/package/gen/services.gen.d.ts +475 -5
  337. package/package/gen/services.gen.js +976 -23
  338. package/package/gen/types.gen.d.ts +1865 -75
  339. package/package/githubApp.js +5 -1
  340. package/package/hubPaths.json +2 -8
  341. package/package/infer.d.ts +1 -1
  342. package/package/infer.js +50 -52
  343. package/package/infer.svelte.js +10 -1
  344. package/package/mcpEndpointTools.js +60 -4
  345. package/package/monaco_workers/sqlTypePlugin.worker.d.ts +10 -0
  346. package/package/monaco_workers/sqlTypePlugin.worker.js +39 -0
  347. package/package/script_helpers.d.ts +8 -2
  348. package/package/script_helpers.js +31 -0
  349. package/package/stores.d.ts +11 -0
  350. package/package/stores.js +6 -0
  351. package/package/system_prompts/index.d.ts +1 -0
  352. package/package/system_prompts/index.js +8 -0
  353. package/package/system_prompts/prompts.d.ts +17 -13
  354. package/package/system_prompts/prompts.js +921 -61
  355. package/package/templates/ci_test_bun.ts.template +27 -0
  356. package/package/templates/ci_test_python.py.template +26 -0
  357. package/package/utils/forkConflict.d.ts +26 -0
  358. package/package/utils/forkConflict.js +56 -0
  359. package/package/utils_deployable.d.ts +164 -121
  360. package/package/utils_deployable.js +61 -11
  361. package/package/utils_workspace_deploy.d.ts +8 -8
  362. package/package/utils_workspace_deploy.js +89 -421
  363. package/package.json +30 -6
  364. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
  365. package/dist/sharedUtils/base.d.ts +0 -1
  366. package/dist/sharedUtils/cloud.d.ts +0 -1
  367. package/dist/sharedUtils/common.d.ts +0 -111
  368. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
  369. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
  370. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
  371. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
  372. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
  373. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
  374. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
  375. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
  376. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
  377. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
  378. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
  379. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
  380. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
  381. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
  382. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
  383. package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
  384. package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
  385. package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
  386. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
  387. package/dist/sharedUtils/components/apps/types.d.ts +0 -274
  388. package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
  389. package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
  390. package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
  391. package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
  392. package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
  393. package/dist/sharedUtils/components/common/index.d.ts +0 -24
  394. package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
  395. package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
  396. package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
  397. package/dist/sharedUtils/components/ducklake.d.ts +0 -1
  398. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
  399. package/dist/sharedUtils/components/icons/index.d.ts +0 -101
  400. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
  401. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
  402. package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
  403. package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
  404. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
  405. package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
  406. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
  407. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
  408. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
  409. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
  410. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
  411. package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
  412. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
  413. package/dist/sharedUtils/components/triggers.d.ts +0 -20
  414. package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
  415. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
  416. package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
  417. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
  418. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
  419. package/dist/sharedUtils/gen/core/request.d.ts +0 -29
  420. package/dist/sharedUtils/gen/index.d.ts +0 -6
  421. package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
  422. package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
  423. package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
  424. package/dist/sharedUtils/history.svelte.d.ts +0 -9
  425. package/dist/sharedUtils/hub.d.ts +0 -49
  426. package/dist/sharedUtils/jsr.json +0 -6
  427. package/dist/sharedUtils/lib.d.ts +0 -5
  428. package/dist/sharedUtils/lib.es.js +0 -1588
  429. package/dist/sharedUtils/package.json +0 -12
  430. package/dist/sharedUtils/schema.d.ts +0 -3
  431. package/dist/sharedUtils/stores.d.ts +0 -97
  432. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
  433. package/dist/sharedUtils/toast.d.ts +0 -8
  434. package/dist/sharedUtils/utils.d.ts +0 -265
  435. package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +0 -153
  436. package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +0 -21
  437. package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +0 -136
  438. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.d.ts +0 -15
  439. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +0 -107
  440. package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +0 -50
  441. package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +0 -93
  442. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.d.ts +0 -29
  443. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.js +0 -134
  444. package/package/components/copilot/chat/__tests__/app/appResultsWriter.d.ts +0 -30
  445. package/package/components/copilot/chat/__tests__/app/appResultsWriter.js +0 -197
  446. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.d.ts +0 -10
  447. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.js +0 -9
  448. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/meta.json +0 -4
  449. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.d.ts +0 -6
  450. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.js +0 -5
  451. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/meta.json +0 -4
  452. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.d.ts +0 -12
  453. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js +0 -14
  454. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/meta.json +0 -4
  455. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.d.ts +0 -8
  456. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.js +0 -25
  457. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/meta.json +0 -4
  458. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.d.ts +0 -7
  459. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.js +0 -5
  460. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/meta.json +0 -4
  461. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.d.ts +0 -8
  462. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.js +0 -5
  463. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/meta.json +0 -4
  464. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.d.ts +0 -10
  465. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.tsx +0 -26
  466. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.d.ts +0 -10
  467. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.tsx +0 -79
  468. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.d.ts +0 -10
  469. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.tsx +0 -46
  470. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.d.ts +0 -10
  471. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.tsx +0 -56
  472. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.d.ts +0 -6
  473. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.tsx +0 -59
  474. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.d.ts +0 -16
  475. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.tsx +0 -119
  476. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.d.ts +0 -15
  477. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.js +0 -14
  478. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/meta.json +0 -4
  479. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.d.ts +0 -14
  480. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.js +0 -5
  481. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/meta.json +0 -4
  482. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.d.ts +0 -6
  483. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.js +0 -41
  484. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/meta.json +0 -4
  485. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.d.ts +0 -15
  486. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.js +0 -3
  487. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/meta.json +0 -4
  488. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.d.ts +0 -9
  489. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.tsx +0 -51
  490. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.d.ts +0 -8
  491. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.tsx +0 -27
  492. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.d.ts +0 -8
  493. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.tsx +0 -18
  494. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.d.ts +0 -12
  495. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.tsx +0 -81
  496. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.d.ts +0 -3
  497. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.js +0 -3
  498. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/meta.json +0 -4
  499. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.d.ts +0 -3
  500. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.js +0 -3
  501. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/meta.json +0 -4
  502. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.d.ts +0 -2
  503. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.tsx +0 -38
  504. package/package/components/copilot/chat/__tests__/app/variants/baseline.d.ts +0 -6
  505. package/package/components/copilot/chat/__tests__/app/variants/baseline.js +0 -10
  506. package/package/components/copilot/chat/__tests__/app/variants/index.d.ts +0 -3
  507. package/package/components/copilot/chat/__tests__/app/variants/index.js +0 -3
  508. package/package/components/copilot/chat/__tests__/app/variants/streamlined.d.ts +0 -6
  509. package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +0 -137
  510. package/package/components/copilot/chat/__tests__/flow/expected/test1.json +0 -134
  511. package/package/components/copilot/chat/__tests__/flow/expected/test2.json +0 -183
  512. package/package/components/copilot/chat/__tests__/flow/expected/test3.json +0 -204
  513. package/package/components/copilot/chat/__tests__/flow/expected/test4.json +0 -175
  514. package/package/components/copilot/chat/__tests__/flow/expected/test5_modify_simple.json +0 -68
  515. package/package/components/copilot/chat/__tests__/flow/expected/test6_modify_medium.json +0 -142
  516. package/package/components/copilot/chat/__tests__/flow/expected/test7_modify_complex.json +0 -136
  517. package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +0 -294
  518. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.d.ts +0 -17
  519. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +0 -49
  520. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.d.ts +0 -12
  521. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +0 -79
  522. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +0 -50
  523. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +0 -102
  524. package/package/components/copilot/chat/__tests__/flow/initial/test5_initial.json +0 -53
  525. package/package/components/copilot/chat/__tests__/flow/initial/test6_initial.json +0 -68
  526. package/package/components/copilot/chat/__tests__/flow/initial/test7_initial.json +0 -120
  527. package/package/components/copilot/chat/__tests__/flow/variants/baseline.d.ts +0 -6
  528. package/package/components/copilot/chat/__tests__/flow/variants/baseline.js +0 -10
  529. package/package/components/copilot/chat/__tests__/flow/variants/index.d.ts +0 -3
  530. package/package/components/copilot/chat/__tests__/flow/variants/index.js +0 -3
  531. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.d.ts +0 -15
  532. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +0 -388
  533. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +0 -45
  534. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +0 -121
  535. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +0 -28
  536. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +0 -96
  537. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.d.ts +0 -32
  538. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.js +0 -130
  539. package/package/components/copilot/chat/__tests__/shared/baseVariants.d.ts +0 -45
  540. package/package/components/copilot/chat/__tests__/shared/baseVariants.js +0 -57
  541. package/package/components/copilot/chat/__tests__/shared/index.d.ts +0 -10
  542. package/package/components/copilot/chat/__tests__/shared/index.js +0 -5
  543. package/package/components/copilot/chat/__tests__/shared/types.d.ts +0 -105
  544. package/package/components/copilot/chat/__tests__/shared/types.js +0 -9
  545. package/package/components/copilot/chat/flow/openFlowZod.js +0 -24
  546. package/package/components/copilot/chat/flow/utils.d.ts +0 -14
  547. package/package/components/copilot/chat/flow/utils.js +0 -108
  548. package/package/components/flows/agentToolUtils.test.js +0 -55
  549. /package/package/components/copilot/chat/{__tests__/app/appChat.eval.test.d.ts → app/core.test.d.ts} +0 -0
  550. /package/package/components/copilot/chat/{__tests__/flow/flowChat.eval.test.d.ts → flow/helperUtils.test.d.ts} +0 -0
  551. /package/package/components/copilot/chat/flow/{openFlowZod.d.ts → openFlowZod.gen.d.ts} +0 -0
  552. /package/package/components/{flows/agentToolUtils.test.d.ts → copilot/chat/flow/utils.test.d.ts} +0 -0
@@ -6,7 +6,6 @@ import { nextId, copyId } from '../flowModuleNextId';
6
6
  import { push } from '../../../history.svelte';
7
7
  import ConfirmationModal from '../../common/confirmationModal/ConfirmationModal.svelte';
8
8
  import Portal from '../../Portal.svelte';
9
- import { getAllModules, getDependentComponents } from '../flowExplorer';
10
9
  import { locateModules, groupByParent } from '../multiSelectUtils';
11
10
  import { workspaceStore } from '../../../stores';
12
11
  import { copilotInfo } from '../../../aiStore';
@@ -15,19 +14,20 @@ import FlowGraphV2 from '../../graph/FlowGraphV2.svelte';
15
14
  import { replaceId } from '../flowStore.svelte';
16
15
  import { setScheduledPollSchedule } from '../../triggers';
17
16
  import { JobService } from '../../../gen';
18
- import { dfsByModule } from '../previousResults';
17
+ import { findModuleInFlow } from '../flowTree';
19
18
  import { MoveManager } from '../../graph/moveManager.svelte';
20
19
  import { refreshStateStore } from '../../../svelte5Utils.svelte';
21
20
  import FlowStickyNode from './FlowStickyNode.svelte';
22
21
  import { getStepHistoryLoaderContext } from '../../stepHistoryLoader.svelte';
23
22
  import { ModulesTestStates } from '../../modulesTest.svelte';
24
- import { flowModuleToAgentTool, createMcpTool, createWebsearchTool, createAiAgentTool, SPECIAL_TOOL_KINDS, agentToolToFlowModule, removeAgentToolByIdDeep } from '../agentToolUtils';
23
+ import { flowModuleToAgentTool, createMcpTool, createWebsearchTool, createAiAgentTool, SPECIAL_TOOL_KINDS, agentToolToFlowModule } from '../agentToolUtils';
25
24
  import { loadFlowModuleState } from '../flowStateUtils.svelte';
25
+ import { executeDeletePlan, prepareDeleteRequest } from '../flowDeleteController';
26
26
  import { getNoteEditorContext } from '../../graph/noteEditor.svelte';
27
27
  import { GroupedModulesProxy } from '../../graph/groupedModulesProxy.svelte';
28
28
  import { GroupDisplayState } from '../../graph/groupEditor.svelte';
29
- import { matchStructureNode, dfsStructure, findInStructure, moduleToStructureNode } from '../../graph/flowStructure';
30
- let { sidebarSize = $bindable(undefined), disableStaticInputs = false, disableTutorials = false, disableAi = false, disableSettings = false, newFlow = false, smallErrorHandler = false, workspace = $workspaceStore, onTestUpTo, onEditInput, localModuleStates = {}, testModuleStates = new ModulesTestStates(), aiChatOpen, showFlowAiButton, toggleAiChat, isOwner, onTestFlow, isRunning, onCancelTestFlow, onOpenPreview, onHideJobStatus, individualStepTests = false, flowJob = undefined, showJobStatus = false, suspendStatus = $bindable({ val: {} }), onDelete, flowHasChanged } = $props();
29
+ import { matchStructureNode, dfsStructure, moduleToStructureNode } from '../../graph/flowStructure';
30
+ let { sidebarSize = $bindable(undefined), disableStaticInputs = false, disableTutorials = false, disableAi = false, disableSettings = false, newFlow = false, smallErrorHandler = false, workspace = $workspaceStore, onTestUpTo, onEditInput, localModuleStates = {}, testModuleStates = new ModulesTestStates(), aiChatOpen, showFlowAiButton, toggleAiChat, isOwner, onTestFlow, isRunning, onCancelTestFlow, onOpenPreview, onHideJobStatus, individualStepTests = false, flowJob = undefined, showJobStatus = false, suspendStatus = $bindable({ val: {} }), onDelete, controlsPosition = 'top', flowHasChanged } = $props();
31
31
  const { customUi, selectionManager, history, flowStateStore, flowStore, pathStore } = getContext('FlowEditorContext');
32
32
  const moveManager = new MoveManager();
33
33
  const { triggersCount, triggersState } = getContext('TriggerContext');
@@ -143,67 +143,12 @@ export async function insertNewModuleAtIndex(modules, index, kind, wsScript, wsF
143
143
  return modules;
144
144
  }
145
145
  }
146
- /**
147
- * Helper function to remove an AgentTool by id from the tools array
148
- * Tools are always leaf nodes, so we just need to delete their state directly
149
- */
150
- function removeAgentToolById(tools, id) {
151
- const index = tools.findIndex((tool) => tool.id === id);
152
- if (index != -1) {
153
- const [removed] = tools.splice(index, 1);
154
- deleteFlowStateById(removed.id, flowStateStore);
155
- }
156
- return tools;
157
- }
158
- export function removeAtId(modules, id) {
159
- const index = modules.findIndex((mod) => mod.id == id);
160
- if (index != -1) {
161
- const [removed] = modules.splice(index, 1);
162
- const leaves = dfs([removed], (mod) => mod.id);
163
- leaves.forEach((leafId) => deleteFlowStateById(leafId, flowStateStore));
164
- return modules;
165
- }
166
- return modules.map((mod) => {
167
- if (mod.value.type == 'forloopflow' || mod.value.type == 'whileloopflow') {
168
- mod.value.modules = removeAtId(mod.value.modules, id);
169
- }
170
- else if (mod.value.type == 'branchall') {
171
- mod.value.branches = mod.value.branches.map((branch) => {
172
- branch.modules = removeAtId(branch.modules, id);
173
- return branch;
174
- });
175
- }
176
- else if (mod.value.type == 'branchone') {
177
- mod.value.branches = mod.value.branches.map((branch) => {
178
- branch.modules = removeAtId(branch.modules, id);
179
- return branch;
180
- });
181
- mod.value.default = removeAtId(mod.value.default, id);
182
- }
183
- else if (mod.value.type == 'aiagent') {
184
- mod.value.tools = removeAgentToolById(mod.value.tools, id);
185
- }
186
- return mod;
187
- });
188
- }
189
146
  let sidebarMode = 'graph';
190
147
  let minHeight = $state(0);
191
148
  let flowPaneWidth = $state(0);
192
- let compactTopbar = $derived(flowPaneWidth < 700);
193
- export function selectNextId(id) {
194
- if (flowStore.val.value.modules) {
195
- let allIds = dfs(flowStore.val.value.modules, (mod) => mod.id);
196
- if (allIds.length > 1) {
197
- const idx = allIds.indexOf(id);
198
- selectionManager.selectId(idx == 0 ? allIds[0] : allIds[idx - 1]);
199
- }
200
- else {
201
- selectionManager.selectId('settings-metadata');
202
- }
203
- }
204
- }
149
+ let compactTopbar = $derived(flowPaneWidth < 800);
205
150
  function findModuleById(id) {
206
- return dfsByModule(id, flowStore.val.value.modules)[0];
151
+ return findModuleInFlow(flowStore.val.value, id);
207
152
  }
208
153
  export async function addBranch(id) {
209
154
  push(history, flowStore.val);
@@ -234,13 +179,8 @@ export function removeBranch(id, index) {
234
179
  module.value.branches.splice(index - offset, 1);
235
180
  }
236
181
  }
237
- let deleteCallback = $state(undefined);
238
- let dependents = $state({});
239
- /** Confirmation gate for actions that would empty or duplicate groups */
240
- let affectedGroupsPending = $state([]);
241
- let affectedGroupsAction = $state(undefined);
242
- let affectedGroupsCancel = $state(undefined);
243
- let affectedGroupsActionLabel = $state('delete');
182
+ let pendingDeleteConfirmation = $state(undefined);
183
+ let pendingGroupAction = $state(undefined);
244
184
  let graph = $state(undefined);
245
185
  let noteMode = $state(false);
246
186
  let diffManager = $derived(getDiffManager());
@@ -256,74 +196,48 @@ export function enableNotes() {
256
196
  function toggleNoteMode() {
257
197
  noteMode = !noteMode;
258
198
  }
259
- export function deleteMultiple(ids) {
260
- const structureIds = [];
261
- const toolIds = [];
262
- for (const id of ids) {
263
- if (findInStructure(proxy.items, id)) {
264
- structureIds.push(id);
265
- }
266
- else {
267
- toolIds.push(id);
268
- }
269
- }
270
- const deletingSet = new Set(ids);
271
- const allDeps = {};
272
- for (const id of ids) {
273
- const deps = getDependentComponents(id, flowStore.val);
274
- for (const [depId, exprs] of Object.entries(deps)) {
275
- if (!deletingSet.has(depId)) {
276
- allDeps[depId] = [...(allDeps[depId] ?? []), ...exprs];
277
- }
278
- }
199
+ function applyDeletePlan(plan) {
200
+ executeDeletePlan(plan, {
201
+ history,
202
+ flowStore,
203
+ flowStateStore,
204
+ selectionManager,
205
+ onDelete
206
+ });
207
+ }
208
+ function requestDelete(ids) {
209
+ const request = prepareDeleteRequest({
210
+ ids,
211
+ flow: flowStore.val,
212
+ tree: proxy.items,
213
+ proxy,
214
+ displayState: groupDisplayState
215
+ });
216
+ if (!request) {
217
+ return;
279
218
  }
280
- const opts = { displayState: groupDisplayState };
281
- const { emptiedGroups, duplicateGroups, commit } = structureIds.length > 0
282
- ? proxy.prepareMutation((tree) => {
283
- for (const id of structureIds) {
284
- const found = findInStructure(tree, id);
285
- if (found)
286
- found.parentChildren.splice(found.index, 1);
287
- }
288
- }, opts)
289
- : {
290
- emptiedGroups: [],
291
- duplicateGroups: [],
292
- commit: () => { }
293
- };
294
- const affectedGroups = [...emptiedGroups, ...duplicateGroups];
295
- const cb = () => {
296
- push(history, flowStore.val);
297
- commit({ removeDuplicates: duplicateGroups.length > 0 });
298
- for (const id of toolIds) {
299
- removeAgentToolByIdDeep(flowStore.val.value.modules, id, (removed) => {
300
- deleteFlowStateById(removed.id, flowStateStore);
301
- });
302
- }
303
- for (const id of ids) {
304
- delete flowStateStore.val[id];
305
- }
306
- selectionManager.clearSelection();
307
- refreshStateStore(flowStore);
308
- };
309
219
  const proceed = () => {
310
- if (Object.keys(allDeps).length > 0) {
311
- dependents = allDeps;
312
- deleteCallback = cb;
220
+ if (request.needsDependencyConfirmation) {
221
+ pendingDeleteConfirmation = { plan: request.plan };
313
222
  }
314
223
  else {
315
- cb();
224
+ applyDeletePlan(request.plan);
316
225
  }
317
226
  };
318
- if (affectedGroups.length > 0) {
319
- affectedGroupsPending = affectedGroups;
320
- affectedGroupsActionLabel = 'delete';
321
- affectedGroupsAction = proceed;
227
+ if ((request.plan.structureDelete?.affectedGroups.length ?? 0) > 0) {
228
+ pendingGroupAction = {
229
+ groups: request.plan.structureDelete.affectedGroups,
230
+ label: 'delete',
231
+ confirm: proceed
232
+ };
322
233
  }
323
234
  else {
324
235
  proceed();
325
236
  }
326
237
  }
238
+ export function deleteMultiple(ids) {
239
+ requestDelete(ids);
240
+ }
327
241
  // Operates directly on the flat module array (not the structure tree).
328
242
  // Cloned modules are inserted after the originals, intentionally outside any group.
329
243
  export function duplicateMultiple(ids) {
@@ -397,7 +311,8 @@ async function loadLastJob(path, moduleId) {
397
311
  ...(flowStateStore.val[moduleId] ?? {}),
398
312
  previewResult: getJobResult.result,
399
313
  previewJobId: previousJobId[0].id,
400
- previewSuccess: getJobResult.success
314
+ previewSuccess: getJobResult.success,
315
+ previewLogs: getJobResult['logs']
401
316
  };
402
317
  if (stepHistoryLoader) {
403
318
  stepHistoryLoader.stepStates[moduleId].loadingJobs = false;
@@ -414,21 +329,21 @@ $effect(() => {
414
329
  <ConfirmationModal
415
330
  title="Confirm deleting step with dependents"
416
331
  confirmationText="Delete step"
417
- open={Boolean(deleteCallback)}
332
+ open={Boolean(pendingDeleteConfirmation)}
418
333
  on:confirmed={() => {
419
- if (deleteCallback) {
420
- deleteCallback()
421
- deleteCallback = undefined
334
+ if (pendingDeleteConfirmation) {
335
+ applyDeletePlan(pendingDeleteConfirmation.plan)
336
+ pendingDeleteConfirmation = undefined
422
337
  }
423
338
  }}
424
339
  on:canceled={() => {
425
- deleteCallback = undefined
340
+ pendingDeleteConfirmation = undefined
426
341
  }}
427
342
  >
428
343
  <div class="text-primary pb-2"
429
344
  >Found the following steps that will require changes after this step is deleted:</div
430
345
  >
431
- {#each Object.entries(dependents) as [k, v]}
346
+ {#each Object.entries(pendingDeleteConfirmation?.plan.dependents ?? {}) as [k, v]}
432
347
  <div class="pb-3">
433
348
  <h3 class="text-secondary font-semibold">{k}</h3>
434
349
  <ul class="text-sm">
@@ -441,36 +356,32 @@ $effect(() => {
441
356
  </ConfirmationModal>
442
357
 
443
358
  <ConfirmationModal
444
- title={affectedGroupsPending.length === 1 ? 'Remove group?' : 'Remove groups?'}
445
- confirmationText={affectedGroupsActionLabel === 'delete' ? 'Delete step' : 'Move step'}
446
- open={affectedGroupsPending.length > 0}
359
+ title={pendingGroupAction?.groups.length === 1 ? 'Remove group?' : 'Remove groups?'}
360
+ confirmationText={pendingGroupAction?.label === 'delete' ? 'Delete step' : 'Move step'}
361
+ open={Boolean(pendingGroupAction)}
447
362
  on:confirmed={() => {
448
- affectedGroupsAction?.()
449
- affectedGroupsPending = []
450
- affectedGroupsAction = undefined
451
- affectedGroupsCancel = undefined
363
+ pendingGroupAction?.confirm()
364
+ pendingGroupAction = undefined
452
365
  }}
453
366
  on:canceled={() => {
454
- affectedGroupsCancel?.()
455
- affectedGroupsPending = []
456
- affectedGroupsAction = undefined
457
- affectedGroupsCancel = undefined
367
+ pendingGroupAction?.cancel?.()
368
+ pendingGroupAction = undefined
458
369
  }}
459
370
  >
460
- {#if affectedGroupsPending.length === 1}
461
- {@const group = affectedGroupsPending[0]}
371
+ {#if pendingGroupAction?.groups.length === 1}
372
+ {@const group = pendingGroupAction.groups[0]}
462
373
  <p
463
374
  >The group{group.summary ? ` "${group.summary}"` : ''} will be removed (empty or duplicate).
464
- Are you sure you want to {affectedGroupsActionLabel} the step?</p
375
+ Are you sure you want to {pendingGroupAction.label} the step?</p
465
376
  >
466
377
  {:else}
467
378
  <p>The following groups will be removed (empty or duplicate):</p>
468
379
  <ul class="list-disc pl-4 mt-1">
469
- {#each affectedGroupsPending as group}
380
+ {#each pendingGroupAction?.groups ?? [] as group}
470
381
  <li>{group.summary || `${group.start_id} → ${group.end_id}`}</li>
471
382
  {/each}
472
383
  </ul>
473
- <p class="mt-2">Are you sure you want to {affectedGroupsActionLabel} the step?</p>
384
+ <p class="mt-2">Are you sure you want to {pendingGroupAction?.label} the step?</p>
474
385
  {/if}
475
386
  </ConfirmationModal>
476
387
  </Portal>
@@ -494,7 +405,7 @@ $effect(() => {
494
405
  />
495
406
  </div>
496
407
 
497
- <div class="z-10 flex-auto grow bg-surface-secondary" bind:clientHeight={minHeight}>
408
+ <div class="z-10 flex-auto grow min-h-0 bg-surface-secondary" bind:clientHeight={minHeight}>
498
409
  <FlowGraphV2
499
410
  bind:this={graph}
500
411
  earlyStop={flowStore.val.value?.skip_expr !== undefined}
@@ -532,78 +443,7 @@ $effect(() => {
532
443
  suspendStatus={suspendStatus.val}
533
444
  {flowHasChanged}
534
445
  chatInputEnabled={Boolean(flowStore.val.value?.chat_input_enabled)}
535
- onDelete={(id) => {
536
- dependents = getDependentComponents(id, flowStore.val)
537
-
538
- if (id === 'preprocessor') {
539
- const cb = () => {
540
- push(history, flowStore.val)
541
- selectionManager.selectId('Input')
542
- flowStore.val.value.preprocessor_module = undefined
543
- refreshStateStore(flowStore)
544
- onDelete?.(id)
545
- delete flowStateStore.val[id]
546
- }
547
- if (Object.keys(dependents).length > 0) {
548
- deleteCallback = cb
549
- } else {
550
- cb()
551
- }
552
- return
553
- }
554
-
555
- if (!findInStructure(proxy.items, id)) {
556
- const cb = () => {
557
- push(history, flowStore.val)
558
- selectNextId(id)
559
- const removed = removeAgentToolByIdDeep(flowStore.val.value.modules, id, (tool) => {
560
- deleteFlowStateById(tool.id, flowStateStore)
561
- })
562
- if (!removed) return
563
- refreshStateStore(flowStore)
564
- onDelete?.(id)
565
- }
566
- if (Object.keys(dependents).length > 0) {
567
- deleteCallback = cb
568
- } else {
569
- cb()
570
- }
571
- return
572
- }
573
-
574
- const dsOpts = { displayState: groupDisplayState }
575
- const { emptiedGroups, duplicateGroups, commit } = proxy.prepareMutation((tree) => {
576
- const found = findInStructure(tree, id)
577
- if (found) found.parentChildren.splice(found.index, 1)
578
- }, dsOpts)
579
-
580
- const affectedGroups = [...emptiedGroups, ...duplicateGroups]
581
-
582
- const cb = () => {
583
- push(history, flowStore.val)
584
- selectNextId(id)
585
- commit({ removeDuplicates: duplicateGroups.length > 0 })
586
- refreshStateStore(flowStore)
587
- onDelete?.(id)
588
- delete flowStateStore.val[id]
589
- }
590
-
591
- const proceed = () => {
592
- if (Object.keys(dependents).length > 0) {
593
- deleteCallback = cb
594
- } else {
595
- cb()
596
- }
597
- }
598
-
599
- if (affectedGroups.length > 0) {
600
- affectedGroupsPending = affectedGroups
601
- affectedGroupsActionLabel = 'delete'
602
- affectedGroupsAction = proceed
603
- } else {
604
- proceed()
605
- }
606
- }}
446
+ onDelete={(id) => requestDelete([id])}
607
447
  onInsert={async (detail) => {
608
448
  if (!flowStore.val.value.modules || !Array.isArray(flowStore.val.value.modules)) return
609
449
  await tick()
@@ -682,10 +522,12 @@ $effect(() => {
682
522
  }
683
523
 
684
524
  if (affectedGroups.length > 0) {
685
- affectedGroupsPending = affectedGroups
686
- affectedGroupsActionLabel = 'move'
687
- affectedGroupsAction = doMove
688
- affectedGroupsCancel = () => moveManager.clearMoving()
525
+ pendingGroupAction = {
526
+ groups: affectedGroups,
527
+ label: 'move',
528
+ confirm: doMove,
529
+ cancel: () => moveManager.clearMoving()
530
+ }
689
531
  } else {
690
532
  doMove()
691
533
  }
@@ -724,9 +566,7 @@ $effect(() => {
724
566
 
725
567
  // Agent tool inserts operate on the FlowModule's tools array directly
726
568
  if (isAgentInsert) {
727
- const agentMod = getAllModules(flowStore.val.value.modules).find(
728
- (m) => m.id === detail.agentId
729
- )
569
+ const agentMod = findModuleInFlow(flowStore.val.value, detail.agentId!)
730
570
  if (agentMod && (agentMod.value as any).tools) {
731
571
  const tools = (agentMod.value as any).tools as AgentTool[]
732
572
  await insertNewModuleAtIndex(
@@ -929,6 +769,9 @@ $effect(() => {
929
769
  }}
930
770
  onUpdateMock={(detail) => {
931
771
  let module = findModuleById(detail.id)
772
+ if (!module) {
773
+ throw new Error(`Node ${detail.id} not found`)
774
+ }
932
775
  module.mock = $state.snapshot(detail.mock)
933
776
  refreshStateStore(flowStore)
934
777
  }}
@@ -937,6 +780,7 @@ $effect(() => {
937
780
  {onCancelTestFlow}
938
781
  {onOpenPreview}
939
782
  {onHideJobStatus}
783
+ {controlsPosition}
940
784
  exitNoteMode={() => (noteMode = false)}
941
785
  onNotePositionUpdate={(noteId, position) => {
942
786
  // Update note position via NoteEditor context in edit mode
@@ -35,6 +35,7 @@ interface Props {
35
35
  }>>;
36
36
  onDelete?: (id: string) => void;
37
37
  flowHasChanged?: boolean;
38
+ controlsPosition?: 'top' | 'bottom';
38
39
  }
39
40
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
40
41
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
@@ -64,8 +65,6 @@ declare const FlowModuleSchemaMap: $$__sveltets_2_IsomorphicComponent<Props, {
64
65
  path: string;
65
66
  summary: string;
66
67
  }, inlineScript?: InlineScript, toolKind?: SpecialToolKind | "flowmoduleTool") => Promise<FlowModule[] | AgentTool[]>;
67
- removeAtId: (modules: FlowModule[], id: string) => FlowModule[];
68
- selectNextId: (id: any) => void;
69
68
  addBranch: (id: string) => Promise<void>;
70
69
  removeBranch: (id: string, index: number) => void;
71
70
  isNodeVisible: (nodeId: string) => boolean;
@@ -21,7 +21,7 @@ let listHubScriptsCached = createCache(async ({ filter, kind, appFilter }) => {
21
21
 
22
22
  <script lang="ts">import { createEventDispatcher, getContext, untrack } from 'svelte';
23
23
  import { Skeleton } from '../../common';
24
- import { classNames, createCache, sendUserToast } from '../../../utils';
24
+ import { classNames, createCache } from '../../../utils';
25
25
  import { APP_TO_ICON_COMPONENT } from '../../icons';
26
26
  import { IntegrationService, ScriptService } from '../../../gen';
27
27
  import { Circle, ExternalLink } from 'lucide-svelte';
@@ -86,7 +86,7 @@ async function handlePickScript(item) {
86
86
  await ScriptService.pickHubScriptByPath({ path: item.path });
87
87
  }
88
88
  catch (error) {
89
- sendUserToast('Failed to call ScriptService.pickHubScriptByPath: ' + error, 'error');
89
+ console.error('Failed to track hub script pick:', error);
90
90
  // Don't block the flow if tracking fails
91
91
  }
92
92
  }
@@ -1,5 +1,5 @@
1
1
  import { schemaToObject } from '../../schema';
2
- import { getAllSubmodules, getSubModules } from './flowExplorer';
2
+ import { collectDescendantFlowModules, getChildModuleBranches, getModuleArrayContainer } from './flowTree';
3
3
  export function dfs(id, flow, getParents = true) {
4
4
  return dfsByModule(id, flow.value.modules, getParents);
5
5
  }
@@ -14,7 +14,7 @@ export function dfsByModule(id, modules, getParents = true) {
14
14
  return getParents ? [module] : modules.slice(0, i + 1).reverse();
15
15
  }
16
16
  else {
17
- const submodules = getSubModules(module);
17
+ const submodules = getChildModuleBranches(module);
18
18
  if (submodules) {
19
19
  let found = rec(id, submodules);
20
20
  if (found) {
@@ -85,9 +85,7 @@ export function getPreviousIds(id, flow, include_node) {
85
85
  }
86
86
  return df
87
87
  .map((x) => {
88
- let submodules = getAllSubmodules(x)
89
- .flat()
90
- .map((x) => x.id);
88
+ let submodules = collectDescendantFlowModules(x).map((submodule) => submodule.id);
91
89
  if (submodules.includes(id)) {
92
90
  return [x.id];
93
91
  }
@@ -264,42 +262,16 @@ export function filterNestedObject(obj, nestedKeys) {
264
262
  * based on the same logic used in FlowModuleWrapper.svelte
265
263
  */
266
264
  export function getPreviousModule(moduleId, flow) {
267
- function searchInModules(modules) {
268
- for (let i = 0; i < modules.length; i++) {
269
- const module = modules[i];
270
- if (module.id === moduleId) {
271
- // Found the module, return previous module ID if it exists
272
- return i > 0 ? modules[i - 1] : undefined;
273
- }
274
- // Search in submodules based on module type
275
- if (module.value.type === 'forloopflow' || module.value.type === 'whileloopflow') {
276
- const result = searchInModules(module.value.modules);
277
- if (result !== null)
278
- return result;
279
- }
280
- else if (module.value.type === 'branchone') {
281
- // Search in default branch
282
- const defaultResult = searchInModules(module.value.default);
283
- if (defaultResult !== null)
284
- return defaultResult;
285
- // Search in each branch
286
- for (const branch of module.value.branches) {
287
- const branchResult = searchInModules(branch.modules);
288
- if (branchResult !== null)
289
- return branchResult;
290
- }
291
- }
292
- else if (module.value.type === 'branchall') {
293
- // Search in each branch
294
- for (const branch of module.value.branches) {
295
- const branchResult = searchInModules(branch.modules);
296
- if (branchResult !== null)
297
- return branchResult;
298
- }
299
- }
265
+ const container = getModuleArrayContainer(flow.value, moduleId);
266
+ if (!container || container.index === 0) {
267
+ return undefined;
268
+ }
269
+ for (let i = container.index - 1; i >= 0; i--) {
270
+ const mod = container.modules[i];
271
+ const toolType = mod.value?.tool_type;
272
+ if (toolType === undefined || toolType === 'flowmodule') {
273
+ return mod;
300
274
  }
301
- return null; // Continue searching (module not found in this branch)
302
275
  }
303
- const result = searchInModules(flow.value.modules);
304
- return result === null ? undefined : result;
276
+ return undefined;
305
277
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,65 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { dfsByModule, getPreviousIds, getPreviousModule } from './previousResults';
3
+ function makeRawModule(id) {
4
+ return {
5
+ id,
6
+ summary: id,
7
+ value: {
8
+ type: 'rawscript',
9
+ content: '',
10
+ language: 'python3',
11
+ input_transforms: {}
12
+ }
13
+ };
14
+ }
15
+ function makeFlowModuleTool(module) {
16
+ return {
17
+ id: module.id,
18
+ summary: module.summary,
19
+ value: {
20
+ tool_type: 'flowmodule',
21
+ ...module.value
22
+ }
23
+ };
24
+ }
25
+ function makeAiAgent(id, tools) {
26
+ return {
27
+ id,
28
+ summary: id,
29
+ value: {
30
+ type: 'aiagent',
31
+ tools,
32
+ input_transforms: {}
33
+ }
34
+ };
35
+ }
36
+ describe('previousResults', () => {
37
+ it('returns real ai agent tools when walking parent chains', () => {
38
+ const setup = makeRawModule('setup');
39
+ const lookup = makeFlowModuleTool(makeRawModule('lookup_user'));
40
+ const sum = makeFlowModuleTool(makeRawModule('sum'));
41
+ const agent = makeAiAgent('agent', [lookup, sum]);
42
+ const path = dfsByModule('sum', [setup, agent]);
43
+ expect(path).toEqual([sum, agent]);
44
+ expect(path[0]).toBe(sum);
45
+ });
46
+ it('keeps previous-id ordering for ai agent flowmodule tools', () => {
47
+ const setup = makeRawModule('setup');
48
+ const lookup = makeFlowModuleTool(makeRawModule('lookup_user'));
49
+ const sum = makeFlowModuleTool(makeRawModule('sum'));
50
+ const agent = makeAiAgent('agent', [lookup, sum]);
51
+ const flow = {
52
+ summary: 'Flow',
53
+ value: {
54
+ modules: [setup, agent]
55
+ }
56
+ };
57
+ expect(dfsByModule('sum', flow.value.modules, false).map((module) => module.id)).toEqual([
58
+ 'sum',
59
+ 'lookup_user',
60
+ 'setup'
61
+ ]);
62
+ expect(getPreviousIds('sum', flow, false)).toEqual(['lookup_user', 'setup']);
63
+ expect(getPreviousModule('sum', flow)?.id).toBe('lookup_user');
64
+ });
65
+ });
@@ -27,7 +27,7 @@ export function toggleOpen(forceOpen = false) {
27
27
  if (popover?.isOpened() && !forceOpen) {
28
28
  popover?.close();
29
29
  }
30
- else {
30
+ else if (!popover?.isOpened()) {
31
31
  popover?.open();
32
32
  }
33
33
  }
@@ -148,6 +148,7 @@ onMount(() => {
148
148
  flip: false
149
149
  }}
150
150
  usePointerDownOutside
151
+ excludeSelectors={`[data-run-button="${id}"]`}
151
152
  closeOnOutsideClick={false}
152
153
  on:click={(e) => {
153
154
  e.preventDefault()