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
@@ -1,19 +1,22 @@
1
1
  <script lang="ts">import Toggle from '../../Toggle.svelte';
2
2
  import Tooltip from '../../Tooltip.svelte';
3
+ import { SecondsInput } from '../../common';
3
4
  import Section from '../../Section.svelte';
4
5
  let { flowModule = $bindable(), disabled = false } = $props();
6
+ let enabled = $derived(flowModule.delete_after_secs != null);
5
7
  </script>
6
8
 
7
- <Section label="Delete after use">
9
+ <Section label="Delete after completion">
8
10
  {#snippet header()}
9
11
  <Tooltip>
10
12
  The logs, arguments and results of this flow step will be completely deleted from Windmill
11
- once the flow is complete. They might be temporarily visible in UI while the flow is running.
13
+ after the specified delay once the flow is complete. They might be temporarily visible in UI
14
+ while the flow is running.
12
15
  <br />
13
16
  This also applies to a flow step that has failed: the error will not be accessible.
14
17
  <br />
15
18
  <br />
16
- The deletion is irreversible.
19
+ The deletion is irreversible. Set to 0 for immediate deletion.
17
20
  {#if disabled}
18
21
  <br />
19
22
  <br />
@@ -25,16 +28,21 @@ let { flowModule = $bindable(), disabled = false } = $props();
25
28
  <Toggle
26
29
  {disabled}
27
30
  size="sm"
28
- checked={Boolean(flowModule.delete_after_use)}
31
+ checked={enabled}
29
32
  on:change={() => {
30
- if (flowModule.delete_after_use) {
31
- flowModule.delete_after_use = undefined
33
+ if (enabled) {
34
+ flowModule.delete_after_secs = undefined
32
35
  } else {
33
- flowModule.delete_after_use = true
36
+ flowModule.delete_after_secs = 0
34
37
  }
35
38
  }}
36
39
  options={{
37
40
  right: 'Delete logs, arguments and results after the flow is complete'
38
41
  }}
39
42
  />
43
+ {#if enabled}
44
+ <div class="mt-2">
45
+ <SecondsInput bind:seconds={flowModule.delete_after_secs} {disabled} size="sm" />
46
+ </div>
47
+ {/if}
40
48
  </Section>
@@ -96,6 +96,7 @@ let numberOfAdvancedOptionsOn = $derived(activeAdvancedOptionNames.length);
96
96
  }}
97
97
  />
98
98
  </Label>
99
+ <!-- prettier-ignore -->
99
100
  <LabelsInput bind:labels={(flowStore.val as any).labels} class="-mt-4" />
100
101
 
101
102
  {#if !noEditor}
@@ -560,6 +561,34 @@ let numberOfAdvancedOptionsOn = $derived(activeAdvancedOptionNames.length);
560
561
  {/snippet}
561
562
  </Toggle>
562
563
 
564
+ <Toggle
565
+ textClass="font-medium"
566
+ size="xs"
567
+ disabled={!$enterpriseLicense}
568
+ checked={flowStore.val.value.delete_after_secs != null}
569
+ on:change={() => {
570
+ if (flowStore.val.value.delete_after_secs != null) {
571
+ flowStore.val.value.delete_after_secs = undefined
572
+ } else {
573
+ flowStore.val.value.delete_after_secs = 0
574
+ }
575
+ }}
576
+ options={{
577
+ right: 'Delete all step results after completion',
578
+ rightTooltip: `When enabled, the logs, arguments and results of all flow steps will be deleted after the specified delay once the flow completes. Set to 0 for immediate deletion. The deletion is irreversible. ${!$enterpriseLicense ? 'This is a feature only available on enterprise edition.' : ''}`
579
+ }}
580
+ eeOnly={true}
581
+ />
582
+ {#if flowStore.val.value.delete_after_secs != null}
583
+ <div class="ml-6 mt-1">
584
+ <SecondsInput
585
+ bind:seconds={flowStore.val.value.delete_after_secs}
586
+ disabled={!$enterpriseLicense}
587
+ size="sm"
588
+ />
589
+ </div>
590
+ {/if}
591
+
563
592
  <div>
564
593
  <Toggle
565
594
  textClass="font-medium"
@@ -1,4 +1,4 @@
1
- import { FlowConversationService, JobService } from '../../../gen';
1
+ import { FlowConversationsService, JobService } from '../../../gen';
2
2
  import { sendUserToast } from '../../../toast';
3
3
  import { waitJob } from '../../waitJob';
4
4
  import { tick } from 'svelte';
@@ -126,7 +126,7 @@ export class FlowChatManager {
126
126
  async deleteConversation(conversationId) {
127
127
  try {
128
128
  this.deletingConversationId = conversationId;
129
- await FlowConversationService.deleteFlowConversation({
129
+ await FlowConversationsService.deleteFlowConversation({
130
130
  workspace: get(workspaceStore),
131
131
  conversationId
132
132
  });
@@ -176,7 +176,7 @@ export class FlowChatManager {
176
176
  if (!get(workspaceStore) || !this.#path)
177
177
  return [];
178
178
  try {
179
- const response = await FlowConversationService.listFlowConversations({
179
+ const response = await FlowConversationsService.listFlowConversations({
180
180
  workspace: get(workspaceStore),
181
181
  flowPath: this.#path,
182
182
  page: page,
@@ -208,7 +208,7 @@ export class FlowChatManager {
208
208
  const pageToFetch = reset ? 1 : this.page + 1;
209
209
  try {
210
210
  const previousScrollHeight = this.messagesContainer?.scrollHeight || 0;
211
- const response = await FlowConversationService.listConversationMessages({
211
+ const response = await FlowConversationsService.listConversationMessages({
212
212
  workspace: get(workspaceStore),
213
213
  conversationId: conversationIdToUse,
214
214
  page: pageToFetch,
@@ -266,6 +266,15 @@ export class FlowChatManager {
266
266
  messageElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
267
267
  }
268
268
  }
269
+ getLastPersistedMessageSeq() {
270
+ for (let i = this.messages.length - 1; i >= 0; i--) {
271
+ const message = this.messages[i];
272
+ if (!message.id.startsWith('temp-')) {
273
+ return message.created_seq;
274
+ }
275
+ }
276
+ return undefined;
277
+ }
269
278
  // Polling
270
279
  async pollJobResult(jobId) {
271
280
  try {
@@ -291,19 +300,18 @@ export class FlowChatManager {
291
300
  if (!get(workspaceStore))
292
301
  return;
293
302
  try {
294
- const lastId = this.messages[this.messages.length - 1].id;
295
- const response = await FlowConversationService.listConversationMessages({
303
+ const lastSeq = this.getLastPersistedMessageSeq();
304
+ const response = await FlowConversationsService.listConversationMessages({
296
305
  workspace: get(workspaceStore),
297
306
  conversationId: conversationId,
298
307
  page: 1,
299
308
  perPage: 50,
300
- afterId: lastId
309
+ afterSeq: lastSeq
301
310
  });
302
311
  if (options?.isNewConversation) {
303
312
  await this.refreshConversations();
304
313
  }
305
314
  const filteredResponse = response.filter((msg) => msg.message_type !== 'user');
306
- // Add any new intermediate messages not already present
307
315
  for (const msg of filteredResponse) {
308
316
  if (!this.messages.find((m) => m.id === msg.id)) {
309
317
  this.messages = [...this.messages, msg];
@@ -312,7 +320,7 @@ export class FlowChatManager {
312
320
  // Only remove temporary messages when explicitly requested (e.g., after job completion)
313
321
  // During streaming, we keep temp messages to avoid them disappearing due to race conditions
314
322
  if (options?.removeTempMessages) {
315
- this.messages = this.messages.filter((msg) => !msg.id.startsWith('temp-'));
323
+ this.messages = this.messages.filter((msg) => !msg.id.startsWith('temp-') || msg.message_type === 'user');
316
324
  }
317
325
  }
318
326
  catch (error) {
@@ -355,9 +363,10 @@ export class FlowChatManager {
355
363
  // Invalidate the conversation cache
356
364
  delete this.#conversationsCache[currentConversationId];
357
365
  const userMessage = {
358
- id: randomUUID(),
366
+ id: `temp-${randomUUID()}`,
359
367
  content: this.inputMessage.trim(),
360
368
  created_at: new Date().toISOString(),
369
+ created_seq: 0,
361
370
  message_type: 'user',
362
371
  conversation_id: currentConversationId
363
372
  };
@@ -470,6 +479,7 @@ export class FlowChatManager {
470
479
  id: 'temp-' + randomUUID(),
471
480
  content: newContent,
472
481
  created_at: new Date().toISOString(),
482
+ created_seq: 0,
473
483
  message_type: 'tool',
474
484
  conversation_id: currentConversationId,
475
485
  job_id: '',
@@ -493,6 +503,7 @@ export class FlowChatManager {
493
503
  id: assistantMessageId,
494
504
  content: accumulatedContent,
495
505
  created_at: new Date().toISOString(),
506
+ created_seq: 0,
496
507
  message_type: 'assistant',
497
508
  conversation_id: currentConversationId,
498
509
  job_id: '',
@@ -1,4 +1,8 @@
1
1
  import type { FlowModule } from '../../gen';
2
- export declare function dfs<T>(modules: FlowModule[], f: (x: FlowModule, modules: FlowModule[], branches: FlowModule[][]) => T, opts?: {
2
+ type FlowDfsOptions = {
3
3
  skipToolNodes?: boolean;
4
- }): T[];
4
+ };
5
+ type FlowModuleVisitor<T> = (x: FlowModule, modules: FlowModule[], branches: FlowModule[][]) => T;
6
+ export declare function dfs<T>(modules: FlowModule[], f: FlowModuleVisitor<T>, opts?: FlowDfsOptions): T[];
7
+ export declare function forEachFlowModule(modules: FlowModule[], f: FlowModuleVisitor<void>, opts?: FlowDfsOptions): void;
8
+ export {};
@@ -1,31 +1,39 @@
1
- export function dfs(modules, f, opts = {}) {
2
- let result = [];
1
+ function traverseFlowModules(modules, visit, opts = {}) {
3
2
  for (const module of modules) {
4
3
  if (module.value.type == 'forloopflow' || module.value.type == 'whileloopflow') {
5
- result = result.concat(f(module, modules, [module.value.modules]));
6
- result = result.concat(dfs(module.value.modules, f, opts));
4
+ visit(module, modules, [module.value.modules]);
5
+ traverseFlowModules(module.value.modules, visit, opts);
7
6
  }
8
7
  else if (module.value.type == 'branchone') {
9
8
  const allBranches = [module.value.default, ...module.value.branches.map((b) => b.modules)];
10
- result = result.concat(f(module, modules, allBranches));
9
+ visit(module, modules, allBranches);
11
10
  for (const branch of allBranches) {
12
- result = result.concat(dfs(branch, f, opts));
11
+ traverseFlowModules(branch, visit, opts);
13
12
  }
14
13
  }
15
14
  else if (module.value.type == 'branchall') {
16
15
  const allBranches = module.value.branches.map((b) => b.modules);
17
- result = result.concat(f(module, modules, allBranches));
16
+ visit(module, modules, allBranches);
18
17
  for (const branch of allBranches) {
19
- result = result.concat(dfs(branch, f, opts));
18
+ traverseFlowModules(branch, visit, opts);
20
19
  }
21
20
  }
22
21
  else if (module.value.type == 'aiagent' && !opts.skipToolNodes) {
23
- result = result.concat(f(module, modules, [module.value.tools]));
24
- result = result.concat(dfs(module.value.tools, f, opts));
22
+ visit(module, modules, [module.value.tools]);
23
+ traverseFlowModules(module.value.tools, visit, opts);
25
24
  }
26
25
  else {
27
- result.push(f(module, modules, []));
26
+ visit(module, modules, []);
28
27
  }
29
28
  }
29
+ }
30
+ export function dfs(modules, f, opts = {}) {
31
+ let result = [];
32
+ traverseFlowModules(modules, (module, parentModules, branches) => {
33
+ result.push(f(module, parentModules, branches));
34
+ }, opts);
30
35
  return result;
31
36
  }
37
+ export function forEachFlowModule(modules, f, opts = {}) {
38
+ traverseFlowModules(modules, f, opts);
39
+ }
@@ -0,0 +1,32 @@
1
+ import type { GroupDisplayState } from '../graph/groupEditor.svelte';
2
+ import type { GroupedModulesProxy } from '../graph/groupedModulesProxy.svelte';
3
+ import type { SelectionManager } from '../graph/selectionUtils.svelte';
4
+ import type { FlowStructureNode } from '../graph/flowStructure';
5
+ import type { OpenFlow } from '../../gen';
6
+ import { type History } from '../../history.svelte';
7
+ import type { StateStore } from '../../utils';
8
+ import { type DeletePlan } from './flowDeleteUtils';
9
+ import type { FlowState } from './flowState';
10
+ export type PreparedDeleteRequest = {
11
+ plan: DeletePlan;
12
+ needsDependencyConfirmation: boolean;
13
+ };
14
+ export type DeletePlanExecutionContext = {
15
+ history?: History<OpenFlow>;
16
+ flowStore: StateStore<OpenFlow>;
17
+ flowStateStore: StateStore<FlowState>;
18
+ selectionManager: Pick<SelectionManager, 'clearSelection' | 'selectId'>;
19
+ onDelete?: (id: string) => void;
20
+ };
21
+ export type DeletePlanExecutionResult = {
22
+ removedStateIds: string[];
23
+ removedToolStateIds: string[];
24
+ };
25
+ export declare function prepareDeleteRequest(args: {
26
+ ids: string[];
27
+ flow: OpenFlow;
28
+ tree: FlowStructureNode[];
29
+ proxy: GroupedModulesProxy;
30
+ displayState: GroupDisplayState;
31
+ }): PreparedDeleteRequest | undefined;
32
+ export declare function executeDeletePlan(plan: DeletePlan, args: DeletePlanExecutionContext): DeletePlanExecutionResult;
@@ -0,0 +1,54 @@
1
+ import { push } from '../../history.svelte';
2
+ import { refreshStateStore } from '../../svelte5Utils.svelte';
3
+ import { createDeletePlan, removeDeletePlanTools } from './flowDeleteUtils';
4
+ import { deleteFlowStateById } from './flowStateUtils.svelte';
5
+ export function prepareDeleteRequest(args) {
6
+ const plan = createDeletePlan(args);
7
+ if (!plan) {
8
+ return undefined;
9
+ }
10
+ return {
11
+ plan,
12
+ needsDependencyConfirmation: Object.keys(plan.dependents).length > 0
13
+ };
14
+ }
15
+ export function executeDeletePlan(plan, args) {
16
+ push(args.history, args.flowStore.val);
17
+ const removedStructureStateIds = resolvePlannedStructureStateIds(plan.targets);
18
+ if (plan.selection.kind === 'clear') {
19
+ args.selectionManager.clearSelection();
20
+ }
21
+ else {
22
+ args.selectionManager.selectId(plan.selection.id);
23
+ }
24
+ if (plan.targets.some((target) => target.kind === 'preprocessor')) {
25
+ args.flowStore.val.value.preprocessor_module = undefined;
26
+ }
27
+ plan.structureDelete?.commit({ removeDuplicates: plan.removeDuplicates });
28
+ const removedToolStateIds = removeDeletePlanTools(plan.targets, args.flowStore.val.value.modules);
29
+ const removedStateIds = uniqueIds([...removedStructureStateIds, ...removedToolStateIds]);
30
+ for (const id of removedStateIds) {
31
+ deleteFlowStateById(id, args.flowStateStore);
32
+ }
33
+ refreshStateStore(args.flowStore);
34
+ if (plan.inputIds.length === 1) {
35
+ args.onDelete?.(plan.targets[0].id);
36
+ }
37
+ return {
38
+ removedStateIds,
39
+ removedToolStateIds
40
+ };
41
+ }
42
+ function resolvePlannedStructureStateIds(targets) {
43
+ const removedIds = [];
44
+ for (const target of targets) {
45
+ if (target.kind !== 'preprocessor' && target.kind !== 'structure_node') {
46
+ continue;
47
+ }
48
+ removedIds.push(...target.stateIds);
49
+ }
50
+ return uniqueIds(removedIds);
51
+ }
52
+ function uniqueIds(ids) {
53
+ return [...new Set(ids)];
54
+ }
@@ -0,0 +1,121 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ vi.mock('../aiProviderStorage', () => ({
3
+ loadStoredConfig: () => undefined
4
+ }));
5
+ vi.mock('./flowInfers', () => ({
6
+ AI_AGENT_SCHEMA: { properties: {} }
7
+ }));
8
+ import { GroupDisplayState } from '../graph/groupEditor.svelte';
9
+ import { GroupedModulesProxy } from '../graph/groupedModulesProxy.svelte';
10
+ import { executeDeletePlan, prepareDeleteRequest } from './flowDeleteController';
11
+ function makeRawModule(id, expr) {
12
+ return {
13
+ id,
14
+ summary: id,
15
+ value: {
16
+ type: 'rawscript',
17
+ content: '',
18
+ language: 'python3',
19
+ input_transforms: expr
20
+ ? {
21
+ user_input: {
22
+ type: 'javascript',
23
+ expr
24
+ }
25
+ }
26
+ : {}
27
+ }
28
+ };
29
+ }
30
+ function makeAiAgent(id, tools) {
31
+ return {
32
+ id,
33
+ summary: id,
34
+ value: {
35
+ type: 'aiagent',
36
+ tools,
37
+ input_transforms: {}
38
+ }
39
+ };
40
+ }
41
+ function makeFlowModuleTool(module) {
42
+ return {
43
+ id: module.id,
44
+ summary: module.summary,
45
+ value: {
46
+ tool_type: 'flowmodule',
47
+ ...module.value
48
+ }
49
+ };
50
+ }
51
+ describe('flowDeleteController', () => {
52
+ it('prepares confirmations and executes grouped ai-agent deletes end to end', () => {
53
+ const agent = makeAiAgent('agent_step', [
54
+ makeFlowModuleTool(makeRawModule('lookup_user')),
55
+ makeFlowModuleTool(makeAiAgent('support_agent', [makeFlowModuleTool(makeRawModule('create_ticket'))]))
56
+ ]);
57
+ const dependent = makeRawModule('dependent_step', 'results.create_ticket?.value');
58
+ const flowStore = {
59
+ val: {
60
+ summary: 'Flow',
61
+ value: {
62
+ modules: [agent, dependent],
63
+ groups: [
64
+ {
65
+ summary: 'Agent group',
66
+ start_id: 'agent_step',
67
+ end_id: 'agent_step'
68
+ }
69
+ ]
70
+ }
71
+ }
72
+ };
73
+ const proxy = new GroupedModulesProxy(flowStore);
74
+ const displayState = new GroupDisplayState(() => flowStore.val.value.groups ?? []);
75
+ const request = prepareDeleteRequest({
76
+ ids: ['agent_step'],
77
+ flow: flowStore.val,
78
+ tree: proxy.items,
79
+ proxy,
80
+ displayState
81
+ });
82
+ expect(request?.needsDependencyConfirmation).toBe(true);
83
+ expect(request?.plan.structureDelete?.affectedGroups).toHaveLength(1);
84
+ expect(request?.plan.structureDelete?.affectedGroups[0]).toMatchObject({
85
+ summary: 'Agent group',
86
+ start_id: 'agent_step',
87
+ end_id: 'agent_step'
88
+ });
89
+ const selectionManager = {
90
+ clearSelection: vi.fn(),
91
+ selectId: vi.fn()
92
+ };
93
+ const flowStateStore = {
94
+ val: {
95
+ agent_step: {},
96
+ lookup_user: {},
97
+ support_agent: {},
98
+ create_ticket: {},
99
+ dependent_step: {}
100
+ }
101
+ };
102
+ const onDelete = vi.fn();
103
+ const result = executeDeletePlan(request.plan, {
104
+ flowStore,
105
+ flowStateStore,
106
+ selectionManager,
107
+ onDelete
108
+ });
109
+ expect(result.removedStateIds).toEqual([
110
+ 'agent_step',
111
+ 'lookup_user',
112
+ 'support_agent',
113
+ 'create_ticket'
114
+ ]);
115
+ expect(flowStore.val.value.modules.map((module) => module.id)).toEqual(['dependent_step']);
116
+ expect(flowStore.val.value.groups ?? []).toEqual([]);
117
+ expect(Object.keys(flowStateStore.val)).toEqual(['dependent_step']);
118
+ expect(selectionManager.selectId).toHaveBeenCalledWith('dependent_step');
119
+ expect(onDelete).toHaveBeenCalledWith('agent_step');
120
+ });
121
+ });
@@ -0,0 +1,48 @@
1
+ import type { GroupDisplayState } from '../graph/groupEditor.svelte';
2
+ import type { GroupedModulesProxy, PreparedStructureDelete } from '../graph/groupedModulesProxy.svelte';
3
+ import { type FlowStructureNode } from '../graph/flowStructure';
4
+ import type { FlowModule, OpenFlow } from '../../gen';
5
+ import type { AgentTool } from './agentToolUtils';
6
+ export type DeleteSelection = {
7
+ kind: 'clear';
8
+ } | {
9
+ kind: 'select';
10
+ id: string;
11
+ };
12
+ type DeleteTargetBase = {
13
+ id: string;
14
+ stateIds: string[];
15
+ };
16
+ export type PreprocessorDeleteTarget = DeleteTargetBase & {
17
+ kind: 'preprocessor';
18
+ };
19
+ export type StructureDeleteTarget = DeleteTargetBase & {
20
+ kind: 'structure_node';
21
+ };
22
+ export type AgentToolDeleteTarget = DeleteTargetBase & {
23
+ kind: 'agent_tool';
24
+ };
25
+ export type DeleteTarget = PreprocessorDeleteTarget | StructureDeleteTarget | AgentToolDeleteTarget;
26
+ export type DeletePlan = {
27
+ inputIds: string[];
28
+ targets: DeleteTarget[];
29
+ plannedStateIds: string[];
30
+ dependents: Record<string, string[]>;
31
+ selection: DeleteSelection;
32
+ structureDelete?: PreparedStructureDelete;
33
+ removeDuplicates: boolean;
34
+ };
35
+ export type ResolvedDeleteTargets = {
36
+ targets: DeleteTarget[];
37
+ missingIds: string[];
38
+ };
39
+ export declare function resolveDeleteTargets(tree: FlowStructureNode[], modules: FlowModule[], ids: string[], hasPreprocessor: boolean): ResolvedDeleteTargets;
40
+ export declare function createDeletePlan(args: {
41
+ ids: string[];
42
+ flow: OpenFlow;
43
+ tree: FlowStructureNode[];
44
+ proxy: GroupedModulesProxy;
45
+ displayState: GroupDisplayState;
46
+ }): DeletePlan | undefined;
47
+ export declare function removeDeletePlanTools(targets: DeleteTarget[], modules: FlowModule[], onRemove?: (tool: AgentTool) => void): string[];
48
+ export {};
@@ -0,0 +1,150 @@
1
+ import { findInStructure } from '../graph/flowStructure';
2
+ import { collectAgentToolIds, collectFlowNodeIds, findAgentToolOwner, removeAgentToolOwner } from './agentToolTree';
3
+ import { dfs } from './dfs';
4
+ import { getDependentComponents } from './flowExplorer';
5
+ import { findModuleInModules } from './flowTree';
6
+ export function resolveDeleteTargets(tree, modules, ids, hasPreprocessor) {
7
+ const targets = [];
8
+ const missingIds = [];
9
+ const seenIds = new Set();
10
+ for (const id of ids) {
11
+ if (seenIds.has(id)) {
12
+ continue;
13
+ }
14
+ seenIds.add(id);
15
+ if (id === 'preprocessor') {
16
+ if (hasPreprocessor) {
17
+ targets.push({ kind: 'preprocessor', id, stateIds: [id] });
18
+ }
19
+ else {
20
+ missingIds.push(id);
21
+ }
22
+ continue;
23
+ }
24
+ if (findInStructure(tree, id)) {
25
+ const module = findModuleInModules(modules, id);
26
+ if (module) {
27
+ targets.push({
28
+ kind: 'structure_node',
29
+ id,
30
+ stateIds: collectFlowNodeIds(module)
31
+ });
32
+ continue;
33
+ }
34
+ }
35
+ const owner = findAgentToolOwner(modules, id);
36
+ if (owner) {
37
+ targets.push({
38
+ kind: 'agent_tool',
39
+ id,
40
+ stateIds: collectAgentToolIds(owner.tool)
41
+ });
42
+ continue;
43
+ }
44
+ missingIds.push(id);
45
+ }
46
+ return {
47
+ targets: pruneNestedTargets(targets),
48
+ missingIds
49
+ };
50
+ }
51
+ export function createDeletePlan(args) {
52
+ const { targets } = resolveDeleteTargets(args.tree, args.flow.value.modules, args.ids, Boolean(args.flow.value.preprocessor_module));
53
+ if (targets.length === 0) {
54
+ return undefined;
55
+ }
56
+ const structureIds = targets
57
+ .filter((target) => target.kind === 'structure_node')
58
+ .map((target) => target.id);
59
+ const structureDelete = structureIds.length > 0
60
+ ? args.proxy.prepareDelete(structureIds, { displayState: args.displayState })
61
+ : undefined;
62
+ const plannedStateIds = uniqueIds(targets.flatMap((target) => target.stateIds));
63
+ return {
64
+ inputIds: args.ids,
65
+ targets,
66
+ plannedStateIds,
67
+ dependents: collectDeleteDependents(plannedStateIds, args.flow),
68
+ selection: getDeleteSelection(args.ids, plannedStateIds, args.flow.value.modules),
69
+ structureDelete,
70
+ removeDuplicates: Boolean(structureDelete?.duplicateGroups.length)
71
+ };
72
+ }
73
+ export function removeDeletePlanTools(targets, modules, onRemove) {
74
+ const removedIds = new Set();
75
+ const toolTargets = targets
76
+ .filter((target) => target.kind === 'agent_tool')
77
+ .map((target) => findAgentToolOwner(modules, target.id))
78
+ .filter((owner) => Boolean(owner))
79
+ .sort((left, right) => {
80
+ if (left.depth !== right.depth) {
81
+ return right.depth - left.depth;
82
+ }
83
+ if (left.tools === right.tools) {
84
+ return right.toolIndex - left.toolIndex;
85
+ }
86
+ return 0;
87
+ });
88
+ for (const owner of toolTargets) {
89
+ const removed = removeAgentToolOwner(owner);
90
+ if (!removed) {
91
+ continue;
92
+ }
93
+ onRemove?.(removed.tool);
94
+ for (const id of removed.removedIds) {
95
+ removedIds.add(id);
96
+ }
97
+ }
98
+ return [...removedIds];
99
+ }
100
+ function pruneNestedTargets(targets) {
101
+ const descendantIds = new Set();
102
+ for (const target of targets) {
103
+ for (const stateId of target.stateIds) {
104
+ if (stateId !== target.id) {
105
+ descendantIds.add(stateId);
106
+ }
107
+ }
108
+ }
109
+ return targets.filter((target) => !descendantIds.has(target.id));
110
+ }
111
+ function collectDeleteDependents(ids, flow) {
112
+ const deletingSet = new Set(ids);
113
+ const dependents = {};
114
+ for (const id of ids) {
115
+ const dependencies = getDependentComponents(id, flow);
116
+ for (const [dependentId, expressions] of Object.entries(dependencies)) {
117
+ if (deletingSet.has(dependentId)) {
118
+ continue;
119
+ }
120
+ dependents[dependentId] = [...(dependents[dependentId] ?? []), ...expressions];
121
+ }
122
+ }
123
+ return dependents;
124
+ }
125
+ function getDeleteSelection(ids, deletedIds, modules) {
126
+ if (ids.length !== 1) {
127
+ return { kind: 'clear' };
128
+ }
129
+ const [id] = ids;
130
+ if (id === 'preprocessor') {
131
+ return { kind: 'select', id: 'Input' };
132
+ }
133
+ const orderedIds = dfs(modules, (module) => module.id);
134
+ const index = orderedIds.indexOf(id);
135
+ const deletedSet = new Set(deletedIds);
136
+ for (let i = index - 1; i >= 0; i--) {
137
+ if (!deletedSet.has(orderedIds[i])) {
138
+ return { kind: 'select', id: orderedIds[i] };
139
+ }
140
+ }
141
+ for (let i = index + 1; i < orderedIds.length; i++) {
142
+ if (!deletedSet.has(orderedIds[i])) {
143
+ return { kind: 'select', id: orderedIds[i] };
144
+ }
145
+ }
146
+ return { kind: 'select', id: 'settings-metadata' };
147
+ }
148
+ function uniqueIds(ids) {
149
+ return [...new Set(ids)];
150
+ }
@@ -0,0 +1 @@
1
+ export {};