windmill-components 1.677.1 → 1.695.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/package/components/AppConnectInner.svelte +6 -0
  2. package/package/components/ArgInput.svelte +2 -0
  3. package/package/components/AutoscalingConfigEditor.svelte +18 -4
  4. package/package/components/CiTestResults.svelte +64 -0
  5. package/package/components/CiTestResults.svelte.d.ts +7 -0
  6. package/package/components/CompareWorkspaces.svelte +741 -484
  7. package/package/components/DBManager.svelte +35 -4
  8. package/package/components/DBManager.svelte.d.ts +2 -0
  9. package/package/components/DBManagerContent.svelte +3 -1
  10. package/package/components/DBManagerContent.svelte.d.ts +3 -0
  11. package/package/components/DBManagerDrawer.svelte +145 -3
  12. package/package/components/DBTableEditor.svelte +14 -4
  13. package/package/components/DatatablePicker.svelte +2 -5
  14. package/package/components/DatatableSchemaDiff.svelte +531 -0
  15. package/package/components/DatatableSchemaDiff.svelte.d.ts +29 -0
  16. package/package/components/DedicatedWorkersSelector.svelte +4 -2
  17. package/package/components/DefaultTagsInner.svelte +42 -2
  18. package/package/components/DeployWorkspaceDrawer.svelte +1 -1
  19. package/package/components/Dev.svelte +407 -74
  20. package/package/components/EditableSchemaForm.svelte +4 -0
  21. package/package/components/Editor.svelte +1 -1
  22. package/package/components/EditorBar.svelte +1 -1
  23. package/package/components/EditorBar.svelte.d.ts +1 -1
  24. package/package/components/ErrorOrRecoveryHandler.svelte +2 -2
  25. package/package/components/FlowPreviewContent.svelte +32 -30
  26. package/package/components/FlowRestartButton.svelte +143 -61
  27. package/package/components/FlowRestartButton.svelte.d.ts +37 -0
  28. package/package/components/FlowStatusViewer.svelte +15 -1
  29. package/package/components/FlowStatusViewer.svelte.d.ts +10 -2
  30. package/package/components/FlowStatusViewerInner.svelte +270 -222
  31. package/package/components/FlowStatusViewerInner.svelte.d.ts +6 -2
  32. package/package/components/FlowTimeline.svelte +1 -1
  33. package/package/components/FolderEditor.svelte +189 -4
  34. package/package/components/ForkConflictModal.svelte +57 -0
  35. package/package/components/ForkConflictModal.svelte.d.ts +3 -0
  36. package/package/components/ForkWorkspaceBanner.svelte +82 -11
  37. package/package/components/GitRepoViewer.svelte +251 -97
  38. package/package/components/GlobalUserOffboardingModal.svelte +293 -0
  39. package/package/components/GlobalUserOffboardingModal.svelte.d.ts +10 -0
  40. package/package/components/InputTransformSchemaForm.svelte +1 -1
  41. package/package/components/InstanceSettings.svelte +58 -19
  42. package/package/components/Login.svelte +133 -36
  43. package/package/components/Login.svelte.d.ts +1 -0
  44. package/package/components/ModuleTest.svelte +2 -1
  45. package/package/components/NoMainFuncBadge.svelte +1 -1
  46. package/package/components/OffboardItemsBox.svelte +56 -0
  47. package/package/components/OffboardItemsBox.svelte.d.ts +12 -0
  48. package/package/components/OffboardReassignControls.svelte +47 -0
  49. package/package/components/OffboardReassignControls.svelte.d.ts +20 -0
  50. package/package/components/OffboardWorkspaceSection.svelte +110 -0
  51. package/package/components/OffboardWorkspaceSection.svelte.d.ts +24 -0
  52. package/package/components/OnBehalfOfSelector.svelte +21 -3
  53. package/package/components/OnBehalfOfSelector.svelte.d.ts +7 -0
  54. package/package/components/Path.svelte +7 -1
  55. package/package/components/Path.svelte.d.ts +1 -1
  56. package/package/components/QueueAlerts.svelte +10 -10
  57. package/package/components/ResourcePicker.svelte +2 -2
  58. package/package/components/RunsPage.svelte +2 -1
  59. package/package/components/S3FilePickerInner.svelte +89 -89
  60. package/package/components/ScriptBuilder.svelte +52 -11
  61. package/package/components/ScriptEditor.svelte +19 -8
  62. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  63. package/package/components/ShareModal.svelte +236 -98
  64. package/package/components/ShareModal.svelte.d.ts +1 -1
  65. package/package/components/SuperadminSettingsInner.svelte +362 -315
  66. package/package/components/UserOffboardingModal.svelte +238 -0
  67. package/package/components/UserOffboardingModal.svelte.d.ts +10 -0
  68. package/package/components/WorkspaceDeployLayout.svelte +3 -3
  69. package/package/components/WorkspaceDeployLayout.svelte.d.ts +1 -0
  70. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -0
  71. package/package/components/apps/components/helpers/executeRunnable.js +2 -1
  72. package/package/components/apps/editor/AppReportsDrawerInner.svelte +1 -1
  73. package/package/components/apps/editor/appPolicy.js +2 -1
  74. package/package/components/apps/editor/commonAppUtils.d.ts +3 -0
  75. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -1
  76. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +7 -0
  77. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +4 -2
  78. package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte +49 -0
  79. package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte.d.ts +9 -0
  80. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -0
  81. package/package/components/apps/inputType.d.ts +1 -0
  82. package/package/components/apps/sharedTypes.d.ts +1 -0
  83. package/package/components/assets/AssetsDropdownButton.svelte +1 -1
  84. package/package/components/auditLogs/AuditLogsFilters.svelte +8 -3
  85. package/package/components/common/confirmationModal/ConfirmationModal.svelte +1 -1
  86. package/package/components/common/fileUpload/S3ArgInput.svelte +12 -10
  87. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +2 -0
  88. package/package/components/common/table/AppRow.svelte +3 -3
  89. package/package/components/common/table/FlowRow.svelte +3 -3
  90. package/package/components/common/table/RawAppRow.svelte +4 -4
  91. package/package/components/common/table/Row.svelte +6 -2
  92. package/package/components/common/table/ScriptRow.svelte +11 -3
  93. package/package/components/copilot/chat/AIChatDisplay.svelte +5 -36
  94. package/package/components/copilot/chat/AIChatInput.svelte +56 -47
  95. package/package/components/copilot/chat/AIChatManager.svelte.js +50 -48
  96. package/package/components/copilot/chat/ContextElementBadge.svelte +6 -4
  97. package/package/components/copilot/chat/anthropic.d.ts +7 -1
  98. package/package/components/copilot/chat/anthropic.js +5 -2
  99. package/package/components/copilot/chat/app/core.d.ts +12 -20
  100. package/package/components/copilot/chat/app/core.js +230 -159
  101. package/package/components/copilot/chat/app/core.test.js +417 -0
  102. package/package/components/copilot/chat/chatLoop.d.ts +3 -0
  103. package/package/components/copilot/chat/chatLoop.js +13 -5
  104. package/package/components/copilot/chat/context.js +44 -0
  105. package/package/components/copilot/chat/flow/FlowAIChat.svelte +57 -76
  106. package/package/components/copilot/chat/flow/core.d.ts +14 -3
  107. package/package/components/copilot/chat/flow/core.js +494 -116
  108. package/package/components/copilot/chat/flow/helperUtils.d.ts +22 -0
  109. package/package/components/copilot/chat/flow/helperUtils.js +100 -0
  110. package/package/components/copilot/chat/flow/helperUtils.test.js +231 -0
  111. package/package/components/copilot/chat/flow/inlineScriptsUtils.d.ts +5 -24
  112. package/package/components/copilot/chat/flow/inlineScriptsUtils.js +30 -55
  113. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  114. package/package/components/copilot/chat/flow/openFlowZod.gen.js +24 -0
  115. package/package/components/copilot/chat/flow/utils.test.js +59 -0
  116. package/package/components/copilot/chat/openai-responses.d.ts +7 -1
  117. package/package/components/copilot/chat/openai-responses.js +5 -2
  118. package/package/components/copilot/chat/script/core.js +3 -0
  119. package/package/components/copilot/chat/shared.d.ts +7 -2
  120. package/package/components/copilot/chat/shared.js +116 -53
  121. package/package/components/copilot/chat/shared.test.d.ts +1 -0
  122. package/package/components/copilot/chat/shared.test.js +412 -0
  123. package/package/components/copilot/chat/tokenUsage.d.ts +23 -0
  124. package/package/components/copilot/chat/tokenUsage.js +42 -0
  125. package/package/components/copilot/chat/workspaceTools.d.ts +7 -0
  126. package/package/components/copilot/chat/workspaceTools.js +239 -0
  127. package/package/components/copilot/chat/workspaceToolsZod.gen.d.ts +1295 -0
  128. package/package/components/copilot/chat/workspaceToolsZod.gen.js +424 -0
  129. package/package/components/copilot/lib.d.ts +5 -1
  130. package/package/components/copilot/lib.js +24 -6
  131. package/package/components/copilot/lib.test.d.ts +1 -0
  132. package/package/components/copilot/lib.test.js +19 -0
  133. package/package/components/copilot/modelConfig.d.ts +3 -0
  134. package/package/components/copilot/modelConfig.js +10 -0
  135. package/package/components/deploymentRequest/DeploymentRequestPanel.svelte +337 -0
  136. package/package/components/deploymentRequest/DeploymentRequestPanel.svelte.d.ts +15 -0
  137. package/package/components/details/CopyableCodeBlock.svelte +18 -8
  138. package/package/components/details/CopyableCodeBlock.svelte.d.ts +1 -0
  139. package/package/components/flows/FlowAssetsHandler.svelte +19 -21
  140. package/package/components/flows/FlowProgressBar.svelte +5 -2
  141. package/package/components/flows/agentToolTree.d.ts +17 -0
  142. package/package/components/flows/agentToolTree.js +114 -0
  143. package/package/components/flows/agentToolTree.test.d.ts +1 -0
  144. package/package/components/flows/agentToolTree.test.js +86 -0
  145. package/package/components/flows/agentToolUtils.d.ts +0 -5
  146. package/package/components/flows/agentToolUtils.js +0 -49
  147. package/package/components/flows/content/FlowLoop.svelte +7 -4
  148. package/package/components/flows/content/FlowModuleComponent.svelte +636 -599
  149. package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +15 -7
  150. package/package/components/flows/content/FlowSettings.svelte +29 -0
  151. package/package/components/flows/conversations/FlowChatManager.svelte.js +21 -10
  152. package/package/components/flows/dfs.d.ts +6 -2
  153. package/package/components/flows/dfs.js +19 -11
  154. package/package/components/flows/flowDeleteController.d.ts +32 -0
  155. package/package/components/flows/flowDeleteController.js +54 -0
  156. package/package/components/flows/flowDeleteController.test.d.ts +1 -0
  157. package/package/components/flows/flowDeleteController.test.js +121 -0
  158. package/package/components/flows/flowDeleteUtils.d.ts +48 -0
  159. package/package/components/flows/flowDeleteUtils.js +150 -0
  160. package/package/components/flows/flowDeleteUtils.test.d.ts +1 -0
  161. package/package/components/flows/flowDeleteUtils.test.js +131 -0
  162. package/package/components/flows/flowDiff.d.ts +2 -47
  163. package/package/components/flows/flowDiff.js +16 -293
  164. package/package/components/flows/flowDiff.testUtils.d.ts +8 -0
  165. package/package/components/flows/flowDiff.testUtils.js +26 -0
  166. package/package/components/flows/flowDiffManager.svelte.js +20 -75
  167. package/package/components/flows/flowDiffManager.svelte.test.js +103 -2
  168. package/package/components/flows/flowExplorer.d.ts +4 -0
  169. package/package/components/flows/flowExplorer.js +7 -30
  170. package/package/components/flows/flowState.d.ts +1 -0
  171. package/package/components/flows/flowStateUtils.svelte.js +11 -2
  172. package/package/components/flows/flowTree.d.ts +91 -0
  173. package/package/components/flows/flowTree.js +326 -0
  174. package/package/components/flows/flowTree.test.d.ts +1 -0
  175. package/package/components/flows/flowTree.test.js +236 -0
  176. package/package/components/flows/map/FlowJobsMenu.svelte +36 -30
  177. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
  178. package/package/components/flows/map/FlowModuleSchemaMap.svelte +73 -229
  179. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -2
  180. package/package/components/flows/pickers/PickHubScriptQuick.svelte +2 -2
  181. package/package/components/flows/previousResults.js +13 -41
  182. package/package/components/flows/previousResults.test.d.ts +1 -0
  183. package/package/components/flows/previousResults.test.js +65 -0
  184. package/package/components/flows/propPicker/OutputPicker.svelte +2 -1
  185. package/package/components/flows/propPicker/OutputPickerInner.svelte +41 -4
  186. package/package/components/flows/propPicker/StepHistory.svelte +9 -1
  187. package/package/components/git_sync/GitSyncContext.svelte.js +11 -7
  188. package/package/components/git_sync/GitSyncRepositoryCard.svelte +2 -29
  189. package/package/components/git_sync/PullWorkspaceModal.svelte +6 -7
  190. package/package/components/graph/FlowGraphV2.svelte +8 -4
  191. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -0
  192. package/package/components/graph/groupedModulesProxy.svelte.d.ts +10 -0
  193. package/package/components/graph/groupedModulesProxy.svelte.js +17 -1
  194. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +8 -2
  195. package/package/components/home/HomeConnectDrawer.svelte +125 -0
  196. package/package/components/home/HomeConnectDrawer.svelte.d.ts +5 -0
  197. package/package/components/home/deploy_ui.js +1 -1
  198. package/package/components/icons/AzureIcon.svelte +12 -25
  199. package/package/components/icons/AzureIcon.svelte.d.ts +3 -2
  200. package/package/components/icons/GithubIcon.svelte +4 -4
  201. package/package/components/icons/GithubIcon.svelte.d.ts +5 -2
  202. package/package/components/instanceSettings/ExternalJwtTokens.svelte +85 -0
  203. package/package/components/instanceSettings/ExternalJwtTokens.svelte.d.ts +12 -0
  204. package/package/components/instanceSettings/GhesAppSettings.svelte +17 -0
  205. package/package/components/instanceSettings/IndexerMemorySettings.svelte +56 -29
  206. package/package/components/instanceSettings/SecretBackendConfig.svelte +9 -2
  207. package/package/components/instanceSettings.d.ts +1 -0
  208. package/package/components/instanceSettings.js +66 -8
  209. package/package/components/mcp/McpScopeSelector.svelte +119 -9
  210. package/package/components/mcp/McpScopeSelector.svelte.d.ts +1 -0
  211. package/package/components/offboarding-utils.d.ts +11 -0
  212. package/package/components/offboarding-utils.js +102 -0
  213. package/package/components/progressBar/ProgressBar.svelte +9 -5
  214. package/package/components/progressBar/ProgressBar.svelte.d.ts +1 -0
  215. package/package/components/raw_apps/DeleteAfterUsePopup.svelte +52 -0
  216. package/package/components/raw_apps/DeleteAfterUsePopup.svelte.d.ts +9 -0
  217. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +5 -1
  218. package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -1
  219. package/package/components/raw_apps/RawAppEditor.svelte +186 -102
  220. package/package/components/raw_apps/RawAppEditorHeader.svelte +6 -1
  221. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +1 -0
  222. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +9 -3
  223. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +2 -1
  224. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +1 -0
  225. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +1 -0
  226. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +48 -5
  227. package/package/components/raw_apps/RawAppSharedUiDrawer.svelte +129 -0
  228. package/package/components/raw_apps/RawAppSharedUiDrawer.svelte.d.ts +5 -0
  229. package/package/components/raw_apps/RawAppSidebar.svelte +12 -0
  230. package/package/components/raw_apps/RawAppYamlEditor.svelte +81 -0
  231. package/package/components/raw_apps/RawAppYamlEditor.svelte.d.ts +20 -0
  232. package/package/components/raw_apps/dataTableRefUtils.d.ts +7 -0
  233. package/package/components/raw_apps/dataTableRefUtils.js +34 -0
  234. package/package/components/raw_apps/dataTableRefUtils.test.d.ts +1 -0
  235. package/package/components/raw_apps/dataTableRefUtils.test.js +29 -0
  236. package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
  237. package/package/components/raw_apps/rawAppPolicy.d.ts +1 -0
  238. package/package/components/raw_apps/rawAppPolicy.js +17 -2
  239. package/package/components/resources/resourceTypesFilter.d.ts +19 -0
  240. package/package/components/resources/resourceTypesFilter.js +21 -0
  241. package/package/components/restartFromStepPath.d.ts +39 -0
  242. package/package/components/restartFromStepPath.js +89 -0
  243. package/package/components/runs/JobDetailFieldConfig.d.ts +1 -0
  244. package/package/components/runs/JobDetailFieldConfig.js +57 -10
  245. package/package/components/runs/JobDetailHeader.svelte +24 -3
  246. package/package/components/runs/runsFilter.d.ts +1 -1
  247. package/package/components/schema/FlowPropertyEditor.svelte +30 -1
  248. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +5 -2
  249. package/package/components/script_builder.d.ts +1 -1
  250. package/package/components/search/GlobalSearchModal.svelte +8 -1
  251. package/package/components/select/Select.svelte +3 -2
  252. package/package/components/select/Select.svelte.d.ts +1 -0
  253. package/package/components/settings/CreateToken.svelte +91 -71
  254. package/package/components/settings/CreateToken.svelte.d.ts +3 -0
  255. package/package/components/settings/EditTokenScopesModal.svelte +57 -0
  256. package/package/components/settings/EditTokenScopesModal.svelte.d.ts +10 -0
  257. package/package/components/settings/ScopesPicker.svelte +43 -0
  258. package/package/components/settings/ScopesPicker.svelte.d.ts +11 -0
  259. package/package/components/settings/TokensTable.svelte +51 -15
  260. package/package/components/settings/WorkspaceUserSettings.svelte +34 -28
  261. package/package/components/sidebar/OperatorMenu.svelte +6 -0
  262. package/package/components/sidebar/SidebarContent.svelte +68 -2
  263. package/package/components/sidebar/WorkspaceMenu.svelte +8 -4
  264. package/package/components/triggers/AddTriggersButton.svelte +17 -0
  265. package/package/components/triggers/CaptureWrapper.svelte +19 -1
  266. package/package/components/triggers/PermissionedAsLine.svelte +37 -3
  267. package/package/components/triggers/PermissionedAsLine.svelte.d.ts +6 -0
  268. package/package/components/triggers/TriggerEditorToolbar.svelte.d.ts +1 -1
  269. package/package/components/triggers/TriggerModeToggle.svelte +36 -7
  270. package/package/components/triggers/TriggerModeToggle.svelte.d.ts +1 -1
  271. package/package/components/triggers/TriggerSuspendedJobsModal.svelte.d.ts +1 -1
  272. package/package/components/triggers/TriggersEditor.svelte +10 -2
  273. package/package/components/triggers/TriggersWrapper.svelte +20 -0
  274. package/package/components/triggers/azure/AzureCapture.svelte +41 -0
  275. package/package/components/triggers/azure/AzureCapture.svelte.d.ts +44 -0
  276. package/package/components/triggers/azure/AzureTriggerEditor.svelte +20 -0
  277. package/package/components/triggers/azure/AzureTriggerEditor.svelte.d.ts +9 -0
  278. package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte +301 -0
  279. package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte.d.ts +16 -0
  280. package/package/components/triggers/azure/AzureTriggerEditorInner.svelte +422 -0
  281. package/package/components/triggers/azure/AzureTriggerEditorInner.svelte.d.ts +25 -0
  282. package/package/components/triggers/azure/AzureTriggerPanel.svelte +55 -0
  283. package/package/components/triggers/azure/AzureTriggerPanel.svelte.d.ts +10 -0
  284. package/{dist/sharedUtils/components/triggers/kafka → package/components/triggers/azure}/utils.d.ts +1 -1
  285. package/package/components/triggers/azure/utils.js +56 -0
  286. package/package/components/triggers/email/EmailTriggerEditorInner.svelte +15 -11
  287. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +22 -14
  288. package/package/components/triggers/http/RouteEditorConfigSection.svelte +15 -7
  289. package/package/components/triggers/http/RouteEditorInner.svelte +16 -14
  290. package/package/components/triggers/http/RoutesGenerator.svelte +6 -1
  291. package/package/components/triggers/http/RoutesPanel.svelte +1 -1
  292. package/package/components/triggers/http/utils.d.ts +1 -1
  293. package/package/components/triggers/http/utils.js +2 -2
  294. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +22 -14
  295. package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +22 -14
  296. package/package/components/triggers/native/NativeTriggerEditor.svelte +3 -0
  297. package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte +118 -0
  298. package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte.d.ts +17 -0
  299. package/package/components/triggers/native/utils.js +14 -0
  300. package/package/components/triggers/nats/NatsTriggerEditor.svelte.d.ts +4 -3
  301. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +22 -14
  302. package/package/components/triggers/postgres/PostgresTriggerEditor.svelte.d.ts +4 -3
  303. package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +22 -14
  304. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +22 -14
  305. package/package/components/triggers/sqs/SqsTriggerEditor.svelte.d.ts +4 -3
  306. package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +22 -14
  307. package/package/components/triggers/triggers.svelte.d.ts +1 -0
  308. package/package/components/triggers/triggers.svelte.js +24 -1
  309. package/package/components/triggers/utils.js +47 -6
  310. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +22 -14
  311. package/package/components/triggers.d.ts +1 -1
  312. package/package/components/useFolderDefaultPermissionedAs.svelte.d.ts +13 -0
  313. package/package/components/useFolderDefaultPermissionedAs.svelte.js +63 -0
  314. package/package/components/useNestedRestartState.svelte.d.ts +56 -0
  315. package/package/components/useNestedRestartState.svelte.js +320 -0
  316. package/package/components/workspaceSettings/CreateWorkspace.svelte +16 -677
  317. package/package/components/workspaceSettings/CreateWorkspaceInner.svelte +604 -0
  318. package/package/components/workspaceSettings/CreateWorkspaceInner.svelte.d.ts +7 -0
  319. package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +27 -25
  320. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +46 -8
  321. package/package/components/workspaceSettings/DataTableSettings.svelte +27 -22
  322. package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
  323. package/package/components/workspaceSettings/ForkDatatableSection.svelte +228 -0
  324. package/package/components/workspaceSettings/ForkDatatableSection.svelte.d.ts +28 -0
  325. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +8 -2
  326. package/package/components/workspaceSettings/RulesetEditor.svelte +27 -2
  327. package/package/components/workspaceSettings/SharedUiSettings.svelte +175 -0
  328. package/package/components/workspaceSettings/SharedUiSettings.svelte.d.ts +3 -0
  329. package/package/components/workspaceSettings/VolumeStorageSettings.svelte +1 -1
  330. package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +17 -1
  331. package/package/consts.d.ts +3 -0
  332. package/package/consts.js +10 -0
  333. package/package/gen/core/OpenAPI.js +1 -1
  334. package/package/gen/schemas.gen.d.ts +795 -59
  335. package/package/gen/schemas.gen.js +801 -60
  336. package/package/gen/services.gen.d.ts +475 -5
  337. package/package/gen/services.gen.js +976 -23
  338. package/package/gen/types.gen.d.ts +1865 -75
  339. package/package/githubApp.js +5 -1
  340. package/package/hubPaths.json +2 -8
  341. package/package/infer.d.ts +1 -1
  342. package/package/infer.js +50 -52
  343. package/package/infer.svelte.js +10 -1
  344. package/package/mcpEndpointTools.js +60 -4
  345. package/package/monaco_workers/sqlTypePlugin.worker.d.ts +10 -0
  346. package/package/monaco_workers/sqlTypePlugin.worker.js +39 -0
  347. package/package/script_helpers.d.ts +8 -2
  348. package/package/script_helpers.js +31 -0
  349. package/package/stores.d.ts +11 -0
  350. package/package/stores.js +6 -0
  351. package/package/system_prompts/index.d.ts +1 -0
  352. package/package/system_prompts/index.js +8 -0
  353. package/package/system_prompts/prompts.d.ts +17 -13
  354. package/package/system_prompts/prompts.js +921 -61
  355. package/package/templates/ci_test_bun.ts.template +27 -0
  356. package/package/templates/ci_test_python.py.template +26 -0
  357. package/package/utils/forkConflict.d.ts +26 -0
  358. package/package/utils/forkConflict.js +56 -0
  359. package/package/utils_deployable.d.ts +164 -121
  360. package/package/utils_deployable.js +61 -11
  361. package/package/utils_workspace_deploy.d.ts +8 -8
  362. package/package/utils_workspace_deploy.js +89 -421
  363. package/package.json +30 -6
  364. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
  365. package/dist/sharedUtils/base.d.ts +0 -1
  366. package/dist/sharedUtils/cloud.d.ts +0 -1
  367. package/dist/sharedUtils/common.d.ts +0 -111
  368. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
  369. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
  370. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
  371. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
  372. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
  373. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
  374. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
  375. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
  376. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
  377. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
  378. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
  379. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
  380. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
  381. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
  382. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
  383. package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
  384. package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
  385. package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
  386. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
  387. package/dist/sharedUtils/components/apps/types.d.ts +0 -274
  388. package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
  389. package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
  390. package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
  391. package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
  392. package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
  393. package/dist/sharedUtils/components/common/index.d.ts +0 -24
  394. package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
  395. package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
  396. package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
  397. package/dist/sharedUtils/components/ducklake.d.ts +0 -1
  398. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
  399. package/dist/sharedUtils/components/icons/index.d.ts +0 -101
  400. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
  401. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
  402. package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
  403. package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
  404. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
  405. package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
  406. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
  407. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
  408. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
  409. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
  410. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
  411. package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
  412. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
  413. package/dist/sharedUtils/components/triggers.d.ts +0 -20
  414. package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
  415. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
  416. package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
  417. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
  418. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
  419. package/dist/sharedUtils/gen/core/request.d.ts +0 -29
  420. package/dist/sharedUtils/gen/index.d.ts +0 -6
  421. package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
  422. package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
  423. package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
  424. package/dist/sharedUtils/history.svelte.d.ts +0 -9
  425. package/dist/sharedUtils/hub.d.ts +0 -49
  426. package/dist/sharedUtils/jsr.json +0 -6
  427. package/dist/sharedUtils/lib.d.ts +0 -5
  428. package/dist/sharedUtils/lib.es.js +0 -1588
  429. package/dist/sharedUtils/package.json +0 -12
  430. package/dist/sharedUtils/schema.d.ts +0 -3
  431. package/dist/sharedUtils/stores.d.ts +0 -97
  432. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
  433. package/dist/sharedUtils/toast.d.ts +0 -8
  434. package/dist/sharedUtils/utils.d.ts +0 -265
  435. package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +0 -153
  436. package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +0 -21
  437. package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +0 -136
  438. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.d.ts +0 -15
  439. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +0 -107
  440. package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +0 -50
  441. package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +0 -93
  442. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.d.ts +0 -29
  443. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.js +0 -134
  444. package/package/components/copilot/chat/__tests__/app/appResultsWriter.d.ts +0 -30
  445. package/package/components/copilot/chat/__tests__/app/appResultsWriter.js +0 -197
  446. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.d.ts +0 -10
  447. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.js +0 -9
  448. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/meta.json +0 -4
  449. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.d.ts +0 -6
  450. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.js +0 -5
  451. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/meta.json +0 -4
  452. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.d.ts +0 -12
  453. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js +0 -14
  454. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/meta.json +0 -4
  455. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.d.ts +0 -8
  456. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.js +0 -25
  457. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/meta.json +0 -4
  458. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.d.ts +0 -7
  459. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.js +0 -5
  460. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/meta.json +0 -4
  461. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.d.ts +0 -8
  462. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.js +0 -5
  463. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/meta.json +0 -4
  464. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.d.ts +0 -10
  465. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.tsx +0 -26
  466. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.d.ts +0 -10
  467. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.tsx +0 -79
  468. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.d.ts +0 -10
  469. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.tsx +0 -46
  470. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.d.ts +0 -10
  471. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.tsx +0 -56
  472. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.d.ts +0 -6
  473. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.tsx +0 -59
  474. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.d.ts +0 -16
  475. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.tsx +0 -119
  476. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.d.ts +0 -15
  477. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.js +0 -14
  478. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/meta.json +0 -4
  479. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.d.ts +0 -14
  480. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.js +0 -5
  481. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/meta.json +0 -4
  482. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.d.ts +0 -6
  483. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.js +0 -41
  484. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/meta.json +0 -4
  485. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.d.ts +0 -15
  486. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.js +0 -3
  487. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/meta.json +0 -4
  488. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.d.ts +0 -9
  489. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.tsx +0 -51
  490. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.d.ts +0 -8
  491. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.tsx +0 -27
  492. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.d.ts +0 -8
  493. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.tsx +0 -18
  494. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.d.ts +0 -12
  495. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.tsx +0 -81
  496. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.d.ts +0 -3
  497. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.js +0 -3
  498. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/meta.json +0 -4
  499. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.d.ts +0 -3
  500. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.js +0 -3
  501. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/meta.json +0 -4
  502. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.d.ts +0 -2
  503. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.tsx +0 -38
  504. package/package/components/copilot/chat/__tests__/app/variants/baseline.d.ts +0 -6
  505. package/package/components/copilot/chat/__tests__/app/variants/baseline.js +0 -10
  506. package/package/components/copilot/chat/__tests__/app/variants/index.d.ts +0 -3
  507. package/package/components/copilot/chat/__tests__/app/variants/index.js +0 -3
  508. package/package/components/copilot/chat/__tests__/app/variants/streamlined.d.ts +0 -6
  509. package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +0 -137
  510. package/package/components/copilot/chat/__tests__/flow/expected/test1.json +0 -134
  511. package/package/components/copilot/chat/__tests__/flow/expected/test2.json +0 -183
  512. package/package/components/copilot/chat/__tests__/flow/expected/test3.json +0 -204
  513. package/package/components/copilot/chat/__tests__/flow/expected/test4.json +0 -175
  514. package/package/components/copilot/chat/__tests__/flow/expected/test5_modify_simple.json +0 -68
  515. package/package/components/copilot/chat/__tests__/flow/expected/test6_modify_medium.json +0 -142
  516. package/package/components/copilot/chat/__tests__/flow/expected/test7_modify_complex.json +0 -136
  517. package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +0 -294
  518. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.d.ts +0 -17
  519. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +0 -49
  520. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.d.ts +0 -12
  521. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +0 -79
  522. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +0 -50
  523. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +0 -102
  524. package/package/components/copilot/chat/__tests__/flow/initial/test5_initial.json +0 -53
  525. package/package/components/copilot/chat/__tests__/flow/initial/test6_initial.json +0 -68
  526. package/package/components/copilot/chat/__tests__/flow/initial/test7_initial.json +0 -120
  527. package/package/components/copilot/chat/__tests__/flow/variants/baseline.d.ts +0 -6
  528. package/package/components/copilot/chat/__tests__/flow/variants/baseline.js +0 -10
  529. package/package/components/copilot/chat/__tests__/flow/variants/index.d.ts +0 -3
  530. package/package/components/copilot/chat/__tests__/flow/variants/index.js +0 -3
  531. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.d.ts +0 -15
  532. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +0 -388
  533. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +0 -45
  534. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +0 -121
  535. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +0 -28
  536. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +0 -96
  537. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.d.ts +0 -32
  538. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.js +0 -130
  539. package/package/components/copilot/chat/__tests__/shared/baseVariants.d.ts +0 -45
  540. package/package/components/copilot/chat/__tests__/shared/baseVariants.js +0 -57
  541. package/package/components/copilot/chat/__tests__/shared/index.d.ts +0 -10
  542. package/package/components/copilot/chat/__tests__/shared/index.js +0 -5
  543. package/package/components/copilot/chat/__tests__/shared/types.d.ts +0 -105
  544. package/package/components/copilot/chat/__tests__/shared/types.js +0 -9
  545. package/package/components/copilot/chat/flow/openFlowZod.js +0 -24
  546. package/package/components/copilot/chat/flow/utils.d.ts +0 -14
  547. package/package/components/copilot/chat/flow/utils.js +0 -108
  548. package/package/components/flows/agentToolUtils.test.js +0 -55
  549. /package/package/components/copilot/chat/{__tests__/app/appChat.eval.test.d.ts → app/core.test.d.ts} +0 -0
  550. /package/package/components/copilot/chat/{__tests__/flow/flowChat.eval.test.d.ts → flow/helperUtils.test.d.ts} +0 -0
  551. /package/package/components/copilot/chat/flow/{openFlowZod.d.ts → openFlowZod.gen.d.ts} +0 -0
  552. /package/package/components/{flows/agentToolUtils.test.d.ts → copilot/chat/flow/utils.test.d.ts} +0 -0
@@ -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
  },
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">import AIChatMessage from './AIChatMessage.svelte';
2
2
  import {} from 'svelte';
3
- import { CheckIcon, Code2, FileCode, HistoryIcon, Loader2, MousePointer2, Plus, Square, TextSelect, X, XIcon } from 'lucide-svelte';
3
+ import { CheckIcon, HistoryIcon, Loader2, MousePointer2, Plus, Square, TextSelect, X, XIcon } from 'lucide-svelte';
4
4
  import Button from '../../common/button/Button.svelte';
5
5
  import Popover from '../../meltComponents/Popover.svelte';
6
6
  import {} from './shared';
@@ -86,7 +86,7 @@ const appContext = $derived.by(() => {
86
86
  <div class="text-center text-primary text-xs">No history</div>
87
87
  {:else}
88
88
  <div class="flex flex-col">
89
- {#each pastChats as chat}
89
+ {#each pastChats as chat (chat.id)}
90
90
  <button
91
91
  class="text-left flex flex-row items-center gap-2 justify-between hover:bg-gray-100 dark:hover:bg-gray-700 rounded-md p-1"
92
92
  onclick={() => {
@@ -149,7 +149,7 @@ const appContext = $derived.by(() => {
149
149
  }}
150
150
  >
151
151
  <div class="flex flex-col" bind:clientHeight={height}>
152
- {#each messages as message, messageIndex}
152
+ {#each messages as message, messageIndex (messageIndex)}
153
153
  <AIChatMessage
154
154
  {message}
155
155
  {messageIndex}
@@ -236,38 +236,7 @@ const appContext = $derived.by(() => {
236
236
  {/if}
237
237
  <ProviderModelSelector />
238
238
 
239
- {#if aiChatManager.mode === AIMode.APP && appContext && (appContext.type !== 'none' || appContext.inspectorElement || appContext.codeSelection)}
240
- {#if appContext.type === 'frontend' && appContext.frontendPath && !appContext.selectionExcluded}
241
- <div
242
- class="inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 text-2xs"
243
- title={appContext.frontendPath}
244
- >
245
- <FileCode class="w-3 h-3" />
246
- <span class="truncate max-w-[80px]">{appContext.frontendPath}</span>
247
- <button
248
- class="hover:bg-blue-200 dark:hover:bg-blue-800/50 rounded p-0.5 -mr-0.5"
249
- onclick={() => appContext.toggleSelectionExcluded?.()}
250
- title="Exclude from prompt"
251
- >
252
- <X class="w-2.5 h-2.5" />
253
- </button>
254
- </div>
255
- {:else if appContext.type === 'backend' && appContext.backendKey && !appContext.selectionExcluded}
256
- <div
257
- class="inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-300 text-2xs"
258
- title={appContext.backendKey}
259
- >
260
- <Code2 class="w-3 h-3" />
261
- <span class="truncate max-w-[80px]">{appContext.backendKey}</span>
262
- <button
263
- class="hover:bg-green-200 dark:hover:bg-green-800/50 rounded p-0.5 -mr-0.5"
264
- onclick={() => appContext.toggleSelectionExcluded?.()}
265
- title="Exclude from prompt"
266
- >
267
- <X class="w-2.5 h-2.5" />
268
- </button>
269
- </div>
270
- {/if}
239
+ {#if aiChatManager.mode === AIMode.APP && appContext && (appContext.inspectorElement || appContext.codeSelection)}
271
240
  {#if appContext.inspectorElement}
272
241
  <div
273
242
  class="inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-purple-100 dark:bg-purple-900/30 text-purple-700 dark:text-purple-300 text-2xs"
@@ -317,7 +286,7 @@ const appContext = $derived.by(() => {
317
286
  {#if (aiChatManager.mode === AIMode.NAVIGATOR || aiChatManager.mode === AIMode.ASK) && suggestions.length > 0 && messages.filter((m) => m.role === 'user').length === 0 && !disabled}
318
287
  <div class="px-2 mt-4">
319
288
  <div class="flex flex-col gap-2">
320
- {#each suggestions as suggestion}
289
+ {#each suggestions as suggestion (suggestion)}
321
290
  <Button
322
291
  on:click={() => submitSuggestion(suggestion)}
323
292
  size="xs2"
@@ -9,6 +9,7 @@ import { twMerge } from 'tailwind-merge';
9
9
  import Portal from '../../Portal.svelte';
10
10
  import { zIndexes } from '../../../zIndexes';
11
11
  import { tick, untrack } from 'svelte';
12
+ import { sendUserToast } from '../../../toast';
12
13
  let { availableContext, selectedContext = $bindable([]), disabled = false, isFirstMessage = false, placeholder, initialInstructions = '', editingMessageIndex = null, onEditEnd = () => { }, className = '', onClickOutside = () => { }, onSendRequest = undefined, showContext = true, bottomRightSnippet, onKeyDown = undefined } = $props();
13
14
  // Generate mode-specific placeholder
14
15
  const modePlaceholder = $derived.by(() => {
@@ -65,7 +66,7 @@ function clickOutside(node) {
65
66
  }
66
67
  };
67
68
  }
68
- function addContextToSelection(contextElement) {
69
+ async function addContextToSelection(contextElement) {
69
70
  if (!selectedContext || !availableContext)
70
71
  return;
71
72
  const alreadySelected = selectedContext.find((c) => c.type === contextElement.type && c.title === contextElement.title);
@@ -78,13 +79,29 @@ function addContextToSelection(contextElement) {
78
79
  !availableContext.find((c) => c.type === contextElement.type && c.title === contextElement.title)) {
79
80
  return;
80
81
  }
81
- selectedContext = [...selectedContext, contextElement];
82
- // If it's a datatable table, add it to the app's whitelisted tables
82
+ let contextToAdd = contextElement;
83
83
  if (contextElement.type === 'app_datatable' &&
84
84
  aiChatManager.mode === AIMode.APP &&
85
85
  aiChatManager.appAiChatHelpers) {
86
- aiChatManager.appAiChatHelpers.addTableToWhitelist(contextElement.datatableName, contextElement.schemaName, contextElement.tableName);
86
+ const appAiChatHelpers = aiChatManager.appAiChatHelpers;
87
+ appAiChatHelpers.addTableToWhitelist(contextElement.datatableName, contextElement.schemaName, contextElement.tableName);
88
+ if (!contextElement.columns) {
89
+ try {
90
+ contextToAdd = {
91
+ ...contextElement,
92
+ columns: await appAiChatHelpers.getDatatableTableSchema(contextElement.datatableName, contextElement.schemaName, contextElement.tableName)
93
+ };
94
+ }
95
+ catch (e) {
96
+ console.error('Failed to load datatable table schema:', e);
97
+ sendUserToast('Failed to load datatable table schema', true, [], e instanceof Error ? e.message : String(e));
98
+ }
99
+ }
87
100
  }
101
+ const duplicateAfterAwait = selectedContext.find((c) => c.type === contextToAdd.type && c.title === contextToAdd.title);
102
+ if (duplicateAfterAwait)
103
+ return;
104
+ selectedContext = [...selectedContext, contextToAdd];
88
105
  }
89
106
  function sendRequest() {
90
107
  if (aiChatManager.loading) {
@@ -258,7 +275,7 @@ function handleAppInput(_e) {
258
275
  }
259
276
  }
260
277
  function handleAppContextSelection(contextElement) {
261
- addContextToSelection(contextElement);
278
+ void addContextToSelection(contextElement);
262
279
  // Update instructions with the selected context title
263
280
  const index = instructions.lastIndexOf('@');
264
281
  if (index !== -1) {
@@ -279,31 +296,27 @@ $effect(() => {
279
296
  <div class="flex flex-row gap-1 mb-1 overflow-scroll pt-2 no-scrollbar">
280
297
  <Popover>
281
298
  {#snippet trigger()}
282
-
283
- <div
284
- class="border rounded-md px-1 py-0.5 font-normal text-primary text-xs hover:bg-surface-hover bg-surface"
285
- >@</div
286
- >
287
-
288
- {/snippet}
299
+ <div
300
+ class="border rounded-md px-1 py-0.5 font-normal text-primary text-xs hover:bg-surface-hover bg-surface"
301
+ >@</div
302
+ >
303
+ {/snippet}
289
304
  {#snippet content({ close })}
290
-
291
- <AvailableContextList
292
- {availableContext}
293
- {selectedContext}
294
- onSelect={(element) => {
295
- addContextToSelection(element)
296
- close()
297
- }}
298
- onSelectWorkspaceItem={(element) => {
299
- addContextToSelection(element)
300
- close()
301
- }}
302
- />
303
-
304
- {/snippet}
305
+ <AvailableContextList
306
+ {availableContext}
307
+ {selectedContext}
308
+ onSelect={(element) => {
309
+ void addContextToSelection(element)
310
+ close()
311
+ }}
312
+ onSelectWorkspaceItem={(element) => {
313
+ void addContextToSelection(element)
314
+ close()
315
+ }}
316
+ />
317
+ {/snippet}
305
318
  </Popover>
306
- {#each selectedContext as element}
319
+ {#each selectedContext as element (element.type + '-' + element.title)}
307
320
  <ContextElementBadge
308
321
  contextElement={element}
309
322
  deletable
@@ -323,7 +336,7 @@ $effect(() => {
323
336
  {selectedContext}
324
337
  {isFirstMessage}
325
338
  placeholder={modePlaceholder}
326
- onAddContext={(contextElement) => addContextToSelection(contextElement)}
339
+ onAddContext={(contextElement) => void addContextToSelection(contextElement)}
327
340
  onSendRequest={() => {
328
341
  if (disabled) {
329
342
  return
@@ -338,25 +351,21 @@ $effect(() => {
338
351
  <div class="flex flex-row gap-1 mb-1 overflow-scroll pt-2 no-scrollbar">
339
352
  <Popover>
340
353
  {#snippet trigger()}
341
-
342
- <div
343
- class="border rounded-md px-1 py-0.5 font-normal text-primary text-xs hover:bg-surface-hover bg-surface"
344
- >@</div
345
- >
346
-
347
- {/snippet}
354
+ <div
355
+ class="border rounded-md px-1 py-0.5 font-normal text-primary text-xs hover:bg-surface-hover bg-surface"
356
+ >@</div
357
+ >
358
+ {/snippet}
348
359
  {#snippet content({ close })}
349
-
350
- <AppAvailableContextList
351
- {availableContext}
352
- {selectedContext}
353
- onSelect={(element) => {
354
- addContextToSelection(element)
355
- close()
356
- }}
357
- />
358
-
359
- {/snippet}
360
+ <AppAvailableContextList
361
+ {availableContext}
362
+ {selectedContext}
363
+ onSelect={(element) => {
364
+ void addContextToSelection(element)
365
+ close()
366
+ }}
367
+ />
368
+ {/snippet}
360
369
  </Popover>
361
370
  {#each selectedContext as element (element.type + '-' + element.title)}
362
371
  <ContextElementBadge
@@ -18,6 +18,7 @@ import { get } from 'svelte/store';
18
18
  import { workspaceStore } from '../../../stores';
19
19
  import { askTools, prepareAskSystemMessage, prepareAskUserMessage } from './ask/core';
20
20
  import { chatState, DEFAULT_SIZE, triggerablesByAi } from './sharedChatState.svelte';
21
+ import { createAppBackendRunnableContextElement, createAppFrontendFileContextElement, flattenDatatablesToAppContextElements } from './context';
21
22
  import { prepareApiSystemMessage, prepareApiUserMessage } from './api/core';
22
23
  import { runChatLoop } from './chatLoop';
23
24
  import { getCurrentModel, tryGetCurrentModel, getCombinedCustomPrompt } from '../../../aiStore';
@@ -33,6 +34,9 @@ export var AIMode;
33
34
  AIMode["API"] = "API";
34
35
  AIMode["ASK"] = "ask";
35
36
  })(AIMode || (AIMode = {}));
37
+ function isWorkspacePath(path) {
38
+ return path?.startsWith('f/') === true || path?.startsWith('u/') === true;
39
+ }
36
40
  class AIChatManager {
37
41
  contextManager = new ContextManager();
38
42
  historyManager = new HistoryManager();
@@ -71,6 +75,7 @@ class AIChatManager {
71
75
  /** Cached datatables for app context (fetched asynchronously) */
72
76
  cachedDatatables = $state([]);
73
77
  confirmationCallback = $state(undefined);
78
+ appDatatablesRefreshTimeout = undefined;
74
79
  allowedModes = $derived({
75
80
  script: this.flowAiChatHelpers === undefined && this.scriptEditorOptions !== undefined,
76
81
  flow: this.flowAiChatHelpers !== undefined,
@@ -158,6 +163,24 @@ class AIChatManager {
158
163
  this.changeMode(firstKey);
159
164
  }
160
165
  }
166
+ getScriptWorkspaceMutationTarget = () => {
167
+ const path = this.scriptEditorOptions?.path;
168
+ const workspacePath = isWorkspacePath(path) ? path : undefined;
169
+ return {
170
+ kind: 'script',
171
+ path: workspacePath,
172
+ deployed: workspacePath !== undefined && this.scriptEditorOptions?.lastDeployedCode !== undefined
173
+ };
174
+ };
175
+ getFlowWorkspaceMutationTarget = () => {
176
+ return {
177
+ kind: 'flow',
178
+ path: this.flowOptions?.path,
179
+ deployed: !!this.flowOptions?.path &&
180
+ !!this.flowOptions.lastDeployedFlow &&
181
+ !this.flowOptions.lastDeployedFlow.draft_only
182
+ };
183
+ };
161
184
  changeMode(mode, pendingPrompt, options) {
162
185
  if (mode === AIMode.SCRIPT && !tryGetCurrentModel())
163
186
  return;
@@ -180,6 +203,7 @@ class AIChatManager {
180
203
  args: this.scriptEditorOptions?.args ?? {}
181
204
  };
182
205
  },
206
+ getWorkspaceMutationTarget: this.getScriptWorkspaceMutationTarget,
183
207
  applyCode: (code, opts) => {
184
208
  this.scriptEditorApplyCode?.(code, opts);
185
209
  },
@@ -202,7 +226,10 @@ class AIChatManager {
202
226
  this.systemMessage = prepareFlowSystemMessage(customPrompt);
203
227
  this.systemMessage.content = this.systemMessage.content;
204
228
  this.tools = [...flowTools];
205
- this.helpers = this.flowAiChatHelpers;
229
+ this.helpers = {
230
+ ...(this.flowAiChatHelpers ?? {}),
231
+ getWorkspaceMutationTarget: this.getFlowWorkspaceMutationTarget
232
+ };
206
233
  }
207
234
  else if (mode === AIMode.NAVIGATOR) {
208
235
  const customPrompt = getCombinedCustomPrompt(mode);
@@ -359,7 +386,7 @@ class AIChatManager {
359
386
  return prepareScriptUserMessage(pendingPrompt, this.contextManager.getSelectedContext());
360
387
  }
361
388
  else if (this.mode === AIMode.FLOW) {
362
- return prepareFlowUserMessage(pendingPrompt, this.flowAiChatHelpers.getFlowAndSelectedId());
389
+ return prepareFlowUserMessage(pendingPrompt, this.flowAiChatHelpers.getFlowAndSelectedId(), [], this.flowAiChatHelpers.inlineScriptSession);
363
390
  }
364
391
  else if (this.mode === AIMode.NAVIGATOR) {
365
392
  return prepareNavigatorUserMessage(pendingPrompt);
@@ -528,7 +555,7 @@ class AIChatManager {
528
555
  };
529
556
  switch (this.mode) {
530
557
  case AIMode.FLOW:
531
- userMessage = prepareFlowUserMessage(oldInstructions, this.flowAiChatHelpers.getFlowAndSelectedId(), oldSelectedContext);
558
+ userMessage = prepareFlowUserMessage(oldInstructions, this.flowAiChatHelpers.getFlowAndSelectedId(), oldSelectedContext, this.flowAiChatHelpers.inlineScriptSession);
532
559
  break;
533
560
  case AIMode.NAVIGATOR:
534
561
  userMessage = prepareNavigatorUserMessage(oldInstructions);
@@ -834,33 +861,8 @@ class AIChatManager {
834
861
  return;
835
862
  }
836
863
  try {
837
- const datatables = await this.appAiChatHelpers.getDatatables();
838
- console.log('Refreshed datatables:', datatables);
839
- // Flatten to individual tables
840
- const tableElements = [];
841
- for (const dt of datatables) {
842
- if (dt.error) {
843
- // Skip datatables with errors
844
- continue;
845
- }
846
- for (const [schemaName, tables] of Object.entries(dt.schemas)) {
847
- for (const [tableName, columns] of Object.entries(tables)) {
848
- // Format title as "datatable/schema:table" or "datatable/table" if schema is public
849
- const title = schemaName === 'public'
850
- ? `${dt.datatable_name}/${tableName}`
851
- : `${dt.datatable_name}/${schemaName}:${tableName}`;
852
- tableElements.push({
853
- type: 'app_datatable',
854
- datatableName: dt.datatable_name,
855
- schemaName,
856
- tableName,
857
- title,
858
- columns
859
- });
860
- }
861
- }
862
- }
863
- this.cachedDatatables = tableElements;
864
+ const datatables = await this.appAiChatHelpers.listDatatableTables();
865
+ this.cachedDatatables = flattenDatatablesToAppContextElements(datatables);
864
866
  }
865
867
  catch (err) {
866
868
  console.error('Failed to refresh datatables:', err);
@@ -880,13 +882,7 @@ class AIChatManager {
880
882
  for (const path of frontendFiles) {
881
883
  const content = this.appAiChatHelpers.getFrontendFile(path);
882
884
  if (content !== undefined) {
883
- const element = {
884
- type: 'app_frontend_file',
885
- path,
886
- title: path,
887
- content
888
- };
889
- context.push(element);
885
+ context.push(createAppFrontendFileContextElement(path, content));
890
886
  }
891
887
  }
892
888
  // Add backend runnables
@@ -894,13 +890,7 @@ class AIChatManager {
894
890
  for (const { key } of runnables) {
895
891
  const runnable = this.appAiChatHelpers.getBackendRunnable(key);
896
892
  if (runnable) {
897
- const element = {
898
- type: 'app_backend_runnable',
899
- key,
900
- title: key,
901
- runnable
902
- };
903
- context.push(element);
893
+ context.push(createAppBackendRunnableContextElement(key, runnable));
904
894
  }
905
895
  }
906
896
  // Add cached datatables
@@ -911,12 +901,24 @@ class AIChatManager {
911
901
  this.appAiChatHelpers = appHelpers;
912
902
  // Refresh datatables when app helpers are set (deferred to avoid loop)
913
903
  // Use setTimeout to ensure this runs after the effect completes
914
- setTimeout(() => {
915
- this.refreshDatatables();
904
+ if (this.appDatatablesRefreshTimeout) {
905
+ clearTimeout(this.appDatatablesRefreshTimeout);
906
+ }
907
+ this.appDatatablesRefreshTimeout = setTimeout(() => {
908
+ this.appDatatablesRefreshTimeout = undefined;
909
+ if (this.appAiChatHelpers === appHelpers) {
910
+ void this.refreshDatatables();
911
+ }
916
912
  }, 50);
917
913
  return () => {
918
- this.appAiChatHelpers = undefined;
919
- this.cachedDatatables = [];
914
+ if (this.appDatatablesRefreshTimeout) {
915
+ clearTimeout(this.appDatatablesRefreshTimeout);
916
+ this.appDatatablesRefreshTimeout = undefined;
917
+ }
918
+ if (this.appAiChatHelpers === appHelpers) {
919
+ this.appAiChatHelpers = undefined;
920
+ this.cachedDatatables = [];
921
+ }
920
922
  };
921
923
  };
922
924
  cancelLoadingTools = (messageText = 'Canceled') => {
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">import { untrack } from 'svelte';
2
2
  import { Popover } from '../../meltComponents';
3
3
  import { Loader2, X } from 'lucide-svelte';
4
- import { ContextIconMap } from './context';
4
+ import { ContextIconMap, formatAppDatatableContextTitle } from './context';
5
5
  import { Highlight } from 'svelte-highlight';
6
6
  import { json } from 'svelte-highlight/languages';
7
7
  import { twMerge } from 'tailwind-merge';
@@ -123,9 +123,11 @@ const isDeletable = $derived(deletable && contextElement.deletable !== false);
123
123
  {:else if contextElement.type === 'app_datatable'}
124
124
  <div class="p-2 max-w-96 max-h-[300px] text-xs overflow-auto">
125
125
  <div class="text-tertiary text-xs mb-1">
126
- {contextElement.datatableName}/{contextElement.schemaName === 'public'
127
- ? ''
128
- : contextElement.schemaName + ':'}{contextElement.tableName}
126
+ {formatAppDatatableContextTitle(
127
+ contextElement.datatableName,
128
+ contextElement.schemaName,
129
+ contextElement.tableName
130
+ )}
129
131
  </div>
130
132
  <ObjectViewer json={contextElement.columns} pureViewer collapseLevel={1} />
131
133
  </div>
@@ -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;