windmill-components 1.677.1 → 1.695.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 (552) hide show
  1. package/package/components/AppConnectInner.svelte +6 -0
  2. package/package/components/ArgInput.svelte +2 -0
  3. package/package/components/AutoscalingConfigEditor.svelte +18 -4
  4. package/package/components/CiTestResults.svelte +64 -0
  5. package/package/components/CiTestResults.svelte.d.ts +7 -0
  6. package/package/components/CompareWorkspaces.svelte +741 -484
  7. package/package/components/DBManager.svelte +35 -4
  8. package/package/components/DBManager.svelte.d.ts +2 -0
  9. package/package/components/DBManagerContent.svelte +3 -1
  10. package/package/components/DBManagerContent.svelte.d.ts +3 -0
  11. package/package/components/DBManagerDrawer.svelte +145 -3
  12. package/package/components/DBTableEditor.svelte +14 -4
  13. package/package/components/DatatablePicker.svelte +2 -5
  14. package/package/components/DatatableSchemaDiff.svelte +531 -0
  15. package/package/components/DatatableSchemaDiff.svelte.d.ts +29 -0
  16. package/package/components/DedicatedWorkersSelector.svelte +4 -2
  17. package/package/components/DefaultTagsInner.svelte +42 -2
  18. package/package/components/DeployWorkspaceDrawer.svelte +1 -1
  19. package/package/components/Dev.svelte +407 -74
  20. package/package/components/EditableSchemaForm.svelte +4 -0
  21. package/package/components/Editor.svelte +1 -1
  22. package/package/components/EditorBar.svelte +1 -1
  23. package/package/components/EditorBar.svelte.d.ts +1 -1
  24. package/package/components/ErrorOrRecoveryHandler.svelte +2 -2
  25. package/package/components/FlowPreviewContent.svelte +32 -30
  26. package/package/components/FlowRestartButton.svelte +143 -61
  27. package/package/components/FlowRestartButton.svelte.d.ts +37 -0
  28. package/package/components/FlowStatusViewer.svelte +15 -1
  29. package/package/components/FlowStatusViewer.svelte.d.ts +10 -2
  30. package/package/components/FlowStatusViewerInner.svelte +270 -222
  31. package/package/components/FlowStatusViewerInner.svelte.d.ts +6 -2
  32. package/package/components/FlowTimeline.svelte +1 -1
  33. package/package/components/FolderEditor.svelte +189 -4
  34. package/package/components/ForkConflictModal.svelte +57 -0
  35. package/package/components/ForkConflictModal.svelte.d.ts +3 -0
  36. package/package/components/ForkWorkspaceBanner.svelte +82 -11
  37. package/package/components/GitRepoViewer.svelte +251 -97
  38. package/package/components/GlobalUserOffboardingModal.svelte +293 -0
  39. package/package/components/GlobalUserOffboardingModal.svelte.d.ts +10 -0
  40. package/package/components/InputTransformSchemaForm.svelte +1 -1
  41. package/package/components/InstanceSettings.svelte +58 -19
  42. package/package/components/Login.svelte +133 -36
  43. package/package/components/Login.svelte.d.ts +1 -0
  44. package/package/components/ModuleTest.svelte +2 -1
  45. package/package/components/NoMainFuncBadge.svelte +1 -1
  46. package/package/components/OffboardItemsBox.svelte +56 -0
  47. package/package/components/OffboardItemsBox.svelte.d.ts +12 -0
  48. package/package/components/OffboardReassignControls.svelte +47 -0
  49. package/package/components/OffboardReassignControls.svelte.d.ts +20 -0
  50. package/package/components/OffboardWorkspaceSection.svelte +110 -0
  51. package/package/components/OffboardWorkspaceSection.svelte.d.ts +24 -0
  52. package/package/components/OnBehalfOfSelector.svelte +21 -3
  53. package/package/components/OnBehalfOfSelector.svelte.d.ts +7 -0
  54. package/package/components/Path.svelte +7 -1
  55. package/package/components/Path.svelte.d.ts +1 -1
  56. package/package/components/QueueAlerts.svelte +10 -10
  57. package/package/components/ResourcePicker.svelte +2 -2
  58. package/package/components/RunsPage.svelte +2 -1
  59. package/package/components/S3FilePickerInner.svelte +89 -89
  60. package/package/components/ScriptBuilder.svelte +52 -11
  61. package/package/components/ScriptEditor.svelte +19 -8
  62. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  63. package/package/components/ShareModal.svelte +236 -98
  64. package/package/components/ShareModal.svelte.d.ts +1 -1
  65. package/package/components/SuperadminSettingsInner.svelte +362 -315
  66. package/package/components/UserOffboardingModal.svelte +238 -0
  67. package/package/components/UserOffboardingModal.svelte.d.ts +10 -0
  68. package/package/components/WorkspaceDeployLayout.svelte +3 -3
  69. package/package/components/WorkspaceDeployLayout.svelte.d.ts +1 -0
  70. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -0
  71. package/package/components/apps/components/helpers/executeRunnable.js +2 -1
  72. package/package/components/apps/editor/AppReportsDrawerInner.svelte +1 -1
  73. package/package/components/apps/editor/appPolicy.js +2 -1
  74. package/package/components/apps/editor/commonAppUtils.d.ts +3 -0
  75. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -1
  76. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +7 -0
  77. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +4 -2
  78. package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte +49 -0
  79. package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte.d.ts +9 -0
  80. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -0
  81. package/package/components/apps/inputType.d.ts +1 -0
  82. package/package/components/apps/sharedTypes.d.ts +1 -0
  83. package/package/components/assets/AssetsDropdownButton.svelte +1 -1
  84. package/package/components/auditLogs/AuditLogsFilters.svelte +8 -3
  85. package/package/components/common/confirmationModal/ConfirmationModal.svelte +1 -1
  86. package/package/components/common/fileUpload/S3ArgInput.svelte +12 -10
  87. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +2 -0
  88. package/package/components/common/table/AppRow.svelte +3 -3
  89. package/package/components/common/table/FlowRow.svelte +3 -3
  90. package/package/components/common/table/RawAppRow.svelte +4 -4
  91. package/package/components/common/table/Row.svelte +6 -2
  92. package/package/components/common/table/ScriptRow.svelte +11 -3
  93. package/package/components/copilot/chat/AIChatDisplay.svelte +5 -36
  94. package/package/components/copilot/chat/AIChatInput.svelte +56 -47
  95. package/package/components/copilot/chat/AIChatManager.svelte.js +50 -48
  96. package/package/components/copilot/chat/ContextElementBadge.svelte +6 -4
  97. package/package/components/copilot/chat/anthropic.d.ts +7 -1
  98. package/package/components/copilot/chat/anthropic.js +5 -2
  99. package/package/components/copilot/chat/app/core.d.ts +12 -20
  100. package/package/components/copilot/chat/app/core.js +230 -159
  101. package/package/components/copilot/chat/app/core.test.js +417 -0
  102. package/package/components/copilot/chat/chatLoop.d.ts +3 -0
  103. package/package/components/copilot/chat/chatLoop.js +13 -5
  104. package/package/components/copilot/chat/context.js +44 -0
  105. package/package/components/copilot/chat/flow/FlowAIChat.svelte +57 -76
  106. package/package/components/copilot/chat/flow/core.d.ts +14 -3
  107. package/package/components/copilot/chat/flow/core.js +494 -116
  108. package/package/components/copilot/chat/flow/helperUtils.d.ts +22 -0
  109. package/package/components/copilot/chat/flow/helperUtils.js +100 -0
  110. package/package/components/copilot/chat/flow/helperUtils.test.js +231 -0
  111. package/package/components/copilot/chat/flow/inlineScriptsUtils.d.ts +5 -24
  112. package/package/components/copilot/chat/flow/inlineScriptsUtils.js +30 -55
  113. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  114. package/package/components/copilot/chat/flow/openFlowZod.gen.js +24 -0
  115. package/package/components/copilot/chat/flow/utils.test.js +59 -0
  116. package/package/components/copilot/chat/openai-responses.d.ts +7 -1
  117. package/package/components/copilot/chat/openai-responses.js +5 -2
  118. package/package/components/copilot/chat/script/core.js +3 -0
  119. package/package/components/copilot/chat/shared.d.ts +7 -2
  120. package/package/components/copilot/chat/shared.js +116 -53
  121. package/package/components/copilot/chat/shared.test.d.ts +1 -0
  122. package/package/components/copilot/chat/shared.test.js +412 -0
  123. package/package/components/copilot/chat/tokenUsage.d.ts +23 -0
  124. package/package/components/copilot/chat/tokenUsage.js +42 -0
  125. package/package/components/copilot/chat/workspaceTools.d.ts +7 -0
  126. package/package/components/copilot/chat/workspaceTools.js +239 -0
  127. package/package/components/copilot/chat/workspaceToolsZod.gen.d.ts +1295 -0
  128. package/package/components/copilot/chat/workspaceToolsZod.gen.js +424 -0
  129. package/package/components/copilot/lib.d.ts +5 -1
  130. package/package/components/copilot/lib.js +24 -6
  131. package/package/components/copilot/lib.test.d.ts +1 -0
  132. package/package/components/copilot/lib.test.js +19 -0
  133. package/package/components/copilot/modelConfig.d.ts +3 -0
  134. package/package/components/copilot/modelConfig.js +10 -0
  135. package/package/components/deploymentRequest/DeploymentRequestPanel.svelte +337 -0
  136. package/package/components/deploymentRequest/DeploymentRequestPanel.svelte.d.ts +15 -0
  137. package/package/components/details/CopyableCodeBlock.svelte +18 -8
  138. package/package/components/details/CopyableCodeBlock.svelte.d.ts +1 -0
  139. package/package/components/flows/FlowAssetsHandler.svelte +19 -21
  140. package/package/components/flows/FlowProgressBar.svelte +5 -2
  141. package/package/components/flows/agentToolTree.d.ts +17 -0
  142. package/package/components/flows/agentToolTree.js +114 -0
  143. package/package/components/flows/agentToolTree.test.d.ts +1 -0
  144. package/package/components/flows/agentToolTree.test.js +86 -0
  145. package/package/components/flows/agentToolUtils.d.ts +0 -5
  146. package/package/components/flows/agentToolUtils.js +0 -49
  147. package/package/components/flows/content/FlowLoop.svelte +7 -4
  148. package/package/components/flows/content/FlowModuleComponent.svelte +636 -599
  149. package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +15 -7
  150. package/package/components/flows/content/FlowSettings.svelte +29 -0
  151. package/package/components/flows/conversations/FlowChatManager.svelte.js +21 -10
  152. package/package/components/flows/dfs.d.ts +6 -2
  153. package/package/components/flows/dfs.js +19 -11
  154. package/package/components/flows/flowDeleteController.d.ts +32 -0
  155. package/package/components/flows/flowDeleteController.js +54 -0
  156. package/package/components/flows/flowDeleteController.test.d.ts +1 -0
  157. package/package/components/flows/flowDeleteController.test.js +121 -0
  158. package/package/components/flows/flowDeleteUtils.d.ts +48 -0
  159. package/package/components/flows/flowDeleteUtils.js +150 -0
  160. package/package/components/flows/flowDeleteUtils.test.d.ts +1 -0
  161. package/package/components/flows/flowDeleteUtils.test.js +131 -0
  162. package/package/components/flows/flowDiff.d.ts +2 -47
  163. package/package/components/flows/flowDiff.js +16 -293
  164. package/package/components/flows/flowDiff.testUtils.d.ts +8 -0
  165. package/package/components/flows/flowDiff.testUtils.js +26 -0
  166. package/package/components/flows/flowDiffManager.svelte.js +20 -75
  167. package/package/components/flows/flowDiffManager.svelte.test.js +103 -2
  168. package/package/components/flows/flowExplorer.d.ts +4 -0
  169. package/package/components/flows/flowExplorer.js +7 -30
  170. package/package/components/flows/flowState.d.ts +1 -0
  171. package/package/components/flows/flowStateUtils.svelte.js +11 -2
  172. package/package/components/flows/flowTree.d.ts +91 -0
  173. package/package/components/flows/flowTree.js +326 -0
  174. package/package/components/flows/flowTree.test.d.ts +1 -0
  175. package/package/components/flows/flowTree.test.js +236 -0
  176. package/package/components/flows/map/FlowJobsMenu.svelte +36 -30
  177. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
  178. package/package/components/flows/map/FlowModuleSchemaMap.svelte +73 -229
  179. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -2
  180. package/package/components/flows/pickers/PickHubScriptQuick.svelte +2 -2
  181. package/package/components/flows/previousResults.js +13 -41
  182. package/package/components/flows/previousResults.test.d.ts +1 -0
  183. package/package/components/flows/previousResults.test.js +65 -0
  184. package/package/components/flows/propPicker/OutputPicker.svelte +2 -1
  185. package/package/components/flows/propPicker/OutputPickerInner.svelte +41 -4
  186. package/package/components/flows/propPicker/StepHistory.svelte +9 -1
  187. package/package/components/git_sync/GitSyncContext.svelte.js +11 -7
  188. package/package/components/git_sync/GitSyncRepositoryCard.svelte +2 -29
  189. package/package/components/git_sync/PullWorkspaceModal.svelte +6 -7
  190. package/package/components/graph/FlowGraphV2.svelte +8 -4
  191. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -0
  192. package/package/components/graph/groupedModulesProxy.svelte.d.ts +10 -0
  193. package/package/components/graph/groupedModulesProxy.svelte.js +17 -1
  194. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +8 -2
  195. package/package/components/home/HomeConnectDrawer.svelte +125 -0
  196. package/package/components/home/HomeConnectDrawer.svelte.d.ts +5 -0
  197. package/package/components/home/deploy_ui.js +1 -1
  198. package/package/components/icons/AzureIcon.svelte +12 -25
  199. package/package/components/icons/AzureIcon.svelte.d.ts +3 -2
  200. package/package/components/icons/GithubIcon.svelte +4 -4
  201. package/package/components/icons/GithubIcon.svelte.d.ts +5 -2
  202. package/package/components/instanceSettings/ExternalJwtTokens.svelte +85 -0
  203. package/package/components/instanceSettings/ExternalJwtTokens.svelte.d.ts +12 -0
  204. package/package/components/instanceSettings/GhesAppSettings.svelte +17 -0
  205. package/package/components/instanceSettings/IndexerMemorySettings.svelte +56 -29
  206. package/package/components/instanceSettings/SecretBackendConfig.svelte +9 -2
  207. package/package/components/instanceSettings.d.ts +1 -0
  208. package/package/components/instanceSettings.js +66 -8
  209. package/package/components/mcp/McpScopeSelector.svelte +119 -9
  210. package/package/components/mcp/McpScopeSelector.svelte.d.ts +1 -0
  211. package/package/components/offboarding-utils.d.ts +11 -0
  212. package/package/components/offboarding-utils.js +102 -0
  213. package/package/components/progressBar/ProgressBar.svelte +9 -5
  214. package/package/components/progressBar/ProgressBar.svelte.d.ts +1 -0
  215. package/package/components/raw_apps/DeleteAfterUsePopup.svelte +52 -0
  216. package/package/components/raw_apps/DeleteAfterUsePopup.svelte.d.ts +9 -0
  217. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +5 -1
  218. package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -1
  219. package/package/components/raw_apps/RawAppEditor.svelte +186 -102
  220. package/package/components/raw_apps/RawAppEditorHeader.svelte +6 -1
  221. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +1 -0
  222. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +9 -3
  223. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +2 -1
  224. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +1 -0
  225. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +1 -0
  226. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +48 -5
  227. package/package/components/raw_apps/RawAppSharedUiDrawer.svelte +129 -0
  228. package/package/components/raw_apps/RawAppSharedUiDrawer.svelte.d.ts +5 -0
  229. package/package/components/raw_apps/RawAppSidebar.svelte +12 -0
  230. package/package/components/raw_apps/RawAppYamlEditor.svelte +81 -0
  231. package/package/components/raw_apps/RawAppYamlEditor.svelte.d.ts +20 -0
  232. package/package/components/raw_apps/dataTableRefUtils.d.ts +7 -0
  233. package/package/components/raw_apps/dataTableRefUtils.js +34 -0
  234. package/package/components/raw_apps/dataTableRefUtils.test.d.ts +1 -0
  235. package/package/components/raw_apps/dataTableRefUtils.test.js +29 -0
  236. package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
  237. package/package/components/raw_apps/rawAppPolicy.d.ts +1 -0
  238. package/package/components/raw_apps/rawAppPolicy.js +17 -2
  239. package/package/components/resources/resourceTypesFilter.d.ts +19 -0
  240. package/package/components/resources/resourceTypesFilter.js +21 -0
  241. package/package/components/restartFromStepPath.d.ts +39 -0
  242. package/package/components/restartFromStepPath.js +89 -0
  243. package/package/components/runs/JobDetailFieldConfig.d.ts +1 -0
  244. package/package/components/runs/JobDetailFieldConfig.js +57 -10
  245. package/package/components/runs/JobDetailHeader.svelte +24 -3
  246. package/package/components/runs/runsFilter.d.ts +1 -1
  247. package/package/components/schema/FlowPropertyEditor.svelte +30 -1
  248. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +5 -2
  249. package/package/components/script_builder.d.ts +1 -1
  250. package/package/components/search/GlobalSearchModal.svelte +8 -1
  251. package/package/components/select/Select.svelte +3 -2
  252. package/package/components/select/Select.svelte.d.ts +1 -0
  253. package/package/components/settings/CreateToken.svelte +91 -71
  254. package/package/components/settings/CreateToken.svelte.d.ts +3 -0
  255. package/package/components/settings/EditTokenScopesModal.svelte +57 -0
  256. package/package/components/settings/EditTokenScopesModal.svelte.d.ts +10 -0
  257. package/package/components/settings/ScopesPicker.svelte +43 -0
  258. package/package/components/settings/ScopesPicker.svelte.d.ts +11 -0
  259. package/package/components/settings/TokensTable.svelte +51 -15
  260. package/package/components/settings/WorkspaceUserSettings.svelte +34 -28
  261. package/package/components/sidebar/OperatorMenu.svelte +6 -0
  262. package/package/components/sidebar/SidebarContent.svelte +68 -2
  263. package/package/components/sidebar/WorkspaceMenu.svelte +8 -4
  264. package/package/components/triggers/AddTriggersButton.svelte +17 -0
  265. package/package/components/triggers/CaptureWrapper.svelte +19 -1
  266. package/package/components/triggers/PermissionedAsLine.svelte +37 -3
  267. package/package/components/triggers/PermissionedAsLine.svelte.d.ts +6 -0
  268. package/package/components/triggers/TriggerEditorToolbar.svelte.d.ts +1 -1
  269. package/package/components/triggers/TriggerModeToggle.svelte +36 -7
  270. package/package/components/triggers/TriggerModeToggle.svelte.d.ts +1 -1
  271. package/package/components/triggers/TriggerSuspendedJobsModal.svelte.d.ts +1 -1
  272. package/package/components/triggers/TriggersEditor.svelte +10 -2
  273. package/package/components/triggers/TriggersWrapper.svelte +20 -0
  274. package/package/components/triggers/azure/AzureCapture.svelte +41 -0
  275. package/package/components/triggers/azure/AzureCapture.svelte.d.ts +44 -0
  276. package/package/components/triggers/azure/AzureTriggerEditor.svelte +20 -0
  277. package/package/components/triggers/azure/AzureTriggerEditor.svelte.d.ts +9 -0
  278. package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte +301 -0
  279. package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte.d.ts +16 -0
  280. package/package/components/triggers/azure/AzureTriggerEditorInner.svelte +422 -0
  281. package/package/components/triggers/azure/AzureTriggerEditorInner.svelte.d.ts +25 -0
  282. package/package/components/triggers/azure/AzureTriggerPanel.svelte +55 -0
  283. package/package/components/triggers/azure/AzureTriggerPanel.svelte.d.ts +10 -0
  284. package/{dist/sharedUtils/components/triggers/kafka → package/components/triggers/azure}/utils.d.ts +1 -1
  285. package/package/components/triggers/azure/utils.js +56 -0
  286. package/package/components/triggers/email/EmailTriggerEditorInner.svelte +15 -11
  287. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +22 -14
  288. package/package/components/triggers/http/RouteEditorConfigSection.svelte +15 -7
  289. package/package/components/triggers/http/RouteEditorInner.svelte +16 -14
  290. package/package/components/triggers/http/RoutesGenerator.svelte +6 -1
  291. package/package/components/triggers/http/RoutesPanel.svelte +1 -1
  292. package/package/components/triggers/http/utils.d.ts +1 -1
  293. package/package/components/triggers/http/utils.js +2 -2
  294. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +22 -14
  295. package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +22 -14
  296. package/package/components/triggers/native/NativeTriggerEditor.svelte +3 -0
  297. package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte +118 -0
  298. package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte.d.ts +17 -0
  299. package/package/components/triggers/native/utils.js +14 -0
  300. package/package/components/triggers/nats/NatsTriggerEditor.svelte.d.ts +4 -3
  301. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +22 -14
  302. package/package/components/triggers/postgres/PostgresTriggerEditor.svelte.d.ts +4 -3
  303. package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +22 -14
  304. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +22 -14
  305. package/package/components/triggers/sqs/SqsTriggerEditor.svelte.d.ts +4 -3
  306. package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +22 -14
  307. package/package/components/triggers/triggers.svelte.d.ts +1 -0
  308. package/package/components/triggers/triggers.svelte.js +24 -1
  309. package/package/components/triggers/utils.js +47 -6
  310. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +22 -14
  311. package/package/components/triggers.d.ts +1 -1
  312. package/package/components/useFolderDefaultPermissionedAs.svelte.d.ts +13 -0
  313. package/package/components/useFolderDefaultPermissionedAs.svelte.js +63 -0
  314. package/package/components/useNestedRestartState.svelte.d.ts +56 -0
  315. package/package/components/useNestedRestartState.svelte.js +320 -0
  316. package/package/components/workspaceSettings/CreateWorkspace.svelte +16 -677
  317. package/package/components/workspaceSettings/CreateWorkspaceInner.svelte +604 -0
  318. package/package/components/workspaceSettings/CreateWorkspaceInner.svelte.d.ts +7 -0
  319. package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +27 -25
  320. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +46 -8
  321. package/package/components/workspaceSettings/DataTableSettings.svelte +27 -22
  322. package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
  323. package/package/components/workspaceSettings/ForkDatatableSection.svelte +228 -0
  324. package/package/components/workspaceSettings/ForkDatatableSection.svelte.d.ts +28 -0
  325. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +8 -2
  326. package/package/components/workspaceSettings/RulesetEditor.svelte +27 -2
  327. package/package/components/workspaceSettings/SharedUiSettings.svelte +175 -0
  328. package/package/components/workspaceSettings/SharedUiSettings.svelte.d.ts +3 -0
  329. package/package/components/workspaceSettings/VolumeStorageSettings.svelte +1 -1
  330. package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +17 -1
  331. package/package/consts.d.ts +3 -0
  332. package/package/consts.js +10 -0
  333. package/package/gen/core/OpenAPI.js +1 -1
  334. package/package/gen/schemas.gen.d.ts +795 -59
  335. package/package/gen/schemas.gen.js +801 -60
  336. package/package/gen/services.gen.d.ts +475 -5
  337. package/package/gen/services.gen.js +976 -23
  338. package/package/gen/types.gen.d.ts +1865 -75
  339. package/package/githubApp.js +5 -1
  340. package/package/hubPaths.json +2 -8
  341. package/package/infer.d.ts +1 -1
  342. package/package/infer.js +50 -52
  343. package/package/infer.svelte.js +10 -1
  344. package/package/mcpEndpointTools.js +60 -4
  345. package/package/monaco_workers/sqlTypePlugin.worker.d.ts +10 -0
  346. package/package/monaco_workers/sqlTypePlugin.worker.js +39 -0
  347. package/package/script_helpers.d.ts +8 -2
  348. package/package/script_helpers.js +31 -0
  349. package/package/stores.d.ts +11 -0
  350. package/package/stores.js +6 -0
  351. package/package/system_prompts/index.d.ts +1 -0
  352. package/package/system_prompts/index.js +8 -0
  353. package/package/system_prompts/prompts.d.ts +17 -13
  354. package/package/system_prompts/prompts.js +921 -61
  355. package/package/templates/ci_test_bun.ts.template +27 -0
  356. package/package/templates/ci_test_python.py.template +26 -0
  357. package/package/utils/forkConflict.d.ts +26 -0
  358. package/package/utils/forkConflict.js +56 -0
  359. package/package/utils_deployable.d.ts +164 -121
  360. package/package/utils_deployable.js +61 -11
  361. package/package/utils_workspace_deploy.d.ts +8 -8
  362. package/package/utils_workspace_deploy.js +89 -421
  363. package/package.json +30 -6
  364. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
  365. package/dist/sharedUtils/base.d.ts +0 -1
  366. package/dist/sharedUtils/cloud.d.ts +0 -1
  367. package/dist/sharedUtils/common.d.ts +0 -111
  368. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
  369. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
  370. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
  371. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
  372. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
  373. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
  374. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
  375. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
  376. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
  377. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
  378. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
  379. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
  380. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
  381. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
  382. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
  383. package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
  384. package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
  385. package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
  386. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
  387. package/dist/sharedUtils/components/apps/types.d.ts +0 -274
  388. package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
  389. package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
  390. package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
  391. package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
  392. package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
  393. package/dist/sharedUtils/components/common/index.d.ts +0 -24
  394. package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
  395. package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
  396. package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
  397. package/dist/sharedUtils/components/ducklake.d.ts +0 -1
  398. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
  399. package/dist/sharedUtils/components/icons/index.d.ts +0 -101
  400. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
  401. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
  402. package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
  403. package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
  404. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
  405. package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
  406. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
  407. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
  408. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
  409. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
  410. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
  411. package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
  412. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
  413. package/dist/sharedUtils/components/triggers.d.ts +0 -20
  414. package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
  415. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
  416. package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
  417. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
  418. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
  419. package/dist/sharedUtils/gen/core/request.d.ts +0 -29
  420. package/dist/sharedUtils/gen/index.d.ts +0 -6
  421. package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
  422. package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
  423. package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
  424. package/dist/sharedUtils/history.svelte.d.ts +0 -9
  425. package/dist/sharedUtils/hub.d.ts +0 -49
  426. package/dist/sharedUtils/jsr.json +0 -6
  427. package/dist/sharedUtils/lib.d.ts +0 -5
  428. package/dist/sharedUtils/lib.es.js +0 -1588
  429. package/dist/sharedUtils/package.json +0 -12
  430. package/dist/sharedUtils/schema.d.ts +0 -3
  431. package/dist/sharedUtils/stores.d.ts +0 -97
  432. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
  433. package/dist/sharedUtils/toast.d.ts +0 -8
  434. package/dist/sharedUtils/utils.d.ts +0 -265
  435. package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +0 -153
  436. package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +0 -21
  437. package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +0 -136
  438. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.d.ts +0 -15
  439. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +0 -107
  440. package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +0 -50
  441. package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +0 -93
  442. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.d.ts +0 -29
  443. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.js +0 -134
  444. package/package/components/copilot/chat/__tests__/app/appResultsWriter.d.ts +0 -30
  445. package/package/components/copilot/chat/__tests__/app/appResultsWriter.js +0 -197
  446. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.d.ts +0 -10
  447. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.js +0 -9
  448. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/meta.json +0 -4
  449. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.d.ts +0 -6
  450. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.js +0 -5
  451. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/meta.json +0 -4
  452. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.d.ts +0 -12
  453. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js +0 -14
  454. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/meta.json +0 -4
  455. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.d.ts +0 -8
  456. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.js +0 -25
  457. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/meta.json +0 -4
  458. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.d.ts +0 -7
  459. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.js +0 -5
  460. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/meta.json +0 -4
  461. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.d.ts +0 -8
  462. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.js +0 -5
  463. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/meta.json +0 -4
  464. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.d.ts +0 -10
  465. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.tsx +0 -26
  466. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.d.ts +0 -10
  467. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.tsx +0 -79
  468. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.d.ts +0 -10
  469. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.tsx +0 -46
  470. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.d.ts +0 -10
  471. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.tsx +0 -56
  472. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.d.ts +0 -6
  473. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.tsx +0 -59
  474. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.d.ts +0 -16
  475. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.tsx +0 -119
  476. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.d.ts +0 -15
  477. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.js +0 -14
  478. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/meta.json +0 -4
  479. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.d.ts +0 -14
  480. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.js +0 -5
  481. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/meta.json +0 -4
  482. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.d.ts +0 -6
  483. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.js +0 -41
  484. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/meta.json +0 -4
  485. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.d.ts +0 -15
  486. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.js +0 -3
  487. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/meta.json +0 -4
  488. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.d.ts +0 -9
  489. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.tsx +0 -51
  490. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.d.ts +0 -8
  491. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.tsx +0 -27
  492. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.d.ts +0 -8
  493. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.tsx +0 -18
  494. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.d.ts +0 -12
  495. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.tsx +0 -81
  496. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.d.ts +0 -3
  497. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.js +0 -3
  498. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/meta.json +0 -4
  499. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.d.ts +0 -3
  500. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.js +0 -3
  501. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/meta.json +0 -4
  502. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.d.ts +0 -2
  503. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.tsx +0 -38
  504. package/package/components/copilot/chat/__tests__/app/variants/baseline.d.ts +0 -6
  505. package/package/components/copilot/chat/__tests__/app/variants/baseline.js +0 -10
  506. package/package/components/copilot/chat/__tests__/app/variants/index.d.ts +0 -3
  507. package/package/components/copilot/chat/__tests__/app/variants/index.js +0 -3
  508. package/package/components/copilot/chat/__tests__/app/variants/streamlined.d.ts +0 -6
  509. package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +0 -137
  510. package/package/components/copilot/chat/__tests__/flow/expected/test1.json +0 -134
  511. package/package/components/copilot/chat/__tests__/flow/expected/test2.json +0 -183
  512. package/package/components/copilot/chat/__tests__/flow/expected/test3.json +0 -204
  513. package/package/components/copilot/chat/__tests__/flow/expected/test4.json +0 -175
  514. package/package/components/copilot/chat/__tests__/flow/expected/test5_modify_simple.json +0 -68
  515. package/package/components/copilot/chat/__tests__/flow/expected/test6_modify_medium.json +0 -142
  516. package/package/components/copilot/chat/__tests__/flow/expected/test7_modify_complex.json +0 -136
  517. package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +0 -294
  518. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.d.ts +0 -17
  519. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +0 -49
  520. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.d.ts +0 -12
  521. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +0 -79
  522. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +0 -50
  523. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +0 -102
  524. package/package/components/copilot/chat/__tests__/flow/initial/test5_initial.json +0 -53
  525. package/package/components/copilot/chat/__tests__/flow/initial/test6_initial.json +0 -68
  526. package/package/components/copilot/chat/__tests__/flow/initial/test7_initial.json +0 -120
  527. package/package/components/copilot/chat/__tests__/flow/variants/baseline.d.ts +0 -6
  528. package/package/components/copilot/chat/__tests__/flow/variants/baseline.js +0 -10
  529. package/package/components/copilot/chat/__tests__/flow/variants/index.d.ts +0 -3
  530. package/package/components/copilot/chat/__tests__/flow/variants/index.js +0 -3
  531. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.d.ts +0 -15
  532. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +0 -388
  533. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +0 -45
  534. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +0 -121
  535. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +0 -28
  536. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +0 -96
  537. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.d.ts +0 -32
  538. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.js +0 -130
  539. package/package/components/copilot/chat/__tests__/shared/baseVariants.d.ts +0 -45
  540. package/package/components/copilot/chat/__tests__/shared/baseVariants.js +0 -57
  541. package/package/components/copilot/chat/__tests__/shared/index.d.ts +0 -10
  542. package/package/components/copilot/chat/__tests__/shared/index.js +0 -5
  543. package/package/components/copilot/chat/__tests__/shared/types.d.ts +0 -105
  544. package/package/components/copilot/chat/__tests__/shared/types.js +0 -9
  545. package/package/components/copilot/chat/flow/openFlowZod.js +0 -24
  546. package/package/components/copilot/chat/flow/utils.d.ts +0 -14
  547. package/package/components/copilot/chat/flow/utils.js +0 -108
  548. package/package/components/flows/agentToolUtils.test.js +0 -55
  549. /package/package/components/copilot/chat/{__tests__/app/appChat.eval.test.d.ts → app/core.test.d.ts} +0 -0
  550. /package/package/components/copilot/chat/{__tests__/flow/flowChat.eval.test.d.ts → flow/helperUtils.test.d.ts} +0 -0
  551. /package/package/components/copilot/chat/flow/{openFlowZod.d.ts → openFlowZod.gen.d.ts} +0 -0
  552. /package/package/components/{flows/agentToolUtils.test.d.ts → copilot/chat/flow/utils.test.d.ts} +0 -0
@@ -11,7 +11,7 @@ import FlowProgressBar from './flows/FlowProgressBar.svelte';
11
11
  import FlowExecutionStatus from './runs/FlowExecutionStatus.svelte';
12
12
  import JobDetailHeader from './runs/JobDetailHeader.svelte';
13
13
  import { AlertTriangle, Circle, CornerDownLeft, Download, Loader2, Play, RefreshCw, X } from 'lucide-svelte';
14
- import { emptyString, sendUserToast } from '../utils';
14
+ import { sendUserToast } from '../utils';
15
15
  import { dfs } from './flows/dfs';
16
16
  import { sliceModules } from './flows/flowStateUtils.svelte';
17
17
  import InputSelectedBadge from './schema/InputSelectedBadge.svelte';
@@ -22,9 +22,26 @@ import { getStepHistoryLoaderContext } from './stepHistoryLoader.svelte';
22
22
  import FlowChat from './flows/conversations/FlowChat.svelte';
23
23
  import { stateSnapshot } from '../svelte5Utils.svelte';
24
24
  import FlowRestartButton from './FlowRestartButton.svelte';
25
+ import { useNestedRestartState } from './useNestedRestartState.svelte';
25
26
  import { createFlowRecording, setActiveRecording } from './recording/flowRecording.svelte';
26
27
  let { previewMode = $bindable(), open, preventEscape = $bindable(false), jobId = $bindable(undefined), job = $bindable(undefined), initial = $bindable(false), selectedJobStep = $bindable(undefined), selectedJobStepIsTopLevel = $bindable(undefined), selectedJobStepType = $bindable('single'), rightColumnSelect = $bindable('timeline'), branchOrIterationN = $bindable(0), scrollTop = $bindable(0), localModuleStates = $bindable({}), localDurationStatuses = $bindable({}), onRunPreview, render = false, onJobDone, upToId = undefined, suspendStatus } = $props();
27
- let restartBranchNames = [];
28
+ let previewExpandedSubflows = $state({});
29
+ const restart = useNestedRestartState({
30
+ selectedJobStep: () => selectedJobStep,
31
+ job: () => job,
32
+ graphModuleStates: () => localModuleStates,
33
+ expandedSubflows: () => previewExpandedSubflows
34
+ });
35
+ // `selectedJobStepType` and `selectedJobStepIsTopLevel` are still exposed as
36
+ // `$bindable` props to legacy parents (FlowPreviewButtons binds them but
37
+ // doesn't read them). Sync them out of the composable here so the prop
38
+ // surface stays unchanged.
39
+ $effect(() => {
40
+ selectedJobStepIsTopLevel = restart.selectedJobStepIsTopLevel;
41
+ });
42
+ $effect(() => {
43
+ selectedJobStepType = restart.selectedJobStepType;
44
+ });
28
45
  let isRunning = $state(false);
29
46
  let jsonView = $state(false);
30
47
  let jsonEditor = $state(undefined);
@@ -118,28 +135,6 @@ function onKeyDown(event) {
118
135
  }
119
136
  }
120
137
  }
121
- function onSelectedJobStepChange() {
122
- if (selectedJobStep !== undefined && job?.flow_status?.modules !== undefined) {
123
- selectedJobStepIsTopLevel =
124
- job?.flow_status?.modules.map((m) => m.id).indexOf(selectedJobStep) >= 0;
125
- let moduleDefinition = job?.raw_flow?.modules.find((m) => m.id == selectedJobStep);
126
- if (moduleDefinition?.value.type == 'forloopflow') {
127
- selectedJobStepType = 'forloop';
128
- }
129
- else if (moduleDefinition?.value.type == 'branchall') {
130
- selectedJobStepType = 'branchall';
131
- moduleDefinition?.value.branches.forEach((branch, idx) => {
132
- restartBranchNames.push([
133
- idx,
134
- emptyString(branch.summary) ? `Branch #${idx}` : branch.summary
135
- ]);
136
- });
137
- }
138
- else {
139
- selectedJobStepType = 'single';
140
- }
141
- }
142
- }
143
138
  let savedArgs = $state(previewArgs.val);
144
139
  let inputSelected = $state(undefined);
145
140
  async function selectInput(input, type) {
@@ -219,9 +214,6 @@ function onScrollableDivChange() {
219
214
  scrollableDiv.scrollTop = scrollTop;
220
215
  }
221
216
  }
222
- $effect.pre(() => {
223
- selectedJobStep !== undefined && untrack(() => onSelectedJobStepChange());
224
- });
225
217
  $effect(() => {
226
218
  scrollableDiv && render && untrack(() => onScrollableDivChange());
227
219
  });
@@ -316,12 +308,21 @@ export function flowHasChanged() {
316
308
  </div>
317
309
  {:else}
318
310
  <div class="grow justify-center flex flex-row gap-2 items-center">
319
- {#if jobId !== undefined && selectedJobStep !== undefined && selectedJobStepIsTopLevel}
311
+ {#if jobId !== undefined && selectedJobStep !== undefined && restart.topLevelRestartable}
312
+ <!--
313
+ Nested-step restart is intentionally not surfaced from the editor
314
+ preview: the chain needs `flow_job_id` resolved at every level,
315
+ which only the backend can do (by walking the original
316
+ execution). Users who want nested restart should use the run
317
+ page, which goes through the dedicated restart API.
318
+ -->
320
319
  <FlowRestartButton
321
320
  {jobId}
322
321
  {selectedJobStep}
323
- {selectedJobStepType}
324
- {restartBranchNames}
322
+ selectedJobStepType={restart.selectedJobStepType}
323
+ restartBranchNames={restart.restartBranchNames}
324
+ presetIterationN={restart.topLevelLoopIteration}
325
+ iterationCounts={restart.iterationCounts}
325
326
  onRestart={(stepId, branchOrIterationN) => {
326
327
  runPreview(previewArgs.val, {
327
328
  flow_job_id: jobId,
@@ -544,6 +545,7 @@ export function flowHasChanged() {
544
545
  <FlowStatusViewer
545
546
  bind:job
546
547
  bind:localModuleStates
548
+ bind:expandedSubflows={previewExpandedSubflows}
547
549
  bind:localDurationStatuses
548
550
  {suspendStatus}
549
551
  hideDownloadInGraph={customUi?.downloadLogs === false}
@@ -4,24 +4,82 @@ import { Play, RefreshCw } from 'lucide-svelte';
4
4
  import { FlowService, JobService } from '../gen';
5
5
  import { workspaceStore } from '../stores';
6
6
  import { emptyString, sendUserToast } from '../utils';
7
- let { jobId, selectedJobStep, selectedJobStepType, restartBranchNames = [], flowPath = undefined, flowVersionId = undefined, disabled = false, enterpriseOnly = false, variant = 'default', unifiedSize = 'md', onRestart, onRestartComplete } = $props();
7
+ let { jobId, selectedJobStep, selectedJobStepType, restartBranchNames = [], flowPath = undefined, flowVersionId = undefined, disabled = false, enterpriseOnly = false, variant = 'default', unifiedSize = 'md', nestedPath = undefined, nestedTopStepId = undefined, nestedTopBranchOrIterationN = undefined, presetIterationN = undefined, iterationCounts = undefined, nestedPathIterationCounts = undefined, onRestart, onRestartComplete } = $props();
8
+ const isNested = $derived((nestedPath?.length ?? 0) > 0);
9
+ // Inline-expanded subflow steps come in as `subflow:A:B:leaf` — show only `leaf`.
10
+ const displayStepId = $derived(isNested && nestedPath && nestedPath.length > 0
11
+ ? nestedPath[nestedPath.length - 1].step_id
12
+ : selectedJobStep);
8
13
  // Sentinel value meaning "use the same version as the original run" (backend receives undefined)
9
14
  const RUN_VERSION_SENTINEL = -1;
10
15
  let branchOrIterationN = $state(0);
16
+ let iterationEdits = $state({});
17
+ function resetEditsFromProps() {
18
+ const next = {};
19
+ if (isNested && nestedTopBranchOrIterationN !== undefined) {
20
+ next['top'] = nestedTopBranchOrIterationN;
21
+ }
22
+ if (isNested) {
23
+ nestedPath?.forEach((entry, i) => {
24
+ if (entry.branch_or_iteration_n !== undefined) {
25
+ next[`inner-${i}`] = entry.branch_or_iteration_n;
26
+ }
27
+ });
28
+ }
29
+ iterationEdits = next;
30
+ if (selectedJobStepType === 'forloop' && presetIterationN !== undefined) {
31
+ branchOrIterationN = presetIterationN;
32
+ }
33
+ }
34
+ const iterationFields = $derived.by(() => {
35
+ if (!isNested)
36
+ return [];
37
+ const out = [];
38
+ if (nestedTopBranchOrIterationN !== undefined && nestedTopStepId) {
39
+ out.push({
40
+ key: 'top',
41
+ label: nestedTopStepId,
42
+ value: iterationEdits['top'] ?? nestedTopBranchOrIterationN
43
+ });
44
+ }
45
+ nestedPath?.forEach((entry, i) => {
46
+ if (entry.branch_or_iteration_n !== undefined) {
47
+ const k = `inner-${i}`;
48
+ out.push({
49
+ key: k,
50
+ label: entry.step_id,
51
+ value: iterationEdits[k] ?? entry.branch_or_iteration_n
52
+ });
53
+ }
54
+ });
55
+ return out;
56
+ });
57
+ const needsPopup = $derived(!!flowPath || iterationFields.length > 0 || selectedJobStepType !== 'single');
11
58
  let selectedFlowVersion = $state(RUN_VERSION_SENTINEL);
12
59
  let flowVersions = $state([]);
13
60
  let loadingVersions = $state(false);
14
61
  let versionsLoaded = $state(false);
15
62
  let runVersionInList = $state(false);
16
63
  async function restartFlow(stepId, branchOrIterationN, flowVersion) {
17
- let run = await JobService.restartFlowAtStep({
18
- workspace: $workspaceStore,
19
- id: jobId,
20
- requestBody: {
64
+ const requestBody = isNested
65
+ ? {
66
+ step_id: nestedTopStepId,
67
+ branch_or_iteration_n: iterationEdits['top'] ?? nestedTopBranchOrIterationN,
68
+ flow_version: flowVersion,
69
+ nested_path: nestedPath?.map((entry, i) => ({
70
+ step_id: entry.step_id,
71
+ branch_or_iteration_n: iterationEdits[`inner-${i}`] ?? entry.branch_or_iteration_n
72
+ }))
73
+ }
74
+ : {
21
75
  step_id: stepId,
22
76
  branch_or_iteration_n: branchOrIterationN,
23
77
  flow_version: flowVersion
24
- }
78
+ };
79
+ let run = await JobService.restartFlowAtStep({
80
+ workspace: $workspaceStore,
81
+ id: jobId,
82
+ requestBody
25
83
  });
26
84
  onRestartComplete?.(run);
27
85
  }
@@ -94,23 +152,23 @@ function handleRestart() {
94
152
  {/if}
95
153
  </label>
96
154
  {/snippet}
97
- {#snippet singleRestartButton()}
155
+ {#snippet restartTriggerButton(usePlayIcon: boolean)}
98
156
  <Button
99
- title={`Re-start this flow from step ${selectedJobStep} (included).${enterpriseOnly ? ' This is a feature only available in enterprise edition.' : ''}`}
157
+ title={`Re-start this flow from step ${displayStepId} (included).${enterpriseOnly ? ' This is a feature only available in enterprise edition.' : ''}`}
100
158
  {variant}
101
159
  {unifiedSize}
102
160
  {disabled}
103
- startIcon={{ icon: Play }}
104
- nonCaptureEvent={!!flowPath}
161
+ startIcon={{ icon: usePlayIcon ? Play : RefreshCw }}
162
+ nonCaptureEvent={!usePlayIcon || !!flowPath}
105
163
  onClick={() => {
106
- if (!flowPath) {
164
+ if (usePlayIcon && !flowPath) {
107
165
  handleRestart()
108
166
  }
109
167
  }}
110
168
  >
111
169
  Re-start from
112
170
  <Badge baseClass="ml-1" color="indigo">
113
- {selectedJobStep}
171
+ {displayStepId}
114
172
  </Badge>
115
173
  {#if enterpriseOnly && disabled}
116
174
  (EE)
@@ -118,68 +176,92 @@ function handleRestart() {
118
176
  </Button>
119
177
  {/snippet}
120
178
 
121
- {#if selectedJobStepType === 'single'}
122
- {#if !flowPath}
123
- {@render singleRestartButton()}
124
- {:else}
125
- <Popover
126
- floatingConfig={{ strategy: 'absolute', placement: 'bottom-start' }}
127
- disablePopup={!flowPath}
128
- on:openChange={(e) => { if (e.detail) loadFlowVersions() }}
129
- >
130
- {#snippet trigger()}
131
- {@render singleRestartButton()}
132
- {/snippet}
133
- {#snippet content()}
134
- <div class="flex flex-col gap-4 text-primary p-4 w-80">
135
- {@render flowVersionSelector()}
136
-
137
- <Button variant="accent" onClick={handleRestart}>Restart</Button>
138
- </div>
139
- {/snippet}
140
- </Popover>
141
- {/if}
179
+ {#if !needsPopup}
180
+ {@render restartTriggerButton(true)}
142
181
  {:else}
143
182
  <Popover
144
183
  floatingConfig={{ strategy: 'absolute', placement: 'bottom-start' }}
145
- on:openChange={(e) => { if (e.detail) loadFlowVersions() }}
184
+ disablePopup={!needsPopup}
185
+ on:openChange={(e) => {
186
+ if (e.detail) {
187
+ loadFlowVersions()
188
+ resetEditsFromProps()
189
+ }
190
+ }}
146
191
  >
147
192
  {#snippet trigger()}
148
- <Button
149
- title={`Re-start this flow from step ${selectedJobStep} (included).${enterpriseOnly ? ' This is a feature only available in enterprise edition.' : ''}`}
150
- {variant}
151
- {unifiedSize}
152
- {disabled}
153
- startIcon={{ icon: RefreshCw }}
154
- nonCaptureEvent={true}
155
- >
156
- Re-start from
157
- <Badge baseClass="ml-1" color="indigo">
158
- {selectedJobStep}
159
- </Badge>
160
- {#if enterpriseOnly && disabled}
161
- (EE)
162
- {/if}
163
- </Button>
193
+ {@render restartTriggerButton(selectedJobStepType === 'single')}
164
194
  {/snippet}
165
195
  {#snippet content()}
166
196
  <div class="flex flex-col gap-4 text-primary p-4 w-80">
167
- <label>
168
- <div class="pb-1 text-xs font-semibold text-emphasis"
169
- >{selectedJobStepType == 'forloop' ? 'From iteration #' : 'From branch'}</div
170
- >
171
- <div class="flex w-full gap-2">
172
- {#if selectedJobStepType === 'forloop'}
173
- <input type="number" min="0" bind:value={branchOrIterationN} class="!w-32 grow" />
174
- {:else}
197
+ {#if selectedJobStepType === 'forloop'}
198
+ {@const topCount = iterationCounts?.[selectedJobStep] ?? 0}
199
+ <label>
200
+ <div class="pb-1 text-xs font-semibold text-emphasis">From iteration #</div>
201
+ <div class="flex w-full gap-2">
202
+ {#if topCount > 0}
203
+ <select bind:value={branchOrIterationN} class="!w-32 grow">
204
+ {#each Array.from({ length: topCount }, (_, i) => i) as i (i)}
205
+ <option value={i}>{i + 1}</option>
206
+ {/each}
207
+ </select>
208
+ {:else}
209
+ <input type="number" min="0" bind:value={branchOrIterationN} class="!w-32 grow" />
210
+ {/if}
211
+ </div>
212
+ </label>
213
+ {:else if selectedJobStepType === 'branchall'}
214
+ <label>
215
+ <div class="pb-1 text-xs font-semibold text-emphasis">From branch</div>
216
+ <div class="flex w-full gap-2">
175
217
  <select bind:value={branchOrIterationN} class="!w-32 grow">
176
218
  {#each restartBranchNames as [branchIdx, branchName] (branchIdx)}
177
219
  <option value={branchIdx}>{branchName}</option>
178
220
  {/each}
179
221
  </select>
180
- {/if}
181
- </div>
182
- </label>
222
+ </div>
223
+ </label>
224
+ {/if}
225
+
226
+ {#each iterationFields as field (field.key)}
227
+ {@const count = nestedPathIterationCounts?.[field.key] ?? 0}
228
+ <label>
229
+ <div class="pb-1 text-xs font-semibold text-emphasis">
230
+ From iteration # of <code class="text-xs">{field.label}</code>
231
+ </div>
232
+ <div class="flex w-full gap-2">
233
+ {#if count > 0}
234
+ <select
235
+ value={field.value}
236
+ onchange={(e) => {
237
+ const v = parseInt((e.target as HTMLSelectElement).value, 10)
238
+ if (!Number.isNaN(v)) {
239
+ iterationEdits = { ...iterationEdits, [field.key]: v }
240
+ }
241
+ }}
242
+ class="!w-32 grow"
243
+ >
244
+ {#each Array.from({ length: count }, (_, i) => i) as i (i)}
245
+ <option value={i}>{i + 1}</option>
246
+ {/each}
247
+ </select>
248
+ {:else}
249
+ <input
250
+ type="number"
251
+ min="0"
252
+ value={field.value}
253
+ oninput={(e) => {
254
+ const v = parseInt((e.target as HTMLInputElement).value, 10)
255
+ if (!Number.isNaN(v)) {
256
+ iterationEdits = { ...iterationEdits, [field.key]: v }
257
+ }
258
+ }}
259
+ class="!w-32 grow"
260
+ />
261
+ {/if}
262
+ </div>
263
+ </label>
264
+ {/each}
183
265
 
184
266
  {#if flowPath}
185
267
  {@render flowVersionSelector()}
@@ -10,6 +10,43 @@ interface Props {
10
10
  enterpriseOnly?: boolean;
11
11
  variant?: 'default' | 'accent';
12
12
  unifiedSize?: 'xs' | 'sm' | 'md' | 'lg';
13
+ /**
14
+ * For nested-step restarts: path of ancestor containers from the top-level
15
+ * step down to the leaf. When provided, the LAST entry's step_id is the
16
+ * actual restart point and `selectedJobStep` (the leaf shown in the UI) is
17
+ * informational only — the request is built from `nestedTopStepId`,
18
+ * `nestedTopBranchOrIterationN` and `nestedPath`.
19
+ */
20
+ nestedPath?: Array<{
21
+ step_id: string;
22
+ branch_or_iteration_n?: number;
23
+ }>;
24
+ /** Top-level container step id (only used when nestedPath is set) */
25
+ nestedTopStepId?: string;
26
+ /** Top-level container branch_or_iteration_n (only used when nestedPath is set) */
27
+ nestedTopBranchOrIterationN?: number;
28
+ /**
29
+ * For top-level ForLoop restart: iteration index the user is currently
30
+ * viewing in the graph (read from `selectedForloopIndex` upstream). When
31
+ * provided, the popup pre-fills the iteration selector with this value.
32
+ */
33
+ presetIterationN?: number;
34
+ /**
35
+ * Map from ForLoop step id to the number of iterations that ran in the
36
+ * original execution (i.e. `flow_jobs.length`). When provided for a step,
37
+ * the popup renders a `<select>` of `0..count-1` instead of a free-form
38
+ * number input — same surface as the graph's iteration tabs. Used for the
39
+ * SELECTED step's iteration picker when it is itself a top-level ForLoop.
40
+ */
41
+ iterationCounts?: Record<string, number>;
42
+ /**
43
+ * Iteration counts for nested-path entries, keyed by the popup's field-key
44
+ * (`'top'` for the outer container, `'inner-N'` for nested ancestors).
45
+ * Populated by the composable so each entry uses the *correct* graph-state
46
+ * key (prefixed for in-subflow ancestors), avoiding collisions when the
47
+ * same step id appears at multiple nesting levels.
48
+ */
49
+ nestedPathIterationCounts?: Record<string, number>;
13
50
  /** Called when flow is restarted. If not provided, will navigate to the new run using goto (requires SvelteKit) */
14
51
  onRestart?: (stepId: string, branchOrIterationN: number, flowVersion?: number) => void;
15
52
  /** Called when flow restart completes with the new job ID. Used for navigation in non-SvelteKit contexts */
@@ -2,7 +2,16 @@
2
2
  import { setContext, untrack } from 'svelte';
3
3
  import { isOwner as loadIsOwner } from '../utils';
4
4
  import { userStore, workspaceStore } from '../stores';
5
- let { jobId, initialJob = undefined, workspaceId = undefined, flowState = $bindable({}), selectedJobStep = $bindable(undefined), hideFlowResult = false, hideTimeline = false, hideDownloadInGraph = false, hideNodeDefinition = false, hideJobId = false, hideDownloadLogs = false, rightColumnSelect = $bindable('timeline'), isOwner = $bindable(false), wideResults = false, localModuleStates = $bindable({}), localDurationStatuses = $bindable({}), job = $bindable(undefined), render = true, suspendStatus = $bindable({ val: {} }), customUi, onStart, onJobsLoaded, onDone, showLogsWithResult = false, notes: notesProp = undefined, groups: groupsProp = undefined } = $props();
5
+ let { jobId, initialJob = undefined, workspaceId = undefined, flowState = $bindable({}), selectedJobStep = $bindable(undefined), hideFlowResult = false, hideTimeline = false, hideDownloadInGraph = false, hideNodeDefinition = false, hideJobId = false, hideDownloadLogs = false, rightColumnSelect = $bindable('timeline'), isOwner = $bindable(false), wideResults = false, localModuleStates = $bindable({}),
6
+ // `$bindable({})` is the right shape for this prop despite CLAUDE.md's
7
+ // general guidance against `$bindable(default_value)`: that rule targets
8
+ // props where `undefined` has distinct semantics from "empty default".
9
+ // For a Map-typed cache populated by the inner component, callers that
10
+ // don't bind it should still see a usable empty map (the inner writes to
11
+ // it when the user expands a subflow). Without the `{}` default, those
12
+ // callers would crash at write time. Same reasoning applies to the
13
+ // pre-existing `localModuleStates`/`localDurationStatuses` bindables.
14
+ expandedSubflows = $bindable({}), localDurationStatuses = $bindable({}), job = $bindable(undefined), render = true, suspendStatus = $bindable({ val: {} }), customUi, onStart, onJobsLoaded, onDone, showLogsWithResult = false, notes: notesProp = undefined, groups: groupsProp = undefined } = $props();
6
15
  let lastJobId = untrack(() => jobId);
7
16
  let retryStatus = $state({ val: {} });
8
17
  let globalRefreshes = $state({});
@@ -30,6 +39,10 @@ async function updateJobId() {
30
39
  delete flowState[key];
31
40
  localDurationStatuses = {};
32
41
  localModuleStates = {};
42
+ // Reset the subflow definition cache too — a new run can reference
43
+ // different subflow versions; stale entries would confuse nested
44
+ // restart path-finding.
45
+ expandedSubflows = {};
33
46
  }
34
47
  }
35
48
  let lastScriptPath = $state(undefined);
@@ -61,6 +74,7 @@ let toolCallIndicesToLoad = $state([]);
61
74
  }}
62
75
  globalModuleStates={[]}
63
76
  bind:localModuleStates
77
+ bind:expandedSubflows
64
78
  bind:selectedNode={selectedJobStep}
65
79
  bind:localDurationStatuses
66
80
  {onStart}
@@ -1,7 +1,7 @@
1
1
  import type { FlowState } from './flows/flowState';
2
2
  import type { DurationStatus, GraphModuleState } from './graph';
3
3
  import { type StateStore } from '../utils';
4
- import type { CompletedJob, FlowNote, FlowValue, Job } from '../gen';
4
+ import type { CompletedJob, FlowModule, FlowNote, FlowValue, Job } from '../gen';
5
5
  interface Props {
6
6
  jobId: string;
7
7
  initialJob?: Job | undefined;
@@ -18,6 +18,14 @@ interface Props {
18
18
  isOwner?: boolean;
19
19
  wideResults?: boolean;
20
20
  localModuleStates?: Record<string, GraphModuleState>;
21
+ /** Cached subflow definitions, keyed by graph node id (subflow step id, with
22
+ * `subflow:` prefix for nested subflows). Populated as the user expands a
23
+ * subflow in the graph. Bindable so callers can use it to walk inside
24
+ * subflows (e.g. for nested-restart path-finding). */
25
+ expandedSubflows?: Record<string, {
26
+ modules: FlowModule[];
27
+ groups?: any[];
28
+ }>;
21
29
  localDurationStatuses?: Record<string, DurationStatus>;
22
30
  job?: Job | undefined;
23
31
  render?: boolean;
@@ -40,6 +48,6 @@ interface Props {
40
48
  notes?: FlowNote[];
41
49
  groups?: FlowValue['groups'];
42
50
  }
43
- declare const FlowStatusViewer: import("svelte").Component<Props, {}, "job" | "isOwner" | "suspendStatus" | "localModuleStates" | "localDurationStatuses" | "flowState" | "rightColumnSelect" | "selectedJobStep">;
51
+ declare const FlowStatusViewer: import("svelte").Component<Props, {}, "job" | "isOwner" | "suspendStatus" | "expandedSubflows" | "localModuleStates" | "localDurationStatuses" | "flowState" | "rightColumnSelect" | "selectedJobStep">;
44
52
  type FlowStatusViewer = ReturnType<typeof FlowStatusViewer>;
45
53
  export default FlowStatusViewer;