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
@@ -11,14 +11,18 @@
11
11
  "gitSync_9": "hub/19738/sync-script-to-git-repo-windmill",
12
12
  "gitSync_10": "hub/19785/sync-script-to-git-repo-windmill",
13
13
  "gitSync_11": "hub/19789/sync-script-to-git-repo-windmill",
14
- "gitSync": "hub/19798/sync-script-to-git-repo-windmill",
14
+ "gitSync_12": "hub/19798/sync-script-to-git-repo-windmill",
15
+ "gitSync_13": "hub/19801/sync-script-to-git-repo-windmill",
16
+ "gitSync_14": "hub/19803/sync-script-to-git-repo-windmill",
17
+ "gitSync": "hub/19816/sync-script-to-git-repo-windmill",
15
18
  "gitSyncTest_0": "hub/9073/git-repo-test-read-write-windmill",
16
19
  "gitSyncTest_1": "hub/11499/git-repo-test-read-write-windmill",
17
20
  "gitSyncTest_2": "hub/11667/git-repo-test-read-write-windmill",
18
21
  "gitSyncTest_3": "hub/11669/git-repo-test-read-write-windmill",
19
22
  "gitSyncTest": "hub/19799/git-repo-test-read-write-windmill",
20
23
  "gitInitRepo_0": "hub/19787/git-sync%3A-init-repository-windmill",
21
- "gitInitRepo": "hub/19797/git-sync%3A-init-repository-windmill",
24
+ "gitInitRepo_1": "hub/19797/git-sync%3A-init-repository-windmill",
25
+ "gitInitRepo": "hub/19817/git-sync%3A-init-repository-windmill",
22
26
  "slackErrorHandler": "hub/19741/workspace-or-schedule-error-handler-slack",
23
27
  "slackErrorHandler_0": "hub/9079/workspace-or-schedule-error-handler-slack",
24
28
  "slackErrorHandler_1": "hub/9206/workspace-or-schedule-error-handler-slack",
package/package/infer.js CHANGED
@@ -233,7 +233,7 @@ export async function inferArgs(language, code, schema, mainOverride) {
233
233
  else if (language == 'ruby') {
234
234
  await initWasmRuby();
235
235
  inferedSchema = JSON.parse(parse_ruby(code));
236
- // for related places search: ADD_NEW_LANG
236
+ // for related places search: ADD_NEW_LANG
237
237
  }
238
238
  else {
239
239
  return null;
@@ -0,0 +1,5 @@
1
+ export type NavigationChain = Record<string, {
2
+ upId?: string | null;
3
+ downId?: string | null;
4
+ }>;
5
+ export declare function updateLinks(navigationChain: NavigationChain, newChain: NavigationChain): NavigationChain;
@@ -0,0 +1,40 @@
1
+ // Update navigation chain: remove old chain between first/last, insert new chain
2
+ export function updateLinks(navigationChain, newChain) {
3
+ if (Object.keys(newChain).length === 0)
4
+ return navigationChain;
5
+ const firstLink = Object.keys(newChain).find((link) => newChain[link].upId === null);
6
+ const lastLink = Object.keys(newChain).find((link) => newChain[link].downId === null);
7
+ //If the chain has no end or start, return the navigationChain
8
+ if (!firstLink || !lastLink)
9
+ return navigationChain;
10
+ const cleaned = { ...navigationChain };
11
+ const inserted = { ...newChain };
12
+ // Check if the chain needs to be inserted
13
+ if (!cleaned[lastLink] && cleaned[firstLink]) {
14
+ // connect the beginning of the new chain to the beginning of the chain
15
+ inserted[firstLink].upId = cleaned[firstLink]?.upId;
16
+ //connect the end of new the new chain to the beginning of the chain
17
+ const nextLink = cleaned[firstLink]?.downId;
18
+ if (nextLink) {
19
+ inserted[lastLink].downId = nextLink;
20
+ cleaned[nextLink].upId = lastLink;
21
+ }
22
+ }
23
+ else if (cleaned[lastLink] && cleaned[firstLink]) {
24
+ // If the end of the chain matches a link in the navigationChain, and the beginning delete the chain in the middle and replace it with the new chain
25
+ inserted[firstLink].upId = cleaned[firstLink]?.upId;
26
+ inserted[lastLink].downId = cleaned[lastLink]?.downId;
27
+ if (firstLink !== lastLink) {
28
+ const toDelete = [];
29
+ let current = cleaned[firstLink]?.downId;
30
+ while (current && current !== lastLink && !toDelete.includes(current)) {
31
+ toDelete.push(current);
32
+ current = cleaned[current]?.downId;
33
+ }
34
+ toDelete.forEach((itemId) => {
35
+ delete cleaned[itemId];
36
+ });
37
+ }
38
+ }
39
+ return { ...cleaned, ...inserted };
40
+ }
@@ -2,10 +2,10 @@ import { type Script } from './gen';
2
2
  import type { SupportedLanguage } from './common';
3
3
  export declare const TS_PREPROCESSOR_SCRIPT_INTRO = "/**\n * Trigger preprocessor\n *\n * \u26A0\uFE0F This function runs BEFORE the main function.\n *\n * It processes raw trigger data from various sources (webhook, custom HTTP route, SQS, WebSocket, Kafka, NATS, MQTT, Postgres, or email)\n * before passing it to `main`. This separates the trigger logic from the main logic and keeps the auto-generated runnable UI clean.\n *\n * The returned object defines the parameter values passed to `main()`.\n * e.g., { b: 1, a: 2 } \u2192 Calls `main(2, 1)`, assuming `main` is defined as `main(a: number, b: number)`.\n * Ensure that the parameter names in `main` match the keys in the returned object.\n * \n * Learn more: https://www.windmill.dev/docs/core_concepts/preprocessors\n */\n";
4
4
  export declare const TS_PREPROCESSOR_FLOW_INTRO = "/**\n * Trigger preprocessor\n *\n * It processes raw trigger data from various sources (webhook, custom HTTP route, SQS, WebSocket, Kafka, NATS, MQTT, Postgres, or email) \n * before passing it to the flow. This separates the trigger logic from the flow logic and keeps the auto-generated UI clean.\n * \n * The returned object determines the parameter values passed to the flow.\n * e.g., `{ b: 1, a: 2 }` \u2192 Calls the flow with `a = 2` and `b = 1`, assuming the flow has two inputs called `a` and `b`.\n * Ensure that the input names of the flow match the keys in the returned object.\n * \n * Learn more: https://www.windmill.dev/docs/core_concepts/preprocessors\n */\n";
5
- export declare const TS_PREPROCESSOR_MODULE_CODE = "export async function preprocessor(\n event:\n | {\n kind: \"webhook\";\n body: any;\n raw_string: string | null;\n query: Record<string, string>;\n headers: Record<string, string>;\n }\n | {\n kind: \"http\";\n body: any;\n raw_string: string | null;\n route: string;\n path: string;\n method: string;\n params: Record<string, string>;\n query: Record<string, string>;\n headers: Record<string, string>;\n }\n | {\n kind: \"email\";\n parsed_email: any;\n raw_email: string;\n }\n | { kind: \"websocket\"; msg: string; url: string }\n | {\n kind: \"kafka\";\n payload: string;\n brokers: string[];\n topic: string;\n group_id: string;\n }\n | {\n kind: \"nats\";\n payload: string;\n servers: string[];\n subject: string;\n headers?: Record<string, string[]>;\n status?: number;\n description?: string;\n length: number;\n }\n | {\n kind: \"sqs\";\n msg: string;\n queue_url: string;\n message_id?: string;\n receipt_handle?: string;\n attributes: Record<string, string>;\n message_attributes?: Record<\n string,\n { string_value?: string; data_type: string }\n >;\n }\n | {\n kind: \"mqtt\";\n payload: string;\n topic: string;\n retain: boolean;\n pkid: number;\n qos: number;\n v5?: {\n payload_format_indicator?: number;\n topic_alias?: number;\n response_topic?: string;\n correlation_data?: Array<number>;\n user_properties?: Array<[string, string]>;\n subscription_identifiers?: Array<number>;\n content_type?: string;\n };\n }\n | {\n kind: \"gcp\";\n payload: string;\n message_id: string;\n subscription: string;\n ordering_key?: string;\n attributes?: Record<string, string>;\n delivery_type: \"push\" | \"pull\";\n headers?: Record<string, string>;\n publish_time?: string;\n ack_id?: string;\n }\n | {\n kind: \"postgres\";\n transaction_type: \"insert\" | \"update\" | \"delete\",\n schema_name: string,\n table_name: string,\n old_row?: Record<string, any>,\n row: Record<string, any>\n }\n) {\n return {\n // return the args to be passed to the runnable\n };\n}\n";
5
+ export declare const TS_PREPROCESSOR_MODULE_CODE = "export async function preprocessor(\n event:\n | {\n kind: \"webhook\";\n body: any;\n raw_string: string | null;\n query: Record<string, string>;\n headers: Record<string, string>;\n }\n | {\n kind: \"http\";\n body: any;\n raw_string: string | null;\n route: string;\n path: string;\n method: string;\n params: Record<string, string>;\n query: Record<string, string>;\n headers: Record<string, string>;\n }\n | {\n kind: \"email\";\n parsed_email: any;\n raw_email: string;\n email_extra_args?: Record<string, string>;\n }\n | { kind: \"websocket\"; msg: string; url: string }\n | {\n kind: \"kafka\";\n payload: string;\n brokers: string[];\n topic: string;\n group_id: string;\n }\n | {\n kind: \"nats\";\n payload: string;\n servers: string[];\n subject: string;\n headers?: Record<string, string[]>;\n status?: number;\n description?: string;\n length: number;\n }\n | {\n kind: \"sqs\";\n msg: string;\n queue_url: string;\n message_id?: string;\n receipt_handle?: string;\n attributes: Record<string, string>;\n message_attributes?: Record<\n string,\n { string_value?: string; data_type: string }\n >;\n }\n | {\n kind: \"mqtt\";\n payload: string;\n topic: string;\n retain: boolean;\n pkid: number;\n qos: number;\n v5?: {\n payload_format_indicator?: number;\n topic_alias?: number;\n response_topic?: string;\n correlation_data?: Array<number>;\n user_properties?: Array<[string, string]>;\n subscription_identifiers?: Array<number>;\n content_type?: string;\n };\n }\n | {\n kind: \"gcp\";\n payload: string;\n message_id: string;\n subscription: string;\n ordering_key?: string;\n attributes?: Record<string, string>;\n delivery_type: \"push\" | \"pull\";\n headers?: Record<string, string>;\n publish_time?: string;\n ack_id?: string;\n }\n | {\n kind: \"postgres\";\n transaction_type: \"insert\" | \"update\" | \"delete\",\n schema_name: string,\n table_name: string,\n old_row?: Record<string, any>,\n row: Record<string, any>\n }\n) {\n return {\n // return the args to be passed to the runnable\n };\n}\n";
6
6
  export declare const PYTHON_PREPROCESSOR_SCRIPT_INTRO = "# Trigger preprocessor\n#\n# \u26A0\uFE0F This function runs BEFORE the main function.\n#\n# It processes raw trigger data from various sources (webhook, custom HTTP route, SQS, WebSocket, Kafka, NATS, MQTT, Postgres, or email) \n# before passing it to `main`. This separates the trigger logic from the main logic and keeps the auto-generated UI clean.\n#\n# The returned object defines the parameter values passed to `main()`.\n# e.g., { b: 1, a: 2 } \u2192 Calls `main(2, 1)`, assuming `main` is defined as `main(a: int, b: int)`.\n# Ensure that the parameter names in `main` match the keys in the returned object.\n#\n# Learn more: https://www.windmill.dev/docs/core_concepts/preprocessors\n\n";
7
7
  export declare const PYTHON_PREPROCESSOR_FLOW_INTRO = "# Trigger preprocessor\n#\n# It processes raw trigger data from various sources (webhook, custom HTTP route, SQS, WebSocket, Kafka, NATS, MQTT, Postgres, or email) \n# before passing it to the flow. This separates the trigger logic from the flow logic and keeps the auto-generated UI clean.\n# \n# The returned object determines the parameter values passed to the flow.\n# e.g., `{ b: 1, a: 2 }` \u2192 Calls the flow with `a = 2` and `b = 1`, assuming the flow has two inputs called `a` and `b`.\n# Ensure that the input names of the flow match the keys in the returned object.\n#\n# Learn more: https://www.windmill.dev/docs/core_concepts/preprocessors\n\n";
8
- export declare const PYTHON_PREPROCESSOR_MODULE_CODE = "from typing import TypedDict, Literal, Optional, Union\n\n\nclass WebhookEvent(TypedDict):\n kind: Literal[\"webhook\"]\n body: dict\n raw_string: Optional[str]\n query: dict[str, str]\n headers: dict[str, str]\n\n\nclass HttpEvent(TypedDict):\n kind: Literal[\"http\"]\n body: dict\n raw_string: Optional[str]\n route: str\n path: str\n method: str\n params: dict[str, str]\n query: dict[str, str]\n headers: dict[str, str]\n\n\nclass EmailEvent(TypedDict):\n kind: Literal[\"email\"]\n parsed_email: dict\n raw_email: str\n\n\nclass WebsocketEvent(TypedDict):\n kind: Literal[\"websocket\"]\n msg: str\n url: str\n\n\nclass KafkaEvent(TypedDict):\n kind: Literal[\"kafka\"]\n payload: str\n brokers: list[str]\n topic: str\n group_id: str\n\n\nclass NatsEvent(TypedDict):\n kind: Literal[\"nats\"]\n payload: str\n servers: list[str]\n subject: str\n headers: Optional[dict[str, list[str]]]\n status: Optional[int]\n description: Optional[str]\n length: int\n\n\nclass MessageAttribute(TypedDict):\n string_value: Optional[str]\n data_type: str\n\n\nclass SqsEvent(TypedDict):\n kind: Literal[\"sqs\"]\n msg: str\n queue_url: str\n message_id: Optional[str]\n receipt_handle: Optional[str]\n attributes: dict[str, str]\n message_attributes: Optional[dict[str, MessageAttribute]]\n\n\nclass MqttV5Properties(TypedDict, total=False):\n payload_format_indicator: Optional[int]\n topic_alias: Optional[int]\n response_topic: Optional[str]\n correlation_data: Optional[list[int]]\n user_properties: Optional[list[tuple[str, str]]]\n subscription_identifiers: Optional[list[int]]\n content_type: Optional[str]\n\n\nclass MqttEvent(TypedDict):\n kind: Literal[\"mqtt\"]\n payload: str\n topic: str\n retain: bool\n pkid: int\n qos: int\n v5: Optional[MqttV5Properties]\n\n\nclass GcpEvent(TypedDict):\n kind: Literal[\"gcp\"]\n payload: str\n message_id: str\n subscription: str\n ordering_key: Optional[str]\n attributes: Optional[dict[str, str]]\n delivery_type: Literal[\"push\", \"pull\"]\n headers: Optional[dict[str, str]]\n publish_time: Optional[str]\n ack_id: Optional[str]\n\n\nclass PostgresEvent(TypedDict):\n kind: Literal[\"postgres\"]\n transaction_type: Literal[\"insert\", \"update\", \"delete\"]\n schema_name: str\n table_name: str\n old_row: Optional[dict[str, any]]\n row: dict[str, any]\n\n\nEvent = Union[\n WebhookEvent,\n HttpEvent,\n EmailEvent,\n WebsocketEvent,\n KafkaEvent,\n NatsEvent,\n SqsEvent,\n MqttEvent,\n GcpEvent,\n PostgresEvent,\n]\n\n\ndef preprocessor(event: Event):\n return {\n # return the args to be passed to the runnable\n }\n";
8
+ export declare const PYTHON_PREPROCESSOR_MODULE_CODE = "from typing import TypedDict, Literal, Optional, Union\n\n\nclass WebhookEvent(TypedDict):\n kind: Literal[\"webhook\"]\n body: dict\n raw_string: Optional[str]\n query: dict[str, str]\n headers: dict[str, str]\n\n\nclass HttpEvent(TypedDict):\n kind: Literal[\"http\"]\n body: dict\n raw_string: Optional[str]\n route: str\n path: str\n method: str\n params: dict[str, str]\n query: dict[str, str]\n headers: dict[str, str]\n\n\nclass EmailEvent(TypedDict):\n kind: Literal[\"email\"]\n parsed_email: dict\n raw_email: str\n email_extra_args: Optional[dict[str, str]]\n\n\nclass WebsocketEvent(TypedDict):\n kind: Literal[\"websocket\"]\n msg: str\n url: str\n\n\nclass KafkaEvent(TypedDict):\n kind: Literal[\"kafka\"]\n payload: str\n brokers: list[str]\n topic: str\n group_id: str\n\n\nclass NatsEvent(TypedDict):\n kind: Literal[\"nats\"]\n payload: str\n servers: list[str]\n subject: str\n headers: Optional[dict[str, list[str]]]\n status: Optional[int]\n description: Optional[str]\n length: int\n\n\nclass MessageAttribute(TypedDict):\n string_value: Optional[str]\n data_type: str\n\n\nclass SqsEvent(TypedDict):\n kind: Literal[\"sqs\"]\n msg: str\n queue_url: str\n message_id: Optional[str]\n receipt_handle: Optional[str]\n attributes: dict[str, str]\n message_attributes: Optional[dict[str, MessageAttribute]]\n\n\nclass MqttV5Properties(TypedDict, total=False):\n payload_format_indicator: Optional[int]\n topic_alias: Optional[int]\n response_topic: Optional[str]\n correlation_data: Optional[list[int]]\n user_properties: Optional[list[tuple[str, str]]]\n subscription_identifiers: Optional[list[int]]\n content_type: Optional[str]\n\n\nclass MqttEvent(TypedDict):\n kind: Literal[\"mqtt\"]\n payload: str\n topic: str\n retain: bool\n pkid: int\n qos: int\n v5: Optional[MqttV5Properties]\n\n\nclass GcpEvent(TypedDict):\n kind: Literal[\"gcp\"]\n payload: str\n message_id: str\n subscription: str\n ordering_key: Optional[str]\n attributes: Optional[dict[str, str]]\n delivery_type: Literal[\"push\", \"pull\"]\n headers: Optional[dict[str, str]]\n publish_time: Optional[str]\n ack_id: Optional[str]\n\n\nclass PostgresEvent(TypedDict):\n kind: Literal[\"postgres\"]\n transaction_type: Literal[\"insert\", \"update\", \"delete\"]\n schema_name: str\n table_name: str\n old_row: Optional[dict[str, any]]\n row: dict[str, any]\n\n\nEvent = Union[\n WebhookEvent,\n HttpEvent,\n EmailEvent,\n WebsocketEvent,\n KafkaEvent,\n NatsEvent,\n SqsEvent,\n MqttEvent,\n GcpEvent,\n PostgresEvent,\n]\n\n\ndef preprocessor(event: Event):\n return {\n # return the args to be passed to the runnable\n }\n";
9
9
  export declare const INITIAL_CODE: {
10
10
  bun: {
11
11
  scriptInitCodeBlock: string;
@@ -667,6 +667,7 @@ export const TS_PREPROCESSOR_MODULE_CODE = `export async function preprocessor(
667
667
  kind: "email";
668
668
  parsed_email: any;
669
669
  raw_email: string;
670
+ email_extra_args?: Record<string, string>;
670
671
  }
671
672
  | { kind: "websocket"; msg: string; url: string }
672
673
  | {
@@ -816,6 +817,7 @@ class EmailEvent(TypedDict):
816
817
  kind: Literal["email"]
817
818
  parsed_email: dict
818
819
  raw_email: str
820
+ email_extra_args: Optional[dict[str, str]]
819
821
 
820
822
 
821
823
  class WebsocketEvent(TypedDict):
@@ -24,7 +24,7 @@ export class JobManager {
24
24
  staleJobs.push(jobId);
25
25
  }
26
26
  }
27
- staleJobs.forEach(jobId => {
27
+ staleJobs.forEach((jobId) => {
28
28
  this.activeJobs.delete(jobId);
29
29
  });
30
30
  if (staleJobs.length > 0) {
@@ -93,7 +93,7 @@ export class JobManager {
93
93
  }
94
94
  }
95
95
  cancelAll() {
96
- this.activeJobs.forEach(entry => entry.controller.abort());
96
+ this.activeJobs.forEach((entry) => entry.controller.abort());
97
97
  this.activeJobs.clear();
98
98
  }
99
99
  isActive(jobId) {
@@ -18,8 +18,9 @@ export interface UserWorkspace {
18
18
  id: string;
19
19
  name: string;
20
20
  username: string;
21
- color: string | null;
21
+ color?: string;
22
22
  operator_settings?: OperatorSettings;
23
+ parent_workspace_id?: string | null;
23
24
  }
24
25
  export declare const tutorialsToDo: import("svelte/store").Writable<number[]>;
25
26
  export declare const globalEmailInvite: import("svelte/store").Writable<string>;
@@ -48,9 +49,11 @@ export declare const copilotInfo: import("svelte/store").Writable<{
48
49
  codeCompletionModel?: AIProviderModel;
49
50
  defaultModel?: AIProviderModel;
50
51
  aiModels: AIProviderModel[];
52
+ customPrompts?: Record<string, string>;
51
53
  }>;
52
54
  export declare function loadCopilot(workspace: string): Promise<void>;
53
55
  export declare function setCopilotInfo(aiConfig: AIConfig): void;
56
+ export declare function getCurrentModel(): AIProviderModel;
54
57
  export declare const codeCompletionLoading: import("svelte/store").Writable<boolean>;
55
58
  export declare const metadataCompletionEnabled: import("svelte/store").Writable<boolean>;
56
59
  export declare const stepInputCompletionEnabled: import("svelte/store").Writable<boolean>;
package/package/stores.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { BROWSER } from 'esm-env';
2
- import { derived, writable } from 'svelte/store';
2
+ import { derived, get, writable } from 'svelte/store';
3
3
  import { WorkspaceService } from './gen';
4
4
  import { getLocalSetting } from './utils';
5
5
  import { workspaceAIClients } from './components/copilot/lib';
@@ -48,8 +48,8 @@ export const userWorkspaces = derived([usersWorkspaceStore, superadmin], ([store
48
48
  id: 'admins',
49
49
  name: 'Admins',
50
50
  username: 'superadmin',
51
- color: null,
52
- operator_settings: null
51
+ color: undefined,
52
+ operator_settings: undefined
53
53
  }
54
54
  ];
55
55
  }
@@ -61,7 +61,8 @@ export const copilotInfo = writable({
61
61
  enabled: false,
62
62
  codeCompletionModel: undefined,
63
63
  defaultModel: undefined,
64
- aiModels: []
64
+ aiModels: [],
65
+ customPrompts: {}
65
66
  });
66
67
  export async function loadCopilot(workspace) {
67
68
  workspaceAIClients.init(workspace);
@@ -88,7 +89,8 @@ export function setCopilotInfo(aiConfig) {
88
89
  enabled: true,
89
90
  codeCompletionModel: aiConfig.code_completion_model,
90
91
  defaultModel: aiConfig.default_model,
91
- aiModels: aiModels
92
+ aiModels: aiModels,
93
+ customPrompts: aiConfig.custom_prompts ?? {}
92
94
  });
93
95
  }
94
96
  else {
@@ -97,10 +99,18 @@ export function setCopilotInfo(aiConfig) {
97
99
  enabled: false,
98
100
  codeCompletionModel: undefined,
99
101
  defaultModel: undefined,
100
- aiModels: []
102
+ aiModels: [],
103
+ customPrompts: {}
101
104
  });
102
105
  }
103
106
  }
107
+ export function getCurrentModel() {
108
+ const model = get(copilotSessionModel) ?? get(copilotInfo).defaultModel ?? get(copilotInfo).aiModels[0];
109
+ if (!model) {
110
+ throw new Error('No model selected');
111
+ }
112
+ return model;
113
+ }
104
114
  export const codeCompletionLoading = writable(false);
105
115
  export const metadataCompletionEnabled = writable(true);
106
116
  export const stepInputCompletionEnabled = writable(true);
@@ -0,0 +1,27 @@
1
+ import type { UserWorkspace } from '../stores';
2
+ export interface WorkspaceHierarchyItem {
3
+ workspace: UserWorkspace;
4
+ depth: number;
5
+ isForked: boolean;
6
+ parentName?: string;
7
+ hasChildren: boolean;
8
+ }
9
+ /**
10
+ * Builds a hierarchical structure from a flat array of workspaces.
11
+ * Supports unlimited nesting levels (fork of fork of fork...).
12
+ * Returns a flattened array with hierarchy metadata for easy rendering.
13
+ */
14
+ export declare function buildWorkspaceHierarchy(workspaces: UserWorkspace[]): WorkspaceHierarchyItem[];
15
+ /**
16
+ * Helper function to get the indentation padding based on depth.
17
+ * Each level adds 24px of left padding.
18
+ */
19
+ export declare function getWorkspaceIndentation(depth: number): string;
20
+ /**
21
+ * Helper function to check if a workspace is a root workspace
22
+ */
23
+ export declare function isRootWorkspace(workspace: UserWorkspace): boolean;
24
+ /**
25
+ * Helper function to find all descendants of a workspace
26
+ */
27
+ export declare function findWorkspaceDescendants(workspaceId: string, allWorkspaces: UserWorkspace[]): UserWorkspace[];
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Builds a hierarchical structure from a flat array of workspaces.
3
+ * Supports unlimited nesting levels (fork of fork of fork...).
4
+ * Returns a flattened array with hierarchy metadata for easy rendering.
5
+ */
6
+ export function buildWorkspaceHierarchy(workspaces) {
7
+ if (!workspaces || workspaces.length === 0) {
8
+ return [];
9
+ }
10
+ // Create maps for quick lookups
11
+ const workspaceMap = new Map(workspaces.map(w => [w.id, w]));
12
+ const childrenMap = new Map();
13
+ const hasChildrenSet = new Set();
14
+ // Build children mapping and track which workspaces have children
15
+ for (const workspace of workspaces) {
16
+ if (workspace.parent_workspace_id) {
17
+ if (!childrenMap.has(workspace.parent_workspace_id)) {
18
+ childrenMap.set(workspace.parent_workspace_id, []);
19
+ }
20
+ childrenMap.get(workspace.parent_workspace_id).push(workspace);
21
+ hasChildrenSet.add(workspace.parent_workspace_id);
22
+ }
23
+ }
24
+ // Find root workspaces (those without a parent or whose parent is not in the current list)
25
+ const rootWorkspaces = workspaces.filter(w => {
26
+ if (!w.parent_workspace_id) {
27
+ return true; // Definitely a root
28
+ }
29
+ // Check if parent exists in the current workspace list
30
+ return !workspaceMap.has(w.parent_workspace_id);
31
+ });
32
+ const result = [];
33
+ // Recursively build the hierarchy
34
+ function addWorkspaceAndChildren(workspace, depth, isForked, parentName) {
35
+ // Add the current workspace
36
+ result.push({
37
+ workspace,
38
+ depth,
39
+ isForked,
40
+ parentName,
41
+ hasChildren: hasChildrenSet.has(workspace.id)
42
+ });
43
+ // Add its children (sorted by name for consistency)
44
+ const children = childrenMap.get(workspace.id) || [];
45
+ children
46
+ .sort((a, b) => a.name.localeCompare(b.name))
47
+ .forEach(child => {
48
+ addWorkspaceAndChildren(child, depth + 1, true, workspace.name);
49
+ });
50
+ }
51
+ // Process root workspaces (sorted by name for consistency)
52
+ rootWorkspaces
53
+ .sort((a, b) => a.name.localeCompare(b.name))
54
+ .forEach(workspace => {
55
+ const isRootForked = workspace.parent_workspace_id != null;
56
+ const parentName = isRootForked && workspace.parent_workspace_id
57
+ ? workspace.parent_workspace_id // Use parent ID as fallback if parent not in list
58
+ : undefined;
59
+ addWorkspaceAndChildren(workspace, 0, isRootForked, parentName);
60
+ });
61
+ return result;
62
+ }
63
+ /**
64
+ * Helper function to get the indentation padding based on depth.
65
+ * Each level adds 24px of left padding.
66
+ */
67
+ export function getWorkspaceIndentation(depth) {
68
+ return `${depth * 24}px`;
69
+ }
70
+ /**
71
+ * Helper function to check if a workspace is a root workspace
72
+ */
73
+ export function isRootWorkspace(workspace) {
74
+ return workspace.parent_workspace_id == null;
75
+ }
76
+ /**
77
+ * Helper function to find all descendants of a workspace
78
+ */
79
+ export function findWorkspaceDescendants(workspaceId, allWorkspaces) {
80
+ const descendants = [];
81
+ const childrenMap = new Map();
82
+ // Build children mapping
83
+ for (const workspace of allWorkspaces) {
84
+ if (workspace.parent_workspace_id) {
85
+ if (!childrenMap.has(workspace.parent_workspace_id)) {
86
+ childrenMap.set(workspace.parent_workspace_id, []);
87
+ }
88
+ childrenMap.get(workspace.parent_workspace_id).push(workspace);
89
+ }
90
+ }
91
+ // Recursively find descendants
92
+ function collectDescendants(id) {
93
+ const children = childrenMap.get(id) || [];
94
+ for (const child of children) {
95
+ descendants.push(child);
96
+ collectDescendants(child.id);
97
+ }
98
+ }
99
+ collectDescendants(workspaceId);
100
+ return descendants;
101
+ }
@@ -44,7 +44,7 @@ export declare function displayTime(dateString: string | Date | undefined): stri
44
44
  export declare function displaySize(sizeInBytes: number | undefined): string | undefined;
45
45
  export declare function msToSec(ms: number | undefined, maximumFractionDigits?: number): string;
46
46
  export declare function removeTriggerKindIfUnused(length: number, triggerKind: TriggerKind, usedTriggerKinds: string[]): string[];
47
- export declare function msToReadableTime(ms: number | undefined): string;
47
+ export declare function msToReadableTime(ms: number | undefined, maximumFractionDigits?: number): string;
48
48
  export declare function getToday(): Date;
49
49
  export declare function truncateHash(hash: string): string;
50
50
  export declare function sleep(ms: number): Promise<void>;
@@ -97,8 +97,8 @@ export declare function removeMarkdown(text: string): string;
97
97
  export declare function truncate(s: string, n: number, suffix?: string): string;
98
98
  export declare function truncateRev(s: string, n: number, prefix?: string): string;
99
99
  export declare function isString(value: any): value is string | String;
100
- export type InputCat = 'string' | 'email' | 'number' | 'boolean' | 'list' | 'resource-object' | 'enum' | 'date' | 'base64' | 'resource-string' | 'object' | 'sql' | 'yaml' | 'currency' | 'oneOf' | 'dynselect' | 'json-schema';
101
- export declare namespace DynamicSelect {
100
+ export type InputCat = 'string' | 'email' | 'number' | 'boolean' | 'list' | 'resource-object' | 'enum' | 'date' | 'base64' | 'resource-string' | 'object' | 'sql' | 'yaml' | 'currency' | 'oneOf' | 'dynamic' | 'json-schema' | 'ai-provider';
101
+ export declare namespace DynamicInput {
102
102
  type HelperScript = {
103
103
  type: 'inline';
104
104
  path?: string;
@@ -112,6 +112,7 @@ export declare namespace DynamicSelect {
112
112
  const generateJsFnTemplate: (functionName: string) => string;
113
113
  const generateDefaultTemplateFn: (functionName: string, lang: ScriptLang) => string;
114
114
  const getGenerateTemplateFn: (lang: ScriptLang) => (functionName: string) => string;
115
+ const isDynInputFormat: (format?: string) => boolean;
115
116
  }
116
117
  export declare function setInputCat(type: string | undefined, format: string | undefined, itemsType: string | undefined, enum_: any, contentEncoding: string | undefined): InputCat;
117
118
  export declare function formatCron(inp: string): string;
@@ -145,6 +146,7 @@ export declare function computeSharableHash(args: any): string;
145
146
  export declare function toCamel(s: string): string;
146
147
  export declare function cleanExpr(expr: string | undefined): string;
147
148
  export declare function isCodeInjection(expr: string | undefined): boolean;
149
+ export declare function urlParamsToObject(params: URLSearchParams): Record<string, string>;
148
150
  export declare function tryEvery({ tryCode, timeoutCode, interval, timeout }: {
149
151
  tryCode: () => Promise<any>;
150
152
  timeoutCode: () => void;
@@ -190,6 +192,7 @@ export type Item = {
190
192
  type?: 'action' | 'delete';
191
193
  hide?: boolean | undefined;
192
194
  extra?: Snippet;
195
+ id?: string;
193
196
  };
194
197
  export declare function isObjectTooBig(obj: any): boolean;
195
198
  export declare function localeConcatAnd(items: string[]): string;
package/package/utils.js CHANGED
@@ -200,7 +200,7 @@ export function removeTriggerKindIfUnused(length, triggerKind, usedTriggerKinds)
200
200
  }
201
201
  return usedTriggerKinds;
202
202
  }
203
- export function msToReadableTime(ms) {
203
+ export function msToReadableTime(ms, maximumFractionDigits) {
204
204
  if (ms === undefined)
205
205
  return '?';
206
206
  const seconds = Math.floor(ms / 1000);
@@ -217,7 +217,7 @@ export function msToReadableTime(ms) {
217
217
  return `${minutes}m ${seconds % 60}s`;
218
218
  }
219
219
  else {
220
- return `${msToSec(ms)}s`;
220
+ return `${msToSec(ms, maximumFractionDigits)}s`;
221
221
  }
222
222
  }
223
223
  export function getToday() {
@@ -482,9 +482,10 @@ export function truncateRev(s, n, prefix = '...') {
482
482
  export function isString(value) {
483
483
  return typeof value === 'string' || value instanceof String;
484
484
  }
485
- export var DynamicSelect;
486
- (function (DynamicSelect) {
487
- DynamicSelect.generatePythonFnTemplate = (functionName) => {
485
+ export var DynamicInput;
486
+ (function (DynamicInput) {
487
+ const DYN_FORMAT_PREFIX = ['dynmultiselect-', 'dynselect-'];
488
+ DynamicInput.generatePythonFnTemplate = (functionName) => {
488
489
  return `
489
490
  def ${functionName}():
490
491
  return [
@@ -494,7 +495,7 @@ def ${functionName}():
494
495
 
495
496
  `;
496
497
  };
497
- DynamicSelect.generateJsFnTemplate = (functionName) => {
498
+ DynamicInput.generateJsFnTemplate = (functionName) => {
498
499
  return `
499
500
  // you can use filterText to filter the results from the backend
500
501
  // you can refer to other args directly as parameters (e.g. foobar: string)
@@ -507,15 +508,20 @@ export function ${functionName}(filterText: string) {
507
508
 
508
509
  `;
509
510
  };
510
- DynamicSelect.generateDefaultTemplateFn = (functionName, lang) => {
511
+ DynamicInput.generateDefaultTemplateFn = (functionName, lang) => {
511
512
  return lang === 'bun'
512
- ? DynamicSelect.generateJsFnTemplate(functionName)
513
- : DynamicSelect.generatePythonFnTemplate(functionName);
513
+ ? DynamicInput.generateJsFnTemplate(functionName)
514
+ : DynamicInput.generatePythonFnTemplate(functionName);
514
515
  };
515
- DynamicSelect.getGenerateTemplateFn = (lang) => {
516
- return lang === 'bun' ? DynamicSelect.generateJsFnTemplate : DynamicSelect.generatePythonFnTemplate;
516
+ DynamicInput.getGenerateTemplateFn = (lang) => {
517
+ return lang === 'bun' ? DynamicInput.generateJsFnTemplate : DynamicInput.generatePythonFnTemplate;
517
518
  };
518
- })(DynamicSelect || (DynamicSelect = {}));
519
+ DynamicInput.isDynInputFormat = (format) => {
520
+ if (!format)
521
+ return false;
522
+ return DYN_FORMAT_PREFIX.some((format_prefix) => format.startsWith(format_prefix));
523
+ };
524
+ })(DynamicInput || (DynamicInput = {}));
519
525
  export function setInputCat(type, format, itemsType, enum_, contentEncoding) {
520
526
  if (type === 'number' || type === 'integer') {
521
527
  return 'number';
@@ -529,9 +535,11 @@ export function setInputCat(type, format, itemsType, enum_, contentEncoding) {
529
535
  else if (type == 'object' && format?.startsWith('resource')) {
530
536
  return 'resource-object';
531
537
  }
532
- else if (type == 'object' &&
533
- (format?.startsWith('dynselect-') || format?.startsWith('dynselect_'))) {
534
- return 'dynselect';
538
+ else if (type == 'object' && format == 'ai-provider') {
539
+ return 'ai-provider';
540
+ }
541
+ else if (type == 'object' && DynamicInput.isDynInputFormat(format)) {
542
+ return 'dynamic';
535
543
  }
536
544
  else if (!type || type == 'object' || type == 'array') {
537
545
  return 'object';
@@ -858,6 +866,13 @@ export function isCodeInjection(expr) {
858
866
  }
859
867
  return dynamicTemplateRegex.test(expr);
860
868
  }
869
+ export function urlParamsToObject(params) {
870
+ const result = {};
871
+ params.forEach((value, key) => {
872
+ result[key] = value;
873
+ });
874
+ return result;
875
+ }
861
876
  export async function tryEvery({ tryCode, timeoutCode, interval, timeout }) {
862
877
  const times = Math.floor(timeout / interval);
863
878
  let i = 0;
@@ -34,11 +34,10 @@ export function convertBackendSettingsToFrontendSettingsItem(large_file_storage)
34
34
  };
35
35
  }
36
36
  else if (large_file_storage?.type === 'GoogleCloudStorage') {
37
- const gcsStorage = large_file_storage;
38
37
  return {
39
38
  resourceType: 'gcloud_storage',
40
- resourcePath: gcsStorage?.gcs_resource_path?.replace('$res:', ''),
41
- publicResource: gcsStorage?.public_resource
39
+ resourcePath: large_file_storage?.gcs_resource_path?.replace('$res:', ''),
40
+ publicResource: large_file_storage?.public_resource
42
41
  };
43
42
  }
44
43
  else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "windmill-components",
3
- "version": "1.532.0",
3
+ "version": "1.542.4",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build",
@@ -33,11 +33,9 @@
33
33
  "@types/d3-zoom": "^3.0.3",
34
34
  "@types/diff": "^7.0.1",
35
35
  "@types/lodash": "^4.14.195",
36
- "@types/node": "^20.3.3",
37
36
  "@types/vscode": "^1.83.5",
38
37
  "@typescript-eslint/eslint-plugin": "^5.59.8",
39
38
  "@typescript-eslint/parser": "^5.60.0",
40
- "@windmill-labs/esbuild-import-meta-url-plugin": "0.0.0-semantic-release",
41
39
  "@zerodevx/svelte-toast": "^0.9.6",
42
40
  "autoprefixer": "^10.4.13",
43
41
  "cssnano": "^6.0.1",
@@ -66,7 +64,7 @@
66
64
  "tar": "^7.4.3",
67
65
  "tslib": "^2.6.1",
68
66
  "typescript": "^5.5.0",
69
- "vite": "^7.1.2",
67
+ "vite": "npm:rolldown-vite@latest",
70
68
  "vite-plugin-mkcert": "^1.17.5",
71
69
  "yootils": "^0.3.1"
72
70
  },
@@ -77,6 +75,7 @@
77
75
  },
78
76
  "type": "module",
79
77
  "dependencies": {
78
+ "@anthropic-ai/sdk": "^0.60.0",
80
79
  "@aws-crypto/sha256-js": "^4.0.0",
81
80
  "@codingame/monaco-vscode-configuration-service-override": "~20.2.1",
82
81
  "@codingame/monaco-vscode-editor-api": "~20.2.1",
@@ -92,14 +91,14 @@
92
91
  "@scalar/openapi-parser": "^0.15.0",
93
92
  "@tanstack/svelte-table": "npm:tanstack-table-8-svelte-5@^0.1",
94
93
  "@tutorlatin/svelte-tiny-virtual-list": "^3.0.2",
95
- "@windmill-labs/svelte-dnd-action": "^0.9.48",
94
+ "@windmill-labs/svelte-dnd-action": "^0.9.44",
96
95
  "@xterm/addon-fit": "^0.10.0",
97
96
  "@xyflow/svelte": "^1.0.0",
98
97
  "ag-charts-community": "^9.0.1",
99
98
  "ag-charts-enterprise": "^9.0.1",
100
99
  "ag-grid-community": "^31.3.4",
101
100
  "ag-grid-enterprise": "^31.3.4",
102
- "ansi_up": "^5.2.1",
101
+ "ansi_up": "^6.0.6",
103
102
  "chart.js": "^4.4.6",
104
103
  "chartjs-adapter-date-fns": "^3.0.0",
105
104
  "chartjs-plugin-zoom": "^2.0.0",
@@ -115,7 +114,7 @@
115
114
  "highlight.js": "^11.8.0",
116
115
  "idb": "^8.0.2",
117
116
  "lru-cache": "^11.1.0",
118
- "lucide-svelte": "^0.399.0",
117
+ "lucide-svelte": "^0.540.0",
119
118
  "minimatch": "^10.0.1",
120
119
  "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~20.2.1",
121
120
  "monaco-editor-wrapper": "6.12.0",
@@ -123,7 +122,7 @@
123
122
  "monaco-languageclient": "9.11.0",
124
123
  "monaco-vim": "^0.4.1",
125
124
  "ol": "^7.4.0",
126
- "openai": "^4.87.1",
125
+ "openai": "^5.16.0",
127
126
  "openapi-types": "^12.1.3",
128
127
  "p-limit": "^6.1.0",
129
128
  "panzoom": "^9.4.3",
@@ -135,7 +134,6 @@
135
134
  "svelte-carousel": "^1.0.25",
136
135
  "svelte-exmarkdown": "^5.0.0",
137
136
  "svelte-infinite-loading": "^1.4.0",
138
- "svelte-tiny-virtual-list": "^2.0.5",
139
137
  "tailwind-merge": "^1.13.2",
140
138
  "vscode": "npm:@codingame/monaco-vscode-extension-api@~20.2.1",
141
139
  "vscode-languageclient": "~9.0.1",
@@ -146,14 +144,14 @@
146
144
  "windmill-parser-wasm-java": "1.510.1",
147
145
  "windmill-parser-wasm-nu": "1.510.1",
148
146
  "windmill-parser-wasm-php": "1.510.1",
149
- "windmill-parser-wasm-py": "1.510.1",
147
+ "windmill-parser-wasm-py": "1.538.0",
150
148
  "windmill-parser-wasm-regex": "1.512.0",
151
149
  "windmill-parser-wasm-ruby": "1.526.1",
152
150
  "windmill-parser-wasm-rust": "1.510.1",
153
- "windmill-parser-wasm-ts": "1.514.1",
151
+ "windmill-parser-wasm-ts": "1.538.0",
154
152
  "windmill-parser-wasm-yaml": "1.510.1",
155
153
  "windmill-sql-datatype-parser-wasm": "1.512.0",
156
- "windmill-utils-internal": "^1.0.0",
154
+ "windmill-utils-internal": "^1.3.0",
157
155
  "xterm": "^5.3.0",
158
156
  "xterm-readline": "^1.1.2",
159
157
  "y-monaco": "^0.1.4",
@@ -1,11 +0,0 @@
1
- import { type DynamicSelect } from '../utils';
2
- interface Props {
3
- value?: any;
4
- helperScript?: DynamicSelect.HelperScript;
5
- entrypoint: string;
6
- otherArgs?: Record<string, any>;
7
- name: string;
8
- }
9
- declare const DynSelect: import("svelte").Component<Props, {}, "value">;
10
- type DynSelect = ReturnType<typeof DynSelect>;
11
- export default DynSelect;