windmill-components 1.623.1 → 1.642.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 (903) hide show
  1. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +2 -0
  2. package/dist/sharedUtils/base.d.ts +1 -0
  3. package/dist/sharedUtils/cloud.d.ts +1 -0
  4. package/dist/sharedUtils/common.d.ts +111 -0
  5. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +5 -0
  6. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +5 -0
  7. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
  8. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +13 -0
  9. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +11 -0
  10. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +95 -0
  11. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +6 -0
  12. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +7 -0
  13. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +33 -0
  14. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +10 -0
  15. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +5371 -0
  16. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +3 -0
  17. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +3 -0
  18. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +7 -0
  19. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +3 -0
  20. package/dist/sharedUtils/components/apps/gridUtils.d.ts +14 -0
  21. package/dist/sharedUtils/components/apps/inputType.d.ts +178 -0
  22. package/dist/sharedUtils/components/apps/rx.d.ts +29 -0
  23. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +21 -0
  24. package/dist/sharedUtils/components/apps/types.d.ts +274 -0
  25. package/dist/sharedUtils/components/assets/lib.d.ts +25 -0
  26. package/dist/sharedUtils/components/common/alert/model.d.ts +2 -0
  27. package/dist/sharedUtils/components/common/badge/model.d.ts +8 -0
  28. package/dist/sharedUtils/components/common/button/model.d.ts +45 -0
  29. package/dist/sharedUtils/components/common/fileInput/model.d.ts +1 -0
  30. package/dist/sharedUtils/components/common/index.d.ts +24 -0
  31. package/dist/sharedUtils/components/common/skeleton/model.d.ts +21 -0
  32. package/dist/sharedUtils/components/dbTypes.d.ts +14 -0
  33. package/dist/sharedUtils/components/diff_drawer.d.ts +26 -0
  34. package/dist/sharedUtils/components/ducklake.d.ts +1 -0
  35. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +7 -0
  36. package/dist/sharedUtils/components/icons/index.d.ts +101 -0
  37. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +1 -0
  38. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +10 -0
  39. package/dist/sharedUtils/components/raw_apps/utils.d.ts +15 -0
  40. package/dist/sharedUtils/components/triggers/email/utils.d.ts +4 -0
  41. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +2 -0
  42. package/dist/sharedUtils/components/triggers/http/utils.d.ts +11 -0
  43. package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +2 -0
  44. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +2 -0
  45. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +2 -0
  46. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +8 -0
  47. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +2 -0
  48. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +32 -0
  49. package/dist/sharedUtils/components/triggers/utils.d.ts +80 -0
  50. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +2 -0
  51. package/dist/sharedUtils/components/triggers.d.ts +20 -0
  52. package/dist/sharedUtils/gen/core/ApiError.d.ts +10 -0
  53. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +13 -0
  54. package/dist/sharedUtils/gen/core/ApiResult.d.ts +7 -0
  55. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +26 -0
  56. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +27 -0
  57. package/dist/sharedUtils/gen/core/request.d.ts +29 -0
  58. package/dist/sharedUtils/gen/index.d.ts +6 -0
  59. package/dist/sharedUtils/gen/schemas.gen.d.ts +7036 -0
  60. package/dist/sharedUtils/gen/services.gen.d.ts +6047 -0
  61. package/dist/sharedUtils/gen/types.gen.d.ts +21881 -0
  62. package/dist/sharedUtils/history.svelte.d.ts +9 -0
  63. package/dist/sharedUtils/hub.d.ts +49 -0
  64. package/dist/sharedUtils/jsr.json +6 -0
  65. package/dist/sharedUtils/lib.d.ts +5 -0
  66. package/dist/sharedUtils/lib.es.js +1588 -0
  67. package/dist/sharedUtils/package.json +12 -0
  68. package/dist/sharedUtils/schema.d.ts +3 -0
  69. package/dist/sharedUtils/stores.d.ts +97 -0
  70. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +80 -0
  71. package/dist/sharedUtils/toast.d.ts +8 -0
  72. package/dist/sharedUtils/utils.d.ts +265 -0
  73. package/package/assets/app.css +32 -13
  74. package/package/assets/tokens/tokens.json +11 -1
  75. package/package/ata/apis.js +78 -5
  76. package/package/cancelable-promise-utils.js +4 -2
  77. package/package/components/AIAgentLogViewer.svelte +2 -2
  78. package/package/components/AIAgentLogViewer.svelte.d.ts +1 -0
  79. package/package/components/AIProviderPicker.svelte +20 -80
  80. package/package/components/AIProviderPicker.svelte.d.ts +2 -7
  81. package/package/components/AddUser.svelte +3 -3
  82. package/package/components/ApiConnectForm.svelte +13 -1
  83. package/package/components/AppConnectDrawer.svelte +1 -0
  84. package/package/components/AppConnectInner.svelte +1 -0
  85. package/package/components/AppConnectInner.svelte.d.ts +1 -1
  86. package/package/components/ArgInput.svelte +15 -5
  87. package/package/components/ArgInput.svelte.d.ts +3 -4
  88. package/package/components/Auth0Setting.svelte +6 -2
  89. package/package/components/AuthSettings.svelte +71 -40
  90. package/package/components/AuthSettings.svelte.d.ts +3 -1
  91. package/package/components/AutheliaSetting.svelte +3 -2
  92. package/package/components/AuthentikSetting.svelte +3 -2
  93. package/package/components/AutoscalingConfigEditor.svelte +2 -1
  94. package/package/components/AutoscalingConfigEditor.svelte.d.ts +1 -0
  95. package/package/components/BedrockCredentialsCheck.svelte +241 -0
  96. package/package/components/BedrockCredentialsCheck.svelte.d.ts +3 -0
  97. package/package/components/CenteredModal.svelte +42 -24
  98. package/package/components/CenteredModal.svelte.d.ts +8 -27
  99. package/package/components/CenteredPage.svelte +6 -2
  100. package/package/components/CenteredPage.svelte.d.ts +3 -0
  101. package/package/components/ChangeInstanceUsernameInner.svelte +1 -1
  102. package/package/components/CompareWorkspaces.svelte +103 -73
  103. package/package/components/ConcurrentJobsChart.svelte +4 -3
  104. package/package/components/ConcurrentJobsChart.svelte.d.ts +2 -2
  105. package/package/components/ConnectionSection.svelte +69 -73
  106. package/package/components/CustomPopover.svelte +20 -23
  107. package/package/components/CustomPopover.svelte.d.ts +14 -39
  108. package/package/components/CustomSso.svelte +7 -7
  109. package/package/components/DBManager.svelte +147 -44
  110. package/package/components/DBManager.svelte.d.ts +15 -2
  111. package/package/components/DBManagerContent.svelte +30 -63
  112. package/package/components/DBManagerContent.svelte.d.ts +39 -4
  113. package/package/components/DBManagerDrawer.svelte +9 -9
  114. package/package/components/DBTable.svelte +1 -1
  115. package/package/components/DBTable.svelte.d.ts +3 -1
  116. package/package/components/DBTableEditor.svelte +234 -178
  117. package/package/components/DBTableEditor.svelte.d.ts +22 -3
  118. package/package/components/DatatablePicker.svelte +29 -0
  119. package/package/components/DatatablePicker.svelte.d.ts +13 -0
  120. package/package/components/DateInput.svelte +29 -35
  121. package/package/components/DateInput.svelte.d.ts +10 -11
  122. package/package/components/DateTimeInput.svelte +3 -3
  123. package/package/components/DedicatedWorkersSelector.svelte +566 -0
  124. package/package/components/DedicatedWorkersSelector.svelte.d.ts +8 -0
  125. package/package/components/DeployToSetting.svelte +183 -123
  126. package/package/components/DeployToSetting.svelte.d.ts +19 -28
  127. package/package/components/DeployWorkspace.svelte +111 -72
  128. package/package/components/DeployWorkspace.svelte.d.ts +2 -1
  129. package/package/components/DeployWorkspaceDrawer.svelte +18 -7
  130. package/package/components/DeployWorkspaceDrawer.svelte.d.ts +3 -20
  131. package/package/components/Description.svelte +5 -2
  132. package/package/components/Dev.svelte +37 -2
  133. package/package/components/DiffDrawer.svelte +8 -29
  134. package/package/components/DiffEditor.svelte +39 -8
  135. package/package/components/DiffEditor.svelte.d.ts +2 -6
  136. package/package/components/DisplayResult.svelte +34 -26
  137. package/package/components/DropdownMenu.svelte +39 -0
  138. package/package/components/DropdownMenu.svelte.d.ts +14 -0
  139. package/package/components/DropdownSubmenuItem.svelte +68 -0
  140. package/package/components/DropdownSubmenuItem.svelte.d.ts +10 -0
  141. package/package/components/DropdownV2.svelte +5 -4
  142. package/package/components/DropdownV2.svelte.d.ts +1 -0
  143. package/package/components/DropdownV2Inner.svelte +42 -34
  144. package/package/components/DropdownV2Inner.svelte.d.ts +2 -1
  145. package/package/components/DucklakePicker.svelte +2 -5
  146. package/package/components/EEOnly.svelte +4 -14
  147. package/package/components/EEOnly.svelte.d.ts +0 -1
  148. package/package/components/Editor.svelte +72 -27
  149. package/package/components/Editor.svelte.d.ts +4 -0
  150. package/package/components/EditorBar.svelte +3 -5
  151. package/package/components/ErrorOrRecoveryHandler.svelte +62 -53
  152. package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +1 -0
  153. package/package/components/ExploreAssetButton.svelte +1 -2
  154. package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
  155. package/package/components/FileExplorer.svelte +249 -0
  156. package/package/components/FileExplorer.svelte.d.ts +21 -0
  157. package/package/components/FilesetEditor.svelte +103 -0
  158. package/package/components/FilesetEditor.svelte.d.ts +6 -0
  159. package/package/components/FilterSearchbar.svelte +628 -0
  160. package/package/components/FilterSearchbar.svelte.d.ts +86 -0
  161. package/package/components/FlowBuilder.svelte +140 -90
  162. package/package/components/FlowDiffViewer.svelte +37 -0
  163. package/package/components/FlowDiffViewer.svelte.d.ts +7 -0
  164. package/package/components/FlowGraphViewer.svelte +5 -2
  165. package/package/components/FlowGraphViewer.svelte.d.ts +2 -0
  166. package/package/components/FlowGraphViewerStep.svelte +49 -33
  167. package/package/components/FlowHistoryJobPicker.svelte +2 -1
  168. package/package/components/FlowJobResult.svelte +31 -23
  169. package/package/components/FlowJobResult.svelte.d.ts +0 -1
  170. package/package/components/FlowLogRow.svelte +1 -1
  171. package/package/components/FlowLogViewer.svelte +8 -3
  172. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  173. package/package/components/FlowPreviewContent.svelte +67 -50
  174. package/package/components/FlowPreviewContent.svelte.d.ts +5 -1
  175. package/package/components/FlowRestartButton.svelte +48 -49
  176. package/package/components/FlowRestartButton.svelte.d.ts +5 -0
  177. package/package/components/FlowStatusViewer.svelte +2 -3
  178. package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
  179. package/package/components/FlowStatusViewerInner.svelte +411 -308
  180. package/package/components/FlowStatusViewerInner.svelte.d.ts +3 -3
  181. package/package/components/FlowStatusWaitingForEvents.svelte +34 -29
  182. package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +4 -18
  183. package/package/components/FlowViewer.svelte +103 -2
  184. package/package/components/FlowViewer.svelte.d.ts +9 -3
  185. package/package/components/FolderPicker.svelte +195 -65
  186. package/package/components/FolderPicker.svelte.d.ts +2 -0
  187. package/package/components/ForkWorkspaceBanner.svelte +32 -13
  188. package/package/components/GraphqlSchemaViewer.svelte +8 -1
  189. package/package/components/HistoricInputs.svelte +24 -27
  190. package/package/components/HistoricInputs.svelte.d.ts +2 -2
  191. package/package/components/IconedResourceType.svelte +8 -2
  192. package/package/components/IconedResourceType.svelte.d.ts +2 -0
  193. package/package/components/InfiniteList.svelte +27 -20
  194. package/package/components/InfiniteList.svelte.d.ts +2 -0
  195. package/package/components/InputError.svelte +9 -0
  196. package/package/components/InputError.svelte.d.ts +6 -0
  197. package/package/components/InputTransformForm.svelte +46 -39
  198. package/package/components/InputTransformForm.svelte.d.ts +1 -0
  199. package/package/components/InputTransformSchemaForm.svelte +2 -1
  200. package/package/components/InputTransformSchemaForm.svelte.d.ts +1 -0
  201. package/package/components/InputTransformsViewer.svelte +37 -20
  202. package/package/components/InstanceNameEditor.svelte +3 -1
  203. package/package/components/InstanceSetting.svelte +187 -373
  204. package/package/components/InstanceSetting.svelte.d.ts +1 -0
  205. package/package/components/InstanceSettings.svelte +804 -193
  206. package/package/components/InstanceSettings.svelte.d.ts +17 -2
  207. package/package/components/IntegerInput.svelte +58 -0
  208. package/package/components/IntegerInput.svelte.d.ts +14 -0
  209. package/package/components/InviteGlobalUser.svelte +25 -25
  210. package/package/components/InviteGlobalUser.svelte.d.ts +4 -2
  211. package/package/components/InviteUser.svelte +16 -42
  212. package/package/components/InviteUser.svelte.d.ts +4 -18
  213. package/package/components/JobArgs.svelte +14 -10
  214. package/package/components/JobLoader.svelte +6 -4
  215. package/package/components/JobLoader.svelte.d.ts +3 -3
  216. package/package/components/JobOtelTraces.svelte +287 -0
  217. package/package/components/JobOtelTraces.svelte.d.ts +6 -0
  218. package/package/components/JobStatus.svelte +29 -26
  219. package/package/components/JobStatus.svelte.d.ts +1 -0
  220. package/package/components/JsonInputs.svelte +6 -8
  221. package/package/components/JsonInputs.svelte.d.ts +7 -8
  222. package/package/components/KanidmSetting.svelte +3 -2
  223. package/package/components/KeycloakSetting.svelte +3 -2
  224. package/package/components/LogViewer.svelte +91 -33
  225. package/package/components/Login.svelte +36 -3
  226. package/package/components/ManualPopover.svelte +5 -6
  227. package/package/components/ManualPopover.svelte.d.ts +9 -35
  228. package/package/components/MemoryFootprintViewer.svelte +2 -6
  229. package/package/components/ModulePreview.svelte +23 -21
  230. package/package/components/ModulePreview.svelte.d.ts +1 -0
  231. package/package/components/ModuleStatus.svelte +5 -5
  232. package/package/components/ModuleTest.svelte +3 -3
  233. package/package/components/MoveDrawer.svelte +47 -76
  234. package/package/components/MoveDrawer.svelte.d.ts +4 -6
  235. package/package/components/NextcloudSetting.svelte +4 -3
  236. package/package/components/NoDirectDeployAlert.svelte +31 -0
  237. package/package/components/NoDirectDeployAlert.svelte.d.ts +6 -0
  238. package/package/components/NumberTypeNarrowing.svelte +65 -67
  239. package/package/components/NumberTypeNarrowing.svelte.d.ts +2 -1
  240. package/package/components/OAuthSetting.svelte +7 -14
  241. package/package/components/ObjectStoreConfigSettings.svelte +150 -55
  242. package/package/components/ObjectStoreConfigSettings.svelte.d.ts +34 -44
  243. package/package/components/OktaSetting.svelte +3 -2
  244. package/package/components/PageHeader.svelte +1 -1
  245. package/package/components/ParentWorkspaceProtectionAlert.svelte +48 -0
  246. package/package/components/ParentWorkspaceProtectionAlert.svelte.d.ts +7 -0
  247. package/package/components/Path.svelte +41 -29
  248. package/package/components/Path.svelte.d.ts +4 -1
  249. package/package/components/PocketIdSetting.svelte +83 -0
  250. package/package/components/PocketIdSetting.svelte.d.ts +6 -0
  251. package/package/components/ResourceEditor.svelte +13 -7
  252. package/package/components/ResourcePicker.svelte +6 -5
  253. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  254. package/package/components/RightClickPopover.svelte +37 -0
  255. package/package/components/RightClickPopover.svelte.d.ts +11 -0
  256. package/package/components/RunButton.svelte +5 -15
  257. package/package/components/RunButton.svelte.d.ts +7 -19
  258. package/package/components/RunChart.svelte +9 -24
  259. package/package/components/RunChart.svelte.d.ts +2 -5
  260. package/package/components/RunForm.svelte +9 -17
  261. package/package/components/RunForm.svelte.d.ts +0 -1
  262. package/package/components/RunFormAdvancedPopup.svelte +1 -1
  263. package/package/components/RunsPage.svelte +489 -926
  264. package/package/components/RunsPage.svelte.d.ts +5 -5
  265. package/package/components/S3FilePicker.svelte +7 -11
  266. package/package/components/S3FilePickerInner.svelte +2 -3
  267. package/package/components/S3FilePickerInner.svelte.d.ts +2 -2
  268. package/package/components/SaveButton.svelte +78 -0
  269. package/package/components/SaveButton.svelte.d.ts +12 -0
  270. package/package/components/SaveInputsButton.svelte +1 -1
  271. package/package/components/SavedInputsPicker.svelte +1 -1
  272. package/package/components/SavedInputsV2.svelte +36 -39
  273. package/package/components/SchemaForm.svelte +26 -19
  274. package/package/components/SchemaFormWithArgPicker.svelte +34 -29
  275. package/package/components/SchemaFormWithArgPicker.svelte.d.ts +12 -21
  276. package/package/components/SchemaViewer.svelte +56 -53
  277. package/package/components/ScriptBuilder.svelte +13 -13
  278. package/package/components/ScriptEditor.svelte +574 -98
  279. package/package/components/Section.svelte +5 -3
  280. package/package/components/ServiceLogsInner.svelte +21 -82
  281. package/package/components/ShareModal.svelte.d.ts +1 -1
  282. package/package/components/SimpleEditor.svelte +46 -2
  283. package/package/components/Star.svelte +13 -31
  284. package/package/components/Star.svelte.d.ts +8 -21
  285. package/package/components/StringTypeNarrowing.svelte +1 -0
  286. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
  287. package/package/components/SummaryPathDisplay.svelte +177 -0
  288. package/package/components/SummaryPathDisplay.svelte.d.ts +10 -0
  289. package/package/components/SuperadminSettings.svelte +185 -4
  290. package/package/components/SuperadminSettings.svelte.d.ts +4 -1
  291. package/package/components/SuperadminSettingsInner.svelte +307 -192
  292. package/package/components/SuperadminSettingsInner.svelte.d.ts +12 -1
  293. package/package/components/TaggedTextInput.svelte +449 -0
  294. package/package/components/TaggedTextInput.svelte.d.ts +28 -0
  295. package/package/components/TemplateEditor.svelte +54 -29
  296. package/package/components/TemplateEditor.svelte.d.ts +13 -102
  297. package/package/components/TimeAgo.svelte +49 -7
  298. package/package/components/TimeAgo.svelte.d.ts +1 -0
  299. package/package/components/Toast.svelte +72 -50
  300. package/package/components/Toast.svelte.d.ts +2 -2
  301. package/package/components/Tooltip.svelte +2 -2
  302. package/package/components/Tooltip.svelte.d.ts +2 -0
  303. package/package/components/TooltipInner.svelte +6 -1
  304. package/package/components/TooltipInner.svelte.d.ts +1 -0
  305. package/package/components/Uptodate.svelte +3 -2
  306. package/package/components/UserSettings.svelte +3 -3
  307. package/package/components/UserSettings.svelte.d.ts +1 -0
  308. package/package/components/WorkerGroup.svelte +353 -210
  309. package/package/components/WorkerGroup.svelte.d.ts +3 -0
  310. package/package/components/WorkerTagPicker.svelte +1 -1
  311. package/package/components/WorkerTagSelect.svelte +5 -2
  312. package/package/components/WorkspaceDependenciesEditor.svelte +33 -17
  313. package/package/components/WorkspaceTutorials.svelte +5 -0
  314. package/package/components/ZitadelSetting.svelte +3 -2
  315. package/package/components/aiProviderStorage.d.ts +5 -0
  316. package/package/components/aiProviderStorage.js +50 -0
  317. package/package/components/apps/components/buttons/AppButton.svelte +21 -6
  318. package/package/components/apps/components/buttons/AppForm.svelte +2 -1
  319. package/package/components/apps/components/buttons/AppFormButton.svelte +2 -1
  320. package/package/components/apps/components/display/InsertRowDrawerButton.svelte +1 -1
  321. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +24 -16
  322. package/package/components/apps/components/display/dbtable/dbFeatures.d.ts +9 -0
  323. package/package/components/apps/components/display/dbtable/dbFeatures.js +32 -0
  324. package/package/components/apps/components/display/dbtable/metadata.d.ts +4 -3
  325. package/package/components/apps/components/display/dbtable/metadata.js +178 -148
  326. package/package/components/apps/components/display/dbtable/queries/alterTable.d.ts +46 -0
  327. package/package/components/apps/components/display/dbtable/queries/alterTable.js +322 -0
  328. package/package/components/apps/components/display/dbtable/queries/alterTable.test.d.ts +1 -0
  329. package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +867 -0
  330. package/package/components/apps/components/display/dbtable/queries/count.js +3 -1
  331. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +2 -24
  332. package/package/components/apps/components/display/dbtable/queries/createTable.js +13 -25
  333. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.d.ts +9 -0
  334. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.js +45 -0
  335. package/package/components/apps/components/display/dbtable/queries/delete.js +3 -1
  336. package/package/components/apps/components/display/dbtable/queries/insert.js +3 -1
  337. package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +45 -0
  338. package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +401 -0
  339. package/package/components/apps/components/display/dbtable/queries/select.d.ts +2 -0
  340. package/package/components/apps/components/display/dbtable/queries/select.js +52 -7
  341. package/package/components/apps/components/display/dbtable/queries/update.js +3 -1
  342. package/package/components/apps/components/display/dbtable/tableEditor.d.ts +35 -0
  343. package/package/components/apps/components/display/dbtable/tableEditor.js +67 -0
  344. package/package/components/apps/components/display/dbtable/utils.d.ts +2 -0
  345. package/package/components/apps/components/display/dbtable/utils.js +61 -36
  346. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +6 -0
  347. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
  348. package/package/components/apps/components/display/table/AppAggridTable.svelte +15 -0
  349. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +16 -10
  350. package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +2 -1
  351. package/package/components/apps/components/display/table/theme/windmill-theme.css +8 -7
  352. package/package/components/apps/components/helpers/HiddenComponent.svelte +1 -1
  353. package/package/components/apps/components/helpers/InputValue.svelte +1 -1
  354. package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
  355. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -2
  356. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
  357. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
  358. package/package/components/apps/components/helpers/eval.js +5 -2
  359. package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +2 -4
  360. package/package/components/apps/components/layout/AppModal.svelte +2 -1
  361. package/package/components/apps/components/layout/AppModal.svelte.d.ts +1 -0
  362. package/package/components/apps/editor/AppEditorHeader.svelte +8 -1
  363. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +32 -29
  364. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -2
  365. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +4 -4
  366. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +3 -3
  367. package/package/components/apps/editor/PublicApp.svelte +49 -30
  368. package/package/components/apps/editor/PublicApp.svelte.d.ts +1 -0
  369. package/package/components/apps/editor/appPolicy.js +5 -4
  370. package/package/components/apps/editor/appUtils.d.ts +1 -1
  371. package/package/components/apps/editor/component/components.d.ts +11 -0
  372. package/package/components/apps/editor/component/components.js +19 -2
  373. package/package/components/apps/editor/componentsPanel/CssProperty.svelte +3 -1
  374. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -1
  375. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +77 -7
  376. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +2 -2
  377. package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -2
  378. package/package/components/apps/editor/inlineScriptsPanel/utils.js +10 -1
  379. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +1 -1
  380. package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +1 -1
  381. package/package/components/apps/editor/settingsPanel/StylePanel.svelte +66 -29
  382. package/package/components/apps/editor/settingsPanel/StylePanel.svelte.d.ts +2 -17
  383. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +10 -0
  384. package/package/components/apps/inputType.d.ts +8 -3
  385. package/package/components/assets/AssetButtons.svelte +3 -7
  386. package/package/components/assets/AssetButtons.svelte.d.ts +2 -4
  387. package/package/components/assets/AssetColumnBadges.svelte +35 -0
  388. package/package/components/assets/AssetColumnBadges.svelte.d.ts +10 -0
  389. package/package/components/assets/AssetsDropdownButton.svelte +9 -7
  390. package/package/components/assets/AssetsUsageDrawer.svelte +100 -27
  391. package/package/components/assets/AssetsUsageDrawer.svelte.d.ts +5 -6
  392. package/package/components/assets/JobAssetsViewer.svelte +4 -6
  393. package/package/components/assets/assetsFilter.d.ts +50 -0
  394. package/package/components/assets/assetsFilter.js +43 -0
  395. package/package/components/assets/lib.d.ts +6 -4
  396. package/package/components/assets/lib.js +11 -2
  397. package/package/components/auditLogs/AuditLogsFilters.svelte +39 -18
  398. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  399. package/package/components/common/CloseButton.svelte +2 -1
  400. package/package/components/common/CloseButton.svelte.d.ts +1 -0
  401. package/package/components/common/InlineCalendarInput.svelte +580 -0
  402. package/package/components/common/InlineCalendarInput.svelte.d.ts +31 -0
  403. package/package/components/common/alert/Alert.svelte +2 -8
  404. package/package/components/common/alert/model.d.ts +1 -0
  405. package/package/components/common/alert/model.js +7 -0
  406. package/package/components/common/badge/Badge.svelte +7 -3
  407. package/package/components/common/badge/Badge.svelte.d.ts +1 -0
  408. package/package/components/common/badge/CountBadge.svelte +4 -3
  409. package/package/components/common/badge/CountBadge.svelte.d.ts +1 -0
  410. package/package/components/common/breadcrumb/Breadcrumb.svelte +10 -14
  411. package/package/components/common/breadcrumb/Breadcrumb.svelte.d.ts +8 -23
  412. package/package/components/common/button/Button.svelte +1 -1
  413. package/package/components/common/button/model.js +1 -1
  414. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -1
  415. package/package/components/common/confirmationModal/ConfirmationModal.svelte +2 -1
  416. package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +1 -0
  417. package/package/components/common/drawer/Drawer.svelte +4 -1
  418. package/package/components/common/drawer/DrawerContent.svelte +7 -4
  419. package/package/components/common/drawer/DrawerContent.svelte.d.ts +1 -0
  420. package/package/components/common/languageIcons/TypeScript.svelte +5 -3
  421. package/package/components/common/languageIcons/TypeScript.svelte.d.ts +1 -0
  422. package/package/components/common/modal/Modal.svelte +3 -3
  423. package/package/components/common/modal/Modal2.svelte +1 -0
  424. package/package/components/common/seconds/SecondsInput.svelte +158 -67
  425. package/package/components/common/seconds/SecondsInput.svelte.d.ts +9 -21
  426. package/package/components/common/sidebar/SidebarNavigation.svelte +50 -0
  427. package/package/components/common/sidebar/SidebarNavigation.svelte.d.ts +25 -0
  428. package/package/components/common/table/AppRow.svelte +7 -7
  429. package/package/components/common/table/AppRow.svelte.d.ts +2 -2
  430. package/package/components/common/table/FlowRow.svelte +12 -12
  431. package/package/components/common/table/FlowRow.svelte.d.ts +2 -2
  432. package/package/components/common/table/RawAppRow.svelte +5 -79
  433. package/package/components/common/table/RawAppRow.svelte.d.ts +2 -23
  434. package/package/components/common/table/Row.svelte +11 -21
  435. package/package/components/common/table/Row.svelte.d.ts +3 -21
  436. package/package/components/common/table/RowIcon.svelte +6 -2
  437. package/package/components/common/table/RowIcon.svelte.d.ts +1 -1
  438. package/package/components/common/table/ScriptRow.svelte +8 -8
  439. package/package/components/common/table/ScriptRow.svelte.d.ts +2 -2
  440. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
  441. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -1
  442. package/package/components/copilot/TestAIKey.svelte +1 -1
  443. package/package/components/copilot/autocomplete/Autocompletor.d.ts +1 -1
  444. package/package/components/copilot/autocomplete/Autocompletor.js +7 -6
  445. package/package/components/copilot/autocomplete/request.js +13 -9
  446. package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -1
  447. package/package/components/copilot/chat/AIButtonStyle.js +2 -1
  448. package/package/components/copilot/chat/AIChat.svelte +3 -1
  449. package/package/components/copilot/chat/AIChatDisplay.svelte +89 -4
  450. package/package/components/copilot/chat/AIChatInput.svelte +291 -5
  451. package/package/components/copilot/chat/AIChatManager.svelte.js +122 -18
  452. package/package/components/copilot/chat/AiChatLayout.svelte +15 -30
  453. package/package/components/copilot/chat/AppAvailableContextList.svelte +263 -0
  454. package/package/components/copilot/chat/AppAvailableContextList.svelte.d.ts +13 -0
  455. package/package/components/copilot/chat/AvailableContextList.svelte +215 -12
  456. package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +1 -0
  457. package/package/components/copilot/chat/ContextElementBadge.svelte +44 -0
  458. package/package/components/copilot/chat/ContextTextarea.svelte +15 -2
  459. package/package/components/copilot/chat/DatatableCreationPolicy.svelte +32 -33
  460. package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
  461. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +3 -0
  462. package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +1 -1
  463. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +4 -0
  464. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +4 -2
  465. package/package/components/copilot/chat/app/core.d.ts +56 -15
  466. package/package/components/copilot/chat/app/core.js +148 -108
  467. package/package/components/copilot/chat/context.js +9 -2
  468. package/package/components/copilot/chat/flow/FlowAIChat.svelte +22 -0
  469. package/package/components/copilot/chat/flow/core.d.ts +3 -1
  470. package/package/components/copilot/chat/flow/core.js +221 -62
  471. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  472. package/package/components/copilot/chat/flow/openFlowZod.d.ts +3 -2
  473. package/package/components/copilot/chat/flow/openFlowZod.js +16 -6
  474. package/package/components/copilot/chat/navigator/core.d.ts +2 -2
  475. package/package/components/copilot/chat/navigator/core.js +11 -2
  476. package/package/components/copilot/chat/script/core.d.ts +4 -1
  477. package/package/components/copilot/chat/script/core.js +46 -6
  478. package/package/components/copilot/chat/shared.d.ts +63 -1
  479. package/package/components/copilot/chat/shared.js +251 -1
  480. package/package/components/copilot/lib.d.ts +1 -1
  481. package/package/components/copilot/lib.js +44 -9
  482. package/package/components/copilot/utils.d.ts +5 -0
  483. package/package/components/copilot/utils.js +8 -0
  484. package/package/components/custom_ui.d.ts +2 -0
  485. package/package/components/dbOps.d.ts +18 -4
  486. package/package/components/dbOps.js +25 -3
  487. package/package/components/debug/DebugConsole.svelte +277 -0
  488. package/package/components/debug/DebugConsole.svelte.d.ts +13 -0
  489. package/package/components/debug/DebugPanel.svelte +97 -0
  490. package/package/components/debug/DebugPanel.svelte.d.ts +11 -0
  491. package/package/components/debug/DebugToolbar.svelte +148 -0
  492. package/package/components/debug/DebugToolbar.svelte.d.ts +17 -0
  493. package/package/components/debug/DebugVariableViewer.svelte +115 -0
  494. package/package/components/debug/DebugVariableViewer.svelte.d.ts +11 -0
  495. package/package/components/debug/MonacoDebugger.svelte +384 -0
  496. package/package/components/debug/MonacoDebugger.svelte.d.ts +15 -0
  497. package/package/components/debug/dapClient.d.ts +192 -0
  498. package/package/components/debug/dapClient.js +426 -0
  499. package/package/components/debug/debugUtils.d.ts +30 -0
  500. package/package/components/debug/debugUtils.js +131 -0
  501. package/package/components/debug/index.d.ts +75 -0
  502. package/package/components/debug/index.js +82 -0
  503. package/package/components/dedicated_worker.d.ts +7 -0
  504. package/package/components/dedicated_worker.js +36 -0
  505. package/package/components/details/DetailPageHeader.svelte +11 -12
  506. package/package/components/details/DetailPageHeader.svelte.d.ts +3 -1
  507. package/package/components/details/DetailPageLayout.svelte +11 -2
  508. package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
  509. package/package/components/details/createAppFromScript.d.ts +136 -16
  510. package/package/components/details/createAppFromScript.js +13 -12
  511. package/package/components/diffEditorTypes.d.ts +6 -0
  512. package/package/components/diffEditorTypes.js +1 -0
  513. package/package/components/flows/CreateActionsApp.svelte +32 -80
  514. package/package/components/flows/CreateActionsFlow.svelte +28 -28
  515. package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
  516. package/package/components/flows/FlowAssetsHandler.svelte +1 -4
  517. package/package/components/flows/FlowHistoryInner.svelte +15 -4
  518. package/package/components/flows/FlowProgressBar.svelte +37 -1
  519. package/package/components/flows/FlowProgressBar.svelte.d.ts +3 -0
  520. package/package/components/flows/agentToolUtils.d.ts +18 -0
  521. package/package/components/flows/agentToolUtils.js +47 -0
  522. package/package/components/flows/common/FlowCardHeader.svelte +8 -9
  523. package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
  524. package/package/components/flows/content/FlowEditorDrawer.svelte +124 -0
  525. package/package/components/{schema/SchemaPicker.svelte.d.ts → flows/content/FlowEditorDrawer.svelte.d.ts} +8 -13
  526. package/package/components/flows/content/FlowEnvironmentVariables.svelte +3 -2
  527. package/package/components/flows/content/FlowInput.svelte +211 -37
  528. package/package/components/flows/content/FlowLoop.svelte +3 -4
  529. package/package/components/flows/content/FlowModuleCache.svelte +1 -3
  530. package/package/components/flows/content/FlowModuleComponent.svelte +571 -69
  531. package/package/components/flows/content/FlowModuleEarlyStop.svelte +8 -10
  532. package/package/components/flows/content/FlowModuleHeader.svelte +7 -4
  533. package/package/components/flows/content/FlowModuleSleep.svelte +1 -1
  534. package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +1 -1
  535. package/package/components/flows/content/FlowResult.svelte +77 -25
  536. package/package/components/flows/content/FlowRetries.svelte +1 -1
  537. package/package/components/flows/content/FlowSettings.svelte +4 -7
  538. package/package/components/flows/content/McpOAuthConnect.svelte +217 -0
  539. package/package/components/flows/content/McpOAuthConnect.svelte.d.ts +7 -0
  540. package/package/components/flows/content/McpToolEditor.svelte +50 -37
  541. package/package/components/flows/content/McpToolEditor.svelte.d.ts +0 -1
  542. package/package/components/flows/conversations/FlowChat.svelte +16 -2
  543. package/package/components/flows/conversations/FlowChat.svelte.d.ts +2 -1
  544. package/package/components/flows/conversations/FlowChatInterface.svelte +103 -6
  545. package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +2 -0
  546. package/package/components/flows/conversations/FlowChatManager.svelte.js +53 -21
  547. package/package/components/flows/conversations/FlowConversationsSidebar.svelte +79 -77
  548. package/package/components/flows/flowState.js +6 -0
  549. package/package/components/flows/flowStateUtils.svelte.js +4 -1
  550. package/package/components/flows/flowStore.svelte.d.ts +1 -1
  551. package/package/components/flows/flowStore.svelte.js +4 -2
  552. package/package/components/flows/header/FlowImportExportMenu.svelte +1 -1
  553. package/package/components/flows/header/FlowPreviewButtons.svelte +2 -1
  554. package/package/components/flows/header/FlowYamlEditor.svelte +2 -2
  555. package/package/components/flows/map/FlowModuleSchemaMap.svelte +12 -6
  556. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +2 -2
  557. package/package/components/flows/map/InsertModuleInner.svelte +7 -0
  558. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +1 -0
  559. package/package/components/flows/missingInputWarnings.js +7 -0
  560. package/package/components/flows/pickers/PickHubScriptQuick.svelte +4 -4
  561. package/package/components/flows/propPicker/OutputPicker.svelte +1 -1
  562. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
  563. package/package/components/flows/propPicker/PropPickerWrapper.svelte +9 -10
  564. package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +3 -3
  565. package/package/components/flows/scheduleUtils.js +2 -2
  566. package/package/components/flows/types.d.ts +3 -3
  567. package/package/components/flows/utils.svelte.js +5 -1
  568. package/package/components/git_sync/GitSyncRepositoryCard.svelte +33 -23
  569. package/package/components/git_sync/GitSyncSection.svelte +24 -27
  570. package/package/components/graph/FlowGraphV2.svelte +8 -2
  571. package/package/components/graph/graphBuilder.svelte.d.ts +3 -1
  572. package/package/components/graph/model.d.ts +1 -1
  573. package/package/components/graph/renderers/nodes/AIToolNode.svelte +3 -1
  574. package/package/components/graph/renderers/nodes/AssetNode.svelte +25 -13
  575. package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
  576. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +8 -0
  577. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +44 -24
  578. package/package/components/home/Item.svelte +9 -15
  579. package/package/components/home/Item.svelte.d.ts +8 -7
  580. package/package/components/home/ItemsList.svelte +11 -16
  581. package/package/components/home/ItemsList.svelte.d.ts +1 -0
  582. package/package/components/home/TutorialBanner.svelte +34 -18
  583. package/package/components/home/treeViewUtils.js +1 -1
  584. package/package/components/icons/CssIcon.svelte +20 -0
  585. package/package/components/icons/CssIcon.svelte.d.ts +7 -25
  586. package/package/components/icons/GoogleCalendarIcon.svelte +41 -0
  587. package/package/components/icons/GoogleCalendarIcon.svelte.d.ts +7 -0
  588. package/package/components/icons/GoogleDriveIcon.svelte +30 -0
  589. package/package/components/icons/GoogleDriveIcon.svelte.d.ts +7 -0
  590. package/package/components/icons/GoogleIcon.svelte +15 -6
  591. package/package/components/icons/GoogleIcon.svelte.d.ts +5 -2
  592. package/package/components/icons/HtmlIcon.svelte +20 -0
  593. package/package/components/icons/HtmlIcon.svelte.d.ts +8 -0
  594. package/package/components/icons/JavaScriptIcon.svelte +10 -2
  595. package/package/components/icons/JavaScriptIcon.svelte.d.ts +1 -0
  596. package/package/components/icons/JsonIcon.svelte +8 -2
  597. package/package/components/icons/JsonIcon.svelte.d.ts +1 -0
  598. package/package/components/icons/LessIcon.svelte +16 -0
  599. package/package/components/icons/LessIcon.svelte.d.ts +8 -0
  600. package/package/components/icons/MSSqlServerIcon.svelte +111 -47
  601. package/package/components/icons/MarkdownIcon.svelte +20 -0
  602. package/package/components/icons/MarkdownIcon.svelte.d.ts +8 -0
  603. package/package/components/icons/NextcloudIcon.svelte +3 -2
  604. package/package/components/icons/NextcloudIcon.svelte.d.ts +2 -0
  605. package/package/components/icons/PocketIdIcon.svelte +9 -0
  606. package/package/components/icons/PocketIdIcon.svelte.d.ts +9 -0
  607. package/package/components/icons/ReactIcon.svelte +10 -2
  608. package/package/components/icons/ReactIcon.svelte.d.ts +1 -0
  609. package/package/components/icons/SassIcon.svelte +28 -0
  610. package/package/components/icons/SassIcon.svelte.d.ts +8 -0
  611. package/package/components/icons/SvelteIcon.svelte +10 -2
  612. package/package/components/icons/SvelteIcon.svelte.d.ts +1 -0
  613. package/package/components/icons/VueIcon.svelte +10 -2
  614. package/package/components/icons/VueIcon.svelte.d.ts +1 -0
  615. package/package/components/icons/YamlIcon.svelte +20 -0
  616. package/package/components/icons/YamlIcon.svelte.d.ts +8 -0
  617. package/package/components/icons/index.js +3 -1
  618. package/package/components/instanceSettings/IndexerJobIndexSettings.svelte +94 -0
  619. package/package/components/instanceSettings/IndexerJobIndexSettings.svelte.d.ts +9 -0
  620. package/package/components/instanceSettings/IndexerLogIndexSettings.svelte +67 -0
  621. package/package/components/instanceSettings/IndexerLogIndexSettings.svelte.d.ts +9 -0
  622. package/package/components/instanceSettings/IndexerMemorySettings.svelte +109 -0
  623. package/package/components/instanceSettings/IndexerMemorySettings.svelte.d.ts +9 -0
  624. package/package/components/instanceSettings/SecretBackendConfig.svelte +513 -0
  625. package/package/components/instanceSettings/SecretBackendConfig.svelte.d.ts +8 -0
  626. package/package/components/instanceSettings/SettingCard.svelte +47 -0
  627. package/package/components/instanceSettings/SettingCard.svelte.d.ts +19 -0
  628. package/package/components/instanceSettings/SettingsSearchInput.svelte +66 -0
  629. package/package/components/instanceSettings/SettingsSearchInput.svelte.d.ts +9 -0
  630. package/package/components/instanceSettings.d.ts +54 -1
  631. package/package/components/instanceSettings.js +444 -68
  632. package/package/components/jobs/JobPreview.svelte +46 -39
  633. package/package/components/jobs/JobPreview.svelte.d.ts +1 -0
  634. package/package/components/meltComponents/MenuItem.svelte +1 -0
  635. package/package/components/meltComponents/Popover.svelte +10 -1
  636. package/package/components/meltComponents/Popover.svelte.d.ts +2 -0
  637. package/package/components/meltComponents/Tooltip.svelte +2 -1
  638. package/package/components/meltComponents/Tooltip.svelte.d.ts +1 -0
  639. package/package/components/monacoLanguagesOptions.js +16 -15
  640. package/package/components/moveRenameManager.d.ts +21 -0
  641. package/package/components/moveRenameManager.js +61 -0
  642. package/package/components/progressBar/ProgressBar.svelte +69 -27
  643. package/package/components/progressBar/ProgressBar.svelte.d.ts +7 -0
  644. package/package/components/prop_picker.d.ts +0 -3
  645. package/package/components/propertyPicker/PropPicker.svelte +47 -48
  646. package/package/components/propertyPicker/PropPicker.svelte.d.ts +12 -9
  647. package/package/components/raw_apps/DefaultDatabaseSelector.svelte +9 -5
  648. package/package/components/raw_apps/FileEditorIcon.svelte +12 -7
  649. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +2 -0
  650. package/package/components/raw_apps/FileTreeNode.svelte +120 -83
  651. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +91 -10
  652. package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -3
  653. package/package/components/raw_apps/RawAppDataTableList.svelte +12 -9
  654. package/package/components/raw_apps/RawAppEditor.svelte +237 -83
  655. package/package/components/raw_apps/RawAppEditor.svelte.d.ts +4 -4
  656. package/package/components/raw_apps/RawAppEditorHeader.svelte +105 -22
  657. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +1 -1
  658. package/package/components/raw_apps/RawAppHistoryList.svelte +264 -80
  659. package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +1 -0
  660. package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +15 -1
  661. package/package/components/raw_apps/RawAppHistoryManager.svelte.js +46 -12
  662. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +549 -47
  663. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +32 -7
  664. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +66 -19
  665. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -0
  666. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +141 -10
  667. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +8 -0
  668. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +2 -1
  669. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +9 -2
  670. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +47 -3
  671. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +2 -2
  672. package/package/components/raw_apps/RawAppModules.svelte +13 -7
  673. package/package/components/raw_apps/RawAppPreview.svelte +48 -6
  674. package/package/components/raw_apps/RawAppSidebar.svelte +52 -235
  675. package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +2 -1
  676. package/package/components/raw_apps/RunnableRow.svelte +95 -0
  677. package/package/components/raw_apps/RunnableRow.svelte.d.ts +15 -0
  678. package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
  679. package/package/components/raw_apps/utils.d.ts +1 -1
  680. package/package/components/raw_apps/utils.js +76 -18
  681. package/package/components/resources/resourcesFilter.d.ts +70 -0
  682. package/package/components/resources/resourcesFilter.js +61 -0
  683. package/package/components/runs/BatchReRunOptionsPane.svelte +130 -121
  684. package/package/components/runs/BatchReRunOptionsPane.svelte.d.ts +3 -2
  685. package/package/components/runs/FlowExecutionStatus.svelte +30 -0
  686. package/package/components/runs/FlowExecutionStatus.svelte.d.ts +15 -0
  687. package/package/components/runs/JobDetailFieldConfig.d.ts +47 -0
  688. package/package/components/runs/JobDetailFieldConfig.js +433 -0
  689. package/package/components/runs/JobDetailHeader.svelte +551 -0
  690. package/package/components/runs/JobDetailHeader.svelte.d.ts +17 -0
  691. package/package/components/runs/JobRunsPreview.svelte +174 -218
  692. package/package/components/runs/JobRunsPreview.svelte.d.ts +0 -1
  693. package/package/components/runs/JobStatusIcon.svelte +47 -0
  694. package/package/components/runs/JobStatusIcon.svelte.d.ts +9 -0
  695. package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -1
  696. package/package/components/runs/RunBadges.svelte +39 -34
  697. package/package/components/runs/RunBadges.svelte.d.ts +2 -1
  698. package/package/components/runs/RunRow.svelte +24 -64
  699. package/package/components/runs/RunRow.svelte.d.ts +1 -2
  700. package/package/components/runs/RunsQueue.svelte.d.ts +1 -1
  701. package/package/components/runs/RunsTable.svelte +312 -131
  702. package/package/components/runs/RunsTable.svelte.d.ts +4 -3
  703. package/package/components/runs/TimeframeSelect.svelte +189 -0
  704. package/package/components/runs/TimeframeSelect.svelte.d.ts +44 -0
  705. package/package/components/runs/runsFilter.d.ts +201 -0
  706. package/package/components/runs/runsFilter.js +182 -0
  707. package/package/components/runs/useJobsLoader.svelte.d.ts +32 -0
  708. package/package/components/runs/useJobsLoader.svelte.js +504 -0
  709. package/package/components/schedules/schedulesFilter.d.ts +65 -0
  710. package/package/components/schedules/schedulesFilter.js +60 -0
  711. package/package/components/schema/EditableSchemaWrapper.svelte +45 -24
  712. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +1 -1
  713. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  714. package/package/components/schema/PropertyEditor.svelte +1 -0
  715. package/package/components/schema/RunningJobSchemaPicker.svelte +1 -1
  716. package/package/components/schema/editable_schema_wrapper.d.ts +1 -0
  717. package/package/components/scriptEditor/LogPanel.svelte +17 -2
  718. package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
  719. package/package/components/scripts/CreateActionsScript.svelte +0 -1
  720. package/package/components/search/GlobalSearchModal.svelte +1 -8
  721. package/package/components/select/GenericDropdown.svelte +113 -0
  722. package/package/components/select/GenericDropdown.svelte.d.ts +37 -0
  723. package/package/components/select/MultiSelect.svelte +1 -1
  724. package/package/components/select/Select.svelte +17 -4
  725. package/package/components/select/Select.svelte.d.ts +2 -1
  726. package/package/components/select/SelectDropdown.svelte +76 -143
  727. package/package/components/select/SelectDropdown.svelte.d.ts +4 -1
  728. package/package/components/settings/AIPromptsModal.svelte +88 -0
  729. package/package/components/settings/AIPromptsModal.svelte.d.ts +11 -0
  730. package/package/components/settings/ChangeWorkspaceColor.svelte +11 -11
  731. package/package/components/settings/ChangeWorkspaceId.svelte +20 -17
  732. package/package/components/settings/ChangeWorkspaceName.svelte +13 -14
  733. package/package/components/settings/CreateToken.svelte +4 -4
  734. package/package/components/settings/PremiumInfo.svelte +268 -128
  735. package/package/components/settings/SettingsPageHeader.svelte +22 -0
  736. package/package/components/settings/SettingsPageHeader.svelte.d.ts +10 -0
  737. package/package/components/settings/UserAIPromptsSettings.svelte +56 -15
  738. package/package/components/settings/WorkspaceOperatorSettings.svelte +68 -85
  739. package/package/components/settings/WorkspaceUserSettings.svelte +543 -427
  740. package/package/components/sidebar/CriticalAlertModalInner.svelte +28 -22
  741. package/package/components/sidebar/CriticalAlertModalInner.svelte.d.ts +5 -20
  742. package/package/components/sidebar/DarkModeToggle.svelte +2 -2
  743. package/package/components/sidebar/FavoriteMenu.svelte +101 -20
  744. package/package/components/sidebar/FavoriteMenu.svelte.d.ts +29 -1
  745. package/package/components/sidebar/MenuButton.svelte +60 -27
  746. package/package/components/sidebar/MenuButton.svelte.d.ts +4 -0
  747. package/package/components/sidebar/MenuLink.svelte +4 -3
  748. package/package/components/sidebar/MultiplayerMenu.svelte +4 -4
  749. package/package/components/sidebar/OperatorMenu.svelte +66 -89
  750. package/package/components/sidebar/OperatorMenu.svelte.d.ts +6 -1
  751. package/package/components/sidebar/SidebarContent.svelte +42 -9
  752. package/package/components/sidebar/UserMenu.svelte +3 -3
  753. package/package/components/sidebar/WorkspaceMenu.svelte +37 -86
  754. package/package/components/sqlTypeService.js +4 -3
  755. package/package/components/table/AutoDataTable.svelte +2 -2
  756. package/package/components/table/DataTable.svelte +8 -3
  757. package/package/components/table/DataTable.svelte.d.ts +2 -0
  758. package/package/components/text_input/TextInput.svelte +3 -0
  759. package/package/components/text_input/TextInput.svelte.d.ts +2 -0
  760. package/package/components/toast.js +1 -2
  761. package/package/components/triggers/AddTriggersButton.svelte +28 -4
  762. package/package/components/triggers/TriggerFilters.svelte +71 -0
  763. package/package/components/triggers/TriggerFilters.svelte.d.ts +10 -0
  764. package/package/components/triggers/TriggersEditor.svelte +34 -10
  765. package/package/components/triggers/TriggersWrapper.svelte +24 -0
  766. package/package/components/triggers/http/RouteEditorInner.svelte +1 -1
  767. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +7 -0
  768. package/package/components/triggers/kafka/utils.js +1 -0
  769. package/package/components/triggers/native/NativeTriggerEditor.svelte +384 -0
  770. package/package/components/triggers/native/NativeTriggerEditor.svelte.d.ts +26 -0
  771. package/package/components/triggers/native/NativeTriggerTable.svelte +171 -0
  772. package/package/components/triggers/native/NativeTriggerTable.svelte.d.ts +16 -0
  773. package/package/components/triggers/native/NativeTriggersPanel.svelte +40 -0
  774. package/package/components/triggers/native/NativeTriggersPanel.svelte.d.ts +15 -0
  775. package/package/components/triggers/native/services/google/GoogleCalendarPicker.svelte +112 -0
  776. package/package/components/triggers/native/services/google/GoogleCalendarPicker.svelte.d.ts +8 -0
  777. package/package/components/triggers/native/services/google/GoogleDrivePicker.svelte +323 -0
  778. package/package/components/triggers/native/services/google/GoogleDrivePicker.svelte.d.ts +8 -0
  779. package/package/components/triggers/native/services/google/GoogleTriggerForm.svelte +116 -0
  780. package/package/components/triggers/native/services/google/GoogleTriggerForm.svelte.d.ts +12 -0
  781. package/package/components/triggers/native/services/nextcloud/NextcloudTriggerForm.svelte +104 -0
  782. package/package/components/triggers/native/services/nextcloud/NextcloudTriggerForm.svelte.d.ts +18 -0
  783. package/package/components/triggers/native/utils.d.ts +73 -0
  784. package/package/components/triggers/native/utils.js +166 -0
  785. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +3 -3
  786. package/package/components/triggers/triggers.svelte.d.ts +2 -1
  787. package/package/components/triggers/triggers.svelte.js +44 -8
  788. package/package/components/triggers/utils.js +46 -7
  789. package/package/components/triggers/websocket/WebsocketEditorConfigSection.svelte +1 -1
  790. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +3 -81
  791. package/package/components/triggers.d.ts +1 -1
  792. package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +6 -35
  793. package/package/components/tutorials/RunsTutorial.svelte +399 -0
  794. package/package/components/{flows/propPicker/FlowPropPicker.svelte.d.ts → tutorials/RunsTutorial.svelte.d.ts} +11 -8
  795. package/package/components/tutorials/TroubleshootFlowTutorial.svelte +5 -20
  796. package/package/components/tutorials/utils.d.ts +16 -0
  797. package/package/components/tutorials/utils.js +96 -0
  798. package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +133 -0
  799. package/package/components/{SavedInputs.svelte.d.ts → tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte.d.ts} +8 -11
  800. package/package/components/variables/variablesFilter.d.ts +56 -0
  801. package/package/components/variables/variablesFilter.js +51 -0
  802. package/package/components/vscode.js +6 -6
  803. package/package/components/waitJob.d.ts +1 -1
  804. package/package/components/waitJob.js +3 -2
  805. package/package/components/worker_group.d.ts +2 -0
  806. package/package/components/worker_group.js +15 -0
  807. package/package/components/workspace/WorkspaceCard.svelte +184 -0
  808. package/package/components/workspace/WorkspaceCard.svelte.d.ts +24 -0
  809. package/package/components/workspace/WorkspaceIcon.svelte +21 -0
  810. package/package/components/workspace/WorkspaceIcon.svelte.d.ts +9 -0
  811. package/package/components/workspace/WorkspaceTreeView.svelte +331 -0
  812. package/package/components/workspace/WorkspaceTreeView.svelte.d.ts +15 -0
  813. package/package/components/workspaceSettings/AISettings.svelte +149 -116
  814. package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -0
  815. package/package/components/workspaceSettings/CreateWorkspace.svelte +30 -16
  816. package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +1 -0
  817. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +3 -1
  818. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte.d.ts +1 -2
  819. package/package/components/workspaceSettings/DataTableSettings.svelte +29 -17
  820. package/package/components/workspaceSettings/DataTableSettings.svelte.d.ts +1 -0
  821. package/package/components/workspaceSettings/DucklakeSettings.svelte +75 -41
  822. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +3 -1
  823. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +24 -66
  824. package/package/components/workspaceSettings/ModelTokenLimits.svelte +18 -26
  825. package/package/components/workspaceSettings/OAuthClientConfig.svelte +151 -0
  826. package/package/components/workspaceSettings/OAuthClientConfig.svelte.d.ts +21 -0
  827. package/package/components/workspaceSettings/RulesetEditor.svelte +280 -0
  828. package/package/components/workspaceSettings/RulesetEditor.svelte.d.ts +9 -0
  829. package/package/components/workspaceSettings/SettingsFooter.svelte +35 -0
  830. package/package/components/workspaceSettings/SettingsFooter.svelte.d.ts +12 -0
  831. package/package/components/workspaceSettings/StorageSettings.svelte +322 -264
  832. package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +2 -0
  833. package/package/components/workspaceSettings/WorkspaceDependenciesSettings.svelte +66 -27
  834. package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +466 -0
  835. package/package/components/workspaceSettings/WorkspaceIntegrations.svelte.d.ts +3 -0
  836. package/package/components/workspaceSettings/WorkspaceRulesets.svelte +183 -0
  837. package/package/components/workspaceSettings/WorkspaceRulesets.svelte.d.ts +3 -0
  838. package/package/consts.js +4 -3
  839. package/package/editorLangUtils.d.ts +1 -1
  840. package/package/gen/core/OpenAPI.js +1 -1
  841. package/package/gen/schemas.gen.d.ts +1654 -215
  842. package/package/gen/schemas.gen.js +1987 -494
  843. package/package/gen/services.gen.d.ts +511 -59
  844. package/package/gen/services.gen.js +1064 -170
  845. package/package/gen/types.gen.d.ts +3687 -728
  846. package/package/hub.d.ts +1 -0
  847. package/package/hub.js +9 -2
  848. package/package/hubPaths.json +4 -2
  849. package/package/infer.d.ts +2 -0
  850. package/package/infer.js +2 -0
  851. package/package/logout.d.ts +0 -2
  852. package/package/logout.js +2 -23
  853. package/package/logoutKit.d.ts +2 -0
  854. package/package/logoutKit.js +26 -0
  855. package/package/mcpEndpointTools.d.ts +3 -0
  856. package/package/mcpEndpointTools.js +574 -147
  857. package/package/monaco_workers/graphql.worker.bundle.js +121 -121
  858. package/package/navigation.d.ts +1 -1
  859. package/package/rawAppWmillTs.d.ts +11 -0
  860. package/package/rawAppWmillTs.js +42 -4
  861. package/package/refreshUser.d.ts +5 -1
  862. package/package/refreshUser.js +20 -30
  863. package/package/scripts.d.ts +1 -1
  864. package/package/scripts.js +1 -1
  865. package/package/storeUtils.js +10 -0
  866. package/package/stores.d.ts +1 -1
  867. package/package/stores.js +4 -2
  868. package/package/svelte5Utils.svelte.d.ts +108 -1
  869. package/package/svelte5Utils.svelte.js +351 -2
  870. package/package/svelte5UtilsKit.svelte.d.ts +13 -0
  871. package/package/svelte5UtilsKit.svelte.js +106 -0
  872. package/package/system_prompts/prompts.d.ts +5 -5
  873. package/package/system_prompts/prompts.js +94 -21
  874. package/package/toast.d.ts +5 -1
  875. package/package/toast.js +14 -5
  876. package/package/tutorialUtils.js +0 -4
  877. package/package/tutorials/config.js +31 -3
  878. package/package/tutorials/roleUtils.d.ts +1 -1
  879. package/package/tutorials/roleUtils.js +6 -2
  880. package/package/utils.js +376 -8
  881. package/package/utils_deployable.d.ts +25 -25
  882. package/package/utils_deployable.js +2 -1
  883. package/package/validators/workspaceSettings.d.ts +12 -0
  884. package/package/validators/workspaceSettings.js +72 -0
  885. package/package/workspaceProtectionRules.svelte.d.ts +73 -0
  886. package/package/workspaceProtectionRules.svelte.js +176 -0
  887. package/package.json +8 -5
  888. package/package/components/DropdownSelect.svelte +0 -26
  889. package/package/components/DropdownSelect.svelte.d.ts +0 -11
  890. package/package/components/FlowPreviewResult.svelte +0 -88
  891. package/package/components/FlowPreviewResult.svelte.d.ts +0 -20
  892. package/package/components/SavedInputs.svelte +0 -416
  893. package/package/components/copilot/chat/context.d.ts +0 -62
  894. package/package/components/flows/propPicker/FlowPropPicker.svelte +0 -72
  895. package/package/components/runs/JobsLoader.svelte +0 -468
  896. package/package/components/runs/JobsLoader.svelte.d.ts +0 -49
  897. package/package/components/runs/ManuelDatePicker.svelte +0 -96
  898. package/package/components/runs/ManuelDatePicker.svelte.d.ts +0 -35
  899. package/package/components/runs/RunsBatchActionsDropdown.svelte +0 -82
  900. package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +0 -15
  901. package/package/components/runs/RunsFilter.svelte +0 -954
  902. package/package/components/runs/RunsFilter.svelte.d.ts +0 -49
  903. package/package/components/schema/SchemaPicker.svelte +0 -92
@@ -1,320 +1,104 @@
1
- <script module lang="ts">export let DEFAULT_RUNS_PER_PAGE = 1000;
2
- </script>
3
-
4
1
  <script lang="ts">import { JobService, UserService, FolderService, ScriptService, FlowService, OpenAPI } from '../gen';
5
2
  import { sendUserToast } from '../toast';
6
- import { userStore, workspaceStore, userWorkspaces } from '../stores';
7
- import { Button, Drawer, DrawerContent, Skeleton } from './common';
3
+ import { userStore, workspaceStore, userWorkspaces, superadmin } from '../stores';
4
+ import { Button, ButtonType, Drawer, DrawerContent, Skeleton, Tab, Tabs } from './common';
8
5
  import RunChart from './RunChart.svelte';
9
6
  import JobRunsPreview from './runs/JobRunsPreview.svelte';
10
7
  import Tooltip from './Tooltip.svelte';
11
- import CalendarPicker from './common/calendarPicker/CalendarPicker.svelte';
12
8
  import RunsTable from './runs/RunsTable.svelte';
13
9
  import { Pane, Splitpanes } from 'svelte-splitpanes';
14
- import RunsFilter from './runs/RunsFilter.svelte';
10
+ import { allowWildcards, buildRunsFilterSearchbarSchema, buildRunsFilterPresets } from './runs/runsFilter';
15
11
  import Toggle from './Toggle.svelte';
16
12
  import ConfirmationModal from './common/confirmationModal/ConfirmationModal.svelte';
17
13
  import RunsQueue from './runs/RunsQueue.svelte';
18
14
  import { twMerge } from 'tailwind-merge';
19
- import ManuelDatePicker from './runs/ManuelDatePicker.svelte';
20
- import JobsLoader from './runs/JobsLoader.svelte';
21
- import { Calendar, Clock, TriangleAlert } from 'lucide-svelte';
15
+ import { computeJobKinds, useJobsLoader } from './runs/useJobsLoader.svelte';
22
16
  import ConcurrentJobsChart from './ConcurrentJobsChart.svelte';
23
- import { goto } from '$app/navigation';
24
- import { base } from '$app/paths';
25
- import { isJobSelectable } from '../utils';
17
+ import { pluralize } from '../utils';
26
18
  import BatchReRunOptionsPane, {} from './runs/BatchReRunOptionsPane.svelte';
27
19
  import { untrack } from 'svelte';
28
20
  import { page } from '$app/state';
29
- import RunOption from './runs/RunOption.svelte';
30
- import TooltipV2 from './meltComponents/Tooltip.svelte';
31
- import DropdownSelect from './DropdownSelect.svelte';
32
- import RunsBatchActionsDropdown from './runs/RunsBatchActionsDropdown.svelte';
33
- import { createBubbler } from 'svelte/legacy';
34
- import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
35
- import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
36
21
  import Select from './select/Select.svelte';
37
22
  import AnimatedPane from './splitPanes/AnimatedPane.svelte';
38
- let { perPage = $bindable() } = $props();
39
- let jobs = $state();
40
- let selectedIds = $state([]);
41
- let loadingSelectedIds = $state(false);
42
- let selectedWorkspace = $state(undefined);
43
- let batchReRunOptions = $state({ flow: {}, script: {} });
44
- // All Filters
45
- // Filter by
46
- let path = $state(page.params.path ?? null);
47
- let worker = $state(page.url.searchParams.get('worker'));
48
- let user = $state(page.url.searchParams.get('user'));
49
- let folder = $state(page.url.searchParams.get('folder'));
50
- let label = $state(page.url.searchParams.get('label'));
51
- let allowWildcards = $state(page.url.searchParams.get('allow_wildcards') == 'true');
52
- let concurrencyKey = $state(page.url.searchParams.get('concurrency_key'));
53
- let tag = $state(page.url.searchParams.get('tag'));
54
- // Rest of filters handled by RunsFilter
55
- let success = $state((page.url.searchParams.get('success') ?? undefined));
56
- let showSkipped = $state(page.url.searchParams.get('show_skipped') != undefined
57
- ? page.url.searchParams.get('show_skipped') == 'true'
58
- : false);
59
- let showSchedules = $state(page.url.searchParams.get('show_schedules') != undefined
60
- ? page.url.searchParams.get('show_schedules') == 'true'
61
- : localStorage.getItem('show_schedules_in_run') == 'false'
62
- ? false
63
- : true);
64
- let showFutureJobs = $state(page.url.searchParams.get('show_future_jobs') != undefined
65
- ? page.url.searchParams.get('show_future_jobs') == 'true'
66
- : localStorage.getItem('show_future_jobs') == 'false'
67
- ? false
68
- : true);
69
- let argFilter = $state(page.url.searchParams.get('arg')
70
- ? JSON.parse(decodeURIComponent(page.url.searchParams.get('arg') ?? '{}'))
71
- : undefined);
72
- let resultFilter = $state(page.url.searchParams.get('result')
73
- ? JSON.parse(decodeURIComponent(page.url.searchParams.get('result') ?? '{}'))
74
- : undefined);
75
- let jobTriggerKind = $state(page.url.searchParams.get('job_trigger_kind') ?? undefined);
76
- // Handled on the main page
77
- let minTs = $state(page.url.searchParams.get('min_ts') ?? undefined);
78
- let maxTs = $state(page.url.searchParams.get('max_ts') ?? undefined);
79
- let schedulePath = $state(page.url.searchParams.get('schedule_path') ?? undefined);
80
- let jobKindsCat = $state(page.url.searchParams.get('job_kinds') ?? 'runs');
81
- let allWorkspaces = $state(page.url.searchParams.get('all_workspaces') == 'true');
82
- let lastFetchWentToEnd = $state(false);
83
- function loadFromQuery() {
84
- path = page.params.path ?? null;
85
- user = page.url.searchParams.get('user');
86
- folder = page.url.searchParams.get('folder');
87
- label = page.url.searchParams.get('label');
88
- concurrencyKey = page.url.searchParams.get('concurrency_key');
89
- tag = page.url.searchParams.get('tag');
90
- worker = page.url.searchParams.get('worker');
91
- allowWildcards = page.url.searchParams.get('allow_wildcards') == 'true';
92
- // Rest of filters handled by RunsFilter
93
- success = (page.url.searchParams.get('success') ?? undefined);
94
- showSkipped =
95
- page.url.searchParams.get('show_skipped') != undefined
96
- ? page.url.searchParams.get('show_skipped') == 'true'
97
- : false;
98
- showSchedules =
99
- page.url.searchParams.get('show_schedules') != undefined
100
- ? page.url.searchParams.get('show_schedules') == 'true'
101
- : localStorage.getItem('show_schedules_in_run') == 'false'
102
- ? false
103
- : true;
104
- showFutureJobs =
105
- page.url.searchParams.get('show_future_jobs') != undefined
106
- ? page.url.searchParams.get('show_future_jobs') == 'true'
107
- : localStorage.getItem('show_future_jobs') == 'false'
108
- ? false
109
- : true;
110
- argFilter = page.url.searchParams.get('arg')
111
- ? JSON.parse(decodeURIComponent(page.url.searchParams.get('arg') ?? '{}'))
112
- : undefined;
113
- resultFilter = page.url.searchParams.get('result')
114
- ? JSON.parse(decodeURIComponent(page.url.searchParams.get('result') ?? '{}'))
115
- : undefined;
116
- jobTriggerKind = page.url.searchParams.get('job_trigger_kind') ?? undefined;
117
- // Handled on the main page
118
- minTs = page.url.searchParams.get('min_ts') ?? undefined;
119
- maxTs = page.url.searchParams.get('max_ts') ?? undefined;
120
- schedulePath = page.url.searchParams.get('schedule_path') ?? undefined;
121
- perPage = parseInt(page.url.searchParams.get('per_page') ?? DEFAULT_RUNS_PER_PAGE.toString());
122
- jobKindsCat = page.url.searchParams.get('job_kinds') ?? 'runs';
123
- allWorkspaces = page.url.searchParams.get('all_workspaces') == 'true';
124
- }
125
- let queue_count = $state(undefined);
126
- let suspended_count = $state(undefined);
127
- let jobKinds = $state(undefined);
128
- let loading = $state(false);
23
+ import { StaleWhileLoading, useLocalStorageValue } from '../svelte5Utils.svelte';
24
+ import { CircleAlert, CircleCheck, CirclePlay, Hourglass, TriangleAlertIcon } from 'lucide-svelte';
25
+ import DropdownV2 from './DropdownV2.svelte';
26
+ import TimeframeSelect, { buildManualTimeframe, runsTimeframes, useSyncedTimeframe } from './runs/TimeframeSelect.svelte';
27
+ import FilterSearchbar, { useUrlSyncedFilterInstance } from './FilterSearchbar.svelte';
28
+ import { jobTriggerKinds } from './triggers/utils';
29
+ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
30
+ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
31
+ import ToggleButtonMore from './common/toggleButton-v2/ToggleButtonMore.svelte';
129
32
  let paths = $state([]);
130
33
  let usernames = $state([]);
131
34
  let folders = $state([]);
132
- let completedJobs = $state(undefined);
133
- let extendedJobs = $state(undefined);
35
+ let runsFilterSearchbarSchema = $derived(buildRunsFilterSearchbarSchema({
36
+ paths,
37
+ usernames,
38
+ folders,
39
+ jobTriggerKinds,
40
+ isSuperAdmin: !!$superadmin
41
+ }));
42
+ let perPage = useLocalStorageValue('runs_per_page', 1000, 'number');
43
+ let filters = useUrlSyncedFilterInstance(untrack(() => runsFilterSearchbarSchema));
44
+ let { initialPath } = $props();
45
+ let batchRerunOptionsIsOpen = $state(false);
46
+ // Initialize path filter from route param if provided and not already set via query params
47
+ if (initialPath && !filters.val.path) {
48
+ filters.val.path = initialPath;
49
+ }
50
+ let selectedIds = $state([]);
51
+ let selectedWorkspace = $state(undefined);
52
+ let jobKinds = $derived(computeJobKinds(filters.val.job_kinds ?? null));
134
53
  let argError = $state('');
135
54
  let resultError = $state('');
136
- let filterTimeout = undefined;
137
- let selectedManualDate = $state(0);
138
- let autoRefresh = $state(getAutoRefresh());
55
+ let autoRefresh = useLocalStorageValue('auto_refresh_in_runs', true, 'boolean');
139
56
  let runDrawer = $state(undefined);
140
57
  let lookback = $state(1);
141
58
  let askingForConfirmation = $state(undefined);
142
- function getAutoRefresh() {
143
- try {
144
- return localStorage.getItem('auto_refresh_in_runs') != 'false';
145
- }
146
- catch (e) {
147
- console.error('Error getting auto refresh', e);
148
- return true;
149
- }
150
- }
151
- let innerWidth = $state(window.innerWidth);
152
- let jobsLoader = $state(undefined);
153
- let externalJobs = $state(undefined);
59
+ let automaticTimeframeState = useLocalStorageValue('runs_automatic_timeframe', 'null', 'string');
60
+ let _timeframe = useSyncedTimeframe(runsTimeframes, () => ({
61
+ maxTs: filters.val.max_ts?.toISOString(),
62
+ minTs: filters.val.min_ts?.toISOString(),
63
+ timeframe: automaticTimeframeState.val === 'null' ? null : automaticTimeframeState.val
64
+ }), (v) => {
65
+ v.maxTs ? (filters.val.max_ts = new Date(v.maxTs)) : delete filters.val.max_ts;
66
+ v.minTs ? (filters.val.min_ts = new Date(v.minTs)) : delete filters.val.min_ts;
67
+ automaticTimeframeState.val = v.timeframe ?? 'null';
68
+ });
69
+ let timeframe = $derived(_timeframe.val);
70
+ let manualTimeframe = $derived(timeframe.type === 'manual' ? timeframe : undefined);
154
71
  let graph = $state(typeOfChart(page.url.searchParams.get('graph')));
155
- let graphIsRunsChart = $state(untrack(() => graph) === 'RunChart');
156
- let manualDatePicker = $state(undefined);
72
+ let innerWidth = $state(window.innerWidth);
73
+ let jobsLoader = useJobsLoader(() => ({
74
+ filters: filters.val,
75
+ timeframe,
76
+ jobKinds,
77
+ autoRefresh: autoRefresh.val,
78
+ argError,
79
+ resultError,
80
+ perPage: perPage.val,
81
+ lookback: graph === 'RunChart' ? 0 : lookback,
82
+ onSetPerPage: (p) => (perPage.val = p),
83
+ currentWorkspace: $workspaceStore ?? ''
84
+ }));
85
+ let lastFetchWentToEnd = $derived(jobsLoader.lastFetchWentToEnd);
86
+ let queue_count = $derived(jobsLoader.queue_count);
87
+ let suspended_count = $derived(jobsLoader.suspended_count);
88
+ let externalJobs = $derived(jobsLoader.externalJobs);
89
+ let extendedJobs = $derived(jobsLoader.extendedJobs);
90
+ // Avoid flicker, but still show empty if loading takes too long
91
+ let debouncedCompletedJobs = new StaleWhileLoading(() => jobsLoader.completedJobs);
92
+ let debouncedJobs = new StaleWhileLoading(() => jobsLoader.jobs);
93
+ let completedJobs = $derived(jobsLoader.completedJobs ?? debouncedCompletedJobs.current);
94
+ let jobs = $derived(jobsLoader.jobs ?? debouncedJobs.current);
157
95
  let runsTable = $state(undefined);
158
- function setQuery(replaceState) {
159
- let searchParams = new URLSearchParams();
160
- if (user) {
161
- searchParams.set('user', user);
162
- }
163
- else {
164
- searchParams.delete('user');
165
- }
166
- if (worker) {
167
- searchParams.set('worker', worker);
168
- }
169
- else {
170
- searchParams.delete('worker');
171
- }
172
- if (folder) {
173
- searchParams.set('folder', folder);
174
- }
175
- else {
176
- searchParams.delete('folder');
177
- }
178
- if (success !== undefined) {
179
- searchParams.set('success', success.toString());
180
- }
181
- else {
182
- searchParams.delete('success');
183
- }
184
- if (showSkipped) {
185
- searchParams.set('show_skipped', showSkipped.toString());
186
- }
187
- else {
188
- searchParams.delete('show_skipped');
189
- }
190
- if (showSchedules) {
191
- searchParams.set('show_schedules', showSchedules.toString());
192
- }
193
- else {
194
- searchParams.delete('show_schedules');
195
- }
196
- if (showFutureJobs) {
197
- searchParams.set('show_future_jobs', showFutureJobs.toString());
198
- }
199
- else {
200
- searchParams.delete('show_future_jobs');
201
- }
202
- if (allWorkspaces && $workspaceStore == 'admins') {
203
- searchParams.set('all_workspaces', allWorkspaces.toString());
204
- searchParams.set('workspace', 'admins');
205
- }
206
- else {
207
- searchParams.delete('all_workspaces');
208
- }
209
- // ArgFilter is an object. Encode it to a string
210
- if (argFilter) {
211
- searchParams.set('arg', encodeURIComponent(JSON.stringify(argFilter)));
212
- }
213
- else {
214
- searchParams.delete('arg');
215
- }
216
- if (resultFilter) {
217
- searchParams.set('result', encodeURIComponent(JSON.stringify(resultFilter)));
218
- }
219
- else {
220
- searchParams.delete('result');
221
- }
222
- if (jobTriggerKind) {
223
- searchParams.set('job_trigger_kind', jobTriggerKind);
224
- }
225
- else {
226
- searchParams.delete('job_trigger_kind');
227
- }
228
- if (schedulePath) {
229
- searchParams.set('schedule_path', schedulePath);
230
- }
231
- else {
232
- searchParams.delete('schedule_path');
233
- }
234
- if (jobKindsCat != 'runs') {
235
- searchParams.set('job_kinds', jobKindsCat);
236
- }
237
- else {
238
- searchParams.delete('job_kinds');
239
- }
240
- if (minTs) {
241
- searchParams.set('min_ts', minTs);
242
- }
243
- else {
244
- searchParams.delete('min_ts');
245
- }
246
- if (maxTs) {
247
- searchParams.set('max_ts', maxTs);
248
- }
249
- else {
250
- searchParams.delete('max_ts');
251
- }
252
- if (concurrencyKey) {
253
- searchParams.set('concurrency_key', concurrencyKey);
254
- }
255
- else {
256
- searchParams.delete('concurrency_key');
257
- }
258
- if (tag) {
259
- searchParams.set('tag', tag);
260
- }
261
- else {
262
- searchParams.delete('tag');
263
- }
264
- if (label) {
265
- searchParams.set('label', label);
266
- }
267
- else {
268
- searchParams.delete('label');
269
- }
270
- if (allowWildcards) {
271
- searchParams.set('allow_wildcards', allowWildcards.toString());
272
- }
273
- else {
274
- searchParams.delete('allow_wildcards');
275
- }
276
- if (graph != 'RunChart') {
277
- searchParams.set('graph', graph);
278
- }
279
- else {
280
- searchParams.delete('graph');
281
- }
282
- if (perPage != DEFAULT_RUNS_PER_PAGE) {
283
- searchParams.set('per_page', perPage.toString());
284
- }
285
- else {
286
- searchParams.delete('per_page');
287
- }
288
- let newPath = path ? `/${path}` : '';
289
- let newUrl = `${base}/runs${newPath}?${searchParams.toString()}`;
290
- if (page.url.searchParams.toString() != searchParams.toString() ||
291
- page.url.pathname != newUrl.split('?')[0]) {
292
- // replaceState(newUrl.toString(), $page.state)
293
- goto(newUrl.toString(), { replaceState: replaceState, keepFocus: true });
294
- }
295
- }
296
- function reloadJobsWithoutFilterError() {
297
- if (resultError == '' && argError == '') {
298
- filterTimeout && clearTimeout(filterTimeout);
299
- filterTimeout = setTimeout(() => {
300
- jobsLoader?.loadJobs(minTs, maxTs, true);
301
- }, 2000);
302
- }
303
- }
304
96
  function reset() {
305
- path = page.params.path ?? null;
306
- minTs = undefined;
307
- maxTs = undefined;
308
- jobs = undefined;
309
- completedJobs = undefined;
310
- lastFetchWentToEnd = false;
311
- selectedManualDate = 0;
97
+ _timeframe.val = { ...runsTimeframes[0] };
312
98
  selectedIds = [];
313
- schedulePath = undefined;
314
- batchReRunOptions = { flow: {}, script: {} };
315
- selectionMode = false;
99
+ delete filters.val.schedule_path;
316
100
  selectedWorkspace = undefined;
317
- jobsLoader?.loadJobs(minTs, maxTs, true);
101
+ jobsLoader?.loadJobs(true);
318
102
  }
319
103
  async function loadUsernames() {
320
104
  usernames = await UserService.listUsernames({ workspace: $workspaceStore });
@@ -329,89 +113,27 @@ async function loadPaths() {
329
113
  const npaths_flows = await FlowService.listFlowPaths({ workspace: $workspaceStore ?? '' });
330
114
  paths = npaths_scripts.concat(npaths_flows).sort();
331
115
  }
332
- function filterByPath(e) {
333
- path = e.detail;
334
- user = null;
335
- folder = null;
336
- label = null;
337
- concurrencyKey = null;
338
- tag = null;
339
- schedulePath = undefined;
340
- worker = null;
341
- }
342
- function filterByUser(e) {
343
- path = null;
344
- folder = null;
345
- user = e.detail;
346
- label = null;
347
- concurrencyKey = null;
348
- tag = null;
349
- schedulePath = undefined;
350
- }
351
- function filterByFolder(e) {
352
- path = null;
353
- user = null;
354
- folder = e.detail;
355
- label = null;
356
- concurrencyKey = null;
357
- tag = null;
358
- schedulePath = undefined;
359
- worker = null;
360
- }
361
- function filterByLabel(e) {
362
- path = null;
363
- user = null;
364
- folder = null;
365
- label = e.detail;
366
- concurrencyKey = null;
367
- tag = null;
368
- schedulePath = undefined;
369
- worker = null;
370
- allowWildcards = false;
371
- }
372
- function filterByConcurrencyKey(e) {
373
- path = null;
374
- user = null;
375
- folder = null;
376
- label = null;
377
- concurrencyKey = e.detail;
378
- tag = null;
379
- schedulePath = undefined;
380
- worker = null;
381
- }
382
- function filterByTag(e) {
383
- path = null;
384
- user = null;
385
- folder = null;
386
- label = null;
387
- concurrencyKey = null;
388
- tag = e.detail;
389
- schedulePath = undefined;
390
- worker = null;
391
- allowWildcards = false;
392
- }
393
- function filterBySchedule(e) {
394
- path = null;
395
- user = null;
396
- folder = null;
397
- label = null;
398
- concurrencyKey = null;
399
- tag = null;
400
- schedulePath = e.detail;
401
- worker = null;
402
- }
403
- function filterByWorker(e) {
404
- path = null;
405
- user = null;
406
- folder = null;
407
- label = null;
408
- concurrencyKey = null;
409
- tag = null;
410
- schedulePath = undefined;
411
- worker = e.detail;
412
- allowWildcards = false;
116
+ function resetAndFilterBy(setter) {
117
+ return (e) => {
118
+ delete filters.val.path;
119
+ delete filters.val.user;
120
+ delete filters.val.folder;
121
+ delete filters.val.label;
122
+ delete filters.val.concurrency_key;
123
+ delete filters.val.tag;
124
+ delete filters.val.worker;
125
+ delete filters.val.schedule_path;
126
+ setter(e.detail);
127
+ };
413
128
  }
414
- let calendarChangeTimeout = $state(undefined);
129
+ const filterByPath = resetAndFilterBy((s) => (filters.val.path = s));
130
+ const filterByUser = resetAndFilterBy((s) => (filters.val.user = s));
131
+ const filterByFolder = resetAndFilterBy((s) => (filters.val.folder = s));
132
+ const filterByLabel = resetAndFilterBy((s) => (filters.val.label = s));
133
+ const filterByConcurrencyKey = resetAndFilterBy((s) => (filters.val.concurrency_key = s));
134
+ const filterByTag = resetAndFilterBy((s) => (filters.val.tag = s));
135
+ const filterBySchedule = resetAndFilterBy((s) => (filters.val.schedule_path = s));
136
+ const filterByWorker = resetAndFilterBy((s) => (filters.val.worker = s));
415
137
  function typeOfChart(s) {
416
138
  switch (s) {
417
139
  case 'RunChart':
@@ -422,61 +144,55 @@ function typeOfChart(s) {
422
144
  return 'RunChart';
423
145
  }
424
146
  }
425
- let selectionMode = $state(false);
426
- async function onSetSelectionMode(mode) {
427
- selectionMode = mode;
428
- if (!mode) {
429
- selectedIds = [];
430
- batchReRunOptions = { flow: {}, script: {} };
431
- return;
432
- }
433
- const selectableIds = jobs?.filter(isJobSelectable(mode)).map((j) => j.id) ?? [];
434
- selectedIds = [];
435
- if (!selectableIds?.length) {
436
- sendUserToast('There are no visible jobs that can be ' +
437
- { cancel: 'cancelled', 're-run': 're-ran' }[mode], true);
438
- }
439
- }
440
147
  function getSelectedFilters() {
148
+ const argFilter = filters.val.arg && JSON.parse(filters.val.arg);
149
+ const resultFilter = filters.val.result && JSON.parse(filters.val.result);
150
+ const { minTs, maxTs } = timeframe.computeMinMax();
441
151
  return {
442
152
  workspace: $workspaceStore ?? '',
443
- startedBefore: maxTs,
444
- startedAfter: minTs,
445
- schedulePath,
446
- scriptPathExact: path === null || path === '' ? undefined : path,
447
- createdBy: user === null || user === '' ? undefined : user,
448
- scriptPathStart: folder === null || folder === '' ? undefined : `f/${folder}/`,
153
+ startedBefore: maxTs ?? undefined,
154
+ startedAfter: minTs ?? undefined,
155
+ schedulePath: filters.val.schedule_path ?? undefined,
156
+ scriptPathExact: filters.val.path === null || filters.val.path === '' ? undefined : filters.val.path,
157
+ createdBy: filters.val.user || undefined,
158
+ scriptPathStart: filters.val.folder ? `f/${filters.val.folder}/` : undefined,
449
159
  jobKinds: jobKinds == '' ? undefined : jobKinds,
450
- success: success == 'success' ? true : success == 'failure' ? false : undefined,
451
- running: success == 'running' || success == 'suspended'
160
+ success: filters.val.status == 'success'
161
+ ? true
162
+ : filters.val.status == 'failure'
163
+ ? false
164
+ : undefined,
165
+ running: filters.val.status == 'running' || filters.val.status == 'suspended'
452
166
  ? true
453
- : success == 'waiting'
167
+ : filters.val.status == 'waiting'
454
168
  ? false
455
169
  : undefined,
456
- isSkipped: showSkipped ? undefined : false,
170
+ isSkipped: filters.val.show_skipped ? undefined : false,
457
171
  // isFlowStep: jobKindsCat != 'all' ? false : undefined,
458
- hasNullParent: path != undefined || path != undefined || jobKindsCat != 'all' ? true : undefined,
459
- label: label === null || label === '' ? undefined : label,
460
- tag: tag === null || tag === '' ? undefined : tag,
461
- isNotSchedule: showSchedules == false ? true : undefined,
462
- suspended: success == 'waiting' ? false : success == 'suspended' ? true : undefined,
463
- scheduledForBeforeNow: showFutureJobs == false || success == 'waiting' || success == 'suspended'
172
+ hasNullParent: filters.val.path != undefined ||
173
+ filters.val.path != undefined ||
174
+ filters.val.job_kinds != 'all'
464
175
  ? true
465
176
  : undefined,
466
- args: argFilter && argFilter != '{}' && argFilter != '' && argError == '' ? argFilter : undefined,
467
- result: resultFilter && resultFilter != '{}' && resultFilter != '' && resultError == ''
468
- ? resultFilter
177
+ label: filters.val.label || undefined,
178
+ tag: filters.val.tag || undefined,
179
+ suspended: filters.val.status == 'waiting'
180
+ ? false
181
+ : filters.val.status == 'suspended'
182
+ ? true
183
+ : undefined,
184
+ scheduledForBeforeNow: filters.val.show_future_jobs == false ||
185
+ filters.val.status == 'waiting' ||
186
+ filters.val.status == 'suspended'
187
+ ? true
469
188
  : undefined,
470
- jobTriggerKind,
471
- allWorkspaces: allWorkspaces ? true : undefined,
472
- allowWildcards: allowWildcards ? true : undefined
189
+ args: argFilter && Object.keys(argFilter).length && !argError ? argFilter : undefined,
190
+ result: resultFilter && Object.keys(resultFilter).length && !resultError ? resultFilter : undefined,
191
+ jobTriggerKind: filters.val.job_trigger_kind || undefined,
192
+ allWorkspaces: filters.val.all_workspaces || undefined,
193
+ allowWildcards: allowWildcards(filters.val) || undefined
473
194
  };
474
195
  }
475
- $effect(() => {
476
- if (jobTriggerKind === 'schedule' && !showSchedules) {
477
- showSchedules = true;
478
- }
479
- });
480
196
  async function cancelJobs(uuidsToCancel, forceCancel = false) {
481
197
  const uuids = await JobService.cancelSelection({
482
198
  workspace: $workspaceStore ?? '',
@@ -484,11 +200,10 @@ async function cancelJobs(uuidsToCancel, forceCancel = false) {
484
200
  forceCancel: forceCancel
485
201
  });
486
202
  selectedIds = [];
487
- jobsLoader?.loadJobs(minTs, maxTs, true, true);
203
+ jobsLoader?.loadJobs(true, true);
488
204
  sendUserToast(`Canceled ${uuids.length} jobs`);
489
- selectionMode = false;
490
205
  }
491
- async function onCancelFilteredJobs() {
206
+ async function onCancelAllJobsMatchingFilters() {
492
207
  forceCancelInPopup = false;
493
208
  askingForConfirmation = {
494
209
  title: 'Confirm cancelling all jobs corresponding to the selected filters',
@@ -507,17 +222,17 @@ async function onCancelFilteredJobs() {
507
222
  }
508
223
  };
509
224
  }
510
- async function onCancelSelectedJobs() {
225
+ async function onCancelSelectedJobs(jobIdsToCancel) {
511
226
  forceCancelInPopup = true;
512
227
  askingForConfirmation = {
513
- confirmBtnText: `Cancel ${selectedIds.length} jobs`,
514
- title: 'Confirm cancelling the selected jobs',
228
+ confirmBtnText: `Cancel ${jobIdsToCancel.length} jobs`,
229
+ title: `Confirm cancelling ${jobIdsToCancel.length} jobs`,
515
230
  onConfirm: (forceCancel) => {
516
- cancelJobs(selectedIds, forceCancel);
231
+ cancelJobs(jobIdsToCancel, forceCancel);
517
232
  }
518
233
  };
519
234
  }
520
- async function reRunJobs(jobIdsToReRun) {
235
+ async function reRunJobs(jobIdsToReRun, batchReRunOptions) {
521
236
  if (!$workspaceStore)
522
237
  return;
523
238
  if (askingForConfirmation) {
@@ -525,8 +240,8 @@ async function reRunJobs(jobIdsToReRun) {
525
240
  }
526
241
  const body = {
527
242
  job_ids: jobIdsToReRun,
528
- script_options_by_path: batchReRunOptions.script,
529
- flow_options_by_path: batchReRunOptions.flow
243
+ script_options_by_path: batchReRunOptions.script ?? {},
244
+ flow_options_by_path: batchReRunOptions.flow ?? {}
530
245
  };
531
246
  // workaround because EventSource does not support POST requests
532
247
  // https://medium.com/@david.richards.tech/sse-server-sent-events-using-a-post-request-without-eventsource-1c0bd6f14425
@@ -581,98 +296,50 @@ async function reRunJobs(jobIdsToReRun) {
581
296
  resolve(undefined);
582
297
  });
583
298
  selectedIds = [];
584
- batchReRunOptions = { flow: {}, script: {} };
585
- jobsLoader?.loadJobs(minTs, maxTs, true, true);
586
- selectionMode = false;
299
+ jobsLoader?.loadJobs(true, true);
587
300
  }
588
- async function onReRunFilteredJobs() {
301
+ async function onRerunAllJobsMatchingFilters() {
589
302
  const selectedFilters = getSelectedFilters();
590
303
  selectedIds = [];
591
- loadingSelectedIds = true;
592
- if (jobKindsCat !== 'runs') {
304
+ const loadingToast = sendUserToast('Loading job ids', 'info');
305
+ if (filters.val.job_kinds !== 'runs') {
593
306
  sendUserToast('Batch re-run is only supported for scripts and flows', true);
307
+ loadingToast.destroy();
308
+ return;
594
309
  }
595
310
  selectedIds = await JobService.listFilteredJobsUuids({
596
311
  ...selectedFilters,
597
312
  jobKinds: 'script,flow'
598
313
  });
599
- selectionMode = 're-run';
314
+ loadingToast.destroy();
315
+ batchRerunOptionsIsOpen = true;
600
316
  }
601
- async function onReRunSelectedJobs() {
317
+ async function onReRunSelectedJobs(batchReRunOptions) {
602
318
  const jobIdsToReRun = selectedIds;
603
319
  askingForConfirmation = {
604
320
  title: `Confirm re-running the selected jobs`,
605
321
  confirmBtnText: `Re-run ${jobIdsToReRun.length} jobs`,
606
322
  type: 'reload',
607
323
  onConfirm: async () => {
608
- await reRunJobs(jobIdsToReRun);
324
+ await reRunJobs(jobIdsToReRun, batchReRunOptions);
609
325
  }
610
326
  };
611
327
  }
612
- function setLookback(lookbackInDays) {
613
- lookback = lookbackInDays;
614
- }
615
328
  async function loadExtra() {
616
- if (jobsLoader) {
617
- lastFetchWentToEnd = await jobsLoader.loadExtraJobs();
618
- }
329
+ await jobsLoader?.loadExtraJobs();
619
330
  }
620
331
  function jobsFilter(f) {
621
- path = null;
622
- user = null;
623
- folder = null;
624
- label = null;
625
- concurrencyKey = null;
626
- schedulePath = undefined;
627
- path = null;
628
- tag = null;
629
- worker = null;
630
- if (success == f) {
631
- success = undefined;
632
- }
633
- else {
634
- success = f;
635
- }
636
- jobKindsCat = 'all';
332
+ filters.val.path = undefined;
333
+ filters.val.user = undefined;
334
+ filters.val.folder = undefined;
335
+ filters.val.label = undefined;
336
+ filters.val.concurrency_key = undefined;
337
+ filters.val.tag = undefined;
338
+ filters.val.worker = undefined;
339
+ filters.val.schedule_path = undefined;
340
+ filters.val.status = filters.val.status == f ? undefined : f;
341
+ filters.val.job_kinds = 'all';
637
342
  }
638
- $effect(() => {
639
- loadingSelectedIds && selectedIds.length && setTimeout(() => (loadingSelectedIds = false), 250);
640
- });
641
- $effect(() => {
642
- ;
643
- [
644
- user,
645
- worker,
646
- label,
647
- folder,
648
- path,
649
- success !== undefined,
650
- showSkipped,
651
- showSchedules,
652
- showFutureJobs,
653
- argFilter,
654
- resultFilter,
655
- jobTriggerKind,
656
- schedulePath,
657
- jobKindsCat,
658
- concurrencyKey,
659
- tag,
660
- graph,
661
- maxTs,
662
- minTs,
663
- allWorkspaces,
664
- allowWildcards,
665
- $workspaceStore,
666
- perPage
667
- ];
668
- untrack(() => setQuery(false));
669
- });
670
- $effect(() => {
671
- minTs || untrack(() => setQuery(true));
672
- });
673
- $effect(() => {
674
- maxTs || untrack(() => setQuery(true));
675
- });
676
343
  $effect(() => {
677
344
  if ($workspaceStore) {
678
345
  untrack(() => {
@@ -688,72 +355,12 @@ let warnJobLimit = $derived.by(() => {
688
355
  extended !== undefined &&
689
356
  extended.jobs.length + extended.obscured_jobs.length >= 1000);
690
357
  });
691
- const bubble = createBubbler();
692
- function selectAll() {
693
- if (!selectionMode)
694
- return;
695
- if (allSelected) {
696
- allSelected = false;
697
- selectedIds = [];
698
- }
699
- else {
700
- allSelected = true;
701
- selectedIds = jobs?.filter(isJobSelectable(selectionMode)).map((j) => j.id) ?? [];
702
- }
703
- }
704
- let allSelected = $derived.by(() => {
705
- return selectionMode && selectedIds.length === selectableJobCount;
706
- });
707
- const selectableJobCount = $derived.by(() => {
708
- if (!selectionMode)
709
- return 0;
710
- return jobs?.filter(isJobSelectable(selectionMode)).length ?? 0;
711
- });
712
- let tableTopBarWidth = $state(0);
713
358
  const smallScreenWidth = 1920;
714
- const verySmallScreenWidth = 1300;
715
359
  let forceCancelInPopup = $state(false);
716
- const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beginning of the time range may be incorrect as only the last ${perPage} jobs are taken into account: a job that was started earlier than this limit will not be taken into account`);
360
+ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beginning of the time range may be incorrect as only the last ${perPage.val} jobs are taken into account: a job that was started earlier than this limit will not be taken into account`);
361
+ let manualSelectionMode = $state();
717
362
  </script>
718
363
 
719
- <JobsLoader
720
- {allowWildcards}
721
- {allWorkspaces}
722
- bind:jobs
723
- {user}
724
- {folder}
725
- {path}
726
- {worker}
727
- {label}
728
- {success}
729
- {showSkipped}
730
- {argFilter}
731
- {resultFilter}
732
- {jobTriggerKind}
733
- {showSchedules}
734
- {showFutureJobs}
735
- {schedulePath}
736
- {jobKindsCat}
737
- computeMinAndMax={manualDatePicker?.computeMinMax}
738
- bind:minTs
739
- bind:maxTs
740
- bind:jobKinds
741
- bind:queue_count
742
- bind:suspended_count
743
- {autoRefresh}
744
- bind:completedJobs
745
- bind:externalJobs
746
- bind:extendedJobs
747
- {concurrencyKey}
748
- {argError}
749
- {resultError}
750
- {tag}
751
- bind:perPage
752
- bind:loading
753
- bind:this={jobsLoader}
754
- lookback={graphIsRunsChart ? 0 : lookback}
755
- />
756
-
757
364
  <ConfirmationModal
758
365
  title={askingForConfirmation?.title ?? ''}
759
366
  confirmationText={askingForConfirmation?.confirmBtnText ?? ''}
@@ -801,7 +408,7 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
801
408
  {#if selectedIds[0] === '-'}
802
409
  <div class="p-4">There is no information available for this job</div>
803
410
  {:else}
804
- <JobRunsPreview blankLink id={selectedIds[0]} workspace={selectedWorkspace} />
411
+ <JobRunsPreview id={selectedIds[0]} workspace={selectedWorkspace} />
805
412
  {/if}
806
413
  {/if}
807
414
  </DrawerContent>
@@ -810,7 +417,6 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
810
417
  <svelte:window
811
418
  onpopstate={() => {
812
419
  reset()
813
- loadFromQuery()
814
420
  }}
815
421
  />
816
422
 
@@ -822,29 +428,27 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
822
428
  {:else}
823
429
  <div class="w-full h-screen flex flex-col" bind:clientWidth={innerWidth}>
824
430
  <!-- Header and filters -->
825
- <div class="flex flex-row items-start w-full border-b px-4 gap-8">
826
- <div class="flex flex-row items-center h-full gap-6">
827
- <div class="flex flex-row items-center gap-1">
828
- <h1
829
- class={twMerge(
830
- '!text-2xl font-semibold leading-6 tracking-tight',
831
- $userStore?.operator ? 'pl-10' : ''
832
- )}
833
- >
834
- Runs
835
- </h1>
431
+ <div class="flex flex-row items-start w-full px-4 gap-3 py-4 flex-wrap">
432
+ <div class="flex flex-row items-center gap-6">
433
+ <h1
434
+ class={twMerge(
435
+ '!text-2xl font-semibold leading-6 tracking-tight',
436
+ $userStore?.operator ? 'pl-10' : ''
437
+ )}
438
+ >
439
+ Runs
440
+ </h1>
836
441
 
837
- <Tooltip
838
- documentationLink="https://www.windmill.dev/docs/core_concepts/monitor_past_and_future_runs"
839
- >
840
- All past and schedule executions of scripts and flows, including previews. You only see
841
- your own runs or runs of groups you belong to unless you are an admin.
842
- </Tooltip>
843
- </div>
442
+ <Tooltip
443
+ documentationLink="https://www.windmill.dev/docs/core_concepts/monitor_past_and_future_runs"
444
+ >
445
+ All past and schedule executions of scripts and flows, including previews. You only see
446
+ your own runs or runs of groups you belong to unless you are an admin.
447
+ </Tooltip>
844
448
 
845
449
  <!-- Queue -->
846
450
  <RunsQueue
847
- {success}
451
+ success={filters.val.status ?? null}
848
452
  {queue_count}
849
453
  {suspended_count}
850
454
  onJobsWaiting={() => {
@@ -857,197 +461,175 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
857
461
  />
858
462
  </div>
859
463
 
860
- <div class="py-2 flex items-start gap-x-4 gap-y-2 flex-row grow min-w-0 justify-end">
861
- <!-- Dates -->
862
- <div class="flex flex-row gap-2">
863
- <RunOption label="From" for="min-datetimes">
864
- {#if minTs || maxTs}
865
- <input
866
- type="text"
867
- class="!text-sm text-primary !bg-surface-secondary h-9 !border-none"
868
- value={minTs ? new Date(minTs).toLocaleString() : 'zoom x axis to set min'}
869
- disabled
870
- name="min-datetimes"
871
- />
872
- {/if}
873
- <CalendarPicker
874
- clearable={true}
875
- date={minTs}
876
- label="From"
877
- class={minTs || maxTs ? '' : 'relative top-0 bottom-0 left-0 right-0 h-[34px]'}
878
- on:change={async ({ detail }) => {
879
- minTs = new Date(detail).toISOString()
880
- calendarChangeTimeout && clearTimeout(calendarChangeTimeout)
881
- calendarChangeTimeout = setTimeout(() => {
882
- jobsLoader?.loadJobs(minTs, maxTs, true)
883
- }, 1000)
884
- }}
885
- on:clear={async () => {
886
- minTs = undefined
887
- calendarChangeTimeout && clearTimeout(calendarChangeTimeout)
888
- calendarChangeTimeout = setTimeout(() => {
889
- jobsLoader?.loadJobs(minTs, maxTs, true)
890
- }, 1000)
464
+ <div class="hidden xl:flex gap-2 ml-6">
465
+ <ToggleButtonGroup
466
+ tabListClass="hidden 2xl:flex"
467
+ bind:selected={
468
+ () => filters.val.job_kinds ?? 'runs',
469
+ (v) => (v === 'runs' ? delete filters.val.job_kinds : (filters.val.job_kinds = v))
470
+ }
471
+ >
472
+ {#snippet children({ item })}
473
+ <ToggleButton value="all" label="All" {item} />
474
+ <ToggleButton
475
+ value="runs"
476
+ label="Runs"
477
+ showTooltipIcon
478
+ tooltip="Runs are jobs that have no parent jobs (flows are jobs that are parent of the jobs they start), they have been triggered through the UI, a schedule or webhook"
479
+ {item}
480
+ />
481
+ <ToggleButton
482
+ value="dependencies"
483
+ label="Deps"
484
+ showTooltipIcon
485
+ tooltip="Deploying a script, flow or an app launch a dependency job that create and then attach the lockfile to the deployed item. This mechanism ensure that logic is always executed with the exact same direct and indirect dependencies."
486
+ {item}
487
+ />
488
+ <ToggleButtonMore
489
+ togglableItems={[
490
+ {
491
+ label: 'Previews',
492
+ value: 'previews',
493
+ tooltip: "Previews are jobs that have been started in the editor as 'Tests'"
494
+ },
495
+ {
496
+ label: 'Sync',
497
+ value: 'deploymentcallbacks',
498
+ tooltip:
499
+ 'Sync jobs that are triggered on every script deployment to sync the workspace with the Git repository configured in the the workspace settings'
500
+ }
501
+ ]}
502
+ {item}
503
+ bind:selected={filters.val.job_kinds}
504
+ />
505
+ {/snippet}
506
+ </ToggleButtonGroup>
507
+ <ToggleButtonGroup
508
+ bind:selected={
509
+ () => filters.val.status ?? 'all',
510
+ (v) => (v === 'all' ? delete filters.val.status : (filters.val.status = v))
511
+ }
512
+ id="status"
513
+ >
514
+ {#snippet children({ item })}
515
+ <ToggleButton value={'all'} label="All" {item} />
516
+ <ToggleButton
517
+ value={'running'}
518
+ tooltip="Running"
519
+ class="whitespace-nowrap"
520
+ icon={CirclePlay}
521
+ iconProps={{
522
+ class:
523
+ 'group-data-[state=on]:text-yellow-600 dark:group-data-[state=on]:text-yellow-400'
891
524
  }}
525
+ {item}
892
526
  />
893
- </RunOption>
894
-
895
- <RunOption label="To" for="max-datetimes">
896
- {#if maxTs || minTs}
897
- <input
898
- type="text"
899
- class="!text-sm text-primary !bg-surface-secondary h-9 !border-none"
900
- value={maxTs ? new Date(maxTs).toLocaleString() : 'zoom x axis to set max'}
901
- name="max-datetimes"
902
- disabled
903
- />
904
- {/if}
905
- <CalendarPicker
906
- clearable={true}
907
- date={maxTs}
908
- label="To"
909
- class={minTs || maxTs ? '' : 'relative top-0 bottom-0 left-0 right-0 h-[34px]'}
910
- on:change={async ({ detail }) => {
911
- maxTs = new Date(detail).toISOString()
912
- calendarChangeTimeout && clearTimeout(calendarChangeTimeout)
913
- calendarChangeTimeout = setTimeout(() => {
914
- jobsLoader?.loadJobs(minTs, maxTs, true)
915
- }, 1000)
527
+ <ToggleButton
528
+ value={'success'}
529
+ tooltip="Success"
530
+ class="whitespace-nowrap"
531
+ icon={CircleCheck}
532
+ iconProps={{
533
+ class:
534
+ 'group-data-[state=on]:text-green-500 dark:group-data-[state=on]:text-green-300'
916
535
  }}
917
- on:clear={async () => {
918
- maxTs = undefined
919
- calendarChangeTimeout && clearTimeout(calendarChangeTimeout)
920
- calendarChangeTimeout = setTimeout(() => {
921
- jobsLoader?.loadJobs(minTs, maxTs, true)
922
- }, 1000)
536
+ {item}
537
+ />
538
+ <ToggleButton
539
+ value={'failure'}
540
+ tooltip="Failure"
541
+ class="whitespace-nowrap"
542
+ icon={CircleAlert}
543
+ iconProps={{
544
+ class: 'group-data-[state=on]:text-red-500 dark:group-data-[state=on]:text-red-300'
923
545
  }}
546
+ {item}
924
547
  />
925
- </RunOption>
926
-
927
- {#if minTs || maxTs}
928
- <RunOption label="Reset" for="reset" noLabel>
929
- <Button variant="default" size="xs" onClick={reset} btnClasses="h-9">Reset</Button>
930
- </RunOption>
931
- {/if}
932
- </div>
933
-
934
- <!-- Filters 1 -->
935
- <div class="flex flex-row gap-2">
936
- <RunsFilter
937
- bind:allowWildcards
938
- bind:showSkipped
939
- bind:user
940
- bind:folder
941
- bind:label
942
- bind:concurrencyKey
943
- bind:tag
944
- bind:worker
945
- bind:path
946
- bind:success
947
- bind:argFilter
948
- bind:resultFilter
949
- bind:jobTriggerKind
950
- bind:argError
951
- bind:resultError
952
- bind:jobKindsCat
953
- bind:allWorkspaces
954
- bind:schedulePath
955
- on:change={reloadJobsWithoutFilterError}
956
- on:successChange={(e) => {
957
- if (e.detail == 'running' && maxTs != undefined) {
958
- maxTs = undefined
959
- }
960
- }}
961
- {usernames}
962
- {folders}
963
- {paths}
964
- mobile={innerWidth < verySmallScreenWidth}
965
- small={innerWidth < smallScreenWidth}
966
- calendarSmall={!minTs && !maxTs}
967
- />
968
- </div>
548
+ {#if filters.val.status == 'waiting'}
549
+ <ToggleButton
550
+ value={'waiting'}
551
+ tooltip="Waiting"
552
+ class="whitespace-nowrap"
553
+ icon={Hourglass}
554
+ selectedColor="blue"
555
+ {item}
556
+ />
557
+ {:else if filters.val.status == 'suspended'}
558
+ <ToggleButton
559
+ value={'suspended'}
560
+ tooltip="Suspended"
561
+ class="whitespace-nowrap"
562
+ icon={Hourglass}
563
+ selectedColor="purple"
564
+ {item}
565
+ />
566
+ {/if}
567
+ {/snippet}
568
+ </ToggleButtonGroup>
969
569
  </div>
570
+
571
+ <TimeframeSelect
572
+ wrapperClasses="ml-auto"
573
+ onClick={() => jobsLoader?.loadJobs(true)}
574
+ loading={jobsLoader?.loading}
575
+ items={runsTimeframes}
576
+ bind:value={_timeframe.val}
577
+ />
578
+ <FilterSearchbar
579
+ class="flex-1 relative max-w-[34rem] min-w-[18rem] {ButtonType.UnifiedMinHeightClasses.md}"
580
+ schema={runsFilterSearchbarSchema}
581
+ presets={buildRunsFilterPresets({ isSuperadmin: !!$superadmin })}
582
+ bind:value={filters.val}
583
+ placeholder="Filter runs..."
584
+ />
970
585
  </div>
971
586
 
972
587
  <!-- Graph -->
973
- <div class="p-2 px-4 pt-8 w-full border-b">
974
- <div class="relative z-10">
975
- <div class="absolute left-0 -top-7 flex flex-row gap-2 items-center min-w-24">
976
- <ToggleButtonGroup
977
- selected={graph}
978
- on:selected={({ detail }) => {
979
- graph = detail
980
- graphIsRunsChart = graph === 'RunChart'
981
- }}
982
- >
983
- {#snippet children({ item })}
984
- <ToggleButton value="RunChart" label="Duration" {item} />
985
- <ToggleButton
986
- {item}
987
- value="ConcurrencyChart"
988
- label="Concurrency"
989
- icon={warnJobLimit ? TriangleAlert : undefined}
990
- tooltip={warnJobLimit ? warnJobLimitMsg : undefined}
991
- />
588
+ <div class="p-2 px-4 bg-surface-tertiary mx-4 border rounded-md">
589
+ <div class="relative z-10 mb-2 flex gap-2">
590
+ <Tabs bind:selected={graph}>
591
+ <Tab value="RunChart" label="Duration" />
592
+ <Tab value="ConcurrencyChart" label="Concurrency">
593
+ {#snippet extra()}
594
+ {#if warnJobLimit}
595
+ <Tooltip Icon={TriangleAlertIcon}>{warnJobLimitMsg}</Tooltip>
596
+ {/if}
992
597
  {/snippet}
993
- </ToggleButtonGroup>
598
+ </Tab>
599
+ </Tabs>
994
600
 
995
- {#if !graphIsRunsChart}
996
- <DropdownSelect
997
- items={[
998
- {
999
- displayName: 'None',
1000
- action: () => setLookback(0),
1001
- id: '0'
1002
- },
1003
- {
1004
- displayName: '1 day',
1005
- action: () => setLookback(1),
1006
- id: '1'
1007
- },
1008
- {
1009
- displayName: '3 days',
1010
- action: () => setLookback(3),
1011
- id: '3'
1012
- },
1013
- {
1014
- displayName: '7 days',
1015
- action: () => setLookback(7),
1016
- id: '7'
1017
- }
1018
- ]}
1019
- selected={lookback.toString()}
1020
- selectedDisplayName={`${lookback} days lookback`}
1021
- >
1022
- {#snippet extraLabel()}
1023
- <TooltipV2>
1024
- {#snippet text()}
1025
- How far behind the min datetime to start considering jobs for the concurrency
1026
- graph. Change this value to include jobs started before the set time window for
1027
- the computation of the graph
1028
- {/snippet}
1029
- </TooltipV2>
1030
- {/snippet}
1031
- </DropdownSelect>
1032
- {/if}
1033
- </div>
601
+ {#if graph !== 'RunChart'}
602
+ <Select
603
+ class="ml-2"
604
+ bind:value={lookback}
605
+ items={[
606
+ { label: 'None', value: 0 },
607
+ { label: '1 day', value: 1 },
608
+ { label: '3 days', value: 3 },
609
+ { label: '7 days', value: 7 }
610
+ ]}
611
+ transformInputSelectedText={(_, v) => `${pluralize(v, 'day')} lookback`}
612
+ tooltip={'How far behind the min datetime to start considering jobs for the concurrency graph. Change this value to include jobs started before the set time window for the computation of the graph'}
613
+ />
614
+ {:else if !lastFetchWentToEnd}
615
+ <Button wrapperClasses="ml-2" unifiedSize="md" onClick={() => jobsLoader.loadExtraJobs()}>
616
+ Load more
617
+ <Tooltip>There are more jobs to load</Tooltip>
618
+ </Button>
619
+ {/if}
1034
620
  </div>
1035
621
  {#if graph === 'RunChart'}
622
+ {@const manualTimeframe = timeframe.type === 'manual' ? timeframe : undefined}
1036
623
  <RunChart
1037
- {lastFetchWentToEnd}
1038
624
  bind:selectedIds
1039
- canSelect={!selectionMode}
1040
- minTimeSet={minTs}
1041
- maxTimeSet={maxTs}
1042
- totalRowsFetched={jobs?.length ?? 0}
1043
- maxIsNow={maxTs == undefined}
1044
- onLoadExtra={loadExtra}
625
+ canSelect
626
+ minTimeSet={manualTimeframe?.minTs}
627
+ maxTimeSet={manualTimeframe?.maxTs}
628
+ maxIsNow={manualTimeframe?.maxTs == undefined}
1045
629
  jobs={completedJobs}
1046
630
  onZoom={async (zoom) => {
1047
- minTs = zoom.min.toISOString()
1048
- maxTs = zoom.max.toISOString()
1049
- manualDatePicker?.resetChoice()
1050
- jobsLoader?.loadJobs(minTs, maxTs, true)
631
+ _timeframe.val = buildManualTimeframe(zoom.min.toISOString(), zoom.max.toISOString())
632
+ jobsLoader?.loadJobs(true)
1051
633
  }}
1052
634
  onPointClicked={(ids) => {
1053
635
  runsTable?.scrollToRun(ids)
@@ -1055,207 +637,188 @@ const warnJobLimitMsg = $derived(`The exact number of concurrent jobs at the beg
1055
637
  />
1056
638
  {:else if graph === 'ConcurrencyChart'}
1057
639
  <ConcurrentJobsChart
1058
- minTimeSet={minTs}
1059
- maxTimeSet={maxTs}
1060
- maxIsNow={maxTs == undefined}
640
+ minTimeSet={manualTimeframe?.minTs}
641
+ maxTimeSet={manualTimeframe?.maxTs}
642
+ maxIsNow={manualTimeframe?.maxTs == undefined}
1061
643
  {extendedJobs}
1062
644
  onZoom={async (zoom) => {
1063
- minTs = zoom.min.toISOString()
1064
- maxTs = zoom.max.toISOString()
1065
- jobsLoader?.loadJobs(minTs, maxTs, true)
645
+ _timeframe.val = buildManualTimeframe(zoom.min.toISOString(), zoom.max.toISOString())
646
+ jobsLoader?.loadJobs(true)
1066
647
  }}
1067
648
  />
1068
649
  {/if}
1069
650
  </div>
1070
651
 
1071
- <div class="grow min-h-0">
652
+ <div class="grow min-h-0 bottom-splitpane-wrapper">
1072
653
  <Splitpanes>
1073
654
  <Pane minSize={40}>
1074
- <div class="flex flex-col h-full">
1075
- <!-- Runs table top bar -->
1076
- <div
1077
- class="flex flex-row gap-4 items-center px-2 py-1 grow-0 justify-between"
1078
- bind:clientWidth={tableTopBarWidth}
1079
- >
1080
- <div class="flex flex-row gap-4 items-center">
1081
- {#if selectionMode && selectableJobCount}
1082
- <div class="flex flex-row items-center font-semibold text-sm">
1083
- <div class="px-2">
1084
- <input
1085
- onfocus={bubble('focus')}
1086
- type="checkbox"
1087
- checked={allSelected}
1088
- id="select-all"
1089
- class={twMerge(
1090
- 'cursor-pointer',
1091
- allSelected ? 'bg-blue-50 dark:bg-blue-900/50' : '',
1092
- 'flex flex-row items-center p-2 pr-4 top-0 font-semibold text-sm'
1093
- )}
1094
- onclick={selectAll}
1095
- />
1096
- </div>
1097
- <label
1098
- class="cursor-pointer whitespace-nowrap text-xs text-emphasis font-semibold"
1099
- for="select-all">Select all</label
1100
- >
655
+ <div class="h-full flex">
656
+ <div class="flex flex-col flex-1 m-4 mt-2 mr-2">
657
+ <!-- Runs table. Add overflow-hidden because scroll is handled inside the runs table based on this wrapper height -->
658
+ <div class="grow min-h-0 overflow-y-hidden overflow-x-auto">
659
+ {#if jobs}
660
+ <RunsTable
661
+ {jobs}
662
+ externalJobs={externalJobs ?? []}
663
+ omittedObscuredJobs={extendedJobs?.omitted_obscured_jobs ?? false}
664
+ showExternalJobs={graph !== 'RunChart'}
665
+ activeLabel={filters.val.label}
666
+ {lastFetchWentToEnd}
667
+ bind:selectedIds
668
+ bind:selectedWorkspace
669
+ on:loadExtra={loadExtra}
670
+ on:filterByPath={filterByPath}
671
+ on:filterByUser={filterByUser}
672
+ on:filterByFolder={filterByFolder}
673
+ on:filterByLabel={filterByLabel}
674
+ on:filterByConcurrencyKey={filterByConcurrencyKey}
675
+ on:filterByTag={filterByTag}
676
+ on:filterBySchedule={filterBySchedule}
677
+ on:filterByWorker={filterByWorker}
678
+ bind:this={runsTable}
679
+ perPage={perPage.val}
680
+ bind:batchRerunOptionsIsOpen
681
+ onCancelJobs={onCancelSelectedJobs}
682
+ {manualSelectionMode}
683
+ ></RunsTable>
684
+ {:else}
685
+ <div class="gap-1 flex flex-col">
686
+ {#each new Array(8) as _}
687
+ <Skeleton layout={[[3]]} />
688
+ {/each}
1101
689
  </div>
1102
690
  {/if}
1103
-
1104
- <RunsBatchActionsDropdown
1105
- isLoading={loadingSelectedIds}
1106
- {selectionMode}
1107
- selectionCount={selectedIds.length}
1108
- {onSetSelectionMode}
1109
- {onCancelFilteredJobs}
1110
- {onCancelSelectedJobs}
1111
- {onReRunFilteredJobs}
1112
- {onReRunSelectedJobs}
1113
- small={tableTopBarWidth < 800}
1114
- />
1115
691
  </div>
1116
-
1117
- <div class="flex flex-row gap-4 items-center">
1118
- {#if !jobTriggerKind}
1119
- <div class="flex flex-row gap-1 items-center">
1120
- <Toggle
1121
- id="cron-schedules"
1122
- bind:checked={showSchedules}
1123
- on:change={() => {
1124
- localStorage.setItem(
1125
- 'show_schedules_in_run',
1126
- showSchedules ? 'true' : 'false'
1127
- )
1128
- }}
1129
- options={tableTopBarWidth < 800 || selectionMode
1130
- ? {}
1131
- : { right: 'Schedules' }}
1132
- />
1133
- <span title="Schedules">
1134
- <Calendar size="14" />
1135
- </span>
1136
- </div>
1137
- {/if}
1138
-
1139
- <div class="flex flex-row gap-1 items-center">
1140
- <Toggle
1141
- size="sm"
1142
- bind:checked={showFutureJobs}
1143
- on:change={() => {
1144
- localStorage.setItem('show_future_jobs', showFutureJobs ? 'true' : 'false')
1145
- }}
1146
- id="planned-later"
1147
- options={tableTopBarWidth < 800 || selectionMode
1148
- ? {}
1149
- : { right: 'Planned later' }}
1150
- />
1151
- <span title="Planned later">
1152
- <Clock size={14} />
1153
- </span>
1154
- </div>
1155
- <div class="flex flex-row gap-2 items-center">
1156
- <ManuelDatePicker
1157
- on:loadJobs={() => {
1158
- lastFetchWentToEnd = false
1159
- jobsLoader?.loadJobs(minTs, maxTs, true)
1160
- }}
1161
- bind:minTs
1162
- bind:maxTs
1163
- bind:selectedManualDate
1164
- {loading}
1165
- bind:this={manualDatePicker}
1166
- numberOfLastJobsToFetch={perPage}
692
+ <div
693
+ class="bg-surface-tertiary border rounded-b-md flex text-xs px-2 py-1 items-center gap-4"
694
+ >
695
+ {#if !manualSelectionMode}
696
+ <DropdownV2
697
+ btnText="Batch actions"
698
+ size="xs"
699
+ items={[
700
+ {
701
+ displayName: 'Cancel jobs',
702
+ action: () => ((manualSelectionMode = 'cancel'), (selectedIds = []))
703
+ },
704
+ {
705
+ displayName: 'Re-run jobs',
706
+ action: () => {
707
+ manualSelectionMode = 'rerun'
708
+ selectedIds = []
709
+ batchRerunOptionsIsOpen = true
710
+ }
711
+ },
712
+ {
713
+ displayName: 'Cancel all jobs matching filters',
714
+ action: () => onCancelAllJobsMatchingFilters()
715
+ },
716
+ {
717
+ displayName: 'Re-run all jobs matching filters',
718
+ action: () => onRerunAllJobsMatchingFilters()
719
+ }
720
+ ]}
1167
721
  />
1168
- <Toggle
1169
- size="sm"
1170
- bind:checked={autoRefresh}
1171
- on:change={() => {
1172
- localStorage.setItem('auto_refresh_in_runs', autoRefresh ? 'true' : 'false')
722
+ {:else}
723
+ <Button
724
+ size="xs"
725
+ destructive
726
+ onClick={() => {
727
+ manualSelectionMode = undefined
728
+ batchRerunOptionsIsOpen = false
1173
729
  }}
1174
- options={{ right: 'Auto-refresh' }}
1175
- textClass="whitespace-nowrap"
1176
- />
1177
- </div>
1178
- </div>
1179
- </div>
1180
-
1181
- <!-- Runs table. Add overflow-hidden because scroll is handled inside the runs table based on this wrapper height -->
1182
- <div class="grow min-h-0 overflow-y-hidden overflow-x-auto">
1183
- {#if jobs}
1184
- <RunsTable
1185
- {jobs}
1186
- externalJobs={externalJobs ?? []}
1187
- omittedObscuredJobs={extendedJobs?.omitted_obscured_jobs ?? false}
1188
- showExternalJobs={!graphIsRunsChart}
1189
- activeLabel={label}
1190
- {selectionMode}
1191
- bind:selectedIds
1192
- bind:selectedWorkspace
1193
- bind:lastFetchWentToEnd
1194
- on:loadExtra={loadExtra}
1195
- on:filterByPath={filterByPath}
1196
- on:filterByUser={filterByUser}
1197
- on:filterByFolder={filterByFolder}
1198
- on:filterByLabel={filterByLabel}
1199
- on:filterByConcurrencyKey={filterByConcurrencyKey}
1200
- on:filterByTag={filterByTag}
1201
- on:filterBySchedule={filterBySchedule}
1202
- on:filterByWorker={filterByWorker}
1203
- bind:this={runsTable}
1204
- {perPage}
1205
- ></RunsTable>
1206
- {:else}
1207
- <div class="gap-1 flex flex-col">
1208
- {#each new Array(8) as _}
1209
- <Skeleton layout={[[3]]} />
1210
- {/each}
1211
- </div>
1212
- {/if}
1213
- </div>
1214
- <div
1215
- class="bg-surface-secondary border-t flex text-xs px-2 py-1 items-center justify-end gap-2"
1216
- >
1217
- Per page:
1218
- <Select
1219
- class="w-20"
1220
- bind:value={
1221
- () => perPage,
1222
- (newPerPage) => {
1223
- perPage = newPerPage
1224
- if (newPerPage > (jobs?.length ?? 1000)) loadExtra()
730
+ >
731
+ Exit selection mode
732
+ </Button>
733
+ {/if}
734
+ <div class="flex-1"></div>
735
+ <Toggle
736
+ size="xs"
737
+ bind:checked={autoRefresh.val}
738
+ options={{ right: 'Auto-refresh' }}
739
+ textClass="whitespace-nowrap"
740
+ />
741
+ <Select
742
+ class="w-24"
743
+ bind:value={
744
+ () => perPage.val,
745
+ (newPerPage) => {
746
+ perPage.val = newPerPage
747
+ if (newPerPage > (jobs?.length ?? 1000)) loadExtra()
748
+ }
1225
749
  }
1226
- }
1227
- onCreateItem={(v) => (perPage = parseInt(v))}
1228
- items={[
1229
- { value: 25, label: '25' },
1230
- { value: 100, label: '100' },
1231
- { value: 1000, label: '1000' },
1232
- { value: 10000, label: '10000' }
1233
- ]}
1234
- />
750
+ onCreateItem={(v) => (perPage.val = parseInt(v))}
751
+ items={[
752
+ { value: 25, label: '25' },
753
+ { value: 100, label: '100' },
754
+ { value: 1000, label: '1000' },
755
+ { value: 10000, label: '10000' }
756
+ ]}
757
+ transformInputSelectedText={(_, v) => `${v} / page`}
758
+ />
759
+ </div>
1235
760
  </div>
1236
761
  </div>
1237
762
  </Pane>
1238
- <AnimatedPane size={40} minSize={15} class="flex flex-col" opened={selectedIds.length > 0}>
1239
- {#if selectionMode === 're-run'}
1240
- <BatchReRunOptionsPane {selectedIds} bind:options={batchReRunOptions} />
1241
- {:else if selectedIds.length === 1}
1242
- {#if selectedIds[0] === '-'}
1243
- <div class="p-4">There is no information available for this job</div>
1244
- {:else}
1245
- <JobRunsPreview
1246
- on:filterByConcurrencyKey={filterByConcurrencyKey}
1247
- on:filterByWorker={filterByWorker}
1248
- id={selectedIds[0]}
1249
- workspace={selectedWorkspace}
763
+ <AnimatedPane
764
+ size={40}
765
+ minSize={15}
766
+ class="flex flex-col"
767
+ opened={selectedIds.length > 0 || !!manualSelectionMode}
768
+ >
769
+ <div class="mt-12 overflow-y-auto pr-4 ml-2 relative flex-1">
770
+ {#if manualSelectionMode === 'cancel'}
771
+ <div
772
+ class="rounded-md bg-surface-tertiary border absolute inset-0 mb-4 flex flex-col items-center justify-center"
773
+ >
774
+ <Button
775
+ destructive
776
+ variant="accent"
777
+ disabled={!selectedIds.length}
778
+ onClick={() => onCancelSelectedJobs(selectedIds)}
779
+ >
780
+ Cancel {selectedIds.length} jobs
781
+ </Button>
782
+ </div>
783
+ {:else if batchRerunOptionsIsOpen}
784
+ <BatchReRunOptionsPane
785
+ {selectedIds}
786
+ onCancel={() => (
787
+ (batchRerunOptionsIsOpen = false),
788
+ (manualSelectionMode = undefined)
789
+ )}
790
+ onConfirm={async (options) => {
791
+ await onReRunSelectedJobs(options)
792
+ }}
1250
793
  />
794
+ {:else if selectedIds.length === 1}
795
+ {#if selectedIds[0] === '-'}
796
+ <div class="p-4">There is no information available for this job</div>
797
+ {:else}
798
+ <JobRunsPreview
799
+ id={selectedIds[0]}
800
+ workspace={selectedWorkspace}
801
+ on:filterByConcurrencyKey={filterByConcurrencyKey}
802
+ on:filterByWorker={filterByWorker}
803
+ />
804
+ {/if}
805
+ {:else if selectedIds.length > 1}
806
+ <div
807
+ class="rounded-md bg-surface-tertiary border absolute inset-0 mb-4 flex items-center justify-center"
808
+ >
809
+ <div class="text-xs m-4"> {selectedIds.length} jobs selected</div>
810
+ </div>
1251
811
  {/if}
1252
- {:else if selectedIds.length > 1}
1253
- <div class="text-xs m-4"
1254
- >There are {selectedIds.length} jobs selected. Choose 1 to see detailed information</div
1255
- >
1256
- {/if}
812
+ </div>
1257
813
  </AnimatedPane>
1258
814
  </Splitpanes>
1259
815
  </div>
1260
816
  </div>
1261
817
  {/if}
818
+
819
+ <style>
820
+ :global(.bottom-splitpane-wrapper .splitpanes__splitter) {
821
+ background-color: transparent !important;
822
+ border: none !important;
823
+ /* opacity: 0 !important; */
824
+ }</style>