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
@@ -1,60 +1,29 @@
1
- <script lang="ts">import { sendUserToast } from '../toast';
2
- import { createEventDispatcher } from 'svelte';
3
- import { globalEmailInvite, superadmin, workspaceStore } from '../stores';
4
- import { UserService, WorkspaceService } from '../gen';
5
- import { Button } from './common';
1
+ <script lang="ts">import { Button } from './common';
6
2
  import Popover from './meltComponents/Popover.svelte';
7
- import { isCloudHosted } from '../cloud';
8
- import { goto } from '../navigation';
9
3
  import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
10
4
  import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
11
5
  import { MailPlus } from 'lucide-svelte';
12
- const dispatch = createEventDispatcher();
6
+ const { inviteUser } = $props();
13
7
  let email = $state('');
14
8
  function handleKeyUp(event) {
15
9
  const key = event.key;
16
10
  if (key === 'Enter') {
17
11
  event.preventDefault();
18
- inviteUser();
12
+ inviteUser(email, selected);
13
+ email = '';
19
14
  }
20
15
  }
21
- async function inviteUser() {
22
- await WorkspaceService.inviteUser({
23
- workspace: $workspaceStore,
24
- requestBody: {
25
- email,
26
- is_admin: selected == 'admin',
27
- operator: selected == 'operator'
28
- }
29
- });
30
- sendUserToast(`Invited ${email}`);
31
- if (!(await UserService.existsEmail({ email }))) {
32
- let isSuperadmin = $superadmin;
33
- if (!isCloudHosted()) {
34
- sendUserToast(`User ${email} is not registered yet on the instance. ${!isSuperadmin
35
- ? `If not using SSO, ask an administrator to add ${email} to the instance`
36
- : ''}`, true, isSuperadmin
37
- ? [
38
- {
39
- label: 'Add user to the instance',
40
- callback: () => {
41
- $globalEmailInvite = email;
42
- goto('#superadmin-settings');
43
- }
44
- }
45
- ]
46
- : []);
47
- }
48
- }
49
- dispatch('new');
50
- email = '';
51
- }
52
16
  let selected = $state('developer');
53
17
  </script>
54
18
 
55
19
  <Popover floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}>
56
20
  {#snippet trigger()}
57
- <Button variant="accent" size="xs" nonCaptureEvent={true} startIcon={{ icon: MailPlus }}>
21
+ <Button
22
+ variant="default"
23
+ unifiedSize="md"
24
+ nonCaptureEvent={true}
25
+ startIcon={{ icon: MailPlus }}
26
+ >
58
27
  Invite
59
28
  </Button>
60
29
  {/snippet}
@@ -91,7 +60,12 @@ let selected = $state('developer');
91
60
  />
92
61
  {/snippet}
93
62
  </ToggleButtonGroup>
94
- <Button variant="accent" size="sm" on:click={inviteUser} disabled={email === undefined}>
63
+ <Button
64
+ variant="accent"
65
+ unifiedSize="md"
66
+ on:click={() => inviteUser(email, selected)}
67
+ disabled={!email || email.trim() === ''}
68
+ >
95
69
  Invite
96
70
  </Button>
97
71
  </div>
@@ -1,20 +1,6 @@
1
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
1
+ interface Props {
2
+ inviteUser: (email: string, selected: 'operator' | 'developer' | 'admin') => Promise<void>;
13
3
  }
14
- declare const InviteUser: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
- new: CustomEvent<any>;
16
- } & {
17
- [evt: string]: CustomEvent<any>;
18
- }, {}, {}, "">;
19
- type InviteUser = InstanceType<typeof InviteUser>;
4
+ declare const InviteUser: import("svelte").Component<Props, {}, "">;
5
+ type InviteUser = ReturnType<typeof InviteUser>;
20
6
  export default InviteUser;
@@ -63,6 +63,6 @@ declare const JobLoader: import("svelte").Component<Props, {
63
63
  cancelJob: () => Promise<void>;
64
64
  clearCurrentJob: () => Promise<void>;
65
65
  watchJob: (testId: string, callbacks?: Callbacks) => Promise<void>;
66
- }, "isLoading" | "job" | "notfound" | "jobUpdateLastFetch" | "scriptProgress">;
66
+ }, "job" | "isLoading" | "notfound" | "jobUpdateLastFetch" | "scriptProgress">;
67
67
  type JobLoader = ReturnType<typeof JobLoader>;
68
68
  export default JobLoader;
@@ -0,0 +1,287 @@
1
+ <script lang="ts">import { workspaceStore } from '../stores';
2
+ import { Alert, Skeleton } from './common';
3
+ import { Activity } from 'lucide-svelte';
4
+ import { JobService } from '../gen';
5
+ import { msToReadableTime } from '../utils';
6
+ // OTEL SpanKind enum values from opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto
7
+ const SpanKind = {
8
+ UNSPECIFIED: 0,
9
+ INTERNAL: 1,
10
+ SERVER: 2,
11
+ CLIENT: 3,
12
+ PRODUCER: 4,
13
+ CONSUMER: 5
14
+ };
15
+ // OTEL StatusCode enum values from opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto
16
+ const StatusCode = {
17
+ UNSET: 0,
18
+ OK: 1,
19
+ ERROR: 2
20
+ };
21
+ let { jobId } = $props();
22
+ let traces = $state([]);
23
+ let loading = $state(true);
24
+ let error = $state(null);
25
+ let expandedSpans = $state(new Set());
26
+ $effect(() => {
27
+ if (jobId) {
28
+ loadTraces();
29
+ }
30
+ });
31
+ async function loadTraces() {
32
+ if (!$workspaceStore || !jobId)
33
+ return;
34
+ loading = true;
35
+ error = null;
36
+ try {
37
+ const response = await JobService.getJobOtelTraces({
38
+ workspace: $workspaceStore,
39
+ id: jobId
40
+ });
41
+ traces = response;
42
+ }
43
+ catch (e) {
44
+ if (e?.status === 404) {
45
+ traces = [];
46
+ }
47
+ else {
48
+ error = `Error loading traces: ${e?.message ?? e}`;
49
+ }
50
+ }
51
+ finally {
52
+ loading = false;
53
+ }
54
+ }
55
+ function getDurationMs(span) {
56
+ return (span.end_time_unix_nano - span.start_time_unix_nano) / 1_000_000;
57
+ }
58
+ function formatTimestamp(ns) {
59
+ const date = new Date(ns / 1000000);
60
+ return date.toISOString();
61
+ }
62
+ function getStatusColor(statusCode) {
63
+ switch (statusCode) {
64
+ case StatusCode.UNSET:
65
+ return 'text-secondary';
66
+ case StatusCode.OK:
67
+ return 'text-green-600';
68
+ case StatusCode.ERROR:
69
+ return 'text-red-600';
70
+ default:
71
+ return 'text-secondary';
72
+ }
73
+ }
74
+ function getStatusLabel(statusCode) {
75
+ switch (statusCode) {
76
+ case StatusCode.UNSET:
77
+ return 'Unset';
78
+ case StatusCode.OK:
79
+ return 'OK';
80
+ case StatusCode.ERROR:
81
+ return 'Error';
82
+ default:
83
+ return 'Unknown';
84
+ }
85
+ }
86
+ function toggleSpan(spanId) {
87
+ const newSet = new Set(expandedSpans);
88
+ if (newSet.has(spanId)) {
89
+ newSet.delete(spanId);
90
+ }
91
+ else {
92
+ newSet.add(spanId);
93
+ }
94
+ expandedSpans = newSet;
95
+ }
96
+ function getKindLabel(kind) {
97
+ switch (kind) {
98
+ case SpanKind.INTERNAL: return 'Internal';
99
+ case SpanKind.SERVER: return 'Server';
100
+ case SpanKind.CLIENT: return 'Client';
101
+ case SpanKind.PRODUCER: return 'Producer';
102
+ case SpanKind.CONSUMER: return 'Consumer';
103
+ default: return 'Unknown';
104
+ }
105
+ }
106
+ // Parse OTEL proto AnyValue to a simple value
107
+ function parseAnyValue(anyValue) {
108
+ if (!anyValue)
109
+ return null;
110
+ if (anyValue.stringValue !== undefined)
111
+ return anyValue.stringValue;
112
+ if (anyValue.intValue !== undefined)
113
+ return anyValue.intValue;
114
+ if (anyValue.boolValue !== undefined)
115
+ return anyValue.boolValue;
116
+ if (anyValue.doubleValue !== undefined)
117
+ return anyValue.doubleValue;
118
+ if (anyValue.arrayValue?.values) {
119
+ return anyValue.arrayValue.values.map(parseAnyValue);
120
+ }
121
+ if (anyValue.kvlistValue?.values) {
122
+ return parseAttributes(anyValue.kvlistValue.values);
123
+ }
124
+ return JSON.stringify(anyValue);
125
+ }
126
+ // Parse OTEL proto attributes array to a simple key-value object
127
+ function parseAttributes(attributes) {
128
+ if (!attributes)
129
+ return {};
130
+ if (!Array.isArray(attributes))
131
+ return attributes; // already parsed
132
+ const result = {};
133
+ for (const attr of attributes) {
134
+ if (attr.key && attr.value !== undefined) {
135
+ result[attr.key] = parseAnyValue(attr.value);
136
+ }
137
+ }
138
+ return result;
139
+ }
140
+ // Calculate timeline metrics
141
+ function getTimelineMetrics(spans) {
142
+ if (spans.length === 0)
143
+ return { minTime: 0, maxTime: 0, totalDuration: 0 };
144
+ const minTime = Math.min(...spans.map((s) => s.start_time_unix_nano));
145
+ const maxTime = Math.max(...spans.map((s) => s.end_time_unix_nano));
146
+ return { minTime, maxTime, totalDuration: maxTime - minTime };
147
+ }
148
+ let timelineMetrics = $derived(getTimelineMetrics(traces));
149
+ </script>
150
+
151
+ <div class="p-4">
152
+ {#if loading}
153
+ <Skeleton layout={[[4], [8], [6], [10]]} />
154
+ {:else if error}
155
+ <Alert type="error" title="Error">{error}</Alert>
156
+ {:else if traces.length === 0}
157
+ <div class="flex flex-col items-center justify-center py-8 text-secondary">
158
+ <Activity size={48} class="mb-4 opacity-50" />
159
+ <p class="text-lg font-medium">No HTTP requests captured</p>
160
+ <p class="text-sm mt-2">
161
+ This job did not make any HTTP/HTTPS requests, or HTTP Request Tracing is not enabled in instance settings.
162
+ </p>
163
+ </div>
164
+ {:else}
165
+ <div class="space-y-4">
166
+ <div class="flex items-center justify-between">
167
+ <h3 class="text-lg font-semibold">Traces ({traces.length} spans)</h3>
168
+ <button
169
+ class="text-sm text-blue-600 hover:underline"
170
+ onclick={loadTraces}
171
+ >
172
+ Refresh
173
+ </button>
174
+ </div>
175
+
176
+ <!-- Timeline view -->
177
+ <div class="border rounded-lg overflow-hidden">
178
+ <div class="bg-surface-secondary px-4 py-2 border-b">
179
+ <div class="grid grid-cols-12 gap-2 text-xs font-medium text-secondary">
180
+ <div class="col-span-4">Operation</div>
181
+ <div class="col-span-1">Status</div>
182
+ <div class="col-span-5">Timeline</div>
183
+ <div class="col-span-2 text-right">Duration</div>
184
+ </div>
185
+ </div>
186
+
187
+ <div class="divide-y">
188
+ {#each traces as span (span.span_id)}
189
+ {@const durationNs = span.end_time_unix_nano - span.start_time_unix_nano}
190
+ {@const startOffset =
191
+ ((span.start_time_unix_nano - timelineMetrics.minTime) /
192
+ timelineMetrics.totalDuration) *
193
+ 100}
194
+ {@const width = (durationNs / timelineMetrics.totalDuration) * 100}
195
+ {@const statusCode = span.status?.code ?? 0}
196
+
197
+ <div class="hover:bg-surface-hover">
198
+ <button
199
+ class="w-full px-4 py-2 text-left"
200
+ onclick={() => toggleSpan(span.span_id)}
201
+ >
202
+ <div class="grid grid-cols-12 gap-2 items-center">
203
+ <div class="col-span-4 flex items-center gap-2">
204
+ <span class="text-xs text-secondary">
205
+ {expandedSpans.has(span.span_id) ? '▼' : '▶'}
206
+ </span>
207
+ <span class="font-medium truncate" title={span.name}>
208
+ {span.name}
209
+ </span>
210
+ </div>
211
+ <div class="col-span-1">
212
+ <span class={`text-xs font-medium ${getStatusColor(statusCode)}`}>
213
+ {getStatusLabel(statusCode)}
214
+ </span>
215
+ </div>
216
+ <div class="col-span-5 relative h-4">
217
+ <div class="absolute inset-0 bg-surface-secondary rounded"></div>
218
+ <div
219
+ class="absolute h-full bg-blue-500 rounded opacity-75"
220
+ style="left: {startOffset}%; width: {Math.max(width, 0.5)}%;"
221
+ ></div>
222
+ </div>
223
+ <div class="col-span-2 text-right text-sm font-mono">
224
+ {msToReadableTime(getDurationMs(span))}
225
+ </div>
226
+ </div>
227
+ </button>
228
+
229
+ {#if expandedSpans.has(span.span_id)}
230
+ {@const parsedAttrs = parseAttributes(span.attributes)}
231
+ <div class="px-4 pb-4 bg-surface-secondary/50">
232
+ <div class="grid grid-cols-2 gap-4 text-sm">
233
+ <div>
234
+ <p class="text-xs text-secondary mb-1">Trace ID</p>
235
+ <p class="font-mono text-xs break-all">{span.trace_id}</p>
236
+ </div>
237
+ <div>
238
+ <p class="text-xs text-secondary mb-1">Span ID</p>
239
+ <p class="font-mono text-xs">{span.span_id}</p>
240
+ </div>
241
+ {#if span.parent_span_id}
242
+ <div>
243
+ <p class="text-xs text-secondary mb-1">Parent Span ID</p>
244
+ <p class="font-mono text-xs">{span.parent_span_id}</p>
245
+ </div>
246
+ {/if}
247
+ <div>
248
+ <p class="text-xs text-secondary mb-1">Kind</p>
249
+ <p class="font-mono text-xs">{getKindLabel(span.kind)}</p>
250
+ </div>
251
+ <div>
252
+ <p class="text-xs text-secondary mb-1">Start Time</p>
253
+ <p class="font-mono text-xs">{formatTimestamp(span.start_time_unix_nano)}</p>
254
+ </div>
255
+ <div>
256
+ <p class="text-xs text-secondary mb-1">End Time</p>
257
+ <p class="font-mono text-xs">{formatTimestamp(span.end_time_unix_nano)}</p>
258
+ </div>
259
+ {#if span.status?.message}
260
+ <div class="col-span-2">
261
+ <p class="text-xs text-secondary mb-1">Status Message</p>
262
+ <p class="text-xs">{span.status.message}</p>
263
+ </div>
264
+ {/if}
265
+ {#if Object.keys(parsedAttrs).length > 0}
266
+ <div class="col-span-2">
267
+ <p class="text-xs text-secondary mb-1">Attributes</p>
268
+ <div class="bg-surface-secondary p-2 rounded text-xs space-y-1">
269
+ {#each Object.entries(parsedAttrs) as [key, value]}
270
+ <div class="flex gap-2">
271
+ <span class="text-secondary font-medium shrink-0">{key}:</span>
272
+ <span class="font-mono break-all">{typeof value === 'object' ? JSON.stringify(value) : value}</span>
273
+ </div>
274
+ {/each}
275
+ </div>
276
+ </div>
277
+ {/if}
278
+ </div>
279
+ </div>
280
+ {/if}
281
+ </div>
282
+ {/each}
283
+ </div>
284
+ </div>
285
+ </div>
286
+ {/if}
287
+ </div>
@@ -0,0 +1,6 @@
1
+ interface Props {
2
+ jobId: string;
3
+ }
4
+ declare const JobOtelTraces: import("svelte").Component<Props, {}, "">;
5
+ type JobOtelTraces = ReturnType<typeof JobOtelTraces>;
6
+ export default JobOtelTraces;
@@ -1,12 +1,10 @@
1
1
  <script lang="ts">import SimpleEditor from './SimpleEditor.svelte';
2
2
  import { createEventDispatcher } from 'svelte';
3
3
  const dispatch = createEventDispatcher();
4
- export let updateOnBlur = true;
5
- export let placeholder = 'Write a JSON payload. The input schema will be inferred.<br/><br/>Example:<br/><br/>{<br/>&nbsp;&nbsp;"foo": "12"<br/>}';
6
- export let selected = false;
7
- let pendingJson = '';
8
- let simpleEditor = undefined;
9
- let focusTrap;
4
+ let { updateOnBlur = true, placeholder = 'Write a JSON payload. The input schema will be inferred.<br/><br/>Example:<br/><br/>{<br/>&nbsp;&nbsp;"foo": "12"<br/>}', selected = false } = $props();
5
+ let pendingJson = $state('');
6
+ let simpleEditor = $state(undefined);
7
+ let focusTrap = $state();
10
8
  function updatePayloadFromJson(jsonInput) {
11
9
  if (jsonInput === undefined || jsonInput === null || jsonInput.trim() === '') {
12
10
  dispatch('select', undefined);
@@ -36,12 +34,12 @@ function handleKeydown(event) {
36
34
  }
37
35
  </script>
38
36
 
39
- <svelte:window on:keydown={handleKeydown} />
37
+ <svelte:window onkeydown={handleKeydown} />
40
38
 
41
39
  <!-- Add a hidden button that can receive focus -->
42
40
  <button bind:this={focusTrap} class="sr-only" tabindex="-1" aria-hidden="true">Focus trap</button>
43
41
 
44
- <div class="h-full py-3 rounded-md border">
42
+ <div class="h-full rounded-md border">
45
43
  <SimpleEditor
46
44
  bind:this={simpleEditor}
47
45
  on:focus={() => {
@@ -1,3 +1,8 @@
1
+ interface Props {
2
+ updateOnBlur?: boolean;
3
+ placeholder?: string;
4
+ selected?: boolean;
5
+ }
1
6
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
7
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
8
  $$bindings?: Bindings;
@@ -11,13 +16,7 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
11
16
  };
12
17
  z_$$bindings?: Bindings;
13
18
  }
14
- declare const JsonInputs: $$__sveltets_2_IsomorphicComponent<{
15
- updateOnBlur?: boolean;
16
- placeholder?: string;
17
- selected?: boolean;
18
- setCode?: (code: string) => void;
19
- resetSelected?: (dispatchEvent?: boolean) => void;
20
- }, {
19
+ declare const JsonInputs: $$__sveltets_2_IsomorphicComponent<Props, {
21
20
  focus: CustomEvent<any>;
22
21
  blur: CustomEvent<any>;
23
22
  select: CustomEvent<any>;
@@ -26,6 +25,6 @@ declare const JsonInputs: $$__sveltets_2_IsomorphicComponent<{
26
25
  }, {}, {
27
26
  setCode: (code: string) => void;
28
27
  resetSelected: (dispatchEvent?: boolean) => void;
29
- }, string>;
28
+ }, "">;
30
29
  type JsonInputs = InstanceType<typeof JsonInputs>;
31
30
  export default JsonInputs;
@@ -1,9 +1,11 @@
1
1
  <script lang="ts" module>"use strict";
2
2
  const s3LogPrefixes = [
3
- '\n[windmill] Previous logs have been saved to object storage at logs/',
4
- '\n[windmill] Previous logs have been saved to disk at logs/',
5
- '\n[windmill] No object storage set in instance settings. Previous logs have been saved to disk at logs/'
3
+ '[windmill] Previous logs have been saved to object storage at logs/',
4
+ '[windmill] Previous logs have been saved to disk at logs/',
5
+ '[windmill] No object storage set in instance settings. Previous logs have been saved to disk at logs/'
6
6
  ];
7
+ // Only search within first N characters to avoid expensive full-content scans
8
+ const S3_LOG_SEARCH_LIMIT = 2000;
7
9
  </script>
8
10
 
9
11
  <script lang="ts">import { ClipboardCopy, Download, Expand, Loader2 } from 'lucide-svelte';
@@ -28,33 +30,60 @@ let LOG_INC = 10000;
28
30
  let LOG_LIMIT = $state(LOG_INC);
29
31
  let lastJobId = $state(jobId);
30
32
  let loadedFromObjectStore = $state('');
31
- function findPrefixIndex(truncateContent) {
32
- let index = s3LogPrefixes.findIndex((x) => truncateContent.startsWith(x));
33
- if (index == -1) {
33
+ function findPrefixInfo(truncateContent) {
34
+ // Quick check - [windmill] is rare, so bail early in the common case
35
+ // This is much faster than doing 3 long string indexOf searches
36
+ const windmillPos = truncateContent.indexOf('[windmill]');
37
+ if (windmillPos === -1 || windmillPos >= S3_LOG_SEARCH_LIMIT) {
34
38
  return undefined;
35
39
  }
36
- return index;
40
+ // Found [windmill] marker, now determine which specific prefix matches
41
+ for (let i = 0; i < s3LogPrefixes.length; i++) {
42
+ const prefix = s3LogPrefixes[i];
43
+ if (truncateContent.length >= windmillPos + prefix.length &&
44
+ truncateContent.startsWith(prefix, windmillPos)) {
45
+ return { prefixIndex: i, position: windmillPos };
46
+ }
47
+ }
48
+ return undefined;
37
49
  }
38
- function findStartUrl(truncateContent, prefixIndex = undefined) {
39
- if (prefixIndex == undefined) {
50
+ function findStartUrl(truncateContent, prefixInfo) {
51
+ if (!prefixInfo) {
40
52
  return undefined;
41
53
  }
42
- const end = truncateContent.substring(1).indexOf('\n');
43
- return prefixIndex != undefined && truncateContent
44
- ? truncateContent.substring(s3LogPrefixes[prefixIndex]?.length, end == -1 ? undefined : end + 1)
45
- : undefined;
54
+ const { prefixIndex, position } = prefixInfo;
55
+ const prefix = s3LogPrefixes[prefixIndex];
56
+ const startOfPath = position + prefix.length;
57
+ const endOfLine = truncateContent.indexOf('\n', startOfPath);
58
+ return truncateContent.substring(startOfPath, endOfLine === -1 ? undefined : endOfLine);
59
+ }
60
+ function splitAtWindmillLine(content, prefixInfo) {
61
+ const { prefixIndex, position } = prefixInfo;
62
+ const prefix = s3LogPrefixes[prefixIndex];
63
+ // Find line boundaries
64
+ const lineStart = position > 0 && content[position - 1] === '\n' ? position - 1 : position;
65
+ const pathStart = position + prefix.length;
66
+ const lineEnd = content.indexOf('\n', pathStart);
67
+ if (lineEnd === -1) {
68
+ // [windmill] line is at the end
69
+ return { before: content.substring(0, lineStart), after: '' };
70
+ }
71
+ return {
72
+ before: content.substring(0, lineStart),
73
+ after: content.substring(lineEnd)
74
+ };
46
75
  }
47
- function tooltipText(prefixIndex) {
48
- if (prefixIndex == undefined) {
76
+ function tooltipText(prefixInfo) {
77
+ if (prefixInfo == undefined) {
49
78
  return 'No path/file detected to download from';
50
79
  }
51
- else if (prefixIndex == 0) {
80
+ else if (prefixInfo.prefixIndex == 0) {
52
81
  return 'Download the previous logs from the instance configured object store';
53
82
  }
54
- else if (prefixIndex == 1) {
83
+ else if (prefixInfo.prefixIndex == 1) {
55
84
  return 'Attempt to download the logs from disk. Assume there is a shared disk between the workers and the server at /tmp/windmill/logs. Upgrade to EE to use an object store such as S3 instead of a shared volume.';
56
85
  }
57
- else if (prefixIndex == 2) {
86
+ else if (prefixInfo.prefixIndex == 2) {
58
87
  return 'Attempt to download the logs from disk. Assume there is a shared disk between the workers and the server at /tmp/windmill/logs. Since you are on EE, you can alternatively use an object store such as S3 configured in the instance settings instead of a shared volume..';
59
88
  }
60
89
  }
@@ -77,7 +106,6 @@ async function getStoreLogs() {
77
106
  workspace: $workspaceStore ?? '',
78
107
  path: downloadStartUrl
79
108
  }));
80
- downloadStartUrl = undefined;
81
109
  LOG_LIMIT += Math.min(LOG_INC, res.length);
82
110
  loadedFromObjectStore = res + loadedFromObjectStore;
83
111
  let newC = truncateContent(content, loadedFromObjectStore, LOG_LIMIT);
@@ -105,14 +133,36 @@ $effect.pre(() => {
105
133
  }
106
134
  });
107
135
  let truncatedContent = $derived(truncateContent(content, loadedFromObjectStore, LOG_LIMIT));
108
- let prefixIndex = $derived(findPrefixIndex(truncatedContent));
109
- let downloadStartUrl = $derived(findStartUrl(truncatedContent, prefixIndex));
136
+ let prefixInfo = $derived(findPrefixInfo(truncatedContent));
137
+ let downloadStartUrl = $derived(findStartUrl(truncatedContent, prefixInfo));
110
138
  $effect.pre(() => {
111
139
  truncatedContent && scrollToBottom();
112
140
  });
113
- let html = $derived(ansi_up.ansi_to_html(downloadStartUrl && prefixIndex != undefined
114
- ? truncatedContent.substring(truncatedContent.substring(1).indexOf('\n') + 2, truncatedContent.length)
115
- : truncatedContent));
141
+ // When [windmill] line is NOT at start, split into before/after to render button inline
142
+ let splitHtml = $derived.by(() => {
143
+ if (prefixInfo == undefined || prefixInfo.position === 0) {
144
+ return undefined;
145
+ }
146
+ const { before, after } = splitAtWindmillLine(truncatedContent, prefixInfo);
147
+ return {
148
+ before: ansi_up.ansi_to_html(before),
149
+ after: ansi_up.ansi_to_html(after)
150
+ };
151
+ });
152
+ // Only compute html when splitHtml won't be used (avoids wasteful ansi_to_html call)
153
+ let html = $derived.by(() => {
154
+ if (splitHtml) {
155
+ // splitHtml is active - skip expensive computation
156
+ return '';
157
+ }
158
+ if (prefixInfo == undefined) {
159
+ // No [windmill] line - return full content
160
+ return ansi_up.ansi_to_html(truncatedContent);
161
+ }
162
+ // [windmill] at start - strip the line and return the rest
163
+ const { after } = splitAtWindmillLine(truncatedContent, prefixInfo);
164
+ return ansi_up.ansi_to_html(after);
165
+ });
116
166
  </script>
117
167
 
118
168
  <Drawer bind:this={logViewer} bind:open={drawerOpen} size="900px">
@@ -148,12 +198,15 @@ let html = $derived(ansi_up.ansi_to_html(downloadStartUrl && prefixIndex != unde
148
198
  class="bg-surface-secondary text-primary text-xs w-full p-2 whitespace-pre-wrap border rounded-md"
149
199
  >{#if content}{@const len =
150
200
  (content?.length ?? 0) +
151
- (loadedFromObjectStore?.length ?? 0)}{#if downloadStartUrl}<button
201
+ (loadedFromObjectStore?.length ?? 0)}{#if splitHtml}{@html splitHtml.before}<button
202
+ onclick={getStoreLogs}
203
+ >Show more... <Tooltip>{tooltipText(prefixInfo)}</Tooltip></button
204
+ >{@html splitHtml.after}{:else if downloadStartUrl}<button
152
205
  onclick={getStoreLogs}
153
- >Show more... <Tooltip>{tooltipText(prefixIndex)}</Tooltip></button
154
- ><br />{:else if len > LOG_LIMIT}(truncated to the last {LOG_LIMIT} characters)...<br
206
+ >Show more... <Tooltip>{tooltipText(prefixInfo)}</Tooltip></button
207
+ ><br />{@html html}{:else if len > LOG_LIMIT}(truncated to the last {LOG_LIMIT} characters)...<br
155
208
  /><button onclick={() => showMoreTruncate(len)}>Show more..</button><br
156
- />{/if}{@html html}{:else if isLoading}Waiting for job to start...{:else}No logs are available yet{/if}</pre
209
+ />{@html html}{:else}{@html html}{/if}{:else if isLoading}Waiting for job to start...{:else}No logs are available yet{/if}</pre
157
210
  >
158
211
  </div>
159
212
  </DrawerContent>
@@ -230,13 +283,18 @@ let html = $derived(ansi_up.ansi_to_html(downloadStartUrl && prefixIndex != unde
230
283
  )}
231
284
  >{#if content}{@const len =
232
285
  (content?.length ?? 0) +
233
- (loadedFromObjectStore?.length ?? 0)}{#if downloadStartUrl}<button
286
+ (loadedFromObjectStore?.length ?? 0)}{#if splitHtml}<span>{@html splitHtml.before}</span><button
287
+ onclick={getStoreLogs}
288
+ >Show more... &nbsp;<Tooltip>{tooltipText(prefixInfo)}</Tooltip></button
289
+ ><span>{@html splitHtml.after}</span
290
+ >{:else if downloadStartUrl}<button
234
291
  onclick={getStoreLogs}
235
- >Show more... &nbsp;<Tooltip>{tooltipText(prefixIndex)}</Tooltip></button
236
- ><br />{:else if len > LOG_LIMIT}<button onclick={() => showMoreTruncate(len)}
292
+ >Show more... &nbsp;<Tooltip>{tooltipText(prefixInfo)}</Tooltip></button
293
+ ><br /><span>{@html html}</span
294
+ >{:else if len > LOG_LIMIT}<button onclick={() => showMoreTruncate(len)}
237
295
  >Show more..</button
238
- >&nbsp;({LOG_LIMIT}/{len} chars)<br />{/if}<span>{@html html}</span
239
- >{:else if !isLoading}<span>{customEmptyMessage}</span>{/if}</pre
296
+ >&nbsp;({LOG_LIMIT}/{len} chars)<br /><span>{@html html}</span
297
+ >{:else}<span>{@html html}</span>{/if}{:else if !isLoading}<span>{customEmptyMessage}</span>{/if}</pre
240
298
  >
241
299
  </div>
242
300
  </div>