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
@@ -0,0 +1,63 @@
1
+ import { FolderService } from '../gen';
2
+ import { Minimatch } from 'minimatch';
3
+ import { resource } from 'runed';
4
+ import { workspaceStore, userStore } from '../stores';
5
+ /**
6
+ * Resolves the folder's `default_permissioned_as` rule that matches a given item path.
7
+ * Returns `undefined` when the user is not admin/wm_deployer, the path is not under a
8
+ * folder, the folder has no matching rules, or the fetch fails.
9
+ *
10
+ * Tracks workspace/user store changes reactively so the value refreshes on workspace
11
+ * switch or permission change. Uses `runed`'s `resource()` which handles race conditions
12
+ * and loading state automatically.
13
+ */
14
+ export function useFolderDefaultPermissionedAs(pathGetter) {
15
+ // Subscribe to the stores so the effect re-runs on changes.
16
+ let workspace = $state(undefined);
17
+ let user = $state(undefined);
18
+ $effect(() => {
19
+ const unsubWs = workspaceStore.subscribe((w) => (workspace = w));
20
+ const unsubUser = userStore.subscribe((u) => (user = u));
21
+ return () => {
22
+ unsubWs();
23
+ unsubUser();
24
+ };
25
+ });
26
+ const folderResource = resource(() => ({ path: pathGetter(), workspace, user }), async ({ path, workspace, user }) => {
27
+ const canPreserve = user?.is_admin || user?.is_super_admin || (user?.groups ?? []).includes('wm_deployers');
28
+ if (!canPreserve || !workspace || !path?.startsWith('f/')) {
29
+ return undefined;
30
+ }
31
+ const parts = path.split('/');
32
+ if (parts.length < 3)
33
+ return undefined;
34
+ const folderName = parts[1];
35
+ const relative = path.slice(`f/${folderName}/`.length);
36
+ if (!relative)
37
+ return undefined;
38
+ try {
39
+ const folder = await FolderService.getFolder({ workspace, name: folderName });
40
+ const rules = folder.default_permissioned_as ?? [];
41
+ const match = rules.find((rule) => {
42
+ try {
43
+ return new Minimatch(rule.path_glob).match(relative);
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ });
49
+ return match?.permissioned_as;
50
+ }
51
+ catch {
52
+ return undefined;
53
+ }
54
+ });
55
+ return {
56
+ get value() {
57
+ return folderResource.current;
58
+ },
59
+ get loading() {
60
+ return folderResource.loading;
61
+ }
62
+ };
63
+ }
@@ -0,0 +1,56 @@
1
+ import type { FlowModule, Job } from '../gen';
2
+ import type { GraphModuleState } from './graph';
3
+ export type NestedRestartStep = {
4
+ step_id: string;
5
+ branch_or_iteration_n?: number;
6
+ };
7
+ /**
8
+ * Reactive state shared by the run page and the editor's flow preview to drive
9
+ * the "restart flow at step" UI. Given the currently selected step, the
10
+ * completed flow job, the graph's per-module display state, and any expanded
11
+ * subflow definitions, derives:
12
+ *
13
+ * - `selectedJobStepIsTopLevel` — whether the selected step appears in the
14
+ * parent flow's top-level `flow_status.modules`
15
+ * - `selectedJobStepType` — `single` / `forloop` / `branchall`, used by the
16
+ * popup to decide which controls to render for the OUTER container
17
+ * - `restartBranchNames` — for top-level BranchAll steps, the labels for the
18
+ * branch picker
19
+ * - `nestedRestartTopStepId` / `nestedRestartTopBranchOrIterationN` /
20
+ * `nestedRestartPath` — the API request shape when restarting at a nested
21
+ * step (single source of truth for both call sites)
22
+ * - `nestedRestartSupported` — gate for showing the button when the selected
23
+ * step is nested (subflow expansion or BranchOne / sequential ForLoop)
24
+ * - `topLevelLoopIteration` — when the selected step IS a top-level ForLoop,
25
+ * the iteration the user is currently viewing (pre-fills the popup input)
26
+ * - `iterationCounts` — map of step id → number of recorded iterations,
27
+ * so the popup can render an iteration `<select>` matching the graph's tabs
28
+ * instead of a free-form number input
29
+ *
30
+ * Inputs are passed as getters so the composable stays reactive in either
31
+ * caller's signal graph.
32
+ */
33
+ export declare function useNestedRestartState(opts: {
34
+ selectedJobStep: () => string | undefined;
35
+ job: () => Job | undefined;
36
+ graphModuleStates: () => Record<string, GraphModuleState>;
37
+ /** Subflow definitions cached when the user expands a subflow in the graph,
38
+ * keyed by the graph node id (i.e. the prefixed `subflow:...:<step_id>` for
39
+ * nested subflows). Lets us walk inside subflows when building the nested
40
+ * restart path. */
41
+ expandedSubflows?: () => Record<string, {
42
+ modules: FlowModule[];
43
+ }>;
44
+ }): {
45
+ readonly selectedJobStepIsTopLevel: boolean | undefined;
46
+ readonly selectedJobStepType: "branchall" | "forloop" | "single";
47
+ readonly restartBranchNames: [number, string][];
48
+ readonly nestedRestartTopStepId: string | undefined;
49
+ readonly nestedRestartTopBranchOrIterationN: number | undefined;
50
+ readonly nestedRestartPath: NestedRestartStep[] | undefined;
51
+ readonly nestedRestartSupported: boolean;
52
+ readonly topLevelLoopIteration: number | undefined;
53
+ readonly topLevelRestartable: boolean;
54
+ readonly iterationCounts: Record<string, number>;
55
+ readonly nestedPathIterationCounts: Record<string, number>;
56
+ };
@@ -0,0 +1,320 @@
1
+ import { findStepPath, parseExpandedSubflowId } from './restartFromStepPath';
2
+ import { emptyString } from '../utils';
3
+ /**
4
+ * Returns true when the BranchOne ancestor's path branch (the one containing the
5
+ * selected leaf, encoded as `branchIndex` where -1 means default and 0..N-1
6
+ * means `branches[i]`) is the same branch the original run took. If the user
7
+ * clicked a step inside an `else` branch the original run didn't take, the
8
+ * step never executed — restart there is impossible.
9
+ *
10
+ * Three states for the lookup:
11
+ * - `status === undefined`: the BranchOne isn't at the parent's top level, so
12
+ * it lives on a child job we don't fetch here (e.g. nested inside a ForLoop
13
+ * iteration). Permissive fallback — let the backend reject if needed.
14
+ * - `status` defined but `chosen === undefined`: the BranchOne IS at the top
15
+ * level but has no chosen branch (never executed / skipped / still
16
+ * waiting). The leaf can't have run either, so reject.
17
+ * - both defined: compare against `branchIndex`.
18
+ */
19
+ function branchOneAncestorMatchesOriginal(job, ancestor) {
20
+ if (ancestor.type !== 'branchone')
21
+ return true;
22
+ const status = job.flow_status?.modules?.find((m) => m.id === ancestor.stepId);
23
+ const chosen = status?.branch_chosen;
24
+ if (!chosen)
25
+ return status === undefined;
26
+ const taken = chosen.type === 'default' ? -1 : (chosen.branch ?? -1);
27
+ return ancestor.branchIndex === taken;
28
+ }
29
+ /**
30
+ * Reactive state shared by the run page and the editor's flow preview to drive
31
+ * the "restart flow at step" UI. Given the currently selected step, the
32
+ * completed flow job, the graph's per-module display state, and any expanded
33
+ * subflow definitions, derives:
34
+ *
35
+ * - `selectedJobStepIsTopLevel` — whether the selected step appears in the
36
+ * parent flow's top-level `flow_status.modules`
37
+ * - `selectedJobStepType` — `single` / `forloop` / `branchall`, used by the
38
+ * popup to decide which controls to render for the OUTER container
39
+ * - `restartBranchNames` — for top-level BranchAll steps, the labels for the
40
+ * branch picker
41
+ * - `nestedRestartTopStepId` / `nestedRestartTopBranchOrIterationN` /
42
+ * `nestedRestartPath` — the API request shape when restarting at a nested
43
+ * step (single source of truth for both call sites)
44
+ * - `nestedRestartSupported` — gate for showing the button when the selected
45
+ * step is nested (subflow expansion or BranchOne / sequential ForLoop)
46
+ * - `topLevelLoopIteration` — when the selected step IS a top-level ForLoop,
47
+ * the iteration the user is currently viewing (pre-fills the popup input)
48
+ * - `iterationCounts` — map of step id → number of recorded iterations,
49
+ * so the popup can render an iteration `<select>` matching the graph's tabs
50
+ * instead of a free-form number input
51
+ *
52
+ * Inputs are passed as getters so the composable stays reactive in either
53
+ * caller's signal graph.
54
+ */
55
+ export function useNestedRestartState(opts) {
56
+ let selectedJobStepIsTopLevel = $state(undefined);
57
+ let selectedJobStepType = $state('single');
58
+ let restartBranchNames = $state([]);
59
+ let nestedRestartTopStepId = $state(undefined);
60
+ let nestedRestartTopBranchOrIterationN = $state(undefined);
61
+ let nestedRestartPath = $state(undefined);
62
+ let nestedRestartSupported = $state(false);
63
+ // Iteration counts keyed by the popup's field-key ('top' or 'inner-N').
64
+ // Built during path construction so each entry uses the *correct* graph key
65
+ // for its level (prefixed for in-subflow ancestors). Avoids the collision
66
+ // that would happen if we double-indexed `iterationCounts` by bare step_id.
67
+ let nestedPathIterationCounts = $state({});
68
+ $effect(() => {
69
+ const selectedJobStep = opts.selectedJobStep();
70
+ const job = opts.job();
71
+ const graphModuleStates = opts.graphModuleStates();
72
+ const expandedSubflows = opts.expandedSubflows?.() ?? {};
73
+ nestedRestartTopStepId = undefined;
74
+ nestedRestartTopBranchOrIterationN = undefined;
75
+ nestedRestartPath = undefined;
76
+ nestedRestartSupported = false;
77
+ restartBranchNames = [];
78
+ selectedJobStepIsTopLevel = undefined;
79
+ nestedPathIterationCounts = {};
80
+ if (selectedJobStep === undefined || job?.flow_status?.modules === undefined) {
81
+ return;
82
+ }
83
+ const isTopLevel = job.flow_status.modules.findIndex((m) => m.id === selectedJobStep) >= 0;
84
+ selectedJobStepIsTopLevel = isTopLevel;
85
+ const moduleDefinition = job.raw_flow?.modules.find((m) => m.id === selectedJobStep);
86
+ if (moduleDefinition?.value.type === 'forloopflow') {
87
+ selectedJobStepType = 'forloop';
88
+ }
89
+ else if (moduleDefinition?.value.type === 'branchall') {
90
+ selectedJobStepType = 'branchall';
91
+ const newNames = [];
92
+ moduleDefinition.value.branches.forEach((branch, idx) => {
93
+ newNames.push([idx, emptyString(branch.summary) ? `Branch #${idx}` : branch.summary]);
94
+ });
95
+ restartBranchNames = newNames;
96
+ }
97
+ else {
98
+ selectedJobStepType = 'single';
99
+ }
100
+ // Read from the local — reading the `$state` we just wrote would register
101
+ // it as a dependency of this effect, causing `effect_update_depth_exceeded`
102
+ // because each write would reschedule the effect.
103
+ if (isTopLevel)
104
+ return;
105
+ // Inline-expanded subflow: id is `subflow:outerStep:[innerSubflow:...]<leaf>`.
106
+ // The graph adds the `subflow:` prefix only for subflow expansions, so each
107
+ // segment is a `Flow{path}` step. We walk the chain and, at the deepest
108
+ // subflow, recurse into its cached modules to detect BranchOne / ForLoop
109
+ // ancestors of the leaf so the chain captures locked branches and
110
+ // iteration indices for those too.
111
+ const subflowParse = parseExpandedSubflowId(selectedJobStep);
112
+ if (subflowParse && job.raw_flow?.modules) {
113
+ const top = job.raw_flow.modules.find((m) => m.id === subflowParse.subflowSteps[0]);
114
+ if (top && top.value.type === 'flow') {
115
+ const innerPath = [];
116
+ // Intermediate subflow boundaries: each is itself a Flow{path}, no
117
+ // branch_or_iteration_n applies.
118
+ for (const seg of subflowParse.subflowSteps.slice(1)) {
119
+ innerPath.push({ step_id: seg });
120
+ }
121
+ // Look up the deepest subflow's modules in expandedSubflows. The graph
122
+ // stores them under the prefixed key (the graph node id used at that
123
+ // nesting level).
124
+ const deepestKey = subflowParse.subflowSteps.length === 1
125
+ ? subflowParse.subflowSteps[0]
126
+ : 'subflow:' + subflowParse.subflowSteps.join(':');
127
+ const deepestModules = expandedSubflows[deepestKey]?.modules;
128
+ if (deepestModules) {
129
+ const path = findStepPath(deepestModules, subflowParse.leaf);
130
+ if (path) {
131
+ // Same gating as the parent-flow case, minus the BranchOne
132
+ // branch-mismatch check (subflow's flow_status isn't directly
133
+ // reachable here; backend will still reject if the branch
134
+ // wasn't taken). Parallel and unsupported containers are checked.
135
+ const blocked = path.ancestors.some((a) => a.type === 'branchall' || a.type === 'whileloopflow' || a.parallel === true);
136
+ if (!blocked) {
137
+ // Inside the subflow, the graph state for ForLoop ancestors
138
+ // is keyed by the prefixed graph id. Build that key here so
139
+ // `selectedForloopIndex` and `flow_jobs.length` lookups land
140
+ // on the right entry (avoiding collisions with same-step-id
141
+ // loops in the parent flow — e.g. parent has `e` with 4 iters
142
+ // and the subflow also has `e` with 1 iter).
143
+ const subflowPrefix = 'subflow:' + subflowParse.subflowSteps.join(':') + ':';
144
+ const iterationFor = (stepId) => graphModuleStates[subflowPrefix + stepId]?.selectedForloopIndex ?? 0;
145
+ const iterCountFor = (stepId) => graphModuleStates[subflowPrefix + stepId]?.flow_jobs?.length ?? 0;
146
+ const counts = {};
147
+ // Top-level (parent) container is the subflow step `h` —
148
+ // not a ForLoop, no count.
149
+ for (let i = 0; i < path.ancestors.length; i++) {
150
+ const a = path.ancestors[i];
151
+ const entry = { step_id: a.stepId };
152
+ if (a.type === 'forloopflow') {
153
+ entry.branch_or_iteration_n = iterationFor(a.stepId);
154
+ // Path key: each subflow boundary already contributes an
155
+ // inner-N entry above (subflow steps without iterations).
156
+ // Match the index that FlowRestartButton will use when
157
+ // rendering iteration fields.
158
+ counts[`inner-${innerPath.length}`] = iterCountFor(a.stepId);
159
+ }
160
+ innerPath.push(entry);
161
+ }
162
+ const leafEntry = { step_id: subflowParse.leaf };
163
+ if (path.target.value.type === 'forloopflow') {
164
+ leafEntry.branch_or_iteration_n = iterationFor(subflowParse.leaf);
165
+ counts[`inner-${innerPath.length}`] = iterCountFor(subflowParse.leaf);
166
+ }
167
+ innerPath.push(leafEntry);
168
+ nestedRestartTopStepId = top.id;
169
+ nestedRestartPath = innerPath;
170
+ nestedPathIterationCounts = counts;
171
+ nestedRestartSupported = true;
172
+ return;
173
+ }
174
+ }
175
+ }
176
+ // Fallback: subflow's modules not yet loaded (user clicked a step
177
+ // without expanding the subflow first), or leaf not found / blocked.
178
+ // Send a flat path; the backend will reject if the leaf is nested
179
+ // inside an unsupported container.
180
+ innerPath.push({ step_id: subflowParse.leaf });
181
+ nestedRestartTopStepId = top.id;
182
+ nestedRestartPath = innerPath;
183
+ nestedRestartSupported = true;
184
+ return;
185
+ }
186
+ }
187
+ // BranchOne / sequential ForLoop within the parent's own flow_value. Walk
188
+ // the tree to find the path; supported when ancestors are BranchOne /
189
+ // sequential ForLoop only — and only when each BranchOne ancestor's chosen
190
+ // branch in the original run actually contains the leaf, otherwise the
191
+ // step never executed and the backend would error.
192
+ if (!job.raw_flow?.modules)
193
+ return;
194
+ const path = findStepPath(job.raw_flow.modules, selectedJobStep);
195
+ if (!path || path.ancestors.length === 0)
196
+ return;
197
+ const blocked = path.ancestors.some((a) => a.type === 'branchall' ||
198
+ a.type === 'whileloopflow' ||
199
+ a.parallel === true ||
200
+ (a.type === 'branchone' && !branchOneAncestorMatchesOriginal(job, a)));
201
+ if (blocked)
202
+ return;
203
+ // For each ForLoop ancestor, default to the user's currently-open iteration
204
+ // (`selectedForloopIndex`); fall back to 0. The popup surfaces every value
205
+ // for confirmation/editing before submit, so we never silently send a guess.
206
+ const iterationFor = (stepId) => graphModuleStates[stepId]?.selectedForloopIndex ?? 0;
207
+ const iterCountFor = (stepId) => graphModuleStates[stepId]?.flow_jobs?.length ?? 0;
208
+ const top = path.ancestors[0];
209
+ const inner = path.ancestors.slice(1);
210
+ const innerPath = [];
211
+ const counts = {};
212
+ for (const a of inner) {
213
+ const entry = { step_id: a.stepId };
214
+ if (a.type === 'forloopflow') {
215
+ entry.branch_or_iteration_n = iterationFor(a.stepId);
216
+ counts[`inner-${innerPath.length}`] = iterCountFor(a.stepId);
217
+ }
218
+ innerPath.push(entry);
219
+ }
220
+ // If the SELECTED step is itself a ForLoop, include its iteration too so
221
+ // the popup exposes a selector for it.
222
+ const leafEntry = { step_id: selectedJobStep };
223
+ if (path.target.value.type === 'forloopflow') {
224
+ leafEntry.branch_or_iteration_n = iterationFor(selectedJobStep);
225
+ counts[`inner-${innerPath.length}`] = iterCountFor(selectedJobStep);
226
+ }
227
+ innerPath.push(leafEntry);
228
+ nestedRestartTopStepId = top.stepId;
229
+ if (top.type === 'forloopflow') {
230
+ nestedRestartTopBranchOrIterationN = iterationFor(top.stepId);
231
+ counts['top'] = iterCountFor(top.stepId);
232
+ }
233
+ nestedRestartPath = innerPath;
234
+ nestedPathIterationCounts = counts;
235
+ nestedRestartSupported = true;
236
+ });
237
+ const topLevelLoopIteration = $derived.by(() => {
238
+ const sel = opts.selectedJobStep();
239
+ if (!sel)
240
+ return undefined;
241
+ if (selectedJobStepType !== 'forloop')
242
+ return undefined;
243
+ return opts.graphModuleStates()[sel]?.selectedForloopIndex;
244
+ });
245
+ // `selectedJobStepIsTopLevel` answers "is this a top-level module structurally";
246
+ // `topLevelRestartable` answers "AND should the restart button show". The
247
+ // difference: parallel ForLoop / parallel BranchAll at the top level are
248
+ // rejected by the backend, so we hide the button preemptively.
249
+ const topLevelRestartable = $derived.by(() => {
250
+ if (!selectedJobStepIsTopLevel)
251
+ return false;
252
+ const sel = opts.selectedJobStep();
253
+ const job = opts.job();
254
+ if (!sel || !job?.raw_flow?.modules)
255
+ return false;
256
+ const mod = job.raw_flow.modules.find((m) => m.id === sel);
257
+ if (!mod)
258
+ return false;
259
+ const v = mod.value;
260
+ if ((v.type === 'forloopflow' || v.type === 'branchall' || v.type === 'whileloopflow') &&
261
+ v.parallel === true) {
262
+ return false;
263
+ }
264
+ return true;
265
+ });
266
+ // Iteration counts indexed by the graph module-state key (i.e. the prefixed
267
+ // `subflow:...:<step_id>` for in-subflow loops, or the bare `step_id` for
268
+ // top-level loops). Used by the popup for the SELECTED step's iteration
269
+ // picker — that step is always at the unprefixed top level (the run page's
270
+ // graph-state key matches the bare step_id), so the lookup is unambiguous.
271
+ // For nested-path iteration fields, see `nestedPathIterationCounts` instead,
272
+ // which is keyed by the popup's field-key ('top' / 'inner-N') and pulled
273
+ // from the path-aware graph key — avoiding collisions when the same step
274
+ // id appears at both the parent flow and inside a subflow.
275
+ const iterationCounts = $derived.by(() => {
276
+ const out = {};
277
+ for (const [id, state] of Object.entries(opts.graphModuleStates())) {
278
+ const n = state.flow_jobs?.length;
279
+ if (typeof n !== 'number' || n <= 0)
280
+ continue;
281
+ out[id] = n;
282
+ }
283
+ return out;
284
+ });
285
+ return {
286
+ get selectedJobStepIsTopLevel() {
287
+ return selectedJobStepIsTopLevel;
288
+ },
289
+ get selectedJobStepType() {
290
+ return selectedJobStepType;
291
+ },
292
+ get restartBranchNames() {
293
+ return restartBranchNames;
294
+ },
295
+ get nestedRestartTopStepId() {
296
+ return nestedRestartTopStepId;
297
+ },
298
+ get nestedRestartTopBranchOrIterationN() {
299
+ return nestedRestartTopBranchOrIterationN;
300
+ },
301
+ get nestedRestartPath() {
302
+ return nestedRestartPath;
303
+ },
304
+ get nestedRestartSupported() {
305
+ return nestedRestartSupported;
306
+ },
307
+ get topLevelLoopIteration() {
308
+ return topLevelLoopIteration;
309
+ },
310
+ get topLevelRestartable() {
311
+ return topLevelRestartable;
312
+ },
313
+ get iterationCounts() {
314
+ return iterationCounts;
315
+ },
316
+ get nestedPathIterationCounts() {
317
+ return nestedPathIterationCounts;
318
+ }
319
+ };
320
+ }