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
@@ -0,0 +1,660 @@
1
+ <script lang="ts">import { ChevronDown, ChevronRight, GitBranch, Repeat, Code, ArrowDownToLine, ArrowDownFromLine, FoldVertical, UnfoldVertical } from 'lucide-svelte';
2
+ import { base } from '../base';
3
+ import { workspaceStore } from '../stores';
4
+ import { truncateRev } from '../utils';
5
+ import ObjectViewer from './propertyPicker/ObjectViewer.svelte';
6
+ import LogViewer from './LogViewer.svelte';
7
+ import FlowLogViewer from './FlowLogViewer.svelte';
8
+ import { twMerge } from 'tailwind-merge';
9
+ import FlowJobsMenu from './flows/map/FlowJobsMenu.svelte';
10
+ import BarsStaggered from './icons/BarsStaggered.svelte';
11
+ let { modules, localModuleStates, rootJob, flowStatus, expandedRows, allExpanded, showResultsInputs, toggleExpanded, toggleExpandAll, workspaceId, render, level = 0, flowId = 'root', onSelectedIteration, getSelectedIteration, flowSummary, mode = 'flow' } = $props();
12
+ function getJobLink(jobId) {
13
+ if (!jobId)
14
+ return '';
15
+ return `${base}/run/${jobId}?workspace=${workspaceId ?? $workspaceStore}`;
16
+ }
17
+ function getStatusColor(status) {
18
+ const statusColors = {
19
+ Success: 'text-green-500',
20
+ Failure: 'text-red-500',
21
+ InProgress: 'text-yellow-500',
22
+ WaitingForPriorSteps: 'text-gray-400',
23
+ WaitingForEvents: 'text-purple-400',
24
+ WaitingForExecutor: 'text-gray-400'
25
+ };
26
+ return status ? statusColors[status] : 'text-gray-400';
27
+ }
28
+ function getFlowStatus(job) {
29
+ if (job.type === 'CompletedJob') {
30
+ return job.success ? 'Success' : 'Failure';
31
+ }
32
+ else if (job.type === 'QueuedJob') {
33
+ return 'InProgress';
34
+ }
35
+ else {
36
+ return undefined;
37
+ }
38
+ }
39
+ function getStepProgress(job, totalSteps) {
40
+ if (totalSteps === 0)
41
+ return '';
42
+ const stepWord = mode === 'aiagent' ? 'action' : 'step';
43
+ // If flow is completed, show total steps
44
+ if (job.type === 'CompletedJob') {
45
+ return ` (${totalSteps} ${stepWord}${totalSteps === 1 ? '' : 's'})`;
46
+ }
47
+ // If flow is running, use flow_status.step if available (like JobStatus.svelte)
48
+ if (job.type === 'QueuedJob') {
49
+ if (job.flow_status?.step !== undefined) {
50
+ const currentStep = (job.flow_status.step ?? 0) + 1;
51
+ return ` (${stepWord} ${currentStep} of ${totalSteps})`;
52
+ }
53
+ return '';
54
+ }
55
+ return '';
56
+ }
57
+ function isExpanded(id, isRunning = false) {
58
+ // If explicitly set in expandedRows, use that value
59
+ // Otherwise, fall back to allExpanded
60
+ return expandedRows[id] ?? (allExpanded || isRunning);
61
+ }
62
+ function hasEmptySubflow(stepId, stepType) {
63
+ const state = localModuleStates[stepId];
64
+ if (!state || !stepType)
65
+ return false;
66
+ return (['forloopflow', 'whileloopflow'].includes(stepType) &&
67
+ (!state.flow_jobs || state.flow_jobs.length === 0));
68
+ }
69
+ // Find all parents of error steps
70
+ function findParentsOfErrors(modules) {
71
+ const parentsWithErrors = new Set();
72
+ function traverseModules(modules, parentId) {
73
+ let hasChildError = false;
74
+ for (const module of modules) {
75
+ let currentEntryHasError = false;
76
+ // Check if this entry has subflows with errors
77
+ if (module.value.type === 'forloopflow' ||
78
+ (module.value.type === 'whileloopflow' && module.value.modules.length > 0)) {
79
+ const subflowHasError = traverseModules(module.value.modules, module.id);
80
+ if (subflowHasError) {
81
+ currentEntryHasError = true;
82
+ parentsWithErrors.add(module.id);
83
+ }
84
+ }
85
+ else if (module.value.type === 'branchone' || module.value.type === 'branchall') {
86
+ if (module.value.branches.length > 0) {
87
+ for (const branch of module.value.branches) {
88
+ const subflowHasError = traverseModules(branch.modules, module.id);
89
+ if (subflowHasError) {
90
+ currentEntryHasError = true;
91
+ parentsWithErrors.add(module.id);
92
+ }
93
+ }
94
+ }
95
+ if (module.value.type === 'branchone' && module.value.default.length > 0) {
96
+ // Also check default branch
97
+ const subflowHasError = traverseModules(module.value.default, module.id);
98
+ if (subflowHasError) {
99
+ currentEntryHasError = true;
100
+ parentsWithErrors.add(module.id);
101
+ }
102
+ }
103
+ }
104
+ // Check if this entry itself has an error (but don't flag it - only its parents)
105
+ const stepStatus = localModuleStates[module.id]?.type;
106
+ if (stepStatus === 'Failure') {
107
+ currentEntryHasError = true;
108
+ // Don't add the entry itself to parentsWithErrors
109
+ }
110
+ // If this entry has an error, mark its parent
111
+ if (currentEntryHasError && parentId) {
112
+ parentsWithErrors.add(parentId);
113
+ hasChildError = true;
114
+ }
115
+ }
116
+ return hasChildError;
117
+ }
118
+ traverseModules(modules, flowId);
119
+ return parentsWithErrors;
120
+ }
121
+ // Get flow info for display
122
+ const flowInfo = $derived.by(() => {
123
+ const parentsWithErrors = findParentsOfErrors(modules);
124
+ return {
125
+ jobId: rootJob.id,
126
+ inputs: rootJob.args || {},
127
+ result: rootJob.type === 'CompletedJob' ? rootJob.result : undefined,
128
+ logs: rootJob.logs || '',
129
+ status: rootJob.type,
130
+ label: flowSummary,
131
+ hasErrors: parentsWithErrors.has(flowId),
132
+ parentsWithErrors
133
+ };
134
+ });
135
+ function hasSubflows(module) {
136
+ return (module.value.type === 'forloopflow' ||
137
+ module.value.type === 'whileloopflow' ||
138
+ module.value.type === 'branchall' ||
139
+ module.value.type === 'branchone');
140
+ }
141
+ function getSubflows(module) {
142
+ const subflows = [];
143
+ if (module.value.type === 'forloopflow' || module.value.type === 'whileloopflow') {
144
+ subflows.push({
145
+ modules: module.value.modules,
146
+ label: module.summary || '',
147
+ flowId: `${module.id}-subflow`
148
+ });
149
+ }
150
+ else if (module.value.type === 'branchall' || module.value.type === 'branchone') {
151
+ // Add all branches
152
+ for (let i = 0; i < module.value.branches.length; i++) {
153
+ const branch = module.value.branches[i];
154
+ subflows.push({
155
+ modules: branch.modules,
156
+ label: branch.summary || `branch ${i + 1}`,
157
+ flowId: `${module.id}-subflow-${i}`
158
+ });
159
+ }
160
+ // Add default branch for branchone
161
+ if (module.value.type === 'branchone') {
162
+ subflows.push({
163
+ modules: module.value.default,
164
+ label: 'default',
165
+ flowId: `${module.id}-subflow-default`
166
+ });
167
+ }
168
+ }
169
+ return subflows;
170
+ }
171
+ </script>
172
+
173
+ {#if render}
174
+ {#if level === 0 && toggleExpandAll}
175
+ <div class="flex justify-end gap-4 items-center p-2 bg-surface-secondary border-b">
176
+ <div class="flex items-center gap-2 whitespace-nowrap">
177
+ <label
178
+ for="showResultsInputs"
179
+ class="text-xs text-tertiary hover:text-primary transition-colors"
180
+ >Show inputs/results</label
181
+ >
182
+ <div class="flex-shrink-0">
183
+ <input
184
+ type="checkbox"
185
+ name="showResultsInputs"
186
+ id="showResultsInputs"
187
+ bind:checked={showResultsInputs}
188
+ class="w-3 h-4 accent-primary -my-1"
189
+ />
190
+ </div>
191
+ </div>
192
+ <button
193
+ onclick={toggleExpandAll}
194
+ class="text-xs text-tertiary hover:text-primary transition-colors flex items-center gap-2 min-w-24 justify-end"
195
+ >
196
+ {allExpanded ? 'Collapse All' : 'Expand All'}
197
+ {#if allExpanded}
198
+ <FoldVertical size={16} />
199
+ {:else}
200
+ <UnfoldVertical size={16} />
201
+ {/if}
202
+ </button>
203
+ </div>
204
+ {/if}
205
+ <ul class="w-full font-mono text-xs bg-surface-secondary list-none">
206
+ <!-- Flow entry -->
207
+ <li class="border-b flex flex-row">
208
+ <div class="py-2 leading-tight align-top">
209
+ {#if level > 0}
210
+ <button
211
+ class="w-4 flex items-center justify-center text-xs text-tertiary hover:text-primary transition-colors"
212
+ onclick={() => toggleExpanded(`flow-${flowId}`)}
213
+ >
214
+ {#if isExpanded(`flow-${flowId}`, rootJob.type === 'QueuedJob')}
215
+ <ChevronDown size={8} />
216
+ {:else}
217
+ <ChevronRight size={8} />
218
+ {/if}
219
+ </button>
220
+ {:else}
221
+ <!-- Root flow - no collapse button, just spacing -->
222
+ <div class="w-4"></div>
223
+ {/if}
224
+ </div>
225
+ <div class="grow min-w-0 leading-tight">
226
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
227
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
228
+ <div
229
+ class={twMerge(
230
+ 'py-1 flex items-center justify-between pr-2',
231
+ level > 0 ? 'cursor-pointer' : '',
232
+ rootJob.type === undefined ? 'opacity-50' : ''
233
+ )}
234
+ onclick={level > 0 ? () => toggleExpanded(`flow-${flowId}`) : undefined}
235
+ >
236
+ <div class="flex items-center gap-2 grow min-w-0">
237
+ <!-- Flow icon -->
238
+ {@render flowIcon(level == 0 ? getFlowStatus(rootJob) : flowStatus, flowInfo.hasErrors)}
239
+
240
+ <div class="flex items-center gap-2">
241
+ <span class="text-xs font-mono">
242
+ {mode === 'aiagent' ? 'AI Agent' : level == 0 ? 'Flow' : 'Subflow'}
243
+ {#if flowInfo.label}
244
+ : {flowInfo.label}
245
+ {/if}
246
+ <span class="text-tertiary">{getStepProgress(rootJob, modules.length)}</span>
247
+ </span>
248
+ </div>
249
+ </div>
250
+
251
+ {#if flowInfo.jobId}
252
+ <a
253
+ href={getJobLink(flowInfo.jobId)}
254
+ class="text-xs text-primary hover:underline font-mono"
255
+ target="_blank"
256
+ rel="noopener noreferrer"
257
+ onclick={(e) => e.stopPropagation()}
258
+ >
259
+ {truncateRev(flowInfo.jobId, 6)}
260
+ </a>
261
+ {/if}
262
+ </div>
263
+
264
+ {#if level === 0 || isExpanded(`flow-${flowId}`, rootJob.type === 'QueuedJob')}
265
+ <div class="mb-2 transition-all duration-200 ease-in-out w-full">
266
+ <!-- Flow logs -->
267
+ {#if flowInfo.logs}
268
+ <LogViewer
269
+ content={flowInfo.logs}
270
+ jobId={flowInfo.jobId}
271
+ isLoading={false}
272
+ small={true}
273
+ download={false}
274
+ noAutoScroll={true}
275
+ tag={undefined}
276
+ noPadding
277
+ wrapperClass="w-full mb-2 pr-2"
278
+ />
279
+ {/if}
280
+
281
+ <!-- Flow steps - nested as children -->
282
+ <ul class="w-full font-mono text-xs bg-surface-secondary list-none border-l">
283
+ <!-- Flow inputs as first row entry -->
284
+ {#if showResultsInputs && flowInfo.inputs && Object.keys(flowInfo.inputs).length > 0}
285
+ <li class="border-b flex flex-row w-full">
286
+ <div class="py-2 leading-tight align-top">
287
+ <button
288
+ class="w-4 flex items-center justify-center text-xs text-tertiary hover:text-primary transition-colors"
289
+ onclick={() => toggleExpanded(`flow-${flowId}-input`)}
290
+ >
291
+ {#if isExpanded(`flow-${flowId}-input`)}
292
+ <ChevronDown size={8} />
293
+ {:else}
294
+ <ChevronRight size={8} />
295
+ {/if}
296
+ </button>
297
+ </div>
298
+
299
+ <div class="grow min-w-0 leading-tight">
300
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
301
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
302
+ <div
303
+ class="py-1 flex items-center justify-between pr-2 cursor-pointer"
304
+ onclick={() => toggleExpanded(`flow-${flowId}-input`)}
305
+ >
306
+ <div class="flex items-center gap-2 grow min-w-0">
307
+ <ArrowDownToLine size={10} />
308
+ <span class="text-xs font-mono">Inputs</span>
309
+ </div>
310
+ </div>
311
+
312
+ {#if isExpanded(`flow-${flowId}-input`)}
313
+ <div class="my-1 transition-all duration-200 ease-in-out">
314
+ <div class="pl-4">
315
+ <ObjectViewer json={flowInfo.inputs} pureViewer={true} />
316
+ </div>
317
+ </div>
318
+ {/if}
319
+ </div>
320
+ </li>
321
+ {/if}
322
+
323
+ {#if modules.length > 0}
324
+ {#each modules as module (module.id)}
325
+ {@const isLeafStep = !hasSubflows(module)}
326
+ {@const status = localModuleStates[module.id]?.type}
327
+ {@const isRunning = status === 'InProgress' || status === 'WaitingForExecutor'}
328
+ {@const hasEmptySubflowValue = hasEmptySubflow(module.id, module.value.type)}
329
+ {@const isCollapsible = !hasEmptySubflowValue}
330
+ <li class="border-b flex flex-row">
331
+ <div class="py-2 leading-tight align-top">
332
+ {#if isCollapsible}
333
+ <button
334
+ class="w-4 flex items-center justify-center text-xs text-tertiary hover:text-primary transition-colors"
335
+ onclick={() => toggleExpanded(module.id)}
336
+ >
337
+ {#if isExpanded(module.id, isRunning)}
338
+ <ChevronDown size={8} />
339
+ {:else}
340
+ <ChevronRight size={8} />
341
+ {/if}
342
+ </button>
343
+ {:else}
344
+ <!-- Empty subflow - no collapse button, just spacing -->
345
+ <div class="w-4"></div>
346
+ {/if}
347
+ </div>
348
+ <div class="w-full leading-tight grow min-w-0">
349
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
350
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
351
+ <div
352
+ class={twMerge(
353
+ 'py-1 flex items-center justify-between pr-2',
354
+ isCollapsible ? 'cursor-pointer' : '',
355
+ status === 'WaitingForPriorSteps' ||
356
+ status === 'WaitingForEvents' ||
357
+ status === 'WaitingForExecutor' ||
358
+ status === undefined
359
+ ? 'opacity-50'
360
+ : ''
361
+ )}
362
+ onclick={isCollapsible ? () => toggleExpanded(module.id) : undefined}
363
+ >
364
+ <div class="flex items-center gap-2 grow min-w-0">
365
+ <!-- Step icon -->
366
+ {@render stepIcon(
367
+ module.value.type,
368
+ status as FlowStatusModule['type'],
369
+ flowInfo.parentsWithErrors.has(module.id)
370
+ )}
371
+
372
+ <div class="flex items-center gap-2">
373
+ <span class="text-xs font-mono">
374
+ <b>
375
+ {mode === 'aiagent'
376
+ ? module.summary
377
+ ? 'Tool call'
378
+ : 'Message'
379
+ : module.id}
380
+ </b>
381
+ {#if mode === 'flow'}
382
+ {#if module.value.type === 'forloopflow'}
383
+ For loop
384
+ {:else if module.value.type === 'whileloopflow'}
385
+ While loop
386
+ {:else if module.value.type === 'branchall'}
387
+ Branch to all
388
+ {:else if module.value.type === 'branchone'}
389
+ Branch to one
390
+ {:else if module.value.type === 'flow'}
391
+ Subflow
392
+ {:else}
393
+ Step
394
+ {/if}
395
+ {/if}
396
+ {#if module.summary}
397
+ : {module.summary}
398
+ {/if}
399
+ {#if hasEmptySubflowValue}
400
+ <span class="text-tertiary">
401
+ {#if module.value.type === 'forloopflow' || module.value.type === 'whileloopflow'}
402
+ (empty loop)
403
+ {:else if module.value.type === 'branchall' || module.value.type === 'branchone'}
404
+ (no branch)
405
+ {/if}
406
+ </span>
407
+ {/if}
408
+ </span>
409
+ {#if !hasEmptySubflowValue && localModuleStates[module.id]?.flow_jobs && (module.value.type === 'forloopflow' || module.value.type === 'whileloopflow')}
410
+ <span
411
+ class="text-xs font-mono font-medium inline-flex items-center grow min-w-0 -my-2"
412
+ >
413
+ <span onclick={(e) => e.stopPropagation()}>
414
+ <FlowJobsMenu
415
+ moduleId={module.id}
416
+ id={module.id}
417
+ {onSelectedIteration}
418
+ flowJobsSuccess={localModuleStates[module.id]
419
+ ?.flow_jobs_success}
420
+ flowJobs={localModuleStates[module.id]?.flow_jobs}
421
+ selected={localModuleStates[module.id]?.selectedForloopIndex ??
422
+ 0}
423
+ selectedManually={localModuleStates[module.id]
424
+ ?.selectedForLoopSetManually ?? false}
425
+ showIcon={false}
426
+ />
427
+ </span>
428
+ {#if module.value.type === 'forloopflow'}
429
+ {`/${localModuleStates[module.id]?.iteration_total ?? 0}`}
430
+ {/if}
431
+ </span>
432
+ {/if}
433
+ </div>
434
+ </div>
435
+
436
+ {#if isLeafStep}
437
+ {@const jobId = localModuleStates[module.id]?.job_id}
438
+ {#if jobId}
439
+ <a
440
+ href={getJobLink(jobId ?? '')}
441
+ class="text-xs text-primary hover:underline font-mono"
442
+ target="_blank"
443
+ rel="noopener noreferrer"
444
+ >
445
+ {truncateRev(jobId ?? '', 6)}
446
+ </a>
447
+ {/if}
448
+ {/if}
449
+ </div>
450
+
451
+ {#if isCollapsible && isExpanded(module.id, isRunning)}
452
+ {@const args = localModuleStates[module.id]?.args}
453
+ {@const logs = localModuleStates[module.id]?.logs}
454
+ {@const result = localModuleStates[module.id]?.result}
455
+ {@const jobId = localModuleStates[module.id]?.job_id}
456
+ <div class="my-1 transition-all duration-200 ease-in-out">
457
+ <!-- Show child steps if they exist -->
458
+ {#each getSubflows(module) as subflow}
459
+ {@const subflowJob = {
460
+ id: jobId,
461
+ type:
462
+ localModuleStates[module.id]?.type === 'Failure' ||
463
+ localModuleStates[module.id]?.type === 'Success'
464
+ ? 'CompletedJob'
465
+ : ('QueuedJob' as Job['type']),
466
+ logs,
467
+ result,
468
+ args,
469
+ success: localModuleStates[module.id]?.type === 'Success'
470
+ }}
471
+ <div class="border-l mb-2">
472
+ <!-- Recursively render child steps using FlowLogViewer -->
473
+ <FlowLogViewer
474
+ modules={subflow.modules}
475
+ {localModuleStates}
476
+ rootJob={subflowJob}
477
+ flowStatus={localModuleStates[module.id]?.type}
478
+ {expandedRows}
479
+ {allExpanded}
480
+ {showResultsInputs}
481
+ {toggleExpanded}
482
+ toggleExpandAll={undefined}
483
+ {workspaceId}
484
+ {render}
485
+ level={level + 1}
486
+ flowId={subflow.flowId}
487
+ flowSummary={subflow.label}
488
+ {onSelectedIteration}
489
+ {getSelectedIteration}
490
+ />
491
+ </div>
492
+ {/each}
493
+ <!-- Show input arguments -->
494
+ {#if getSubflows(module).length === 0}
495
+ {#if showResultsInputs && isLeafStep && args && Object.keys(args).length > 0}
496
+ <div class="mb-2">
497
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
498
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
499
+ <div
500
+ class="flex items-center gap-1 cursor-pointer hover:text-primary text-xs font-mono font-medium mb-1"
501
+ onclick={() => toggleExpanded(`${module.id}-input`)}
502
+ >
503
+ {#if isExpanded(`${module.id}-input`)}
504
+ <ChevronDown size={8} />
505
+ {:else}
506
+ <ChevronRight size={8} />
507
+ {/if}
508
+ Input
509
+ </div>
510
+ {#if isExpanded(`${module.id}-input`)}
511
+ <div class="pl-4">
512
+ <ObjectViewer json={args} pureViewer={true} />
513
+ </div>
514
+ {/if}
515
+ </div>
516
+ {/if}
517
+
518
+ <!-- Show logs if they exist -->
519
+ {#if logs}
520
+ <LogViewer
521
+ content={logs}
522
+ jobId={jobId ?? ''}
523
+ isLoading={false}
524
+ small={true}
525
+ download={false}
526
+ noAutoScroll={true}
527
+ tag={undefined}
528
+ noPadding
529
+ wrapperClass="w-full mb-2 pr-2"
530
+ />
531
+ {:else if jobId && !hasSubflows(module)}
532
+ <div class="mb-2">
533
+ <div class="text-xs text-tertiary font-mono">
534
+ No logs available
535
+ </div>
536
+ </div>
537
+ {/if}
538
+
539
+ <!-- Show result if completed -->
540
+
541
+ {#if showResultsInputs && isLeafStep && result !== undefined && (status === 'Success' || status === 'Failure')}
542
+ <div class="mb-2 mt-2">
543
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
544
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
545
+ <div
546
+ class="flex items-center gap-1 cursor-pointer hover:text-primary text-xs font-mono font-medium mb-1"
547
+ onclick={() => toggleExpanded(`${module.id}-result`)}
548
+ >
549
+ {#if isExpanded(`${module.id}-result`)}
550
+ <ChevronDown size={8} />
551
+ {:else}
552
+ <ChevronRight size={8} />
553
+ {/if}
554
+ Result
555
+ </div>
556
+ {#if isExpanded(`${module.id}-result`)}
557
+ <div class="pl-4">
558
+ <ObjectViewer json={result} pureViewer={true} />
559
+ </div>
560
+ {/if}
561
+ </div>
562
+ {/if}
563
+ {/if}
564
+ </div>
565
+ {/if}
566
+ </div>
567
+ </li>
568
+ {/each}
569
+ {/if}
570
+
571
+ <!-- Flow result as last row entry -->
572
+ {#if showResultsInputs && flowInfo.result !== undefined && rootJob.type === 'CompletedJob'}
573
+ <li class="border-b flex">
574
+ <div class="py-2 leading-tight align-top">
575
+ <button
576
+ class="w-4 flex items-center justify-center text-xs text-tertiary hover:text-primary transition-colors"
577
+ onclick={() => toggleExpanded(`flow-${flowId}-result`)}
578
+ >
579
+ {#if isExpanded(`flow-${flowId}-result`)}
580
+ <ChevronDown size={8} />
581
+ {:else}
582
+ <ChevronRight size={8} />
583
+ {/if}
584
+ </button>
585
+ </div>
586
+ <div class="w-full leading-tight">
587
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
588
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
589
+ <div
590
+ class="py-1 flex items-center justify-between pr-2 cursor-pointer"
591
+ onclick={() => toggleExpanded(`flow-${flowId}-result`)}
592
+ >
593
+ <div class="flex items-center gap-2 grow min-w-0">
594
+ <ArrowDownFromLine size={10} />
595
+ <span class="text-xs font-mono">Results</span>
596
+ </div>
597
+ </div>
598
+
599
+ {#if isExpanded(`flow-${flowId}-result`)}
600
+ <div class="my-1 transition-all duration-200 ease-in-out">
601
+ <div class="pl-4">
602
+ <ObjectViewer json={flowInfo.result} pureViewer={true} />
603
+ </div>
604
+ </div>
605
+ {/if}
606
+ </div>
607
+ </li>
608
+ {/if}
609
+ </ul>
610
+ </div>
611
+ {/if}
612
+ </div>
613
+ </li>
614
+ </ul>
615
+ {/if}
616
+
617
+ {#snippet flowIcon(status: FlowStatusModule['type'] | undefined, hasErrors: boolean)}
618
+ {@const colorClass = getStatusColor(status)}
619
+ <div class="relative flex items-center">
620
+ <BarsStaggered
621
+ size={10}
622
+ class={twMerge(colorClass, status === 'InProgress' ? 'animate-pulse' : '', 'flex-shrink-0')}
623
+ />
624
+ {#if hasErrors && status !== 'Failure'}
625
+ <span
626
+ class="text-red-500 -ml-0.5 -mr-1.5"
627
+ title="A subflow or a step has failed but failure was skipped">!</span
628
+ >
629
+ {/if}
630
+ </div>
631
+ {/snippet}
632
+
633
+ {#snippet stepIcon(
634
+ stepType: string | undefined,
635
+ status: FlowStatusModule['type'] | undefined,
636
+ hasErrors: boolean
637
+ )}
638
+ {@const colorClass = getStatusColor(status)}
639
+ {@const animationClass = status === 'InProgress' ? 'animate-pulse' : ''}
640
+ {@const classes = `${colorClass} ${animationClass} flex-shrink-0`}
641
+ <div class="relative flex items-center">
642
+ {#if stepType === 'flow'}
643
+ <BarsStaggered size={10} class={classes} />
644
+ {:else if stepType === 'forloopflow' || stepType === 'whileloopflow'}
645
+ <Repeat size={10} class={classes} />
646
+ {:else if stepType === 'branchall' || stepType === 'branchone'}
647
+ <GitBranch size={10} class={classes} />
648
+ {:else}
649
+ <Code strokeWidth={2.5} size={10} class={classes} />
650
+ {/if}
651
+ {#if hasErrors && status !== 'Failure'}
652
+ <span class="text-red-500 -ml-0.5 -mr-1.5" title="A subflow or a step has failed">!</span>
653
+ {/if}
654
+ </div>
655
+ {/snippet}
656
+
657
+ <style>
658
+ .transition-all {
659
+ transition: all 0.2s ease-in-out;
660
+ }</style>
@@ -0,0 +1,34 @@
1
+ import FlowLogViewer from './FlowLogViewer.svelte';
2
+ import type { FlowModule, FlowStatusModule, Job } from '../gen';
3
+ import type { GraphModuleState } from './graph/model';
4
+ type RootJobData = Partial<Job>;
5
+ interface Props {
6
+ modules: FlowModule[];
7
+ localModuleStates: Record<string, GraphModuleState>;
8
+ rootJob: RootJobData;
9
+ flowStatus: FlowStatusModule['type'] | undefined;
10
+ expandedRows: Record<string, boolean>;
11
+ allExpanded?: boolean;
12
+ showResultsInputs?: boolean;
13
+ toggleExpanded: (id: string) => void;
14
+ toggleExpandAll?: () => void;
15
+ workspaceId: string | undefined;
16
+ render: boolean;
17
+ level?: number;
18
+ flowId: string;
19
+ onSelectedIteration: (detail: {
20
+ id: string;
21
+ index: number;
22
+ manuallySet: true;
23
+ moduleId: string;
24
+ } | {
25
+ manuallySet: false;
26
+ moduleId: string;
27
+ }) => Promise<void>;
28
+ getSelectedIteration: (stepId: string) => number;
29
+ flowSummary?: string;
30
+ mode?: 'flow' | 'aiagent';
31
+ }
32
+ declare const FlowLogViewer: import("svelte").Component<Props, {}, "">;
33
+ type FlowLogViewer = ReturnType<typeof FlowLogViewer>;
34
+ export default FlowLogViewer;