windmill-components 1.596.1 → 1.613.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 (416) hide show
  1. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +2 -0
  2. package/dist/sharedUtils/base.d.ts +1 -0
  3. package/dist/sharedUtils/cloud.d.ts +1 -0
  4. package/dist/sharedUtils/common.d.ts +111 -0
  5. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +5 -0
  6. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +5 -0
  7. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
  8. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +13 -0
  9. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +11 -0
  10. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +95 -0
  11. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +6 -0
  12. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +7 -0
  13. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +33 -0
  14. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +10 -0
  15. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +5371 -0
  16. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +3 -0
  17. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +3 -0
  18. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +7 -0
  19. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +3 -0
  20. package/dist/sharedUtils/components/apps/gridUtils.d.ts +14 -0
  21. package/dist/sharedUtils/components/apps/inputType.d.ts +178 -0
  22. package/dist/sharedUtils/components/apps/rx.d.ts +29 -0
  23. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +21 -0
  24. package/dist/sharedUtils/components/apps/types.d.ts +274 -0
  25. package/dist/sharedUtils/components/assets/lib.d.ts +25 -0
  26. package/dist/sharedUtils/components/common/alert/model.d.ts +2 -0
  27. package/dist/sharedUtils/components/common/badge/model.d.ts +8 -0
  28. package/dist/sharedUtils/components/common/button/model.d.ts +45 -0
  29. package/dist/sharedUtils/components/common/fileInput/model.d.ts +1 -0
  30. package/dist/sharedUtils/components/common/index.d.ts +24 -0
  31. package/dist/sharedUtils/components/common/skeleton/model.d.ts +21 -0
  32. package/dist/sharedUtils/components/dbTypes.d.ts +14 -0
  33. package/dist/sharedUtils/components/diff_drawer.d.ts +26 -0
  34. package/dist/sharedUtils/components/ducklake.d.ts +1 -0
  35. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +7 -0
  36. package/dist/sharedUtils/components/icons/index.d.ts +101 -0
  37. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +1 -0
  38. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +10 -0
  39. package/dist/sharedUtils/components/raw_apps/utils.d.ts +15 -0
  40. package/dist/sharedUtils/components/triggers/email/utils.d.ts +4 -0
  41. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +2 -0
  42. package/dist/sharedUtils/components/triggers/http/utils.d.ts +11 -0
  43. package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +2 -0
  44. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +2 -0
  45. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +2 -0
  46. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +8 -0
  47. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +2 -0
  48. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +32 -0
  49. package/dist/sharedUtils/components/triggers/utils.d.ts +80 -0
  50. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +2 -0
  51. package/dist/sharedUtils/components/triggers.d.ts +20 -0
  52. package/dist/sharedUtils/gen/core/ApiError.d.ts +10 -0
  53. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +13 -0
  54. package/dist/sharedUtils/gen/core/ApiResult.d.ts +7 -0
  55. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +26 -0
  56. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +27 -0
  57. package/dist/sharedUtils/gen/core/request.d.ts +29 -0
  58. package/dist/sharedUtils/gen/index.d.ts +6 -0
  59. package/dist/sharedUtils/gen/schemas.gen.d.ts +7036 -0
  60. package/dist/sharedUtils/gen/services.gen.d.ts +6047 -0
  61. package/dist/sharedUtils/gen/types.gen.d.ts +21881 -0
  62. package/dist/sharedUtils/history.svelte.d.ts +9 -0
  63. package/dist/sharedUtils/hub.d.ts +49 -0
  64. package/dist/sharedUtils/jsr.json +6 -0
  65. package/dist/sharedUtils/lib.d.ts +5 -0
  66. package/dist/sharedUtils/lib.es.js +1588 -0
  67. package/dist/sharedUtils/package.json +12 -0
  68. package/dist/sharedUtils/schema.d.ts +3 -0
  69. package/dist/sharedUtils/stores.d.ts +97 -0
  70. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +80 -0
  71. package/dist/sharedUtils/toast.d.ts +8 -0
  72. package/dist/sharedUtils/utils.d.ts +265 -0
  73. package/package/assets/tokens/tokens.json +11 -1
  74. package/package/ata/apis.js +78 -5
  75. package/package/components/AddUser.svelte +1 -1
  76. package/package/components/CenteredModal.svelte +32 -24
  77. package/package/components/CenteredModal.svelte.d.ts +7 -27
  78. package/package/components/CenteredPage.svelte +5 -2
  79. package/package/components/CenteredPage.svelte.d.ts +2 -0
  80. package/package/components/ConcurrentJobsChart.svelte +3 -2
  81. package/package/components/ConcurrentJobsChart.svelte.d.ts +2 -2
  82. package/package/components/CustomPopover.svelte +20 -23
  83. package/package/components/CustomPopover.svelte.d.ts +14 -39
  84. package/package/components/DBManager.svelte +105 -17
  85. package/package/components/DBManager.svelte.d.ts +2 -1
  86. package/package/components/DBManagerContent.svelte +4 -3
  87. package/package/components/DBManagerContent.svelte.d.ts +1 -1
  88. package/package/components/DBTableEditor.svelte +210 -171
  89. package/package/components/DBTableEditor.svelte.d.ts +22 -3
  90. package/package/components/Description.svelte +3 -2
  91. package/package/components/Dev.svelte +36 -2
  92. package/package/components/DiffDrawer.svelte +8 -29
  93. package/package/components/DiffEditor.svelte +32 -2
  94. package/package/components/DisplayResult.svelte +32 -24
  95. package/package/components/Editor.svelte +70 -16
  96. package/package/components/Editor.svelte.d.ts +3 -0
  97. package/package/components/EditorBar.svelte +1 -1
  98. package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
  99. package/package/components/FlowBuilder.svelte +17 -11
  100. package/package/components/FlowDiffViewer.svelte +37 -0
  101. package/package/components/FlowDiffViewer.svelte.d.ts +7 -0
  102. package/package/components/FlowPreviewContent.svelte +3 -2
  103. package/package/components/FlowPreviewResult.svelte +0 -4
  104. package/package/components/FlowStatusViewerInner.svelte +50 -33
  105. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -1
  106. package/package/components/FlowStatusWaitingForEvents.svelte +27 -23
  107. package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +4 -18
  108. package/package/components/FlowViewer.svelte +103 -2
  109. package/package/components/FlowViewer.svelte.d.ts +9 -3
  110. package/package/components/ForkWorkspaceBanner.svelte +16 -13
  111. package/package/components/GraphqlSchemaViewer.svelte +8 -1
  112. package/package/components/HistoricInputs.svelte +25 -27
  113. package/package/components/HistoricInputs.svelte.d.ts +2 -2
  114. package/package/components/InstanceSetting.svelte +38 -0
  115. package/package/components/InviteUser.svelte +16 -42
  116. package/package/components/InviteUser.svelte.d.ts +4 -18
  117. package/package/components/JobOtelTraces.svelte +287 -0
  118. package/package/components/JobOtelTraces.svelte.d.ts +6 -0
  119. package/package/components/JsonInputs.svelte +6 -8
  120. package/package/components/JsonInputs.svelte.d.ts +7 -8
  121. package/package/components/LogViewer.svelte +91 -33
  122. package/package/components/Login.svelte +21 -0
  123. package/package/components/ManualPopover.svelte +5 -6
  124. package/package/components/ManualPopover.svelte.d.ts +9 -35
  125. package/package/components/MemoryFootprintViewer.svelte +2 -6
  126. package/package/components/ModulePreview.svelte +23 -21
  127. package/package/components/ModulePreview.svelte.d.ts +1 -0
  128. package/package/components/Path.svelte +2 -2
  129. package/package/components/Path.svelte.d.ts +1 -1
  130. package/package/components/ResourcePicker.svelte +3 -0
  131. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  132. package/package/components/RunButton.svelte +5 -15
  133. package/package/components/RunButton.svelte.d.ts +7 -19
  134. package/package/components/RunChart.svelte +8 -4
  135. package/package/components/RunChart.svelte.d.ts +2 -2
  136. package/package/components/RunFormAdvancedPopup.svelte +1 -1
  137. package/package/components/RunsPage.svelte +169 -539
  138. package/package/components/RunsPage.svelte.d.ts +5 -5
  139. package/package/components/S3FilePicker.svelte +7 -11
  140. package/package/components/S3FilePickerInner.svelte +2 -3
  141. package/package/components/S3FilePickerInner.svelte.d.ts +2 -2
  142. package/package/components/SchemaForm.svelte +26 -19
  143. package/package/components/SchemaFormWithArgPicker.svelte +4 -3
  144. package/package/components/ScriptBuilder.svelte +1 -1
  145. package/package/components/ScriptEditor.svelte +575 -101
  146. package/package/components/Section.svelte +3 -1
  147. package/package/components/ServiceLogsInner.svelte +4 -4
  148. package/package/components/SimpleEditor.svelte +46 -2
  149. package/package/components/SuperadminSettingsInner.svelte +1 -1
  150. package/package/components/TemplateEditor.svelte +54 -29
  151. package/package/components/TemplateEditor.svelte.d.ts +13 -102
  152. package/package/components/UserSettings.svelte +1 -1
  153. package/package/components/WorkerTagPicker.svelte +1 -1
  154. package/package/components/WorkerTagSelect.svelte +5 -2
  155. package/package/components/WorkspaceTutorials.svelte +5 -0
  156. package/package/components/apps/components/buttons/AppButton.svelte +21 -6
  157. package/package/components/apps/components/buttons/AppForm.svelte +2 -1
  158. package/package/components/apps/components/buttons/AppFormButton.svelte +2 -1
  159. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +0 -4
  160. package/package/components/apps/components/display/dbtable/metadata.js +69 -30
  161. package/package/components/apps/components/display/dbtable/queries/alterTable.d.ts +46 -0
  162. package/package/components/apps/components/display/dbtable/queries/alterTable.js +314 -0
  163. package/package/components/apps/components/display/dbtable/queries/alterTable.test.d.ts +1 -0
  164. package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +867 -0
  165. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +2 -24
  166. package/package/components/apps/components/display/dbtable/queries/createTable.js +11 -25
  167. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.d.ts +9 -0
  168. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.js +45 -0
  169. package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +47 -0
  170. package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +402 -0
  171. package/package/components/apps/components/display/dbtable/queries/select.d.ts +2 -0
  172. package/package/components/apps/components/display/dbtable/queries/select.js +37 -6
  173. package/package/components/apps/components/display/dbtable/tableEditor.d.ts +35 -0
  174. package/package/components/apps/components/display/dbtable/tableEditor.js +49 -0
  175. package/package/components/apps/components/display/dbtable/utils.d.ts +10 -1
  176. package/package/components/apps/components/display/dbtable/utils.js +52 -20
  177. package/package/components/apps/components/helpers/HiddenComponent.svelte +1 -1
  178. package/package/components/apps/components/helpers/InputValue.svelte +1 -1
  179. package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
  180. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -2
  181. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
  182. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
  183. package/package/components/apps/editor/AppEditorHeader.svelte +8 -1
  184. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +32 -29
  185. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -2
  186. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +4 -4
  187. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +3 -3
  188. package/package/components/apps/editor/PublicApp.svelte +49 -30
  189. package/package/components/apps/editor/PublicApp.svelte.d.ts +1 -0
  190. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +77 -7
  191. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +2 -2
  192. package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -2
  193. package/package/components/apps/editor/inlineScriptsPanel/utils.js +10 -1
  194. package/package/components/apps/inputType.d.ts +6 -1
  195. package/package/components/auditLogs/AuditLogsFilters.svelte +9 -17
  196. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  197. package/package/components/common/button/model.js +1 -1
  198. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -1
  199. package/package/components/common/languageIcons/TypeScript.svelte +5 -3
  200. package/package/components/common/languageIcons/TypeScript.svelte.d.ts +1 -0
  201. package/package/components/common/modal/Modal.svelte +3 -3
  202. package/package/components/copilot/autocomplete/Autocompletor.js +3 -2
  203. package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -1
  204. package/package/components/copilot/chat/AIButtonStyle.js +2 -1
  205. package/package/components/copilot/chat/AIChat.svelte +3 -1
  206. package/package/components/copilot/chat/AIChatDisplay.svelte +89 -4
  207. package/package/components/copilot/chat/AIChatInput.svelte +275 -0
  208. package/package/components/copilot/chat/AIChatManager.svelte.js +107 -1
  209. package/package/components/copilot/chat/AiChatLayout.svelte +15 -30
  210. package/package/components/copilot/chat/AppAvailableContextList.svelte +263 -0
  211. package/package/components/copilot/chat/AppAvailableContextList.svelte.d.ts +13 -0
  212. package/package/components/copilot/chat/ContextElementBadge.svelte +44 -0
  213. package/package/components/copilot/chat/DatatableCreationPolicy.svelte +32 -33
  214. package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
  215. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +3 -0
  216. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +4 -0
  217. package/package/components/copilot/chat/app/core.d.ts +56 -15
  218. package/package/components/copilot/chat/app/core.js +141 -22
  219. package/package/components/copilot/chat/context.d.ts +59 -2
  220. package/package/components/copilot/chat/context.js +6 -2
  221. package/package/components/copilot/chat/flow/FlowAIChat.svelte +22 -0
  222. package/package/components/copilot/chat/flow/core.d.ts +3 -1
  223. package/package/components/copilot/chat/flow/core.js +29 -2
  224. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  225. package/package/components/copilot/chat/flow/openFlowZod.d.ts +1 -0
  226. package/package/components/copilot/chat/flow/openFlowZod.js +14 -2
  227. package/package/components/copilot/chat/script/core.d.ts +4 -1
  228. package/package/components/copilot/chat/script/core.js +38 -2
  229. package/package/components/copilot/chat/shared.d.ts +10 -0
  230. package/package/components/copilot/chat/shared.js +24 -0
  231. package/package/components/copilot/lib.d.ts +1 -1
  232. package/package/components/custom_ui.d.ts +2 -0
  233. package/package/components/dbOps.d.ts +18 -4
  234. package/package/components/dbOps.js +25 -3
  235. package/package/components/debug/DebugConsole.svelte +277 -0
  236. package/package/components/debug/DebugConsole.svelte.d.ts +13 -0
  237. package/package/components/debug/DebugPanel.svelte +97 -0
  238. package/package/components/debug/DebugPanel.svelte.d.ts +11 -0
  239. package/package/components/debug/DebugToolbar.svelte +148 -0
  240. package/package/components/debug/DebugToolbar.svelte.d.ts +17 -0
  241. package/package/components/debug/DebugVariableViewer.svelte +115 -0
  242. package/package/components/debug/DebugVariableViewer.svelte.d.ts +11 -0
  243. package/package/components/debug/MonacoDebugger.svelte +384 -0
  244. package/package/components/debug/MonacoDebugger.svelte.d.ts +15 -0
  245. package/package/components/debug/dapClient.d.ts +192 -0
  246. package/package/components/debug/dapClient.js +426 -0
  247. package/package/components/debug/debugUtils.d.ts +30 -0
  248. package/package/components/debug/debugUtils.js +131 -0
  249. package/package/components/debug/index.d.ts +75 -0
  250. package/package/components/debug/index.js +82 -0
  251. package/package/components/flows/CreateActionsApp.svelte +6 -4
  252. package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
  253. package/package/components/flows/FlowHistoryInner.svelte +15 -4
  254. package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
  255. package/package/components/flows/content/FlowEditorDrawer.svelte +124 -0
  256. package/package/components/flows/content/FlowEditorDrawer.svelte.d.ts +22 -0
  257. package/package/components/flows/content/FlowInput.svelte +211 -37
  258. package/package/components/flows/content/FlowModuleComponent.svelte +553 -67
  259. package/package/components/flows/content/FlowModuleEarlyStop.svelte +8 -10
  260. package/package/components/flows/content/FlowModuleHeader.svelte +7 -4
  261. package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +1 -1
  262. package/package/components/flows/content/McpOAuthConnect.svelte +217 -0
  263. package/package/components/flows/content/McpOAuthConnect.svelte.d.ts +7 -0
  264. package/package/components/flows/content/McpToolEditor.svelte +50 -37
  265. package/package/components/flows/content/McpToolEditor.svelte.d.ts +0 -1
  266. package/package/components/flows/conversations/FlowChat.svelte +16 -2
  267. package/package/components/flows/conversations/FlowChat.svelte.d.ts +2 -1
  268. package/package/components/flows/conversations/FlowChatInterface.svelte +103 -6
  269. package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +2 -0
  270. package/package/components/flows/conversations/FlowChatManager.svelte.js +53 -21
  271. package/package/components/flows/header/FlowImportExportMenu.svelte +1 -1
  272. package/package/components/flows/propPicker/PropPickerWrapper.svelte +3 -1
  273. package/package/components/flows/types.d.ts +2 -0
  274. package/package/components/git_sync/GitSyncRepositoryCard.svelte +16 -8
  275. package/package/components/home/ItemsList.svelte +5 -5
  276. package/package/components/home/TutorialBanner.svelte +34 -18
  277. package/package/components/icons/CssIcon.svelte +20 -0
  278. package/package/components/icons/CssIcon.svelte.d.ts +7 -25
  279. package/package/components/icons/HtmlIcon.svelte +20 -0
  280. package/package/components/icons/HtmlIcon.svelte.d.ts +8 -0
  281. package/package/components/icons/JavaScriptIcon.svelte +10 -2
  282. package/package/components/icons/JavaScriptIcon.svelte.d.ts +1 -0
  283. package/package/components/icons/JsonIcon.svelte +8 -2
  284. package/package/components/icons/JsonIcon.svelte.d.ts +1 -0
  285. package/package/components/icons/LessIcon.svelte +16 -0
  286. package/package/components/icons/LessIcon.svelte.d.ts +8 -0
  287. package/package/components/icons/MarkdownIcon.svelte +20 -0
  288. package/package/components/icons/MarkdownIcon.svelte.d.ts +8 -0
  289. package/package/components/icons/ReactIcon.svelte +10 -2
  290. package/package/components/icons/ReactIcon.svelte.d.ts +1 -0
  291. package/package/components/icons/SassIcon.svelte +28 -0
  292. package/package/components/icons/SassIcon.svelte.d.ts +8 -0
  293. package/package/components/icons/SvelteIcon.svelte +10 -2
  294. package/package/components/icons/SvelteIcon.svelte.d.ts +1 -0
  295. package/package/components/icons/VueIcon.svelte +10 -2
  296. package/package/components/icons/VueIcon.svelte.d.ts +1 -0
  297. package/package/components/icons/YamlIcon.svelte +20 -0
  298. package/package/components/icons/YamlIcon.svelte.d.ts +8 -0
  299. package/package/components/instanceSettings/SecretBackendConfig.svelte +514 -0
  300. package/package/components/instanceSettings/SecretBackendConfig.svelte.d.ts +8 -0
  301. package/package/components/instanceSettings.d.ts +2 -1
  302. package/package/components/instanceSettings.js +32 -1
  303. package/package/components/jobs/JobPreview.svelte +46 -39
  304. package/package/components/jobs/JobPreview.svelte.d.ts +1 -0
  305. package/package/components/monacoLanguagesOptions.js +16 -15
  306. package/package/components/propertyPicker/PropPicker.svelte +16 -2
  307. package/package/components/propertyPicker/PropPicker.svelte.d.ts +2 -0
  308. package/package/components/raw_apps/DefaultDatabaseSelector.svelte +9 -5
  309. package/package/components/raw_apps/FileEditorIcon.svelte +12 -7
  310. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +2 -0
  311. package/package/components/raw_apps/FileTreeNode.svelte +119 -83
  312. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +88 -8
  313. package/package/components/raw_apps/RawAppDataTableList.svelte +12 -9
  314. package/package/components/raw_apps/RawAppEditor.svelte +218 -68
  315. package/package/components/raw_apps/RawAppEditorHeader.svelte +33 -16
  316. package/package/components/raw_apps/RawAppHistoryList.svelte +264 -80
  317. package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +1 -0
  318. package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +15 -1
  319. package/package/components/raw_apps/RawAppHistoryManager.svelte.js +46 -12
  320. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +549 -47
  321. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +31 -5
  322. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +25 -18
  323. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -0
  324. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +141 -10
  325. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +8 -0
  326. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +2 -1
  327. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +9 -1
  328. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +47 -3
  329. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +2 -2
  330. package/package/components/raw_apps/RawAppModules.svelte +13 -7
  331. package/package/components/raw_apps/RawAppPreview.svelte +48 -6
  332. package/package/components/raw_apps/RawAppSidebar.svelte +194 -125
  333. package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +1 -0
  334. package/package/components/raw_apps/RunnableRow.svelte +41 -0
  335. package/package/components/raw_apps/RunnableRow.svelte.d.ts +11 -0
  336. package/package/components/raw_apps/utils.d.ts +1 -1
  337. package/package/components/raw_apps/utils.js +76 -18
  338. package/package/components/runs/ManuelDatePicker.svelte +3 -3
  339. package/package/components/runs/ManuelDatePicker.svelte.d.ts +3 -3
  340. package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -1
  341. package/package/components/runs/RunsFilter.svelte +75 -63
  342. package/package/components/runs/RunsFilter.svelte.d.ts +35 -4
  343. package/package/components/runs/RunsQueue.svelte.d.ts +1 -1
  344. package/package/components/runs/RunsTable.svelte +1 -1
  345. package/package/components/runs/RunsTable.svelte.d.ts +1 -1
  346. package/package/components/runs/useJobsLoader.svelte.d.ts +34 -0
  347. package/package/components/runs/useJobsLoader.svelte.js +507 -0
  348. package/package/components/scriptEditor/LogPanel.svelte +17 -2
  349. package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
  350. package/package/components/select/SelectDropdown.svelte +2 -2
  351. package/package/components/settings/AIPromptsModal.svelte +88 -0
  352. package/package/components/settings/AIPromptsModal.svelte.d.ts +11 -0
  353. package/package/components/settings/ChangeWorkspaceColor.svelte +4 -3
  354. package/package/components/settings/ChangeWorkspaceId.svelte +14 -10
  355. package/package/components/settings/ChangeWorkspaceName.svelte +7 -6
  356. package/package/components/settings/CreateToken.svelte +1 -1
  357. package/package/components/settings/UserAIPromptsSettings.svelte +56 -15
  358. package/package/components/settings/WorkspaceOperatorSettings.svelte +68 -85
  359. package/package/components/settings/WorkspaceUserSettings.svelte +531 -406
  360. package/package/components/sidebar/MenuButton.svelte +46 -24
  361. package/package/components/sidebar/MenuButton.svelte.d.ts +2 -0
  362. package/package/components/sidebar/MultiplayerMenu.svelte +3 -3
  363. package/package/components/sidebar/OperatorMenu.svelte +62 -87
  364. package/package/components/sidebar/SidebarContent.svelte +7 -2
  365. package/package/components/sidebar/WorkspaceMenu.svelte +35 -85
  366. package/package/components/sqlTypeService.js +4 -3
  367. package/package/components/table/DataTable.svelte +3 -2
  368. package/package/components/table/DataTable.svelte.d.ts +1 -0
  369. package/package/components/text_input/TextInput.svelte +3 -0
  370. package/package/components/text_input/TextInput.svelte.d.ts +2 -0
  371. package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +6 -35
  372. package/package/components/tutorials/RunsTutorial.svelte +399 -0
  373. package/package/components/{schema/SchemaPicker.svelte.d.ts → tutorials/RunsTutorial.svelte.d.ts} +11 -12
  374. package/package/components/tutorials/TroubleshootFlowTutorial.svelte +5 -20
  375. package/package/components/tutorials/utils.d.ts +16 -0
  376. package/package/components/tutorials/utils.js +96 -0
  377. package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +133 -0
  378. package/package/components/{SavedInputs.svelte.d.ts → tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte.d.ts} +8 -11
  379. package/package/components/vscode.js +6 -6
  380. package/package/components/workspace/WorkspaceCard.svelte +184 -0
  381. package/package/components/workspace/WorkspaceCard.svelte.d.ts +24 -0
  382. package/package/components/workspace/WorkspaceIcon.svelte +21 -0
  383. package/package/components/workspace/WorkspaceIcon.svelte.d.ts +9 -0
  384. package/package/components/workspace/WorkspaceTreeView.svelte +331 -0
  385. package/package/components/workspace/WorkspaceTreeView.svelte.d.ts +15 -0
  386. package/package/components/workspaceSettings/AISettings.svelte +146 -108
  387. package/package/components/workspaceSettings/CreateWorkspace.svelte +25 -11
  388. package/package/components/workspaceSettings/DucklakeSettings.svelte +46 -23
  389. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +2 -1
  390. package/package/components/workspaceSettings/ModelTokenLimits.svelte +14 -18
  391. package/package/components/workspaceSettings/StorageSettings.svelte +280 -241
  392. package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +1 -0
  393. package/package/consts.js +4 -1
  394. package/package/gen/core/OpenAPI.js +1 -1
  395. package/package/gen/schemas.gen.d.ts +126 -0
  396. package/package/gen/schemas.gen.js +126 -0
  397. package/package/gen/services.gen.d.ts +151 -2
  398. package/package/gen/services.gen.js +301 -4
  399. package/package/gen/types.gen.d.ts +584 -2
  400. package/package/hubPaths.json +3 -2
  401. package/package/infer.js +2 -0
  402. package/package/monaco_workers/graphql.worker.bundle.js +121 -121
  403. package/package/rawAppWmillTs.d.ts +11 -0
  404. package/package/rawAppWmillTs.js +38 -1
  405. package/package/svelte5Utils.svelte.d.ts +9 -0
  406. package/package/svelte5Utils.svelte.js +51 -1
  407. package/package/tutorialUtils.js +0 -4
  408. package/package/tutorials/config.js +31 -3
  409. package/package/tutorials/roleUtils.d.ts +1 -1
  410. package/package/tutorials/roleUtils.js +6 -2
  411. package/package/utils.js +159 -1
  412. package/package.json +16 -17
  413. package/package/components/SavedInputs.svelte +0 -416
  414. package/package/components/runs/JobsLoader.svelte +0 -468
  415. package/package/components/runs/JobsLoader.svelte.d.ts +0 -49
  416. package/package/components/schema/SchemaPicker.svelte +0 -92
@@ -1,25 +1,3 @@
1
1
  import type { DbType } from '../../../../../dbTypes';
2
- export type CreateTableValues = {
3
- name: string;
4
- columns: CreateTableValuesColumn[];
5
- foreignKeys: {
6
- targetTable?: string;
7
- columns: {
8
- sourceColumn?: string;
9
- targetColumn?: string;
10
- }[];
11
- onDelete: 'CASCADE' | 'SET NULL' | 'NO ACTION';
12
- onUpdate: 'CASCADE' | 'SET NULL' | 'NO ACTION';
13
- }[];
14
- };
15
- type CreateTableValuesColumn = {
16
- name: string;
17
- datatype: string;
18
- primaryKey?: boolean;
19
- defaultValue?: string;
20
- nullable?: boolean;
21
- datatype_length?: number;
22
- };
23
- export declare function makeCreateTableQuery(values: CreateTableValues, dbType: DbType, schema?: string): string;
24
- export declare function datatypeDefaultLength(datatype: string): number;
25
- export {};
2
+ import type { TableEditorValues } from '../tableEditor';
3
+ export declare function makeCreateTableQuery(values: TableEditorValues, dbType: DbType, schema?: string): string;
@@ -1,4 +1,5 @@
1
1
  import { dbSupportsSchemas } from '../utils';
2
+ import { formatDefaultValue } from './dbQueriesUtils';
2
3
  export function makeCreateTableQuery(values, dbType, schema) {
3
4
  const pkCount = values.columns.reduce((p, c) => p + (c.primaryKey ? 1 : 0), 0);
4
5
  function transformColumn(c) {
@@ -9,8 +10,12 @@ export function makeCreateTableQuery(values, dbType, schema) {
9
10
  str += ' NOT NULL';
10
11
  if (defValue)
11
12
  str += ` DEFAULT ${defValue}`;
12
- if (pkCount === 1 && c.primaryKey)
13
- str += ' PRIMARY KEY';
13
+ if (pkCount === 1 && c.primaryKey) {
14
+ if (dbType === 'bigquery')
15
+ str += ' PRIMARY KEY NOT ENFORCED';
16
+ else
17
+ str += ' PRIMARY KEY';
18
+ }
14
19
  return str;
15
20
  }
16
21
  function transformFk(fk) {
@@ -31,31 +36,12 @@ export function makeCreateTableQuery(values, dbType, schema) {
31
36
  lines.push(...values.foreignKeys.map(transformFk));
32
37
  if (pkCount > 1) {
33
38
  const pks = values.columns.filter((c) => c.primaryKey);
34
- lines.push(` PRIMARY KEY (${pks.map((c) => c.name).join(', ')})`);
39
+ let pk = ` PRIMARY KEY (${pks.map((c) => c.name).join(', ')})`;
40
+ if (dbType === 'bigquery')
41
+ pk += ' NOT ENFORCED';
42
+ lines.push(pk);
35
43
  }
36
44
  return `CREATE TABLE ${useSchema && schema ? schema.trim() + '.' : ''}${values.name.trim()} (
37
45
  ${lines.join(',\n')}
38
46
  );`;
39
47
  }
40
- function formatDefaultValue(str, datatype, resourceType) {
41
- if (!str)
42
- return '';
43
- if (str.startsWith('{') && str.endsWith('}')) {
44
- return str.slice(1, str.length - 1);
45
- }
46
- if (resourceType === 'postgresql') {
47
- return `CAST('${str}' AS ${datatype})`;
48
- }
49
- return `'${str}'`;
50
- }
51
- export function datatypeDefaultLength(datatype) {
52
- datatype = datatype.toLowerCase();
53
- if (datatype == 'bit')
54
- return 1;
55
- if (['varchar', 'char', 'nvarchar', 'nchar', 'varbinary', 'binary'].includes(datatype)) {
56
- return 255;
57
- }
58
- else {
59
- return 10;
60
- }
61
- }
@@ -0,0 +1,9 @@
1
+ import type { DbType } from '../../../../../dbTypes';
2
+ import type { TableEditorForeignKey, TableEditorValuesColumn } from '../tableEditor';
3
+ export declare function formatDefaultValue(str: string, datatype: string, resourceType: DbType): string;
4
+ export declare function renderColumn(c: TableEditorValuesColumn, dbType: DbType, primaryKeyModifier?: boolean): string;
5
+ export declare function renderForeignKey(fk: TableEditorForeignKey, options: {
6
+ useSchema: boolean;
7
+ dbType: DbType;
8
+ tableName: string;
9
+ }): string;
@@ -0,0 +1,45 @@
1
+ export function formatDefaultValue(str, datatype, resourceType) {
2
+ if (!str)
3
+ return '';
4
+ if (str.startsWith('{') && str.endsWith('}')) {
5
+ return str.slice(1, str.length - 1);
6
+ }
7
+ if (resourceType === 'postgresql') {
8
+ return `CAST('${str}' AS ${datatype})`;
9
+ }
10
+ return `'${str}'`;
11
+ }
12
+ export function renderColumn(c, dbType, primaryKeyModifier = false) {
13
+ const datatype = c.datatype_length ? `${c.datatype}(${c.datatype_length})` : c.datatype;
14
+ const defValue = c.defaultValue && formatDefaultValue(c.defaultValue, datatype, dbType);
15
+ let str = `${c.name} ${datatype}`;
16
+ if (!c.nullable)
17
+ str += ' NOT NULL';
18
+ if (defValue)
19
+ str += ` DEFAULT ${defValue}`;
20
+ if (primaryKeyModifier)
21
+ str += ' PRIMARY KEY';
22
+ return str;
23
+ }
24
+ export function renderForeignKey(fk, options) {
25
+ const sourceColumns = fk.columns.map((c) => c.sourceColumn).filter(Boolean);
26
+ const targetColumns = fk.columns.map((c) => c.targetColumn).filter(Boolean);
27
+ const targetTable = options.useSchema || !fk.targetTable?.includes('.')
28
+ ? fk.targetTable
29
+ : fk.targetTable?.split('.').pop();
30
+ let sql = 'CONSTRAINT ';
31
+ sql += `fk_${[
32
+ options.tableName,
33
+ ...sourceColumns.map((c) => c?.substring(0, 10)),
34
+ targetTable,
35
+ ...targetColumns.map((c) => c?.substring(0, 10))
36
+ ]
37
+ .join('_')
38
+ .replaceAll('.', '_')} `.substring(0, 60);
39
+ sql += ` FOREIGN KEY (${sourceColumns.join(', ')}) REFERENCES ${targetTable} (${targetColumns.join(', ')})`;
40
+ if (fk.onDelete !== 'NO ACTION')
41
+ sql += ` ON DELETE ${fk.onDelete}`;
42
+ if (fk.onUpdate !== 'NO ACTION')
43
+ sql += ` ON UPDATE ${fk.onUpdate}`;
44
+ return sql;
45
+ }
@@ -0,0 +1,47 @@
1
+ import type { DbInput, DbType } from '../../../../../dbTypes';
2
+ import type { ScriptLang } from '../../../../../../gen';
3
+ import type { TableEditorForeignKey } from '../tableEditor';
4
+ import type { TableMetadata } from '../utils';
5
+ /**
6
+ * Raw foreign key result from database queries
7
+ */
8
+ export type RawForeignKey = {
9
+ fk_constraint_name: string;
10
+ source_column: string;
11
+ target_table: string;
12
+ target_column: string;
13
+ on_delete: 'CASCADE' | 'SET NULL' | 'NO ACTION';
14
+ on_update: 'CASCADE' | 'SET NULL' | 'NO ACTION';
15
+ };
16
+ /**
17
+ * Raw primary key constraint result from database queries
18
+ */
19
+ export type RawPrimaryKeyConstraint = {
20
+ constraint_name: string;
21
+ };
22
+ /**
23
+ * Generates SQL query to fetch foreign key information for a specific table
24
+ * @param dbType - The database type
25
+ * @param table - The table name (can include schema, e.g., "schema.table")
26
+ * @param defaultSchema - The default schema to use when table doesn't include one
27
+ * @returns SQL query string
28
+ */
29
+ export declare function makeForeignKeysQuery(dbType: DbType, table: string, defaultSchema?: string): string;
30
+ /**
31
+ * Generates SQL query to fetch primary key constraint name for a specific table
32
+ * @param dbType - The database type
33
+ * @param table - The table name (can include schema, e.g., "schema.table")
34
+ * @param defaultSchema - The default schema to use when table doesn't include one
35
+ * @returns SQL query string
36
+ */
37
+ export declare function makePrimaryKeyConstraintQuery(dbType: DbType, table: string, defaultSchema?: string): string;
38
+ /**
39
+ * Transforms raw foreign key results from database into TableEditorForeignKey format
40
+ * Groups by constraint name and aggregates columns
41
+ */
42
+ export declare function transformForeignKeys(rawResults: RawForeignKey[]): TableEditorForeignKey[];
43
+ export declare function fetchTableRelationalKeys(input: DbInput, dbType: DbType, table: string, schema: string | undefined, workspace: string, dbArg: Record<string, any>, language: ScriptLang, getColDefs: () => Promise<TableMetadata>): Promise<{
44
+ foreignKeys: TableEditorForeignKey[];
45
+ pk_constraint_name?: string;
46
+ colDefs: TableMetadata;
47
+ }>;
@@ -0,0 +1,402 @@
1
+ import { wrapDucklakeQuery } from '../../../../../ducklake';
2
+ import { runScriptAndPollResult } from '../../../../../jobs/utils';
3
+ /**
4
+ * Generates SQL query to fetch foreign key information for a specific table
5
+ * @param dbType - The database type
6
+ * @param table - The table name (can include schema, e.g., "schema.table")
7
+ * @param defaultSchema - The default schema to use when table doesn't include one
8
+ * @returns SQL query string
9
+ */
10
+ export function makeForeignKeysQuery(dbType, table, defaultSchema) {
11
+ const tableParts = table.split('.');
12
+ const tableName = tableParts[tableParts.length - 1];
13
+ const schemaName = tableParts.length > 1 ? tableParts[0] : defaultSchema;
14
+ switch (dbType) {
15
+ case 'postgresql':
16
+ return makePostgresForeignKeysQuery(tableName, schemaName || 'public');
17
+ case 'mysql':
18
+ return makeMysqlForeignKeysQuery(tableName, schemaName || '');
19
+ case 'ms_sql_server':
20
+ return makeMsSqlForeignKeysQuery(tableName, schemaName || 'dbo');
21
+ case 'snowflake':
22
+ return makeSnowflakeForeignKeysQuery(tableName, schemaName || 'PUBLIC');
23
+ case 'bigquery':
24
+ return makeBigQueryForeignKeysQuery(tableName, schemaName);
25
+ case 'duckdb':
26
+ return makeDuckDbForeignKeysQuery(tableName, schemaName || 'main');
27
+ default:
28
+ throw new Error(`Unsupported database type: ${dbType}`);
29
+ }
30
+ }
31
+ /**
32
+ * Generates SQL query to fetch primary key constraint name for a specific table
33
+ * @param dbType - The database type
34
+ * @param table - The table name (can include schema, e.g., "schema.table")
35
+ * @param defaultSchema - The default schema to use when table doesn't include one
36
+ * @returns SQL query string
37
+ */
38
+ export function makePrimaryKeyConstraintQuery(dbType, table, defaultSchema) {
39
+ const tableParts = table.split('.');
40
+ const tableName = tableParts[tableParts.length - 1];
41
+ const schemaName = tableParts.length > 1 ? tableParts[0] : defaultSchema;
42
+ switch (dbType) {
43
+ case 'postgresql':
44
+ return makePostgresPrimaryKeyQuery(tableName, schemaName || 'public');
45
+ case 'mysql':
46
+ return makeMysqlPrimaryKeyQuery(tableName, schemaName || '');
47
+ case 'ms_sql_server':
48
+ return makeMsSqlPrimaryKeyQuery(tableName, schemaName || 'dbo');
49
+ case 'snowflake':
50
+ return makeSnowflakePrimaryKeyQuery(tableName, schemaName || 'PUBLIC');
51
+ case 'bigquery':
52
+ return makeBigQueryPrimaryKeyQuery(tableName, schemaName);
53
+ case 'duckdb':
54
+ return makeDuckDbPrimaryKeyQuery(tableName, schemaName || 'main');
55
+ default:
56
+ throw new Error(`Unsupported database type: ${dbType}`);
57
+ }
58
+ }
59
+ /**
60
+ * Transforms raw foreign key results from database into TableEditorForeignKey format
61
+ * Groups by constraint name and aggregates columns
62
+ */
63
+ export function transformForeignKeys(rawResults) {
64
+ // Group by constraint name
65
+ const grouped = new Map();
66
+ for (const fk of rawResults) {
67
+ const existing = grouped.get(fk.fk_constraint_name) || [];
68
+ existing.push(fk);
69
+ grouped.set(fk.fk_constraint_name, existing);
70
+ }
71
+ // Transform to TableEditorForeignKey format
72
+ return Array.from(grouped.values()).map((fks) => {
73
+ const firstFk = fks[0];
74
+ return {
75
+ fk_constraint_name: firstFk.fk_constraint_name,
76
+ targetTable: firstFk.target_table,
77
+ columns: fks.map((fk) => ({
78
+ sourceColumn: fk.source_column,
79
+ targetColumn: fk.target_column
80
+ })),
81
+ onDelete: firstFk.on_delete,
82
+ onUpdate: firstFk.on_update
83
+ };
84
+ });
85
+ }
86
+ // PostgreSQL queries
87
+ function makePostgresForeignKeysQuery(tableName, schemaName) {
88
+ return `
89
+ SELECT
90
+ tc.constraint_name as fk_constraint_name,
91
+ kcu.column_name as source_column,
92
+ ccu.table_schema || '.' || ccu.table_name as target_table,
93
+ ccu.column_name as target_column,
94
+ COALESCE(rc.delete_rule, 'NO ACTION') as on_delete,
95
+ COALESCE(rc.update_rule, 'NO ACTION') as on_update
96
+ FROM
97
+ information_schema.table_constraints AS tc
98
+ JOIN information_schema.key_column_usage AS kcu
99
+ ON tc.constraint_name = kcu.constraint_name
100
+ AND tc.table_schema = kcu.table_schema
101
+ JOIN information_schema.constraint_column_usage AS ccu
102
+ ON ccu.constraint_name = tc.constraint_name
103
+ AND ccu.table_schema = tc.table_schema
104
+ LEFT JOIN information_schema.referential_constraints AS rc
105
+ ON rc.constraint_name = tc.constraint_name
106
+ AND rc.constraint_schema = tc.table_schema
107
+ WHERE
108
+ tc.constraint_type = 'FOREIGN KEY'
109
+ AND tc.table_name = '${tableName}'
110
+ AND tc.table_schema = '${schemaName}'
111
+ ORDER BY
112
+ tc.constraint_name, kcu.ordinal_position;
113
+ `.trim();
114
+ }
115
+ function makePostgresPrimaryKeyQuery(tableName, schemaName) {
116
+ return `
117
+ SELECT
118
+ tc.constraint_name
119
+ FROM
120
+ information_schema.table_constraints AS tc
121
+ WHERE
122
+ tc.constraint_type = 'PRIMARY KEY'
123
+ AND tc.table_name = '${tableName}'
124
+ AND tc.table_schema = '${schemaName}'
125
+ LIMIT 1;
126
+ `.trim();
127
+ }
128
+ // MySQL queries
129
+ function makeMysqlForeignKeysQuery(tableName, schemaName) {
130
+ const whereClause = schemaName
131
+ ? `AND kcu.TABLE_SCHEMA = '${schemaName}'`
132
+ : `AND kcu.TABLE_SCHEMA = DATABASE()`;
133
+ return `
134
+ SELECT
135
+ kcu.CONSTRAINT_NAME as fk_constraint_name,
136
+ kcu.COLUMN_NAME as source_column,
137
+ CONCAT(kcu.REFERENCED_TABLE_SCHEMA, '.', kcu.REFERENCED_TABLE_NAME) as target_table,
138
+ kcu.REFERENCED_COLUMN_NAME as target_column,
139
+ COALESCE(rc.DELETE_RULE, 'NO ACTION') as on_delete,
140
+ COALESCE(rc.UPDATE_RULE, 'NO ACTION') as on_update
141
+ FROM
142
+ INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
143
+ JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
144
+ ON kcu.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
145
+ AND kcu.TABLE_SCHEMA = rc.CONSTRAINT_SCHEMA
146
+ WHERE
147
+ kcu.TABLE_NAME = '${tableName}'
148
+ ${whereClause}
149
+ AND kcu.REFERENCED_TABLE_NAME IS NOT NULL
150
+ ORDER BY
151
+ kcu.CONSTRAINT_NAME, kcu.ORDINAL_POSITION;
152
+ `.trim();
153
+ }
154
+ function makeMysqlPrimaryKeyQuery(tableName, schemaName) {
155
+ const whereClause = schemaName
156
+ ? `AND tc.TABLE_SCHEMA = '${schemaName}'`
157
+ : `AND tc.TABLE_SCHEMA = DATABASE()`;
158
+ return `
159
+ SELECT
160
+ tc.CONSTRAINT_NAME as constraint_name
161
+ FROM
162
+ INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
163
+ WHERE
164
+ tc.CONSTRAINT_TYPE = 'PRIMARY KEY'
165
+ AND tc.TABLE_NAME = '${tableName}'
166
+ ${whereClause}
167
+ LIMIT 1;
168
+ `.trim();
169
+ }
170
+ // MS SQL Server queries
171
+ function makeMsSqlForeignKeysQuery(tableName, schemaName) {
172
+ return `
173
+ SELECT
174
+ fk.name as fk_constraint_name,
175
+ COL_NAME(fkc.parent_object_id, fkc.parent_column_id) as source_column,
176
+ OBJECT_SCHEMA_NAME(fkc.referenced_object_id) + '.' + OBJECT_NAME(fkc.referenced_object_id) as target_table,
177
+ COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) as target_column,
178
+ CASE fk.delete_referential_action
179
+ WHEN 0 THEN 'NO ACTION'
180
+ WHEN 1 THEN 'CASCADE'
181
+ WHEN 2 THEN 'SET NULL'
182
+ WHEN 3 THEN 'SET DEFAULT'
183
+ END as on_delete,
184
+ CASE fk.update_referential_action
185
+ WHEN 0 THEN 'NO ACTION'
186
+ WHEN 1 THEN 'CASCADE'
187
+ WHEN 2 THEN 'SET NULL'
188
+ WHEN 3 THEN 'SET DEFAULT'
189
+ END as on_update
190
+ FROM
191
+ sys.foreign_keys fk
192
+ INNER JOIN sys.foreign_key_columns fkc
193
+ ON fk.object_id = fkc.constraint_object_id
194
+ INNER JOIN sys.tables t
195
+ ON fk.parent_object_id = t.object_id
196
+ INNER JOIN sys.schemas s
197
+ ON t.schema_id = s.schema_id
198
+ WHERE
199
+ t.name = '${tableName}'
200
+ AND s.name = '${schemaName}'
201
+ ORDER BY
202
+ fk.name, fkc.constraint_column_id;
203
+ `.trim();
204
+ }
205
+ function makeMsSqlPrimaryKeyQuery(tableName, schemaName) {
206
+ return `
207
+ SELECT
208
+ kc.name as constraint_name
209
+ FROM
210
+ sys.key_constraints kc
211
+ INNER JOIN sys.tables t
212
+ ON kc.parent_object_id = t.object_id
213
+ INNER JOIN sys.schemas s
214
+ ON t.schema_id = s.schema_id
215
+ WHERE
216
+ kc.type = 'PK'
217
+ AND t.name = '${tableName}'
218
+ AND s.name = '${schemaName}';
219
+ `.trim();
220
+ }
221
+ // Snowflake queries
222
+ function makeSnowflakeForeignKeysQuery(tableName, schemaName) {
223
+ return `
224
+ SELECT
225
+ tc.constraint_name as fk_constraint_name,
226
+ kcu.column_name as source_column,
227
+ rc.unique_constraint_schema || '.' || ccu.table_name as target_table,
228
+ ccu.column_name as target_column,
229
+ COALESCE(rc.delete_rule, 'NO ACTION') as on_delete,
230
+ COALESCE(rc.update_rule, 'NO ACTION') as on_update
231
+ FROM
232
+ information_schema.table_constraints tc
233
+ JOIN information_schema.referential_constraints rc
234
+ ON tc.constraint_name = rc.constraint_name
235
+ AND tc.constraint_schema = rc.constraint_schema
236
+ JOIN information_schema.key_column_usage kcu
237
+ ON tc.constraint_name = kcu.constraint_name
238
+ AND tc.constraint_schema = kcu.constraint_schema
239
+ JOIN information_schema.constraint_column_usage ccu
240
+ ON rc.unique_constraint_name = ccu.constraint_name
241
+ AND rc.unique_constraint_schema = ccu.constraint_schema
242
+ WHERE
243
+ tc.constraint_type = 'FOREIGN KEY'
244
+ AND tc.table_name = '${tableName}'
245
+ AND tc.table_schema = '${schemaName}'
246
+ ORDER BY
247
+ tc.constraint_name, kcu.ordinal_position;
248
+ `.trim();
249
+ }
250
+ function makeSnowflakePrimaryKeyQuery(tableName, schemaName) {
251
+ return `
252
+ SELECT
253
+ constraint_name
254
+ FROM
255
+ information_schema.table_constraints
256
+ WHERE
257
+ constraint_type = 'PRIMARY KEY'
258
+ AND table_name = '${tableName}'
259
+ AND table_schema = '${schemaName}'
260
+ LIMIT 1;
261
+ `.trim();
262
+ }
263
+ // BigQuery queries
264
+ function makeBigQueryForeignKeysQuery(tableName, schemaName) {
265
+ if (!schemaName) {
266
+ throw new Error('BigQuery requires a dataset (schema) name');
267
+ }
268
+ return `
269
+ SELECT
270
+ tc.constraint_name as fk_constraint_name,
271
+ kcu.column_name as source_column,
272
+ ccu.table_name as target_table,
273
+ ccu.column_name as target_column,
274
+ 'NO ACTION' as on_delete,
275
+ 'NO ACTION' as on_update
276
+ FROM
277
+ \`${schemaName}.INFORMATION_SCHEMA.TABLE_CONSTRAINTS\` tc
278
+ JOIN \`${schemaName}.INFORMATION_SCHEMA.KEY_COLUMN_USAGE\` kcu
279
+ ON tc.constraint_name = kcu.constraint_name
280
+ JOIN \`${schemaName}.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE\` ccu
281
+ ON tc.constraint_name = ccu.constraint_name
282
+ WHERE
283
+ tc.constraint_type = 'FOREIGN KEY'
284
+ AND tc.table_name = '${tableName}'
285
+ ORDER BY
286
+ tc.constraint_name, kcu.ordinal_position;
287
+ `.trim();
288
+ }
289
+ function makeBigQueryPrimaryKeyQuery(tableName, schemaName) {
290
+ if (!schemaName) {
291
+ throw new Error('BigQuery requires a dataset (schema) name');
292
+ }
293
+ return `
294
+ SELECT
295
+ constraint_name
296
+ FROM
297
+ \`${schemaName}.INFORMATION_SCHEMA.TABLE_CONSTRAINTS\`
298
+ WHERE
299
+ constraint_type = 'PRIMARY KEY'
300
+ AND table_name = '${tableName}'
301
+ LIMIT 1;
302
+ `.trim();
303
+ }
304
+ // DuckDB queries
305
+ function makeDuckDbForeignKeysQuery(tableName, schemaName) {
306
+ // DuckDB supports foreign keys starting from v0.9.0
307
+ return `
308
+ SELECT
309
+ fk_constraint.constraint_name as fk_constraint_name,
310
+ kcu.column_name as source_column,
311
+ ccu.table_schema || '.' || ccu.table_name as target_table,
312
+ ccu.column_name as target_column,
313
+ 'NO ACTION' as on_delete,
314
+ 'NO ACTION' as on_update
315
+ FROM
316
+ information_schema.table_constraints fk_constraint
317
+ JOIN information_schema.key_column_usage kcu
318
+ ON fk_constraint.constraint_name = kcu.constraint_name
319
+ AND fk_constraint.constraint_schema = kcu.constraint_schema
320
+ JOIN information_schema.constraint_column_usage ccu
321
+ ON fk_constraint.constraint_name = ccu.constraint_name
322
+ AND fk_constraint.constraint_schema = ccu.constraint_schema
323
+ WHERE
324
+ fk_constraint.constraint_type = 'FOREIGN KEY'
325
+ AND fk_constraint.table_name = '${tableName}'
326
+ AND fk_constraint.table_schema = '${schemaName}'
327
+ ORDER BY
328
+ fk_constraint.constraint_name, kcu.ordinal_position;
329
+ `.trim();
330
+ }
331
+ function makeDuckDbPrimaryKeyQuery(tableName, schemaName) {
332
+ return `
333
+ SELECT
334
+ constraint_name
335
+ FROM
336
+ information_schema.table_constraints
337
+ WHERE
338
+ constraint_type = 'PRIMARY KEY'
339
+ AND table_name = '${tableName}'
340
+ AND table_schema = '${schemaName}'
341
+ LIMIT 1;
342
+ `.trim();
343
+ }
344
+ export async function fetchTableRelationalKeys(input, dbType, table, schema, workspace, dbArg, language, getColDefs) {
345
+ let fkPromise = async () => {
346
+ try {
347
+ if (dbType !== 'bigquery') {
348
+ let fkQuery = makeForeignKeysQuery(dbType, table, schema);
349
+ if (input.type === 'ducklake')
350
+ fkQuery = wrapDucklakeQuery(fkQuery, input.ducklake);
351
+ const fkResult = await runScriptAndPollResult({
352
+ workspace,
353
+ requestBody: { args: dbArg, content: fkQuery, language }
354
+ });
355
+ let rawForeignKeys = fkResult;
356
+ if (rawForeignKeys && Array.isArray(rawForeignKeys)) {
357
+ // Lowercase keys for consistency
358
+ rawForeignKeys = rawForeignKeys.map((fk) => {
359
+ const lowerFk = {};
360
+ Object.keys(fk).forEach((key) => {
361
+ lowerFk[key.toLowerCase()] = fk[key];
362
+ });
363
+ return lowerFk;
364
+ });
365
+ return transformForeignKeys(rawForeignKeys);
366
+ }
367
+ }
368
+ }
369
+ catch (e) {
370
+ console.warn('Failed to fetch foreign keys:', e);
371
+ }
372
+ return [];
373
+ };
374
+ let pkPromise = async () => {
375
+ try {
376
+ if (dbType !== 'bigquery' && dbType !== 'mysql') {
377
+ let pkQuery = makePrimaryKeyConstraintQuery(dbType, table, schema);
378
+ if (input.type === 'ducklake')
379
+ pkQuery = wrapDucklakeQuery(pkQuery, input.ducklake);
380
+ const pkResult = await runScriptAndPollResult({
381
+ workspace,
382
+ requestBody: { args: dbArg, content: pkQuery, language }
383
+ });
384
+ let rawPkResult = pkResult;
385
+ if (rawPkResult && Array.isArray(rawPkResult) && rawPkResult.length > 0) {
386
+ const pkRecord = rawPkResult[0];
387
+ const pk_constraint_name = pkRecord?.constraint_name || pkRecord?.CONSTRAINT_NAME || '';
388
+ return pk_constraint_name;
389
+ }
390
+ }
391
+ }
392
+ catch (e) {
393
+ console.warn('Failed to fetch primary key constraint:', e);
394
+ }
395
+ };
396
+ const [foreignKeys, pk_constraint_name, colDefs] = await Promise.all([
397
+ fkPromise(),
398
+ pkPromise(),
399
+ getColDefs()
400
+ ]);
401
+ return { foreignKeys, pk_constraint_name, colDefs };
402
+ }
@@ -4,6 +4,8 @@ import { type ColumnDef } from '../utils';
4
4
  export declare function makeSelectQuery(table: string, columnDefs: ColumnDef[], whereClause: string | undefined, dbType: DbType, options?: {
5
5
  limit?: number;
6
6
  offset?: number;
7
+ }, breakingFeatures?: {
8
+ fixPgIntTypes?: boolean;
7
9
  }): string;
8
10
  export declare function getSelectInput(dbInput: DbInput, table: string | undefined, columnDefs: ColumnDef[], whereClause: string | undefined, options?: {
9
11
  limit?: number;
@@ -53,7 +53,7 @@ function makeSnowflakeSelectQuery(table, columnDefs, whereClause, options) {
53
53
  query = buildParameters(headers, 'snowflake') + '\n' + query;
54
54
  return query;
55
55
  }
56
- export function makeSelectQuery(table, columnDefs, whereClause, dbType, options) {
56
+ export function makeSelectQuery(table, columnDefs, whereClause, dbType, options, breakingFeatures) {
57
57
  if (!table)
58
58
  throw new Error('Table name is required');
59
59
  let quicksearchCondition = '';
@@ -84,11 +84,28 @@ CASE WHEN :order_by = '${column.field}' AND :is_desc IS true THEN \`${column.fie
84
84
  break;
85
85
  }
86
86
  case 'postgresql': {
87
+ function buildOrderBy({ field, is_desc = false, text_cast = false, check_is_number }) {
88
+ const numberCheckExpr = check_is_number === true
89
+ ? ` pg_typeof("${field}")::text IN ('integer', 'bigint', 'smallint', 'numeric', 'real', 'double precision') AND`
90
+ : check_is_number === false
91
+ ? ` pg_typeof("${field}")::text NOT IN ('integer', 'bigint', 'smallint', 'numeric', 'real', 'double precision') AND`
92
+ : '';
93
+ return `(CASE WHEN${numberCheckExpr} $4 = '${field}' AND $5 IS ${is_desc} THEN "${field}"${text_cast ? '::text' : ''} END)${is_desc ? ' DESC' : ''}`;
94
+ }
87
95
  const orderBy = `
88
96
  ${columnDefs
89
- .map((column) => `
90
- (CASE WHEN $4 = '${column.field}' AND $5 IS false THEN "${column.field}"::text END),
91
- (CASE WHEN $4 = '${column.field}' AND $5 IS true THEN "${column.field}"::text END) DESC`)
97
+ .map((column) => {
98
+ if (breakingFeatures?.fixPgIntTypes) {
99
+ return `
100
+ ${buildOrderBy({ field: column.field, is_desc: false, text_cast: true, check_is_number: false })},
101
+ ${buildOrderBy({ field: column.field, is_desc: false, text_cast: false, check_is_number: true })},
102
+ ${buildOrderBy({ field: column.field, is_desc: true, text_cast: true, check_is_number: false })},
103
+ ${buildOrderBy({ field: column.field, is_desc: true, text_cast: false, check_is_number: true })}`;
104
+ }
105
+ return `
106
+ ${buildOrderBy({ field: column.field, is_desc: false, text_cast: true })},
107
+ ${buildOrderBy({ field: column.field, is_desc: true, text_cast: true })}`;
108
+ })
92
109
  .join(',\n')}`;
93
110
  quicksearchCondition = `($3 = '' OR CONCAT(${filteredColumns.join(', ')}) ILIKE '%' || $3 || '%')`;
94
111
  query += `SELECT ${filteredColumns
@@ -99,25 +116,39 @@ CASE WHEN :order_by = '${column.field}' AND :is_desc IS true THEN \`${column.fie
99
116
  query += ` LIMIT $1::INT OFFSET $2::INT`;
100
117
  break;
101
118
  }
102
- case 'ms_sql_server':
119
+ case 'ms_sql_server': {
103
120
  // MSSQL uses CONCAT for string concatenation and supports OFFSET FETCH for pagination
104
121
  // Note: MSSQL does not have a built-in ILIKE function, so we use LIKE with a case-insensitive collation if needed
105
122
  //
106
123
  // Note 2: CONCAT in mssql requires 2 to 254 arguments. But we can't change this query without breaking
107
124
  // existing policies
125
+ // Filter out data types that cannot be sorted or concatenated in MS SQL Server
126
+ const unsortableTypes = ['text', 'ntext', 'image'];
108
127
  const orderBy = columnDefs
128
+ .filter((column) => !unsortableTypes.includes(column.datatype.toLowerCase()))
109
129
  .map((column) => {
110
130
  return `
111
131
  (CASE WHEN @p4 = '${column.field}' AND @p5 = 0 THEN ${column.field} END) ASC,
112
132
  (CASE WHEN @p4 = '${column.field}' AND @p5 = 1 THEN ${column.field} END) DESC`;
113
133
  })
114
134
  .join(',\n');
115
- quicksearchCondition = ` (@p3 = '' OR CONCAT(${selectClause}) LIKE '%' + @p3 + '%')`;
135
+ // Create search clause that excludes unsortable types to avoid CONCAT issues
136
+ const searchClause = filteredColumns
137
+ .filter((col) => {
138
+ const fieldName = col.slice(1, -1); // Remove brackets
139
+ const def = columnDefs.find((c) => c.field === fieldName);
140
+ return !unsortableTypes.includes(def?.datatype.toLowerCase() ?? '');
141
+ })
142
+ .join(', ');
143
+ quicksearchCondition = searchClause
144
+ ? ` (@p3 = '' OR CONCAT(${searchClause}) LIKE '%' + @p3 + '%')`
145
+ : ` (@p3 = '')`;
116
146
  query += `SELECT ${selectClause} FROM ${table}`;
117
147
  query += ` WHERE ${whereClause ? `${whereClause} AND` : ''} ${quicksearchCondition}`;
118
148
  query += ` ORDER BY ${orderBy}`;
119
149
  query += ` OFFSET @p2 ROWS FETCH NEXT @p1 ROWS ONLY`;
120
150
  break;
151
+ }
121
152
  case 'snowflake': {
122
153
  return makeSnowflakeSelectQuery(table, columnDefs, whereClause, options);
123
154
  }