windmill-components 1.434.1 → 1.444.1

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 (285) hide show
  1. package/package/components/ArgInput.svelte +12 -16
  2. package/package/components/ArgInput.svelte.d.ts +1 -0
  3. package/package/components/AssignableTags.svelte +3 -1
  4. package/package/components/AssignableTags.svelte.d.ts +1 -0
  5. package/package/components/AuthSettings.svelte +248 -0
  6. package/package/components/AuthSettings.svelte.d.ts +19 -0
  7. package/package/components/AutoscalingConfigEditor.svelte +2 -2
  8. package/package/components/CronInput.svelte +2 -2
  9. package/package/components/DeployWorkspace.svelte +1 -1
  10. package/package/components/Description.svelte +9 -0
  11. package/package/components/Description.svelte.d.ts +18 -0
  12. package/package/components/Dev.svelte +18 -3
  13. package/package/components/DisplayResult.svelte +7 -4
  14. package/package/components/DisplayResult.svelte.d.ts +1 -0
  15. package/package/components/DropdownV2.svelte +2 -1
  16. package/package/components/DropdownV2.svelte.d.ts +1 -0
  17. package/package/components/EditableSchemaForm.svelte +2 -2
  18. package/package/components/Editor.svelte +9 -6
  19. package/package/components/Editor.svelte.d.ts +4 -2
  20. package/package/components/EditorBar.svelte +51 -6
  21. package/package/components/ErrorOrRecoveryHandler.svelte +4 -3
  22. package/package/components/ExecutionDuration.svelte +2 -1
  23. package/package/components/FieldHeader.svelte +9 -1
  24. package/package/components/FieldHeader.svelte.d.ts +1 -0
  25. package/package/components/FlowBuilder.svelte +16 -3
  26. package/package/components/FlowGraphViewer.svelte +2 -0
  27. package/package/components/FlowPreviewContent.svelte +6 -15
  28. package/package/components/FlowStatusViewerInner.svelte +14 -10
  29. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -0
  30. package/package/components/HighlightCode.svelte +3 -0
  31. package/package/components/InputTransformSchemaForm.svelte +1 -1
  32. package/package/components/InstanceSetting.svelte +774 -0
  33. package/package/components/InstanceSetting.svelte.d.ts +27 -0
  34. package/package/components/InstanceSettings.svelte +68 -1005
  35. package/package/components/InstanceSettings.svelte.d.ts +0 -4
  36. package/package/components/Label.svelte +16 -6
  37. package/package/components/Label.svelte.d.ts +3 -0
  38. package/package/components/Login.svelte +17 -9
  39. package/package/components/OAuthSetting.svelte +4 -3
  40. package/package/components/OauthExtraParams.svelte +1 -1
  41. package/package/components/OauthScopes.svelte +2 -2
  42. package/package/components/ObjectStoreConfigSettings.svelte +141 -128
  43. package/package/components/QueueMetricsDrawer.svelte +5 -5
  44. package/package/components/ResourceEditor.svelte +4 -0
  45. package/package/components/ResourceEditor.svelte.d.ts +1 -0
  46. package/package/components/ResourceEditorDrawer.svelte +15 -3
  47. package/package/components/ResourceEditorDrawer.svelte.d.ts +2 -2
  48. package/package/components/ResourcePicker.svelte +16 -5
  49. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  50. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  51. package/package/components/RunPageSchedules.svelte +15 -10
  52. package/package/components/SavedInputs.svelte +1 -1
  53. package/package/components/ScheduleEditorInner.svelte +58 -27
  54. package/package/components/SchemaForm.svelte +7 -5
  55. package/package/components/SchemaForm.svelte.d.ts +1 -0
  56. package/package/components/ScriptBuilder.svelte +58 -5
  57. package/package/components/ScriptEditor.svelte +78 -40
  58. package/package/components/ScriptEditor.svelte.d.ts +17 -2
  59. package/package/components/ScriptPicker.svelte +41 -34
  60. package/package/components/ScriptPicker.svelte.d.ts +1 -0
  61. package/package/components/ScriptVersionHistory.svelte +1 -1
  62. package/package/components/Section.svelte +38 -35
  63. package/package/components/Section.svelte.d.ts +2 -0
  64. package/package/components/ServiceLogsInner.svelte +1 -1
  65. package/package/components/SimpleEditor.svelte +2 -0
  66. package/package/components/Subsection.svelte +52 -0
  67. package/package/components/Subsection.svelte.d.ts +27 -0
  68. package/package/components/SuperadminSettings.svelte +23 -13
  69. package/package/components/TemplateEditor.svelte +4 -3
  70. package/package/components/TestConnection.svelte +5 -0
  71. package/package/components/TestJobLoader.svelte +2 -1
  72. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  73. package/package/components/Toggle.svelte +2 -4
  74. package/package/components/UserSettings.svelte +1 -1
  75. package/package/components/WorkerGroup.svelte +4 -4
  76. package/package/components/WorkerTagPicker.svelte +4 -2
  77. package/package/components/WorkerTagPicker.svelte.d.ts +1 -0
  78. package/package/components/WorkerTagSelect.svelte +2 -0
  79. package/package/components/WorkerTagSelect.svelte.d.ts +1 -0
  80. package/package/components/apps/components/display/AppDisplayComponent.svelte +2 -1
  81. package/package/components/apps/components/display/dbtable/utils.js +26 -1
  82. package/package/components/apps/components/helpers/RunnableComponent.svelte +8 -2
  83. package/package/components/apps/components/inputs/AppDateInput.svelte +7 -1
  84. package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -1
  85. package/package/components/apps/editor/AppEditor.svelte +5 -34
  86. package/package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
  87. package/package/components/apps/editor/AppEditorBottomPanel.svelte +4 -7
  88. package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +1 -3
  89. package/package/components/apps/editor/AppEditorHeader.svelte +148 -58
  90. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
  91. package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
  92. package/package/components/apps/editor/RunnableJobPanel.svelte +6 -2
  93. package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +1 -0
  94. package/package/components/apps/editor/appUtils.d.ts +1 -0
  95. package/package/components/apps/editor/appUtils.js +17 -0
  96. package/package/components/apps/editor/component/components.d.ts +82 -81
  97. package/package/components/apps/editor/component/components.js +4 -3
  98. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +1 -1
  99. package/package/components/apps/editor/componentsPanel/GroupList.svelte +12 -2
  100. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +1 -1
  101. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +1 -1
  102. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +53 -56
  103. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +1 -1
  104. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +3 -2
  105. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +1 -1
  106. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +16 -9
  107. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +1 -0
  108. package/package/components/apps/inputType.d.ts +2 -2
  109. package/package/components/apps/types.d.ts +2 -0
  110. package/package/components/common/alert/ConnectionIndicator.svelte +30 -0
  111. package/package/components/common/alert/ConnectionIndicator.svelte.d.ts +20 -0
  112. package/package/components/common/alert/Notification.svelte +15 -0
  113. package/package/components/common/alert/Notification.svelte.d.ts +17 -0
  114. package/package/components/common/button/AnimatedButton.svelte +1 -1
  115. package/package/components/common/button/RefreshButton.svelte +30 -0
  116. package/package/components/common/button/RefreshButton.svelte.d.ts +18 -0
  117. package/package/components/common/fileDownload/FileDownload.svelte +4 -3
  118. package/package/components/common/fileDownload/FileDownload.svelte.d.ts +1 -0
  119. package/package/components/common/fileUpload/FileUpload.svelte +3 -3
  120. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  121. package/package/components/common/layout/List.svelte +35 -0
  122. package/package/components/common/layout/List.svelte.d.ts +21 -0
  123. package/package/components/common/layout/ListElement.svelte +3 -0
  124. package/package/components/common/layout/ListElement.svelte.d.ts +27 -0
  125. package/package/components/common/menu/MenuV2.svelte +3 -2
  126. package/package/components/common/menu/MenuV2.svelte.d.ts +1 -0
  127. package/package/components/common/modal/Modal.svelte +6 -4
  128. package/package/components/common/modal/Modal.svelte.d.ts +1 -0
  129. package/package/components/common/modal/Modal2.svelte +101 -0
  130. package/package/components/common/modal/Modal2.svelte.d.ts +28 -0
  131. package/package/components/common/popup/Popup.svelte +5 -1
  132. package/package/components/common/popup/Popup.svelte.d.ts +2 -0
  133. package/package/components/common/toggleButton-v2/ToggleButton.svelte +1 -1
  134. package/package/components/copilot/FlowCopilotStatus.svelte +1 -1
  135. package/package/components/details/ClipboardPanel.svelte +12 -2
  136. package/package/components/details/ClipboardPanel.svelte.d.ts +2 -0
  137. package/package/components/details/CopyableCodeBlock.svelte +24 -0
  138. package/package/components/details/CopyableCodeBlock.svelte.d.ts +19 -0
  139. package/package/components/details/DetailPageLayout.svelte +3 -1
  140. package/package/components/details/EmailTriggerConfigSection.svelte +119 -0
  141. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +38 -0
  142. package/package/components/details/EmailTriggerPanel.svelte +27 -74
  143. package/package/components/details/EmailTriggerPanel.svelte.d.ts +7 -1
  144. package/package/components/flows/FlowEditor.svelte +1 -1
  145. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  146. package/package/components/flows/FlowHistoryInner.svelte +1 -1
  147. package/package/components/flows/content/BranchPredicateEditor.svelte +1 -1
  148. package/package/components/flows/content/FlowEditorPanel.svelte +30 -1
  149. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -0
  150. package/package/components/flows/content/FlowInput.svelte +2 -15
  151. package/package/components/flows/content/FlowInputs.svelte +1 -1
  152. package/package/components/flows/content/FlowInputsQuick.svelte +2 -2
  153. package/package/components/flows/content/FlowModuleComponent.svelte +9 -5
  154. package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
  155. package/package/components/flows/content/FlowModuleHeader.svelte +4 -1
  156. package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
  157. package/package/components/flows/content/FlowPathViewer.svelte +3 -1
  158. package/package/components/flows/content/FlowRetries.svelte +32 -5
  159. package/package/components/flows/content/FlowSettings.svelte +56 -48
  160. package/package/components/flows/flowStateUtils.d.ts +10 -1
  161. package/package/components/flows/flowStateUtils.js +23 -0
  162. package/package/components/flows/map/FlowModuleSchemaMap.svelte +9 -19
  163. package/package/components/flows/map/InsertModuleButton.svelte +3 -3
  164. package/package/components/flows/map/VirtualItem.svelte +29 -1
  165. package/package/components/flows/map/VirtualItem.svelte.d.ts +2 -0
  166. package/package/components/flows/pickers/TopLevelNode.svelte +2 -2
  167. package/package/components/flows/previousResults.js +8 -2
  168. package/package/components/flows/types.d.ts +1 -0
  169. package/package/components/graph/FlowGraphV2.svelte +5 -1
  170. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -0
  171. package/package/components/graph/renderers/nodes/InputNode.svelte +2 -0
  172. package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +2 -0
  173. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +1 -1
  174. package/package/components/icons/CSharpIcon.svelte +14 -0
  175. package/package/components/icons/CSharpIcon.svelte.d.ts +25 -0
  176. package/package/components/icons/GitIcon.svelte +5 -2
  177. package/package/components/icons/XeroIcon.svelte +24 -0
  178. package/package/components/icons/XeroIcon.svelte.d.ts +17 -0
  179. package/package/components/icons/index.d.ts +3 -1
  180. package/package/components/icons/index.js +4 -2
  181. package/package/components/instanceSettings.d.ts +3 -1
  182. package/package/components/instanceSettings.js +77 -69
  183. package/package/components/meltComponents/Popover.svelte +82 -0
  184. package/package/components/meltComponents/Popover.svelte.d.ts +21 -0
  185. package/package/components/propertyPicker/PropPicker.svelte +5 -3
  186. package/package/components/runs/JobLoader.svelte +5 -2
  187. package/package/components/runs/JobPreview.svelte +5 -5
  188. package/package/components/runs/RunRow.svelte +3 -4
  189. package/package/components/runs/RunsFilter.svelte +4 -4
  190. package/package/components/schema/EditableSchemaDrawer.svelte +4 -4
  191. package/package/components/schema/PropertyEditor.svelte +1 -1
  192. package/package/components/schema/SchemaFormDND.svelte +2 -0
  193. package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
  194. package/package/components/scriptEditor/LogPanel.svelte +176 -164
  195. package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
  196. package/package/components/search/GlobalSearchModal.svelte +3 -3
  197. package/package/components/sidebar/CriticalAlertModal.svelte +155 -9
  198. package/package/components/sidebar/CriticalAlertModalInner.svelte +65 -212
  199. package/package/components/sidebar/CriticalAlertModalInner.svelte.d.ts +2 -4
  200. package/package/components/sidebar/CriticalAlertTable.svelte +142 -0
  201. package/package/components/sidebar/CriticalAlertTable.svelte.d.ts +25 -0
  202. package/package/components/sidebar/OperatorMenu.svelte +30 -8
  203. package/package/components/sidebar/SideBarNotification.svelte +3 -6
  204. package/package/components/sidebar/SidebarContent.svelte +5 -5
  205. package/package/components/sidebar/WorkspaceMenu.svelte +9 -5
  206. package/package/components/sidebar/WorkspaceMenu.svelte.d.ts +1 -0
  207. package/package/components/sidebar/changelogs.js +82 -17
  208. package/package/components/splitPanes/SplitPanesOrColumnOnMobile.svelte +21 -21
  209. package/package/components/table/AutoDataTable.svelte +1 -1
  210. package/package/components/table/Cell.svelte +5 -3
  211. package/package/components/table/Cell.svelte.d.ts +1 -0
  212. package/package/components/table/DataTable.svelte +65 -58
  213. package/package/components/table/DataTable.svelte.d.ts +2 -0
  214. package/package/components/table/Head.svelte +1 -1
  215. package/package/components/table/Row.svelte +3 -1
  216. package/package/components/table/Row.svelte.d.ts +1 -0
  217. package/package/components/toast.js +3 -1
  218. package/package/components/triggers/CaptureButton.svelte +77 -0
  219. package/package/components/triggers/CaptureButton.svelte.d.ts +16 -0
  220. package/package/components/triggers/CaptureIcon.svelte +17 -0
  221. package/package/components/triggers/CaptureIcon.svelte.d.ts +23 -0
  222. package/package/components/triggers/CaptureSection.svelte +76 -0
  223. package/package/components/triggers/CaptureSection.svelte.d.ts +42 -0
  224. package/package/components/triggers/CaptureTable.svelte +224 -0
  225. package/package/components/triggers/CaptureTable.svelte.d.ts +43 -0
  226. package/package/components/triggers/CaptureWrapper.svelte +237 -0
  227. package/package/components/triggers/CaptureWrapper.svelte.d.ts +35 -0
  228. package/package/components/triggers/KafkaTriggerEditor.svelte +2 -2
  229. package/package/components/triggers/KafkaTriggerEditor.svelte.d.ts +2 -2
  230. package/package/components/triggers/KafkaTriggerEditorInner.svelte +47 -119
  231. package/package/components/triggers/KafkaTriggerEditorInner.svelte.d.ts +2 -2
  232. package/package/components/triggers/KafkaTriggersConfigSection.svelte +215 -0
  233. package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +36 -0
  234. package/package/components/triggers/KafkaTriggersPanel.svelte +73 -45
  235. package/package/components/triggers/KafkaTriggersPanel.svelte.d.ts +6 -0
  236. package/package/components/triggers/RouteEditor.svelte +2 -2
  237. package/package/components/triggers/RouteEditor.svelte.d.ts +2 -2
  238. package/package/components/triggers/RouteEditorConfigSection.svelte +162 -0
  239. package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +43 -0
  240. package/package/components/triggers/RouteEditorInner.svelte +98 -163
  241. package/package/components/triggers/RouteEditorInner.svelte.d.ts +2 -2
  242. package/package/components/triggers/RoutesPanel.svelte +69 -54
  243. package/package/components/triggers/RoutesPanel.svelte.d.ts +5 -0
  244. package/package/components/triggers/ScheduledPollPanel.svelte +5 -9
  245. package/package/components/triggers/TriggersEditor.svelte +119 -89
  246. package/package/components/triggers/TriggersEditor.svelte.d.ts +7 -0
  247. package/package/components/triggers/TriggersEditorSection.svelte +109 -0
  248. package/package/components/triggers/TriggersEditorSection.svelte.d.ts +29 -0
  249. package/package/components/triggers/TriggersWrapper.svelte +60 -0
  250. package/package/components/triggers/TriggersWrapper.svelte.d.ts +21 -0
  251. package/package/components/triggers/WebhooksConfigSection.svelte +382 -0
  252. package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +39 -0
  253. package/package/components/triggers/WebhooksPanel.svelte +32 -331
  254. package/package/components/triggers/WebhooksPanel.svelte.d.ts +7 -1
  255. package/package/components/triggers/WebsocketEditorConfigSection.svelte +176 -0
  256. package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +37 -0
  257. package/package/components/triggers/WebsocketTriggerEditor.svelte +2 -2
  258. package/package/components/triggers/WebsocketTriggerEditor.svelte.d.ts +2 -2
  259. package/package/components/triggers/WebsocketTriggerEditorInner.svelte +29 -150
  260. package/package/components/triggers/WebsocketTriggerEditorInner.svelte.d.ts +2 -2
  261. package/package/components/triggers/WebsocketTriggersPanel.svelte +70 -45
  262. package/package/components/triggers/WebsocketTriggersPanel.svelte.d.ts +6 -0
  263. package/package/components/triggers.d.ts +6 -2
  264. package/package/components/triggers.js +16 -0
  265. package/package/components/wizards/AgGridWizard.svelte +4 -4
  266. package/package/editorUtils.d.ts +2 -0
  267. package/package/editorUtils.js +6 -3
  268. package/package/gen/core/OpenAPI.js +1 -1
  269. package/package/gen/schemas.gen.d.ts +17 -8
  270. package/package/gen/schemas.gen.js +17 -8
  271. package/package/gen/services.gen.d.ts +55 -5
  272. package/package/gen/services.gen.js +108 -5
  273. package/package/gen/types.gen.d.ts +180 -13
  274. package/package/hubPaths.json +6 -3
  275. package/package/infer.js +9 -0
  276. package/package/script_helpers.d.ts +5 -0
  277. package/package/script_helpers.js +68 -8
  278. package/package/scripts.d.ts +1 -1
  279. package/package/scripts.js +5 -1
  280. package/package/stores.d.ts +1 -0
  281. package/package/utils.d.ts +3 -1
  282. package/package/utils.js +20 -4
  283. package/package.json +11 -8
  284. package/package/components/flows/content/CapturePayload.svelte +0 -114
  285. package/package/components/flows/content/CapturePayload.svelte.d.ts +0 -17
@@ -26,6 +26,7 @@ export let editor = undefined;
26
26
  export let diffEditor = undefined;
27
27
  export let args = undefined;
28
28
  export let workspace = undefined;
29
+ export let showCaptures = false;
29
30
  let selectedTab = 'logs';
30
31
  let drawerOpen = false;
31
32
  let drawerContent = undefined;
@@ -64,170 +65,181 @@ let forceJson = false;
64
65
  </DrawerContent>
65
66
  </Drawer>
66
67
 
67
- <Tabs bind:selected={selectedTab} class="mt-1">
68
- <Tab value="logs" size="xs">Logs & Result</Tab>
69
- <Tab value="history" size="xs">History</Tab>
68
+ <div class="h-full flex flex-col">
69
+ <Tabs bind:selected={selectedTab} class="pt-1" wrapperClass="flex-none">
70
+ <Tab value="logs" size="xs">Logs & Result</Tab>
71
+ <Tab value="history" size="xs">History</Tab>
72
+ {#if showCaptures}
73
+ <Tab value="captures" size="xs">Captures</Tab>
74
+ {/if}
70
75
 
71
- <svelte:fragment slot="content">
72
- <!--
73
- TabContent would wrap it in an extra div which is undesirable in this situation
74
- because SplitPanesWrapper uses the parent element as a reference point.
75
- -->
76
- {#if selectedTab === 'logs'}
77
- <SplitPanesWrapper>
78
- <Splitpanes horizontal>
79
- {#if previewJob?.is_flow_step == false && previewJob?.flow_status && !(typeof previewJob.flow_status == 'object' && '_metadata' in previewJob.flow_status)}
80
- <Pane class="relative">
81
- <WorkflowTimeline
82
- flow_status={asWorkflowStatus(previewJob.flow_status)}
83
- flowDone={previewJob.type == 'CompletedJob'}
84
- />
85
- </Pane>
86
- {/if}
87
- <Pane class="relative">
88
- <LogViewer
89
- jobId={previewJob?.id}
90
- duration={previewJob?.['duration_ms']}
91
- mem={previewJob?.['mem_peak']}
92
- content={previewJob?.logs}
93
- isLoading={previewJob?.['running'] == false && previewIsLoading}
94
- tag={previewJob?.tag}
95
- />
96
- </Pane>
97
- <Pane>
98
- <slot></slot>
99
- {#if previewJob != undefined && 'result' in previewJob}
100
- <div class="relative w-full h-full p-2">
101
- <div class="relative">
102
- <DisplayResult
103
- bind:forceJson
104
- workspaceId={previewJob?.workspace_id}
105
- jobId={previewJob?.id}
106
- result={previewJob.result}
107
- >
108
- <svelte:fragment slot="copilot-fix">
109
- {#if lang && editor && diffEditor && args && previewJob?.result && typeof previewJob?.result == 'object' && `error` in previewJob?.result && previewJob?.result.error}
110
- <ScriptFix
111
- error={JSON.stringify(previewJob.result.error)}
112
- {lang}
113
- {editor}
114
- {diffEditor}
115
- {args}
116
- />
76
+ <svelte:fragment slot="content">
77
+ <div class="grow min-h-0">
78
+ {#if selectedTab === 'logs'}
79
+ <SplitPanesWrapper>
80
+ <Splitpanes horizontal>
81
+ {#if previewJob?.is_flow_step == false && previewJob?.flow_status && !(typeof previewJob.flow_status == 'object' && '_metadata' in previewJob.flow_status)}
82
+ <Pane class="relative">
83
+ <WorkflowTimeline
84
+ flow_status={asWorkflowStatus(previewJob.flow_status)}
85
+ flowDone={previewJob.type == 'CompletedJob'}
86
+ />
87
+ </Pane>
88
+ {/if}
89
+ <Pane class="relative">
90
+ <LogViewer
91
+ jobId={previewJob?.id}
92
+ duration={previewJob?.['duration_ms']}
93
+ mem={previewJob?.['mem_peak']}
94
+ content={previewJob?.logs}
95
+ isLoading={previewJob?.['running'] == false && previewIsLoading}
96
+ tag={previewJob?.tag}
97
+ />
98
+ </Pane>
99
+ <Pane>
100
+ <slot />
101
+ {#if previewJob != undefined && 'result' in previewJob}
102
+ <div class="relative w-full h-full p-2">
103
+ <div class="relative">
104
+ <DisplayResult
105
+ bind:forceJson
106
+ workspaceId={previewJob?.workspace_id}
107
+ jobId={previewJob?.id}
108
+ result={previewJob.result}
109
+ >
110
+ <svelte:fragment slot="copilot-fix">
111
+ {#if lang && editor && diffEditor && args && previewJob?.result && typeof previewJob?.result == 'object' && `error` in previewJob?.result && previewJob?.result.error}
112
+ <ScriptFix
113
+ error={JSON.stringify(previewJob.result.error)}
114
+ {lang}
115
+ {editor}
116
+ {diffEditor}
117
+ {args}
118
+ />
119
+ {/if}
120
+ </svelte:fragment>
121
+ </DisplayResult>
122
+ </div>
123
+ </div>
124
+ {:else}
125
+ <div class="text-sm text-tertiary p-2 flex justify-between items-center">
126
+ <span>
127
+ {#if previewIsLoading}
128
+ <Loader2 class="animate-spin" />
129
+ {:else}
130
+ Test to see the result here
117
131
  {/if}
118
- </svelte:fragment>
119
- </DisplayResult>
120
- </div>
121
- </div>
122
- {:else}
123
- <div class="text-sm text-tertiary p-2 flex justify-between items-center">
124
- <span>
125
- {#if previewIsLoading}
126
- <Loader2 class="animate-spin" />
127
- {:else}
128
- Test to see the result here
129
- {/if}
130
- </span>
131
- <Tooltip
132
- documentationLink="https://www.windmill.dev/docs/core_concepts/rich_display_rendering"
133
- >
134
- The result renderer in Windmill supports rich display rendering, allowing you to
135
- customize the display format of your results.
136
- </Tooltip>
137
- </div>
138
- {/if}
139
- </Pane>
140
- </Splitpanes>
141
- </SplitPanesWrapper>
142
- {/if}
143
- {#if selectedTab === 'history'}
144
- <div>
145
- <DataTable size="xs" noBorder>
146
- <Head>
147
- <tr>
148
- <Cell first>Id</Cell>
149
- <Cell>Created at</Cell>
150
- <Cell>Success</Cell>
151
- <Cell>Result</Cell>
152
- <Cell>Code</Cell>
153
- <Cell last>Logs</Cell>
154
- </tr>
155
- </Head>
156
- <tbody class="divide-y">
157
- {#each pastPreviews as { id, created_at, success }}
158
- <tr>
159
- <Cell first>
160
- <a
161
- class="pr-3"
162
- href="{base}/run/{id}?workspace={workspace ?? $workspaceStore}"
163
- target="_blank">{id.substring(30)}</a
164
- >
165
- </Cell>
166
- <Cell>{displayDate(created_at)}</Cell>
167
- <Cell>
168
- {#if success}
169
- <CheckCircle2 size={10} class="text-green-600" />
170
- {:else}
171
- <XCircle size={10} class="text-red-700" />
172
- {/if}
173
- </Cell>
174
- <Cell>
175
- <button
176
- class="text-xs"
177
- on:click|preventDefault={() => {
178
- openDrawer({ mode: 'json', content: undefined, title: 'Result' })
179
- JobService.getCompletedJobResult({
180
- workspace: workspace ?? $workspaceStore ?? 'NO_W',
181
- id
182
- }).then((res) => {
183
- drawerContent && (drawerContent.content = res)
184
- })
185
- }}
186
- >
187
- See Result
188
- </button>
189
- </Cell>
190
- <Cell>
191
- <button
192
- class="text-xs"
193
- on:click|preventDefault={async () => {
194
- const code = (
195
- await JobService.getCompletedJob({
196
- workspace: workspace ?? $workspaceStore ?? 'NO_W',
197
- id
198
- })
199
- ).raw_code
200
- openDrawer({
201
- mode: lang ?? 'plain',
202
- content: String(code),
203
- title: `Code ${lang}`
204
- })
205
- }}
206
- >
207
- View code
208
- </button>
209
- </Cell>
210
- <Cell last>
211
- <button
212
- class="text-xs"
213
- on:click|preventDefault={async () => {
214
- const logs = await (
215
- await fetch(
216
- OpenAPI.BASE + `/w/${workspace ?? $workspaceStore}/jobs_u/get_logs/${id}`
217
- )
218
- ).text()
219
- console.log(logs)
220
- openDrawer({ mode: 'plain', content: String(logs), title: `Logs for ${id}` })
221
- }}
222
- >
223
- View logs
224
- </button>
225
- </Cell>
226
- </tr>
227
- {/each}
228
- </tbody>
229
- </DataTable>
132
+ </span>
133
+ <Tooltip
134
+ documentationLink="https://www.windmill.dev/docs/core_concepts/rich_display_rendering"
135
+ >
136
+ The result renderer in Windmill supports rich display rendering, allowing you
137
+ to customize the display format of your results.
138
+ </Tooltip>
139
+ </div>
140
+ {/if}
141
+ </Pane>
142
+ </Splitpanes>
143
+ </SplitPanesWrapper>
144
+ {/if}
145
+ {#if selectedTab === 'history'}
146
+ <div>
147
+ <DataTable size="xs" noBorder>
148
+ <Head>
149
+ <tr>
150
+ <Cell first>Id</Cell>
151
+ <Cell>Created at</Cell>
152
+ <Cell>Success</Cell>
153
+ <Cell>Result</Cell>
154
+ <Cell>Code</Cell>
155
+ <Cell last>Logs</Cell>
156
+ </tr>
157
+ </Head>
158
+ <tbody class="divide-y">
159
+ {#each pastPreviews as { id, created_at, success }}
160
+ <tr>
161
+ <Cell first>
162
+ <a
163
+ class="pr-3"
164
+ href="{base}/run/{id}?workspace={workspace ?? $workspaceStore}"
165
+ target="_blank">{id.substring(30)}</a
166
+ >
167
+ </Cell>
168
+ <Cell>{displayDate(created_at)}</Cell>
169
+ <Cell>
170
+ {#if success}
171
+ <CheckCircle2 size={10} class="text-green-600" />
172
+ {:else}
173
+ <XCircle size={10} class="text-red-700" />
174
+ {/if}
175
+ </Cell>
176
+ <Cell>
177
+ <button
178
+ class="text-xs"
179
+ on:click|preventDefault={() => {
180
+ openDrawer({ mode: 'json', content: undefined, title: 'Result' })
181
+ JobService.getCompletedJobResult({
182
+ workspace: workspace ?? $workspaceStore ?? 'NO_W',
183
+ id
184
+ }).then((res) => {
185
+ drawerContent && (drawerContent.content = res)
186
+ })
187
+ }}
188
+ >
189
+ See Result
190
+ </button>
191
+ </Cell>
192
+ <Cell>
193
+ <button
194
+ class="text-xs"
195
+ on:click|preventDefault={async () => {
196
+ const code = (
197
+ await JobService.getCompletedJob({
198
+ workspace: workspace ?? $workspaceStore ?? 'NO_W',
199
+ id
200
+ })
201
+ ).raw_code
202
+ openDrawer({
203
+ mode: lang ?? 'plain',
204
+ content: String(code),
205
+ title: `Code ${lang}`
206
+ })
207
+ }}
208
+ >
209
+ View code
210
+ </button>
211
+ </Cell>
212
+ <Cell last>
213
+ <button
214
+ class="text-xs"
215
+ on:click|preventDefault={async () => {
216
+ const logs = await (
217
+ await fetch(
218
+ OpenAPI.BASE +
219
+ `/w/${workspace ?? $workspaceStore}/jobs_u/get_logs/${id}`
220
+ )
221
+ ).text()
222
+ console.log(logs)
223
+ openDrawer({
224
+ mode: 'plain',
225
+ content: String(logs),
226
+ title: `Logs for ${id}`
227
+ })
228
+ }}
229
+ >
230
+ View logs
231
+ </button>
232
+ </Cell>
233
+ </tr>
234
+ {/each}
235
+ </tbody>
236
+ </DataTable>
237
+ </div>
238
+ {/if}
239
+ {#if selectedTab === 'captures'}
240
+ <slot name="capturesTab" />
241
+ {/if}
230
242
  </div>
231
- {/if}
232
- </svelte:fragment>
233
- </Tabs>
243
+ </svelte:fragment>
244
+ </Tabs>
245
+ </div>
@@ -12,6 +12,7 @@ declare const __propDef: {
12
12
  diffEditor?: DiffEditor | undefined;
13
13
  args?: Record<string, any> | undefined;
14
14
  workspace?: string | undefined;
15
+ showCaptures?: boolean | undefined;
15
16
  setFocusToLogs?: (() => void) | undefined;
16
17
  };
17
18
  events: {
@@ -19,6 +20,7 @@ declare const __propDef: {
19
20
  };
20
21
  slots: {
21
22
  default: {};
23
+ capturesTab: {};
22
24
  };
23
25
  };
24
26
  export type LogPanelProps = typeof __propDef.props;
@@ -9,7 +9,7 @@ import { twMerge } from 'tailwind-merge';
9
9
  import ContentSearchInner from '../ContentSearchInner.svelte';
10
10
  import { goto } from '$app/navigation';
11
11
  import QuickMenuItem from '../search/QuickMenuItem.svelte';
12
- import { enterpriseLicense, superadmin, workspaceStore } from '../../stores';
12
+ import { devopsRole, enterpriseLicense, workspaceStore } from '../../stores';
13
13
  import uFuzzy from '@leeoniya/ufuzzy';
14
14
  import BarsStaggered from '../icons/BarsStaggered.svelte';
15
15
  import { scroll_into_view_if_needed_polyfill } from '../multiselect/utils';
@@ -180,7 +180,7 @@ async function handleSearch() {
180
180
  indexMetadata = searchResults.index_metadata;
181
181
  }
182
182
  catch (e) {
183
- sendUserToast(e, true);
183
+ sendUserToast(e.body, true);
184
184
  }
185
185
  loadingCompletedRuns = false;
186
186
  selectedItem = selectItem(0);
@@ -509,7 +509,7 @@ function maxModalHeight(tab) {
509
509
  />
510
510
  {:else if tab === 'logs'}
511
511
  <div class="p-2">
512
- {#if !$superadmin}
512
+ {#if !$devopsRole}
513
513
  <Alert title="Service logs are only available to superadmins" type="warning">
514
514
  Service logs are only available to superadmins
515
515
  </Alert>
@@ -2,12 +2,19 @@
2
2
  import CriticalAlertModalInner from './CriticalAlertModalInner.svelte';
3
3
  import { SettingService } from '../../gen';
4
4
  import { sendUserToast } from '../../toast';
5
- import { workspaceStore, isCriticalAlertsUIOpen, devopsRole } from '../../stores';
6
- import Modal from '../common/modal/Modal.svelte';
5
+ import { workspaceStore, isCriticalAlertsUIOpen, devopsRole, userStore, superadmin } from '../../stores';
6
+ import Modal2 from '../common/modal/Modal2.svelte';
7
+ import { Button, Popup } from '../common';
8
+ import List from '../common/layout/List.svelte';
9
+ import Toggle from '../Toggle.svelte';
10
+ import { BellOff, Bell, ExternalLink, Settings } from 'lucide-svelte';
11
+ import { base } from '../../base';
12
+ import Notification from '../common/alert/Notification.svelte';
7
13
  export let open = false;
8
14
  export let numUnacknowledgedCriticalAlerts = 0;
9
15
  export let muteSettings;
10
16
  let workspaceContext = false;
17
+ let childRef;
11
18
  $: {
12
19
  setupApiFunctions(workspaceContext);
13
20
  }
@@ -47,16 +54,46 @@ onMount(async () => {
47
54
  onDestroy(() => {
48
55
  clearInterval(checkForNewAlertsInterval);
49
56
  });
57
+ async function saveWorkSpaceMuteSetting() {
58
+ await SettingService.workspaceMuteCriticalAlertsUi({
59
+ workspace: $workspaceStore,
60
+ requestBody: {
61
+ mute_critical_alerts: muteSettings.workspace
62
+ }
63
+ });
64
+ sendUserToast(`Critical alert UI mute settings changed.\nPlease reload page for UI changes to take effect.`);
65
+ childRef.refreshAlerts();
66
+ }
67
+ async function saveGlobalMuteSetting() {
68
+ await SettingService.setGlobal({
69
+ key: 'critical_alert_mute_ui',
70
+ requestBody: { value: muteSettings.global }
71
+ });
72
+ sendUserToast(`Critical alert UI mute settings changed.\nPlease reload page for UI changes to take effect.`);
73
+ childRef.refreshAlerts();
74
+ }
50
75
  async function updateHasUnacknowledgedCriticalAlerts(sendToast = false) {
51
76
  if (checkingForNewAlerts)
52
77
  return;
53
78
  checkingForNewAlerts = true;
54
79
  try {
55
- const unacknowledged = await getCriticalAlerts({
80
+ const params = {
56
81
  page: 1,
57
- pageSize: 10,
82
+ pageSize: 1000,
58
83
  acknowledged: false
59
- });
84
+ };
85
+ let unacknowledged = [];
86
+ if (!$devopsRole && $workspaceStore) {
87
+ const res = await SettingService.workspaceGetCriticalAlerts({
88
+ ...params,
89
+ workspace: $workspaceStore
90
+ });
91
+ unacknowledged = res.alerts ?? [];
92
+ }
93
+ else {
94
+ const res = await SettingService.getCriticalAlerts(params);
95
+ unacknowledged = res.alerts ?? [];
96
+ }
60
97
  if (numUnacknowledgedCriticalAlerts === 0 &&
61
98
  unacknowledged.length > 0 &&
62
99
  sendToast &&
@@ -89,14 +126,123 @@ async function acknowledgeAlert(id) {
89
126
  }
90
127
  </script>
91
128
 
92
- <Modal bind:open title="Critical Alerts" cancelText="Close" style="max-width: 66%;">
129
+ <Modal2 bind:isOpen={open} title="Critical Alerts" target="#content" fixedSize="lg">
130
+ <svelte:fragment slot="header-left">
131
+ <Notification notificationCount={numUnacknowledgedCriticalAlerts} notificationLimit={9999} />
132
+ </svelte:fragment>
133
+ <svelte:fragment slot="header-right">
134
+ <List horizontal>
135
+ {#if $superadmin || $userStore?.is_admin}
136
+ <Popup
137
+ floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
138
+ target="#mute-settings-button"
139
+ preventPopupClosingOnClickInside={true}
140
+ >
141
+ <svelte:fragment slot="button">
142
+ <div id="mute-settings-button">
143
+ <Button variant="border" color="light" nonCaptureEvent>
144
+ {#if muteSettings.global || muteSettings.workspace}
145
+ <BellOff size="16" />
146
+ {:else}
147
+ <Bell size="16" />
148
+ {/if}
149
+ </Button>
150
+ </div>
151
+ </svelte:fragment>
152
+ <List justify="start">
153
+ <div class="w-full">
154
+ {#if $superadmin}
155
+ <Toggle
156
+ on:change={saveGlobalMuteSetting}
157
+ bind:checked={muteSettings.global}
158
+ options={{
159
+ right: 'Automatically acknowledge critical alerts instance wide'
160
+ }}
161
+ size="xs"
162
+ stopPropagation={true}
163
+ />
164
+ {/if}
165
+ </div>
166
+
167
+ <div class="w-full">
168
+ <Toggle
169
+ on:change={saveWorkSpaceMuteSetting}
170
+ bind:checked={muteSettings.workspace}
171
+ options={{
172
+ right: 'Automatically acknowledge critical alerts for current workspace'
173
+ }}
174
+ size="xs"
175
+ stopPropagation={true}
176
+ />
177
+ </div>
178
+ </List>
179
+ </Popup>
180
+ {/if}
181
+
182
+ {#if $superadmin}
183
+ <Popup
184
+ floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
185
+ target="#settings-button"
186
+ >
187
+ <svelte:fragment slot="button">
188
+ <div id="settings-button">
189
+ <Button variant="border" color="light" nonCaptureEvent>
190
+ <Settings size="16" />
191
+ </Button>
192
+ </div>
193
+ </svelte:fragment>
194
+ <List justify="start" gap="none">
195
+ <div class="w-full">
196
+ <Button
197
+ size="xs"
198
+ color="light"
199
+ href="{base}/?workspace=admins#superadmin-settings"
200
+ target="_blank"
201
+ >
202
+ <div class="w-full">
203
+ <List horizontal justify="between" gap="sm">
204
+ <div>Instance Critical Alert Settings</div>
205
+ <ExternalLink size="16" />
206
+ </List>
207
+ </div>
208
+ </Button>
209
+ </div>
210
+ <div class="w-full">
211
+ <Button
212
+ size="xs"
213
+ color="light"
214
+ href="{base}/workspace_settings?tab=error_handler"
215
+ target="_blank"
216
+ >
217
+ Workspace Critical Alert Settings <ExternalLink size="16" />
218
+ </Button>
219
+ </div>
220
+ </List>
221
+ </Popup>
222
+ {:else}
223
+ <Button
224
+ size="xs"
225
+ color="light"
226
+ variant="border"
227
+ href="{base}/workspace_settings?tab=error_handler"
228
+ target="_blank"
229
+ >
230
+ <List horizontal justify="between" gap="sm">
231
+ <Settings size="16" />
232
+ <ExternalLink size="16" />
233
+ </List>
234
+ </Button>
235
+ {/if}
236
+ </List>
237
+ </svelte:fragment>
238
+
93
239
  <CriticalAlertModalInner
240
+ bind:workspaceContext
94
241
  {numUnacknowledgedCriticalAlerts}
95
242
  {updateHasUnacknowledgedCriticalAlerts}
96
243
  {getCriticalAlerts}
97
244
  {acknowledgeCriticalAlert}
98
245
  {acknowledgeAllCriticalAlerts}
99
- {muteSettings}
100
- bind:workspaceContext
246
+ bind:this={childRef}
101
247
  />
102
- </Modal>
248
+ </Modal2>