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
@@ -0,0 +1,238 @@
1
+ <script lang="ts">import { Alert, Button } from './common';
2
+ import { fade } from 'svelte/transition';
3
+ import { classNames } from '../utils';
4
+ import { AlertTriangle, CornerDownLeft, Loader2 } from 'lucide-svelte';
5
+ import { UserService, FolderService } from '../gen';
6
+ import { workspaceStore } from '../stores';
7
+ import { sendUserToast } from '../toast';
8
+ import Toggle from './Toggle.svelte';
9
+ import OffboardWorkspaceSection from './OffboardWorkspaceSection.svelte';
10
+ import { countPaths } from './offboarding-utils';
11
+ let { open = $bindable(), username, reassignOnly = false, onClose, onComplete } = $props();
12
+ let preview = $state(undefined);
13
+ let loading = $state(false);
14
+ let submitting = $state(false);
15
+ let conflicts = $state([]);
16
+ let doReassign = $state(true);
17
+ let targetKind = $state('user');
18
+ let selectedUser = $state(undefined);
19
+ let selectedFolder = $state(undefined);
20
+ let selectedOperator = $state(undefined);
21
+ let deleteUser = $state(true);
22
+ $effect(() => {
23
+ deleteUser = !reassignOnly;
24
+ });
25
+ let users = $state([]);
26
+ let folders = $state([]);
27
+ let ownedCount = $derived(preview ? countPaths(preview.owned) : 0);
28
+ let onBehalfCount = $derived(preview ? countPaths(preview.executing_on_behalf) : 0);
29
+ let hasItems = $derived(ownedCount > 0 || onBehalfCount > 0);
30
+ let reassignTo = $derived(targetKind === 'user'
31
+ ? selectedUser
32
+ ? `u/${selectedUser}`
33
+ : undefined
34
+ : selectedFolder
35
+ ? `f/${selectedFolder}`
36
+ : undefined);
37
+ let canSubmit = $derived(!doReassign || !hasItems || (reassignTo != null && selectedOperator != null));
38
+ $effect(() => {
39
+ if (open) {
40
+ doReassign = true;
41
+ targetKind = 'user';
42
+ selectedUser = undefined;
43
+ selectedFolder = undefined;
44
+ selectedOperator = undefined;
45
+ conflicts = [];
46
+ loadPreview();
47
+ }
48
+ });
49
+ async function loadPreview() {
50
+ loading = true;
51
+ conflicts = [];
52
+ try {
53
+ const workspace = $workspaceStore ?? '';
54
+ const [previewResult, usernamesList, foldersList] = await Promise.all([
55
+ UserService.offboardPreview({ workspace, username }),
56
+ UserService.listUsernames({ workspace }),
57
+ FolderService.listFolders({ workspace })
58
+ ]);
59
+ preview = previewResult;
60
+ users = usernamesList.filter((u) => u !== username).map((u) => ({ label: u, value: u }));
61
+ folders = foldersList.map((f) => ({ label: f.name, value: f.name }));
62
+ }
63
+ catch (e) {
64
+ sendUserToast('Failed to load offboard preview', true);
65
+ onClose();
66
+ }
67
+ finally {
68
+ loading = false;
69
+ }
70
+ }
71
+ async function submit() {
72
+ submitting = true;
73
+ conflicts = [];
74
+ try {
75
+ if (!doReassign || !hasItems) {
76
+ await UserService.deleteUser({ workspace: $workspaceStore ?? '', username });
77
+ sendUserToast(`User ${username} removed`);
78
+ onComplete();
79
+ return;
80
+ }
81
+ if (!reassignTo)
82
+ return;
83
+ const result = await UserService.offboardWorkspaceUser({
84
+ workspace: $workspaceStore ?? '',
85
+ username,
86
+ requestBody: {
87
+ reassign_to: reassignTo,
88
+ new_on_behalf_of_user: selectedOperator,
89
+ delete_user: deleteUser
90
+ }
91
+ });
92
+ if (result.conflicts && result.conflicts.length > 0) {
93
+ conflicts = result.conflicts;
94
+ }
95
+ else {
96
+ sendUserToast(deleteUser
97
+ ? `User ${username} offboarded successfully`
98
+ : `Items reassigned from ${username} successfully`);
99
+ onComplete();
100
+ }
101
+ }
102
+ catch (e) {
103
+ sendUserToast(`Offboarding failed: ${e}`, true);
104
+ }
105
+ finally {
106
+ submitting = false;
107
+ }
108
+ }
109
+ function fadeFast(node) {
110
+ return fade(node, { duration: 100 });
111
+ }
112
+ </script>
113
+
114
+ {#if open}
115
+ <div transition:fadeFast|local class="fixed top-0 bottom-0 left-0 right-0 z-[5000]" role="dialog">
116
+ <div
117
+ class={classNames(
118
+ 'fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity',
119
+ 'ease-out duration-300 opacity-100'
120
+ )}
121
+ ></div>
122
+
123
+ <div class="fixed inset-0 z-10 overflow-y-auto">
124
+ <div class="flex min-h-full items-center justify-center p-4">
125
+ <div
126
+ class="relative transform overflow-hidden rounded-lg bg-surface px-4 pt-5 pb-4 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-lg sm:p-6 max-h-[80vh] overflow-y-auto"
127
+ >
128
+ <div class="flex">
129
+ <div
130
+ class="flex h-12 w-12 items-center justify-center rounded-full bg-red-100 dark:bg-red-800/50"
131
+ >
132
+ <AlertTriangle class="text-red-500 dark:text-red-400" />
133
+ </div>
134
+ <div class="ml-4 text-left flex-1">
135
+ <h3 class="text-lg font-medium text-primary">
136
+ {reassignOnly ? 'Reassign user items' : 'Offboard user'}
137
+ </h3>
138
+ <p class="text-sm text-secondary mt-1">
139
+ {reassignOnly
140
+ ? `Reassign items owned by ${username}`
141
+ : `Remove ${username} and reassign their items`}
142
+ </p>
143
+ </div>
144
+ </div>
145
+
146
+ {#if loading}
147
+ <div class="flex items-center justify-center py-8">
148
+ <Loader2 class="animate-spin" size={24} />
149
+ <span class="ml-2 text-sm text-secondary">Loading preview...</span>
150
+ </div>
151
+ {:else if preview}
152
+ <div class="mt-4 space-y-3">
153
+ {#if hasItems}
154
+ {#if !reassignOnly}
155
+ <Toggle
156
+ bind:checked={doReassign}
157
+ size="xs"
158
+ options={{ right: 'Reassign items before removing' }}
159
+ />
160
+ {/if}
161
+
162
+ {#if doReassign}
163
+ <OffboardWorkspaceSection
164
+ {preview}
165
+ {username}
166
+ {deleteUser}
167
+ bind:targetKind
168
+ bind:selectedUser
169
+ bind:selectedFolder
170
+ bind:selectedOperator
171
+ {users}
172
+ {folders}
173
+ />
174
+ {:else}
175
+ <Alert type="warning" title="Items will not be reassigned">
176
+ <p class="text-xs">
177
+ All items owned by {username} ({ownedCount} owned, {onBehalfCount} running on behalf)
178
+ will be left as-is. Triggers and runnables may stop working if the user is removed.
179
+ </p>
180
+ </Alert>
181
+ {/if}
182
+ {:else}
183
+ <p class="text-sm text-secondary">
184
+ This user has no items to reassign in this workspace.
185
+ </p>
186
+ {/if}
187
+
188
+ {#if conflicts.length > 0}
189
+ <Alert type="error" title="Path conflicts detected">
190
+ <p class="text-xs mb-1"
191
+ >These items already exist at the target. Rename or delete them, or choose a
192
+ different user/folder.</p
193
+ >
194
+ <ul class="text-xs list-disc list-inside max-h-32 overflow-y-auto">
195
+ {#each conflicts as conflict}
196
+ <li>{conflict}</li>
197
+ {/each}
198
+ </ul>
199
+ </Alert>
200
+ {/if}
201
+ </div>
202
+ {/if}
203
+
204
+ <div class="flex items-center space-x-2 flex-row-reverse space-x-reverse mt-4">
205
+ {#if hasItems || deleteUser}
206
+ <Button
207
+ disabled={submitting || !canSubmit}
208
+ onclick={submit}
209
+ variant="accent"
210
+ size="sm"
211
+ destructive
212
+ shortCut={{ Icon: CornerDownLeft, hide: false, withoutModifier: true }}
213
+ >
214
+ {#if submitting}
215
+ <Loader2 class="animate-spin" />
216
+ {/if}
217
+ <span class="min-w-20">
218
+ {deleteUser ? 'Offboard' : 'Reassign'}
219
+ </span>
220
+ </Button>
221
+ {:else if !loading}
222
+ <Button onclick={onClose} variant="accent" size="sm">Close</Button>
223
+ {/if}
224
+ <Button
225
+ disabled={submitting}
226
+ onclick={onClose}
227
+ variant="default"
228
+ size="sm"
229
+ shortCut={{ key: 'Esc', hide: false, withoutModifier: true }}
230
+ >
231
+ Cancel
232
+ </Button>
233
+ </div>
234
+ </div>
235
+ </div>
236
+ </div>
237
+ </div>
238
+ {/if}
@@ -0,0 +1,10 @@
1
+ type Props = {
2
+ open: boolean;
3
+ username: string;
4
+ reassignOnly?: boolean;
5
+ onClose: () => void;
6
+ onComplete: () => void;
7
+ };
8
+ declare const UserOffboardingModal: import("svelte").Component<Props, {}, "open">;
9
+ type UserOffboardingModal = ReturnType<typeof UserOffboardingModal>;
10
+ export default UserOffboardingModal;
@@ -24,7 +24,7 @@ let hasSelectableItems = $derived(selectableItems.length > 0);
24
24
  <!-- Select all row -->
25
25
  <div class="px-4 py-2 flex items-center justify-between">
26
26
  <div
27
- class="flex items-center gap-2 text-secondary text-sm"
27
+ class="flex items-center gap-2 text-secondary text-xs"
28
28
  class:opacity-50={!hasSelectableItems}
29
29
  >
30
30
  <input
@@ -94,13 +94,13 @@ let hasSelectableItems = $derived(selectableItems.length > 0);
94
94
  </div>
95
95
  {:else}
96
96
  <div class="flex items-center justify-center h-full">
97
- <div class="text-gray-500">{emptyMessage}</div>
97
+ <div class="text-hint text-xs">{emptyMessage}</div>
98
98
  </div>
99
99
  {/if}
100
100
 
101
101
  <!-- Footer -->
102
102
  {#if footer}
103
- <div class="p-4 bg-surface">
103
+ <div class="pt-4">
104
104
  {@render footer()}
105
105
  </div>
106
106
  {/if}
@@ -17,6 +17,7 @@ interface Props {
17
17
  }>;
18
18
  allSelected?: boolean;
19
19
  emptyMessage?: string;
20
+ children?: Snippet;
20
21
  header?: Snippet;
21
22
  alerts?: Snippet;
22
23
  itemSummary?: Snippet<[DeployableItem]>;
@@ -39,7 +39,8 @@ const dispatch = createEventDispatcher();
39
39
  async function refreshScript(runnable) {
40
40
  hubFlowPreview = undefined;
41
41
  try {
42
- let { schema } = await getScriptByPath(runnable.path);
42
+ const loaded = await getScriptByPath(runnable.path);
43
+ const schema = loaded.schema ?? emptySchema();
43
44
  if (!deepEqual(runnable.schema, schema)) {
44
45
  runnable.schema = schema;
45
46
  if (!runnable.schema.order) {
@@ -80,7 +81,8 @@ async function refreshFlow(runnable) {
80
81
  }
81
82
  return;
82
83
  }
83
- const { schema } = (await loadSchema($workspaceStore ?? '', runnable.path, 'flow')) ?? emptySchema();
84
+ const loaded = await loadSchema($workspaceStore ?? '', runnable.path, 'flow');
85
+ const schema = loaded?.schema ?? emptySchema();
84
86
  if (!deepEqual(runnable.schema, schema)) {
85
87
  runnable.schema = schema;
86
88
  if (!runnable.schema.order) {
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">import { Button, Drawer, DrawerContent, Tab, Tabs } from '../../../../common';
2
2
  import PickHubScript from '../../../../flows/pickers/PickHubScript.svelte';
3
+ import PickHubFlow from '../../../../flows/pickers/PickHubFlow.svelte';
3
4
  import { Building, Globe2, MousePointer, Plus } from 'lucide-svelte';
4
5
  import InlineScriptList from './InlineScriptList.svelte';
5
6
  import WorkspaceScriptList from './WorkspaceScriptList.svelte';
@@ -47,6 +48,14 @@ async function pickHubScript(path) {
47
48
  fields: selection.fields
48
49
  });
49
50
  }
51
+ async function pickHubFlow(item) {
52
+ const path = `hub/flows/${item.flow_id}`;
53
+ const selection = buildPathRunnableSelection(path, 'flow', await loadSchemaFromTriggerable(path, 'flow'), defaultUserInput, rawApps);
54
+ dispatch('pick', {
55
+ runnable: selection.runnable,
56
+ fields: selection.fields
57
+ });
58
+ }
50
59
  function pickInlineScript(name) {
51
60
  const unusedInlineScriptIndex = unusedInlineScripts?.findIndex((script) => script.name === name);
52
61
  const unusedInlineScript = unusedInlineScripts?.[unusedInlineScriptIndex];
@@ -89,6 +98,7 @@ function createScript() {
89
98
  {#if !onlyFlow}
90
99
  <Tab value="hubscripts" label="Hub Scripts" icon={Globe2} />
91
100
  {/if}
101
+ <Tab value="hubflows" label="Hub Flows" icon={Globe2} />
92
102
  </Tabs>
93
103
  <div class="my-2"></div>
94
104
  <div class="flex flex-col gap-y-16">
@@ -106,6 +116,8 @@ function createScript() {
106
116
  <WorkspaceFlowList on:pick={(e) => pickFlow(e.detail)} />
107
117
  {:else if tab == 'hubscripts'}
108
118
  <PickHubScript bind:filter on:pick={(e) => pickHubScript(e.detail.path)} />
119
+ {:else if tab == 'hubflows'}
120
+ <PickHubFlow bind:filter on:pick={(e) => pickHubFlow(e.detail)} />
109
121
  {/if}
110
122
  </div>
111
123
  </div>
@@ -28,7 +28,7 @@ $effect(() => {
28
28
  }
29
29
  }
30
30
  });
31
- let datatables = resource([], () => WorkspaceService.listDataTables({ workspace: $workspaceStore ?? '' }));
31
+ let datatables = resource([], () => WorkspaceService.listDataTables({ workspace: $workspaceStore ?? '' }).then((d) => d.map((d) => d.name)));
32
32
  let ducklakes = resource([], () => WorkspaceService.listDucklakes({ workspace: $workspaceStore ?? '' }));
33
33
  $effect(() => {
34
34
  assets;
@@ -52,7 +52,7 @@ const Icon = $derived(theme[type].Icon ?? AlertTriangle);
52
52
  {#if open}
53
53
  <div
54
54
  transition:fadeFast|local
55
- class={'fixed top-0 bottom-0 left-0 right-0 z-[5000]'}
55
+ class={'fixed top-0 bottom-0 left-0 right-0 z-[9999]'}
56
56
  role="dialog"
57
57
  {id}
58
58
  >
@@ -8,7 +8,7 @@ import Button from '../button/Button.svelte';
8
8
  import Row from './Row.svelte';
9
9
  import DraftBadge from '../../DraftBadge.svelte';
10
10
  import Badge from '../badge/Badge.svelte';
11
- import { ExternalLink, Eye, File, FileJson, FolderOpen, GitFork, ChevronUpSquare, History, Pen, Share, Trash, Copy } from 'lucide-svelte';
11
+ import { ExternalLink, Eye, File, FileJson, FolderOpen, GitFork, ChevronUpSquare, History, Pen, Shield, Trash, Copy } from 'lucide-svelte';
12
12
  import { goto as gotoUrl } from '$app/navigation';
13
13
  import { page } from '$app/state';
14
14
  import { DELETE, copyToClipboard } from '../../../utils';
@@ -192,8 +192,8 @@ async function loadAppJson() {
192
192
  hide: $userStore?.operator
193
193
  },
194
194
  {
195
- displayName: canWrite ? 'Share' : 'See Permissions',
196
- icon: Share,
195
+ displayName: 'Permissions',
196
+ icon: Shield,
197
197
  action: () => {
198
198
  shareModal.openDrawer && shareModal.openDrawer(path, 'app')
199
199
  },
@@ -13,7 +13,7 @@ import DraftBadge from '../../DraftBadge.svelte';
13
13
  import { sendUserToast } from '../../../toast';
14
14
  import { DELETE, copyToClipboard, isOwner } from '../../../utils';
15
15
  import { isDeployable } from '../../../utils_deployable';
16
- import { Pen, GitFork, Trash, List, FolderOpen, ChevronUpSquare, Calendar, Share, Archive, Copy, Eye, HistoryIcon } from 'lucide-svelte';
16
+ import { Pen, GitFork, Trash, List, FolderOpen, ChevronUpSquare, Calendar, Shield, Archive, Copy, Eye, HistoryIcon } from 'lucide-svelte';
17
17
  import FlowHistory from '../../flows/FlowHistory.svelte';
18
18
  import { getDeployUiSettings } from '../../home/deploy_ui';
19
19
  import { isRuleActive } from '../../../workspaceProtectionRules.svelte';
@@ -229,8 +229,8 @@ let flowHistory = $state(undefined);
229
229
  hide: $userStore?.operator
230
230
  },
231
231
  {
232
- displayName: owner ? 'Share' : 'See Permissions',
233
- icon: Share,
232
+ displayName: 'Permissions',
233
+ icon: Shield,
234
234
  action: () => {
235
235
  shareModal.openDrawer && shareModal.openDrawer(path, 'flow')
236
236
  },
@@ -4,7 +4,7 @@ import SharedBadge from '../../SharedBadge.svelte';
4
4
  import {} from '../../../gen';
5
5
  import { workspaceStore } from '../../../stores';
6
6
  import Row from './Row.svelte';
7
- import { Globe, Share } from 'lucide-svelte';
7
+ import { Globe, Shield } from 'lucide-svelte';
8
8
  import { isDeployable } from '../../../utils_deployable';
9
9
  import { getDeployUiSettings } from '../../home/deploy_ui';
10
10
  let { app, marked, shareModal, deploymentDrawer, depth = 0, menuOpen = $bindable(false) } = $props();
@@ -26,7 +26,7 @@ let { app, marked, shareModal, deploymentDrawer, depth = 0, menuOpen = $bindable
26
26
  {#snippet actions()}
27
27
  <Dropdown
28
28
  items={async () => {
29
- let { path, canWrite } = app
29
+ let { path } = app
30
30
 
31
31
  return [
32
32
  ...(isDeployable('app', path, await getDeployUiSettings())
@@ -41,8 +41,8 @@ let { app, marked, shareModal, deploymentDrawer, depth = 0, menuOpen = $bindable
41
41
  ]
42
42
  : []),
43
43
  {
44
- displayName: canWrite ? 'Share' : 'See Permissions',
45
- icon: Share,
44
+ displayName: 'Permissions',
45
+ icon: Shield,
46
46
  action: () => {
47
47
  shareModal.openDrawer && shareModal.openDrawer(path, 'raw_app')
48
48
  }
@@ -6,7 +6,11 @@ import { twMerge } from 'tailwind-merge';
6
6
  import { goto } from '../../../navigation';
7
7
  import { triggerableByAI } from '../../../actions/triggerableByAI.svelte';
8
8
  let { marked, selected = false, disabled = false, canFavorite = true, isSelectable = false, alignWithSelectable = false, errorHandlerMuted = false, aiId = undefined, aiDescription = undefined, kind = 'script', triggerKind = undefined, summary = undefined, path, href = undefined, workspaceId, depth = 0, badges, actions, customSummary, onSelect = () => { } } = $props();
9
- let displayPath = (untrack(() => depth) === 0 ? untrack(() => path) : untrack(() => path)?.split('/')?.slice(-1)?.[0]) ?? '';
9
+ let displayPath = (untrack(() => depth) === 0
10
+ ? untrack(() => path)
11
+ : untrack(() => path)
12
+ ?.split('/')
13
+ ?.slice(-1)?.[0]) ?? '';
10
14
  </script>
11
15
 
12
16
  {#if href}
@@ -84,7 +88,7 @@ let displayPath = (untrack(() => depth) === 0 ? untrack(() => path) : untrack(()
84
88
  {!summary || summary.length == 0 ? displayPath : summary}
85
89
  {/if}
86
90
  </div>
87
- <div class="text-hint text-3xs truncate text-left font-normal">
91
+ <div class="text-hint text-3xs truncate text-left font-normal" title={path}>
88
92
  {path}
89
93
  </div>
90
94
  </div>
@@ -14,7 +14,7 @@ import { sendUserToast } from '../../../toast';
14
14
  import { capitalize, copyToClipboard, DELETE, isOwner } from '../../../utils';
15
15
  import { isDeployable } from '../../../utils_deployable';
16
16
  import { LanguageIcon } from '../languageIcons';
17
- import { Archive, Calendar, Code, Copy, Eye, FolderOpen, ChevronUpSquare, GitFork, List, Pen, Share, Trash, History, Globe2, FileText } from 'lucide-svelte';
17
+ import { Archive, Calendar, Code, Copy, Eye, FolderOpen, ChevronUpSquare, GitFork, List, Pen, Shield, Trash, History, Globe2, FileText } from 'lucide-svelte';
18
18
  import ScriptVersionHistory from '../../ScriptVersionHistory.svelte';
19
19
  import WacExportDrawer from '../../scripts/WacExportDrawer.svelte';
20
20
  import { Drawer, DrawerContent } from '..';
@@ -96,6 +96,14 @@ let wacExportDrawer = $state(undefined);
96
96
  <Badge small color="indigo" baseClass="border border-indigo-200">wac</Badge>
97
97
  </Popover>
98
98
  {/if}
99
+ {#if script.auto_kind === 'test'}
100
+ <Popover notClickable>
101
+ {#snippet text()}
102
+ CI test script
103
+ {/snippet}
104
+ <Badge small color="yellow" baseClass="border">CI test</Badge>
105
+ </Popover>
106
+ {/if}
99
107
  {#if script.kind !== 'script'}
100
108
  <Badge color="blue" baseClass="border"
101
109
  >{script.kind === 'failure' ? 'Error handler' : capitalize(script.kind)}</Badge
@@ -287,8 +295,8 @@ let wacExportDrawer = $state(undefined);
287
295
  hide: $userStore?.operator
288
296
  },
289
297
  {
290
- displayName: owner ? 'Share' : 'See Permissions',
291
- icon: Share,
298
+ displayName: 'Permissions',
299
+ icon: Shield,
292
300
  action: () => {
293
301
  shareModal.openDrawer && shareModal.openDrawer(script.path, 'script')
294
302
  },
@@ -359,7 +359,7 @@ class AIChatManager {
359
359
  return prepareScriptUserMessage(pendingPrompt, this.contextManager.getSelectedContext());
360
360
  }
361
361
  else if (this.mode === AIMode.FLOW) {
362
- return prepareFlowUserMessage(pendingPrompt, this.flowAiChatHelpers.getFlowAndSelectedId());
362
+ return prepareFlowUserMessage(pendingPrompt, this.flowAiChatHelpers.getFlowAndSelectedId(), [], this.flowAiChatHelpers.inlineScriptSession);
363
363
  }
364
364
  else if (this.mode === AIMode.NAVIGATOR) {
365
365
  return prepareNavigatorUserMessage(pendingPrompt);
@@ -528,7 +528,7 @@ class AIChatManager {
528
528
  };
529
529
  switch (this.mode) {
530
530
  case AIMode.FLOW:
531
- userMessage = prepareFlowUserMessage(oldInstructions, this.flowAiChatHelpers.getFlowAndSelectedId(), oldSelectedContext);
531
+ userMessage = prepareFlowUserMessage(oldInstructions, this.flowAiChatHelpers.getFlowAndSelectedId(), oldSelectedContext, this.flowAiChatHelpers.inlineScriptSession);
532
532
  break;
533
533
  case AIMode.NAVIGATOR:
534
534
  userMessage = prepareNavigatorUserMessage(oldInstructions);
@@ -5,6 +5,11 @@ import type { MessageParam, TextBlockParam, ToolUnion } from '@anthropic-ai/sdk/
5
5
  import type { MessageStream } from '@anthropic-ai/sdk/lib/MessageStream';
6
6
  import type { AIProviderModel } from '../../../gen';
7
7
  import { type Tool, type ToolCallbacks } from './shared';
8
+ import { type ChatTokenUsage } from './tokenUsage';
9
+ interface ParsedCompletionResult {
10
+ shouldContinue: boolean;
11
+ tokenUsage: ChatTokenUsage;
12
+ }
8
13
  export declare function getAnthropicCompletion(messages: ChatCompletionMessageParam[], abortController: AbortController, tools?: OpenAI.Chat.Completions.ChatCompletionFunctionTool[], options?: {
9
14
  forceModelProvider?: AIProviderModel;
10
15
  anthropicClient?: Anthropic;
@@ -14,9 +19,10 @@ export declare function parseAnthropicCompletion(completion: MessageStream, call
14
19
  onMessageEnd: () => void;
15
20
  }, messages: ChatCompletionMessageParam[], addedMessages: ChatCompletionMessageParam[], tools: Tool<any>[], helpers: any, abortController?: AbortController, options?: {
16
21
  workspace?: string;
17
- }): Promise<boolean>;
22
+ }): Promise<ParsedCompletionResult>;
18
23
  export declare function convertOpenAIToAnthropicMessages(messages: ChatCompletionMessageParam[]): {
19
24
  system: TextBlockParam[] | undefined;
20
25
  messages: MessageParam[];
21
26
  };
22
27
  export declare function convertOpenAIToolsToAnthropic(tools?: OpenAI.Chat.Completions.ChatCompletionFunctionTool[]): ToolUnion[] | undefined;
28
+ export {};
@@ -2,6 +2,7 @@ import { OpenAI } from 'openai';
2
2
  import Anthropic from '@anthropic-ai/sdk';
3
3
  import { getProviderAndCompletionConfig, workspaceAIClients } from '../lib';
4
4
  import { processToolCall } from './shared';
5
+ import { anthropicUsageToChatTokenUsage } from './tokenUsage';
5
6
  export async function getAnthropicCompletion(messages, abortController, tools, options) {
6
7
  const { provider, config } = getProviderAndCompletionConfig({
7
8
  messages,
@@ -147,6 +148,8 @@ export async function parseAnthropicCompletion(completion, callbacks, messages,
147
148
  if (error) {
148
149
  throw error;
149
150
  }
151
+ const finalMessage = await completion.finalMessage();
152
+ const tokenUsage = anthropicUsageToChatTokenUsage(finalMessage.usage);
150
153
  // Process tool calls if any
151
154
  if (toolCallsToProcess.length > 0) {
152
155
  const assistantWithTools = {
@@ -167,9 +170,9 @@ export async function parseAnthropicCompletion(completion, callbacks, messages,
167
170
  messages.push(messageToAdd);
168
171
  addedMessages.push(messageToAdd);
169
172
  }
170
- return true; // Continue the conversation loop
173
+ return { shouldContinue: true, tokenUsage };
171
174
  }
172
- return false; // End the conversation
175
+ return { shouldContinue: false, tokenUsage };
173
176
  }
174
177
  export function convertOpenAIToAnthropicMessages(messages) {
175
178
  let system;