windmill-components 1.511.1 → 1.531.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/package/components/AIAgentLogViewer.svelte +123 -0
  2. package/package/components/AIAgentLogViewer.svelte.d.ts +13 -0
  3. package/package/components/AppConnectInner.svelte +10 -10
  4. package/package/components/AppConnectInner.svelte.d.ts +1 -1
  5. package/package/components/ArgInput.svelte +42 -14
  6. package/package/components/ArgInput.svelte.d.ts +2 -10
  7. package/package/components/AssignableTagsInner.svelte +5 -0
  8. package/package/components/AuthSettings.svelte +4 -2
  9. package/package/components/AuthSettings.svelte.d.ts +1 -0
  10. package/package/components/AutoscalingConfigEditor.svelte +76 -2
  11. package/package/components/DBManagerDrawer.svelte +154 -151
  12. package/package/components/DBManagerDrawer.svelte.d.ts +2 -2
  13. package/package/components/DBTable.svelte +3 -3
  14. package/package/components/DBTable.svelte.d.ts +1 -0
  15. package/package/components/DBTableEditor.svelte +7 -7
  16. package/package/components/DBTableEditor.svelte.d.ts +1 -1
  17. package/package/components/DeployWorkspace.svelte +1 -1
  18. package/package/components/Dev.svelte +12 -28
  19. package/package/components/DiffEditor.svelte +6 -3
  20. package/package/components/DiffEditor.svelte.d.ts +1 -0
  21. package/package/components/DisplayResult.svelte +46 -14
  22. package/package/components/DisplayResult.svelte.d.ts +5 -1
  23. package/package/components/DynSelect.svelte +58 -34
  24. package/package/components/DynSelect.svelte.d.ts +3 -11
  25. package/package/components/EditableSchemaForm.svelte +131 -8
  26. package/package/components/EditableSchemaForm.svelte.d.ts +5 -1
  27. package/package/components/Editor.svelte +27 -9
  28. package/package/components/Editor.svelte.d.ts +1 -1
  29. package/package/components/EditorBar.svelte +105 -7
  30. package/package/components/EditorSettings.svelte +6 -0
  31. package/package/components/ErrorOrRecoveryHandler.svelte +76 -8
  32. package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -1
  33. package/package/components/ExploreAssetButton.svelte +14 -4
  34. package/package/components/ExploreAssetButton.svelte.d.ts +1 -0
  35. package/package/components/FirstStepInputs.svelte +2 -2
  36. package/package/components/FlowBuilder.svelte +18 -36
  37. package/package/components/FlowGraphViewerStep.svelte +7 -0
  38. package/package/components/FlowJobResult.svelte +16 -64
  39. package/package/components/FlowJobResult.svelte.d.ts +11 -4
  40. package/package/components/FlowLogViewer.svelte +660 -0
  41. package/package/components/FlowLogViewer.svelte.d.ts +34 -0
  42. package/package/components/FlowLogViewerWrapper.svelte +52 -0
  43. package/package/components/FlowLogViewerWrapper.svelte.d.ts +21 -0
  44. package/package/components/FlowLoopIterationPreview.svelte +3 -3
  45. package/package/components/FlowPreviewContent.svelte +13 -6
  46. package/package/components/FlowPreviewContent.svelte.d.ts +7 -7
  47. package/package/components/FlowPreviewResult.svelte +7 -5
  48. package/package/components/FlowPreviewResult.svelte.d.ts +4 -5
  49. package/package/components/FlowStatusViewer.svelte +28 -16
  50. package/package/components/FlowStatusViewer.svelte.d.ts +19 -27
  51. package/package/components/FlowStatusViewerInner.svelte +500 -295
  52. package/package/components/FlowStatusViewerInner.svelte.d.ts +34 -34
  53. package/package/components/FlowTimeline.svelte +11 -13
  54. package/package/components/FlowTimeline.svelte.d.ts +6 -5
  55. package/package/components/FolderEditor.svelte +1 -1
  56. package/package/components/GitDiffPreview.svelte +14 -18
  57. package/package/components/GitDiffPreview.svelte.d.ts +2 -8
  58. package/package/components/GitHubAppIntegration.svelte +3 -1
  59. package/package/components/HighlightCode.svelte +4 -1
  60. package/package/components/IconedResourceType.svelte +9 -5
  61. package/package/components/IdEditorInput.svelte +25 -22
  62. package/package/components/IdEditorInput.svelte.d.ts +11 -23
  63. package/package/components/InstanceSetting.svelte +7 -2
  64. package/package/components/InstanceSettings.svelte +1 -0
  65. package/package/components/JobLoader.svelte +108 -12
  66. package/package/components/JobLoader.svelte.d.ts +16 -3
  67. package/package/components/LogViewer.svelte +8 -2
  68. package/package/components/LogViewer.svelte.d.ts +1 -0
  69. package/package/components/LogViewerHeader.svelte +32 -0
  70. package/package/components/LogViewerHeader.svelte.d.ts +8 -0
  71. package/package/components/Login.svelte +8 -2
  72. package/package/components/MemoryFootprintViewer.svelte +1 -1
  73. package/package/components/ModulePreviewForm.svelte +10 -6
  74. package/package/components/ModulePreviewResultViewer.svelte +18 -2
  75. package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -1
  76. package/package/components/ModuleTest.svelte +59 -16
  77. package/package/components/MoveDrawer.svelte.d.ts +2 -2
  78. package/package/components/NextcloudSetting.svelte +84 -0
  79. package/package/components/NextcloudSetting.svelte.d.ts +7 -0
  80. package/package/components/ObjectResourceInput.svelte +3 -2
  81. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  82. package/package/components/ParqetCsvTableRenderer.svelte +1 -1
  83. package/package/components/RelativeLineNumbers.svelte +16 -0
  84. package/package/components/RelativeLineNumbers.svelte.d.ts +18 -0
  85. package/package/components/ResourceEditor.svelte +10 -5
  86. package/package/components/ResourcePicker.svelte +8 -1
  87. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  88. package/package/components/ResultStreamDisplay.svelte +5 -0
  89. package/package/components/ResultStreamDisplay.svelte.d.ts +5 -0
  90. package/package/components/RunForm.svelte +9 -1
  91. package/package/components/SchemaForm.svelte +2 -2
  92. package/package/components/SchemaForm.svelte.d.ts +2 -10
  93. package/package/components/ScriptBuilder.svelte +26 -19
  94. package/package/components/ScriptBuilder.svelte.d.ts +1 -1
  95. package/package/components/ScriptEditor.svelte +2 -2
  96. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  97. package/package/components/ScriptWrapper.svelte +1 -1
  98. package/package/components/ShareModal.svelte.d.ts +1 -1
  99. package/package/components/SimpleAgTable.svelte +2 -0
  100. package/package/components/SimpleAgTable.svelte.d.ts +2 -0
  101. package/package/components/SimpleEditor.svelte +10 -4
  102. package/package/components/SimpleEditor.svelte.d.ts +1 -0
  103. package/package/components/SqlRepl.svelte +21 -7
  104. package/package/components/SqlRepl.svelte.d.ts +2 -2
  105. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
  106. package/package/components/TemplateEditor.svelte +1 -1
  107. package/package/components/UserSettings.svelte +4 -4
  108. package/package/components/WorkerTagSelect.svelte +70 -1
  109. package/package/components/apps/components/display/AppAccordionList.svelte +1 -1
  110. package/package/components/apps/components/display/AppCarouselList.svelte +10 -8
  111. package/package/components/apps/components/display/AppDisplayComponent.svelte +13 -1
  112. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +3 -3
  113. package/package/components/apps/components/display/AppText.svelte +2 -2
  114. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +8 -1
  115. package/package/components/apps/components/display/dbtable/InsertRow.svelte +5 -4
  116. package/package/components/apps/components/display/dbtable/queries/count.js +11 -1
  117. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
  118. package/package/components/apps/components/display/dbtable/queries/createTable.js +3 -3
  119. package/package/components/apps/components/display/dbtable/queries/delete.js +7 -0
  120. package/package/components/apps/components/display/dbtable/queries/insert.js +2 -0
  121. package/package/components/apps/components/display/dbtable/queries/select.js +14 -0
  122. package/package/components/apps/components/display/dbtable/queries/update.js +7 -0
  123. package/package/components/apps/components/display/dbtable/utils.d.ts +6 -5
  124. package/package/components/apps/components/display/dbtable/utils.js +52 -28
  125. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +1 -1
  126. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
  127. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +1 -0
  128. package/package/components/apps/components/display/table/AppAggridTable.svelte +7 -6
  129. package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
  130. package/package/components/apps/components/display/table/utils.js +7 -4
  131. package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -3
  132. package/package/components/apps/components/helpers/InputValue.svelte +6 -1
  133. package/package/components/apps/components/helpers/NonRunnableComponent.svelte +8 -4
  134. package/package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -1
  135. package/package/components/apps/components/helpers/RunnableComponent.svelte +10 -8
  136. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -2
  137. package/package/components/apps/components/helpers/RunnableWrapper.svelte +12 -3
  138. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -1
  139. package/package/components/apps/components/inputs/AppCodeInputComponent.svelte +0 -5
  140. package/package/components/apps/components/inputs/AppS3FileInput.svelte +2 -2
  141. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +1 -1
  142. package/package/components/apps/components/layout/AppContainer.svelte +1 -1
  143. package/package/components/apps/components/layout/AppDecisionTree.svelte +32 -21
  144. package/package/components/apps/components/layout/AppDrawer.svelte +1 -1
  145. package/package/components/apps/components/layout/AppList.svelte +9 -8
  146. package/package/components/apps/components/layout/AppModal.svelte +1 -1
  147. package/package/components/apps/components/layout/AppSplitpanes.svelte +5 -2
  148. package/package/components/apps/components/layout/AppStepper.svelte +10 -6
  149. package/package/components/apps/components/layout/AppTabs.svelte +3 -3
  150. package/package/components/apps/editor/AppEditorHeader.svelte +13 -2
  151. package/package/components/apps/editor/AppJobsDrawer.svelte +2 -2
  152. package/package/components/apps/editor/GridEditor.svelte +24 -19
  153. package/package/components/apps/editor/GridEditor.svelte.d.ts +4 -1
  154. package/package/components/apps/editor/GridViewer.svelte +1 -0
  155. package/package/components/apps/editor/RunnableJobPanelInner.svelte +2 -1
  156. package/package/components/apps/editor/SubGridEditor.svelte +7 -11
  157. package/package/components/apps/editor/SubGridEditor.svelte.d.ts +3 -19
  158. package/package/components/apps/editor/appUtils.js +17 -68
  159. package/package/components/apps/editor/component/ComponentInner.svelte +845 -694
  160. package/package/components/apps/editor/component/componentCallbacks.svelte.js +8 -1
  161. package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +7 -7
  162. package/package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +7 -19
  163. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +14 -55
  164. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  165. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  166. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  167. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +31 -45
  168. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
  169. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +1 -0
  170. package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +1 -3
  171. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +2 -2
  172. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +1 -0
  173. package/package/components/apps/svelte-grid/Grid.svelte +23 -25
  174. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +21 -9
  175. package/package/components/apps/svelte-grid/MoveResize.svelte +13 -15
  176. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +17 -24
  177. package/package/components/apps/utils.d.ts +2 -0
  178. package/package/components/apps/utils.js +22 -0
  179. package/package/components/assets/AssetsDropdownButton.svelte +1 -1
  180. package/package/components/assets/JobAssetsViewer.svelte +2 -2
  181. package/package/components/assets/lib.js +4 -0
  182. package/package/components/auditLogs/AuditLogsFilters.svelte +7 -9
  183. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  184. package/package/components/common/button/Button.svelte +4 -3
  185. package/package/components/common/button/Button.svelte.d.ts +1 -0
  186. package/package/components/common/confirmationModal/ConfirmationModal.svelte +6 -5
  187. package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +6 -11
  188. package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.d.ts +26 -0
  189. package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.js +50 -0
  190. package/package/components/common/fileDownload/FileDownload.svelte +1 -3
  191. package/package/components/common/fileDownload/FileDownload.svelte.d.ts +4 -18
  192. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  193. package/package/components/common/modal/Modal.svelte +2 -5
  194. package/package/components/common/tabs/TabsV2.svelte +2 -1
  195. package/package/components/common/tabs/TabsV2.svelte.d.ts +1 -0
  196. package/package/components/copilot/FlowInlineScriptAIButton.svelte +58 -0
  197. package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +3 -0
  198. package/package/components/copilot/MetadataGen.svelte +19 -1
  199. package/package/components/copilot/MetadataGen.svelte.d.ts +1 -1
  200. package/package/components/copilot/ScriptGen.svelte +23 -31
  201. package/package/components/copilot/ScriptGen.svelte.d.ts +0 -1
  202. package/package/components/copilot/autocomplete/Autocompletor.js +2 -0
  203. package/package/components/copilot/chat/AIChatDisplay.svelte +4 -4
  204. package/package/components/copilot/chat/AIChatInput.svelte +29 -6
  205. package/package/components/copilot/chat/AIChatManager.svelte.js +171 -33
  206. package/package/components/copilot/chat/AIChatMessage.svelte +3 -0
  207. package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
  208. package/package/components/copilot/chat/ToolContentDisplay.svelte +84 -0
  209. package/package/components/copilot/chat/ToolContentDisplay.svelte.d.ts +11 -0
  210. package/package/components/copilot/chat/ToolExecutionDisplay.svelte +105 -0
  211. package/package/components/copilot/chat/ToolExecutionDisplay.svelte.d.ts +7 -0
  212. package/package/components/copilot/chat/api/apiTools.d.ts +7 -0
  213. package/package/components/copilot/chat/api/apiTools.js +192 -0
  214. package/package/components/copilot/chat/api/core.d.ts +7 -0
  215. package/package/components/copilot/chat/api/core.js +61 -0
  216. package/package/components/copilot/chat/flow/FlowAIChat.svelte +4 -6
  217. package/package/components/copilot/chat/flow/core.js +213 -42
  218. package/package/components/copilot/chat/flow/utils.js +3 -0
  219. package/package/components/copilot/chat/monaco-adapter.d.ts +1 -1
  220. package/package/components/copilot/chat/monaco-adapter.js +10 -4
  221. package/package/components/copilot/chat/navigator/core.d.ts +1 -1
  222. package/package/components/copilot/chat/navigator/core.js +20 -22
  223. package/package/components/copilot/chat/script/core.d.ts +11 -3
  224. package/package/components/copilot/chat/script/core.js +120 -44
  225. package/package/components/copilot/chat/shared.d.ts +31 -4
  226. package/package/components/copilot/chat/shared.js +235 -10
  227. package/package/components/copilot/lib.d.ts +1 -1
  228. package/package/components/copilot/lib.js +15 -6
  229. package/package/components/custom_ui.d.ts +4 -0
  230. package/package/components/dbOps.d.ts +20 -8
  231. package/package/components/dbOps.js +85 -40
  232. package/package/components/details/DetailPageHeader.svelte +0 -2
  233. package/package/components/details/DetailPageLayout.svelte +34 -33
  234. package/package/components/flow_builder.d.ts +1 -2
  235. package/package/components/flows/FlowEditor.svelte +3 -3
  236. package/package/components/flows/FlowEditor.svelte.d.ts +7 -6
  237. package/package/components/flows/common/FlowCard.svelte +2 -2
  238. package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
  239. package/package/components/flows/common/FlowCardHeader.svelte +13 -4
  240. package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
  241. package/package/components/flows/content/BranchPredicateEditor.svelte +4 -7
  242. package/package/components/flows/content/BranchPredicateEditor.svelte.d.ts +12 -11
  243. package/package/components/flows/content/FlowConstants.svelte +3 -3
  244. package/package/components/flows/content/FlowEditorPanel.svelte +3 -3
  245. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -4
  246. package/package/components/flows/content/FlowInput.svelte +5 -0
  247. package/package/components/flows/content/FlowInputsQuick.svelte +2 -1
  248. package/package/components/flows/content/FlowLoop.svelte +2 -2
  249. package/package/components/flows/content/FlowModuleComponent.svelte +130 -108
  250. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  251. package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
  252. package/package/components/flows/content/FlowModuleScript.svelte +0 -1
  253. package/package/components/flows/content/FlowModuleSkip.svelte +1 -1
  254. package/package/components/flows/content/FlowModuleSleep.svelte +1 -1
  255. package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
  256. package/package/components/flows/content/FlowModuleWrapper.svelte +15 -5
  257. package/package/components/flows/content/FlowModuleWrapper.svelte.d.ts +1 -0
  258. package/package/components/flows/content/FlowResult.svelte +2 -3
  259. package/package/components/flows/content/FlowResult.svelte.d.ts +2 -4
  260. package/package/components/flows/content/FlowWhileLoop.svelte +1 -1
  261. package/package/components/flows/dfs.d.ts +3 -1
  262. package/package/components/flows/dfs.js +5 -1
  263. package/package/components/flows/flowInfers.js +78 -0
  264. package/package/components/flows/flowState.d.ts +2 -3
  265. package/package/components/flows/flowState.js +2 -2
  266. package/package/components/flows/flowStateUtils.svelte.d.ts +4 -4
  267. package/package/components/flows/flowStateUtils.svelte.js +14 -13
  268. package/package/components/flows/flowStore.d.ts +3 -4
  269. package/package/components/flows/header/FlowPreviewButtons.svelte +2 -1
  270. package/package/components/flows/header/FlowYamlEditor.svelte +10 -1
  271. package/package/components/flows/idUtils.js +2 -1
  272. package/package/components/flows/map/FlowGraphPreviewButton.svelte +1 -1
  273. package/package/components/flows/map/FlowJobsMenu.svelte +7 -3
  274. package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +1 -0
  275. package/package/components/flows/map/FlowModuleSchemaItem.svelte +15 -15
  276. package/package/components/flows/map/FlowModuleSchemaMap.svelte +27 -15
  277. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +6 -4
  278. package/package/components/flows/map/InsertModuleButton.svelte +4 -1
  279. package/package/components/flows/map/InsertModuleInner.svelte +9 -1
  280. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +1 -0
  281. package/package/components/flows/map/MapItem.svelte +4 -2
  282. package/package/components/flows/pickers/TopLevelNode.svelte +4 -1
  283. package/package/components/flows/propPicker/InputPickerInner.svelte +5 -4
  284. package/package/components/flows/propPicker/OutputBadge.svelte +16 -10
  285. package/package/components/flows/propPicker/OutputPickerInner.svelte +19 -6
  286. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +6 -2
  287. package/package/components/flows/propPicker/StepHistory.svelte +4 -1
  288. package/package/components/flows/testSteps.svelte.d.ts +3 -2
  289. package/package/components/flows/testSteps.svelte.js +26 -23
  290. package/package/components/flows/types.d.ts +1 -1
  291. package/package/components/flows/utils.d.ts +3 -5
  292. package/package/components/flows/utils.js +3 -4
  293. package/package/components/git_sync/DetectionFlow.svelte +202 -0
  294. package/package/components/git_sync/DetectionFlow.svelte.d.ts +6 -0
  295. package/package/components/git_sync/GitSyncContext.svelte.d.ts +82 -0
  296. package/package/components/git_sync/GitSyncContext.svelte.js +462 -0
  297. package/package/components/git_sync/GitSyncModalManager.svelte +99 -0
  298. package/package/components/git_sync/GitSyncModalManager.svelte.d.ts +18 -0
  299. package/package/components/git_sync/GitSyncRepositoryCard.svelte +339 -0
  300. package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +6 -0
  301. package/package/components/git_sync/GitSyncRepositoryList.svelte +17 -0
  302. package/package/components/git_sync/GitSyncRepositoryList.svelte.d.ts +18 -0
  303. package/package/components/git_sync/GitSyncSection.svelte +89 -0
  304. package/package/components/git_sync/GitSyncSection.svelte.d.ts +3 -0
  305. package/package/components/git_sync/GitSyncSuccessModal.svelte +58 -0
  306. package/package/components/git_sync/GitSyncSuccessModal.svelte.d.ts +7 -0
  307. package/package/components/git_sync/PullWorkspaceModal.svelte +575 -0
  308. package/package/components/git_sync/PullWorkspaceModal.svelte.d.ts +15 -0
  309. package/package/components/git_sync/PushWorkspaceModal.svelte +320 -0
  310. package/package/components/git_sync/PushWorkspaceModal.svelte.d.ts +12 -0
  311. package/package/components/graph/FlowGraphV2.svelte +49 -25
  312. package/package/components/graph/FlowGraphV2.svelte.d.ts +5 -2
  313. package/package/components/graph/graphBuilder.svelte.d.ts +49 -17
  314. package/package/components/graph/graphBuilder.svelte.js +31 -15
  315. package/package/components/graph/model.d.ts +9 -6
  316. package/package/components/graph/renderers/edges/BaseEdge.svelte +3 -3
  317. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +2 -3
  318. package/package/components/graph/renderers/nodes/AIToolNode.svelte +234 -0
  319. package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +24 -0
  320. package/package/components/graph/renderers/nodes/AssetNode.svelte +19 -14
  321. package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +18 -1
  322. package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte +1 -1
  323. package/package/components/graph/renderers/nodes/BranchAllStart.svelte +1 -1
  324. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  325. package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +2 -2
  326. package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +1 -1
  327. package/package/components/graph/renderers/nodes/ModuleNode.svelte +21 -21
  328. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +64 -0
  329. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte.d.ts +7 -0
  330. package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +1 -1
  331. package/package/components/icons/AssetDucklakeIcon.svelte +28 -0
  332. package/package/components/icons/AssetDucklakeIcon.svelte.d.ts +9 -0
  333. package/package/components/icons/AssetGenericIcon.svelte +3 -0
  334. package/package/components/icons/DucklakeIcon.svelte +18 -0
  335. package/package/components/icons/DucklakeIcon.svelte.d.ts +6 -0
  336. package/package/components/icons/RubyIcon.svelte +656 -0
  337. package/package/components/icons/RubyIcon.svelte.d.ts +7 -0
  338. package/package/components/instanceSettings.js +20 -3
  339. package/package/components/modulesTest.svelte.d.ts +6 -3
  340. package/package/components/modulesTest.svelte.js +32 -0
  341. package/package/components/preview/FlowPreviewStatus.svelte +3 -1
  342. package/package/components/raw_apps/RawAppEditor.svelte +27 -26
  343. package/package/components/raw_apps/RawAppEditor.svelte.d.ts +17 -17
  344. package/package/components/runs/{JobPreview.svelte → JobRunsPreview.svelte} +2 -5
  345. package/package/components/runs/{JobPreview.svelte.d.ts → JobRunsPreview.svelte.d.ts} +3 -3
  346. package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
  347. package/package/components/runs/RunRow.svelte +5 -1
  348. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  349. package/package/components/schema/AddProperty.svelte +41 -36
  350. package/package/components/schema/AddProperty.svelte.d.ts +2 -2
  351. package/package/components/schema/AddPropertyV2.svelte +41 -37
  352. package/package/components/schema/AddPropertyV2.svelte.d.ts +1 -1
  353. package/package/components/schema/FlowPropertyEditor.svelte +11 -8
  354. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  355. package/package/components/schema/PropertyEditor.svelte +0 -2
  356. package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
  357. package/package/components/schema/SchemaFormDND.svelte +2 -1
  358. package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -0
  359. package/package/components/scriptEditor/LogPanel.svelte +5 -3
  360. package/package/components/scriptEditor/LogPanel.svelte.d.ts +5 -1
  361. package/package/components/search/RunsSearch.svelte +1 -1
  362. package/package/components/select/Select.svelte +7 -4
  363. package/package/components/select/Select.svelte.d.ts +5 -0
  364. package/package/components/select/SelectDropdown.svelte +2 -1
  365. package/package/components/select/SelectDropdown.svelte.d.ts +3 -0
  366. package/package/components/settings/CreateToken.svelte +132 -12
  367. package/package/components/settings/CreateToken.svelte.d.ts +3 -20
  368. package/package/components/settings/TokenDisplay.svelte +18 -42
  369. package/package/components/settings/TokenDisplay.svelte.d.ts +0 -1
  370. package/package/components/settings/TokensTable.svelte +2 -4
  371. package/package/components/settings/TokensTable.svelte.d.ts +3 -19
  372. package/package/components/settings/WorkspaceUserSettings.svelte +428 -69
  373. package/package/components/sidebar/MenuButton.svelte +12 -10
  374. package/package/components/sidebar/changelogs.js +5 -0
  375. package/package/components/stepHistoryLoader.svelte.d.ts +2 -2
  376. package/package/components/stepHistoryLoader.svelte.js +7 -12
  377. package/package/components/table/AutoDataTable.svelte +6 -4
  378. package/package/components/table/AutoDataTable.svelte.d.ts +1 -0
  379. package/package/components/table/DataTable.svelte +12 -10
  380. package/package/components/table/DataTable.svelte.d.ts +1 -0
  381. package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +2 -2
  382. package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
  383. package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
  384. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +50 -11
  385. package/package/components/triggers/gcp/utils.js +1 -0
  386. package/package/components/triggers/http/OpenAPISpecGenerator.svelte +2 -2
  387. package/package/components/triggers/http/utils.js +1 -1
  388. package/package/components/triggers/kafka/utils.js +1 -1
  389. package/package/components/triggers/mqtt/utils.js +1 -1
  390. package/package/components/triggers/nats/utils.js +1 -1
  391. package/package/components/triggers/postgres/utils.js +1 -1
  392. package/package/components/triggers/sqs/utils.js +1 -1
  393. package/package/components/triggers/utils.js +2 -1
  394. package/package/components/triggers/webhook/WebhooksConfigSection.svelte +24 -26
  395. package/package/components/triggers/webhook/WebhooksPanel.svelte +1 -15
  396. package/package/components/triggers/websocket/utils.js +1 -1
  397. package/package/components/tutorials/FlowBuilderTutorialBranchOne.svelte +1 -1
  398. package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +4 -4
  399. package/package/components/tutorials/utils.js +3 -0
  400. package/package/components/worker_group.d.ts +4 -1
  401. package/package/components/worker_group.js +3 -2
  402. package/package/components/workspaceSettings/AISettings.svelte +52 -36
  403. package/package/components/workspaceSettings/DucklakeSettings.svelte +321 -0
  404. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +23 -0
  405. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +122 -499
  406. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +8 -10
  407. package/package/consts.js +2 -1
  408. package/package/editorLangUtils.d.ts +1 -1
  409. package/package/editorLangUtils.js +2 -0
  410. package/package/editorUtils.d.ts +2 -1
  411. package/package/editorUtils.js +2 -1
  412. package/package/gen/core/OpenAPI.js +1 -1
  413. package/package/gen/schemas.gen.d.ts +303 -14
  414. package/package/gen/schemas.gen.js +371 -76
  415. package/package/gen/services.gen.d.ts +136 -16
  416. package/package/gen/services.gen.js +264 -19
  417. package/package/gen/types.gen.d.ts +736 -17
  418. package/package/git-sync.d.ts +36 -0
  419. package/package/git-sync.js +1 -0
  420. package/package/hub.d.ts +1 -0
  421. package/package/hubPaths.json +9 -3
  422. package/package/infer.js +13 -3
  423. package/package/monaco_workers/graphql.worker.bundle.js +144 -110
  424. package/package/script_helpers.d.ts +5 -2
  425. package/package/script_helpers.js +87 -14
  426. package/package/scripts.d.ts +1 -1
  427. package/package/scripts.js +3 -2
  428. package/package/services/JobManager.d.ts +28 -0
  429. package/package/services/JobManager.js +114 -0
  430. package/package/stores.d.ts +3 -1
  431. package/package/stores.js +2 -0
  432. package/package/svelte5Utils.svelte.d.ts +16 -0
  433. package/package/svelte5Utils.svelte.js +26 -0
  434. package/package/utils.d.ts +19 -2
  435. package/package/utils.js +55 -2
  436. package/package.json +24 -22
  437. package/package/components/AllFlowLogs.svelte +0 -31
  438. package/package/components/AllFlowLogs.svelte.d.ts +0 -8
  439. package/package/components/InitGitRepoPopover.svelte +0 -410
  440. package/package/components/InitGitRepoPopover.svelte.d.ts +0 -13
  441. package/package/components/PullGitRepoPopover.svelte +0 -355
  442. package/package/components/PullGitRepoPopover.svelte.d.ts +0 -18
  443. package/package/components/copilot/chat/navigator/apiTools.d.ts +0 -68
  444. package/package/components/copilot/chat/navigator/apiTools.js +0 -258
  445. package/package/inferArgSig.d.ts +0 -42
  446. package/package/inferArgSig.js +0 -198
@@ -1,9 +1,13 @@
1
+ <script module lang="ts">import pLimit from 'p-limit';
2
+ const plimit = pLimit(5);
3
+ </script>
4
+
1
5
  <script lang="ts">import { JobService } from '../gen';
2
6
  import { workspaceStore } from '../stores';
3
7
  import { onDestroy, tick, untrack } from 'svelte';
4
8
  import { sendUserToast } from '../toast';
5
9
  import { isScriptPreview } from '../utils';
6
- let { isLoading = $bindable(false), job = $bindable(undefined), noCode = false, allowConcurentRequests = false, workspaceOverride = undefined, notfound = $bindable(false), jobUpdateLastFetch = $bindable(undefined), toastError = false, lazyLogs = false, onlyResult = false, scriptProgress = $bindable(undefined), noLogs = false, children } = $props();
10
+ let { isLoading = $bindable(false), job = $bindable(undefined), noCode = false, allowConcurentRequests = false, workspaceOverride = undefined, notfound = $bindable(false), jobUpdateLastFetch = $bindable(undefined), toastError = false, onlyResult = false, loadPlaceholderJobOnStart = undefined, scriptProgress = $bindable(undefined), noLogs = false, children } = $props();
7
11
  /// Last time asked for job progress
8
12
  let lastTimeCheckedProgress = undefined;
9
13
  /// Will try to poll progress every 5s and if once progress returned was not undefined, will be ignored
@@ -15,6 +19,7 @@ let workspace = $derived(workspaceOverride ?? $workspaceStore);
15
19
  let syncIteration = 0;
16
20
  let errorIteration = 0;
17
21
  let logOffset = 0;
22
+ let resultStreamOffset = 0;
18
23
  let lastCallbacks = undefined;
19
24
  let finished = [];
20
25
  let ITERATIONS_BEFORE_SLOW_REFRESH = 10;
@@ -22,6 +27,8 @@ let ITERATIONS_BEFORE_SUPER_SLOW_REFRESH = 100;
22
27
  let lastStartedAt = Date.now();
23
28
  let currentId = $state(undefined);
24
29
  let noPingTimeout = undefined;
30
+ let lastNoLogs = $state(noLogs);
31
+ let lastCompletedJobId = $state(undefined);
25
32
  $effect(() => {
26
33
  let newIsLoading = currentId !== undefined;
27
34
  untrack(() => {
@@ -30,6 +37,29 @@ $effect(() => {
30
37
  }
31
38
  });
32
39
  });
40
+ const noLogsChangeRestartEvent = 'SSE restart after no logs change';
41
+ $effect(() => {
42
+ if (noLogs != lastNoLogs) {
43
+ lastNoLogs = noLogs;
44
+ if (!noLogs) {
45
+ currentEventSource?.onerror?.(new Event(noLogsChangeRestartEvent));
46
+ const lastJobId = lastCompletedJobId;
47
+ if (lastJobId && (job || lastCallbacks?.loadExtraLogs)) {
48
+ plimit(() => JobService.getCompletedJobLogsTail({
49
+ workspace: $workspaceStore,
50
+ id: lastJobId
51
+ })).then((res) => {
52
+ if (res && job) {
53
+ job.logs = res;
54
+ }
55
+ if (res && lastCallbacks?.loadExtraLogs) {
56
+ lastCallbacks.loadExtraLogs({ id: lastJobId, logs: res });
57
+ }
58
+ });
59
+ }
60
+ }
61
+ }
62
+ });
33
63
  function clearCurrentId() {
34
64
  if (currentId) {
35
65
  if (allowConcurentRequests) {
@@ -43,6 +73,7 @@ function clearCurrentId() {
43
73
  export async function abstractRun(fn, callbacks) {
44
74
  try {
45
75
  isLoading = true;
76
+ lastCompletedJobId = undefined;
46
77
  clearCurrentJob();
47
78
  lastCallbacks = callbacks;
48
79
  noPingTimeout = undefined;
@@ -100,10 +131,23 @@ export async function runFlowByPath(path, args, callbacks) {
100
131
  skipPreprocessor: true
101
132
  }), callbacks);
102
133
  }
134
+ export async function runFlowPreview(args, flow, callbacks) {
135
+ return abstractRun(() => JobService.runFlowPreview({
136
+ workspace: $workspaceStore,
137
+ requestBody: {
138
+ args,
139
+ value: flow.value,
140
+ tag: flow.tag
141
+ }
142
+ }), callbacks);
143
+ }
103
144
  function refreshLogOffset() {
104
145
  if (logOffset == 0) {
105
146
  logOffset = job?.logs?.length ? job.logs?.length + 1 : 0;
106
147
  }
148
+ if (resultStreamOffset == 0) {
149
+ resultStreamOffset = job?.result_stream?.length ? job.result_stream?.length + 1 : 0;
150
+ }
107
151
  }
108
152
  export async function getLogs() {
109
153
  if (job) {
@@ -141,7 +185,6 @@ export async function cancelJob() {
141
185
  const id = currentId;
142
186
  if (id) {
143
187
  lastCallbacks?.cancel?.({ id });
144
- lastCallbacks = undefined;
145
188
  clearCurrentId();
146
189
  // Clean up SSE connection
147
190
  currentEventSource?.close();
@@ -162,7 +205,6 @@ export async function clearCurrentJob() {
162
205
  if (currentId && !allowConcurentRequests) {
163
206
  job = undefined;
164
207
  lastCallbacks?.cancel?.({ id: currentId });
165
- lastCallbacks = undefined;
166
208
  await cancelJob();
167
209
  }
168
210
  }
@@ -176,14 +218,21 @@ function supportsSSE() {
176
218
  let startedWatchingJob = undefined;
177
219
  export async function watchJob(testId, callbacks) {
178
220
  logOffset = 0;
221
+ resultStreamOffset = 0;
179
222
  syncIteration = 0;
180
223
  errorIteration = 0;
181
224
  currentId = testId;
182
- job = undefined;
225
+ if (loadPlaceholderJobOnStart) {
226
+ job = structuredClone(loadPlaceholderJobOnStart);
227
+ }
228
+ else {
229
+ job = undefined;
230
+ }
183
231
  startedWatchingJob = Date.now();
184
232
  // Clean up any existing SSE connection
185
233
  currentEventSource?.close();
186
234
  currentEventSource = undefined;
235
+ lastCallbacks = callbacks;
187
236
  // Try SSE first, fall back to polling if needed
188
237
  if (supportsSSE()) {
189
238
  await loadTestJobWithSSE(testId, 0, callbacks);
@@ -237,9 +286,24 @@ function updateJobFromProgress(previewJobUpdates, job, callbacks) {
237
286
  job.logs = (job?.logs ?? '').concat(previewJobUpdates.new_logs);
238
287
  }
239
288
  }
289
+ if (previewJobUpdates.new_result_stream) {
290
+ if (!job.result_stream) {
291
+ job.result_stream = previewJobUpdates.new_result_stream;
292
+ }
293
+ else {
294
+ job.result_stream = job.result_stream.concat(previewJobUpdates.new_result_stream);
295
+ }
296
+ callbacks?.resultStreamUpdate?.({
297
+ id: job.id,
298
+ result_stream: job.result_stream
299
+ });
300
+ }
240
301
  if (previewJobUpdates.log_offset) {
241
302
  logOffset = previewJobUpdates.log_offset ?? 0;
242
303
  }
304
+ if (previewJobUpdates.stream_offset) {
305
+ resultStreamOffset = previewJobUpdates.stream_offset ?? 0;
306
+ }
243
307
  if (previewJobUpdates.flow_status) {
244
308
  job.flow_status = previewJobUpdates.flow_status;
245
309
  }
@@ -252,9 +316,10 @@ function updateJobFromProgress(previewJobUpdates, job, callbacks) {
252
316
  if (job &&
253
317
  (previewJobUpdates.running ||
254
318
  previewJobUpdates.progress ||
255
- previewJobUpdates.new_logs ||
319
+ previewJobUpdates.log_offset ||
256
320
  previewJobUpdates.flow_status ||
257
- previewJobUpdates.mem_peak)) {
321
+ previewJobUpdates.mem_peak ||
322
+ previewJobUpdates.stream_offset)) {
258
323
  callbacks?.change?.(job);
259
324
  }
260
325
  }
@@ -288,7 +353,7 @@ async function loadTestJob(id, callbacks) {
288
353
  job = await JobService.getJob({
289
354
  workspace: workspace,
290
355
  id,
291
- noLogs: lazyLogs || onlyResult || noLogs,
356
+ noLogs: onlyResult || noLogs,
292
357
  noCode
293
358
  });
294
359
  }
@@ -343,6 +408,7 @@ async function onJobCompleted(id, job, callbacks) {
343
408
  }
344
409
  callbacks?.change?.(job);
345
410
  clearCurrentId();
411
+ lastCompletedJobId = id;
346
412
  }
347
413
  }
348
414
  function setNoPingTimeout(id, attempt, callbacks) {
@@ -364,16 +430,24 @@ function isCurrentJob(id) {
364
430
  }
365
431
  async function loadTestJobWithSSE(id, attempt, callbacks) {
366
432
  let isCompleted = false;
433
+ let resultOnlyResultStream = '';
367
434
  if (isCurrentJob(id)) {
368
435
  try {
369
436
  // First load the job to get initial state
370
- if (!job && !onlyResult) {
437
+ if ((!job || job.id == '') && !onlyResult) {
371
438
  job = await JobService.getJob({
372
439
  workspace: workspace,
373
440
  id,
374
- noLogs: lazyLogs || noLogs,
441
+ noLogs: noLogs,
375
442
  noCode
376
443
  });
444
+ callbacks?.change?.(job);
445
+ }
446
+ if (!onlyResult) {
447
+ callbacks?.resultStreamUpdate?.({
448
+ id,
449
+ result_stream: undefined
450
+ });
377
451
  }
378
452
  // If job is already completed, don't start SSE
379
453
  if (job?.type === 'CompletedJob') {
@@ -411,6 +485,12 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
411
485
  if (startedWatchingJob && startedWatchingJob > Date.now() - 5000) {
412
486
  params.set('fast', 'true');
413
487
  }
488
+ if (noLogs) {
489
+ params.set('no_logs', 'true');
490
+ }
491
+ if (resultStreamOffset) {
492
+ params.set('stream_offset', resultStreamOffset.toString());
493
+ }
414
494
  const sseUrl = `/api/w/${workspace}/jobs_u/getupdate_sse/${id}?${params.toString()}`;
415
495
  currentEventSource = new EventSource(sseUrl);
416
496
  setNoPingTimeout(id, attempt, callbacks);
@@ -452,6 +532,14 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
452
532
  else if (onlyResult && callbacks?.running && previewJobUpdates.running) {
453
533
  callbacks?.running?.({ id });
454
534
  }
535
+ if (onlyResult && previewJobUpdates.new_result_stream) {
536
+ resultOnlyResultStream = resultOnlyResultStream.concat(previewJobUpdates.new_result_stream);
537
+ // console.log('resultOnlyResultStream', resultOnlyResultStream)
538
+ callbacks?.resultStreamUpdate?.({
539
+ id,
540
+ result_stream: resultOnlyResultStream
541
+ });
542
+ }
455
543
  // Check if job is completed
456
544
  if (previewJobUpdates.completed) {
457
545
  currentEventSource?.close();
@@ -468,6 +556,7 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
468
556
  else {
469
557
  const njob = previewJobUpdates.job;
470
558
  njob.logs = job?.logs ?? '';
559
+ njob.result_stream = job?.result_stream ?? '';
471
560
  job = njob;
472
561
  onJobCompleted(id, job, callbacks);
473
562
  }
@@ -481,9 +570,16 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
481
570
  console.warn('SSE error:', error);
482
571
  currentEventSource?.close();
483
572
  currentEventSource = undefined;
484
- if (attempt < 3) {
485
- console.log(`SSE error (1), retrying ... attempt: ${attempt + 1}/3`);
486
- setTimeout(() => loadTestJobWithSSE(id, attempt + 1, callbacks), 1000);
573
+ let delay = 1000;
574
+ let isNoLogsChange = error.type == noLogsChangeRestartEvent;
575
+ if (isNoLogsChange) {
576
+ delay = 0;
577
+ }
578
+ if (attempt < 3 || isNoLogsChange) {
579
+ if (!isNoLogsChange) {
580
+ console.log(`SSE error (1), retrying ... attempt: ${attempt + 1}/3`);
581
+ }
582
+ setTimeout(() => loadTestJobWithSSE(id, attempt + 1, callbacks), delay);
487
583
  }
488
584
  else {
489
585
  // Fall back to polling on error
@@ -1,4 +1,4 @@
1
- import { type Job } from '../gen';
1
+ import { type Job, type OpenFlow } from '../gen';
2
2
  import type { SupportedLanguage } from '../common';
3
3
  export type Callbacks = {
4
4
  done?: (x: Job & {
@@ -22,10 +22,20 @@ export type Callbacks = {
22
22
  running?: ({ id }: {
23
23
  id: string;
24
24
  }) => void;
25
+ resultStreamUpdate?: ({ id, result_stream }: {
26
+ id: string;
27
+ result_stream?: string;
28
+ }) => void;
29
+ loadExtraLogs?: ({ id, logs }: {
30
+ id: string;
31
+ logs: string;
32
+ }) => void;
25
33
  };
26
34
  interface Props {
27
35
  isLoading?: boolean;
28
- job?: Job | undefined;
36
+ job?: (Job & {
37
+ result_stream?: string;
38
+ }) | undefined;
29
39
  noCode?: boolean;
30
40
  noLogs?: boolean;
31
41
  workspaceOverride?: string | undefined;
@@ -33,8 +43,8 @@ interface Props {
33
43
  allowConcurentRequests?: boolean;
34
44
  jobUpdateLastFetch?: Date | undefined;
35
45
  toastError?: boolean;
36
- lazyLogs?: boolean;
37
46
  onlyResult?: boolean;
47
+ loadPlaceholderJobOnStart?: Job;
38
48
  scriptProgress?: number | undefined;
39
49
  children?: import('svelte').Snippet<[any]>;
40
50
  }
@@ -43,6 +53,9 @@ declare const JobLoader: import("svelte").Component<Props, {
43
53
  runScriptByPath: (path: string, args: Record<string, any>, callbacks?: Callbacks) => Promise<string>;
44
54
  runScriptByHash: (hash: string, args: Record<string, any>, callbacks?: Callbacks) => Promise<string>;
45
55
  runFlowByPath: (path: string, args: Record<string, any>, callbacks?: Callbacks) => Promise<string>;
56
+ runFlowPreview: (args: Record<string, any>, flow: OpenFlow & {
57
+ tag?: string;
58
+ }, callbacks?: Callbacks) => Promise<string>;
46
59
  getLogs: () => Promise<void>;
47
60
  runPreview: (path: string | undefined, code: string, lang: SupportedLanguage | undefined, args: Record<string, any>, tag: string | undefined, lock?: string, hash?: string, callbacks?: Callbacks) => Promise<string>;
48
61
  cancelJob: () => Promise<void>;
@@ -15,7 +15,8 @@ import AnsiUp from 'ansi_up';
15
15
  import NoWorkerWithTagWarning from './runs/NoWorkerWithTagWarning.svelte';
16
16
  import { JobService } from '../gen';
17
17
  import Tooltip from './Tooltip.svelte';
18
- let { content, isLoading, duration = undefined, mem = undefined, wrapperClass = '', jobId = undefined, tag, small = false, drawerOpen = $bindable(false), noMaxH = false, noAutoScroll = false, download = true, customEmptyMessage = 'No logs are available yet', tagLabel = undefined } = $props();
18
+ import { twMerge } from 'tailwind-merge';
19
+ let { content, isLoading, duration = undefined, mem = undefined, wrapperClass = '', jobId = undefined, tag, small = false, drawerOpen = $bindable(false), noMaxH = false, noAutoScroll = false, download = true, customEmptyMessage = 'No logs are available yet', tagLabel = undefined, noPadding = false } = $props();
19
20
  // @ts-ignore
20
21
  const ansi_up = $state(new AnsiUp());
21
22
  ansi_up.use_classes = true;
@@ -213,7 +214,12 @@ let html = $derived(ansi_up.ansi_to_html(downloadStartUrl && prefixIndex != unde
213
214
  : 'top-2'} left-36">mem peak: {(mem / 1024).toPrecision(4)}MB</span
214
215
  >
215
216
  {/if}
216
- <pre class="whitespace-pre break-words {small ? '!text-2xs' : '!text-xs'} w-full p-2"
217
+ <pre
218
+ class={twMerge(
219
+ 'whitespace-pre break-words w-full',
220
+ small ? '!text-2xs' : '!text-xs',
221
+ noPadding ? '' : 'p-2'
222
+ )}
217
223
  >{#if content}{@const len =
218
224
  (content?.length ?? 0) +
219
225
  (loadedFromObjectStore?.length ?? 0)}{#if downloadStartUrl}<button onclick={getStoreLogs}
@@ -13,6 +13,7 @@ interface Props {
13
13
  download?: boolean;
14
14
  customEmptyMessage?: string;
15
15
  tagLabel?: string;
16
+ noPadding?: boolean;
16
17
  }
17
18
  declare const LogViewer: import("svelte").Component<Props, {
18
19
  scrollToBottom: () => void;
@@ -0,0 +1,32 @@
1
+ <script lang="ts">import { FoldVertical, UnfoldVertical } from 'lucide-svelte';
2
+ let { showResultsInputs = $bindable(), toggleExpandAll, allExpanded } = $props();
3
+ </script>
4
+
5
+ <div class="flex justify-end gap-4 items-center p-2 bg-surface-secondary border-b">
6
+ <div class="flex items-center gap-2 whitespace-nowrap">
7
+ <label
8
+ for="showResultsInputs"
9
+ class="text-xs text-tertiary hover:text-primary transition-colors">Show inputs/results</label
10
+ >
11
+ <div class="flex-shrink-0">
12
+ <input
13
+ type="checkbox"
14
+ name="showResultsInputs"
15
+ id="showResultsInputs"
16
+ bind:checked={showResultsInputs}
17
+ class="w-3 h-4 accent-primary -my-1"
18
+ />
19
+ </div>
20
+ </div>
21
+ <button
22
+ onclick={toggleExpandAll}
23
+ class="text-xs text-tertiary hover:text-primary transition-colors flex items-center gap-2 min-w-24 justify-end"
24
+ >
25
+ {allExpanded ? 'Collapse All' : 'Expand All'}
26
+ {#if allExpanded}
27
+ <FoldVertical size={16} />
28
+ {:else}
29
+ <UnfoldVertical size={16} />
30
+ {/if}
31
+ </button>
32
+ </div>
@@ -0,0 +1,8 @@
1
+ interface Props {
2
+ showResultsInputs: boolean | undefined;
3
+ toggleExpandAll: () => void;
4
+ allExpanded: boolean | undefined;
5
+ }
6
+ declare const LogViewerHeader: import("svelte").Component<Props, {}, "showResultsInputs">;
7
+ type LogViewerHeader = ReturnType<typeof LogViewerHeader>;
8
+ export default LogViewerHeader;
@@ -5,9 +5,10 @@ import Google from './icons/brands/Google.svelte';
5
5
  import Microsoft from './icons/brands/Microsoft.svelte';
6
6
  import Okta from './icons/brands/Okta.svelte';
7
7
  import Auth0 from './icons/brands/Auth0.svelte';
8
+ import NextcloudIcon from './icons/NextcloudIcon.svelte';
8
9
  import { OauthService, UserService, WorkspaceService } from '../gen';
9
10
  import { usersWorkspaceStore, workspaceStore, userStore } from '../stores';
10
- import { classNames, emptyString, parseQueryParams } from '../utils';
11
+ import { classNames, emptyString, escapeHtml, parseQueryParams } from '../utils';
11
12
  import { base } from '../base';
12
13
  import { getUserExt } from '../user';
13
14
  import { sendUserToast } from '../toast';
@@ -47,6 +48,11 @@ const providers = [
47
48
  type: 'auth0',
48
49
  name: 'Auth0',
49
50
  icon: Auth0
51
+ },
52
+ {
53
+ type: 'nextcloud',
54
+ name: 'Nextcloud',
55
+ icon: NextcloudIcon
50
56
  }
51
57
  ];
52
58
  const providersType = providers.map((p) => p.type);
@@ -227,7 +233,7 @@ function storeRedirect(provider) {
227
233
  }
228
234
  }
229
235
  $effect(() => {
230
- error && sendUserToast(error, true);
236
+ error && sendUserToast(escapeHtml(error), true);
231
237
  });
232
238
  </script>
233
239
 
@@ -49,7 +49,7 @@ $: jobUpdateLastFetch && loadMetricsData();
49
49
 
50
50
  <div class="relative max-h-100">
51
51
  {#if !$enterpriseLicense}
52
- <Alert type="error" title="Enterprise Edition only feature">
52
+ <Alert type="warning" title="Enterprise Edition only feature">
53
53
  Job metrics are only available on Windmill Enterprise Edition.
54
54
  </Alert>
55
55
  {:else if (jobMemoryStats?.length ?? 0) === 0}
@@ -1,4 +1,4 @@
1
- <script lang="ts">import { allTrue } from '../utils';
1
+ <script lang="ts">import { allTrue, sendUserToast } from '../utils';
2
2
  import { RefreshCw } from 'lucide-svelte';
3
3
  import ArgInput from './ArgInput.svelte';
4
4
  import { Button } from './common';
@@ -53,10 +53,11 @@ async function loadResourceTypes() {
53
53
  resourceTypes = await getResourceTypes();
54
54
  }
55
55
  loadResourceTypes();
56
- let args = $state({});
57
56
  onMount(() => {
58
- testSteps?.updateStepArgs(mod.id, $flowStateStore, flowStore?.val, previewArgs?.val);
59
- args = testSteps?.getStepArgs(mod.id) ?? { value: {} };
57
+ if (!testSteps) {
58
+ sendUserToast('testSteps module not initialized. Preview will not work.', true);
59
+ }
60
+ testSteps?.updateStepArgs(mod.id, flowStateStore.val, flowStore?.val, previewArgs?.val);
60
61
  });
61
62
  </script>
62
63
 
@@ -71,14 +72,17 @@ onMount(() => {
71
72
  )}
72
73
  data-arg={argName}
73
74
  >
74
- {#if typeof args.value == 'object' && schema?.properties?.[argName]}
75
+ {#if schema?.properties?.[argName]}
75
76
  <ArgInput
76
77
  {resourceTypes}
77
78
  minW={false}
78
79
  autofocus={autofocus && !focusArg && i == 0}
79
80
  label={argName}
80
81
  description={schema.properties[argName].description}
81
- bind:value={args.value[argName]}
82
+ bind:value={
83
+ () => testSteps?.getStepInputArgs(mod.id, argName),
84
+ (v) => testSteps?.setStepInputArgs(mod.id, argName, v)
85
+ }
82
86
  type={schema.properties[argName].type}
83
87
  oneOf={schema.properties[argName].oneOf}
84
88
  required={schema?.required?.includes(argName)}
@@ -1,21 +1,28 @@
1
1
  <script lang="ts">import LogViewer from './LogViewer.svelte';
2
2
  import JobProgressBar from './jobs/JobProgressBar.svelte';
3
3
  import ScriptFix from './copilot/ScriptFix.svelte';
4
+ import {} from '../gen';
4
5
  import OutputPickerInner from './flows/propPicker/OutputPickerInner.svelte';
5
6
  import { Pane, Splitpanes } from 'svelte-splitpanes';
6
7
  import { getContext } from 'svelte';
7
8
  import { getStringError } from './copilot/chat/utils';
9
+ import AiAgentLogViewer from './AIAgentLogViewer.svelte';
8
10
  let { lang, editor, diffEditor, loopStatus = undefined, lastJob = undefined, scriptProgress = $bindable(undefined), testJob = undefined, mod, testIsLoading = false, disableMock = false, disableHistory = false, onUpdateMock, loadingJob = false, tagLabel = undefined } = $props();
9
11
  const { testSteps } = getContext('FlowEditorContext');
10
12
  let selectedJob = $state(undefined);
11
13
  let preview = $state(undefined);
12
14
  let jobProgressReset = $state(() => { });
15
+ $effect(() => {
16
+ if (preview != undefined && testJob) {
17
+ preview = undefined;
18
+ }
19
+ });
13
20
  let forceJson = $state(false);
14
21
  const logJob = $derived(testJob ?? selectedJob);
15
22
  </script>
16
23
 
17
24
  <Splitpanes horizontal>
18
- <Pane size={50} minSize={10} class="text-sm text-tertiary">
25
+ <Pane size={65} minSize={10} class="text-sm text-tertiary">
19
26
  {#if scriptProgress}
20
27
  <JobProgressBar
21
28
  job={testJob}
@@ -50,7 +57,7 @@ const logJob = $derived(testJob ?? selectedJob);
50
57
  {/snippet}
51
58
  </OutputPickerInner>
52
59
  </Pane>
53
- <Pane size={50} minSize={10}>
60
+ <Pane size={35} minSize={10}>
54
61
  {#if (mod.mock?.enabled && preview != 'job') || preview == 'mock'}
55
62
  <LogViewer
56
63
  small
@@ -60,6 +67,15 @@ const logJob = $derived(testJob ?? selectedJob);
60
67
  customEmptyMessage="Using pinned data"
61
68
  {tagLabel}
62
69
  />
70
+ {:else if mod.value.type === 'aiagent' && logJob?.type === 'CompletedJob'}
71
+ <AiAgentLogViewer
72
+ tools={mod.value.tools}
73
+ agentJob={{
74
+ ...logJob,
75
+ type: 'CompletedJob'
76
+ }}
77
+ workspaceId={logJob.workspace_id}
78
+ />
63
79
  {:else}
64
80
  <LogViewer
65
81
  small
@@ -1,6 +1,6 @@
1
1
  import type DiffEditor from './DiffEditor.svelte';
2
2
  import type Editor from './Editor.svelte';
3
- import type { Script, Job, FlowModule } from '../gen';
3
+ import { type Script, type Job, type FlowModule } from '../gen';
4
4
  interface Props {
5
5
  lang: Script['language'];
6
6
  editor: Editor | undefined;
@@ -4,17 +4,18 @@ import { getScriptByPath } from '../scripts';
4
4
  import { getContext } from 'svelte';
5
5
  import JobLoader, {} from './JobLoader.svelte';
6
6
  import { getStepHistoryLoaderContext } from './stepHistoryLoader.svelte';
7
+ import { loadSchemaFromModule } from './flows/flowInfers';
7
8
  let { mod, testJob = $bindable(undefined), testIsLoading = $bindable(false), noEditor = false, scriptProgress = $bindable(undefined) } = $props();
8
9
  const { flowStore, flowStateStore, pathStore, testSteps, previewArgs, modulesTestStates } = getContext('FlowEditorContext');
9
10
  let jobLoader = $state(undefined);
10
11
  let jobProgressReset = () => { };
11
12
  let stepHistoryLoader = getStepHistoryLoaderContext();
12
13
  export function runTestWithStepArgs() {
13
- runTest(testSteps.getStepArgs(mod.id)?.value);
14
+ runTest(testSteps.getStepArgs(mod.id));
14
15
  }
15
16
  export function loadArgsAndRunTest() {
16
- testSteps?.updateStepArgs(mod.id, $flowStateStore, flowStore?.val, previewArgs?.val);
17
- runTest(testSteps.getStepArgs(mod.id)?.value);
17
+ testSteps?.updateStepArgs(mod.id, flowStateStore.val, flowStore?.val, previewArgs?.val);
18
+ runTest(testSteps.getStepArgs(mod.id));
18
19
  }
19
20
  export async function runTest(args) {
20
21
  // Not defined if JobProgressBar not loaded
@@ -46,36 +47,65 @@ export async function runTest(args) {
46
47
  else if (val.type == 'flow') {
47
48
  await jobLoader?.runFlowByPath(val.path, args, callbacks);
48
49
  }
50
+ else if (val.type == 'aiagent') {
51
+ const { schema } = await loadSchemaFromModule(mod);
52
+ const inputTransforms = Object.fromEntries(Object.keys(args).map((key) => [
53
+ key,
54
+ {
55
+ expr: `flow_input.${key}`,
56
+ type: 'javascript'
57
+ }
58
+ ]));
59
+ await jobLoader?.runFlowPreview(args, {
60
+ value: {
61
+ modules: [
62
+ {
63
+ ...mod,
64
+ value: {
65
+ type: 'aiagent',
66
+ tools: mod.value.type == 'aiagent' ? mod.value.tools : [],
67
+ input_transforms: inputTransforms
68
+ }
69
+ }
70
+ ]
71
+ },
72
+ summary: '',
73
+ schema
74
+ }, callbacks);
75
+ }
49
76
  else {
50
77
  throw Error('Not supported module type');
51
78
  }
52
79
  }
53
80
  function jobDone(testJob) {
54
81
  if (testJob && !testJob.canceled && testJob.type == 'CompletedJob') {
55
- if ($flowStateStore[mod.id]) {
56
- $flowStateStore[mod.id].previewResult = testJob.result;
57
- $flowStateStore[mod.id].previewSuccess = testJob.success;
58
- $flowStateStore[mod.id].previewJobId = testJob.id;
59
- $flowStateStore[mod.id].previewWorkspaceId = testJob.workspace_id;
60
- $flowStateStore = $flowStateStore;
82
+ if (flowStateStore.val[mod.id]) {
83
+ flowStateStore.val[mod.id] = {
84
+ ...flowStateStore.val[mod.id],
85
+ previewResult: testJob.result,
86
+ previewSuccess: testJob.success,
87
+ previewJobId: testJob.id
88
+ };
61
89
  }
62
90
  stepHistoryLoader?.resetInitial(mod.id);
63
91
  }
64
- modulesTestStates.states[mod.id].testJob = undefined;
92
+ if (modulesTestStates.states[mod.id]) {
93
+ modulesTestStates.states[mod.id].testJob = testJob;
94
+ }
65
95
  }
66
96
  export function cancelJob() {
67
97
  modulesTestStates.states[mod.id]?.cancel?.();
68
98
  }
69
99
  $effect(() => {
70
100
  // Update testIsLoading to read the state from parent components
71
- testIsLoading = modulesTestStates.states[mod.id]?.loading ?? false;
101
+ testIsLoading = modulesTestStates.states?.[mod.id]?.loading ?? false;
72
102
  });
73
103
  $effect(() => {
74
104
  // Update testJob to read the state from parent components
75
- testJob = modulesTestStates.states[mod.id]?.testJob;
105
+ testJob = modulesTestStates.states?.[mod.id]?.testJob;
76
106
  });
77
107
  modulesTestStates.states[mod.id] = {
78
- ...(modulesTestStates.states[mod.id] ?? { loading: false }),
108
+ ...(modulesTestStates.states?.[mod.id] ?? { loading: false }),
79
109
  loading: testIsLoading,
80
110
  testJob: testJob
81
111
  };
@@ -90,13 +120,26 @@ modulesTestStates.states[mod.id] = {
90
120
  () => modulesTestStates.states[mod.id]?.loading ?? false,
91
121
  (v) => {
92
122
  let newLoading = v ?? false
93
- if (modulesTestStates.states[mod.id]?.loading !== newLoading) {
123
+ if (modulesTestStates.states && modulesTestStates.states?.[mod.id]?.loading !== newLoading) {
94
124
  modulesTestStates.states[mod.id] = {
95
- ...(modulesTestStates.states[mod.id] ?? {}),
96
- loading: newLoading
125
+ ...(modulesTestStates.states?.[mod.id] ?? {}),
126
+ loading: newLoading,
127
+ hiddenInGraph: false
97
128
  }
98
129
  }
99
130
  }
100
131
  }
101
132
  bind:job={modulesTestStates.states[mod.id].testJob}
133
+ loadPlaceholderJobOnStart={{
134
+ type: 'QueuedJob',
135
+ id: '',
136
+ running: false,
137
+ canceled: false,
138
+ job_kind: 'preview',
139
+ permissioned_as: '',
140
+ is_flow_step: false,
141
+ email: '',
142
+ visible_to_owner: true,
143
+ tag: ''
144
+ }}
102
145
  />