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
@@ -1,28 +1,70 @@
1
- import { copilotInfo, copilotSessionModel, workspaceStore } from '../../stores';
1
+ import { getCurrentModel, workspaceStore } from '../../stores';
2
2
  import { buildClientSchema, printSchema } from 'graphql';
3
- import { OpenAI } from 'openai';
3
+ import OpenAI from 'openai';
4
+ import Anthropic from '@anthropic-ai/sdk';
4
5
  import { get } from 'svelte/store';
5
6
  import { OpenAPI, ResourceService } from '../../gen';
6
7
  import { EDIT_CONFIG, FIX_CONFIG, GEN_CONFIG } from './prompts';
7
8
  import { formatResourceTypes } from './utils';
8
9
  import { z } from 'zod';
10
+ import { processToolCall } from './chat/shared';
11
+ import { generateRandomString } from '../../utils';
9
12
  export const SUPPORTED_LANGUAGES = new Set(Object.keys(GEN_CONFIG.prompts));
10
- const OPENAI_MODELS = ['gpt-5', 'gpt-5-mini', 'gpt-5-nano', 'gpt-4o', 'gpt-4o-mini', 'o4-mini', 'o3', 'o3-mini'];
11
- // need at least one model for each provider except customai
12
- export const AI_DEFAULT_MODELS = {
13
- openai: OPENAI_MODELS,
14
- azure_openai: OPENAI_MODELS,
15
- anthropic: ['claude-sonnet-4-0', 'claude-sonnet-4-0/thinking', 'claude-3-5-haiku-latest'],
16
- mistral: ['codestral-latest'],
17
- deepseek: ['deepseek-chat', 'deepseek-reasoner'],
18
- googleai: ['gemini-2.0-flash', 'gemini-1.5-flash', 'gemini-1.5-pro'],
19
- groq: ['llama-3.3-70b-versatile', 'llama-3.1-8b-instant'],
20
- openrouter: ['meta-llama/llama-3.2-3b-instruct:free'],
21
- togetherai: ['meta-llama/Llama-3.3-70B-Instruct-Turbo'],
22
- customai: []
13
+ const OPENAI_MODELS = [
14
+ 'gpt-5',
15
+ 'gpt-5-mini',
16
+ 'gpt-5-nano',
17
+ 'gpt-4o',
18
+ 'gpt-4o-mini',
19
+ 'o4-mini',
20
+ 'o3',
21
+ 'o3-mini'
22
+ ];
23
+ export const AI_PROVIDERS = {
24
+ openai: {
25
+ label: 'OpenAI',
26
+ defaultModels: OPENAI_MODELS
27
+ },
28
+ azure_openai: {
29
+ label: 'Azure OpenAI',
30
+ defaultModels: OPENAI_MODELS
31
+ },
32
+ anthropic: {
33
+ label: 'Anthropic',
34
+ defaultModels: ['claude-sonnet-4-0', 'claude-sonnet-4-0/thinking', 'claude-3-5-haiku-latest']
35
+ },
36
+ mistral: {
37
+ label: 'Mistral',
38
+ defaultModels: ['codestral-latest']
39
+ },
40
+ deepseek: {
41
+ label: 'DeepSeek',
42
+ defaultModels: ['deepseek-chat', 'deepseek-reasoner']
43
+ },
44
+ googleai: {
45
+ label: 'Google AI',
46
+ defaultModels: ['gemini-2.0-flash', 'gemini-1.5-flash', 'gemini-1.5-pro']
47
+ },
48
+ groq: {
49
+ label: 'Groq',
50
+ defaultModels: ['llama-3.3-70b-versatile', 'llama-3.1-8b-instant']
51
+ },
52
+ openrouter: {
53
+ label: 'OpenRouter',
54
+ defaultModels: ['meta-llama/llama-3.2-3b-instruct:free']
55
+ },
56
+ togetherai: {
57
+ label: 'Together AI',
58
+ defaultModels: ['meta-llama/Llama-3.3-70B-Instruct-Turbo']
59
+ },
60
+ customai: {
61
+ label: 'Custom AI',
62
+ defaultModels: []
63
+ }
23
64
  };
24
- export async function fetchAvailableModels(resourcePath, workspace, provider) {
65
+ export async function fetchAvailableModels(resourcePath, workspace, provider, signal) {
25
66
  const models = await fetch(`${location.origin}${OpenAPI.BASE}/w/${workspace}/ai/proxy/models`, {
67
+ signal,
26
68
  headers: {
27
69
  'X-Resource-Path': resourcePath,
28
70
  'X-Provider': provider,
@@ -35,21 +77,34 @@ export async function fetchAvailableModels(resourcePath, workspace, provider) {
35
77
  }
36
78
  const data = (await models.json());
37
79
  if (data.data.length > 0) {
80
+ const sortFunc = (provider) => (a, b) => {
81
+ // First prioritize models in defaultModels array
82
+ const defaultModels = AI_PROVIDERS[provider]?.defaultModels || [];
83
+ const aInDefault = defaultModels.includes(a);
84
+ const bInDefault = defaultModels.includes(b);
85
+ if (aInDefault && !bInDefault)
86
+ return -1;
87
+ if (!aInDefault && bInDefault)
88
+ return 1;
89
+ return 0;
90
+ };
38
91
  switch (provider) {
39
92
  case 'openai':
40
93
  return data.data
41
94
  .filter((m) => m.id.startsWith('gpt-') || m.id.startsWith('o') || m.id.startsWith('codex'))
42
- .map((m) => m.id);
95
+ .map((m) => m.id)
96
+ .sort(sortFunc(provider));
43
97
  case 'azure_openai':
44
98
  return data.data
45
99
  .filter((m) => (m.id.startsWith('gpt-') || m.id.startsWith('o') || m.id.startsWith('codex')) &&
46
100
  m.lifecycle_status !== 'deprecated' &&
47
101
  (m.capabilities.completion || m.capabilities.chat_completion))
48
- .map((m) => m.id);
102
+ .map((m) => m.id)
103
+ .sort(sortFunc(provider));
49
104
  case 'googleai':
50
- return data.data.map((m) => m.id.split('/')[1]);
105
+ return data.data.map((m) => m.id.split('/')[1]).sort(sortFunc(provider));
51
106
  default:
52
- return data.data.map((m) => m.id);
107
+ return data.data.map((m) => m.id).sort(sortFunc(provider));
53
108
  }
54
109
  }
55
110
  return data?.data.map((m) => m.id) ?? [];
@@ -61,9 +116,15 @@ function getModelMaxTokens(provider, model) {
61
116
  else if ((provider === 'azure_openai' || provider === 'openai') && model.startsWith('o')) {
62
117
  return 100000;
63
118
  }
119
+ else if (model.startsWith('claude-sonnet') || model.startsWith('gemini-2.5')) {
120
+ return 64000;
121
+ }
64
122
  else if (model.startsWith('gpt-4.1')) {
65
123
  return 32768;
66
124
  }
125
+ else if (model.startsWith('claude-opus')) {
126
+ return 32000;
127
+ }
67
128
  else if (model.startsWith('gpt-4o') || model.startsWith('codestral')) {
68
129
  return 16384;
69
130
  }
@@ -93,12 +154,13 @@ export function getModelContextWindow(model) {
93
154
  }
94
155
  }
95
156
  function getModelSpecificConfig(modelProvider, tools) {
157
+ const maxTokens = getModelMaxTokens(modelProvider.provider, modelProvider.model);
96
158
  if ((modelProvider.provider === 'openai' || modelProvider.provider === 'azure_openai') &&
97
159
  (modelProvider.model.startsWith('o') || modelProvider.model.startsWith('gpt-5'))) {
98
160
  return {
99
161
  model: modelProvider.model,
100
162
  ...(tools && tools.length > 0 ? { tools } : {}),
101
- max_completion_tokens: getModelMaxTokens(modelProvider.provider, modelProvider.model)
163
+ max_completion_tokens: maxTokens
102
164
  };
103
165
  }
104
166
  else {
@@ -116,7 +178,7 @@ function getModelSpecificConfig(modelProvider, tools) {
116
178
  temperature: 0
117
179
  }),
118
180
  ...(tools && tools.length > 0 ? { tools } : {}),
119
- max_tokens: getModelMaxTokens(modelProvider.provider, modelProvider.model)
181
+ max_tokens: maxTokens
120
182
  };
121
183
  }
122
184
  }
@@ -169,8 +231,10 @@ export const PROVIDER_COMPLETION_CONFIG_MAP = {
169
231
  };
170
232
  class WorkspacedAIClients {
171
233
  openaiClient;
234
+ anthropicClient;
172
235
  init(workspace) {
173
236
  this.initOpenai(workspace);
237
+ this.initAnthropic(workspace);
174
238
  }
175
239
  getBaseURL(workspace) {
176
240
  return `${location.origin}${OpenAPI.BASE}/w/${workspace}/ai/proxy`;
@@ -186,19 +250,33 @@ class WorkspacedAIClients {
186
250
  dangerouslyAllowBrowser: true
187
251
  });
188
252
  }
253
+ initAnthropic(workspace) {
254
+ const baseURL = this.getBaseURL(workspace);
255
+ this.anthropicClient = new Anthropic({
256
+ baseURL,
257
+ apiKey: 'fake-key',
258
+ dangerouslyAllowBrowser: true
259
+ });
260
+ }
189
261
  getOpenaiClient() {
190
262
  if (!this.openaiClient) {
191
263
  throw new Error('OpenAI not initialized');
192
264
  }
193
265
  return this.openaiClient;
194
266
  }
267
+ getAnthropicClient() {
268
+ if (!this.anthropicClient) {
269
+ throw new Error('Anthropic not initialized');
270
+ }
271
+ return this.anthropicClient;
272
+ }
195
273
  }
196
274
  export const workspaceAIClients = new WorkspacedAIClients();
197
275
  export async function testKey({ apiKey, resourcePath, model, abortController, messages, aiProvider }) {
198
276
  if (!apiKey && !resourcePath) {
199
277
  throw new Error('API key or resource path is required');
200
278
  }
201
- const modelToTest = model ?? AI_DEFAULT_MODELS[aiProvider][0];
279
+ const modelToTest = model ?? AI_PROVIDERS[aiProvider].defaultModels[0];
202
280
  if (!modelToTest) {
203
281
  throw new Error('Missing a model to test');
204
282
  }
@@ -330,12 +408,8 @@ const PROMPTS_CONFIGS = {
330
408
  edit: EDIT_CONFIG,
331
409
  gen: GEN_CONFIG
332
410
  };
333
- function getProviderAndCompletionConfig({ messages, stream, tools, forceModelProvider }) {
334
- let info = get(copilotInfo);
335
- const modelProvider = forceModelProvider ?? get(copilotSessionModel) ?? info.defaultModel ?? info.aiModels[0];
336
- if (!modelProvider) {
337
- throw new Error('No model selected');
338
- }
411
+ export function getProviderAndCompletionConfig({ messages, stream, tools, forceModelProvider }) {
412
+ const modelProvider = forceModelProvider ?? getCurrentModel();
339
413
  const providerConfig = PROVIDER_COMPLETION_CONFIG_MAP[modelProvider.provider];
340
414
  const processedMessages = prepareMessages(modelProvider.provider, messages);
341
415
  return {
@@ -444,7 +518,7 @@ export async function getFimCompletion(prompt, suffix, providerModel, abortContr
444
518
  export async function getCompletion(messages, abortController, tools) {
445
519
  const { provider, config } = getProviderAndCompletionConfig({ messages, stream: true, tools });
446
520
  const openaiClient = workspaceAIClients.getOpenaiClient();
447
- const completion = await openaiClient.chat.completions.create(config, {
521
+ const completion = openaiClient.chat.completions.create(config, {
448
522
  signal: abortController.signal,
449
523
  headers: {
450
524
  'X-Provider': provider
@@ -452,6 +526,112 @@ export async function getCompletion(messages, abortController, tools) {
452
526
  });
453
527
  return completion;
454
528
  }
529
+ function extractFirstJSON(str) {
530
+ let depth = 0, i = 0;
531
+ for (; i < str.length; i++) {
532
+ if (str[i] === '{')
533
+ depth++;
534
+ else if (str[i] === '}' && --depth === 0)
535
+ break;
536
+ }
537
+ return str.slice(0, i + 1);
538
+ }
539
+ export async function parseOpenAICompletion(completion, callbacks, messages, addedMessages, tools, helpers) {
540
+ const finalToolCalls = {};
541
+ let answer = '';
542
+ for await (const chunk of completion) {
543
+ if (!('choices' in chunk && chunk.choices.length > 0 && 'delta' in chunk.choices[0])) {
544
+ continue;
545
+ }
546
+ const c = chunk;
547
+ const delta = c.choices[0].delta.content;
548
+ if (delta) {
549
+ answer += delta;
550
+ callbacks.onNewToken(delta);
551
+ }
552
+ const toolCalls = c.choices[0].delta.tool_calls || [];
553
+ if (toolCalls.length > 0 && answer) {
554
+ // if tool calls are present but we have some textual content already, we need to display it to the user first
555
+ callbacks.onMessageEnd();
556
+ answer = '';
557
+ }
558
+ for (let i = 0; i < toolCalls.length; i++) {
559
+ const toolCall = toolCalls[i];
560
+ // Gemini models are missing the index field
561
+ if (toolCall.index === undefined ||
562
+ (typeof toolCall.index === 'string' && toolCall.index === '')) {
563
+ toolCall.index = i;
564
+ }
565
+ // Gemini models are missing the id field
566
+ if (toolCall.id === undefined || (typeof toolCall.id === 'string' && toolCall.id === '')) {
567
+ toolCall.id = generateRandomString();
568
+ }
569
+ const { index } = toolCall;
570
+ let finalToolCall = finalToolCalls[index];
571
+ if (!finalToolCall) {
572
+ finalToolCalls[index] = toolCall;
573
+ }
574
+ else {
575
+ if (toolCall.function?.arguments) {
576
+ if (!finalToolCall.function) {
577
+ finalToolCall.function = toolCall.function;
578
+ }
579
+ else {
580
+ finalToolCall.function.arguments =
581
+ (finalToolCall.function.arguments ?? '') + toolCall.function.arguments;
582
+ // Make sure we only have one JSON object, else for Gemini models it sometimes results in two JSON objects
583
+ finalToolCall.function.arguments = extractFirstJSON(finalToolCall.function.arguments || '{}');
584
+ }
585
+ }
586
+ }
587
+ finalToolCall = finalToolCalls[index];
588
+ if (finalToolCall?.function) {
589
+ const { function: { name: funcName }, id: toolCallId } = finalToolCall;
590
+ if (funcName && toolCallId) {
591
+ const tool = tools.find((t) => t.def.function.name === funcName);
592
+ if (tool && tool.preAction) {
593
+ tool.preAction({ toolCallbacks: callbacks, toolId: toolCallId });
594
+ }
595
+ }
596
+ }
597
+ }
598
+ }
599
+ if (answer) {
600
+ const toAdd = { role: 'assistant', content: answer };
601
+ addedMessages.push(toAdd);
602
+ messages.push(toAdd);
603
+ }
604
+ callbacks.onMessageEnd();
605
+ const toolCalls = Object.values(finalToolCalls).filter((toolCall) => toolCall.id !== undefined && toolCall.function?.arguments !== undefined);
606
+ if (toolCalls.length > 0) {
607
+ const toAdd = {
608
+ role: 'assistant',
609
+ tool_calls: toolCalls.map((t) => ({
610
+ ...t,
611
+ function: {
612
+ ...t.function,
613
+ arguments: t.function.arguments || '{}'
614
+ }
615
+ }))
616
+ };
617
+ messages.push(toAdd);
618
+ addedMessages.push(toAdd);
619
+ for (const toolCall of toolCalls) {
620
+ const messageToAdd = await processToolCall({
621
+ tools,
622
+ toolCall,
623
+ helpers,
624
+ toolCallbacks: callbacks
625
+ });
626
+ messages.push(messageToAdd);
627
+ addedMessages.push(messageToAdd);
628
+ }
629
+ }
630
+ else {
631
+ return false;
632
+ }
633
+ return true;
634
+ }
455
635
  export function getResponseFromEvent(part) {
456
636
  return part.choices?.[0]?.delta?.content || '';
457
637
  }
@@ -539,7 +719,7 @@ export async function deltaCodeCompletion(messages, generatedCodeDelta, abortCon
539
719
  continue;
540
720
  }
541
721
  if (!match[1].endsWith('`')) {
542
- // skip udpating if possible that part of three ticks (end of code block)s
722
+ // skip updating if possible that part of three ticks (end of code block)s
543
723
  delta = getStringEndDelta(code, match[1]);
544
724
  generatedCodeDelta.set(delta);
545
725
  code = match[1];
@@ -41,7 +41,7 @@ export type VisualChange = {
41
41
  };
42
42
  export declare function setGlobalCSS(id: string, cssCode: string): void;
43
43
  export declare let VISUAL_CHANGES_CSS: string;
44
- export declare function displayVisualChanges(cssId: string, editor: meditor.IStandaloneCodeEditor, visualChanges: VisualChange[]): Promise<{
44
+ export declare function displayVisualChanges(cssId: string, editor: meditor.IStandaloneCodeEditor, visualChanges: VisualChange[], revertMode?: boolean): Promise<{
45
45
  collection: meditor.IEditorDecorationsCollection;
46
46
  ids: string[];
47
47
  }>;
@@ -1,6 +1,6 @@
1
1
  import { createLongHash } from '../../editorLangUtils';
2
2
  import {} from 'monaco-editor';
3
- function applyMonacoStyles(targetEl, greenHighlight) {
3
+ function applyMonacoStyles(targetEl, greenHighlight, revertMode) {
4
4
  const computedStyles = window.getComputedStyle(document.querySelector('.monaco-editor .view-lines'));
5
5
  Object.assign(targetEl.style, {
6
6
  fontFamily: computedStyles.fontFamily,
@@ -10,7 +10,9 @@ function applyMonacoStyles(targetEl, greenHighlight) {
10
10
  whiteSpace: 'pre'
11
11
  });
12
12
  if (greenHighlight) {
13
- targetEl.style.backgroundColor = 'var(--vscode-diffEditor-insertedTextBackground)';
13
+ targetEl.style.backgroundColor = revertMode
14
+ ? 'var(--vscode-diffEditor-removedTextBackground)'
15
+ : 'var(--vscode-diffEditor-insertedTextBackground)';
14
16
  }
15
17
  }
16
18
  export function setGlobalCSS(id, cssCode) {
@@ -22,7 +24,7 @@ export function setGlobalCSS(id, cssCode) {
22
24
  }
23
25
  styleTag.textContent = cssCode;
24
26
  }
25
- function addInlineGhostText(change) {
27
+ function addInlineGhostText(change, revertMode) {
26
28
  const cssId = createLongHash();
27
29
  const decoration = {
28
30
  range: {
@@ -32,7 +34,11 @@ function addInlineGhostText(change) {
32
34
  endColumn: change.position.column + change.value.length
33
35
  },
34
36
  options: {
35
- beforeContentClassName: `editor-ghost-text editor-ghost-text-content-${cssId} ${change.options?.greenHighlight ? 'editor-ghost-text-green' : ''}`
37
+ beforeContentClassName: `editor-ghost-text editor-ghost-text-content-${cssId} ${change.options?.greenHighlight
38
+ ? revertMode
39
+ ? 'editor-ghost-text-removed'
40
+ : 'editor-ghost-text-green'
41
+ : ''}`
36
42
  }
37
43
  };
38
44
  const safeContent = change.value.replaceAll('"', '\\"');
@@ -90,14 +96,14 @@ function getReviewButtons(editor, acceptFn, rejectFn) {
90
96
  reviewButtons.append(rejectButton);
91
97
  return reviewButtons;
92
98
  }
93
- async function addMultilineGhostText(editor, text, afterLineNumber, heightInLines, options) {
99
+ async function addMultilineGhostText(editor, text, afterLineNumber, heightInLines, options, revertMode) {
94
100
  const el = document.createElement('div');
95
101
  el.textContent = text;
96
102
  if (options?.review) {
97
103
  const reviewButtons = getReviewButtons(editor, options.review.acceptFn, options.review.rejectFn);
98
104
  el.append(reviewButtons);
99
105
  }
100
- applyMonacoStyles(el, options?.greenHighlight);
106
+ applyMonacoStyles(el, options?.greenHighlight, revertMode);
101
107
  const addZonePromise = new Promise((resolve, reject) => {
102
108
  editor?.changeViewZones((acc) => {
103
109
  const id = acc.addZone({
@@ -112,13 +118,13 @@ async function addMultilineGhostText(editor, text, afterLineNumber, heightInLine
112
118
  return addZonePromise;
113
119
  }
114
120
  export let VISUAL_CHANGES_CSS = `.editor-ghost-text-green { background-color: var(--vscode-diffEditor-insertedTextBackground) !important; }\n.editor-ghost-text-removed { background-color: var(--vscode-diffEditor-removedTextBackground); }\n\n.editor-ghost-text { display: inline-block; background-color: var(--vscode-editor-background); color: gray;}`;
115
- export async function displayVisualChanges(cssId, editor, visualChanges) {
121
+ export async function displayVisualChanges(cssId, editor, visualChanges, revertMode) {
116
122
  let decorations = [];
117
123
  let css = '';
118
124
  let ids = [];
119
125
  for (const change of visualChanges) {
120
126
  if (change.type === 'added_inline') {
121
- const { css: newCss, decoration } = addInlineGhostText(change);
127
+ const { css: newCss, decoration } = addInlineGhostText(change, revertMode);
122
128
  decorations.push(decoration);
123
129
  css += newCss;
124
130
  }
@@ -131,7 +137,7 @@ export async function displayVisualChanges(cssId, editor, visualChanges) {
131
137
  endColumn: change.range.endColumn
132
138
  },
133
139
  options: {
134
- className: 'editor-ghost-text-removed',
140
+ className: revertMode ? 'editor-ghost-text-green' : 'editor-ghost-text-removed',
135
141
  isWholeLine: change.options?.isWholeLine
136
142
  }
137
143
  };
@@ -157,7 +163,7 @@ export async function displayVisualChanges(cssId, editor, visualChanges) {
157
163
  }
158
164
  else if (change.type === 'added_block') {
159
165
  const id = await addMultilineGhostText(editor, change.value, change.position.afterLineNumber, change.value.split('\n').length, // we know it won't end by \n
160
- change.options);
166
+ change.options, revertMode);
161
167
  ids.push(id);
162
168
  }
163
169
  }
@@ -8,8 +8,9 @@ import { writable } from 'svelte/store';
8
8
  import FlowAIChat from '../copilot/chat/flow/FlowAIChat.svelte';
9
9
  import { aiChatManager, AIMode } from '../copilot/chat/AIChatManager.svelte';
10
10
  import { triggerableByAI } from '../../actions/triggerableByAI.svelte';
11
+ import { extractAllModules } from '../copilot/chat/shared';
11
12
  const { flowStore } = getContext('FlowEditorContext');
12
- let { loading, disableStaticInputs = false, disableTutorials = false, disableAi = false, disableSettings = false, disabledFlowInputs = false, smallErrorHandler = false, showJobStatus = false, newFlow = false, savedFlow = undefined, onDeployTrigger = () => { }, onTestUpTo = undefined, onEditInput = undefined, forceTestTab, highlightArg, localModuleStates = {}, testModuleStates = undefined, aiChatOpen, showFlowAiButton, toggleAiChat, isOwner, onTestFlow, isRunning, onCancelTestFlow, onOpenPreview, onHideJobStatus, individualStepTests = false, job, suspendStatus, onDelete, flowHasChanged } = $props();
13
+ let { loading, disableStaticInputs = false, disableTutorials = false, disableAi = false, disableSettings = false, disabledFlowInputs = false, smallErrorHandler = false, showJobStatus = false, newFlow = false, savedFlow = undefined, onDeployTrigger = () => { }, onTestUpTo = undefined, onEditInput = undefined, forceTestTab, highlightArg, localModuleStates = {}, testModuleStates = undefined, aiChatOpen, showFlowAiButton, toggleAiChat, isOwner, onTestFlow, isRunning, onCancelTestFlow, onOpenPreview, onHideJobStatus, individualStepTests = false, job, suspendStatus, onDelete, flowHasChanged, previewOpen } = $props();
13
14
  let flowModuleSchemaMap = $state();
14
15
  export function isNodeVisible(nodeId) {
15
16
  return flowModuleSchemaMap?.isNodeVisible(nodeId) ?? false;
@@ -24,7 +25,7 @@ $effect(() => {
24
25
  lastDeployedFlow: savedFlow,
25
26
  lastSavedFlow: savedFlow?.draft,
26
27
  path: savedFlow?.path,
27
- modules: flowStore.val.value.modules
28
+ modules: extractAllModules(flowStore.val.value.modules)
28
29
  };
29
30
  aiChatManager.flowOptions = options;
30
31
  });
@@ -117,6 +118,7 @@ onDestroy(() => {
117
118
  {isOwner}
118
119
  {suspendStatus}
119
120
  onOpenDetails={onOpenPreview}
121
+ {previewOpen}
120
122
  />
121
123
  {/if}
122
124
  </Pane>
@@ -40,6 +40,7 @@ interface Props {
40
40
  }>>;
41
41
  onDelete?: (id: string) => void;
42
42
  flowHasChanged?: boolean;
43
+ previewOpen: boolean;
43
44
  }
44
45
  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> {
45
46
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
@@ -9,19 +9,19 @@ const iconHeight = height || size;
9
9
  </script>
10
10
 
11
11
  {#if module.value.type === 'aiagent'}
12
- <Bot size={16} />
12
+ <Bot size={16} class="text-violet-800 dark:text-violet-400" />
13
13
  {:else if module.value.type === 'rawscript'}
14
14
  <LanguageIcon lang={module.value.language} width={iconWidth} height={iconHeight} />
15
15
  {:else if module.summary === 'Terminate flow'}
16
- <Square size={size} />
16
+ <Square {size} />
17
17
  {:else if module.value.type === 'identity'}
18
- <ArrowDown size={size} />
18
+ <ArrowDown {size} />
19
19
  {:else if module.value.type === 'flow'}
20
- <BarsStaggered size={size} />
20
+ <BarsStaggered {size} />
21
21
  {:else if module.value.type === 'forloopflow' || module.value.type === 'whileloopflow'}
22
- <Repeat size={size} />
22
+ <Repeat {size} />
23
23
  {:else if module.value.type === 'branchone' || module.value.type === 'branchall'}
24
- <GitBranch size={size} />
24
+ <GitBranch {size} />
25
25
  {:else if module.value.type === 'script'}
26
26
  {#if module.value.path.startsWith('hub/')}
27
27
  <IconedResourceType
@@ -31,9 +31,9 @@ const iconHeight = height || size;
31
31
  silent={true}
32
32
  />
33
33
  {:else}
34
- <Building size={size} />
34
+ <Building {size} />
35
35
  {/if}
36
36
  {:else}
37
37
  <!-- Fallback icon for unknown module types -->
38
- <BarsStaggered size={size} />
38
+ <BarsStaggered {size} />
39
39
  {/if}
@@ -47,7 +47,7 @@ $effect.pre(() => {
47
47
  </script>
48
48
 
49
49
  <div
50
- class="overflow-x-auto scrollbar-hidden flex items-center justify-between px-4 py-1 flex-nowrap"
50
+ class="overflow-x-auto scrollbar-hidden flex items-center justify-between px-4 pt-1 pb-4 flex-nowrap"
51
51
  >
52
52
  {#if flowModuleValue}
53
53
  <span class="text-sm w-full mr-4">
@@ -129,6 +129,9 @@ $effect.pre(() => {
129
129
  {:else if flowModuleValue.type === 'flow'}
130
130
  <Badge color="indigo" capitalize>flow</Badge>
131
131
  <input bind:value={summary} placeholder="Summary" class="w-full grow" />
132
+ {:else if flowModuleValue.type === 'aiagent'}
133
+ <Badge color="indigo">AI Agent</Badge>
134
+ <input bind:value={summary} placeholder="Summary" class="w-full grow" />
132
135
  {/if}
133
136
  </div>
134
137
  </span>
@@ -12,12 +12,18 @@ import FlowModuleDeleteAfterUse from './FlowModuleDeleteAfterUse.svelte';
12
12
  import { enterpriseLicense } from '../../../stores';
13
13
  import FlowModuleSkip from './FlowModuleSkip.svelte';
14
14
  import TabsV2 from '../../common/tabs/TabsV2.svelte';
15
+ import { useUiIntent } from '../../copilot/chat/flow/useUiIntent';
15
16
  let { noEditor, flowModule = $bindable(), previousModule, parentModule } = $props();
16
17
  let value = $state(flowModule.value);
17
18
  $effect(() => {
18
19
  value = flowModule.value;
19
20
  });
20
21
  let selected = $state('early-stop');
22
+ useUiIntent(`branchall-${flowModule.id}`, {
23
+ openTab: (tab) => {
24
+ selected = tab;
25
+ }
26
+ });
21
27
  </script>
22
28
 
23
29
  <div class="h-full flex flex-col w-full" id="flow-editor-branch-all-wrapper">
@@ -12,12 +12,18 @@ import SplitPanesWrapper from '../../splitPanes/SplitPanesWrapper.svelte';
12
12
  import FlowModuleMock from './FlowModuleMock.svelte';
13
13
  import { enterpriseLicense } from '../../../stores';
14
14
  import FlowModuleSkip from './FlowModuleSkip.svelte';
15
+ import { useUiIntent } from '../../copilot/chat/flow/useUiIntent';
15
16
  let { flowModule = $bindable(), previousModule, parentModule, noEditor, enableAi = false } = $props();
16
17
  let value = $state(flowModule.value);
17
18
  $effect(() => {
18
19
  value = flowModule.value;
19
20
  });
20
21
  let selected = $state('early-stop');
22
+ useUiIntent(`branchone-${flowModule.id}`, {
23
+ openTab: (tab) => {
24
+ selected = tab;
25
+ }
26
+ });
21
27
  </script>
22
28
 
23
29
  <div class="h-full" id="flow-editor-branch-one-wrapper">
@@ -10,7 +10,7 @@ import TriggersEditor from '../../triggers/TriggersEditor.svelte';
10
10
  import { handleSelectTriggerFromKind } from '../../triggers/utils';
11
11
  import { computeMissingInputWarnings } from '../missingInputWarnings';
12
12
  import FlowResult from './FlowResult.svelte';
13
- let { noEditor = false, enableAi = false, newFlow = false, disabledFlowInputs = false, savedFlow = undefined, onDeployTrigger = () => { }, forceTestTab, highlightArg, onTestFlow, job, isOwner, suspendStatus, onOpenDetails } = $props();
13
+ let { noEditor = false, enableAi = false, newFlow = false, disabledFlowInputs = false, savedFlow = undefined, onDeployTrigger = () => { }, forceTestTab, highlightArg, onTestFlow, job, isOwner, suspendStatus, onOpenDetails, previewOpen = false } = $props();
14
14
  const { selectedId, flowStore, flowStateStore, flowInputsStore, pathStore, initialPathStore, fakeInitialPath, previewArgs, flowInputEditorState } = getContext('FlowEditorContext');
15
15
  const { showCaptureHint, triggersState, triggersCount } = getContext('TriggerContext');
16
16
  function checkDup(modules) {
@@ -41,6 +41,7 @@ $effect(() => {
41
41
  }}
42
42
  on:applyArgs
43
43
  {onTestFlow}
44
+ {previewOpen}
44
45
  />
45
46
  {:else if $selectedId === 'Result'}
46
47
  <FlowResult {noEditor} {job} {isOwner} {suspendStatus} {onOpenDetails} />
@@ -20,6 +20,7 @@ interface Props {
20
20
  nb: number;
21
21
  }>>;
22
22
  onOpenDetails?: () => void;
23
+ previewOpen?: boolean;
23
24
  }
24
25
  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> {
25
26
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {