windmill-components 1.677.1 → 1.687.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 (354) hide show
  1. package/package/components/AppConnectInner.svelte +6 -0
  2. package/package/components/CiTestResults.svelte +64 -0
  3. package/package/components/CiTestResults.svelte.d.ts +7 -0
  4. package/package/components/CompareWorkspaces.svelte +626 -418
  5. package/package/components/DBManager.svelte +35 -4
  6. package/package/components/DBManager.svelte.d.ts +2 -0
  7. package/package/components/DBManagerContent.svelte +3 -1
  8. package/package/components/DBManagerContent.svelte.d.ts +3 -0
  9. package/package/components/DBManagerDrawer.svelte +145 -3
  10. package/package/components/DBTableEditor.svelte +14 -4
  11. package/package/components/DatatablePicker.svelte +2 -5
  12. package/package/components/DatatableSchemaDiff.svelte +531 -0
  13. package/package/components/DatatableSchemaDiff.svelte.d.ts +29 -0
  14. package/package/components/DedicatedWorkersSelector.svelte +4 -2
  15. package/package/components/DefaultTagsInner.svelte +42 -2
  16. package/package/components/DeployWorkspaceDrawer.svelte +1 -1
  17. package/package/components/Dev.svelte +20 -3
  18. package/package/components/Editor.svelte +1 -1
  19. package/package/components/EditorBar.svelte +1 -1
  20. package/package/components/EditorBar.svelte.d.ts +1 -1
  21. package/package/components/FlowStatusViewerInner.svelte +269 -220
  22. package/package/components/FlowTimeline.svelte +1 -1
  23. package/package/components/FolderEditor.svelte +189 -4
  24. package/package/components/ForkWorkspaceBanner.svelte +82 -11
  25. package/package/components/GlobalUserOffboardingModal.svelte +293 -0
  26. package/package/components/GlobalUserOffboardingModal.svelte.d.ts +10 -0
  27. package/package/components/InstanceSettings.svelte +22 -3
  28. package/package/components/Login.svelte +22 -10
  29. package/package/components/ModuleTest.svelte +2 -1
  30. package/package/components/NoMainFuncBadge.svelte +1 -1
  31. package/package/components/OffboardItemsBox.svelte +56 -0
  32. package/package/components/OffboardItemsBox.svelte.d.ts +12 -0
  33. package/package/components/OffboardReassignControls.svelte +47 -0
  34. package/package/components/OffboardReassignControls.svelte.d.ts +20 -0
  35. package/package/components/OffboardWorkspaceSection.svelte +110 -0
  36. package/package/components/OffboardWorkspaceSection.svelte.d.ts +24 -0
  37. package/package/components/OnBehalfOfSelector.svelte +21 -3
  38. package/package/components/OnBehalfOfSelector.svelte.d.ts +7 -0
  39. package/package/components/QueueAlerts.svelte +10 -10
  40. package/package/components/ResourcePicker.svelte +2 -2
  41. package/package/components/ScriptBuilder.svelte +52 -11
  42. package/package/components/ScriptEditor.svelte +1 -3
  43. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  44. package/package/components/ShareModal.svelte +236 -98
  45. package/package/components/SuperadminSettingsInner.svelte +362 -315
  46. package/package/components/UserOffboardingModal.svelte +238 -0
  47. package/package/components/UserOffboardingModal.svelte.d.ts +10 -0
  48. package/package/components/WorkspaceDeployLayout.svelte +3 -3
  49. package/package/components/WorkspaceDeployLayout.svelte.d.ts +1 -0
  50. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +4 -2
  51. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -0
  52. package/package/components/assets/AssetsDropdownButton.svelte +1 -1
  53. package/package/components/common/confirmationModal/ConfirmationModal.svelte +1 -1
  54. package/package/components/common/table/AppRow.svelte +3 -3
  55. package/package/components/common/table/FlowRow.svelte +3 -3
  56. package/package/components/common/table/RawAppRow.svelte +4 -4
  57. package/package/components/common/table/Row.svelte +6 -2
  58. package/package/components/common/table/ScriptRow.svelte +11 -3
  59. package/package/components/copilot/chat/AIChatManager.svelte.js +2 -2
  60. package/package/components/copilot/chat/anthropic.d.ts +7 -1
  61. package/package/components/copilot/chat/anthropic.js +5 -2
  62. package/package/components/copilot/chat/app/core.js +129 -1
  63. package/package/components/copilot/chat/app/core.test.js +192 -0
  64. package/package/components/copilot/chat/chatLoop.d.ts +3 -0
  65. package/package/components/copilot/chat/chatLoop.js +13 -5
  66. package/package/components/copilot/chat/flow/FlowAIChat.svelte +55 -76
  67. package/package/components/copilot/chat/flow/core.d.ts +13 -3
  68. package/package/components/copilot/chat/flow/core.js +467 -116
  69. package/package/components/copilot/chat/flow/helperUtils.d.ts +19 -0
  70. package/package/components/copilot/chat/flow/helperUtils.js +68 -0
  71. package/package/components/copilot/chat/flow/helperUtils.test.js +116 -0
  72. package/package/components/copilot/chat/flow/inlineScriptsUtils.d.ts +5 -24
  73. package/package/components/copilot/chat/flow/inlineScriptsUtils.js +30 -55
  74. package/package/components/copilot/chat/flow/utils.test.js +59 -0
  75. package/package/components/copilot/chat/openai-responses.d.ts +7 -1
  76. package/package/components/copilot/chat/openai-responses.js +5 -2
  77. package/package/components/copilot/chat/shared.d.ts +1 -2
  78. package/package/components/copilot/chat/shared.js +94 -52
  79. package/package/components/copilot/chat/tokenUsage.d.ts +23 -0
  80. package/package/components/copilot/chat/tokenUsage.js +42 -0
  81. package/package/components/copilot/lib.d.ts +5 -1
  82. package/package/components/copilot/lib.js +21 -5
  83. package/package/components/deploymentRequest/DeploymentRequestPanel.svelte +337 -0
  84. package/package/components/deploymentRequest/DeploymentRequestPanel.svelte.d.ts +15 -0
  85. package/package/components/details/CopyableCodeBlock.svelte +18 -8
  86. package/package/components/details/CopyableCodeBlock.svelte.d.ts +1 -0
  87. package/package/components/flows/FlowAssetsHandler.svelte +19 -21
  88. package/package/components/flows/agentToolTree.d.ts +17 -0
  89. package/package/components/flows/agentToolTree.js +114 -0
  90. package/package/components/flows/agentToolTree.test.d.ts +1 -0
  91. package/package/components/flows/agentToolTree.test.js +86 -0
  92. package/package/components/flows/agentToolUtils.d.ts +0 -5
  93. package/package/components/flows/agentToolUtils.js +0 -49
  94. package/package/components/flows/content/FlowLoop.svelte +7 -4
  95. package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +15 -7
  96. package/package/components/flows/content/FlowSettings.svelte +29 -0
  97. package/package/components/flows/dfs.d.ts +6 -2
  98. package/package/components/flows/dfs.js +19 -11
  99. package/package/components/flows/flowDeleteController.d.ts +32 -0
  100. package/package/components/flows/flowDeleteController.js +54 -0
  101. package/package/components/flows/flowDeleteController.test.d.ts +1 -0
  102. package/package/components/flows/flowDeleteController.test.js +121 -0
  103. package/package/components/flows/flowDeleteUtils.d.ts +48 -0
  104. package/package/components/flows/flowDeleteUtils.js +150 -0
  105. package/package/components/flows/flowDeleteUtils.test.d.ts +1 -0
  106. package/package/components/flows/flowDeleteUtils.test.js +131 -0
  107. package/package/components/flows/flowDiff.d.ts +2 -47
  108. package/package/components/flows/flowDiff.js +16 -293
  109. package/package/components/flows/flowDiff.testUtils.d.ts +8 -0
  110. package/package/components/flows/flowDiff.testUtils.js +26 -0
  111. package/package/components/flows/flowDiffManager.svelte.js +20 -75
  112. package/package/components/flows/flowDiffManager.svelte.test.js +103 -2
  113. package/package/components/flows/flowExplorer.d.ts +4 -0
  114. package/package/components/flows/flowExplorer.js +7 -30
  115. package/package/components/flows/flowState.d.ts +1 -0
  116. package/package/components/flows/flowStateUtils.svelte.js +6 -1
  117. package/package/components/flows/flowTree.d.ts +91 -0
  118. package/package/components/flows/flowTree.js +326 -0
  119. package/package/components/flows/flowTree.test.d.ts +1 -0
  120. package/package/components/flows/flowTree.test.js +236 -0
  121. package/package/components/flows/map/FlowJobsMenu.svelte +36 -30
  122. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
  123. package/package/components/flows/map/FlowModuleSchemaMap.svelte +70 -227
  124. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +0 -2
  125. package/package/components/flows/pickers/PickHubScriptQuick.svelte +2 -2
  126. package/package/components/flows/previousResults.js +13 -41
  127. package/package/components/flows/previousResults.test.d.ts +1 -0
  128. package/package/components/flows/previousResults.test.js +65 -0
  129. package/package/components/flows/propPicker/OutputPicker.svelte +2 -1
  130. package/package/components/flows/propPicker/OutputPickerInner.svelte +41 -4
  131. package/package/components/flows/propPicker/StepHistory.svelte +9 -1
  132. package/package/components/git_sync/GitSyncContext.svelte.js +11 -5
  133. package/package/components/git_sync/GitSyncRepositoryCard.svelte +2 -29
  134. package/package/components/git_sync/PullWorkspaceModal.svelte +6 -7
  135. package/package/components/graph/FlowGraphV2.svelte +2 -2
  136. package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
  137. package/package/components/graph/groupedModulesProxy.svelte.d.ts +10 -0
  138. package/package/components/graph/groupedModulesProxy.svelte.js +17 -1
  139. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +5 -2
  140. package/package/components/home/HomeConnectDrawer.svelte +125 -0
  141. package/package/components/home/HomeConnectDrawer.svelte.d.ts +5 -0
  142. package/package/components/icons/GithubIcon.svelte +4 -4
  143. package/package/components/icons/GithubIcon.svelte.d.ts +5 -2
  144. package/package/components/instanceSettings/ExternalJwtTokens.svelte +85 -0
  145. package/package/components/instanceSettings/ExternalJwtTokens.svelte.d.ts +12 -0
  146. package/package/components/instanceSettings/GhesAppSettings.svelte +17 -0
  147. package/package/components/instanceSettings/IndexerMemorySettings.svelte +56 -29
  148. package/package/components/instanceSettings/SecretBackendConfig.svelte +9 -2
  149. package/package/components/instanceSettings.d.ts +1 -0
  150. package/package/components/instanceSettings.js +42 -8
  151. package/package/components/offboarding-utils.d.ts +11 -0
  152. package/package/components/offboarding-utils.js +100 -0
  153. package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -1
  154. package/package/components/raw_apps/RawAppEditor.svelte +27 -0
  155. package/package/components/raw_apps/RawAppEditorHeader.svelte +6 -1
  156. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +1 -0
  157. package/package/components/raw_apps/RawAppYamlEditor.svelte +81 -0
  158. package/package/components/raw_apps/RawAppYamlEditor.svelte.d.ts +20 -0
  159. package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
  160. package/package/components/runs/runsFilter.d.ts +1 -1
  161. package/package/components/script_builder.d.ts +1 -1
  162. package/package/components/select/Select.svelte +2 -1
  163. package/package/components/select/Select.svelte.d.ts +1 -0
  164. package/package/components/settings/CreateToken.svelte +113 -64
  165. package/package/components/settings/CreateToken.svelte.d.ts +3 -0
  166. package/package/components/settings/WorkspaceUserSettings.svelte +34 -28
  167. package/package/components/sidebar/SidebarContent.svelte +58 -2
  168. package/package/components/sidebar/WorkspaceMenu.svelte +8 -4
  169. package/package/components/triggers/AddTriggersButton.svelte +11 -0
  170. package/package/components/triggers/PermissionedAsLine.svelte +37 -3
  171. package/package/components/triggers/PermissionedAsLine.svelte.d.ts +6 -0
  172. package/package/components/triggers/TriggersEditor.svelte +5 -1
  173. package/package/components/triggers/TriggersWrapper.svelte +10 -0
  174. package/package/components/triggers/email/EmailTriggerEditorInner.svelte +13 -11
  175. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +13 -11
  176. package/package/components/triggers/http/RouteEditorConfigSection.svelte +15 -7
  177. package/package/components/triggers/http/RouteEditorInner.svelte +14 -14
  178. package/package/components/triggers/http/RoutesGenerator.svelte +6 -1
  179. package/package/components/triggers/http/RoutesPanel.svelte +1 -1
  180. package/package/components/triggers/http/utils.d.ts +1 -1
  181. package/package/components/triggers/http/utils.js +2 -2
  182. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +13 -11
  183. package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +13 -11
  184. package/package/components/triggers/native/NativeTriggerEditor.svelte +3 -0
  185. package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte +118 -0
  186. package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte.d.ts +17 -0
  187. package/package/components/triggers/native/utils.js +14 -0
  188. package/package/components/triggers/nats/NatsTriggerEditor.svelte.d.ts +4 -3
  189. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +13 -11
  190. package/package/components/triggers/postgres/PostgresTriggerEditor.svelte.d.ts +4 -3
  191. package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +13 -11
  192. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +13 -11
  193. package/package/components/triggers/sqs/SqsTriggerEditor.svelte.d.ts +4 -3
  194. package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +13 -11
  195. package/package/components/triggers/triggers.svelte.js +1 -0
  196. package/package/components/triggers/utils.js +27 -6
  197. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +13 -11
  198. package/package/components/triggers.d.ts +1 -1
  199. package/package/components/useFolderDefaultPermissionedAs.svelte.d.ts +13 -0
  200. package/package/components/useFolderDefaultPermissionedAs.svelte.js +63 -0
  201. package/package/components/workspaceSettings/CreateWorkspace.svelte +16 -677
  202. package/package/components/workspaceSettings/CreateWorkspaceInner.svelte +604 -0
  203. package/package/components/workspaceSettings/CreateWorkspaceInner.svelte.d.ts +7 -0
  204. package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +27 -25
  205. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +46 -8
  206. package/package/components/workspaceSettings/DataTableSettings.svelte +27 -22
  207. package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
  208. package/package/components/workspaceSettings/ForkDatatableSection.svelte +228 -0
  209. package/package/components/workspaceSettings/ForkDatatableSection.svelte.d.ts +28 -0
  210. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +8 -2
  211. package/package/components/workspaceSettings/RulesetEditor.svelte +27 -2
  212. package/package/components/workspaceSettings/VolumeStorageSettings.svelte +1 -1
  213. package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +17 -1
  214. package/package/consts.d.ts +3 -0
  215. package/package/consts.js +10 -0
  216. package/package/gen/core/OpenAPI.js +1 -1
  217. package/package/gen/schemas.gen.d.ts +485 -19
  218. package/package/gen/schemas.gen.js +489 -20
  219. package/package/gen/services.gen.d.ts +229 -2
  220. package/package/gen/services.gen.js +463 -1
  221. package/package/gen/types.gen.d.ts +866 -29
  222. package/package/githubApp.js +5 -1
  223. package/package/hubPaths.json +1 -4
  224. package/package/infer.js +13 -1
  225. package/package/infer.svelte.js +10 -1
  226. package/package/monaco_workers/sqlTypePlugin.worker.d.ts +10 -0
  227. package/package/monaco_workers/sqlTypePlugin.worker.js +39 -0
  228. package/package/script_helpers.d.ts +8 -2
  229. package/package/script_helpers.js +14 -0
  230. package/package/stores.d.ts +4 -0
  231. package/package/stores.js +1 -0
  232. package/package/system_prompts/prompts.d.ts +4 -3
  233. package/package/system_prompts/prompts.js +270 -20
  234. package/package/templates/ci_test_bun.ts.template +19 -0
  235. package/package/templates/ci_test_python.py.template +18 -0
  236. package/package/utils_workspace_deploy.d.ts +8 -8
  237. package/package/utils_workspace_deploy.js +86 -420
  238. package/package.json +3 -3
  239. package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +0 -153
  240. package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +0 -21
  241. package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +0 -136
  242. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.d.ts +0 -15
  243. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +0 -107
  244. package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +0 -50
  245. package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +0 -93
  246. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.d.ts +0 -29
  247. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.js +0 -134
  248. package/package/components/copilot/chat/__tests__/app/appResultsWriter.d.ts +0 -30
  249. package/package/components/copilot/chat/__tests__/app/appResultsWriter.js +0 -197
  250. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.d.ts +0 -10
  251. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.js +0 -9
  252. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/meta.json +0 -4
  253. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.d.ts +0 -6
  254. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.js +0 -5
  255. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/meta.json +0 -4
  256. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.d.ts +0 -12
  257. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js +0 -14
  258. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/meta.json +0 -4
  259. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.d.ts +0 -8
  260. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.js +0 -25
  261. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/meta.json +0 -4
  262. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.d.ts +0 -7
  263. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.js +0 -5
  264. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/meta.json +0 -4
  265. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.d.ts +0 -8
  266. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.js +0 -5
  267. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/meta.json +0 -4
  268. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.d.ts +0 -10
  269. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.tsx +0 -26
  270. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.d.ts +0 -10
  271. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.tsx +0 -79
  272. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.d.ts +0 -10
  273. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.tsx +0 -46
  274. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.d.ts +0 -10
  275. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.tsx +0 -56
  276. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.d.ts +0 -6
  277. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.tsx +0 -59
  278. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.d.ts +0 -16
  279. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.tsx +0 -119
  280. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.d.ts +0 -15
  281. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.js +0 -14
  282. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/meta.json +0 -4
  283. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.d.ts +0 -14
  284. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.js +0 -5
  285. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/meta.json +0 -4
  286. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.d.ts +0 -6
  287. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.js +0 -41
  288. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/meta.json +0 -4
  289. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.d.ts +0 -15
  290. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.js +0 -3
  291. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/meta.json +0 -4
  292. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.d.ts +0 -9
  293. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.tsx +0 -51
  294. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.d.ts +0 -8
  295. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.tsx +0 -27
  296. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.d.ts +0 -8
  297. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.tsx +0 -18
  298. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.d.ts +0 -12
  299. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.tsx +0 -81
  300. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.d.ts +0 -3
  301. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.js +0 -3
  302. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/meta.json +0 -4
  303. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.d.ts +0 -3
  304. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.js +0 -3
  305. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/meta.json +0 -4
  306. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.d.ts +0 -2
  307. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.tsx +0 -38
  308. package/package/components/copilot/chat/__tests__/app/variants/baseline.d.ts +0 -6
  309. package/package/components/copilot/chat/__tests__/app/variants/baseline.js +0 -10
  310. package/package/components/copilot/chat/__tests__/app/variants/index.d.ts +0 -3
  311. package/package/components/copilot/chat/__tests__/app/variants/index.js +0 -3
  312. package/package/components/copilot/chat/__tests__/app/variants/streamlined.d.ts +0 -6
  313. package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +0 -137
  314. package/package/components/copilot/chat/__tests__/flow/expected/test1.json +0 -134
  315. package/package/components/copilot/chat/__tests__/flow/expected/test2.json +0 -183
  316. package/package/components/copilot/chat/__tests__/flow/expected/test3.json +0 -204
  317. package/package/components/copilot/chat/__tests__/flow/expected/test4.json +0 -175
  318. package/package/components/copilot/chat/__tests__/flow/expected/test5_modify_simple.json +0 -68
  319. package/package/components/copilot/chat/__tests__/flow/expected/test6_modify_medium.json +0 -142
  320. package/package/components/copilot/chat/__tests__/flow/expected/test7_modify_complex.json +0 -136
  321. package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +0 -294
  322. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.d.ts +0 -17
  323. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +0 -49
  324. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.d.ts +0 -12
  325. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +0 -79
  326. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +0 -50
  327. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +0 -102
  328. package/package/components/copilot/chat/__tests__/flow/initial/test5_initial.json +0 -53
  329. package/package/components/copilot/chat/__tests__/flow/initial/test6_initial.json +0 -68
  330. package/package/components/copilot/chat/__tests__/flow/initial/test7_initial.json +0 -120
  331. package/package/components/copilot/chat/__tests__/flow/variants/baseline.d.ts +0 -6
  332. package/package/components/copilot/chat/__tests__/flow/variants/baseline.js +0 -10
  333. package/package/components/copilot/chat/__tests__/flow/variants/index.d.ts +0 -3
  334. package/package/components/copilot/chat/__tests__/flow/variants/index.js +0 -3
  335. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.d.ts +0 -15
  336. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +0 -388
  337. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +0 -45
  338. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +0 -121
  339. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +0 -28
  340. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +0 -96
  341. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.d.ts +0 -32
  342. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.js +0 -130
  343. package/package/components/copilot/chat/__tests__/shared/baseVariants.d.ts +0 -45
  344. package/package/components/copilot/chat/__tests__/shared/baseVariants.js +0 -57
  345. package/package/components/copilot/chat/__tests__/shared/index.d.ts +0 -10
  346. package/package/components/copilot/chat/__tests__/shared/index.js +0 -5
  347. package/package/components/copilot/chat/__tests__/shared/types.d.ts +0 -105
  348. package/package/components/copilot/chat/__tests__/shared/types.js +0 -9
  349. package/package/components/copilot/chat/flow/utils.d.ts +0 -14
  350. package/package/components/copilot/chat/flow/utils.js +0 -108
  351. package/package/components/flows/agentToolUtils.test.js +0 -55
  352. /package/package/components/copilot/chat/{__tests__/app/appChat.eval.test.d.ts → app/core.test.d.ts} +0 -0
  353. /package/package/components/copilot/chat/{__tests__/flow/flowChat.eval.test.d.ts → flow/helperUtils.test.d.ts} +0 -0
  354. /package/package/components/{flows/agentToolUtils.test.d.ts → copilot/chat/flow/utils.test.d.ts} +0 -0
@@ -415,7 +415,6 @@ async function editScript(stay, parentHash, deploymentMsg, triggersToDeploy) {
415
415
  ws_error_handler_muted: script.ws_error_handler_muted,
416
416
  priority: script.priority,
417
417
  restart_unless_cancelled: script.restart_unless_cancelled,
418
- delete_after_use: script.delete_after_use,
419
418
  timeout: script.timeout,
420
419
  concurrency_key: emptyString(script.concurrency_key) ? undefined : script.concurrency_key,
421
420
  visible_to_runner_only: script.visible_to_runner_only,
@@ -557,7 +556,6 @@ async function saveDraft(forceSave = false) {
557
556
  ws_error_handler_muted: script.ws_error_handler_muted,
558
557
  priority: script.priority,
559
558
  restart_unless_cancelled: script.restart_unless_cancelled,
560
- delete_after_use: script.delete_after_use,
561
559
  timeout: script.timeout,
562
560
  concurrency_key: emptyString(script.concurrency_key)
563
561
  ? undefined
@@ -1112,6 +1110,38 @@ async function loadWorkerTags() {
1112
1110
  WAC Python
1113
1111
  </Button>
1114
1112
  </span>
1113
+ <Button
1114
+ size="xs2"
1115
+ variant="border"
1116
+ color="light"
1117
+ startIcon={{
1118
+ icon: LanguageIcon,
1119
+ props: { lang: 'bun', width: 16, height: 16 }
1120
+ } as ButtonType.Icon}
1121
+ on:click={() => {
1122
+ template = 'ci_test_bun'
1123
+ script.language = 'bun'
1124
+ initContent('bun', script.kind, template)
1125
+ }}
1126
+ >
1127
+ CI Test TypeScript
1128
+ </Button>
1129
+ <Button
1130
+ size="xs2"
1131
+ variant="border"
1132
+ color="light"
1133
+ startIcon={{
1134
+ icon: LanguageIcon,
1135
+ props: { lang: 'python3', width: 16, height: 16 }
1136
+ } as ButtonType.Icon}
1137
+ on:click={() => {
1138
+ template = 'ci_test_python'
1139
+ script.language = 'python3'
1140
+ initContent('python3', script.kind, template)
1141
+ }}
1142
+ >
1143
+ CI Test Python
1144
+ </Button>
1115
1145
  </div>
1116
1146
  {#if customUi?.settingsPanel?.metadata?.disableScriptKind !== true}
1117
1147
  <Section label="Script kind">
@@ -1403,7 +1433,7 @@ async function loadWorkerTags() {
1403
1433
  >
1404
1434
  {/snippet}
1405
1435
  </Section>
1406
- <Section label="Delete after use">
1436
+ <Section label="Delete after completion">
1407
1437
  {#snippet header()}
1408
1438
  <Tooltip
1409
1439
  documentationLink="https://www.windmill.dev/docs/script_editor/settings#delete-after-use"
@@ -1414,7 +1444,8 @@ async function loadWorkerTags() {
1414
1444
  <br />
1415
1445
  <br />
1416
1446
  The logs, arguments and results of the job will be completely deleted from Windmill
1417
- once it is complete and the result has been returned.
1447
+ after the specified delay once it is complete and the result has been returned.
1448
+ Set to 0 for immediate deletion.
1418
1449
  <br />
1419
1450
  <br />
1420
1451
  The deletion is irreversible.
@@ -1429,18 +1460,24 @@ async function loadWorkerTags() {
1429
1460
  <Toggle
1430
1461
  disabled={!$enterpriseLicense}
1431
1462
  size="sm"
1432
- checked={Boolean(script.delete_after_use)}
1463
+ checked={script.delete_after_secs != null}
1433
1464
  on:change={() => {
1434
- if (script.delete_after_use) {
1435
- script.delete_after_use = undefined
1465
+ if (script.delete_after_secs != null) {
1466
+ script.delete_after_secs = undefined
1436
1467
  } else {
1437
- script.delete_after_use = true
1468
+ script.delete_after_secs = 0
1438
1469
  }
1439
1470
  }}
1440
1471
  options={{
1441
- right: 'Delete logs, arguments and results after use'
1472
+ right: 'Delete logs, arguments and results after completion'
1442
1473
  }}
1443
1474
  />
1475
+ {#if script.delete_after_secs != null}
1476
+ <SecondsInput
1477
+ bind:seconds={script.delete_after_secs}
1478
+ disabled={!$enterpriseLicense}
1479
+ />
1480
+ {/if}
1444
1481
  </div>
1445
1482
  </Section>
1446
1483
  {#if !isCloudHosted()}
@@ -1518,11 +1555,15 @@ async function loadWorkerTags() {
1518
1555
  />
1519
1556
  </div>
1520
1557
  </Section>
1521
- <Section label="On behalf of last editor">
1558
+ <Section
1559
+ label={canPreserve
1560
+ ? 'Run on behalf of a specified user'
1561
+ : 'On behalf of last editor'}
1562
+ >
1522
1563
  {#snippet header()}
1523
1564
  <Tooltip>
1524
1565
  When this option is enabled, the script will be run with the permissions of
1525
- the last editor.
1566
+ {canPreserve ? 'the specified user' : 'the last editor'}.
1526
1567
  </Tooltip>
1527
1568
  {/snippet}
1528
1569
  <div class="flex gap-2 shrink flex-col">
@@ -1373,9 +1373,7 @@ $effect(() => {
1373
1373
  {/key}
1374
1374
  {#if showPsCommonParams}
1375
1375
  <div class="mt-2">
1376
- <PowerShellCommonParams
1377
- bind:args={psCommonParams}
1378
- />
1376
+ <PowerShellCommonParams bind:args={psCommonParams} />
1379
1377
  </div>
1380
1378
  {/if}
1381
1379
  </div>
@@ -11,7 +11,7 @@ interface Props {
11
11
  path: string | undefined;
12
12
  lang: Preview['language'];
13
13
  kind?: string | undefined;
14
- template?: 'pgsql' | 'mysql' | 'script' | 'docker' | 'powershell' | 'bunnative' | 'claudesandbox' | 'wac_python' | 'wac_typescript';
14
+ template?: 'pgsql' | 'mysql' | 'script' | 'docker' | 'powershell' | 'bunnative' | 'claudesandbox' | 'wac_python' | 'wac_typescript' | 'ci_test_bun' | 'ci_test_python';
15
15
  tag: string | undefined;
16
16
  initialArgs?: Record<string, any>;
17
17
  fixedOverflowWidgets?: boolean;
@@ -1,16 +1,16 @@
1
1
  <script lang="ts">import TableCustom from './TableCustom.svelte';
2
- import { GroupService, UserService, GranularAclService } from '../gen';
2
+ import { GroupService, UserService, GranularAclService, ResourceService, FolderService } from '../gen';
3
3
  import { createEventDispatcher } from 'svelte';
4
4
  import { userStore, workspaceStore } from '../stores';
5
5
  import { Alert, Button, Drawer } from './common';
6
6
  import DrawerContent from './common/drawer/DrawerContent.svelte';
7
- import Tooltip from './Tooltip.svelte';
8
7
  import { sendUserToast } from '../toast';
9
8
  import { isOwner } from '../utils';
10
9
  import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
11
10
  import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
12
11
  import Select from './select/Select.svelte';
13
12
  import { safeSelectItems } from './select/utils.svelte';
13
+ import Toggle from './Toggle.svelte';
14
14
  import { Trash } from 'lucide-svelte';
15
15
  const dispatch = createEventDispatcher();
16
16
  let kind;
@@ -23,13 +23,100 @@ let acls = $state([]);
23
23
  let groups = $state([]);
24
24
  let usernames = $state([]);
25
25
  let drawer = $state();
26
+ let linkedVarPaths = $state([]);
27
+ let alsoApplyToLinked = $state(true);
28
+ let defaultPerms = $state([]);
29
+ let defaultPermsLabel = $state('');
30
+ async function loadDefaultPerms() {
31
+ const currentPath = path;
32
+ const parts = currentPath.split('/');
33
+ if (parts[0] === 'f' && parts.length >= 2) {
34
+ const folderName = parts[1];
35
+ defaultPermsLabel = `Folder f/${folderName} permissions`;
36
+ try {
37
+ const folder = await FolderService.getFolder({
38
+ workspace: $workspaceStore,
39
+ name: folderName
40
+ });
41
+ if (path !== currentPath)
42
+ return;
43
+ const perms = [];
44
+ for (const owner of folder.owners) {
45
+ perms.push({ label: owner, write: true });
46
+ }
47
+ for (const [owner, write] of Object.entries(folder.extra_perms ?? {})) {
48
+ if (!folder.owners.includes(owner)) {
49
+ perms.push({ label: owner, write });
50
+ }
51
+ }
52
+ defaultPerms = perms;
53
+ }
54
+ catch {
55
+ if (path !== currentPath)
56
+ return;
57
+ defaultPerms = [];
58
+ }
59
+ }
60
+ else if (parts[0] === 'u' && parts.length >= 2) {
61
+ defaultPermsLabel = `User u/${parts[1]} permissions`;
62
+ defaultPerms = [{ label: `u/${parts[1]}`, write: true }];
63
+ }
64
+ else if (parts[0] === 'g' && parts.length >= 2) {
65
+ defaultPermsLabel = `Group g/${parts[1]} permissions`;
66
+ defaultPerms = [{ label: `g/${parts[1]}`, write: true }];
67
+ }
68
+ else {
69
+ defaultPerms = [];
70
+ defaultPermsLabel = '';
71
+ }
72
+ }
73
+ function collectVarRefs(value) {
74
+ const paths = [];
75
+ function walk(v) {
76
+ if (typeof v === 'string' && v.startsWith('$var:')) {
77
+ paths.push(v.substring('$var:'.length));
78
+ }
79
+ else if (Array.isArray(v)) {
80
+ v.forEach(walk);
81
+ }
82
+ else if (v && typeof v === 'object') {
83
+ Object.values(v).forEach(walk);
84
+ }
85
+ }
86
+ walk(value);
87
+ return [...new Set(paths)];
88
+ }
89
+ async function loadLinkedVarPaths() {
90
+ if (kind !== 'resource') {
91
+ linkedVarPaths = [];
92
+ return;
93
+ }
94
+ const currentPath = path;
95
+ try {
96
+ const resource = await ResourceService.getResource({
97
+ workspace: $workspaceStore,
98
+ path: currentPath
99
+ });
100
+ if (path !== currentPath)
101
+ return;
102
+ linkedVarPaths = collectVarRefs(resource.value);
103
+ }
104
+ catch {
105
+ if (path !== currentPath)
106
+ return;
107
+ linkedVarPaths = [];
108
+ }
109
+ }
26
110
  let own = $state(false);
27
111
  export async function openDrawer(newPath, kind_l, isOwnerOverride) {
28
112
  path = newPath;
29
113
  kind = kind_l;
114
+ alsoApplyToLinked = true;
30
115
  loadAcls();
31
116
  loadGroups();
32
117
  loadUsernames();
118
+ loadLinkedVarPaths();
119
+ loadDefaultPerms();
33
120
  if (isOwnerOverride !== undefined) {
34
121
  own = isOwnerOverride;
35
122
  }
@@ -58,6 +145,21 @@ async function deleteAcl(owner) {
58
145
  kind,
59
146
  requestBody: { owner }
60
147
  });
148
+ if (alsoApplyToLinked) {
149
+ for (const varPath of linkedVarPaths) {
150
+ try {
151
+ await GranularAclService.removeGranularAcls({
152
+ workspace: $workspaceStore,
153
+ path: varPath,
154
+ kind: 'variable',
155
+ requestBody: { owner }
156
+ });
157
+ }
158
+ catch (err) {
159
+ sendUserToast(`Failed to update variable ${varPath}: ${err}`, true);
160
+ }
161
+ }
162
+ }
61
163
  loadAcls();
62
164
  dispatch('change', { path, kind });
63
165
  }
@@ -72,111 +174,147 @@ async function addAcl(owner, write) {
72
174
  kind,
73
175
  requestBody: { owner, write }
74
176
  });
177
+ if (alsoApplyToLinked) {
178
+ for (const varPath of linkedVarPaths) {
179
+ try {
180
+ await GranularAclService.addGranularAcls({
181
+ workspace: $workspaceStore,
182
+ path: varPath,
183
+ kind: 'variable',
184
+ requestBody: { owner, write }
185
+ });
186
+ }
187
+ catch (err) {
188
+ sendUserToast(`Failed to update variable ${varPath}: ${err}`, true);
189
+ }
190
+ }
191
+ }
75
192
  loadAcls();
76
193
  dispatch('change', { path, kind });
77
194
  }
78
195
  </script>
79
196
 
80
197
  <Drawer bind:this={drawer}>
81
- <DrawerContent title="Share {path}" on:close={drawer?.closeDrawer}>
82
- <div class="flex flex-col gap-2">
83
- <h1 class="text-sm font-semibold text-emphasis">{path}</h1>
84
- <span class="text-xs font-semibold text-emphasis"
85
- >Extra Permissions ({acls?.length ?? 0}) &nbsp; <Tooltip
86
- >Items already have default permissions. If belonging to an user or group, that group or
87
- user owns it and can write to it as well as modify its permisions and move it. Folders
88
- have read/write that apply to the whole folder and are additive to the items permissions.</Tooltip
89
- ></span
90
- >
91
- {#if !own}
92
- <Alert type="warning" title="Not owner"
93
- >Since you do not own this item, you cannot modify its permission</Alert
94
- >
95
- {/if}
96
- <div>
97
- {#if own}
98
- <div class="flex flex-row flex-wrap gap-2 items-center">
99
- <div>
100
- <ToggleButtonGroup bind:selected={ownerKind} on:selected={() => (owner = '')}>
101
- {#snippet children({ item })}
102
- <ToggleButton value="user" label="User" {item} />
103
- <ToggleButton value="group" label="Group" {item} />
104
- {/snippet}
105
- </ToggleButtonGroup>
198
+ <DrawerContent title="Permissions for {path}" on:close={drawer?.closeDrawer}>
199
+ <div class="flex flex-col gap-4">
200
+ {#if defaultPerms.length > 0}
201
+ <div class="flex flex-col gap-1">
202
+ <span class="text-sm font-semibold text-emphasis">{defaultPermsLabel}</span>
203
+ {#each defaultPerms as perm (perm.label)}
204
+ <div class="flex items-center justify-between text-xs text-primary">
205
+ <span>{perm.label}</span>
206
+ <span class="text-tertiary">{perm.write ? 'Writer' : 'Viewer'}</span>
106
207
  </div>
107
- {#key ownerKind}
108
- <Select
109
- items={safeSelectItems(
110
- (ownerKind === 'user' ? usernames : groups).map((x) => x.toString())
111
- )}
112
- bind:value={owner}
113
- class="grow min-w-48"
114
- />
115
- {/key}
116
- <Button
117
- size="lg"
118
- variant="accent"
119
- disabled={!newOwner}
120
- on:click={() => addAcl(newOwner, write)}>Add permission</Button
121
- >
208
+ {/each}
209
+ </div>
210
+ {/if}
211
+ <div class="flex flex-col gap-2">
212
+ <span class="text-sm font-semibold text-emphasis"
213
+ >Extra permissions ({acls?.length ?? 0})</span
214
+ >
215
+ {#if linkedVarPaths.length > 0}
216
+ <div class="flex flex-col gap-1.5 p-3 border rounded bg-surface-secondary text-xs">
217
+ <Toggle
218
+ size="xs"
219
+ bind:checked={alsoApplyToLinked}
220
+ options={{ right: 'Also apply to linked variables' }}
221
+ />
222
+ <ul class="text-2xs text-secondary list-disc ml-4">
223
+ {#each linkedVarPaths as varPath (varPath)}
224
+ <li>{varPath}</li>
225
+ {/each}
226
+ </ul>
122
227
  </div>
123
228
  {/if}
124
- {#if acls?.length > 0}
125
- <TableCustom>
126
-
127
- {#snippet headerRow()}
128
- <tr >
129
- <th>owner</th>
130
- <th></th>
131
- <th></th>
132
- </tr>
133
- {/snippet}
134
- {#snippet body()}
135
- <tbody>
136
- {#each acls as [owner, write]}
137
- <tr>
138
- <td>{owner}</td>
139
- <td
140
- >{#if own}
141
- <div>
142
- <ToggleButtonGroup
143
- selected={write ? 'writer' : 'viewer'}
144
- on:selected={async (e) => {
145
- const role = e.detail
146
- if (role == 'writer') {
147
- await addAcl(owner, true)
148
- } else {
149
- await addAcl(owner, false)
150
- }
151
- loadAcls()
152
- }}
153
- >
154
- {#snippet children({ item })}
155
- <ToggleButton value="viewer" small label="Viewer" {item} />
156
- <ToggleButton value="writer" small label="Writer" {item} />
157
- {/snippet}
158
- </ToggleButtonGroup>
159
- </div>
160
- {:else}{write}{/if}</td
161
- >
162
- <td>
163
- {#if own}
164
- <Button
165
- variant="default"
166
- destructive
167
- size="xs"
168
- on:click={() => deleteAcl(owner)}
169
- startIcon={{ icon: Trash }}
170
- />
171
- {/if}
172
- </td>
173
- </tr>
174
- {/each}
175
- </tbody>
176
- {/snippet}
177
- </TableCustom>
229
+ {#if !own}
230
+ <Alert type="warning" title="Not owner"
231
+ >Since you do not own this item, you cannot modify its permission</Alert
232
+ >
178
233
  {/if}
234
+ <div>
235
+ {#if own}
236
+ <div class="flex flex-row flex-wrap gap-2 items-center">
237
+ <div>
238
+ <ToggleButtonGroup bind:selected={ownerKind} on:selected={() => (owner = '')}>
239
+ {#snippet children({ item })}
240
+ <ToggleButton value="user" label="User" {item} />
241
+ <ToggleButton value="group" label="Group" {item} />
242
+ {/snippet}
243
+ </ToggleButtonGroup>
244
+ </div>
245
+ {#key ownerKind}
246
+ <Select
247
+ items={safeSelectItems(
248
+ (ownerKind === 'user' ? usernames : groups).map((x) => x.toString())
249
+ )}
250
+ bind:value={owner}
251
+ class="grow min-w-48"
252
+ />
253
+ {/key}
254
+ <Button
255
+ size="lg"
256
+ variant="accent"
257
+ disabled={!newOwner}
258
+ on:click={() => addAcl(newOwner, write)}>Add permission</Button
259
+ >
260
+ </div>
261
+ {/if}
262
+ {#if acls?.length > 0}
263
+ <TableCustom>
264
+ {#snippet headerRow()}
265
+ <tr>
266
+ <th>owner</th>
267
+ <th></th>
268
+ <th></th>
269
+ </tr>
270
+ {/snippet}
271
+ {#snippet body()}
272
+ <tbody>
273
+ {#each acls as [owner, write]}
274
+ <tr>
275
+ <td>{owner}</td>
276
+ <td
277
+ >{#if own}
278
+ <div>
279
+ <ToggleButtonGroup
280
+ selected={write ? 'writer' : 'viewer'}
281
+ on:selected={async (e) => {
282
+ const role = e.detail
283
+ if (role == 'writer') {
284
+ await addAcl(owner, true)
285
+ } else {
286
+ await addAcl(owner, false)
287
+ }
288
+ loadAcls()
289
+ }}
290
+ >
291
+ {#snippet children({ item })}
292
+ <ToggleButton value="viewer" small label="Viewer" {item} />
293
+ <ToggleButton value="writer" small label="Writer" {item} />
294
+ {/snippet}
295
+ </ToggleButtonGroup>
296
+ </div>
297
+ {:else}{write}{/if}</td
298
+ >
299
+ <td>
300
+ {#if own}
301
+ <Button
302
+ variant="default"
303
+ destructive
304
+ size="xs"
305
+ on:click={() => deleteAcl(owner)}
306
+ startIcon={{ icon: Trash }}
307
+ />
308
+ {/if}
309
+ </td>
310
+ </tr>
311
+ {/each}
312
+ </tbody>
313
+ {/snippet}
314
+ </TableCustom>
315
+ {/if}
316
+ </div>
179
317
  </div>
180
- </div>
181
- </DrawerContent>
318
+ </div></DrawerContent
319
+ >
182
320
  </Drawer>