windmill-components 1.623.1 → 1.623.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 (480) hide show
  1. package/package/assets/tokens/tokens.json +11 -1
  2. package/package/ata/apis.js +78 -5
  3. package/package/cancelable-promise-utils.js +4 -2
  4. package/package/components/AddUser.svelte +1 -1
  5. package/package/components/ApiConnectForm.svelte +6 -0
  6. package/package/components/AppConnectDrawer.svelte +1 -0
  7. package/package/components/AppConnectInner.svelte +1 -0
  8. package/package/components/AuthSettings.svelte +3 -1
  9. package/package/components/BedrockCredentialsCheck.svelte +241 -0
  10. package/package/components/BedrockCredentialsCheck.svelte.d.ts +3 -0
  11. package/package/components/CenteredModal.svelte +32 -24
  12. package/package/components/CenteredModal.svelte.d.ts +7 -27
  13. package/package/components/CenteredPage.svelte +6 -2
  14. package/package/components/CenteredPage.svelte.d.ts +3 -0
  15. package/package/components/CompareWorkspaces.svelte +74 -16
  16. package/package/components/ConcurrentJobsChart.svelte +3 -2
  17. package/package/components/ConcurrentJobsChart.svelte.d.ts +2 -2
  18. package/package/components/CustomPopover.svelte +20 -23
  19. package/package/components/CustomPopover.svelte.d.ts +14 -39
  20. package/package/components/DBManager.svelte +134 -42
  21. package/package/components/DBManager.svelte.d.ts +13 -2
  22. package/package/components/DBManagerContent.svelte +25 -63
  23. package/package/components/DBManagerContent.svelte.d.ts +38 -4
  24. package/package/components/DBManagerDrawer.svelte +7 -9
  25. package/package/components/DBTable.svelte +1 -1
  26. package/package/components/DBTable.svelte.d.ts +3 -1
  27. package/package/components/DBTableEditor.svelte +234 -178
  28. package/package/components/DBTableEditor.svelte.d.ts +22 -3
  29. package/package/components/DateInput.svelte +29 -35
  30. package/package/components/DateInput.svelte.d.ts +10 -11
  31. package/package/components/DedicatedWorkersSelector.svelte +569 -0
  32. package/package/components/DedicatedWorkersSelector.svelte.d.ts +8 -0
  33. package/package/components/DeployWorkspace.svelte +106 -29
  34. package/package/components/Description.svelte +3 -2
  35. package/package/components/Dev.svelte +36 -2
  36. package/package/components/DiffDrawer.svelte +8 -29
  37. package/package/components/DiffEditor.svelte +32 -2
  38. package/package/components/DisplayResult.svelte +32 -24
  39. package/package/components/DropdownV2.svelte +2 -1
  40. package/package/components/DropdownV2.svelte.d.ts +1 -0
  41. package/package/components/Editor.svelte +71 -26
  42. package/package/components/Editor.svelte.d.ts +3 -0
  43. package/package/components/EditorBar.svelte +1 -1
  44. package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
  45. package/package/components/FlowBuilder.svelte +17 -11
  46. package/package/components/FlowDiffViewer.svelte +37 -0
  47. package/package/components/FlowDiffViewer.svelte.d.ts +7 -0
  48. package/package/components/FlowGraphViewer.svelte +5 -2
  49. package/package/components/FlowGraphViewer.svelte.d.ts +2 -0
  50. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  51. package/package/components/FlowPreviewContent.svelte +3 -2
  52. package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
  53. package/package/components/FlowPreviewResult.svelte +0 -4
  54. package/package/components/FlowRestartButton.svelte +2 -3
  55. package/package/components/FlowRestartButton.svelte.d.ts +3 -0
  56. package/package/components/FlowStatusViewerInner.svelte +55 -35
  57. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -1
  58. package/package/components/FlowStatusWaitingForEvents.svelte +27 -23
  59. package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +4 -18
  60. package/package/components/FlowViewer.svelte +103 -2
  61. package/package/components/FlowViewer.svelte.d.ts +9 -3
  62. package/package/components/ForkWorkspaceBanner.svelte +32 -13
  63. package/package/components/GraphqlSchemaViewer.svelte +8 -1
  64. package/package/components/HistoricInputs.svelte +25 -27
  65. package/package/components/HistoricInputs.svelte.d.ts +2 -2
  66. package/package/components/InfiniteList.svelte +27 -20
  67. package/package/components/InfiniteList.svelte.d.ts +2 -0
  68. package/package/components/InstanceSetting.svelte +38 -0
  69. package/package/components/InviteUser.svelte +16 -42
  70. package/package/components/InviteUser.svelte.d.ts +4 -18
  71. package/package/components/JobLoader.svelte.d.ts +1 -1
  72. package/package/components/JobOtelTraces.svelte +287 -0
  73. package/package/components/JobOtelTraces.svelte.d.ts +6 -0
  74. package/package/components/JsonInputs.svelte +6 -8
  75. package/package/components/JsonInputs.svelte.d.ts +7 -8
  76. package/package/components/LogViewer.svelte +91 -33
  77. package/package/components/Login.svelte +27 -0
  78. package/package/components/ManualPopover.svelte +5 -6
  79. package/package/components/ManualPopover.svelte.d.ts +9 -35
  80. package/package/components/MemoryFootprintViewer.svelte +2 -6
  81. package/package/components/ModulePreview.svelte +23 -21
  82. package/package/components/ModulePreview.svelte.d.ts +1 -0
  83. package/package/components/NextcloudSetting.svelte +1 -1
  84. package/package/components/OAuthSetting.svelte +1 -0
  85. package/package/components/Path.svelte +2 -2
  86. package/package/components/Path.svelte.d.ts +1 -1
  87. package/package/components/PocketIdSetting.svelte +82 -0
  88. package/package/components/PocketIdSetting.svelte.d.ts +6 -0
  89. package/package/components/ResourceEditor.svelte +4 -4
  90. package/package/components/ResourcePicker.svelte +4 -0
  91. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  92. package/package/components/RunButton.svelte +5 -15
  93. package/package/components/RunButton.svelte.d.ts +7 -19
  94. package/package/components/RunChart.svelte +8 -4
  95. package/package/components/RunChart.svelte.d.ts +2 -2
  96. package/package/components/RunForm.svelte +9 -17
  97. package/package/components/RunForm.svelte.d.ts +0 -1
  98. package/package/components/RunFormAdvancedPopup.svelte +1 -1
  99. package/package/components/RunsPage.svelte +202 -537
  100. package/package/components/RunsPage.svelte.d.ts +5 -5
  101. package/package/components/S3FilePicker.svelte +7 -11
  102. package/package/components/S3FilePickerInner.svelte +2 -3
  103. package/package/components/S3FilePickerInner.svelte.d.ts +2 -2
  104. package/package/components/SavedInputsPicker.svelte +1 -1
  105. package/package/components/SavedInputsV2.svelte +35 -36
  106. package/package/components/SchemaForm.svelte +26 -19
  107. package/package/components/SchemaFormWithArgPicker.svelte +4 -3
  108. package/package/components/ScriptBuilder.svelte +1 -1
  109. package/package/components/ScriptEditor.svelte +575 -101
  110. package/package/components/Section.svelte +4 -2
  111. package/package/components/ServiceLogsInner.svelte +4 -4
  112. package/package/components/ShareModal.svelte.d.ts +1 -1
  113. package/package/components/SimpleEditor.svelte +46 -2
  114. package/package/components/Star.svelte +8 -12
  115. package/package/components/Star.svelte.d.ts +6 -19
  116. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
  117. package/package/components/SuperadminSettingsInner.svelte +1 -1
  118. package/package/components/TemplateEditor.svelte +54 -29
  119. package/package/components/TemplateEditor.svelte.d.ts +13 -102
  120. package/package/components/TimeAgo.svelte +49 -7
  121. package/package/components/TimeAgo.svelte.d.ts +1 -0
  122. package/package/components/Toast.svelte +5 -1
  123. package/package/components/UserSettings.svelte +1 -1
  124. package/package/components/WorkerGroup.svelte +35 -20
  125. package/package/components/WorkerGroup.svelte.d.ts +1 -0
  126. package/package/components/WorkerTagPicker.svelte +1 -1
  127. package/package/components/WorkerTagSelect.svelte +5 -2
  128. package/package/components/WorkspaceTutorials.svelte +5 -0
  129. package/package/components/apps/components/buttons/AppButton.svelte +21 -6
  130. package/package/components/apps/components/buttons/AppForm.svelte +2 -1
  131. package/package/components/apps/components/buttons/AppFormButton.svelte +2 -1
  132. package/package/components/apps/components/display/InsertRowDrawerButton.svelte +1 -1
  133. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +2 -5
  134. package/package/components/apps/components/display/dbtable/dbFeatures.d.ts +9 -0
  135. package/package/components/apps/components/display/dbtable/dbFeatures.js +32 -0
  136. package/package/components/apps/components/display/dbtable/metadata.d.ts +3 -3
  137. package/package/components/apps/components/display/dbtable/metadata.js +177 -148
  138. package/package/components/apps/components/display/dbtable/queries/alterTable.d.ts +46 -0
  139. package/package/components/apps/components/display/dbtable/queries/alterTable.js +322 -0
  140. package/package/components/apps/components/display/dbtable/queries/alterTable.test.d.ts +1 -0
  141. package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +867 -0
  142. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +2 -24
  143. package/package/components/apps/components/display/dbtable/queries/createTable.js +13 -25
  144. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.d.ts +9 -0
  145. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.js +45 -0
  146. package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +45 -0
  147. package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +401 -0
  148. package/package/components/apps/components/display/dbtable/queries/select.d.ts +2 -0
  149. package/package/components/apps/components/display/dbtable/queries/select.js +37 -6
  150. package/package/components/apps/components/display/dbtable/tableEditor.d.ts +35 -0
  151. package/package/components/apps/components/display/dbtable/tableEditor.js +67 -0
  152. package/package/components/apps/components/display/dbtable/utils.d.ts +2 -0
  153. package/package/components/apps/components/display/dbtable/utils.js +61 -36
  154. package/package/components/apps/components/display/table/AppAggridTable.svelte +8 -0
  155. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +9 -9
  156. package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +1 -1
  157. package/package/components/apps/components/helpers/HiddenComponent.svelte +1 -1
  158. package/package/components/apps/components/helpers/InputValue.svelte +1 -1
  159. package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
  160. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -2
  161. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
  162. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
  163. package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +2 -4
  164. package/package/components/apps/editor/AppEditorHeader.svelte +8 -1
  165. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +32 -29
  166. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -2
  167. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +4 -4
  168. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +3 -3
  169. package/package/components/apps/editor/PublicApp.svelte +49 -30
  170. package/package/components/apps/editor/PublicApp.svelte.d.ts +1 -0
  171. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +77 -7
  172. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +2 -2
  173. package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -2
  174. package/package/components/apps/editor/inlineScriptsPanel/utils.js +10 -1
  175. package/package/components/apps/inputType.d.ts +6 -1
  176. package/package/components/assets/AssetsDropdownButton.svelte +1 -1
  177. package/package/components/assets/AssetsUsageDrawer.svelte +98 -27
  178. package/package/components/assets/AssetsUsageDrawer.svelte.d.ts +5 -6
  179. package/package/components/assets/lib.d.ts +3 -2
  180. package/package/components/assets/lib.js +3 -1
  181. package/package/components/auditLogs/AuditLogsFilters.svelte +9 -17
  182. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  183. package/package/components/common/CloseButton.svelte +2 -1
  184. package/package/components/common/CloseButton.svelte.d.ts +1 -0
  185. package/package/components/common/badge/CountBadge.svelte +4 -3
  186. package/package/components/common/badge/CountBadge.svelte.d.ts +1 -0
  187. package/package/components/common/button/Button.svelte +1 -1
  188. package/package/components/common/button/model.js +1 -1
  189. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -1
  190. package/package/components/common/confirmationModal/ConfirmationModal.svelte +2 -1
  191. package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +1 -0
  192. package/package/components/common/drawer/Drawer.svelte +4 -1
  193. package/package/components/common/drawer/DrawerContent.svelte +6 -3
  194. package/package/components/common/drawer/DrawerContent.svelte.d.ts +1 -0
  195. package/package/components/common/languageIcons/TypeScript.svelte +5 -3
  196. package/package/components/common/languageIcons/TypeScript.svelte.d.ts +1 -0
  197. package/package/components/common/modal/Modal.svelte +3 -3
  198. package/package/components/common/modal/Modal2.svelte +1 -0
  199. package/package/components/common/table/AppRow.svelte +4 -1
  200. package/package/components/common/table/FlowRow.svelte +4 -1
  201. package/package/components/common/table/RawAppRow.svelte +4 -1
  202. package/package/components/common/table/Row.svelte +11 -21
  203. package/package/components/common/table/Row.svelte.d.ts +4 -20
  204. package/package/components/common/table/RowIcon.svelte +6 -2
  205. package/package/components/common/table/RowIcon.svelte.d.ts +1 -1
  206. package/package/components/common/table/ScriptRow.svelte +4 -1
  207. package/package/components/copilot/autocomplete/Autocompletor.d.ts +1 -1
  208. package/package/components/copilot/autocomplete/Autocompletor.js +7 -6
  209. package/package/components/copilot/autocomplete/request.js +13 -9
  210. package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -1
  211. package/package/components/copilot/chat/AIButtonStyle.js +2 -1
  212. package/package/components/copilot/chat/AIChat.svelte +3 -1
  213. package/package/components/copilot/chat/AIChatDisplay.svelte +89 -4
  214. package/package/components/copilot/chat/AIChatInput.svelte +275 -0
  215. package/package/components/copilot/chat/AIChatManager.svelte.js +107 -1
  216. package/package/components/copilot/chat/AiChatLayout.svelte +15 -30
  217. package/package/components/copilot/chat/AppAvailableContextList.svelte +263 -0
  218. package/package/components/copilot/chat/AppAvailableContextList.svelte.d.ts +13 -0
  219. package/package/components/copilot/chat/ContextElementBadge.svelte +44 -0
  220. package/package/components/copilot/chat/DatatableCreationPolicy.svelte +32 -33
  221. package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
  222. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +3 -0
  223. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +4 -0
  224. package/package/components/copilot/chat/app/core.d.ts +56 -15
  225. package/package/components/copilot/chat/app/core.js +141 -22
  226. package/package/components/copilot/chat/context.d.ts +59 -2
  227. package/package/components/copilot/chat/context.js +6 -2
  228. package/package/components/copilot/chat/flow/FlowAIChat.svelte +22 -0
  229. package/package/components/copilot/chat/flow/core.d.ts +3 -1
  230. package/package/components/copilot/chat/flow/core.js +29 -2
  231. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  232. package/package/components/copilot/chat/flow/openFlowZod.d.ts +1 -0
  233. package/package/components/copilot/chat/flow/openFlowZod.js +14 -2
  234. package/package/components/copilot/chat/script/core.d.ts +4 -1
  235. package/package/components/copilot/chat/script/core.js +43 -6
  236. package/package/components/copilot/chat/shared.d.ts +10 -0
  237. package/package/components/copilot/chat/shared.js +24 -0
  238. package/package/components/copilot/lib.d.ts +1 -1
  239. package/package/components/copilot/lib.js +2 -9
  240. package/package/components/copilot/utils.d.ts +5 -0
  241. package/package/components/copilot/utils.js +8 -0
  242. package/package/components/custom_ui.d.ts +2 -0
  243. package/package/components/dbOps.d.ts +18 -4
  244. package/package/components/dbOps.js +25 -3
  245. package/package/components/debug/DebugConsole.svelte +277 -0
  246. package/package/components/debug/DebugConsole.svelte.d.ts +13 -0
  247. package/package/components/debug/DebugPanel.svelte +97 -0
  248. package/package/components/debug/DebugPanel.svelte.d.ts +11 -0
  249. package/package/components/debug/DebugToolbar.svelte +148 -0
  250. package/package/components/debug/DebugToolbar.svelte.d.ts +17 -0
  251. package/package/components/debug/DebugVariableViewer.svelte +115 -0
  252. package/package/components/debug/DebugVariableViewer.svelte.d.ts +11 -0
  253. package/package/components/debug/MonacoDebugger.svelte +384 -0
  254. package/package/components/debug/MonacoDebugger.svelte.d.ts +15 -0
  255. package/package/components/debug/dapClient.d.ts +192 -0
  256. package/package/components/debug/dapClient.js +426 -0
  257. package/package/components/debug/debugUtils.d.ts +30 -0
  258. package/package/components/debug/debugUtils.js +131 -0
  259. package/package/components/debug/index.d.ts +75 -0
  260. package/package/components/debug/index.js +82 -0
  261. package/package/components/details/DetailPageHeader.svelte +21 -7
  262. package/package/components/details/DetailPageHeader.svelte.d.ts +2 -1
  263. package/package/components/details/DetailPageLayout.svelte +10 -1
  264. package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
  265. package/package/components/flows/CreateActionsApp.svelte +6 -4
  266. package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
  267. package/package/components/flows/FlowHistoryInner.svelte +15 -4
  268. package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
  269. package/package/components/flows/content/FlowEditorDrawer.svelte +124 -0
  270. package/package/components/flows/content/FlowEditorDrawer.svelte.d.ts +22 -0
  271. package/package/components/flows/content/FlowInput.svelte +211 -37
  272. package/package/components/flows/content/FlowModuleComponent.svelte +553 -67
  273. package/package/components/flows/content/FlowModuleEarlyStop.svelte +8 -10
  274. package/package/components/flows/content/FlowModuleHeader.svelte +7 -4
  275. package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +1 -1
  276. package/package/components/flows/content/McpOAuthConnect.svelte +217 -0
  277. package/package/components/flows/content/McpOAuthConnect.svelte.d.ts +7 -0
  278. package/package/components/flows/content/McpToolEditor.svelte +50 -37
  279. package/package/components/flows/content/McpToolEditor.svelte.d.ts +0 -1
  280. package/package/components/flows/conversations/FlowChat.svelte +16 -2
  281. package/package/components/flows/conversations/FlowChat.svelte.d.ts +2 -1
  282. package/package/components/flows/conversations/FlowChatInterface.svelte +103 -6
  283. package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +2 -0
  284. package/package/components/flows/conversations/FlowChatManager.svelte.js +53 -21
  285. package/package/components/flows/conversations/FlowConversationsSidebar.svelte +79 -77
  286. package/package/components/flows/header/FlowImportExportMenu.svelte +1 -1
  287. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
  288. package/package/components/flows/propPicker/PropPickerWrapper.svelte +3 -1
  289. package/package/components/flows/types.d.ts +2 -0
  290. package/package/components/git_sync/GitSyncRepositoryCard.svelte +16 -8
  291. package/package/components/graph/FlowGraphV2.svelte +7 -1
  292. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +41 -24
  293. package/package/components/home/ItemsList.svelte +7 -6
  294. package/package/components/home/TutorialBanner.svelte +34 -18
  295. package/package/components/home/treeViewUtils.js +1 -1
  296. package/package/components/icons/CssIcon.svelte +20 -0
  297. package/package/components/icons/CssIcon.svelte.d.ts +7 -25
  298. package/package/components/icons/HtmlIcon.svelte +20 -0
  299. package/package/components/icons/HtmlIcon.svelte.d.ts +8 -0
  300. package/package/components/icons/JavaScriptIcon.svelte +10 -2
  301. package/package/components/icons/JavaScriptIcon.svelte.d.ts +1 -0
  302. package/package/components/icons/JsonIcon.svelte +8 -2
  303. package/package/components/icons/JsonIcon.svelte.d.ts +1 -0
  304. package/package/components/icons/LessIcon.svelte +16 -0
  305. package/package/components/icons/LessIcon.svelte.d.ts +8 -0
  306. package/package/components/icons/MarkdownIcon.svelte +20 -0
  307. package/package/components/icons/MarkdownIcon.svelte.d.ts +8 -0
  308. package/package/components/icons/NextcloudIcon.svelte +3 -2
  309. package/package/components/icons/NextcloudIcon.svelte.d.ts +2 -0
  310. package/package/components/icons/PocketIdIcon.svelte +9 -0
  311. package/package/components/icons/PocketIdIcon.svelte.d.ts +9 -0
  312. package/package/components/icons/ReactIcon.svelte +10 -2
  313. package/package/components/icons/ReactIcon.svelte.d.ts +1 -0
  314. package/package/components/icons/SassIcon.svelte +28 -0
  315. package/package/components/icons/SassIcon.svelte.d.ts +8 -0
  316. package/package/components/icons/SvelteIcon.svelte +10 -2
  317. package/package/components/icons/SvelteIcon.svelte.d.ts +1 -0
  318. package/package/components/icons/VueIcon.svelte +10 -2
  319. package/package/components/icons/VueIcon.svelte.d.ts +1 -0
  320. package/package/components/icons/YamlIcon.svelte +20 -0
  321. package/package/components/icons/YamlIcon.svelte.d.ts +8 -0
  322. package/package/components/icons/index.js +3 -1
  323. package/package/components/instanceSettings/SecretBackendConfig.svelte +514 -0
  324. package/package/components/instanceSettings/SecretBackendConfig.svelte.d.ts +8 -0
  325. package/package/components/instanceSettings.d.ts +2 -1
  326. package/package/components/instanceSettings.js +33 -1
  327. package/package/components/jobs/JobPreview.svelte +46 -39
  328. package/package/components/jobs/JobPreview.svelte.d.ts +1 -0
  329. package/package/components/monacoLanguagesOptions.js +16 -15
  330. package/package/components/propertyPicker/PropPicker.svelte +16 -2
  331. package/package/components/propertyPicker/PropPicker.svelte.d.ts +2 -0
  332. package/package/components/raw_apps/DefaultDatabaseSelector.svelte +9 -5
  333. package/package/components/raw_apps/FileEditorIcon.svelte +12 -7
  334. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +2 -0
  335. package/package/components/raw_apps/FileTreeNode.svelte +119 -83
  336. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +88 -8
  337. package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -3
  338. package/package/components/raw_apps/RawAppDataTableList.svelte +12 -9
  339. package/package/components/raw_apps/RawAppEditor.svelte +218 -68
  340. package/package/components/raw_apps/RawAppEditorHeader.svelte +33 -16
  341. package/package/components/raw_apps/RawAppHistoryList.svelte +264 -80
  342. package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +1 -0
  343. package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +15 -1
  344. package/package/components/raw_apps/RawAppHistoryManager.svelte.js +46 -12
  345. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +549 -47
  346. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +31 -5
  347. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +25 -18
  348. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -0
  349. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +141 -10
  350. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +8 -0
  351. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +2 -1
  352. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +9 -1
  353. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +47 -3
  354. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +2 -2
  355. package/package/components/raw_apps/RawAppModules.svelte +13 -7
  356. package/package/components/raw_apps/RawAppPreview.svelte +48 -6
  357. package/package/components/raw_apps/RawAppSidebar.svelte +194 -125
  358. package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +1 -0
  359. package/package/components/raw_apps/RunnableRow.svelte +41 -0
  360. package/package/components/raw_apps/RunnableRow.svelte.d.ts +11 -0
  361. package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
  362. package/package/components/raw_apps/utils.d.ts +1 -1
  363. package/package/components/raw_apps/utils.js +76 -18
  364. package/package/components/runs/ManuelDatePicker.svelte +3 -3
  365. package/package/components/runs/ManuelDatePicker.svelte.d.ts +3 -3
  366. package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -1
  367. package/package/components/runs/RunsFilter.svelte +75 -63
  368. package/package/components/runs/RunsFilter.svelte.d.ts +35 -4
  369. package/package/components/runs/RunsQueue.svelte.d.ts +1 -1
  370. package/package/components/runs/RunsTable.svelte +1 -1
  371. package/package/components/runs/RunsTable.svelte.d.ts +1 -1
  372. package/package/components/runs/useJobsLoader.svelte.d.ts +34 -0
  373. package/package/components/runs/useJobsLoader.svelte.js +507 -0
  374. package/package/components/schema/EditableSchemaWrapper.svelte +2 -2
  375. package/package/components/scriptEditor/LogPanel.svelte +17 -2
  376. package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
  377. package/package/components/select/MultiSelect.svelte +1 -1
  378. package/package/components/select/SelectDropdown.svelte +17 -5
  379. package/package/components/settings/AIPromptsModal.svelte +88 -0
  380. package/package/components/settings/AIPromptsModal.svelte.d.ts +11 -0
  381. package/package/components/settings/ChangeWorkspaceColor.svelte +4 -3
  382. package/package/components/settings/ChangeWorkspaceId.svelte +16 -11
  383. package/package/components/settings/ChangeWorkspaceName.svelte +7 -6
  384. package/package/components/settings/CreateToken.svelte +4 -4
  385. package/package/components/settings/UserAIPromptsSettings.svelte +56 -15
  386. package/package/components/settings/WorkspaceOperatorSettings.svelte +68 -85
  387. package/package/components/settings/WorkspaceUserSettings.svelte +537 -411
  388. package/package/components/sidebar/MenuButton.svelte +54 -24
  389. package/package/components/sidebar/MenuButton.svelte.d.ts +2 -0
  390. package/package/components/sidebar/MultiplayerMenu.svelte +4 -4
  391. package/package/components/sidebar/OperatorMenu.svelte +63 -88
  392. package/package/components/sidebar/SidebarContent.svelte +39 -6
  393. package/package/components/sidebar/UserMenu.svelte +3 -3
  394. package/package/components/sidebar/WorkspaceMenu.svelte +35 -85
  395. package/package/components/sqlTypeService.js +4 -3
  396. package/package/components/table/DataTable.svelte +8 -3
  397. package/package/components/table/DataTable.svelte.d.ts +2 -0
  398. package/package/components/text_input/TextInput.svelte +3 -0
  399. package/package/components/text_input/TextInput.svelte.d.ts +2 -0
  400. package/package/components/triggers/AddTriggersButton.svelte +17 -4
  401. package/package/components/triggers/TriggersEditor.svelte +4 -0
  402. package/package/components/triggers/TriggersWrapper.svelte +14 -0
  403. package/package/components/triggers/native/NativeTriggerEditor.svelte +379 -0
  404. package/package/components/triggers/native/NativeTriggerEditor.svelte.d.ts +26 -0
  405. package/package/components/triggers/native/NativeTriggerTable.svelte +155 -0
  406. package/package/components/triggers/native/NativeTriggerTable.svelte.d.ts +16 -0
  407. package/package/components/triggers/native/NativeTriggersPanel.svelte +40 -0
  408. package/package/components/triggers/native/NativeTriggersPanel.svelte.d.ts +15 -0
  409. package/package/components/triggers/native/services/nextcloud/NextcloudTriggerForm.svelte +104 -0
  410. package/package/components/triggers/native/services/nextcloud/NextcloudTriggerForm.svelte.d.ts +18 -0
  411. package/package/components/triggers/native/utils.d.ts +74 -0
  412. package/package/components/triggers/native/utils.js +152 -0
  413. package/package/components/triggers/triggers.svelte.d.ts +2 -1
  414. package/package/components/triggers/triggers.svelte.js +36 -8
  415. package/package/components/triggers/utils.js +18 -6
  416. package/package/components/triggers.d.ts +1 -1
  417. package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +6 -35
  418. package/package/components/tutorials/RunsTutorial.svelte +399 -0
  419. package/package/components/{schema/SchemaPicker.svelte.d.ts → tutorials/RunsTutorial.svelte.d.ts} +11 -12
  420. package/package/components/tutorials/TroubleshootFlowTutorial.svelte +5 -20
  421. package/package/components/tutorials/utils.d.ts +16 -0
  422. package/package/components/tutorials/utils.js +96 -0
  423. package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +133 -0
  424. package/package/components/{SavedInputs.svelte.d.ts → tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte.d.ts} +8 -11
  425. package/package/components/vscode.js +6 -6
  426. package/package/components/workspace/WorkspaceCard.svelte +184 -0
  427. package/package/components/workspace/WorkspaceCard.svelte.d.ts +24 -0
  428. package/package/components/workspace/WorkspaceIcon.svelte +21 -0
  429. package/package/components/workspace/WorkspaceIcon.svelte.d.ts +9 -0
  430. package/package/components/workspace/WorkspaceTreeView.svelte +331 -0
  431. package/package/components/workspace/WorkspaceTreeView.svelte.d.ts +15 -0
  432. package/package/components/workspaceSettings/AISettings.svelte +147 -108
  433. package/package/components/workspaceSettings/CreateWorkspace.svelte +26 -12
  434. package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +1 -0
  435. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +3 -1
  436. package/package/components/workspaceSettings/DataTableSettings.svelte +2 -1
  437. package/package/components/workspaceSettings/DucklakeSettings.svelte +54 -26
  438. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +2 -1
  439. package/package/components/workspaceSettings/ModelTokenLimits.svelte +14 -18
  440. package/package/components/workspaceSettings/OAuthClientConfig.svelte +180 -0
  441. package/package/components/workspaceSettings/OAuthClientConfig.svelte.d.ts +14 -0
  442. package/package/components/workspaceSettings/StorageSettings.svelte +285 -241
  443. package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +1 -0
  444. package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +302 -0
  445. package/package/components/workspaceSettings/WorkspaceIntegrations.svelte.d.ts +3 -0
  446. package/package/consts.js +4 -3
  447. package/package/gen/core/OpenAPI.js +1 -1
  448. package/package/gen/schemas.gen.d.ts +517 -4
  449. package/package/gen/schemas.gen.js +523 -4
  450. package/package/gen/services.gen.d.ts +359 -22
  451. package/package/gen/services.gen.js +702 -44
  452. package/package/gen/types.gen.d.ts +1501 -121
  453. package/package/hub.js +2 -2
  454. package/package/hubPaths.json +3 -2
  455. package/package/infer.js +2 -0
  456. package/package/logout.d.ts +0 -2
  457. package/package/logout.js +2 -23
  458. package/package/logoutKit.d.ts +2 -0
  459. package/package/logoutKit.js +26 -0
  460. package/package/monaco_workers/graphql.worker.bundle.js +121 -121
  461. package/package/navigation.d.ts +1 -1
  462. package/package/rawAppWmillTs.d.ts +11 -0
  463. package/package/rawAppWmillTs.js +38 -1
  464. package/package/refreshUser.d.ts +5 -1
  465. package/package/refreshUser.js +20 -30
  466. package/package/storeUtils.js +2 -0
  467. package/package/svelte5Utils.svelte.d.ts +68 -1
  468. package/package/svelte5Utils.svelte.js +193 -2
  469. package/package/svelte5UtilsKit.svelte.d.ts +3 -0
  470. package/package/svelte5UtilsKit.svelte.js +30 -0
  471. package/package/tutorialUtils.js +0 -4
  472. package/package/tutorials/config.js +31 -3
  473. package/package/tutorials/roleUtils.d.ts +1 -1
  474. package/package/tutorials/roleUtils.js +6 -2
  475. package/package/utils.js +162 -1
  476. package/package.json +1 -1
  477. package/package/components/SavedInputs.svelte +0 -416
  478. package/package/components/runs/JobsLoader.svelte +0 -468
  479. package/package/components/runs/JobsLoader.svelte.d.ts +0 -49
  480. package/package/components/schema/SchemaPicker.svelte +0 -92
@@ -11,6 +11,7 @@ import { computeSecretUrl } from './appDeploy.svelte';
11
11
  import { base } from '../../../base';
12
12
  import { isCloudHosted } from '../../../cloud';
13
13
  import EEOnly from '../../EEOnly.svelte';
14
+ import TextInput from '../../text_input/TextInput.svelte';
14
15
  let { policy, setPublishState, appPath, customPath = $bindable(), onLatest, savedApp, summary = $bindable(), deploymentMsg = $bindable(), customPathError = $bindable(), pathError = $bindable(), newEditedPath = $bindable(), newPath, hideSecretUrl = false } = $props();
15
16
  let dirtyCustomPath = $state(false);
16
17
  let path = $state(undefined);
@@ -76,44 +77,46 @@ $effect(() => {
76
77
  </Alert>
77
78
  <div class="py-2"></div>
78
79
  {/if}
79
- <span class="text-secondary text-sm font-bold">Summary</span>
80
- <div class="w-full pt-2">
80
+ <label for="summary" class="text-emphasis text-xs font-semibold">Summary</label>
81
+ <div class="w-full pt-1">
81
82
  <!-- svelte-ignore a11y_autofocus -->
82
- <input
83
- autofocus
84
- type="text"
85
- placeholder="App summary"
86
- class="text-sm w-full"
87
- bind:value={summary}
88
- onkeydown={(e) => {
89
- e.stopPropagation()
90
- }}
91
- onkeyup={() => {
92
- if (appPath == '' && summary?.length > 0 && !dirtyPath) {
93
- path?.setName(
94
- summary
95
- .toLowerCase()
96
- .replace(/[^a-z0-9_]/g, '_')
97
- .replace(/-+/g, '_')
98
- .replace(/^-|-$/g, '')
99
- )
83
+ <TextInput
84
+ inputProps={{
85
+ id: 'summary',
86
+ autofocus: true,
87
+ placeholder: 'App summary',
88
+ onkeydown: (e) => {
89
+ e.stopPropagation()
90
+ },
91
+ onkeyup: () => {
92
+ if (appPath == '' && summary?.length > 0 && !dirtyPath) {
93
+ path?.setName(
94
+ summary
95
+ .toLowerCase()
96
+ .replace(/[^a-z0-9_]/g, '_')
97
+ .replace(/-+/g, '_')
98
+ .replace(/^-|-$/g, '')
99
+ )
100
+ }
100
101
  }
101
102
  }}
103
+ bind:value={summary}
102
104
  />
103
105
  </div>
104
- <div class="py-4"></div>
105
- <span class="text-secondary text-sm font-bold">Deployment message</span>
106
- <div class="w-full pt-2">
106
+ <div class="py-6"></div>
107
+ <label for="deploymentMsg" class="text-emphasis text-xs font-semibold">Deployment message</label>
108
+ <div class="w-full pt-1">
107
109
  <!-- svelte-ignore a11y_autofocus -->
108
- <input
109
- type="text"
110
- placeholder="Optional deployment message"
111
- class="text-sm w-full"
110
+ <TextInput
111
+ inputProps={{
112
+ id: 'deploymentMsg',
113
+ placeholder: 'Optional deployment message'
114
+ }}
112
115
  bind:value={deploymentMsg}
113
116
  />
114
117
  </div>
115
- <div class="py-4"></div>
116
- <span class="text-secondary text-sm font-bold">Path</span>
118
+ <div class="py-6"></div>
119
+ <label for="path" class="text-emphasis text-xs font-semibold">Path</label>
117
120
  <Path
118
121
  bind:this={path}
119
122
  bind:dirty={dirtyPath}
@@ -11,8 +11,8 @@ type $$ComponentProps = {
11
11
  pathError: string;
12
12
  newEditedPath: string;
13
13
  newPath: string;
14
- hideSecretUrl: boolean;
14
+ hideSecretUrl?: boolean;
15
15
  };
16
- declare const AppEditorHeaderDeploy: import("svelte").Component<$$ComponentProps, {}, "summary" | "customPath" | "deploymentMsg" | "customPathError" | "pathError" | "newEditedPath">;
16
+ declare const AppEditorHeaderDeploy: import("svelte").Component<$$ComponentProps, {}, "summary" | "pathError" | "customPath" | "deploymentMsg" | "customPathError" | "newEditedPath">;
17
17
  type AppEditorHeaderDeploy = ReturnType<typeof AppEditorHeaderDeploy>;
18
18
  export default AppEditorHeaderDeploy;
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">import { Alert } from '../../common';
2
2
  import Path from '../../Path.svelte';
3
- let { summary, appPath, pathError = $bindable(), newEditedPath = $bindable() } = $props();
3
+ let { summary = $bindable(), appPath = $bindable(), pathError = $bindable(), newEditedPath = $bindable() } = $props();
4
4
  let path = $state(undefined);
5
5
  let dirtyPath = $state(false);
6
6
  </script>
@@ -19,11 +19,11 @@ let dirtyPath = $state(false);
19
19
  onkeydown={(e) => {
20
20
  e.stopPropagation()
21
21
  }}
22
- bind:value={$summary}
22
+ bind:value={summary}
23
23
  onkeyup={() => {
24
- if ($appPath == '' && $summary?.length > 0 && !dirtyPath) {
24
+ if (appPath == '' && summary?.length > 0 && !dirtyPath) {
25
25
  path?.setName(
26
- $summary
26
+ summary
27
27
  .toLowerCase()
28
28
  .replace(/[^a-z0-9_]/g, '_')
29
29
  .replace(/-+/g, '_')
@@ -1,8 +1,8 @@
1
1
  declare const AppEditorHeaderDeployInitialDraft: import("svelte").Component<{
2
- summary: any;
3
- appPath: any;
2
+ summary?: any;
3
+ appPath?: any;
4
4
  pathError?: any;
5
5
  newEditedPath?: any;
6
- }, {}, "pathError" | "newEditedPath">;
6
+ }, {}, "summary" | "appPath" | "pathError" | "newEditedPath">;
7
7
  type AppEditorHeaderDeployInitialDraft = ReturnType<typeof AppEditorHeaderDeployInitialDraft>;
8
8
  export default AppEditorHeaderDeployInitialDraft;
@@ -12,9 +12,12 @@ import { UserService } from '../../../gen';
12
12
  import { urlParamsToObject } from '../../../utils';
13
13
  import { goto } from '$app/navigation';
14
14
  import AppPreview from './AppPreview.svelte';
15
+ import RawAppPreview from '../../raw_apps/RawAppPreview.svelte';
15
16
  import { twMerge } from 'tailwind-merge';
16
17
  import { writable } from 'svelte/store';
17
18
  let { notExists, noPermission, jwtError, onLoginSuccess, app, workspace } = $props();
19
+ // Use workspace from props or from app.workspace_id (for custom path responses)
20
+ let effectiveWorkspace = $derived(workspace ?? app?.workspace_id);
18
21
  setContext(IS_APP_PUBLIC_CONTEXT_KEY, true);
19
22
  const breakpoint = writable('lg');
20
23
  const darkMode = window.localStorage.getItem('dark-mode') ??
@@ -77,9 +80,9 @@ onMount(() => {
77
80
  {:else if noPermission}
78
81
  <div class="px-4 mt-20 w-full text-center font-bold text-xl"> This app requires read access </div>
79
82
  <div class="text-center mt-8 text-sm text-primary">
80
- {#if $userStore}You are logged in but have no read access to this app{:else if globalUser && workspace}
83
+ {#if $userStore}You are logged in but have no read access to this app{:else if globalUser && effectiveWorkspace}
81
84
  You are logged in but are not a member of the workspace <span class="text-xl font-bold"
82
- >{workspace}</span
85
+ >{effectiveWorkspace}</span
83
86
  > this app is part of
84
87
  {:else}You must be logged in and have read access to this app{/if}</div
85
88
  >
@@ -90,35 +93,51 @@ onMount(() => {
90
93
  </div>
91
94
  {:else if app}
92
95
  {#key app}
93
- <div
94
- class={twMerge(
95
- 'min-h-screen h-full w-full flex',
96
- app?.value?.['css']?.['app']?.['viewer']?.class,
97
- 'wm-app-viewer'
98
- )}
99
- style={app?.value?.['css']?.['app']?.['viewer']?.style}
100
- >
101
- <AppPreview
102
- noBackend={false}
103
- context={{
104
- email: $userStore?.email,
105
- name: $userStore?.name,
106
- groups: $userStore?.groups,
107
- username: $userStore?.username,
108
- query: urlParamsToObject(page.url.searchParams),
109
- hash: page.url.hash.substring(1)
110
- }}
111
- {workspace}
112
- summary={app.summary}
113
- app={app.value}
114
- appPath={app.path}
115
- {breakpoint}
116
- policy={app.policy}
117
- isEditor={false}
118
- replaceStateFn={(path) => goto(path)}
119
- gotoFn={(path, opt) => goto(path, opt)}
96
+ {#if app.raw_app && effectiveWorkspace}
97
+ <RawAppPreview
98
+ workspace={effectiveWorkspace}
99
+ user={$userStore}
100
+ secret={app.bundle_secret}
101
+ path={app.path}
102
+ runnables={(app.value?.runnables ?? {}) as Record<string, Runnable>}
120
103
  />
121
- </div>
104
+ {:else if app.raw_app && !effectiveWorkspace}
105
+ <div class="px-4 mt-20">
106
+ <Alert type="error" title="Configuration error">
107
+ Unable to load raw app: workspace information is missing.
108
+ </Alert>
109
+ </div>
110
+ {:else}
111
+ <div
112
+ class={twMerge(
113
+ 'min-h-screen h-full w-full flex',
114
+ app?.value?.['css']?.['app']?.['viewer']?.class,
115
+ 'wm-app-viewer'
116
+ )}
117
+ style={app?.value?.['css']?.['app']?.['viewer']?.style}
118
+ >
119
+ <AppPreview
120
+ noBackend={false}
121
+ context={{
122
+ email: $userStore?.email,
123
+ name: $userStore?.name,
124
+ groups: $userStore?.groups,
125
+ username: $userStore?.username,
126
+ query: urlParamsToObject(page.url.searchParams),
127
+ hash: page.url.hash.substring(1)
128
+ }}
129
+ workspace={effectiveWorkspace}
130
+ summary={app.summary}
131
+ app={app.value}
132
+ appPath={app.path}
133
+ {breakpoint}
134
+ policy={app.policy}
135
+ isEditor={false}
136
+ replaceStateFn={(path) => goto(path)}
137
+ gotoFn={(path, opt) => goto(path, opt)}
138
+ />
139
+ </div>
140
+ {/if}
122
141
  {/key}
123
142
  {:else}
124
143
  <Skeleton layout={[[4], 0.5, [50]]} />
@@ -6,6 +6,7 @@ type $$ComponentProps = {
6
6
  onLoginSuccess: () => void;
7
7
  app: (AppWithLastVersion & {
8
8
  value: any;
9
+ workspace_id?: string;
9
10
  }) | undefined;
10
11
  workspace: string | undefined;
11
12
  };
@@ -4,7 +4,7 @@ import { Button, Drawer, DrawerContent } from '../../../common';
4
4
  import { base } from '../../../../base';
5
5
  import FlowModuleScript from '../../../flows/content/FlowModuleScript.svelte';
6
6
  import FlowPathViewer from '../../../flows/content/FlowPathViewer.svelte';
7
- import { emptySchema } from '../../../../utils';
7
+ import { emptySchema, sendUserToast } from '../../../../utils';
8
8
  import { getContext, tick, untrack } from 'svelte';
9
9
  import { workspaceStore } from '../../../../stores';
10
10
  import { createEventDispatcher } from 'svelte';
@@ -13,17 +13,23 @@ import { computeFields } from './utils';
13
13
  import { inferArgs, loadSchema } from '../../../../infer';
14
14
  import AppRunButton from './AppRunButton.svelte';
15
15
  import { getScriptByPath } from '../../../../scripts';
16
- import { sendUserToast } from '../../../../toast';
17
16
  import { autoPlacement } from '@floating-ui/core';
18
17
  import { ExternalLink, Eye, GitFork, Pen, RefreshCw, Trash } from 'lucide-svelte';
19
18
  import { get } from 'svelte/store';
20
19
  import RunButton from '../../../RunButton.svelte';
21
20
  import Popover from '../../../meltComponents/Popover.svelte';
21
+ import ScriptEditorDrawer from '../../../flows/content/ScriptEditorDrawer.svelte';
22
+ import FlowEditorDrawer from '../../../flows/content/FlowEditorDrawer.svelte';
23
+ import { ScriptService } from '../../../../gen';
22
24
  let { runnable = $bindable(), fields = $bindable(), id, rawApps = false, isLoading = false, onRun = async () => { }, onCancel = async () => { } } = $props();
23
25
  const viewerContext = getContext('AppViewerContext');
24
26
  let drawerFlowViewer = $state(undefined);
25
27
  let flowPath = $state('');
26
28
  let notFound = $state(false);
29
+ // Key to force re-mounting of viewer components (bypasses FlowModuleScript cache)
30
+ let refreshKey = $state(0);
31
+ let scriptEditorDrawer = $state(undefined);
32
+ let flowEditorDrawer = $state(undefined);
27
33
  const dispatch = createEventDispatcher();
28
34
  async function refreshScript(runnable) {
29
35
  try {
@@ -74,6 +80,33 @@ async function fork(path) {
74
80
  }
75
81
  });
76
82
  }
83
+ async function openScriptEditor(path) {
84
+ try {
85
+ const script = await ScriptService.getScriptByPath({
86
+ workspace: $workspaceStore,
87
+ path
88
+ });
89
+ scriptEditorDrawer?.openDrawer(script.hash, () => {
90
+ // Increment refreshKey to force re-mounting of FlowModuleScript (bypasses cache)
91
+ refreshKey++;
92
+ // Refresh the schema
93
+ lastRunnable = undefined;
94
+ refresh(runnable);
95
+ });
96
+ }
97
+ catch (e) {
98
+ sendUserToast(`Failed to load script: ${e}`, true);
99
+ }
100
+ }
101
+ function openFlowEditor(path) {
102
+ flowEditorDrawer?.openDrawer(path, () => {
103
+ // Increment refreshKey to force re-mounting of FlowPathViewer (bypasses cache)
104
+ refreshKey++;
105
+ // Refresh the schema
106
+ lastRunnable = undefined;
107
+ refresh(runnable);
108
+ });
109
+ }
77
110
  let lastRunnable = undefined;
78
111
  function refresh(runnable) {
79
112
  if (deepEqual(runnable, lastRunnable)) {
@@ -102,6 +135,28 @@ $effect(() => {
102
135
  </DrawerContent>
103
136
  </Drawer>
104
137
 
138
+ <ScriptEditorDrawer
139
+ bind:this={scriptEditorDrawer}
140
+ on:save={() => {
141
+ // Increment refreshKey to force re-mounting of FlowModuleScript (bypasses cache)
142
+ refreshKey++
143
+ // Refresh the schema
144
+ lastRunnable = undefined
145
+ refresh(runnable)
146
+ }}
147
+ />
148
+
149
+ <FlowEditorDrawer
150
+ bind:this={flowEditorDrawer}
151
+ on:save={() => {
152
+ // Increment refreshKey to force re-mounting of FlowPathViewer (bypasses cache)
153
+ refreshKey++
154
+ // Refresh the schema
155
+ lastRunnable = undefined
156
+ refresh(runnable)
157
+ }}
158
+ />
159
+
105
160
  <div class="p-2 h-full flex flex-col gap-2">
106
161
  <div class="flex flex-row-reverse w-full gap-2">
107
162
  {#if !rawApps}
@@ -115,7 +170,10 @@ $effect(() => {
115
170
  size="xs"
116
171
  startIcon={{ icon: RefreshCw }}
117
172
  on:click={async () => {
118
- sendUserToast('Refreshing inputs')
173
+ sendUserToast('Getting latest script version at that path')
174
+ // Increment refreshKey to force re-mounting of viewer components (bypasses cache)
175
+ refreshKey++
176
+ lastRunnable = undefined
119
177
  refresh(runnable)
120
178
  if (viewerContext) {
121
179
  viewerContext.stateId.update((x) => x + 1)
@@ -149,10 +207,12 @@ $effect(() => {
149
207
  variant="default"
150
208
  size="xs"
151
209
  startIcon={{ icon: Pen }}
152
- endIcon={{ icon: ExternalLink }}
153
- target="_blank"
154
- href="{base}/flows/edit/{runnable.path}?nodraft=true">Edit</Button
210
+ on:click={() => {
211
+ openFlowEditor(runnable.path)
212
+ }}
155
213
  >
214
+ Edit
215
+ </Button>
156
216
  <Button
157
217
  variant="default"
158
218
  size="xs"
@@ -164,6 +224,16 @@ $effect(() => {
164
224
  Details
165
225
  </Button>
166
226
  {:else}
227
+ <Button
228
+ size="xs"
229
+ variant="default"
230
+ startIcon={{ icon: Pen }}
231
+ on:click={() => {
232
+ openScriptEditor(runnable.path)
233
+ }}
234
+ >
235
+ Edit
236
+ </Button>
167
237
  <Button
168
238
  size="xs"
169
239
  variant="default"
@@ -216,7 +286,7 @@ $effect(() => {
216
286
  />
217
287
  </div>
218
288
  <div class="w-full grow overflow-y-auto">
219
- {#key viewerContext?.stateId ? get(viewerContext.stateId) : 0}
289
+ {#key `${viewerContext?.stateId ? get(viewerContext.stateId) : 0}-${refreshKey}`}
220
290
  {#if notFound}
221
291
  <div class="text-red-400"
222
292
  >{runnable.runType} not found at {runnable.path} in workspace {$workspaceStore}</div
@@ -1,7 +1,7 @@
1
- import type { ConnectedAppInput, RowAppInput, RunnableByPath, StaticAppInput, UserAppInput } from '../../inputType';
1
+ import type { ConnectedAppInput, RowAppInput, RunnableByPath, StaticAppInput, UserAppInput, CtxAppInput } from '../../inputType';
2
2
  interface Props {
3
3
  runnable: RunnableByPath;
4
- fields: Record<string, StaticAppInput | ConnectedAppInput | RowAppInput | UserAppInput> | undefined;
4
+ fields: Record<string, StaticAppInput | ConnectedAppInput | RowAppInput | UserAppInput | CtxAppInput> | undefined;
5
5
  id: string;
6
6
  rawApps?: boolean;
7
7
  isLoading?: boolean;
@@ -1,5 +1,5 @@
1
1
  import type { Schema } from '../../../../common';
2
- import { type AppInputs, type RunnableByName } from '../../inputType';
2
+ import { type AppInputs, type RunnableByName, type CtxInput } from '../../inputType';
3
3
  import type { GridItem, HiddenRunnable } from '../../types';
4
4
  export interface AppScriptsList {
5
5
  inline: {
@@ -13,6 +13,6 @@ export interface AppScriptsList {
13
13
  transformer: boolean;
14
14
  }[];
15
15
  }
16
- export declare function computeFields(schema: Schema, defaultUserInput: boolean, fields: AppInputs): {};
16
+ export declare function computeFields(schema: Schema, defaultUserInput: boolean, fields: AppInputs | Record<string, CtxInput | AppInputs[string]>): {};
17
17
  export declare function getAppScripts(grid: GridItem[], subgrids: Record<string, GridItem[]> | undefined): AppScriptsList;
18
18
  export declare function createScriptFromInlineScript(id: string, runnable: HiddenRunnable | RunnableByName, workspace: string, appPath: string): Promise<void>;
@@ -4,6 +4,7 @@ import { isRunnableByName, isRunnableByPath } from '../../inputType';
4
4
  import { fieldTypeToTsType, schemaToInputsSpec } from '../../utils';
5
5
  // When the schema is loaded, we need to update the inputs spec
6
6
  // in order to render the inputs the component panel
7
+ // Note: fields can include CtxInput for raw apps
7
8
  export function computeFields(schema, defaultUserInput, fields) {
8
9
  let schemaCopy = JSON.parse(JSON.stringify(schema));
9
10
  const result = {};
@@ -19,7 +20,15 @@ export function computeFields(schema, defaultUserInput, fields) {
19
20
  result[key] = newInput;
20
21
  }
21
22
  else {
22
- if (fieldTypeToTsType(newInput.fieldType) !== fieldTypeToTsType(oldInput.fieldType) ||
23
+ // Preserve ctx inputs (used in raw apps) - they have { type: 'ctx', ctx: 'property' } syntax
24
+ if (oldInput.type === 'ctx') {
25
+ result[key] = oldInput;
26
+ }
27
+ else if (oldInput.fieldType === undefined) {
28
+ // For raw app inputs without fieldType, preserve the input but add the fieldType from schema
29
+ result[key] = Object.assign({}, oldInput, { fieldType: newInput.fieldType });
30
+ }
31
+ else if (fieldTypeToTsType(newInput.fieldType) !== fieldTypeToTsType(oldInput.fieldType) ||
23
32
  newInput.format !== oldInput.format ||
24
33
  newInput.subFieldType !== oldInput.subFieldType ||
25
34
  // An input became a select
@@ -50,6 +50,10 @@ export type EvalInputV2 = {
50
50
  onDemandOnly?: boolean;
51
51
  allowUserResources?: boolean;
52
52
  };
53
+ export type CtxInput = {
54
+ type: 'ctx';
55
+ ctx: 'username' | 'email' | 'groups' | 'workspace' | 'author';
56
+ };
53
57
  export type RowInput = {
54
58
  type: 'row';
55
59
  column: string;
@@ -83,7 +87,7 @@ export type RunnableByName = {
83
87
  };
84
88
  export type Runnable = RunnableByPath | RunnableByName | undefined;
85
89
  export type RunnableWithFields = Runnable & {
86
- fields?: Record<string, StaticAppInput | UserAppInput>;
90
+ fields?: Record<string, StaticAppInput | UserAppInput | CtxInput>;
87
91
  };
88
92
  export type ResultInput = {
89
93
  runnable: Runnable;
@@ -166,6 +170,7 @@ export type UploadAppInput = Extract<AppInput, {
166
170
  export type UploadS3AppInput = Extract<AppInput, {
167
171
  type: 'uploadS3';
168
172
  }>;
173
+ export type CtxAppInput = CtxInput;
169
174
  export type RichAppInput = AppInput | {
170
175
  type: 'oneOf';
171
176
  oneOf: string[];
@@ -117,7 +117,7 @@ $effect(() => {
117
117
  !asset.access_type ? 'hover:bg-surface active:opacity-80' : ''
118
118
  )}
119
119
  >
120
- {formatAssetAccessType(getAccessType(asset))}
120
+ {formatAssetAccessType(getAccessType(asset)) ?? '?'}
121
121
  </div>
122
122
  </svelte:fragment>
123
123
  <svelte:fragment slot="content">
@@ -1,11 +1,17 @@
1
- <script lang="ts">import { twMerge } from 'tailwind-merge';
2
- import { Drawer, DrawerContent } from '../common';
1
+ <script lang="ts">import { Drawer, DrawerContent } from '../common';
3
2
  import RowIcon from '../common/table/RowIcon.svelte';
4
3
  import { formatAssetAccessType, getAssetUsagePageUri } from './lib';
4
+ import Tooltip from '../meltComponents/Tooltip.svelte';
5
+ import Tooltip2 from '../Tooltip.svelte';
6
+ import { twMerge } from 'tailwind-merge';
7
+ import { displayDate } from '../../utils';
8
+ import Alert from '../common/alert/Alert.svelte';
5
9
  let usagesDrawerData = $state();
6
10
  export function open(data) {
7
11
  usagesDrawerData = data;
8
12
  }
13
+ let staticUsages = $derived(usagesDrawerData?.usages.filter((u) => u.kind !== 'job') ?? []);
14
+ let runtimeUsages = $derived(usagesDrawerData?.usages.filter((u) => u.kind === 'job') ?? []);
9
15
  </script>
10
16
 
11
17
  <Drawer
@@ -14,30 +20,95 @@ export function open(data) {
14
20
  on:close={() => (usagesDrawerData = undefined)}
15
21
  >
16
22
  <DrawerContent title="Asset usage" on:close={() => (usagesDrawerData = undefined)}>
17
- <ul class="flex flex-col border rounded-md divide-y">
18
- {#each usagesDrawerData?.usages ?? [] as u}
19
- <li>
20
- <a
21
- href={getAssetUsagePageUri(u)}
22
- aria-label={`${u.kind}/${u.path}`}
23
- class="text-xs text-primary font-normal flex items-center py-3 px-4 gap-3 hover:bg-surface-hover cursor-pointer"
24
- >
25
- <RowIcon kind={u.kind} />
26
- <div class="flex flex-col justify-center flex-1">
27
- <span class="font-semibold text-emphasis">{u.path}</span>
28
- <span class="text-2xs text-secondary">{u.kind}</span>
29
- </div>
30
- <div
31
- class={twMerge(
32
- 'text-xs font-normal border text-primary w-10 p-1 text-center rounded-md',
33
- !u.access_type ? 'hover:bg-surface active:opacity-80' : ''
34
- )}
35
- >
36
- {formatAssetAccessType(u.access_type)}
37
- </div>
38
- </a>
39
- </li>
40
- {/each}
41
- </ul>
23
+ <div class="flex flex-col gap-6">
24
+ <!-- Static/Declared Usages -->
25
+ <section>
26
+ <h3 class="text-sm font-semibold mb-2">
27
+ Scripts & Flows
28
+ <Tooltip2>Assets detected statically during code analysis</Tooltip2>
29
+ </h3>
30
+ {@render list(staticUsages)}
31
+ </section>
32
+
33
+ <!-- Runtime Job Usage -->
34
+ <section>
35
+ <h3 class="text-sm font-semibold mb-2">
36
+ Latest Job Executions
37
+ <Tooltip2>
38
+ Assets can be detected during job execution either via Windmill's SDK (Data tables, S3
39
+ objects ...) or by being passed as inputs to a script or flow (arbitrary resources).
40
+ </Tooltip2>
41
+ </h3>
42
+ <Alert
43
+ type="info"
44
+ class="mb-2"
45
+ title="Assets are processed asynchronously after job completion"
46
+ >
47
+ It may take a few minutes for jobs to show up here.
48
+ </Alert>
49
+
50
+ {@render list(runtimeUsages)}
51
+ </section>
52
+ </div>
42
53
  </DrawerContent>
43
54
  </Drawer>
55
+
56
+ {#snippet badge(text: string | undefined, tooltip?: string)}
57
+ {#if text}
58
+ <Tooltip disablePopup={!tooltip}>
59
+ <div
60
+ class={twMerge(
61
+ 'text-xs bg-surface font-normal border text-primary min-w-12 p-1 text-center rounded-md'
62
+ )}
63
+ >
64
+ {text}
65
+ </div>
66
+ <svelte:fragment slot="text">
67
+ {#if tooltip}
68
+ {tooltip}
69
+ {/if}
70
+ </svelte:fragment>
71
+ </Tooltip>
72
+ {/if}
73
+ {/snippet}
74
+
75
+ {#snippet list(items: AssetUsage[])}
76
+ <ul class="flex flex-col border rounded-md divide-y">
77
+ {#each items as u}
78
+ {@const accessType = formatAssetAccessType(u.access_type)}
79
+
80
+ <li>
81
+ <a
82
+ href={getAssetUsagePageUri(u)}
83
+ aria-label={`${u.kind}/${u.path}`}
84
+ class="text-xs text-primary font-normal flex items-center py-3 px-4 gap-2 hover:bg-surface-hover cursor-pointer"
85
+ >
86
+ <RowIcon
87
+ kind={!u.metadata?.job_kind
88
+ ? u.kind != 'job'
89
+ ? u.kind
90
+ : 'script'
91
+ : ((
92
+ {
93
+ script: 'script',
94
+ preview: 'script',
95
+ flow: 'flow',
96
+ flowpreview: 'flow',
97
+ singlestepflow: 'flow',
98
+ flownode: 'flow'
99
+ } as const
100
+ )[u.metadata.job_kind] ?? 'script')}
101
+ />
102
+ <div class="flex flex-col justify-center flex-1">
103
+ <span class="font-semibold text-emphasis">
104
+ {u.kind == 'job' ? (u.metadata?.runnable_path ?? 'Unknown job') : u.path}
105
+ </span>
106
+ <span class="text-2xs text-secondary">{u.kind == 'job' ? u.path : u.kind}</span>
107
+ </div>
108
+ {@render badge(displayDate(u.created_at), 'Asset detection time')}
109
+ {@render badge(accessType)}
110
+ </a>
111
+ </li>
112
+ {/each}
113
+ </ul>
114
+ {/snippet}
@@ -1,11 +1,10 @@
1
- import type { AssetUsageAccessType, AssetUsageKind } from '../../gen';
1
+ import type { AssetKind } from '../../gen';
2
+ import { type AssetUsage } from './lib';
2
3
  declare const AssetsUsageDrawer: import("svelte").Component<Record<string, never>, {
3
4
  open: (data: {
4
- usages: {
5
- path: string;
6
- kind: AssetUsageKind;
7
- access_type?: AssetUsageAccessType;
8
- }[];
5
+ path: string;
6
+ kind: AssetKind;
7
+ usages: AssetUsage[];
9
8
  } | undefined) => void;
10
9
  }, "">;
11
10
  type AssetsUsageDrawer = ReturnType<typeof AssetsUsageDrawer>;