windmill-components 1.596.1 → 1.612.2

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 (414) hide show
  1. package/dist/appPolicy/myFunction.es.js +1337 -0
  2. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +2 -0
  3. package/dist/sharedUtils/base.d.ts +1 -0
  4. package/dist/sharedUtils/cloud.d.ts +1 -0
  5. package/dist/sharedUtils/common.d.ts +108 -0
  6. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +5 -0
  7. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +5 -0
  8. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
  9. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +11 -0
  10. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +11 -0
  11. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +84 -0
  12. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +6 -0
  13. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +7 -0
  14. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +22 -0
  15. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +10 -0
  16. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +5305 -0
  17. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +3 -0
  18. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +3 -0
  19. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +7 -0
  20. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +3 -0
  21. package/dist/sharedUtils/components/apps/gridUtils.d.ts +14 -0
  22. package/dist/sharedUtils/components/apps/inputType.d.ts +176 -0
  23. package/dist/sharedUtils/components/apps/rx.d.ts +29 -0
  24. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +19 -0
  25. package/dist/sharedUtils/components/apps/types.d.ts +274 -0
  26. package/dist/sharedUtils/components/common/alert/model.d.ts +2 -0
  27. package/dist/sharedUtils/components/common/badge/model.d.ts +8 -0
  28. package/dist/sharedUtils/components/common/button/model.d.ts +45 -0
  29. package/dist/sharedUtils/components/common/fileInput/model.d.ts +1 -0
  30. package/dist/sharedUtils/components/common/index.d.ts +24 -0
  31. package/dist/sharedUtils/components/common/skeleton/model.d.ts +21 -0
  32. package/dist/sharedUtils/components/dbTypes.d.ts +11 -0
  33. package/dist/sharedUtils/components/diff_drawer.d.ts +26 -0
  34. package/dist/sharedUtils/components/ducklake.d.ts +1 -0
  35. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +7 -0
  36. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +1 -0
  37. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +10 -0
  38. package/dist/sharedUtils/components/raw_apps/utils.d.ts +15 -0
  39. package/dist/sharedUtils/components/triggers/email/utils.d.ts +4 -0
  40. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +2 -0
  41. package/dist/sharedUtils/components/triggers/http/utils.d.ts +11 -0
  42. package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +2 -0
  43. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +2 -0
  44. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +2 -0
  45. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +8 -0
  46. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +2 -0
  47. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +32 -0
  48. package/dist/sharedUtils/components/triggers/utils.d.ts +81 -0
  49. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +2 -0
  50. package/dist/sharedUtils/components/triggers.d.ts +20 -0
  51. package/dist/sharedUtils/gen/core/ApiError.d.ts +10 -0
  52. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +13 -0
  53. package/dist/sharedUtils/gen/core/ApiResult.d.ts +7 -0
  54. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +26 -0
  55. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +27 -0
  56. package/dist/sharedUtils/gen/core/request.d.ts +29 -0
  57. package/dist/sharedUtils/gen/index.d.ts +6 -0
  58. package/dist/sharedUtils/gen/schemas.gen.d.ts +6192 -0
  59. package/dist/sharedUtils/gen/services.gen.d.ts +5741 -0
  60. package/dist/sharedUtils/gen/types.gen.d.ts +20152 -0
  61. package/dist/sharedUtils/history.svelte.d.ts +9 -0
  62. package/dist/sharedUtils/hub.d.ts +48 -0
  63. package/dist/sharedUtils/jsr.json +6 -0
  64. package/dist/sharedUtils/lib.d.ts +5 -0
  65. package/dist/sharedUtils/lib.es.js +1426 -0
  66. package/dist/sharedUtils/package.json +12 -0
  67. package/dist/sharedUtils/schema.d.ts +3 -0
  68. package/dist/sharedUtils/stores.d.ts +96 -0
  69. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +49 -0
  70. package/dist/sharedUtils/toast.d.ts +8 -0
  71. package/dist/sharedUtils/utils.d.ts +250 -0
  72. package/package/assets/tokens/tokens.json +11 -1
  73. package/package/ata/apis.js +78 -5
  74. package/package/components/AddUser.svelte +1 -1
  75. package/package/components/CenteredModal.svelte +32 -24
  76. package/package/components/CenteredModal.svelte.d.ts +7 -27
  77. package/package/components/CenteredPage.svelte +5 -2
  78. package/package/components/CenteredPage.svelte.d.ts +2 -0
  79. package/package/components/ConcurrentJobsChart.svelte +3 -2
  80. package/package/components/ConcurrentJobsChart.svelte.d.ts +2 -2
  81. package/package/components/CustomPopover.svelte +20 -23
  82. package/package/components/CustomPopover.svelte.d.ts +14 -39
  83. package/package/components/DBManager.svelte +105 -17
  84. package/package/components/DBManager.svelte.d.ts +2 -1
  85. package/package/components/DBManagerContent.svelte +4 -3
  86. package/package/components/DBManagerContent.svelte.d.ts +1 -1
  87. package/package/components/DBTableEditor.svelte +210 -171
  88. package/package/components/DBTableEditor.svelte.d.ts +22 -3
  89. package/package/components/Description.svelte +3 -2
  90. package/package/components/Dev.svelte +36 -2
  91. package/package/components/DiffDrawer.svelte +8 -29
  92. package/package/components/DiffEditor.svelte +32 -2
  93. package/package/components/DisplayResult.svelte +32 -24
  94. package/package/components/Editor.svelte +70 -16
  95. package/package/components/Editor.svelte.d.ts +3 -0
  96. package/package/components/EditorBar.svelte +1 -1
  97. package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
  98. package/package/components/FlowBuilder.svelte +17 -11
  99. package/package/components/FlowDiffViewer.svelte +37 -0
  100. package/package/components/FlowDiffViewer.svelte.d.ts +7 -0
  101. package/package/components/FlowPreviewContent.svelte +3 -2
  102. package/package/components/FlowPreviewResult.svelte +0 -4
  103. package/package/components/FlowStatusViewerInner.svelte +50 -33
  104. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -1
  105. package/package/components/FlowStatusWaitingForEvents.svelte +27 -23
  106. package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +4 -18
  107. package/package/components/FlowViewer.svelte +103 -2
  108. package/package/components/FlowViewer.svelte.d.ts +9 -3
  109. package/package/components/ForkWorkspaceBanner.svelte +16 -13
  110. package/package/components/GraphqlSchemaViewer.svelte +8 -1
  111. package/package/components/HistoricInputs.svelte +25 -27
  112. package/package/components/HistoricInputs.svelte.d.ts +2 -2
  113. package/package/components/InstanceSetting.svelte +38 -0
  114. package/package/components/InviteUser.svelte +16 -42
  115. package/package/components/InviteUser.svelte.d.ts +4 -18
  116. package/package/components/JobOtelTraces.svelte +287 -0
  117. package/package/components/JobOtelTraces.svelte.d.ts +6 -0
  118. package/package/components/JsonInputs.svelte +6 -8
  119. package/package/components/JsonInputs.svelte.d.ts +7 -8
  120. package/package/components/LogViewer.svelte +91 -33
  121. package/package/components/Login.svelte +21 -0
  122. package/package/components/ManualPopover.svelte +5 -6
  123. package/package/components/ManualPopover.svelte.d.ts +9 -35
  124. package/package/components/MemoryFootprintViewer.svelte +2 -6
  125. package/package/components/ModulePreview.svelte +23 -21
  126. package/package/components/ModulePreview.svelte.d.ts +1 -0
  127. package/package/components/Path.svelte +2 -2
  128. package/package/components/Path.svelte.d.ts +1 -1
  129. package/package/components/ResourcePicker.svelte +3 -0
  130. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  131. package/package/components/RunButton.svelte +5 -15
  132. package/package/components/RunButton.svelte.d.ts +7 -19
  133. package/package/components/RunChart.svelte +8 -4
  134. package/package/components/RunChart.svelte.d.ts +2 -2
  135. package/package/components/RunFormAdvancedPopup.svelte +1 -1
  136. package/package/components/RunsPage.svelte +169 -539
  137. package/package/components/RunsPage.svelte.d.ts +5 -5
  138. package/package/components/S3FilePicker.svelte +7 -11
  139. package/package/components/S3FilePickerInner.svelte +2 -3
  140. package/package/components/S3FilePickerInner.svelte.d.ts +2 -2
  141. package/package/components/SchemaForm.svelte +26 -19
  142. package/package/components/SchemaFormWithArgPicker.svelte +4 -3
  143. package/package/components/ScriptBuilder.svelte +1 -1
  144. package/package/components/ScriptEditor.svelte +575 -101
  145. package/package/components/Section.svelte +3 -1
  146. package/package/components/ServiceLogsInner.svelte +4 -4
  147. package/package/components/SimpleEditor.svelte +46 -2
  148. package/package/components/SuperadminSettingsInner.svelte +1 -1
  149. package/package/components/TemplateEditor.svelte +54 -29
  150. package/package/components/TemplateEditor.svelte.d.ts +13 -102
  151. package/package/components/UserSettings.svelte +1 -1
  152. package/package/components/WorkerTagPicker.svelte +1 -1
  153. package/package/components/WorkerTagSelect.svelte +5 -2
  154. package/package/components/WorkspaceTutorials.svelte +5 -0
  155. package/package/components/apps/components/buttons/AppButton.svelte +21 -6
  156. package/package/components/apps/components/buttons/AppForm.svelte +2 -1
  157. package/package/components/apps/components/buttons/AppFormButton.svelte +2 -1
  158. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +0 -4
  159. package/package/components/apps/components/display/dbtable/metadata.js +69 -30
  160. package/package/components/apps/components/display/dbtable/queries/alterTable.d.ts +46 -0
  161. package/package/components/apps/components/display/dbtable/queries/alterTable.js +314 -0
  162. package/package/components/apps/components/display/dbtable/queries/alterTable.test.d.ts +1 -0
  163. package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +867 -0
  164. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +2 -24
  165. package/package/components/apps/components/display/dbtable/queries/createTable.js +11 -25
  166. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.d.ts +9 -0
  167. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.js +45 -0
  168. package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +47 -0
  169. package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +402 -0
  170. package/package/components/apps/components/display/dbtable/queries/select.d.ts +2 -0
  171. package/package/components/apps/components/display/dbtable/queries/select.js +37 -6
  172. package/package/components/apps/components/display/dbtable/tableEditor.d.ts +35 -0
  173. package/package/components/apps/components/display/dbtable/tableEditor.js +49 -0
  174. package/package/components/apps/components/display/dbtable/utils.d.ts +10 -1
  175. package/package/components/apps/components/display/dbtable/utils.js +52 -20
  176. package/package/components/apps/components/helpers/HiddenComponent.svelte +1 -1
  177. package/package/components/apps/components/helpers/InputValue.svelte +1 -1
  178. package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
  179. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -2
  180. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
  181. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
  182. package/package/components/apps/editor/AppEditorHeader.svelte +8 -1
  183. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +32 -29
  184. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -2
  185. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +4 -4
  186. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +3 -3
  187. package/package/components/apps/editor/PublicApp.svelte +49 -30
  188. package/package/components/apps/editor/PublicApp.svelte.d.ts +1 -0
  189. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +77 -7
  190. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +2 -2
  191. package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -2
  192. package/package/components/apps/editor/inlineScriptsPanel/utils.js +10 -1
  193. package/package/components/apps/inputType.d.ts +6 -1
  194. package/package/components/auditLogs/AuditLogsFilters.svelte +9 -17
  195. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  196. package/package/components/common/button/model.js +1 -1
  197. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -1
  198. package/package/components/common/languageIcons/TypeScript.svelte +5 -3
  199. package/package/components/common/languageIcons/TypeScript.svelte.d.ts +1 -0
  200. package/package/components/common/modal/Modal.svelte +3 -3
  201. package/package/components/copilot/autocomplete/Autocompletor.js +3 -2
  202. package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -1
  203. package/package/components/copilot/chat/AIButtonStyle.js +2 -1
  204. package/package/components/copilot/chat/AIChat.svelte +3 -1
  205. package/package/components/copilot/chat/AIChatDisplay.svelte +89 -4
  206. package/package/components/copilot/chat/AIChatInput.svelte +275 -0
  207. package/package/components/copilot/chat/AIChatManager.svelte.js +107 -1
  208. package/package/components/copilot/chat/AiChatLayout.svelte +15 -30
  209. package/package/components/copilot/chat/AppAvailableContextList.svelte +263 -0
  210. package/package/components/copilot/chat/AppAvailableContextList.svelte.d.ts +13 -0
  211. package/package/components/copilot/chat/ContextElementBadge.svelte +44 -0
  212. package/package/components/copilot/chat/DatatableCreationPolicy.svelte +32 -33
  213. package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
  214. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +3 -0
  215. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +4 -0
  216. package/package/components/copilot/chat/app/core.d.ts +56 -15
  217. package/package/components/copilot/chat/app/core.js +141 -22
  218. package/package/components/copilot/chat/context.d.ts +59 -2
  219. package/package/components/copilot/chat/context.js +6 -2
  220. package/package/components/copilot/chat/flow/FlowAIChat.svelte +22 -0
  221. package/package/components/copilot/chat/flow/core.d.ts +3 -1
  222. package/package/components/copilot/chat/flow/core.js +29 -2
  223. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  224. package/package/components/copilot/chat/flow/openFlowZod.d.ts +1 -0
  225. package/package/components/copilot/chat/flow/openFlowZod.js +14 -2
  226. package/package/components/copilot/chat/script/core.d.ts +4 -1
  227. package/package/components/copilot/chat/script/core.js +38 -2
  228. package/package/components/copilot/chat/shared.d.ts +10 -0
  229. package/package/components/copilot/chat/shared.js +24 -0
  230. package/package/components/copilot/lib.d.ts +1 -1
  231. package/package/components/custom_ui.d.ts +1 -0
  232. package/package/components/dbOps.d.ts +18 -4
  233. package/package/components/dbOps.js +25 -3
  234. package/package/components/debug/DebugConsole.svelte +277 -0
  235. package/package/components/debug/DebugConsole.svelte.d.ts +13 -0
  236. package/package/components/debug/DebugPanel.svelte +97 -0
  237. package/package/components/debug/DebugPanel.svelte.d.ts +11 -0
  238. package/package/components/debug/DebugToolbar.svelte +148 -0
  239. package/package/components/debug/DebugToolbar.svelte.d.ts +17 -0
  240. package/package/components/debug/DebugVariableViewer.svelte +115 -0
  241. package/package/components/debug/DebugVariableViewer.svelte.d.ts +11 -0
  242. package/package/components/debug/MonacoDebugger.svelte +384 -0
  243. package/package/components/debug/MonacoDebugger.svelte.d.ts +15 -0
  244. package/package/components/debug/dapClient.d.ts +192 -0
  245. package/package/components/debug/dapClient.js +426 -0
  246. package/package/components/debug/debugUtils.d.ts +30 -0
  247. package/package/components/debug/debugUtils.js +131 -0
  248. package/package/components/debug/index.d.ts +75 -0
  249. package/package/components/debug/index.js +82 -0
  250. package/package/components/flows/CreateActionsApp.svelte +6 -4
  251. package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
  252. package/package/components/flows/FlowHistoryInner.svelte +15 -4
  253. package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
  254. package/package/components/flows/content/FlowEditorDrawer.svelte +124 -0
  255. package/package/components/flows/content/FlowEditorDrawer.svelte.d.ts +22 -0
  256. package/package/components/flows/content/FlowInput.svelte +211 -37
  257. package/package/components/flows/content/FlowModuleComponent.svelte +553 -67
  258. package/package/components/flows/content/FlowModuleEarlyStop.svelte +8 -10
  259. package/package/components/flows/content/FlowModuleHeader.svelte +7 -4
  260. package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +1 -1
  261. package/package/components/flows/content/McpOAuthConnect.svelte +217 -0
  262. package/package/components/flows/content/McpOAuthConnect.svelte.d.ts +7 -0
  263. package/package/components/flows/content/McpToolEditor.svelte +50 -37
  264. package/package/components/flows/content/McpToolEditor.svelte.d.ts +0 -1
  265. package/package/components/flows/conversations/FlowChat.svelte +16 -2
  266. package/package/components/flows/conversations/FlowChat.svelte.d.ts +2 -1
  267. package/package/components/flows/conversations/FlowChatInterface.svelte +103 -6
  268. package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +2 -0
  269. package/package/components/flows/conversations/FlowChatManager.svelte.js +53 -21
  270. package/package/components/flows/header/FlowImportExportMenu.svelte +1 -1
  271. package/package/components/flows/propPicker/PropPickerWrapper.svelte +3 -1
  272. package/package/components/flows/types.d.ts +2 -0
  273. package/package/components/git_sync/GitSyncRepositoryCard.svelte +16 -8
  274. package/package/components/home/ItemsList.svelte +5 -5
  275. package/package/components/home/TutorialBanner.svelte +34 -18
  276. package/package/components/icons/CssIcon.svelte +20 -0
  277. package/package/components/icons/CssIcon.svelte.d.ts +7 -25
  278. package/package/components/icons/HtmlIcon.svelte +20 -0
  279. package/package/components/icons/HtmlIcon.svelte.d.ts +8 -0
  280. package/package/components/icons/JavaScriptIcon.svelte +10 -2
  281. package/package/components/icons/JavaScriptIcon.svelte.d.ts +1 -0
  282. package/package/components/icons/JsonIcon.svelte +8 -2
  283. package/package/components/icons/JsonIcon.svelte.d.ts +1 -0
  284. package/package/components/icons/LessIcon.svelte +16 -0
  285. package/package/components/icons/LessIcon.svelte.d.ts +8 -0
  286. package/package/components/icons/MarkdownIcon.svelte +20 -0
  287. package/package/components/icons/MarkdownIcon.svelte.d.ts +8 -0
  288. package/package/components/icons/ReactIcon.svelte +10 -2
  289. package/package/components/icons/ReactIcon.svelte.d.ts +1 -0
  290. package/package/components/icons/SassIcon.svelte +28 -0
  291. package/package/components/icons/SassIcon.svelte.d.ts +8 -0
  292. package/package/components/icons/SvelteIcon.svelte +10 -2
  293. package/package/components/icons/SvelteIcon.svelte.d.ts +1 -0
  294. package/package/components/icons/VueIcon.svelte +10 -2
  295. package/package/components/icons/VueIcon.svelte.d.ts +1 -0
  296. package/package/components/icons/YamlIcon.svelte +20 -0
  297. package/package/components/icons/YamlIcon.svelte.d.ts +8 -0
  298. package/package/components/instanceSettings/SecretBackendConfig.svelte +514 -0
  299. package/package/components/instanceSettings/SecretBackendConfig.svelte.d.ts +8 -0
  300. package/package/components/instanceSettings.d.ts +2 -1
  301. package/package/components/instanceSettings.js +32 -1
  302. package/package/components/jobs/JobPreview.svelte +46 -39
  303. package/package/components/jobs/JobPreview.svelte.d.ts +1 -0
  304. package/package/components/monacoLanguagesOptions.js +16 -15
  305. package/package/components/propertyPicker/PropPicker.svelte +16 -2
  306. package/package/components/propertyPicker/PropPicker.svelte.d.ts +2 -0
  307. package/package/components/raw_apps/DefaultDatabaseSelector.svelte +9 -5
  308. package/package/components/raw_apps/FileEditorIcon.svelte +12 -7
  309. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +2 -0
  310. package/package/components/raw_apps/FileTreeNode.svelte +119 -83
  311. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +88 -8
  312. package/package/components/raw_apps/RawAppDataTableList.svelte +12 -9
  313. package/package/components/raw_apps/RawAppEditor.svelte +218 -68
  314. package/package/components/raw_apps/RawAppEditorHeader.svelte +33 -16
  315. package/package/components/raw_apps/RawAppHistoryList.svelte +264 -80
  316. package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +1 -0
  317. package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +15 -1
  318. package/package/components/raw_apps/RawAppHistoryManager.svelte.js +46 -12
  319. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +549 -47
  320. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +31 -5
  321. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +25 -18
  322. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -0
  323. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +141 -10
  324. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +8 -0
  325. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +2 -1
  326. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +9 -1
  327. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +47 -3
  328. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +2 -2
  329. package/package/components/raw_apps/RawAppModules.svelte +13 -7
  330. package/package/components/raw_apps/RawAppPreview.svelte +48 -6
  331. package/package/components/raw_apps/RawAppSidebar.svelte +194 -125
  332. package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +1 -0
  333. package/package/components/raw_apps/RunnableRow.svelte +41 -0
  334. package/package/components/raw_apps/RunnableRow.svelte.d.ts +11 -0
  335. package/package/components/raw_apps/utils.d.ts +1 -1
  336. package/package/components/raw_apps/utils.js +76 -18
  337. package/package/components/runs/ManuelDatePicker.svelte +3 -3
  338. package/package/components/runs/ManuelDatePicker.svelte.d.ts +3 -3
  339. package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -1
  340. package/package/components/runs/RunsFilter.svelte +75 -63
  341. package/package/components/runs/RunsFilter.svelte.d.ts +35 -4
  342. package/package/components/runs/RunsQueue.svelte.d.ts +1 -1
  343. package/package/components/runs/RunsTable.svelte +1 -1
  344. package/package/components/runs/RunsTable.svelte.d.ts +1 -1
  345. package/package/components/runs/useJobsLoader.svelte.d.ts +34 -0
  346. package/package/components/runs/useJobsLoader.svelte.js +507 -0
  347. package/package/components/scriptEditor/LogPanel.svelte +17 -2
  348. package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
  349. package/package/components/select/SelectDropdown.svelte +2 -2
  350. package/package/components/settings/AIPromptsModal.svelte +88 -0
  351. package/package/components/settings/AIPromptsModal.svelte.d.ts +11 -0
  352. package/package/components/settings/ChangeWorkspaceColor.svelte +4 -3
  353. package/package/components/settings/ChangeWorkspaceId.svelte +14 -10
  354. package/package/components/settings/ChangeWorkspaceName.svelte +7 -6
  355. package/package/components/settings/UserAIPromptsSettings.svelte +56 -15
  356. package/package/components/settings/WorkspaceOperatorSettings.svelte +68 -85
  357. package/package/components/settings/WorkspaceUserSettings.svelte +531 -406
  358. package/package/components/sidebar/MenuButton.svelte +46 -24
  359. package/package/components/sidebar/MenuButton.svelte.d.ts +2 -0
  360. package/package/components/sidebar/MultiplayerMenu.svelte +3 -3
  361. package/package/components/sidebar/OperatorMenu.svelte +62 -87
  362. package/package/components/sidebar/SidebarContent.svelte +7 -2
  363. package/package/components/sidebar/WorkspaceMenu.svelte +35 -85
  364. package/package/components/sqlTypeService.js +4 -3
  365. package/package/components/table/DataTable.svelte +3 -2
  366. package/package/components/table/DataTable.svelte.d.ts +1 -0
  367. package/package/components/text_input/TextInput.svelte +3 -0
  368. package/package/components/text_input/TextInput.svelte.d.ts +2 -0
  369. package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +6 -35
  370. package/package/components/tutorials/RunsTutorial.svelte +399 -0
  371. package/package/components/{schema/SchemaPicker.svelte.d.ts → tutorials/RunsTutorial.svelte.d.ts} +11 -12
  372. package/package/components/tutorials/TroubleshootFlowTutorial.svelte +5 -20
  373. package/package/components/tutorials/utils.d.ts +16 -0
  374. package/package/components/tutorials/utils.js +96 -0
  375. package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +133 -0
  376. package/package/components/{SavedInputs.svelte.d.ts → tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte.d.ts} +8 -11
  377. package/package/components/vscode.js +6 -6
  378. package/package/components/workspace/WorkspaceCard.svelte +184 -0
  379. package/package/components/workspace/WorkspaceCard.svelte.d.ts +24 -0
  380. package/package/components/workspace/WorkspaceIcon.svelte +21 -0
  381. package/package/components/workspace/WorkspaceIcon.svelte.d.ts +9 -0
  382. package/package/components/workspace/WorkspaceTreeView.svelte +331 -0
  383. package/package/components/workspace/WorkspaceTreeView.svelte.d.ts +15 -0
  384. package/package/components/workspaceSettings/AISettings.svelte +146 -108
  385. package/package/components/workspaceSettings/CreateWorkspace.svelte +25 -11
  386. package/package/components/workspaceSettings/DucklakeSettings.svelte +46 -23
  387. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +2 -1
  388. package/package/components/workspaceSettings/ModelTokenLimits.svelte +14 -18
  389. package/package/components/workspaceSettings/StorageSettings.svelte +280 -241
  390. package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +1 -0
  391. package/package/consts.js +4 -1
  392. package/package/gen/core/OpenAPI.js +1 -1
  393. package/package/gen/schemas.gen.d.ts +126 -0
  394. package/package/gen/schemas.gen.js +126 -0
  395. package/package/gen/services.gen.d.ts +160 -2
  396. package/package/gen/services.gen.js +319 -4
  397. package/package/gen/types.gen.d.ts +607 -2
  398. package/package/hubPaths.json +3 -2
  399. package/package/infer.js +2 -0
  400. package/package/monaco_workers/graphql.worker.bundle.js +121 -121
  401. package/package/rawAppWmillTs.d.ts +11 -0
  402. package/package/rawAppWmillTs.js +38 -1
  403. package/package/svelte5Utils.svelte.d.ts +9 -0
  404. package/package/svelte5Utils.svelte.js +51 -1
  405. package/package/tutorialUtils.js +0 -4
  406. package/package/tutorials/config.js +31 -3
  407. package/package/tutorials/roleUtils.d.ts +1 -1
  408. package/package/tutorials/roleUtils.js +6 -2
  409. package/package/utils.js +159 -1
  410. package/package.json +16 -17
  411. package/package/components/SavedInputs.svelte +0 -416
  412. package/package/components/runs/JobsLoader.svelte +0 -468
  413. package/package/components/runs/JobsLoader.svelte.d.ts +0 -49
  414. package/package/components/schema/SchemaPicker.svelte +0 -92
@@ -1,6 +1,7 @@
1
1
  <script module lang="ts">export const sidebarClasses = {
2
2
  text: 'text-primary-inverse dark:text-primary data-[light-mode=true]:text-primary text-xs font-normal',
3
3
  selectedText: 'text-emphasis-inverse dark:text-emphasis text-xs font-normal',
4
+ sublabelText: 'text-secondary-inverse dark:text-secondary text-2xs font-normal',
4
5
  hoverBg: 'transition-colors hover:bg-surface-hover-inverse dark:hover:bg-surface-hover data-[light-mode=true]:hover:bg-surface-hover'
5
6
  };
6
7
  </script>
@@ -11,7 +12,7 @@ import { createEventDispatcher } from 'svelte';
11
12
  import SideBarNotification from './SideBarNotification.svelte';
12
13
  import { conditionalMelt } from '../../utils';
13
14
  import { triggerableByAI } from '../../actions/triggerableByAI.svelte';
14
- let { aiId = undefined, aiDescription = undefined, label = undefined, icon = undefined, iconClasses = null, iconProps = null, isCollapsed, disabled = false, lightMode = false, stopPropagationOnClick = false, shortcut = '', notificationsCount = 0, color = null, trigger = undefined, href = undefined, class: classNames = undefined } = $props();
15
+ let { aiId = undefined, aiDescription = undefined, label = undefined, sublabel = undefined, icon = undefined, iconClasses = null, iconProps = null, isCollapsed, disabled = false, lightMode = false, stopPropagationOnClick = false, shortcut = '', notificationsCount = 0, color = null, trigger = undefined, href = undefined, class: classNames = undefined } = $props();
15
16
  let buttonRef = $state(undefined);
16
17
  let dispatch = createEventDispatcher();
17
18
  // Dynamic component based on whether href is provided
@@ -47,42 +48,63 @@ const Element = href ? 'a' : 'button';
47
48
  {href}
48
49
  data-light-mode={lightMode}
49
50
  class={twMerge(
50
- 'group flex items-center px-2 py-2 font-light rounded-md h-8 gap-3 w-full',
51
+ 'group flex items-center px-2 py-2 font-light rounded-md gap-2 w-full',
51
52
  sidebarClasses.hoverBg,
52
- color ? 'border-4' : '',
53
53
  'transition-all relative',
54
+ sublabel ? 'h-10' : 'h-8',
54
55
  classNames
55
56
  )}
56
- style={color ? `border-color: ${color}; padding: 0 calc(0.5rem - 4px);` : ''}
57
57
  use:conditionalMelt={trigger}
58
58
  title={isCollapsed ? undefined : label}
59
59
  {...$trigger}
60
60
  >
61
61
  {#if icon}
62
62
  {@const SvelteComponent = icon}
63
- <SvelteComponent
64
- size={16}
65
- class={twMerge('flex-shrink-0', sidebarClasses.text, 'transition-colors', iconClasses)}
66
- {...iconProps}
67
- />
68
- {/if}
69
-
70
- {#if !isCollapsed && label}
71
- <span
72
- class={twMerge(
73
- 'whitespace-pre truncate',
74
- sidebarClasses.text,
75
- 'transition-all',
76
- classNames
77
- )}
63
+ <div
64
+ style="background-color: {color}"
65
+ class={twMerge('rounded-full center-center', color ? 'p-1 -ml-1' : '')}
78
66
  >
79
- {label}
80
- <span class="pl-2 text-xs dark:text-secondary light:text-secondary-inverse font-semibold">
81
- {shortcut}
82
- </span>
83
- </span>
67
+ <SvelteComponent
68
+ size={16}
69
+ class={twMerge('flex-shrink-0', sidebarClasses.text, 'transition-colors', iconClasses)}
70
+ {...iconProps}
71
+ />
72
+ </div>
84
73
  {/if}
85
74
 
75
+ <div class="flex flex-col text-left grow min-w-0">
76
+ {#if !isCollapsed && label}
77
+ <div
78
+ class={twMerge(
79
+ 'whitespace-pre truncate w-full',
80
+ sidebarClasses.text,
81
+ 'transition-all',
82
+ classNames
83
+ )}
84
+ title={label}
85
+ >
86
+ {label}
87
+ <span
88
+ class="pl-2 text-xs dark:text-secondary light:text-secondary-inverse font-semibold"
89
+ >
90
+ {shortcut}
91
+ </span>
92
+ </div>
93
+ {/if}
94
+
95
+ {#if sublabel}
96
+ <div
97
+ class={twMerge(
98
+ 'whitespace-pre truncate w-full',
99
+ sidebarClasses.sublabelText,
100
+ 'transition-all',
101
+ classNames
102
+ )}
103
+ title={sublabel}>{sublabel}</div
104
+ >
105
+ {/if}
106
+ </div>
107
+
86
108
  {#if isCollapsed && notificationsCount > 0}
87
109
  <div class="absolute translate-x-1/2 translate-y-1/2 -top-2 right-1 flex h-fit w-fit">
88
110
  <SideBarNotification notificationCount={notificationsCount} small={true} />
@@ -1,6 +1,7 @@
1
1
  export declare const sidebarClasses: {
2
2
  text: string;
3
3
  selectedText: string;
4
+ sublabelText: string;
4
5
  hoverBg: string;
5
6
  };
6
7
  import type { MenubarMenuElements } from '@melt-ui/svelte';
@@ -8,6 +9,7 @@ interface Props {
8
9
  aiId?: string | undefined;
9
10
  aiDescription?: string | undefined;
10
11
  label?: string | undefined;
12
+ sublabel?: string | undefined;
11
13
  icon?: any | undefined;
12
14
  iconClasses?: string | null;
13
15
  iconProps?: any | null;
@@ -80,7 +80,7 @@ function showActivity(url) {
80
80
 
81
81
  {#if connected}
82
82
  <div class="divide-gray-100 border-t" role="none">
83
- <div class="px-2.5 text-xs font-semibold mt-1">Live activity</div>
83
+ <div class="px-2 text-xs text-secondary font-normal mt-1">Live activity</div>
84
84
  <div class="py-1 flex flex-col gap-y-1 max-h-48 overflow-auto" transition:slide>
85
85
  {#each Object.entries($awarenessStore ?? {}) as [user, url]}
86
86
  <div class="inline-flex gap-2 px-2 items-center">
@@ -93,8 +93,8 @@ function showActivity(url) {
93
93
  >
94
94
  </span>
95
95
  <div class="flex flex-col">
96
- <span class="text-sm text-primary truncate">{user}</span>
97
- <span class="text-xs text-primary truncate">{showActivity(url)}</span>
96
+ <span class="text-xs text-primary truncate">{user}</span>
97
+ <span class="text-2xs text-secondary truncate">{showActivity(url)}</span>
98
98
  </div>
99
99
  </div>
100
100
  {/each}
@@ -10,7 +10,7 @@ import BarsStaggered from '../icons/BarsStaggered.svelte';
10
10
  import { Menu, Menubar, MenuItem } from '../meltComponents';
11
11
  import MenuButton, { sidebarClasses } from './MenuButton.svelte';
12
12
  import MenuLink from './MenuLink.svelte';
13
- import { onDestroy } from 'svelte';
13
+ import ResizeTransitionWrapper from '../common/ResizeTransitionWrapper.svelte';
14
14
  let darkMode = $state(false);
15
15
  let { isCollapsed = false, favoriteLinks = [] } = $props();
16
16
  let mainMenuLinks = $derived([
@@ -34,6 +34,12 @@ let mainMenuLinks = $derived([
34
34
  $workspaceStore &&
35
35
  $userWorkspaces.find((_) => _.id === $workspaceStore)?.operator_settings?.[link.id] ===
36
36
  true)));
37
+ function filterLink(link) {
38
+ if (!$userWorkspaces || !$workspaceStore)
39
+ return false;
40
+ let userWorkspace = $userWorkspaces.find((_) => _.id === $workspaceStore);
41
+ return userWorkspace?.operator_settings?.[link.id] === true;
42
+ }
37
43
  let secondMenuLinks = $derived([
38
44
  {
39
45
  label: 'Resources',
@@ -50,6 +56,23 @@ let secondMenuLinks = $derived([
50
56
  id: 'assets',
51
57
  href: `${base}/assets`
52
58
  },
59
+ {
60
+ label: 'Groups',
61
+ id: 'groups',
62
+ href: `${base}/groups`
63
+ },
64
+ {
65
+ label: 'Folders',
66
+ id: 'folders',
67
+ href: `${base}/folders`
68
+ },
69
+ {
70
+ label: 'Workers',
71
+ id: 'workers',
72
+ href: `${base}/workers`
73
+ }
74
+ ].filter(filterLink));
75
+ let secondMenuTriggerLinks = $derived([
53
76
  {
54
77
  label: 'Custom HTTP routes',
55
78
  id: 'triggers',
@@ -99,47 +122,14 @@ let secondMenuLinks = $derived([
99
122
  label: 'Audit logs',
100
123
  id: 'audit_logs',
101
124
  href: `${base}/audit_logs`
102
- },
103
- {
104
- label: 'Groups',
105
- id: 'groups',
106
- href: `${base}/groups`
107
- },
108
- {
109
- label: 'Folders',
110
- id: 'folders',
111
- href: `${base}/folders`
112
- },
113
- {
114
- label: 'Workers',
115
- id: 'workers',
116
- href: `${base}/workers`
117
125
  }
118
- ].filter((link) => {
119
- if (!$userWorkspaces || !$workspaceStore)
120
- return false;
121
- return ($userWorkspaces.find((_) => _.id === $workspaceStore)?.operator_settings?.[link.id] === true);
122
- }));
123
- let moreOpen = $state(false);
124
- let moreOpenTimeout = $state();
125
- function debouncedSetMoreOpen(value) {
126
- if (moreOpenTimeout) {
127
- clearTimeout(moreOpenTimeout);
128
- }
129
- moreOpenTimeout = setTimeout(() => {
130
- moreOpen = value;
131
- }, 150); // 150ms debounce
132
- }
133
- onDestroy(() => {
134
- if (moreOpenTimeout) {
135
- clearTimeout(moreOpenTimeout);
136
- }
137
- });
126
+ ].filter(filterLink));
127
+ let showMore = $state(false);
138
128
  </script>
139
129
 
140
130
  <Menubar>
141
131
  {#snippet children({ createMenu })}
142
- <Menu {createMenu} usePointerDownOutside>
132
+ <Menu {createMenu} usePointerDownOutside on:close={() => (showMore = false)}>
143
133
  {#snippet triggr({ trigger })}
144
134
  <MenuButton
145
135
  class="!text-xs"
@@ -255,8 +245,8 @@ onDestroy(() => {
255
245
  onClick={() => logout()}
256
246
  class={twMerge(
257
247
  'flex flex-row gap-3.5 items-center px-2 py-2 w-full',
258
- 'text-secondary text-xs',
259
- 'hover:bg-surface-hover hover:text-primary cursor-pointer',
248
+ 'text-primary text-xs',
249
+ 'hover:bg-surface-hover cursor-pointer',
260
250
  'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary'
261
251
  )}
262
252
  {item}
@@ -265,57 +255,42 @@ onDestroy(() => {
265
255
  Sign out
266
256
  </MenuItem>
267
257
  </div>
268
- <div
269
- onmouseenter={() => debouncedSetMoreOpen(true)}
270
- onmouseleave={() => debouncedSetMoreOpen(false)}
271
- role="none"
272
- >
273
- <MenuItem
274
- onFocusIn={() => debouncedSetMoreOpen(true)}
275
- onFocusOut={() => debouncedSetMoreOpen(false)}
276
- {item}
277
- >
278
- {#if !moreOpen || secondMenuLinks.length === 0}
279
- <div class="px-2 py-2 text-primary text-2xs">More...</div>
280
- {/if}
281
- </MenuItem>
282
- {#if moreOpen && secondMenuLinks.length > 0}
283
- {#each secondMenuLinks as menuLink (menuLink.href ?? menuLink.label)}
284
- <div>
285
- <MenuItem
286
- href={menuLink.href}
287
- class={twMerge(
288
- 'flex flex-row gap-3.5 items-center px-2 py-2 text-secondary text-2xs hover:bg-surface-hover hover:text-primary cursor-pointer',
289
- 'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary'
290
- )}
291
- {item}
292
- onFocusIn={() => debouncedSetMoreOpen(true)}
293
- onFocusOut={() => debouncedSetMoreOpen(false)}
294
- >
295
- {menuLink.label}
296
- </MenuItem>
297
- </div>
298
- {/each}
258
+ <div onmouseleave={() => (showMore = false)} role="none">
259
+ {#if secondMenuLinks.length}
260
+ <ResizeTransitionWrapper vertical innerClass="w-full">
261
+ {#if !showMore}
262
+ <div onmouseenter={() => (showMore = true)} role="none">
263
+ <MenuItem {item}>
264
+ <div class="px-2 py-2 text-primary text-2xs">More...</div>
265
+ </MenuItem>
266
+ </div>
267
+ {:else}
268
+ {#snippet renderSecondMenuLinks(menuLinks: SecondMenuLink[])}
269
+ {#each menuLinks as menuLink (menuLink.href ?? menuLink.label)}
270
+ <MenuItem
271
+ href={menuLink.href}
272
+ class={twMerge(
273
+ 'flex flex-row gap-3.5 items-center px-2 py-2 text-secondary text-2xs hover:bg-surface-hover hover:text-primary cursor-pointer',
274
+ 'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary'
275
+ )}
276
+ {item}
277
+ >
278
+ {menuLink.label}
279
+ </MenuItem>
280
+ {/each}
281
+ {/snippet}
282
+ <div class="divide-y">
283
+ <div>{@render renderSecondMenuLinks(secondMenuLinks)}</div>
284
+ <div>{@render renderSecondMenuLinks(secondMenuTriggerLinks)}</div>
285
+ </div>
286
+ {/if}
287
+ </ResizeTransitionWrapper>
288
+ {/if}
289
+ {#if $enterpriseLicense}
290
+ <MultiplayerMenu />
299
291
  {/if}
300
292
  </div>
301
293
  </div>
302
- {#if $enterpriseLicense}
303
- <div
304
- onmouseenter={() => {
305
- if (moreOpenTimeout) {
306
- setTimeout(() => {
307
- clearTimeout(moreOpenTimeout)
308
- }, 15)
309
- }
310
- }}
311
- onmouseleave={() => {
312
- debouncedSetMoreOpen(false)
313
- }}
314
- role="none"
315
- >
316
- <MultiplayerMenu />
317
- </div>
318
- {/if}
319
294
  {/snippet}
320
295
  </Menu>
321
296
  {/snippet}
@@ -582,7 +582,12 @@ let secondaryMenuLinks = $derived([
582
582
  {/snippet}
583
583
  {#snippet children({ item })}
584
584
  {#each menuLink.subItems as subItem (subItem.href ?? subItem.label)}
585
- <MenuItem href={subItem.href} class={itemClass} target={subItem.external !== false ? "_blank" : undefined} {item}>
585
+ <MenuItem
586
+ href={subItem.href}
587
+ class={itemClass}
588
+ target={subItem.external !== false ? '_blank' : undefined}
589
+ {item}
590
+ >
586
591
  <div class="flex flex-row items-center gap-2">
587
592
  {#if subItem.icon}
588
593
  <subItem.icon size={16} />
@@ -615,7 +620,7 @@ let secondaryMenuLinks = $derived([
615
620
  <ConfirmationModal
616
621
  open={leaveWorkspaceModal}
617
622
  title="Leave workspace"
618
- confirmationText="Remove"
623
+ confirmationText="Leave workspace"
619
624
  on:canceled={() => {
620
625
  leaveWorkspaceModal = false
621
626
  }}
@@ -2,6 +2,7 @@
2
2
  import { Building, Plus, Settings, GitFork } from 'lucide-svelte';
3
3
  import MenuButton from './MenuButton.svelte';
4
4
  import { Menu, MenuItem } from '../meltComponents';
5
+ import WorkspaceIcon from '../workspace/WorkspaceIcon.svelte';
5
6
  import { goto } from '../../navigation';
6
7
  import { base } from '../../base';
7
8
  import { page } from '$app/stores';
@@ -12,6 +13,7 @@ import { isCloudHosted } from '../../cloud';
12
13
  import { workspaceAIClients } from '../copilot/lib';
13
14
  import { twMerge } from 'tailwind-merge';
14
15
  import { buildWorkspaceHierarchy } from '../../utils/workspaceHierarchy';
16
+ import { getContrastTextColor } from '../../utils';
15
17
  function removePrefix(str, prefix) {
16
18
  if (str.startsWith(prefix)) {
17
19
  return str.substring(prefix.length);
@@ -44,12 +46,6 @@ async function toggleSwitchWorkspace(id) {
44
46
  await goto('/');
45
47
  }
46
48
  }
47
- // Helper function to check if a workspace is forked
48
- function isForkedWorkspace(workspaceId) {
49
- if (!$userWorkspaces)
50
- return false;
51
- return $userWorkspaces.some((w) => w.id === workspaceId && w.parent_workspace_id != null);
52
- }
53
49
  function getForkedWorkspace(workspaceId) {
54
50
  if (!$userWorkspaces)
55
51
  return undefined;
@@ -61,48 +57,37 @@ function getParentWorkspace(parentId) {
61
57
  return $userWorkspaces.find((w) => w.id === parentId);
62
58
  }
63
59
  // Group workspaces into parent-child hierarchy using Svelte 5 derived and the new utility
64
- const groupedWorkspaces = $derived(() => {
60
+ const groupedWorkspaces = $derived.by(() => {
65
61
  if (!$userWorkspaces)
66
62
  return [];
67
63
  return buildWorkspaceHierarchy($userWorkspaces);
68
64
  });
65
+ const itemClass = 'text-primary flex flex-row gap-2 px-4 py-2 text-xs hover:bg-surface-hover hover:text-primary data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary';
69
66
  </script>
70
67
 
71
- {#if isForkedWorkspace($workspaceStore ?? '') && !isCollapsed}
72
- {@const forkedWorkspace = getForkedWorkspace($workspaceStore ?? '')}
73
- {@const parentWorkspace = forkedWorkspace
74
- ? getParentWorkspace(forkedWorkspace.parent_workspace_id!)
75
- : null}
76
- <Menu {createMenu} usePointerDownOutside>
77
- {#snippet triggr({ trigger })}
78
- <div class="group flex items-center px-2 py-2 font-light rounded-md h-8 gap-3 w-full text-xs">
79
- <Building size={12} class="text-primary" />
80
- <span class="text-xs text-primary"> {parentWorkspace?.name ?? ''} </span>
81
- </div>
82
- {/snippet}
83
- </Menu>
84
- {/if}
85
68
  <Menu {createMenu} usePointerDownOutside>
86
69
  {#snippet triggr({ trigger })}
87
70
  {@const forkedWorkspace = getForkedWorkspace($workspaceStore ?? '')}
88
71
  {@const parentWorkspace = forkedWorkspace
89
72
  ? getParentWorkspace(forkedWorkspace.parent_workspace_id!)
90
73
  : null}
74
+ {@const iconColor = getContrastTextColor($workspaceColor)}
91
75
  {#if forkedWorkspace && parentWorkspace}
92
- <div class={isCollapsed ? '' : 'pl-6'}>
93
- <MenuButton
94
- class="!text-xs"
95
- icon={GitFork}
96
- label={removePrefix($workspaceStore ?? '', 'wm-fork-')}
97
- {isCollapsed}
98
- color={$workspaceColor}
99
- {trigger}
100
- />
101
- </div>
76
+ <MenuButton
77
+ class="!text-xs"
78
+ icon={GitFork}
79
+ iconProps={iconColor ? { style: `color: ${iconColor}` } : undefined}
80
+ label={removePrefix($workspaceStore ?? '', 'wm-fork-')}
81
+ sublabel={parentWorkspace?.name ? `Fork of ${parentWorkspace.name}` : undefined}
82
+ {isCollapsed}
83
+ color={$workspaceColor}
84
+ {trigger}
85
+ />
102
86
  {:else}
103
87
  <MenuButton
104
88
  class="!text-xs"
105
89
  icon={Building}
90
+ iconProps={iconColor ? { style: `color: ${iconColor}` } : undefined}
106
91
  label={$workspaceStore ?? ''}
107
92
  {isCollapsed}
108
93
  color={$workspaceColor}
@@ -114,13 +99,14 @@ const groupedWorkspaces = $derived(() => {
114
99
  {#snippet children({ item })}
115
100
  <div class="divide-y" role="none">
116
101
  <div class="py-1">
117
- {#each groupedWorkspaces() as { workspace, depth, isForked, parentName }}
102
+ {#each groupedWorkspaces as { workspace, depth, isForked, parentName }}
103
+ {@const isSelected = $workspaceStore === workspace.id}
118
104
  <MenuItem
119
105
  class={twMerge(
120
- 'text-xs min-w-0 w-full overflow-hidden flex flex-col py-1.5',
106
+ 'text-xs min-w-0 w-full overflow-hidden flex flex-col py-2 px-3',
121
107
  workspace.disabled && 'opacity-50 cursor-not-allowed',
122
- $workspaceStore === workspace.id
123
- ? 'cursor-default bg-surface-selected'
108
+ isSelected
109
+ ? 'cursor-default bg-surface-accent-selected'
124
110
  : workspace.disabled
125
111
  ? ''
126
112
  : 'cursor-pointer hover:bg-surface-hover data-[highlighted]:bg-surface-hover'
@@ -133,73 +119,47 @@ const groupedWorkspaces = $derived(() => {
133
119
  {item}
134
120
  >
135
121
  <div class="flex items-center justify-between min-w-0 w-full">
136
- <div
137
- class={twMerge('flex items-center gap-2 min-w-0', 'pl-4')}
138
- style:padding-left={`${4 + depth * 12}px`}
139
- >
140
- {#if isForked}
141
- <GitFork size={12} class="text-primary flex-shrink-0" />
142
- {:else}
143
- <Building size={12} />
144
- {/if}
122
+ <div class="flex items-center gap-2 min-w-0" style:padding-left={`${depth * 16}px`}>
123
+ <WorkspaceIcon workspaceColor={workspace.color} {isForked} {parentName} />
145
124
  <div class="min-w-0 flex-1">
146
125
  <div
147
126
  class={twMerge(
148
- 'truncate text-left text-[1.2em]',
149
- isForked ? 'text-secondary' : 'text-primary'
127
+ 'truncate text-left text-xs font-normal',
128
+ isSelected ? 'text-accent' : 'text-primary'
150
129
  )}
130
+ title={workspace.name}
151
131
  >
152
132
  {workspace.name}{workspace.disabled ? ' (user disabled)' : ''}
153
133
  </div>
154
134
  <div
155
135
  class={twMerge(
156
- 'font-mono text-2xs whitespace-nowrap truncate text-left',
157
- isForked ? 'text-primary opacity-75' : 'text-primary'
136
+ 'font-mono text-2xs whitespace-nowrap truncate text-left font-normal',
137
+ isSelected ? 'text-accent/80' : 'text-hint'
158
138
  )}
139
+ title={workspace.id}
159
140
  >
160
141
  {workspace.id}
161
142
  </div>
162
- {#if isForked && parentName}
163
- <div class="text-primary text-2xs truncate text-left pl-2 min-h-[1rem]">
164
- Fork of {parentName}
165
- </div>
166
- {/if}
167
143
  </div>
168
144
  </div>
169
- {#if workspace.color}
170
- <div
171
- class="w-5 h-5 mr-2 rounded border border-gray-300 dark:border-gray-600"
172
- style="background-color: {workspace.color}"
173
- ></div>
174
- {/if}
175
145
  </div>
176
146
  </MenuItem>
177
147
  {/each}
178
148
  </div>
179
149
  {#if (isCloudHosted() || $superadmin) && !strictWorkspaceSelect}
180
150
  <div class="py-1" role="none">
181
- <a
182
- href="{base}/user/create_workspace"
183
- class="text-primary px-4 py-2 text-xs hover:bg-surface-hover hover:text-primary flex flex-flow gap-2"
184
- role="menuitem"
185
- tabindex="-1"
186
- >
151
+ <MenuItem href="{base}/user/create_workspace" class={itemClass} {item}>
187
152
  <Plus size={16} />
188
153
  Workspace
189
- </a>
154
+ </MenuItem>
190
155
  </div>
191
156
  {/if}
192
157
  {#if !strictWorkspaceSelect && !isCloudHosted()}
193
158
  <div class="py-1" role="none">
194
- <a
195
- href="{base}/user/fork_workspace"
196
- class="text-primary px-4 py-2 text-xs hover:bg-surface-hover hover:text-primary flex flex-flow gap-2"
197
- role="menuitem"
198
- tabindex="-1"
199
- >
159
+ <MenuItem href="{base}/user/fork_workspace" class={itemClass} {item}>
200
160
  <GitFork size={16} />
201
161
  Fork current workspace
202
- </a>
162
+ </MenuItem>
203
163
  </div>
204
164
  {/if}
205
165
  {#if !strictWorkspaceSelect}
@@ -207,10 +167,7 @@ const groupedWorkspaces = $derived(() => {
207
167
  <MenuItem
208
168
  href="{base}/user/workspaces"
209
169
  onClick={() => clearWorkspaceFromStorage()}
210
- class={twMerge(
211
- 'text-primary block px-4 py-2 text-xs hover:bg-surface-hover hover:text-primary',
212
- 'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary'
213
- )}
170
+ class={itemClass}
214
171
  {item}
215
172
  >
216
173
  All workspaces
@@ -219,14 +176,7 @@ const groupedWorkspaces = $derived(() => {
219
176
  {/if}
220
177
  {#if ($userStore?.is_admin || $superadmin) && !strictWorkspaceSelect}
221
178
  <div class="py-1" role="none">
222
- <MenuItem
223
- href="{base}/workspace_settings"
224
- class={twMerge(
225
- 'text-secondary px-4 py-2 text-xs hover:bg-surface-hover hover:text-primary flex flex-flow gap-2',
226
- 'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary'
227
- )}
228
- {item}
229
- >
179
+ <MenuItem href="{base}/workspace_settings" class={itemClass} {item}>
230
180
  <Settings size={16} />
231
181
  Workspace settings
232
182
  </MenuItem>
@@ -4,7 +4,8 @@
4
4
  * This module handles the communication between the Monaco editor and the
5
5
  * custom TypeScript worker that injects SQL type annotations.
6
6
  */
7
- import { languages, Uri, editor, MarkerSeverity } from 'monaco-editor';
7
+ import { getTypeScriptWorker } from '@codingame/monaco-vscode-standalone-typescript-language-features';
8
+ import { Uri, editor, MarkerSeverity } from 'monaco-editor';
8
9
  /**
9
10
  * Cached promise for the TypeScript worker client
10
11
  * We lazily initialize this when first needed
@@ -14,7 +15,7 @@ async function getWorkerClient() {
14
15
  try {
15
16
  // Get or create the worker client
16
17
  if (!_workerClient) {
17
- _workerClient = (await languages.typescript.getTypeScriptWorker());
18
+ _workerClient = (await getTypeScriptWorker());
18
19
  }
19
20
  return _workerClient;
20
21
  }
@@ -97,7 +98,7 @@ export async function updateSqlQueriesInWorker(fileUri, queries) {
97
98
  async function revalidateModel(model) {
98
99
  if (!model || model.isDisposed())
99
100
  return;
100
- const getWorker = await languages.typescript.getTypeScriptWorker();
101
+ const getWorker = await getTypeScriptWorker();
101
102
  const worker = await getWorker(model.uri);
102
103
  const diagnostics = (await Promise.all([
103
104
  worker.getSyntacticDiagnostics(model.uri.toString()),
@@ -10,7 +10,7 @@ let footerHeight = $state(0);
10
10
  let tableHeight = $state(0);
11
11
  const dispatch = createEventDispatcher();
12
12
  let tableContainer = $state();
13
- let { paginated = false, currentPage = $bindable(1), showNext = true, showPrev = true, loadMore = 0, shouldLoadMore = false, rounded = true, size = 'md', perPage = $bindable(undefined), shouldHidePagination = false, noBorder = false, rowCount = undefined, hasMore = true, contentHeight = $bindable(0), tableFixed = false, infiniteScroll = undefined, neverShowLoader = false, loading = false, loadingMore = false, children, emptyMessage } = $props();
13
+ let { paginated = false, currentPage = $bindable(1), showNext = true, showPrev = true, loadMore = 0, shouldLoadMore = false, rounded = true, size = 'md', perPage = $bindable(undefined), shouldHidePagination = false, noBorder = false, rowCount = undefined, hasMore = true, contentHeight = $bindable(0), tableFixed = false, infiniteScroll = undefined, neverShowLoader = false, loading = false, loadingMore = false, containerClass = '', children, emptyMessage } = $props();
14
14
  setContext('datatable', {
15
15
  size
16
16
  });
@@ -63,7 +63,8 @@ $effect(() => {
63
63
  class={twMerge(
64
64
  'h-full',
65
65
  rounded ? 'rounded-md overflow-hidden' : '',
66
- noBorder ? 'border-0' : 'border'
66
+ noBorder ? 'border-0' : 'border',
67
+ containerClass
67
68
  )}
68
69
  bind:clientHeight={tableHeight}
69
70
  >
@@ -21,6 +21,7 @@ interface Props {
21
21
  neverShowLoader?: boolean;
22
22
  loading?: boolean;
23
23
  loadingMore?: boolean;
24
+ containerClass?: string;
24
25
  children?: import('svelte').Snippet;
25
26
  emptyMessage?: import('svelte').Snippet;
26
27
  }
@@ -20,6 +20,9 @@ export const inputSizeClasses = {
20
20
  export function focus() {
21
21
  inputEl?.focus();
22
22
  }
23
+ export function select() {
24
+ inputEl?.select();
25
+ }
23
26
  let inputEl = $state();
24
27
  let { inputProps: _inputProps, value = $bindable(), class: className = '', error, size = 'md', unifiedHeight = true, underlyingInputEl: _underlyingInputEl } = $props();
25
28
  let underlyingInputEl = $derived(_underlyingInputEl ?? 'input');
@@ -24,6 +24,7 @@ declare function $$render<UnderlyingInputElT extends 'input' | 'textarea' = 'inp
24
24
  props: Props<UnderlyingInputElT>;
25
25
  exports: {
26
26
  focus: () => void;
27
+ select: () => void;
27
28
  };
28
29
  bindings: "value";
29
30
  slots: {};
@@ -36,6 +37,7 @@ declare class __sveltets_Render<UnderlyingInputElT extends 'input' | 'textarea'
36
37
  bindings(): "value";
37
38
  exports(): {
38
39
  focus: () => void;
40
+ select: () => void;
39
41
  };
40
42
  }
41
43
  interface $$IsomorphicComponent {