windmill-components 1.394.8 → 1.405.5

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 (305) hide show
  1. package/package/assets/app.css +20 -0
  2. package/package/ata/edgeCases.d.ts +0 -1
  3. package/package/ata/edgeCases.js +2 -8
  4. package/package/ata/index.js +4 -3
  5. package/package/common.d.ts +1 -1
  6. package/package/common.js +2 -2
  7. package/package/components/ApiConnectForm.svelte +33 -7
  8. package/package/components/AppConnectLightweightResourcePicker.svelte +66 -0
  9. package/package/components/AppConnectLightweightResourcePicker.svelte.d.ts +21 -0
  10. package/package/components/ArgInput.svelte +10 -4
  11. package/package/components/ArgInput.svelte.d.ts +1 -0
  12. package/package/components/CenteredModal.svelte +4 -1
  13. package/package/components/CenteredModal.svelte.d.ts +1 -0
  14. package/package/components/CustomPopover.svelte +1 -1
  15. package/package/components/DateInput.svelte +2 -0
  16. package/package/components/DateInput.svelte.d.ts +1 -0
  17. package/package/components/DefaultScripts.svelte +8 -3
  18. package/package/components/DefaultScripts.svelte.d.ts +5 -1
  19. package/package/components/DefaultScriptsInner.svelte +16 -7
  20. package/package/components/DefaultScriptsInner.svelte.d.ts +3 -1
  21. package/package/components/Dev.svelte +68 -11
  22. package/package/components/DisplayResult.svelte +1 -1
  23. package/package/components/DropdownV2.svelte.d.ts +3 -3
  24. package/package/components/DropdownV2Inner.svelte.d.ts +3 -3
  25. package/package/components/EditableSchemaForm.svelte +1 -0
  26. package/package/components/Editor.svelte +3 -2
  27. package/package/components/Editor.svelte.d.ts +1 -1
  28. package/package/components/ExecutionDuration.svelte +44 -0
  29. package/package/components/ExecutionDuration.svelte.d.ts +24 -0
  30. package/package/components/FlowBuilder.svelte +22 -12
  31. package/package/components/FlowBuilder.svelte.d.ts +1 -0
  32. package/package/components/FlowGraphViewer.svelte +9 -2
  33. package/package/components/FlowGraphViewerStep.svelte +23 -10
  34. package/package/components/FlowInputViewer.svelte +25 -0
  35. package/package/components/FlowInputViewer.svelte.d.ts +19 -0
  36. package/package/components/FlowJobResult.svelte +8 -2
  37. package/package/components/FlowJobResult.svelte.d.ts +1 -0
  38. package/package/components/FlowMetadata.svelte +2 -2
  39. package/package/components/FlowStatusViewer.svelte +3 -1
  40. package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
  41. package/package/components/FlowStatusViewerInner.svelte +21 -5
  42. package/package/components/FlowTimeline.svelte +3 -3
  43. package/package/components/FlowViewer.svelte +2 -21
  44. package/package/components/HighlightCode.svelte +3 -0
  45. package/package/components/IconedResourceType.svelte +17 -10
  46. package/package/components/IconedResourceType.svelte.d.ts +2 -0
  47. package/package/components/IdEditorInput.svelte +0 -1
  48. package/package/components/InstanceSettings.svelte +247 -129
  49. package/package/components/InstanceSettings.svelte.d.ts +2 -0
  50. package/package/components/JobArgs.svelte +3 -1
  51. package/package/components/LightweightArgInput.svelte +35 -10
  52. package/package/components/LightweightArgInput.svelte.d.ts +1 -0
  53. package/package/components/LightweightObjectResourceInput.svelte +2 -0
  54. package/package/components/LightweightObjectResourceInput.svelte.d.ts +1 -0
  55. package/package/components/LightweightResourcePicker.svelte +34 -30
  56. package/package/components/LightweightSchemaForm.svelte +2 -0
  57. package/package/components/LightweightSchemaForm.svelte.d.ts +1 -0
  58. package/package/components/LogViewer.svelte +4 -3
  59. package/package/components/LogViewer.svelte.d.ts +1 -0
  60. package/package/components/Login.svelte +10 -5
  61. package/package/components/Login.svelte.d.ts +1 -0
  62. package/package/components/ManualPopover.svelte +1 -1
  63. package/package/components/ModulePreview.svelte +21 -2
  64. package/package/components/ModuleStatus.svelte +3 -0
  65. package/package/components/ModuleStatus.svelte.d.ts +1 -0
  66. package/package/components/OAuthSetting.svelte +40 -15
  67. package/package/components/ObjectResourceInput.svelte +5 -2
  68. package/package/components/ObjectResourceInput.svelte.d.ts +2 -0
  69. package/package/components/ObjectStoreConfigSettings.svelte +78 -76
  70. package/package/components/ParqetCsvTableRenderer.svelte +25 -3
  71. package/package/components/Password.svelte.d.ts +1 -1
  72. package/package/components/Path.svelte +74 -54
  73. package/package/components/Path.svelte.d.ts +2 -1
  74. package/package/components/Popover.svelte +1 -1
  75. package/package/components/Portal.svelte +7 -8
  76. package/package/components/Portal.svelte.d.ts +3 -7
  77. package/package/components/QueueMetricsDrawer.svelte +368 -3
  78. package/package/components/QueueMetricsDrawer.svelte.d.ts +2 -0
  79. package/package/components/ResourceEditor.svelte +38 -10
  80. package/package/components/ResourcePicker.svelte +14 -9
  81. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  82. package/package/components/ResultJobLoader.svelte +6 -3
  83. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  84. package/package/components/RunForm.svelte +1 -1
  85. package/package/components/SavedInputs.svelte +2 -2
  86. package/package/components/ScheduleEditorInner.svelte +2 -2
  87. package/package/components/SchemaForm.svelte +6 -1
  88. package/package/components/ScriptBuilder.svelte +12 -5
  89. package/package/components/ScriptEditor.svelte +33 -3
  90. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  91. package/package/components/ScriptVersionHistory.svelte +54 -59
  92. package/package/components/Scrollable.svelte +47 -0
  93. package/package/components/Scrollable.svelte.d.ts +21 -0
  94. package/package/components/ShareModal.svelte.d.ts +2 -2
  95. package/package/components/SuperadminSettings.svelte +5 -7
  96. package/package/components/TestConnection.svelte +1 -0
  97. package/package/components/TestJobLoader.svelte +46 -5
  98. package/package/components/TestJobLoader.svelte.d.ts +2 -1
  99. package/package/components/TimeAgo.svelte +5 -6
  100. package/package/components/TimeAgo.svelte.d.ts +1 -1
  101. package/package/components/ToggleHubWorkspaceQuick.svelte +14 -0
  102. package/package/components/ToggleHubWorkspaceQuick.svelte.d.ts +16 -0
  103. package/package/components/WorkspaceGroup.svelte +3 -2
  104. package/package/components/apps/components/buttons/AppButton.svelte +1 -1
  105. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +1 -1
  106. package/package/components/apps/components/helpers/DebouncedInput.svelte +9 -1
  107. package/package/components/apps/components/inputs/AppMultiSelect.svelte +1 -1
  108. package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +1 -1
  109. package/package/components/apps/components/inputs/AppSelect.svelte +1 -1
  110. package/package/components/apps/components/layout/AppDrawer.svelte +1 -1
  111. package/package/components/apps/components/layout/AppModal.svelte +1 -1
  112. package/package/components/apps/editor/AppEditor.svelte +11 -3
  113. package/package/components/apps/editor/GridEditor.svelte +57 -4
  114. package/package/components/apps/editor/GridEditor.svelte.d.ts +8 -0
  115. package/package/components/apps/editor/GridEditorMenu.svelte +1 -1
  116. package/package/components/apps/editor/SubGridEditor.svelte +82 -3
  117. package/package/components/apps/editor/SubGridEditor.svelte.d.ts +16 -0
  118. package/package/components/apps/editor/appUtils.d.ts +19 -2
  119. package/package/components/apps/editor/appUtils.js +103 -7
  120. package/package/components/apps/editor/component/Component.svelte +36 -8
  121. package/package/components/apps/editor/component/Component.svelte.d.ts +3 -1
  122. package/package/components/apps/editor/component/components.d.ts +79 -79
  123. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +1 -1
  124. package/package/components/apps/svelte-grid/Grid.svelte +235 -12
  125. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +7 -7
  126. package/package/components/apps/svelte-grid/MoveResize.svelte +104 -11
  127. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +7 -0
  128. package/package/components/apps/svelte-grid/utils/item.d.ts +4 -1
  129. package/package/components/apps/svelte-grid/utils/item.js +2 -3
  130. package/package/components/apps/svelte-select/lib/ConditionalPortal.svelte +1 -1
  131. package/package/components/apps/svelte-select/lib/ConditionalPortalGlobal.svelte +1 -1
  132. package/package/components/apps/svelte-select/lib/Select.svelte +1 -1
  133. package/package/components/common/button/ButtonDropdown.svelte +1 -1
  134. package/package/components/common/drawer/ConditionalPortal.svelte +1 -1
  135. package/package/components/common/fileUpload/FileUpload.svelte +1 -1
  136. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  137. package/package/components/common/menu/Menu.svelte +2 -1
  138. package/package/components/common/menu/MenuV2.svelte +4 -2
  139. package/package/components/common/menu/MenuV2.svelte.d.ts +1 -0
  140. package/package/components/common/modal/AlwaysMountedModal.svelte +1 -1
  141. package/package/components/common/popup/Popup.svelte +22 -12
  142. package/package/components/common/popup/Popup.svelte.d.ts +2 -0
  143. package/package/components/common/popup/PopupV2.svelte +58 -0
  144. package/package/components/common/popup/PopupV2.svelte.d.ts +27 -0
  145. package/package/components/copilot/CronGen.svelte +1 -1
  146. package/package/components/copilot/RegexGen.svelte +4 -4
  147. package/package/components/copilot/StepGen.svelte +6 -6
  148. package/package/components/copilot/StepGenQuick.svelte +58 -0
  149. package/package/components/copilot/StepGenQuick.svelte.d.ts +24 -0
  150. package/package/components/copilot/flow.d.ts +2 -0
  151. package/package/components/copilot/flow.js +55 -0
  152. package/package/components/details/DetailPageDetailPanel.svelte +9 -1
  153. package/package/components/details/DetailPageDetailPanel.svelte.d.ts +2 -1
  154. package/package/components/details/DetailPageLayout.svelte +2 -0
  155. package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
  156. package/package/components/details/Menu.svelte +1 -1
  157. package/package/components/details/utils.d.ts +0 -1
  158. package/package/components/details/utils.js +1 -12
  159. package/package/components/flows/CreateActionsApp.svelte +1 -1
  160. package/package/components/flows/FlowEditor.svelte +4 -2
  161. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  162. package/package/components/flows/FlowHistory.svelte +10 -195
  163. package/package/components/flows/FlowHistory.svelte.d.ts +0 -1
  164. package/package/components/flows/FlowHistoryInner.svelte +200 -0
  165. package/package/components/flows/FlowHistoryInner.svelte.d.ts +19 -0
  166. package/package/components/flows/FlowProgressBar.svelte +16 -1
  167. package/package/components/flows/FlowProgressBar.svelte.d.ts +1 -0
  168. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +8 -0
  169. package/package/components/flows/content/FlowBranchesAllWrapper.svelte.d.ts +1 -0
  170. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +8 -0
  171. package/package/components/flows/content/FlowBranchesOneWrapper.svelte.d.ts +1 -0
  172. package/package/components/flows/content/FlowConstants.svelte +1 -1
  173. package/package/components/flows/content/FlowEditorPanel.svelte +5 -1
  174. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
  175. package/package/components/flows/content/FlowInput.svelte +66 -58
  176. package/package/components/flows/content/FlowInput.svelte.d.ts +1 -0
  177. package/package/components/flows/content/FlowInputs.svelte +7 -6
  178. package/package/components/flows/content/FlowInputs.svelte.d.ts +1 -0
  179. package/package/components/flows/content/FlowInputsFlowQuick.svelte +65 -0
  180. package/package/components/flows/content/FlowInputsFlowQuick.svelte.d.ts +19 -0
  181. package/package/components/flows/content/FlowInputsQuick.svelte +419 -0
  182. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +33 -0
  183. package/package/components/flows/content/FlowLoop.svelte +7 -1
  184. package/package/components/flows/content/FlowModuleComponent.svelte +12 -3
  185. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  186. package/package/components/flows/content/FlowModuleScript.svelte +1 -1
  187. package/package/components/flows/content/FlowModuleSkip.svelte +69 -0
  188. package/package/components/flows/content/FlowModuleSkip.svelte.d.ts +20 -0
  189. package/package/components/flows/content/FlowModuleWrapper.svelte +17 -4
  190. package/package/components/flows/content/FlowPreprocessorModule.svelte +16 -0
  191. package/package/components/flows/content/FlowPreprocessorModule.svelte.d.ts +16 -0
  192. package/package/components/flows/content/FlowWhileLoop.svelte +9 -0
  193. package/package/components/flows/content/FlowWhileLoop.svelte.d.ts +1 -0
  194. package/package/components/flows/content/GenAiQuick.svelte +30 -0
  195. package/package/components/flows/content/GenAiQuick.svelte.d.ts +20 -0
  196. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -2
  197. package/package/components/flows/flowInfers.js +1 -1
  198. package/package/components/flows/header/FlowPreviewButtons.svelte +1 -0
  199. package/package/components/flows/idUtils.js +3 -1
  200. package/package/components/flows/map/FlowCopilotButton.svelte +55 -0
  201. package/package/components/flows/map/FlowCopilotButton.svelte.d.ts +16 -0
  202. package/package/components/flows/map/FlowErrorHandlerItem.svelte +77 -47
  203. package/package/components/flows/map/FlowJobsMenu.svelte +1 -1
  204. package/package/components/flows/map/FlowModuleSchemaItem.svelte +25 -12
  205. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
  206. package/package/components/flows/map/FlowModuleSchemaMap.svelte +64 -20
  207. package/package/components/flows/map/InsertModuleButton.svelte +161 -138
  208. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +7 -4
  209. package/package/components/flows/map/MapItem.svelte +11 -0
  210. package/package/components/flows/map/MapItem.svelte.d.ts +1 -0
  211. package/package/components/flows/pickers/FlowScriptPickerQuick.svelte +48 -0
  212. package/package/components/flows/pickers/FlowScriptPickerQuick.svelte.d.ts +23 -0
  213. package/package/components/flows/pickers/FlowToplevelNode.svelte +19 -0
  214. package/package/components/flows/pickers/FlowToplevelNode.svelte.d.ts +19 -0
  215. package/package/components/flows/pickers/PickHubScriptQuick.svelte +138 -0
  216. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +33 -0
  217. package/package/components/flows/pickers/TopLevelNode.svelte +58 -0
  218. package/package/components/flows/pickers/TopLevelNode.svelte.d.ts +21 -0
  219. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +120 -0
  220. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte.d.ts +35 -0
  221. package/package/components/flows/types.d.ts +1 -0
  222. package/package/components/graph/FlowGraphV2.svelte +93 -58
  223. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -1
  224. package/package/components/graph/graphBuilder.d.ts +2 -1
  225. package/package/components/graph/graphBuilder.js +345 -280
  226. package/package/components/graph/model.d.ts +2 -0
  227. package/package/components/graph/renderers/edges/BaseEdge.svelte +36 -14
  228. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  229. package/package/components/graph/renderers/nodes/InputNode.svelte +31 -51
  230. package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +6 -1
  231. package/package/components/graph/renderers/nodes/ModuleNode.svelte +2 -1
  232. package/package/components/graph/util.d.ts +1 -1
  233. package/package/components/graph/util.js +7 -2
  234. package/package/components/home/ListFiltersQuick.svelte +51 -0
  235. package/package/components/home/ListFiltersQuick.svelte.d.ts +23 -0
  236. package/package/components/icons/AnsibleIcon.svelte +42 -0
  237. package/package/components/icons/AnsibleIcon.svelte.d.ts +25 -0
  238. package/package/components/icons/WindmillIcon.svelte +119 -105
  239. package/package/components/icons/WindmillIcon2.svelte +141 -0
  240. package/package/components/icons/WindmillIcon2.svelte.d.ts +20 -0
  241. package/package/components/icons/index.d.ts +2 -1
  242. package/package/components/icons/index.js +2 -1
  243. package/package/components/icons/store.d.ts +4 -0
  244. package/package/components/icons/store.js +1 -0
  245. package/package/components/instanceSettings.d.ts +2 -2
  246. package/package/components/instanceSettings.js +25 -58
  247. package/package/components/jobs/JobProgressBar.svelte +52 -0
  248. package/package/components/jobs/JobProgressBar.svelte.d.ts +23 -0
  249. package/package/components/multiselect/MultiSelectWrapper.svelte +1 -1
  250. package/package/components/progressBar/ProgressBar.svelte +18 -1
  251. package/package/components/progressBar/ProgressBar.svelte.d.ts +3 -0
  252. package/package/components/propertyPicker/ObjectViewer.svelte +1 -1
  253. package/package/components/runs/JobPreview.svelte +1 -0
  254. package/package/components/runs/PreprocessedArgsDisplay.svelte +71 -0
  255. package/package/components/runs/PreprocessedArgsDisplay.svelte.d.ts +16 -0
  256. package/package/components/runs/RunRow.svelte +3 -7
  257. package/package/components/schema/AddProperty.svelte +1 -0
  258. package/package/components/schema/EditableSchemaWrapper.svelte +142 -19
  259. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +1 -0
  260. package/package/components/schema/FlowPropertyEditor.svelte +13 -0
  261. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -0
  262. package/package/components/scriptEditor/LogPanel.svelte +1 -0
  263. package/package/components/scriptEditor/LogPanel.svelte.d.ts +3 -1
  264. package/package/components/search/GlobalSearchModal.svelte +3 -2
  265. package/package/components/sidebar/SidebarContent.svelte +69 -8
  266. package/package/components/sidebar/changelogs.js +10 -0
  267. package/package/components/triggers/RouteEditor.svelte +19 -0
  268. package/package/components/triggers/RouteEditor.svelte.d.ts +21 -0
  269. package/package/components/triggers/RouteEditorInner.svelte +327 -0
  270. package/package/components/triggers/RouteEditorInner.svelte.d.ts +21 -0
  271. package/package/components/triggers/RoutesPanel.svelte +74 -0
  272. package/package/components/triggers/RoutesPanel.svelte.d.ts +17 -0
  273. package/package/editorUtils.js +2 -0
  274. package/package/gen/core/OpenAPI.js +1 -1
  275. package/package/gen/schemas.gen.d.ts +159 -8
  276. package/package/gen/schemas.gen.js +161 -8
  277. package/package/gen/services.gen.d.ts +139 -1
  278. package/package/gen/services.gen.js +282 -1
  279. package/package/gen/types.gen.d.ts +455 -12
  280. package/package/hubPaths.json +6 -8
  281. package/package/infer.d.ts +4 -2
  282. package/package/infer.js +25 -23
  283. package/package/inferArgSig.js +8 -2
  284. package/package/monaco_workers/graphql.worker.bundle.js +45440 -174
  285. package/package/relative_imports.d.ts +3 -0
  286. package/package/relative_imports.js +25 -0
  287. package/package/script_helpers.d.ts +38 -34
  288. package/package/script_helpers.js +245 -35
  289. package/package/scripts.d.ts +1 -1
  290. package/package/scripts.js +5 -1
  291. package/package/stores.d.ts +1 -0
  292. package/package/stores.js +1 -0
  293. package/package/utils.d.ts +1 -0
  294. package/package/utils.js +4 -0
  295. package/package.json +38 -7
  296. package/package/components/flows/map/InsertTriggerButton.svelte +0 -48
  297. package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +0 -24
  298. package/package/init_scripts/python_failure_module.d.ts +0 -2
  299. package/package/init_scripts/python_failure_module.js +0 -8
  300. package/package/init_scripts/python_init_code.d.ts +0 -2
  301. package/package/init_scripts/python_init_code.js +0 -40
  302. package/package/init_scripts/python_init_code_clear.d.ts +0 -2
  303. package/package/init_scripts/python_init_code_clear.js +0 -5
  304. package/package/init_scripts/python_init_code_trigger.d.ts +0 -2
  305. package/package/init_scripts/python_init_code_trigger.js +0 -14
@@ -1,13 +1,378 @@
1
- <script>import { Drawer, DrawerContent } from './common';
1
+ <script>import { onMount } from 'svelte';
2
+ import { Drawer, DrawerContent, Button } from './common';
2
3
  import QueueMetricsDrawerInner from './QueueMetricsDrawerInner.svelte';
4
+ import { ConfigService } from '../gen';
5
+ import Section from './Section.svelte';
6
+ import { sendUserToast } from '../toast';
7
+ import { Pencil, Trash, Check, PlusCircle, SaveIcon } from 'lucide-svelte';
8
+ import Tooltip from './Tooltip.svelte';
9
+ import { enterpriseLicense } from '../stores';
3
10
  let drawer;
4
11
  export function openDrawer() {
5
12
  drawer?.openDrawer();
6
13
  }
14
+ let alerts = [];
15
+ let configName = 'alert__job_queue_waiting';
16
+ let originalAlerts = [];
17
+ let newTag = '';
18
+ let editingIndex = -1;
19
+ let changesMade = false;
20
+ let removedAlerts = [];
21
+ let stagedNewAlert = false;
22
+ let workerTags = [];
23
+ let filteredTags = [];
24
+ $: removedAlerts;
25
+ onMount(async () => {
26
+ await fetchConfig();
27
+ workerTags = await fetchWorkerTags();
28
+ });
29
+ async function fetchConfig() {
30
+ try {
31
+ const response = (await ConfigService.getConfig({ name: configName }));
32
+ alerts = response.alerts || [];
33
+ originalAlerts = JSON.parse(JSON.stringify(alerts));
34
+ }
35
+ catch (error) {
36
+ console.error('Failed to fetch config:', error);
37
+ }
38
+ }
39
+ async function fetchWorkerTags() {
40
+ try {
41
+ const response = await ConfigService.listConfigs();
42
+ const workerTagsSet = new Set();
43
+ response.forEach((config) => {
44
+ if (config.name.startsWith('worker__') && Array.isArray(config.config?.worker_tags)) {
45
+ config?.config?.worker_tags.forEach((tag) => workerTagsSet.add(tag));
46
+ }
47
+ });
48
+ return Array.from(workerTagsSet);
49
+ }
50
+ catch (error) {
51
+ console.error('Failed to fetch worker tags:', error);
52
+ return [];
53
+ }
54
+ }
55
+ function startEditing(index) {
56
+ editingIndex = index;
57
+ updateWorkerTags();
58
+ }
59
+ function saveAlert(index) {
60
+ const newAlert = alerts[index];
61
+ if (newAlert.tags_to_monitor.length === 0) {
62
+ sendUserToast('Please add at least one tag before saving.', true);
63
+ return;
64
+ }
65
+ if (newAlert.jobs_num_threshold <= 0 ||
66
+ newAlert.alert_cooldown_seconds <= 0 ||
67
+ newAlert.alert_time_threshold_seconds <= 0) {
68
+ sendUserToast('All numeric values must be strictly positive.', true);
69
+ return;
70
+ }
71
+ const alertExists = originalAlerts.some((alert) => originalAlerts.indexOf(alert) !== index &&
72
+ JSON.stringify(alert.tags_to_monitor.sort()) ===
73
+ JSON.stringify(newAlert.tags_to_monitor.sort()));
74
+ if (alertExists) {
75
+ sendUserToast('An identical alert already exists.', true);
76
+ return;
77
+ }
78
+ editingIndex = -1;
79
+ changesMade = JSON.stringify(alerts) !== JSON.stringify(originalAlerts);
80
+ stagedNewAlert = false;
81
+ }
82
+ function stageDeleteAlert(index) {
83
+ const alert = alerts[index];
84
+ removedAlerts = [...removedAlerts, alert];
85
+ changesMade =
86
+ removedAlerts.length > 0 || JSON.stringify(alerts) !== JSON.stringify(originalAlerts);
87
+ }
88
+ function filterTags(event) {
89
+ const input = event.target.value;
90
+ filteredTags = workerTags.filter((tag) => tag.toLowerCase().includes(input.toLowerCase()));
91
+ }
92
+ function addTag(alertIndex, tag) {
93
+ if (workerTags.includes(tag) && !alerts[alertIndex].tags_to_monitor.includes(tag)) {
94
+ alerts[alertIndex].tags_to_monitor = [...alerts[alertIndex].tags_to_monitor, tag];
95
+ }
96
+ newTag = '';
97
+ filteredTags = [];
98
+ }
99
+ function removeTag(alertIndex, tag) {
100
+ alerts[alertIndex].tags_to_monitor = alerts[alertIndex].tags_to_monitor.filter((t) => t !== tag);
101
+ }
102
+ async function applyConfig() {
103
+ if (stagedNewAlert) {
104
+ sendUserToast('New alert staged. Please save or cancel the changes before applying.', true);
105
+ return;
106
+ }
107
+ try {
108
+ await ConfigService.updateConfig({ name: configName, requestBody: { alerts } });
109
+ sendUserToast('Configuration updated successfully');
110
+ alerts = alerts.filter((alert) => !removedAlerts.includes(alert));
111
+ originalAlerts = JSON.parse(JSON.stringify(alerts));
112
+ removedAlerts = [];
113
+ changesMade = false;
114
+ stagedNewAlert = false;
115
+ }
116
+ catch (error) {
117
+ console.error('Failed to update config:', error);
118
+ }
119
+ }
120
+ async function cancelChanges() {
121
+ alerts = [...alerts, ...removedAlerts];
122
+ alerts = JSON.parse(JSON.stringify(originalAlerts));
123
+ removedAlerts = [];
124
+ editingIndex = -1;
125
+ changesMade = false;
126
+ stagedNewAlert = false;
127
+ }
128
+ function addNewAlert() {
129
+ // alert already being added
130
+ if (stagedNewAlert) {
131
+ return;
132
+ }
133
+ const newAlert = {
134
+ name: 'New Alert',
135
+ tags_to_monitor: [],
136
+ jobs_num_threshold: 3,
137
+ alert_cooldown_seconds: 600,
138
+ alert_time_threshold_seconds: 30
139
+ };
140
+ alerts = [...alerts, newAlert];
141
+ editingIndex = alerts.length - 1;
142
+ stagedNewAlert = true;
143
+ updateWorkerTags();
144
+ }
145
+ async function updateWorkerTags() {
146
+ workerTags = await fetchWorkerTags();
147
+ }
148
+ function addAllTags(alertIndex) {
149
+ alerts[alertIndex].tags_to_monitor = [
150
+ ...new Set([...alerts[alertIndex].tags_to_monitor, ...workerTags])
151
+ ];
152
+ alerts = alerts; // Trigger reactivity
153
+ }
7
154
  </script>
8
155
 
9
- <Drawer bind:this={drawer}>
156
+ <Drawer bind:this={drawer} size="800px">
10
157
  <DrawerContent title="Queue Metrics" on:close={drawer.closeDrawer}>
11
- <QueueMetricsDrawerInner />
158
+ <Section
159
+ label="Queue Alert Settings"
160
+ collapsable={true}
161
+ tooltip="Manage queue alerts for monitoring queue metrics. These alerts will trigger a critical alert notification if the queue metrics are met."
162
+ eeOnly={true}
163
+ >
164
+ {#if $enterpriseLicense}
165
+ {#if changesMade}
166
+ <div class="text-red-600 text-xs whitespace-nowrap pb-2">Non applied changes</div>
167
+ <div class="flex gap-2 pb-2">
168
+ <Button color="blue" size="xs" on:click={applyConfig}>
169
+ <SaveIcon size={16} /> Apply Config
170
+ </Button>
171
+ <Button color="light" size="xs" on:click={cancelChanges}>Cancel</Button>
172
+ </div>
173
+ {/if}
174
+
175
+ {#if alerts.length > 0}
176
+ <div>
177
+ <form on:submit|preventDefault>
178
+ <table class="w-full border-collapse mb-2 text-xs table-auto">
179
+ <thead class="bg-gray-200 text-left text-xs">
180
+ <tr>
181
+ <th class="p-2 min-w-[120px]">
182
+ Name
183
+ <Tooltip
184
+ markdownTooltip="The name of the alert. This will be used in the crticial alert notification and help identify the alert."
185
+ />
186
+ </th>
187
+ <th class="p-2 w-full">
188
+ Queue Tags to Monitor
189
+ <Tooltip markdownTooltip="Queue tags to monitor for this alert." />
190
+ </th>
191
+ <th class="p-2 min-w-[65px]">
192
+ Jobs
193
+ <Tooltip
194
+ markdownTooltip="Number of jobs threshold. An alert will be triggerd if more than this number of jobs are in the queue for at least the time threshold."
195
+ />
196
+ </th>
197
+ <th class="p-2 min-w-[115px]">
198
+ Cooldown (s)
199
+ <Tooltip
200
+ markdownTooltip="Cooldown period in seconds. The cooldown period is the time after an alert is triggered that no new alerts will be triggered."
201
+ />
202
+ </th>
203
+ <th class="p-2 min-w-[105px]">
204
+ Time (s)
205
+ <Tooltip
206
+ markdownTooltip="Time threshold in seconds. An alert will be triggered if more than 'n jobs threshold' have been in the queue for at least this amount of time."
207
+ />
208
+ </th>
209
+ <th class="p-2 min-w-[100px]"> Actions </th>
210
+ </tr>
211
+ </thead>
212
+ <tbody>
213
+ {#each alerts as alert, index}
214
+ <tr
215
+ class:staged-for-deletion={removedAlerts.includes(alert)}
216
+ class:non-interactable={removedAlerts.includes(alert)}
217
+ >
218
+ <td class="border p-2">
219
+ {#if editingIndex === index}
220
+ <input type="text" bind:value={alert.name} class="w-full p-1" />
221
+ {:else}
222
+ {alert.name}
223
+ {/if}
224
+ </td>
225
+ <td class="border p-2">
226
+ {#if editingIndex === index}
227
+ <div class="flex flex-wrap gap-1 mb-2">
228
+ {#each alert.tags_to_monitor as tag}
229
+ <span class="inline-block bg-blue-100 rounded px-2 py-1 text-xs">
230
+ {tag}
231
+ <button
232
+ on:click={() => removeTag(index, tag)}
233
+ aria-label="Remove Tag"
234
+ class="ml-1 text-black text-xs">x</button
235
+ >
236
+ </span>
237
+ {/each}
238
+ </div>
239
+ <div class="flex items-center">
240
+ <input
241
+ type="text"
242
+ bind:value={newTag}
243
+ placeholder="Add tag"
244
+ on:input={(e) => filterTags(e)}
245
+ class="p-1 flex-grow mr-1"
246
+ />
247
+ <button on:click={() => addTag(index, newTag)} aria-label="Add Tag">
248
+ <PlusCircle size={16} />
249
+ </button>
250
+ </div>
251
+ <!-- Add the new "Add All Tags" button here -->
252
+ <button
253
+ on:click={() => addAllTags(index)}
254
+ class="text-xs hover:bg-gray-200 rounded px-2 py-1 mt-1"
255
+ >
256
+ Add All Tags
257
+ </button>
258
+ {#if filteredTags.length > 0}
259
+ <ul class="autocomplete-list">
260
+ {#each filteredTags as tag}
261
+ <li>
262
+ <button type="button" on:click={() => addTag(index, tag)}
263
+ >{tag}</button
264
+ >
265
+ </li>
266
+ {/each}
267
+ </ul>
268
+ {/if}
269
+ {:else}
270
+ <div class="flex flex-wrap gap-1">
271
+ {#each alert.tags_to_monitor as tag}
272
+ <span class="inline-block bg-blue-100 rounded px-2 py-1 text-xs"
273
+ >{tag}</span
274
+ >
275
+ {/each}
276
+ </div>
277
+ {/if}
278
+ </td>
279
+ <td class="border p-2">
280
+ {#if editingIndex === index}
281
+ <input
282
+ type="number"
283
+ bind:value={alert.jobs_num_threshold}
284
+ class="w-full p-1"
285
+ />
286
+ {:else}
287
+ {alert.jobs_num_threshold}
288
+ {/if}
289
+ </td>
290
+ <td class="border p-2">
291
+ {#if editingIndex === index}
292
+ <input
293
+ type="number"
294
+ bind:value={alert.alert_cooldown_seconds}
295
+ class="w-full p-1"
296
+ />
297
+ {:else}
298
+ {alert.alert_cooldown_seconds}
299
+ {/if}
300
+ </td>
301
+ <td class="border p-2">
302
+ {#if editingIndex === index}
303
+ <input
304
+ type="number"
305
+ bind:value={alert.alert_time_threshold_seconds}
306
+ class="w-full p-1"
307
+ />
308
+ {:else}
309
+ {alert.alert_time_threshold_seconds}
310
+ {/if}
311
+ </td>
312
+ <td class="border p-2">
313
+ <div class="flex gap-3 justify-center items-center">
314
+ {#if editingIndex === index}
315
+ <button on:click={() => saveAlert(index)} aria-label="Save">
316
+ <Check size={16} />
317
+ </button>
318
+ {:else}
319
+ <button on:click={() => startEditing(index)} aria-label="Edit">
320
+ <Pencil size={16} />
321
+ </button>
322
+ <button on:click={() => stageDeleteAlert(index)} aria-label="Delete">
323
+ <Trash size={16} />
324
+ </button>
325
+ {/if}
326
+ </div>
327
+ </td>
328
+ </tr>
329
+ {/each}
330
+ </tbody>
331
+ </table>
332
+ </form>
333
+ </div>
334
+ {/if}
335
+
336
+ <!-- Button to Add New Alert at the Bottom of the Table -->
337
+ <div class="flex">
338
+ <Button color="blue" size="xs" on:click={addNewAlert}>
339
+ <PlusCircle size={16} />
340
+ Add New Alert
341
+ </Button>
342
+ </div>
343
+ {:else}
344
+ <p class="text-gray-600 text-sm">
345
+ Queue Metric Alerts are an enterprise feature allowing you to monitor queues for waiting jobs. Please upgrade to access this functionality.
346
+ <a href="https://www.windmill.dev/docs/misc/plans_details" target="_blank" class="text-blue-500 underline">Learn more about our plans.</a>
347
+ </p>
348
+ {/if}
349
+ </Section>
350
+ <div class="p-8">
351
+ <QueueMetricsDrawerInner />
352
+ </div>
12
353
  </DrawerContent>
13
354
  </Drawer>
355
+
356
+ <style>
357
+ .staged-for-deletion {
358
+ background-color: #f8d7da; /* Light red background for staged deletion */
359
+ }
360
+ .non-interactable {
361
+ pointer-events: none; /* Disable pointer events */
362
+ opacity: 0.5; /* Reduce opacity */
363
+ }
364
+ .autocomplete-list {
365
+ border: 1px solid #ccc;
366
+ max-height: 150px;
367
+ overflow-y: auto;
368
+ background-color: white;
369
+ position: absolute;
370
+ z-index: 1000;
371
+ }
372
+ .autocomplete-list li {
373
+ padding: 8px;
374
+ cursor: pointer;
375
+ }
376
+ .autocomplete-list li:hover {
377
+ background-color: #f0f0f0;
378
+ }</style>
@@ -4,6 +4,8 @@ declare const __propDef: {
4
4
  openDrawer?: (() => void) | undefined;
5
5
  };
6
6
  events: {
7
+ submit: SubmitEvent;
8
+ } & {
7
9
  [evt: string]: CustomEvent<any>;
8
10
  };
9
11
  slots: {};
@@ -73,7 +73,7 @@ export async function editResource() {
73
73
  dispatch('refresh', path);
74
74
  }
75
75
  else {
76
- throw Error('Cannot edit undefined resourceToEdit');
76
+ throw Error('Cannot edit undefined resource');
77
77
  }
78
78
  }
79
79
  export async function createResource() {
@@ -95,6 +95,9 @@ async function loadResourceType() {
95
95
  if (resourceType.schema) {
96
96
  resourceSchema = resourceType.schema;
97
97
  }
98
+ if (resourceTypeInfo?.format_extension) {
99
+ textFileContent = args.content;
100
+ }
98
101
  }
99
102
  catch (err) {
100
103
  resourceSchema = undefined;
@@ -121,6 +124,8 @@ function updateArgsFromLinkedVars() {
121
124
  args[k] = `$var:${path}`;
122
125
  });
123
126
  }
127
+ let textFileContent = '';
128
+ $: textFileContent && parseTextFileContent();
124
129
  function switchTab(asJson) {
125
130
  viewJsonSchema = asJson;
126
131
  if (asJson) {
@@ -128,8 +133,16 @@ function switchTab(asJson) {
128
133
  }
129
134
  else {
130
135
  parseJson();
136
+ if (resourceTypeInfo?.format_extension) {
137
+ textFileContent = args.content;
138
+ }
131
139
  }
132
140
  }
141
+ function parseTextFileContent() {
142
+ args = {
143
+ content: textFileContent
144
+ };
145
+ }
133
146
  </script>
134
147
 
135
148
  <div>
@@ -200,15 +213,30 @@ function switchTab(asJson) {
200
213
  {#if loadingSchema}
201
214
  <Skeleton layout={[[4]]} />
202
215
  {:else if !viewJsonSchema && resourceSchema && resourceSchema?.properties}
203
- <SchemaForm
204
- onlyMaskPassword
205
- noDelete
206
- disabled={!can_write}
207
- compact
208
- schema={resourceSchema}
209
- bind:args
210
- bind:isValid
211
- />
216
+ {#if resourceTypeInfo?.format_extension}
217
+ <h5 class="mt-4 inline-flex items-center gap-4 pb-2">
218
+ File content ({resourceTypeInfo.format_extension})
219
+ </h5>
220
+ <div class="h-full w-full border p-1 rounded">
221
+ <SimpleEditor
222
+ autoHeight
223
+ class="editor"
224
+ lang={resourceTypeInfo.format_extension}
225
+ bind:code={textFileContent}
226
+ fixedOverflowWidgets={false}
227
+ />
228
+ </div>
229
+ {:else}
230
+ <SchemaForm
231
+ onlyMaskPassword
232
+ noDelete
233
+ disabled={!can_write}
234
+ compact
235
+ schema={resourceSchema}
236
+ bind:args
237
+ bind:isValid
238
+ />
239
+ {/if}
212
240
  {:else if !can_write}
213
241
  <input type="text" disabled value={rawCode} />
214
242
  {:else}
@@ -101,7 +101,7 @@ let darkMode = false;
101
101
  />
102
102
 
103
103
  <div class="flex flex-col w-full items-start">
104
- <div class="flex flex-row gap-x-1 w-full items-center">
104
+ <div class="flex flex-row w-full items-center">
105
105
  {#if collection?.length > 0}
106
106
  <Select
107
107
  {disabled}
@@ -113,9 +113,11 @@ let darkMode = false;
113
113
  valueSelect = e.detail
114
114
  }}
115
115
  on:clear={() => {
116
+ initialValue = undefined
116
117
  value = undefined
117
118
  valueType = undefined
118
119
  valueSelect = undefined
120
+ dispatch('clear')
119
121
  }}
120
122
  items={collection}
121
123
  class="text-clip grow min-w-0"
@@ -128,14 +130,15 @@ let darkMode = false;
128
130
  {:else if !loading}
129
131
  <div class="text-2xs text-tertiary mr-2">0 found</div>
130
132
  {/if}
131
-
132
133
  {#if !loading}
134
+ <div class="mx-0.5" />
133
135
  {#if value && value != ''}
134
136
  <Button
135
137
  {disabled}
136
138
  color="light"
137
- variant="border"
138
- size="xs"
139
+ variant="contained"
140
+ size="sm"
141
+ btnClasses="w-8 px-0.5 py-1.5"
139
142
  on:click={() => resourceEditor?.initEdit?.(value ?? '')}
140
143
  startIcon={{ icon: Pen }}
141
144
  iconOnly
@@ -147,8 +150,9 @@ let darkMode = false;
147
150
  <Button
148
151
  {disabled}
149
152
  color="light"
150
- variant="border"
151
- size="xs"
153
+ variant="contained"
154
+ size="sm"
155
+ btnClasses="w-8 px-0.5 py-1.5"
152
156
  on:click={() => appConnect?.open?.(rt)}
153
157
  startIcon={{ icon: Plus }}>{rt}</Button
154
158
  >
@@ -158,7 +162,7 @@ let darkMode = false;
158
162
  {disabled}
159
163
  color="light"
160
164
  variant="border"
161
- size="xs"
165
+ size="sm"
162
166
  on:click={() => appConnect?.open?.(resourceType, expressOAuthSetup)}
163
167
  startIcon={{ icon: Plus }}
164
168
  iconOnly={collection?.length > 0}
@@ -170,9 +174,10 @@ let darkMode = false;
170
174
  {/if}
171
175
 
172
176
  <Button
173
- variant="border"
177
+ variant="contained"
174
178
  color="light"
175
- size="xs"
179
+ btnClasses="w-8 px-0.5 py-1.5"
180
+ size="sm"
176
181
  on:click={() => {
177
182
  loadResources(resourceType)
178
183
  }}
@@ -13,6 +13,7 @@ declare const __propDef: {
13
13
  askNewResource?: (() => Promise<void>) | undefined;
14
14
  };
15
15
  events: {
16
+ clear: CustomEvent<any>;
16
17
  change: CustomEvent<any>;
17
18
  } & {
18
19
  [evt: string]: CustomEvent<any>;
@@ -59,21 +59,24 @@ export async function runScriptByPath(path, args, callbacks) {
59
59
  return abstractRun(() => JobService.runScriptByPath({
60
60
  workspace: $workspaceStore,
61
61
  path: path,
62
- requestBody: args
62
+ requestBody: args,
63
+ skipPreprocessor: true
63
64
  }), callbacks);
64
65
  }
65
66
  export async function runScriptByHash(hash, args, callbacks) {
66
67
  return abstractRun(() => JobService.runScriptByHash({
67
68
  workspace: $workspaceStore,
68
69
  hash: hash,
69
- requestBody: args
70
+ requestBody: args,
71
+ skipPreprocessor: true
70
72
  }), callbacks);
71
73
  }
72
74
  export async function runFlowByPath(path, args, callbacks) {
73
75
  return abstractRun(() => JobService.runFlowByPath({
74
76
  workspace: $workspaceStore,
75
77
  path: path ?? '',
76
- requestBody: args
78
+ requestBody: args,
79
+ skipPreprocessor: true
77
80
  }), callbacks);
78
81
  }
79
82
  export async function runPreview(path, code, lang, args, tag, callbacks) {
@@ -81,7 +81,7 @@ export default class ResultJobLoader extends SvelteComponent<ResultJobLoaderProp
81
81
  cancel: () => void;
82
82
  error: (err: Error) => void;
83
83
  } | undefined) => Promise<string>;
84
- get runPreview(): (path: string | undefined, code: string, lang: "python3" | "deno" | "go" | "bash" | "powershell" | "postgresql" | "mysql" | "bigquery" | "snowflake" | "mssql" | "graphql" | "nativets" | "bun" | "php" | "rust", args: Record<string, any>, tag: string | undefined, callbacks?: {
84
+ get runPreview(): (path: string | undefined, code: string, lang: "python3" | "deno" | "go" | "bash" | "powershell" | "postgresql" | "mysql" | "bigquery" | "snowflake" | "mssql" | "graphql" | "nativets" | "bun" | "php" | "rust" | "ansible", args: Record<string, any>, tag: string | undefined, callbacks?: {
85
85
  done: (x: any) => void;
86
86
  cancel: () => void;
87
87
  error: (err: Error) => void;
@@ -71,7 +71,7 @@ function onArgsChange(args) {
71
71
  <div class="flex items-center gap-2">
72
72
  <span class="text-sm text-tertiary">
73
73
  {#if runnable}
74
- Edited <TimeAgo withDate agoOnlyIfRecent date={runnable.created_at || ''} /> by {runnable.created_by ||
74
+ Edited <TimeAgo agoOnlyIfRecent date={runnable.created_at || ''} /> by {runnable.created_by ||
75
75
  'unknown'}
76
76
  {/if}
77
77
  </span>
@@ -333,7 +333,7 @@ async function loadLargeArgs(id, input, allowLarge) {
333
333
  <div
334
334
  class="whitespace-nowrap col-span-3 !text-tertiary !text-2xs overflow-hidden text-ellipsis flex-shrink text-center"
335
335
  >
336
- <TimeAgo date={i.started_at ?? ''} />
336
+ <TimeAgo noDate date={i.started_at ?? ''} />
337
337
  </div>
338
338
  <div class="col-span-2">
339
339
  <a
@@ -394,7 +394,7 @@ async function loadLargeArgs(id, input, allowLarge) {
394
394
  <div
395
395
  class="whitespace-nowrap col-span-2 !text-tertiary !text-2xs overflow-hidden text-ellipsis flex-shrink text-center"
396
396
  >
397
- <TimeAgo date={i.created_at ?? ''} />
397
+ <TimeAgo noDate date={i.created_at ?? ''} />
398
398
  </div>
399
399
  <div class="col-span-1">
400
400
  <a
@@ -737,7 +737,7 @@ $: !showPauseUntil && (paused_until = undefined);
737
737
  bind:handlerPath={errorHandlerPath}
738
738
  customInitialScriptPath={errorHandlerCustomInitialPath}
739
739
  slackToggleText="Alert channel on error"
740
- customScriptTemplate="/scripts/add?hub=hub%2F2420%2Fwindmill%2Fschedule_error_handler_template"
740
+ customScriptTemplate="/scripts/add?hub=hub%2F9081%2Fwindmill%2Fschedule_error_handler_template"
741
741
  bind:customHandlerKind={errorHandleritemKind}
742
742
  bind:handlerExtraArgs={errorHandlerExtraArgs}
743
743
  >
@@ -830,7 +830,7 @@ $: !showPauseUntil && (paused_until = undefined);
830
830
  bind:handlerPath={recoveryHandlerPath}
831
831
  customInitialScriptPath={recoveryHandlerCustomInitialPath}
832
832
  slackToggleText="Alert channel when error recovered"
833
- customScriptTemplate="/scripts/add?hub=hub%2F2794%2Fwindmill%2Fschedule_recovery_handler_template"
833
+ customScriptTemplate="/scripts/add?hub=hub%2F9082%2Fwindmill%2Fschedule_recovery_handler_template"
834
834
  bind:customHandlerKind={recoveryHandlerItemKind}
835
835
  bind:handlerExtraArgs={recoveryHandlerExtraArgs}
836
836
  >
@@ -157,6 +157,9 @@ $: fields = items ?? keys.map((x) => ({ id: x, value: x }));
157
157
  extra={schema.properties[argName]}
158
158
  title={schema.properties[argName].title}
159
159
  placeholder={schema.properties[argName].placeholder}
160
+ disabled={disabledArgs.includes(argName) ||
161
+ disabled ||
162
+ schema.properties[argName].disabled}
160
163
  >
161
164
  <svelte:fragment slot="actions">
162
165
  <slot name="actions" />
@@ -213,7 +216,9 @@ $: fields = items ?? keys.map((x) => ({ id: x, value: x }));
213
216
  bind:order={schema.properties[argName].order}
214
217
  nestedRequired={schema.properties[argName]?.required}
215
218
  itemsType={schema.properties[argName].items}
216
- disabled={disabledArgs.includes(argName) || disabled}
219
+ disabled={disabledArgs.includes(argName) ||
220
+ disabled ||
221
+ schema.properties[argName].disabled}
217
222
  {compact}
218
223
  {variableEditor}
219
224
  {itemPicker}