windmill-components 1.532.0 → 1.542.4

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 (371) hide show
  1. package/package/components/AIProviderPicker.svelte +181 -0
  2. package/package/components/AIProviderPicker.svelte.d.ts +15 -0
  3. package/package/components/ArgInfo.svelte +2 -2
  4. package/package/components/ArgInput.svelte +60 -27
  5. package/package/components/ArgInput.svelte.d.ts +3 -3
  6. package/package/components/AssignableTagsInner.svelte +89 -3
  7. package/package/components/Auth0Setting.svelte +8 -3
  8. package/package/components/ConcurrentJobsChart.svelte +36 -48
  9. package/package/components/ConcurrentJobsChart.svelte.d.ts +8 -20
  10. package/package/components/CustomPopover.svelte.d.ts +1 -1
  11. package/package/components/Dev.svelte +5 -4
  12. package/package/components/DiffDrawer.svelte +2 -2
  13. package/package/components/DiffEditor.svelte +34 -37
  14. package/package/components/DiffEditor.svelte.d.ts +23 -39
  15. package/package/components/DropdownSelect.svelte +26 -0
  16. package/package/components/DropdownSelect.svelte.d.ts +11 -0
  17. package/package/components/DropdownV2Inner.svelte +1 -1
  18. package/package/components/{DynSelect.svelte → DynamicInput.svelte} +47 -15
  19. package/package/components/DynamicInput.svelte.d.ts +11 -0
  20. package/package/components/EditableSchemaForm.svelte +155 -140
  21. package/package/components/EditableSchemaForm.svelte.d.ts +6 -7
  22. package/package/components/Editor.svelte +101 -87
  23. package/package/components/Editor.svelte.d.ts +7 -1
  24. package/package/components/EditorBar.svelte +2 -5
  25. package/package/components/FlowBuilder.svelte +10 -7
  26. package/package/components/FlowLogRow.svelte +64 -0
  27. package/package/components/FlowLogRow.svelte.d.ts +15 -0
  28. package/package/components/FlowLogViewer.svelte +406 -373
  29. package/package/components/FlowLogViewer.svelte.d.ts +5 -1
  30. package/package/components/FlowLogViewerWrapper.svelte +44 -1
  31. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  32. package/package/components/FlowPreviewContent.svelte +3 -3
  33. package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
  34. package/package/components/FlowStatusViewer.svelte +28 -0
  35. package/package/components/FlowStatusViewerInner.svelte +106 -23
  36. package/package/components/FlowStatusViewerInner.svelte.d.ts +7 -0
  37. package/package/components/FolderPicker.svelte +1 -1
  38. package/package/components/InputTransformForm.svelte +20 -10
  39. package/package/components/JobArgs.svelte +1 -1
  40. package/package/components/JobLoader.svelte.d.ts +1 -1
  41. package/package/components/JobStatus.svelte +2 -0
  42. package/package/components/LogSnippetViewer.svelte +3 -3
  43. package/package/components/LogSnippetViewer.svelte.d.ts +1 -1
  44. package/package/components/LogViewer.svelte +87 -71
  45. package/package/components/LogViewer.svelte.d.ts +1 -0
  46. package/package/components/ModulePreview.svelte +2 -1
  47. package/package/components/ModulePreview.svelte.d.ts +1 -0
  48. package/package/components/ModulePreviewForm.svelte +72 -65
  49. package/package/components/ModulePreviewResultViewer.svelte +13 -18
  50. package/package/components/ModuleTest.svelte +6 -5
  51. package/package/components/ModuleTest.svelte.d.ts +1 -0
  52. package/package/components/OktaSetting.svelte +8 -3
  53. package/package/components/Path.svelte +7 -1
  54. package/package/components/Path.svelte.d.ts +1 -1
  55. package/package/components/Portal.svelte +11 -7
  56. package/package/components/Portal.svelte.d.ts +19 -39
  57. package/package/components/PrefixedInput.svelte +120 -0
  58. package/package/components/PrefixedInput.svelte.d.ts +8 -0
  59. package/package/components/QueuePosition.svelte +81 -0
  60. package/package/components/QueuePosition.svelte.d.ts +8 -0
  61. package/package/components/ResourceNarrowing.svelte +13 -0
  62. package/package/components/ResourceNarrowing.svelte.d.ts +6 -0
  63. package/package/components/ResourceTypePicker.svelte +49 -74
  64. package/package/components/RunChart.svelte +74 -89
  65. package/package/components/RunChart.svelte.d.ts +10 -22
  66. package/package/components/RunForm.svelte +2 -2
  67. package/package/components/RunForm.svelte.d.ts +1 -1
  68. package/package/components/RunFormAdvancedPopup.svelte +13 -1
  69. package/package/components/S3FilePicker.svelte +1 -1
  70. package/package/components/SchemaForm.svelte +1 -2
  71. package/package/components/SchemaForm.svelte.d.ts +2 -2
  72. package/package/components/ScriptBuilder.svelte +3 -2
  73. package/package/components/ScriptEditor.svelte +25 -10
  74. package/package/components/ScriptEditor.svelte.d.ts +2 -1
  75. package/package/components/ServiceLogsInner.svelte +1 -1
  76. package/package/components/ShareModal.svelte.d.ts +1 -1
  77. package/package/components/SimpleEditor.svelte +4 -68
  78. package/package/components/StringTypeNarrowing.svelte +5 -10
  79. package/package/components/TemplateEditor.svelte +2 -16
  80. package/package/components/TimeAgo.svelte +1 -1
  81. package/package/components/TimeAgo.svelte.d.ts +1 -0
  82. package/package/components/Toggle.svelte +2 -1
  83. package/package/components/Toggle.svelte.d.ts +2 -1
  84. package/package/components/WorkerRepl.svelte +1 -1
  85. package/package/components/apps/components/display/AppNavbarItem.svelte +2 -1
  86. package/package/components/apps/components/display/table/AppAggridTable.svelte +44 -48
  87. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +101 -19
  88. package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +5 -2
  89. package/package/components/apps/components/display/table/utils.js +36 -5
  90. package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +10 -5
  91. package/package/components/apps/components/layout/AppModal.svelte +2 -2
  92. package/package/components/apps/editor/AppEditor.svelte +4 -3
  93. package/package/components/apps/editor/AppEditorHeader.svelte +0 -1
  94. package/package/components/apps/editor/GridViewer.svelte.d.ts +11 -4
  95. package/package/components/apps/editor/SettingsPanel.svelte +2 -2
  96. package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -2
  97. package/package/components/apps/editor/componentsPanel/ListItem.svelte +2 -2
  98. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +1 -1
  99. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  100. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  101. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +0 -1
  102. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  103. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +29 -4
  104. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +3 -1
  105. package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +3 -1
  106. package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -1
  107. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
  108. package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +55 -53
  109. package/package/components/apps/editor/settingsPanel/TableActions.svelte +3 -1
  110. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -5
  111. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +30 -11
  112. package/package/components/assets/JobAssetsViewer.svelte +28 -24
  113. package/package/components/auditLogs/AuditLogsTable.svelte +2 -6
  114. package/package/components/chartjs-wrappers/Chart.svelte.d.ts +14 -7
  115. package/package/components/common/OnChange.svelte.d.ts +11 -4
  116. package/package/components/common/badge/Badge.svelte +9 -2
  117. package/package/components/common/badge/Badge.svelte.d.ts +2 -1
  118. package/package/components/common/button/model.d.ts +1 -1
  119. package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -1
  120. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +5 -4
  121. package/package/components/common/drawer/Disposable.svelte +45 -26
  122. package/package/components/common/drawer/Disposable.svelte.d.ts +12 -44
  123. package/package/components/common/drawer/Drawer.svelte +17 -14
  124. package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
  125. package/package/components/common/menu/MenuItem.svelte.d.ts +2 -2
  126. package/package/components/common/modal/Modal.svelte.d.ts +1 -1
  127. package/package/components/common/tabs/TabContent.svelte +2 -7
  128. package/package/components/common/tabs/TabContent.svelte.d.ts +5 -27
  129. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +9 -3
  130. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
  131. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +8 -4
  132. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
  133. package/package/components/copilot/MetadataGen.svelte +14 -3
  134. package/package/components/copilot/chat/AIChatInput.svelte +0 -1
  135. package/package/components/copilot/chat/AIChatManager.svelte.js +26 -104
  136. package/package/components/copilot/chat/AssistantMessage.svelte +0 -4
  137. package/package/components/copilot/chat/AvailableContextList.svelte +192 -66
  138. package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +2 -2
  139. package/package/components/copilot/chat/ContextElementBadge.svelte +3 -3
  140. package/package/components/copilot/chat/ContextManager.svelte.js +36 -13
  141. package/package/components/copilot/chat/ContextTextarea.svelte +21 -48
  142. package/package/components/copilot/chat/ToolContentDisplay.svelte +10 -1
  143. package/package/components/copilot/chat/ToolExecutionDisplay.svelte +3 -3
  144. package/package/components/copilot/chat/anthropic.d.ts +15 -0
  145. package/package/components/copilot/chat/anthropic.js +208 -0
  146. package/package/components/copilot/chat/api/apiTools.d.ts +2 -2
  147. package/package/components/copilot/chat/api/apiTools.js +10 -7
  148. package/package/components/copilot/chat/api/core.d.ts +1 -1
  149. package/package/components/copilot/chat/api/core.js +7 -2
  150. package/package/components/copilot/chat/ask/core.d.ts +1 -1
  151. package/package/components/copilot/chat/ask/core.js +7 -2
  152. package/package/components/copilot/chat/context.d.ts +7 -2
  153. package/package/components/copilot/chat/flow/FlowAIChat.svelte +110 -8
  154. package/package/components/copilot/chat/flow/core.d.ts +12 -1
  155. package/package/components/copilot/chat/flow/core.js +133 -5
  156. package/package/components/copilot/chat/flow/uiIntents.d.ts +8 -0
  157. package/package/components/copilot/chat/flow/uiIntents.js +5 -0
  158. package/package/components/copilot/chat/flow/useUiIntent.d.ts +5 -0
  159. package/package/components/copilot/chat/flow/useUiIntent.js +12 -0
  160. package/package/components/copilot/chat/monaco-adapter.d.ts +23 -4
  161. package/package/components/copilot/chat/monaco-adapter.js +55 -16
  162. package/package/components/copilot/chat/navigator/core.d.ts +1 -1
  163. package/package/components/copilot/chat/navigator/core.js +7 -2
  164. package/package/components/copilot/chat/script/CodeDisplay.svelte +10 -111
  165. package/package/components/copilot/chat/script/core.d.ts +5 -4
  166. package/package/components/copilot/chat/script/core.js +134 -21
  167. package/package/components/copilot/chat/shared.d.ts +10 -9
  168. package/package/components/copilot/chat/shared.js +24 -12
  169. package/package/components/copilot/lib.d.ts +29 -8
  170. package/package/components/copilot/lib.js +211 -31
  171. package/package/components/copilot/shared.d.ts +1 -1
  172. package/package/components/copilot/shared.js +16 -10
  173. package/package/components/flows/FlowEditor.svelte +4 -2
  174. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  175. package/package/components/flows/FlowModuleIcon.svelte +8 -8
  176. package/package/components/flows/common/FlowCardHeader.svelte +4 -1
  177. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +6 -0
  178. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +6 -0
  179. package/package/components/flows/content/FlowEditorPanel.svelte +2 -1
  180. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
  181. package/package/components/flows/content/FlowInput.svelte +36 -39
  182. package/package/components/flows/content/FlowInput.svelte.d.ts +1 -0
  183. package/package/components/flows/content/FlowLoop.svelte +7 -0
  184. package/package/components/flows/content/FlowModuleComponent.svelte +42 -46
  185. package/package/components/flows/content/FlowModuleEarlyStop.svelte +47 -17
  186. package/package/components/flows/content/FlowModuleScript.svelte +1 -1
  187. package/package/components/flows/content/FlowModuleSleep.svelte +4 -1
  188. package/package/components/flows/content/FlowModuleSuspend.svelte +15 -18
  189. package/package/components/flows/content/FlowModuleTimeout.svelte +50 -10
  190. package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +1 -0
  191. package/package/components/flows/content/FlowRetries.svelte +108 -3
  192. package/package/components/flows/content/FlowRetries.svelte.d.ts +3 -2
  193. package/package/components/flows/content/FlowWhileLoop.svelte +6 -0
  194. package/package/components/flows/content/ScriptEditorDrawer.svelte +9 -11
  195. package/package/components/flows/dfs.d.ts +1 -1
  196. package/package/components/flows/dfs.js +6 -6
  197. package/package/components/flows/flowInfers.js +15 -42
  198. package/package/components/flows/flowStateUtils.svelte.js +1 -2
  199. package/package/components/flows/flowStore.d.ts +45 -1
  200. package/package/components/flows/flowStore.js +1 -1
  201. package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
  202. package/package/components/flows/map/FlowModuleSchemaItem.svelte +73 -80
  203. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -1
  204. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -1
  205. package/package/components/flows/map/InsertModuleButton.svelte +1 -0
  206. package/package/components/flows/map/InsertModuleInner.svelte +12 -15
  207. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +10 -9
  208. package/package/components/flows/map/MapItem.svelte +8 -4
  209. package/package/components/flows/map/VirtualItem.svelte +1 -1
  210. package/package/components/flows/pickers/TopLevelNode.svelte +1 -1
  211. package/package/components/flows/propPicker/InputPickerInner.svelte +5 -5
  212. package/package/components/flows/propPicker/OutputPickerInner.svelte +143 -118
  213. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +7 -16
  214. package/package/components/flows/{testSteps.svelte.d.ts → stepsInputArgs.svelte.d.ts} +2 -1
  215. package/package/components/flows/{testSteps.svelte.js → stepsInputArgs.svelte.js} +15 -3
  216. package/package/components/flows/types.d.ts +16 -3
  217. package/package/components/flows/utils.js +3 -0
  218. package/package/components/git_sync/DetectionFlow.svelte +15 -17
  219. package/package/components/git_sync/GitSyncContext.svelte.js +1 -1
  220. package/package/components/git_sync/GitSyncRepositoryCard.svelte +0 -1
  221. package/package/components/graph/FlowGraphV2.svelte +1 -1
  222. package/package/components/graph/graphBuilder.svelte.d.ts +5 -1
  223. package/package/components/graph/renderers/edges/BaseEdge.svelte +9 -1
  224. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +4 -1
  225. package/package/components/graph/renderers/nodes/AIToolNode.svelte +4 -4
  226. package/package/components/graph/renderers/nodes/BranchAllStart.svelte +2 -3
  227. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +2 -3
  228. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +71 -54
  229. package/package/components/graph/renderers/triggers/TriggerButton.svelte.d.ts +1 -1
  230. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +3 -1
  231. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +34 -24
  232. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte.d.ts +1 -2
  233. package/package/components/home/ItemsList.svelte +17 -13
  234. package/package/components/home/TreeView.svelte +21 -27
  235. package/package/components/home/TreeView.svelte.d.ts +2 -29
  236. package/package/components/home/TreeViewRoot.svelte +11 -23
  237. package/package/components/home/TreeViewRoot.svelte.d.ts +15 -13
  238. package/package/components/icons/GitIcon.svelte +10 -2
  239. package/package/components/icons/GitIcon.svelte.d.ts +1 -0
  240. package/package/components/meltComponents/MeltButton.svelte.d.ts +1 -1
  241. package/package/components/meltComponents/Popover.svelte +23 -3
  242. package/package/components/meltComponents/Popover.svelte.d.ts +2 -1
  243. package/package/components/monacoLanguagesOptions.d.ts +3 -0
  244. package/package/components/monacoLanguagesOptions.js +109 -0
  245. package/package/components/propertyPicker/ObjectViewer.svelte +18 -5
  246. package/package/components/propertyPicker/PropPicker.svelte +1 -1
  247. package/package/components/propertyPicker/utils.js +14 -7
  248. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +1 -1
  249. package/package/components/runs/JobRunsPreview.svelte +212 -177
  250. package/package/components/runs/JobsLoader.svelte +2 -2
  251. package/package/components/runs/JobsLoader.svelte.d.ts +1 -1
  252. package/package/components/runs/NoWorkerWithTagWarning.svelte +18 -5
  253. package/package/components/runs/RunBadges.svelte +100 -0
  254. package/package/components/runs/RunBadges.svelte.d.ts +12 -0
  255. package/package/components/runs/RunLabels.svelte +86 -0
  256. package/package/components/runs/RunLabels.svelte.d.ts +10 -0
  257. package/package/components/runs/RunOption.svelte +20 -0
  258. package/package/components/runs/RunOption.svelte.d.ts +10 -0
  259. package/package/components/runs/RunRow.svelte +239 -151
  260. package/package/components/runs/RunRow.svelte.d.ts +12 -9
  261. package/package/components/runs/RunsBatchActionsDropdown.svelte +13 -17
  262. package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +5 -18
  263. package/package/components/runs/RunsFilter.svelte +369 -243
  264. package/package/components/runs/RunsFilter.svelte.d.ts +2 -0
  265. package/package/components/runs/RunsQueue.svelte +96 -25
  266. package/package/components/runs/RunsQueue.svelte.d.ts +7 -21
  267. package/package/components/runs/RunsTable.svelte +62 -71
  268. package/package/components/runs/RunsTable.svelte.d.ts +2 -1
  269. package/package/components/runs/runs-grid.css +95 -0
  270. package/package/components/schema/AddPropertyV2.svelte +2 -7
  271. package/package/components/schema/AddPropertyV2.svelte.d.ts +3 -20
  272. package/package/components/schema/EditableSchemaDrawer.svelte +121 -127
  273. package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +2 -1
  274. package/package/components/schema/EditableSchemaSdkWrapper.svelte +16 -3
  275. package/package/components/schema/EditableSchemaSdkWrapper.svelte.d.ts +4 -1
  276. package/package/components/schema/EditableSchemaWrapper.svelte +3 -10
  277. package/package/components/schema/FlowPropertyEditor.svelte +195 -236
  278. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  279. package/package/components/schema/PropertyEditor.svelte +33 -35
  280. package/package/components/schema/SchemaFormDND.svelte +11 -10
  281. package/package/components/schema/SchemaFormDND.svelte.d.ts +4 -3
  282. package/package/components/schema/editable_schema_wrapper.d.ts +0 -3
  283. package/package/components/search/GlobalSearchModal.svelte +8 -1
  284. package/package/components/select/DraggableTags.svelte.d.ts +17 -7
  285. package/package/components/select/MultiSelect.svelte.d.ts +21 -11
  286. package/package/components/select/Select.svelte +2 -1
  287. package/package/components/select/Select.svelte.d.ts +25 -13
  288. package/package/components/select/SelectDropdown.svelte.d.ts +14 -7
  289. package/package/components/settings/PremiumInfo.svelte +7 -2
  290. package/package/components/settings/TokenDisplay.svelte +1 -1
  291. package/package/components/sidebar/OperatorMenu.svelte +5 -0
  292. package/package/components/sidebar/SidebarContent.svelte +48 -2
  293. package/package/components/sidebar/WorkspaceMenu.svelte +116 -17
  294. package/package/components/toast.js +6 -3
  295. package/package/components/triggers/AddTriggersButton.svelte +7 -6
  296. package/package/components/triggers/CaptureWrapper.svelte +21 -16
  297. package/package/components/triggers/CaptureWrapper.svelte.d.ts +1 -1
  298. package/package/components/triggers/TriggerLabel.svelte +8 -0
  299. package/package/components/triggers/TriggerTokens.svelte +1 -1
  300. package/package/components/triggers/TriggersEditor.svelte +9 -5
  301. package/package/components/triggers/TriggersTable.svelte +2 -2
  302. package/package/components/triggers/TriggersWrapper.svelte +17 -5
  303. package/package/components/triggers/TriggersWrapper.svelte.d.ts +3 -19
  304. package/package/components/{details/EmailTriggerCaptures.svelte → triggers/email/DefaultEmailCapture.svelte} +5 -5
  305. package/package/components/{details/EmailTriggerCaptures.svelte.d.ts → triggers/email/DefaultEmailCapture.svelte.d.ts} +4 -4
  306. package/package/components/{details/EmailTriggerConfigSection.svelte → triggers/email/DefaultEmailConfigSection.svelte} +24 -14
  307. package/package/components/triggers/email/DefaultEmailConfigSection.svelte.d.ts +13 -0
  308. package/package/components/triggers/email/DefaultEmailPanel.svelte +71 -0
  309. package/package/components/triggers/email/DefaultEmailPanel.svelte.d.ts +11 -0
  310. package/package/components/triggers/email/EmailCapture.svelte +39 -0
  311. package/package/components/triggers/email/EmailCapture.svelte.d.ts +43 -0
  312. package/package/components/triggers/email/EmailTriggerEditor.svelte +20 -0
  313. package/package/components/triggers/email/EmailTriggerEditor.svelte.d.ts +11 -0
  314. package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte +133 -0
  315. package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte.d.ts +14 -0
  316. package/package/components/triggers/email/EmailTriggerEditorInner.svelte +335 -0
  317. package/package/components/triggers/email/EmailTriggerEditorInner.svelte.d.ts +22 -0
  318. package/package/components/triggers/email/EmailTriggerPanel.svelte +61 -0
  319. package/package/components/triggers/email/EmailTriggerPanel.svelte.d.ts +14 -0
  320. package/package/components/triggers/email/utils.d.ts +4 -0
  321. package/package/components/triggers/email/utils.js +52 -0
  322. package/package/components/triggers/http/RouteEditorConfigSection.svelte +1 -1
  323. package/package/components/triggers/http/RouteEditorInner.svelte +1 -1
  324. package/package/components/triggers/http/utils.js +1 -1
  325. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +23 -20
  326. package/package/components/triggers/nats/NatsTriggersConfigSection.svelte +15 -27
  327. package/package/components/triggers/nats/NatsTriggersConfigSection.svelte.d.ts +7 -5
  328. package/package/components/triggers/triggers.svelte.d.ts +1 -0
  329. package/package/components/triggers/triggers.svelte.js +24 -2
  330. package/package/components/triggers/utils.js +19 -5
  331. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +16 -16
  332. package/package/components/triggers.d.ts +1 -1
  333. package/package/components/triggers.js +2 -0
  334. package/package/components/wizards/AgGridWizard.svelte +85 -80
  335. package/package/components/workspaceSettings/AISettings.svelte +74 -22
  336. package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
  337. package/package/components/workspaceSettings/CreateWorkspace.svelte +395 -0
  338. package/package/components/workspaceSettings/CreateWorkspace.svelte.d.ts +6 -0
  339. package/package/components/workspaceSettings/DucklakeSettings.svelte +3 -1
  340. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +1 -1
  341. package/package/components/workspaceSettings/StorageSettings.svelte +69 -48
  342. package/package/gen/core/OpenAPI.js +1 -1
  343. package/package/gen/schemas.gen.d.ts +142 -3
  344. package/package/gen/schemas.gen.js +144 -3
  345. package/package/gen/services.gen.d.ts +129 -1
  346. package/package/gen/services.gen.js +267 -1
  347. package/package/gen/types.gen.d.ts +434 -8
  348. package/package/hubPaths.json +6 -2
  349. package/package/infer.js +1 -1
  350. package/package/keyboardChain.d.ts +5 -0
  351. package/package/keyboardChain.js +40 -0
  352. package/package/script_helpers.d.ts +2 -2
  353. package/package/script_helpers.js +2 -0
  354. package/package/services/JobManager.js +2 -2
  355. package/package/stores.d.ts +4 -1
  356. package/package/stores.js +16 -6
  357. package/package/utils/workspaceHierarchy.d.ts +27 -0
  358. package/package/utils/workspaceHierarchy.js +101 -0
  359. package/package/utils.d.ts +6 -3
  360. package/package/utils.js +30 -15
  361. package/package/workspace_settings.js +2 -3
  362. package/package.json +10 -12
  363. package/package/components/DynSelect.svelte.d.ts +0 -11
  364. package/package/components/ModulePreviewResultViewer.svelte.d.ts +0 -28
  365. package/package/components/ObjectTypeNarrowing.svelte +0 -18
  366. package/package/components/ObjectTypeNarrowing.svelte.d.ts +0 -22
  367. package/package/components/details/DetailPageTriggerPanel.svelte +0 -121
  368. package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +0 -20
  369. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +0 -12
  370. package/package/components/details/EmailTriggerPanel.svelte +0 -76
  371. package/package/components/details/EmailTriggerPanel.svelte.d.ts +0 -26
@@ -19,14 +19,14 @@ import CaptureButton from '../../triggers/CaptureButton.svelte';
19
19
  import { getFullPath, setNestedProperty, getNestedProperty, schemaFromDiff, computeDiff, applyDiff } from '../../schema/schemaUtils.svelte';
20
20
  import SideBarTab from '../../meltComponents/SideBarTab.svelte';
21
21
  import CaptureTable from '../../triggers/CaptureTable.svelte';
22
- import { isObjectTooBig } from '../../../utils';
22
+ import { isObjectTooBig, readFieldsRecursively } from '../../../utils';
23
23
  import { refreshStateStore } from '../../../svelte5Utils.svelte';
24
- let { noEditor, disabled, onTestFlow } = $props();
24
+ import { deepEqual } from 'fast-equals';
25
+ let { noEditor, disabled, onTestFlow, previewOpen } = $props();
25
26
  const { flowStore, previewArgs, pathStore, initialPathStore, fakeInitialPath, flowInputEditorState } = getContext('FlowEditorContext');
26
27
  let addPropertyV2 = $state(undefined);
27
28
  let previewSchema = $state(undefined);
28
29
  let payloadData = undefined;
29
- let previewArguments = $state(previewArgs.val);
30
30
  let dropdownItems = $state([]);
31
31
  let diff = $state({});
32
32
  let editPanelSize = $state($flowInputEditorState?.editPanelSize ?? 0);
@@ -35,8 +35,8 @@ let runDisabled = $state(false);
35
35
  let editableSchemaForm = $state(undefined);
36
36
  let savedPreviewArgs = $state(undefined);
37
37
  let isValid = $state(true);
38
- let dynSelectCode = $state(undefined);
39
- let dynSelectLang = $state(undefined);
38
+ let dynCode = $state(undefined);
39
+ let dynLang = $state(undefined);
40
40
  function updateEditPanelSize(size) {
41
41
  if (!$flowInputEditorState)
42
42
  return;
@@ -148,7 +148,9 @@ function schemaFromPayload(payloadData) {
148
148
  }
149
149
  function handleKeydown(event) {
150
150
  if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {
151
- runPreview();
151
+ if (!previewOpen) {
152
+ runPreview();
153
+ }
152
154
  }
153
155
  else if (event.key === 'Enter' && previewSchema && !preventEnter) {
154
156
  applySchemaAndArgs();
@@ -158,9 +160,6 @@ function handleKeydown(event) {
158
160
  }
159
161
  }
160
162
  function runPreview() {
161
- if (previewArguments) {
162
- previewArgs.val = structuredClone($state.snapshot(previewArguments));
163
- }
164
163
  onTestFlow?.();
165
164
  }
166
165
  function updatePreviewSchemaAndArgs(payload) {
@@ -198,8 +197,8 @@ async function updatePreviewSchema(newSchema) {
198
197
  }
199
198
  async function applySchemaAndArgs() {
200
199
  flowStore.val.schema = applyDiff(flowStore.val.schema, diff);
201
- if (previewArguments) {
202
- savedPreviewArgs = structuredClone($state.snapshot(previewArguments));
200
+ if (previewArgs.val) {
201
+ savedPreviewArgs = structuredClone($state.snapshot(previewArgs.val));
203
202
  }
204
203
  updatePreviewSchemaAndArgs(undefined);
205
204
  if ($flowInputEditorState) {
@@ -208,11 +207,13 @@ async function applySchemaAndArgs() {
208
207
  }
209
208
  function updatePreviewArguments(payloadData) {
210
209
  if (!payloadData) {
211
- previewArguments = savedPreviewArgs;
210
+ if (savedPreviewArgs) {
211
+ previewArgs.val = savedPreviewArgs;
212
+ }
212
213
  return;
213
214
  }
214
- savedPreviewArgs = structuredClone($state.snapshot(previewArguments));
215
- previewArguments = structuredClone($state.snapshot(payloadData));
215
+ savedPreviewArgs = structuredClone($state.snapshot(previewArgs.val));
216
+ previewArgs.val = structuredClone($state.snapshot(payloadData));
216
217
  }
217
218
  let tabButtonWidth = 0;
218
219
  let connectFirstNode = $state(() => { });
@@ -267,10 +268,17 @@ function handleChange(arg, currentSchema, diffSchema, updateCurrentSchema) {
267
268
  }
268
269
  function resetArgs() {
269
270
  if (!previewSchema) {
270
- // previewArguments = undefined
271
271
  savedPreviewArgs = undefined;
272
272
  }
273
273
  }
274
+ $effect(() => {
275
+ if (!previewArgs && savedPreviewArgs != undefined) {
276
+ readFieldsRecursively(flowStore.val.schema);
277
+ untrack(() => {
278
+ resetArgs();
279
+ });
280
+ }
281
+ });
274
282
  let historicInputs = $state(undefined);
275
283
  let captureTable = $state(undefined);
276
284
  let savedInputsPicker = $state(undefined);
@@ -295,17 +303,14 @@ function resetSelected() {
295
303
  bind:this={editableSchemaForm}
296
304
  bind:schema={flowStore.val.schema}
297
305
  isFlowInput
298
- on:edit={(e) => {
299
- addPropertyV2?.openDrawer(e.detail)
300
- }}
301
306
  on:delete={(e) => {
302
307
  addPropertyV2?.handleDeleteArgument([e.detail])
303
308
  }}
304
- showDynSelectOpt
309
+ showDynOpt
305
310
  displayWebhookWarning
306
311
  editTab={$flowInputEditorState?.selectedTab}
307
312
  {previewSchema}
308
- bind:args={previewArguments}
313
+ bind:args={previewArgs.val}
309
314
  bind:editPanelSize={
310
315
  () => {
311
316
  return editPanelSize
@@ -331,19 +336,17 @@ function resetSelected() {
331
336
  })
332
337
  }}
333
338
  shouldDispatchChanges={true}
334
- on:change={() => {
335
- previewArguments = previewArguments
339
+ onChange={() => {
336
340
  if (!previewSchema) {
337
- savedPreviewArgs = structuredClone($state.snapshot(previewArguments))
341
+ let args = $state.snapshot(previewArgs.val)
342
+ if (!deepEqual(args, savedPreviewArgs)) {
343
+ savedPreviewArgs = args
344
+ }
338
345
  }
339
- refreshStateStore(flowStore)
340
- }}
341
- on:schemaChange={() => {
342
- resetArgs()
343
346
  }}
344
347
  bind:isValid
345
- bind:dynSelectCode
346
- bind:dynSelectLang
348
+ bind:dynCode
349
+ bind:dynLang
347
350
  >
348
351
  {#snippet openEditTab()}
349
352
  <div class={twMerge('flex flex-row divide-x', ButtonType.ColorVariants.blue.divider)}>
@@ -408,15 +411,9 @@ function resetSelected() {
408
411
  <AddPropertyV2
409
412
  bind:schema={flowStore.val.schema}
410
413
  bind:this={addPropertyV2}
411
- on:change={() => {
412
- refreshStateStore(flowStore)
413
- if (editableSchemaForm) {
414
- editableSchemaForm.updateJson()
415
- }
416
- }}
417
- on:addNew={(e) => {
414
+ onAddNew={(argName) => {
418
415
  handleEditSchema('inputEditor')
419
- editableSchemaForm?.openField(e.detail)
416
+ editableSchemaForm?.openField(argName)
420
417
  refreshStateStore(flowStore)
421
418
  }}
422
419
  >
@@ -493,7 +490,7 @@ function resetSelected() {
493
490
  on:isEditing={(e) => {
494
491
  preventEnter = e.detail
495
492
  }}
496
- previewArgs={previewArguments}
493
+ previewArgs={previewArgs.val}
497
494
  {isValid}
498
495
  limitPayloadSize
499
496
  bind:this={savedInputsPicker}
@@ -516,7 +513,7 @@ function resetSelected() {
516
513
  on:select={(e) => {
517
514
  updatePreviewSchemaAndArgs(e.detail ?? undefined)
518
515
  }}
519
- selected={!!previewArguments}
516
+ selected={!!previewArgs.val}
520
517
  bind:this={jsonInputs}
521
518
  />
522
519
  </FlowInputEditor>
@@ -2,6 +2,7 @@ interface Props {
2
2
  noEditor: boolean;
3
3
  disabled: boolean;
4
4
  onTestFlow?: () => void;
5
+ previewOpen: boolean;
5
6
  }
6
7
  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> {
7
8
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
@@ -20,10 +20,17 @@ import FlowModuleSkip from './FlowModuleSkip.svelte';
20
20
  import FlowPlugConnect from '../../FlowPlugConnect.svelte';
21
21
  import PropPickerWrapper, { CONNECT } from '../propPicker/PropPickerWrapper.svelte';
22
22
  import TabsV2 from '../../common/tabs/TabsV2.svelte';
23
+ import { useUiIntent } from '../../copilot/chat/flow/useUiIntent';
23
24
  const { previewArgs, flowStateStore, flowStore, currentEditor } = getContext('FlowEditorContext');
24
25
  let { mod = $bindable(), parentModule, previousModule, noEditor, enableAi = false } = $props();
25
26
  let editor = $state(undefined);
26
27
  let selected = $state('early-stop');
28
+ // UI Intent handling for AI tool control
29
+ useUiIntent(`forloopflow-${mod.id}`, {
30
+ openTab: (tab) => {
31
+ selected = tab;
32
+ }
33
+ });
27
34
  const { flowPropPickerConfig } = getContext('PropPickerContext');
28
35
  flowPropPickerConfig.set(undefined);
29
36
  let stepPropPicker = $derived(getStepPropPicker(flowStateStore.val, parentModule, previousModule, mod.id, flowStore.val, previewArgs.val, false));
@@ -30,7 +30,7 @@ import InputTransformSchemaForm from '../../InputTransformSchemaForm.svelte';
30
30
  import FlowModuleMockTransitionMessage from './FlowModuleMockTransitionMessage.svelte';
31
31
  import Tooltip from '../../Tooltip.svelte';
32
32
  import { SecondsInput } from '../../common';
33
- import DiffEditor from '../../DiffEditor.svelte';
33
+ import DiffEditor, {} from '../../DiffEditor.svelte';
34
34
  import FlowModuleTimeout from './FlowModuleTimeout.svelte';
35
35
  import HighlightCode from '../../HighlightCode.svelte';
36
36
  import ToggleButtonGroup from '../../common/toggleButton-v2/ToggleButtonGroup.svelte';
@@ -41,18 +41,29 @@ import { enterpriseLicense } from '../../../stores';
41
41
  import { isCloudHosted } from '../../../cloud';
42
42
  import { loadSchemaFromModule } from '../flowInfers';
43
43
  import FlowModuleSkip from './FlowModuleSkip.svelte';
44
- import { JobService } from '../../../gen';
44
+ import {} from '../../../gen';
45
45
  import { workspaceStore } from '../../../stores';
46
46
  import { checkIfParentLoop } from '../utils';
47
47
  import ModulePreviewResultViewer from '../../ModulePreviewResultViewer.svelte';
48
48
  import { refreshStateStore } from '../../../svelte5Utils.svelte';
49
49
  import { getStepHistoryLoaderContext } from '../../stepHistoryLoader.svelte';
50
50
  import AssetsDropdownButton from '../../assets/AssetsDropdownButton.svelte';
51
+ import { useUiIntent } from '../../copilot/chat/flow/useUiIntent';
52
+ import { editor as meditor } from 'monaco-editor';
51
53
  const { selectedId, currentEditor, previewArgs, flowStateStore, flowStore, pathStore, saveDraft, customUi, executionCount } = getContext('FlowEditorContext');
52
54
  let { flowModule = $bindable(), failureModule = false, preprocessorModule = false, parentModule = $bindable(), previousModule, scriptKind = 'script', scriptTemplate = 'script', noEditor, enableAi, savedModule = undefined, forceTestTab = false, highlightArg = undefined, isAgentTool = false } = $props();
53
55
  let workspaceScriptTag = $state(undefined);
54
56
  let workspaceScriptLang = $state(undefined);
55
57
  let diffMode = $state(false);
58
+ let diffButtons = $state([
59
+ {
60
+ text: 'Quit diff mode',
61
+ color: 'red',
62
+ onClick: () => {
63
+ hideDiffMode();
64
+ }
65
+ }
66
+ ]);
56
67
  let editor = $state();
57
68
  let diffEditor = $state();
58
69
  let modulePreview = $state();
@@ -69,11 +80,16 @@ let advancedRuntimeSelected = $state('concurrency');
69
80
  let s3Kind = $state('s3_client');
70
81
  let validCode = $state(true);
71
82
  let width = $state(1200);
72
- let lastJob = $state(undefined);
73
83
  let testJob = $state(undefined);
74
84
  let testIsLoading = $state(false);
75
85
  let scriptProgress = $state(undefined);
76
86
  let assets = $derived((flowModule.value.type === 'rawscript' && flowModule.value.assets) || []);
87
+ // UI Intent handling for AI tool control
88
+ useUiIntent(`flow-${flowModule.id}`, {
89
+ openTab: (tab) => {
90
+ selectAdvanced(tab);
91
+ }
92
+ });
77
93
  function onModulesChange(savedModule, flowModule) {
78
94
  // console.log('onModulesChange', savedModule, flowModule)
79
95
  return savedModule?.value?.type === 'rawscript' &&
@@ -138,41 +154,16 @@ let forceReload = $state(0);
138
154
  let editorPanelSize = $state(noEditor ? 0 : flowModule.value.type == 'script' ? 30 : 50);
139
155
  let editorSettingsPanelSize = $state(100 - untrack(() => editorPanelSize));
140
156
  let stepHistoryLoader = getStepHistoryLoaderContext();
141
- let lastJobId = undefined;
142
157
  function onSelectedIdChange() {
143
158
  if (!flowStateStore?.val?.[$selectedId]?.schema && flowModule) {
144
159
  reload(flowModule);
145
160
  }
146
- lastJobId = undefined;
147
- }
148
- async function getLastJob() {
149
- if (!flowStateStore ||
150
- !flowModule.id ||
151
- flowStateStore.val[flowModule.id]?.previewResult === 'never tested this far' ||
152
- !flowStateStore.val[flowModule.id]?.previewJobId) {
153
- return;
154
- }
155
- if (lastJobId == flowStateStore.val[flowModule.id]?.previewJobId ||
156
- lastJob?.id == flowStateStore.val[flowModule.id]?.previewJobId ||
157
- flowStateStore.val[flowModule.id]?.previewSuccess == undefined) {
158
- return;
159
- }
160
- lastJobId = flowStateStore.val[flowModule.id]?.previewJobId;
161
- const job = await JobService.getJob({
162
- workspace: $workspaceStore ?? '',
163
- id: flowStateStore.val[flowModule.id]?.previewJobId ?? '',
164
- noCode: true
165
- });
166
- if (job && job.type === 'CompletedJob') {
167
- lastJobId = flowStateStore.val[flowModule.id]?.previewJobId;
168
- lastJob = job;
169
- }
170
161
  }
171
162
  let leftPanelSize = $state(0);
172
163
  function showDiffMode() {
173
164
  diffMode = true;
174
165
  diffEditor?.setOriginal((savedModule?.value).content ?? '');
175
- diffEditor?.setModified(editor?.getCode() ?? '');
166
+ diffEditor?.setModifiedModel(editor?.getModel());
176
167
  diffEditor?.show();
177
168
  editor?.hide();
178
169
  }
@@ -188,14 +179,6 @@ let stepPropPicker = $derived($executionCount != undefined && failureModule
188
179
  $effect.pre(() => {
189
180
  $selectedId && untrack(() => onSelectedIdChange());
190
181
  });
191
- $effect(() => {
192
- if (testJob && testJob.type === 'CompletedJob') {
193
- lastJob = $state.snapshot(testJob);
194
- }
195
- else if ($workspaceStore && $pathStore && flowModule?.id && flowStateStore) {
196
- untrack(() => getLastJob());
197
- }
198
- });
199
182
  let parentLoop = $derived(flowStore.val && flowModule ? checkIfParentLoop(flowStore.val, flowModule.id) : undefined);
200
183
  $effect(() => {
201
184
  if (selected === 'test') {
@@ -214,7 +197,13 @@ $effect(() => {
214
197
  showDiffMode,
215
198
  hideDiffMode,
216
199
  diffMode,
217
- lastDeployedCode
200
+ lastDeployedCode,
201
+ setDiffOriginal: (code) => {
202
+ diffEditor?.setOriginal(code ?? '');
203
+ },
204
+ setDiffButtons: (buttons) => {
205
+ diffButtons = buttons;
206
+ }
218
207
  });
219
208
  });
220
209
  onDestroy(() => {
@@ -234,6 +223,10 @@ $effect(() => {
234
223
  }
235
224
  });
236
225
  let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.value.language : undefined);
226
+ let modulePreviewResultViewer = $state(undefined);
227
+ function onJobDone() {
228
+ modulePreviewResultViewer?.getOutputPickerInner()?.setJobPreview();
229
+ }
237
230
  </script>
238
231
 
239
232
  <svelte:window onkeydown={onKeyDown} />
@@ -395,13 +388,12 @@ let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.v
395
388
  <DiffEditor
396
389
  open={false}
397
390
  bind:this={diffEditor}
391
+ modifiedModel={editor?.getModel() as meditor.ITextModel}
398
392
  automaticLayout
399
393
  fixedOverflowWidgets
400
394
  defaultLang={scriptLangToEditorLang(flowModule.value.language)}
401
- class="h-full"
402
- showButtons={diffMode}
403
- showHistoryButton={false}
404
- on:hideDiffMode={hideDiffMode}
395
+ className="h-full"
396
+ buttons={diffMode ? diffButtons : []}
405
397
  />
406
398
  {/key}
407
399
  {/if}
@@ -508,6 +500,7 @@ let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.v
508
500
  bind:testIsLoading
509
501
  bind:scriptProgress
510
502
  focusArg={highlightArg}
503
+ {onJobDone}
511
504
  />
512
505
  {:else if selected === 'advanced'}
513
506
  <Tabs bind:selected={advancedSelected}>
@@ -571,7 +564,7 @@ let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.v
571
564
  </Tooltip>
572
565
  </div>
573
566
  <div class="my-8"></div>
574
- <FlowRetries bind:flowModuleRetry={flowModule.retry} />
567
+ <FlowRetries bind:flowModuleRetry={flowModule.retry} bind:flowModule />
575
568
  </Section>
576
569
  {:else if advancedSelected === 'runtime' && advancedRuntimeSelected === 'concurrency'}
577
570
  <Section label="Concurrency limits" class="flex flex-col gap-4" eeOnly>
@@ -633,7 +626,10 @@ let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.v
633
626
  </Section>
634
627
  {:else if advancedSelected === 'runtime' && advancedRuntimeSelected === 'timeout'}
635
628
  <div>
636
- <FlowModuleTimeout bind:flowModule />
629
+ <FlowModuleTimeout
630
+ previousModuleId={previousModule?.id}
631
+ bind:flowModule
632
+ />
637
633
  </div>
638
634
  {:else if advancedSelected === 'runtime' && advancedRuntimeSelected === 'priority'}
639
635
  <Section label="Priority" class="flex flex-col gap-4">
@@ -812,15 +808,15 @@ let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.v
812
808
  flowModule = flowModule
813
809
  refreshStateStore(flowStore)
814
810
  }}
815
- {lastJob}
816
- {scriptProgress}
817
811
  {testJob}
812
+ {scriptProgress}
818
813
  mod={flowModule}
819
814
  {testIsLoading}
820
815
  disableMock={preprocessorModule || failureModule}
821
816
  disableHistory={failureModule}
822
817
  loadingJob={stepHistoryLoader?.stepStates[flowModule.id]?.loadingJobs}
823
818
  tagLabel={customUi?.tagLabel}
819
+ bind:this={modulePreviewResultViewer}
824
820
  />
825
821
  </Pane>
826
822
  {/if}
@@ -11,40 +11,50 @@ const { flowStateStore, flowStore, previewArgs } = getContext('FlowEditorContext
11
11
  let { flowModule = $bindable() } = $props();
12
12
  let editor = $state(undefined);
13
13
  let stepPropPicker = $derived(getStepPropPicker(flowStateStore.val, undefined, undefined, flowModule.id, flowStore.val, previewArgs.val, false));
14
- function checkIfParentLoop(flowStoreValue) {
14
+ function checkIfBreakableParent(flowStoreValue) {
15
15
  const flow = JSON.parse(JSON.stringify(flowStoreValue));
16
16
  const parents = dfs(flowModule.id, flow, true);
17
17
  for (const parent of parents.slice(1)) {
18
18
  if (parent.value.type === 'forloopflow' || parent.value.type === 'whileloopflow') {
19
- return parent.id;
19
+ return { stepId: parent.id, isParallel: parent.value.parallel ?? false, type: 'loop' };
20
+ }
21
+ else if (parent.value.type === 'branchall' && parent.value.parallel) {
22
+ return { stepId: parent.id, isParallel: true, type: 'branchall' };
20
23
  }
21
24
  }
22
25
  return null;
23
26
  }
24
27
  let raise_error_message_stop_after_all_if = $state(flowModule.stop_after_all_iters_if?.error_message !== undefined);
25
28
  let raise_error_message_stop_after_if = $state(flowModule.stop_after_if?.error_message !== undefined);
26
- let isLoop = $derived(flowModule.value.type === 'forloopflow' || flowModule.value.type === 'whileloopflow');
29
+ let { isLoop, isParallelLoop } = $derived(flowModule.value.type === 'forloopflow' || flowModule.value.type === 'whileloopflow'
30
+ ? { isLoop: true, isParallelLoop: flowModule.value.parallel ?? false }
31
+ : { isLoop: false, isParallelLoop: false });
27
32
  let isBranchAll = $derived(flowModule.value.type === 'branchall');
28
33
  let isStopAfterIfEnabled = $derived(Boolean(flowModule.stop_after_if));
29
34
  let isStopAfterAllIterationsEnabled = $derived(Boolean(flowModule.stop_after_all_iters_if));
30
35
  let result = $derived(flowStateStore.val[flowModule.id]?.previewResult ?? NEVER_TESTED_THIS_FAR);
31
- let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
36
+ let breakableParent = $derived(checkIfBreakableParent(flowStore.val));
32
37
  </script>
33
38
 
34
39
  <div class="flex flex-col items-start space-y-2">
35
- {#if !isBranchAll}
40
+ {#if !isBranchAll && !isParallelLoop}
36
41
  <Section
37
42
  label={(isLoop
38
43
  ? 'Break loop'
39
- : parentLoopId
40
- ? 'Break parent loop module ' + parentLoopId
44
+ : breakableParent
45
+ ? breakableParent.isParallel
46
+ ? breakableParent.type === 'loop'
47
+ ? 'Skip rest of steps in iteration'
48
+ : 'Skip rest of steps in branch'
49
+ : 'Break parent loop module ' + breakableParent.stepId
41
50
  : 'Stop flow early') + (isLoop ? ' (evaluated after each iteration)' : '')}
42
51
  class="w-full"
43
52
  >
44
53
  {#snippet header()}
45
54
  <Tooltip documentationLink="https://www.windmill.dev/docs/flows/early_stop">
46
55
  If defined, at the end of the step, the predicate expression will be evaluated to decide
47
- if the flow should stop early or break if inside a for/while loop.
56
+ if the flow should stop early, skip rest of steps in iteration/branch if inside a parallel
57
+ for loop or branch all, or break if inside a for/while loop or branch all.
48
58
  </Tooltip>
49
59
  {/snippet}
50
60
 
@@ -64,8 +74,12 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
64
74
  options={{
65
75
  right: isLoop
66
76
  ? 'Break loop'
67
- : parentLoopId
68
- ? 'Break parent loop module'
77
+ : breakableParent
78
+ ? breakableParent.isParallel
79
+ ? breakableParent.type === 'loop'
80
+ ? 'Skip rest of steps in iteration'
81
+ : 'Skip rest of steps in branch'
82
+ : 'Break parent loop module'
69
83
  : 'Stop flow if condition met'
70
84
  }}
71
85
  />
@@ -83,7 +97,7 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
83
97
  ? result
84
98
  : undefined
85
99
  : result}
86
- {#if !parentLoopId && !isLoop}
100
+ {#if !breakableParent && !isLoop}
87
101
  <div class="flex flex-col gap-2">
88
102
  <Toggle
89
103
  size="xs"
@@ -140,15 +154,17 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
140
154
  </PropPickerWrapper>
141
155
  </div>
142
156
  {:else}
143
- {#if !parentLoopId && !isLoop}
157
+ {#if !breakableParent && !isLoop}
144
158
  <div class="flex flex-col gap-2">
145
159
  <Toggle
160
+ disabled
146
161
  size="xs"
147
162
  options={{
148
163
  right: 'Label flow as "skipped" if stopped'
149
164
  }}
150
165
  />
151
166
  <Toggle
167
+ disabled
152
168
  size="xs"
153
169
  options={{
154
170
  right: 'Raise an error message if stopped'
@@ -165,7 +181,13 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
165
181
 
166
182
  {#if isLoop || isBranchAll}
167
183
  <Section
168
- label={(parentLoopId ? 'Break parent loop module ' + parentLoopId : 'Stop flow early') +
184
+ label={(breakableParent
185
+ ? breakableParent.isParallel
186
+ ? breakableParent.type === 'loop'
187
+ ? 'Skip rest of steps in iteration'
188
+ : 'Skip rest of steps in branch'
189
+ : 'Break parent loop module ' + breakableParent.stepId
190
+ : 'Stop flow early') +
169
191
  (isBranchAll
170
192
  ? ' (evaluated after all branches have been run)'
171
193
  : ' (evaluated after all iterations)')}
@@ -174,7 +196,8 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
174
196
  {#snippet header()}
175
197
  <Tooltip documentationLink="https://www.windmill.dev/docs/flows/early_stop">
176
198
  If defined, at the end of the step, the predicate expression will be evaluated to decide
177
- if the flow should stop early or break if inside a for/while loop.
199
+ if the flow should stop early, skip rest of steps in iteration/branch if inside a parallel
200
+ for loop or branch all, or break if inside a for/while loop or branch all.
178
201
  </Tooltip>
179
202
  {/snippet}
180
203
 
@@ -192,7 +215,14 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
192
215
  }
193
216
  }}
194
217
  options={{
195
- right: (parentLoopId ? 'Break parent loop module' : 'Stop flow') + ' if condition met'
218
+ right:
219
+ (breakableParent
220
+ ? breakableParent.isParallel
221
+ ? breakableParent.type === 'loop'
222
+ ? 'Skip rest of steps in iteration'
223
+ : 'Skip rest of steps in branch'
224
+ : 'Break parent loop module ' + breakableParent.stepId
225
+ : 'Stop flow') + ' if condition met'
196
226
  }}
197
227
  />
198
228
 
@@ -202,7 +232,7 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
202
232
  : 'bg-surface-secondary'}"
203
233
  >
204
234
  {#if flowModule.stop_after_all_iters_if}
205
- {#if !parentLoopId}
235
+ {#if !breakableParent}
206
236
  <div class="flex flex-col gap-2">
207
237
  <Toggle
208
238
  size="xs"
@@ -258,7 +288,7 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
258
288
  </PropPickerWrapper>
259
289
  </div>
260
290
  {:else}
261
- {#if !parentLoopId}
291
+ {#if !breakableParent}
262
292
  <div class="flex flex-col gap-2">
263
293
  <Toggle
264
294
  disabled
@@ -101,7 +101,7 @@ $effect.pre(() => {
101
101
  {:then Module}
102
102
  <Module.default
103
103
  open={true}
104
- class="h-screen"
104
+ className="h-screen"
105
105
  readOnly
106
106
  automaticLayout
107
107
  defaultLang={scriptLangToEditorLang(language)}
@@ -7,13 +7,15 @@ import PropPickerWrapper from '../propPicker/PropPickerWrapper.svelte';
7
7
  import { SecondsInput } from '../../common';
8
8
  import Section from '../../Section.svelte';
9
9
  import Label from '../../Label.svelte';
10
+ import { getStepPropPicker } from '../previousResults';
10
11
  let { flowModule = $bindable(), previousModuleId } = $props();
11
- const { selectedId, flowStateStore } = getContext('FlowEditorContext');
12
+ const { selectedId, flowStore, flowStateStore, previewArgs } = getContext('FlowEditorContext');
12
13
  let schema = $state(emptySchema());
13
14
  schema.properties['sleep'] = {
14
15
  type: 'number'
15
16
  };
16
17
  let editor = $state(undefined);
18
+ let stepPropPicker = $derived(getStepPropPicker(flowStateStore.val, undefined, undefined, flowModule.id, flowStore.val, previewArgs.val, false));
17
19
  const result = flowStateStore.val[$selectedId]?.previewResult ?? {};
18
20
  let isSleepEnabled = $derived(Boolean(flowModule.sleep));
19
21
  </script>
@@ -47,6 +49,7 @@ let isSleepEnabled = $derived(Boolean(flowModule.sleep));
47
49
  <div class="border">
48
50
  <PropPickerWrapper
49
51
  noFlowPlugConnect={true}
52
+ flow_input={stepPropPicker.pickableProperties.flow_input}
50
53
  notSelectable
51
54
  {result}
52
55
  displayContext={false}
@@ -1,5 +1,4 @@
1
- <script lang="ts">import { run } from 'svelte/legacy';
2
- import Toggle from '../../Toggle.svelte';
1
+ <script lang="ts">import Toggle from '../../Toggle.svelte';
3
2
  import Tooltip from '../../Tooltip.svelte';
4
3
  import InputTransformForm from '../../InputTransformForm.svelte';
5
4
  import { getContext, tick, untrack } from 'svelte';
@@ -32,13 +31,25 @@ async function loadGroups() {
32
31
  }
33
32
  };
34
33
  }
35
- run(() => {
34
+ $effect(() => {
36
35
  if ($workspaceStore && allUserGroups.length === 0) {
37
36
  untrack(() => {
38
37
  loadGroups();
39
38
  });
40
39
  }
41
40
  });
41
+ $effect(() => {
42
+ // If the schema is empty, remove the form
43
+ if (Object.keys(flowModule?.suspend?.resume_form?.schema?.properties ?? {}).length === 0) {
44
+ untrack(() => {
45
+ tick().then(() => {
46
+ if (!flowModule.suspend)
47
+ return;
48
+ flowModule.suspend.resume_form = undefined;
49
+ });
50
+ });
51
+ }
52
+ });
42
53
  let jsonView = $state(false);
43
54
  </script>
44
55
 
@@ -216,21 +227,7 @@ let jsonView = $state(false);
216
227
  <div class="grid grid-cols-4 mt-4 gap-8">
217
228
  <div class="col-span-2">
218
229
  {#if flowModule?.suspend?.resume_form}
219
- <EditableSchemaDrawer
220
- bind:schema={flowModule.suspend.resume_form.schema}
221
- on:change={(e) => {
222
- const schema = e.detail
223
-
224
- // If the schema is empty, remove the form
225
- if (Object.keys(schema?.properties ?? {}).length === 0) {
226
- tick().then(() => {
227
- if (!flowModule.suspend) return
228
- flowModule.suspend.resume_form = undefined
229
- })
230
- }
231
- }}
232
- {jsonView}
233
- />
230
+ <EditableSchemaDrawer bind:schema={flowModule.suspend.resume_form.schema} {jsonView} />
234
231
  {:else if emptyString($enterpriseLicense)}
235
232
  <Alert type="warning" title="Adding a form to the approval page is an EE feature" />
236
233
  {:else}