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
@@ -70,6 +70,7 @@ export let shouldDispatchChanges = false;
70
70
  export let noDefaultOnSelectFirst = false;
71
71
  export let helperScript = undefined;
72
72
  export let otherArgs = {};
73
+ export let lightHeader = false;
73
74
  let oneOfSelected = undefined;
74
75
  async function updateOneOfSelected(oneOf) {
75
76
  if (oneOf &&
@@ -101,7 +102,6 @@ let s3FileUploadRawMode;
101
102
  let isListJson = false;
102
103
  let hasIsListJsonChanged = false;
103
104
  let el = undefined;
104
- let inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncoding);
105
105
  $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncoding);
106
106
  let rawValue = undefined;
107
107
  function computeDefaultValue(nvalue, inputCat, defaultValue, nnullable) {
@@ -168,12 +168,12 @@ $: !isListJson &&
168
168
  !hasIsListJsonChanged &&
169
169
  checkArrayValueType();
170
170
  $: defaultValue != undefined && handleDefaultValueChange();
171
- let oldDefaultValue = defaultValue;
171
+ let oldDefaultValue = structuredClone(defaultValue);
172
172
  function handleDefaultValueChange() {
173
- if (value == oldDefaultValue) {
173
+ if (deepEqual(value, oldDefaultValue)) {
174
174
  value = defaultValue;
175
175
  }
176
- oldDefaultValue = defaultValue;
176
+ oldDefaultValue = structuredClone(defaultValue);
177
177
  }
178
178
  function evalValueToRaw() {
179
179
  rawValue =
@@ -298,6 +298,7 @@ $: shouldDispatchChanges && debounced(value);
298
298
  {contentEncoding}
299
299
  {format}
300
300
  {simpleTooltip}
301
+ {lightHeader}
301
302
  />
302
303
  {/if}
303
304
 
@@ -450,7 +451,6 @@ $: shouldDispatchChanges && debounced(value);
450
451
  {onlyMaskPassword}
451
452
  {disablePortal}
452
453
  {disabled}
453
- noDelete
454
454
  schema={getSchemaFromProperties(itemsType?.properties)}
455
455
  bind:args={v}
456
456
  />
@@ -613,11 +613,11 @@ $: shouldDispatchChanges && debounced(value);
613
613
  <div class="flex flex-col gap-2 w-full">
614
614
  {#if oneOf && oneOf.length >= 2}
615
615
  <ToggleButtonGroup
616
+ bind:selected={oneOfSelected}
616
617
  on:selected={() => {
617
- value = {}
618
+ value = { label: oneOfSelected }
618
619
  redraw += 1
619
620
  }}
620
- bind:selected={oneOfSelected}
621
621
  >
622
622
  {#each oneOf as obj}
623
623
  <ToggleButton value={obj.title} label={obj.title} />
@@ -635,10 +635,8 @@ $: shouldDispatchChanges && debounced(value);
635
635
  {disablePortal}
636
636
  {disabled}
637
637
  schema={{
638
- properties: Object.fromEntries(
639
- Object.entries(obj.properties).filter(([k, v]) => k !== 'label')
640
- ),
641
- order: obj.order?.filter((k) => k !== 'label') ?? undefined,
638
+ properties: obj.properties,
639
+ order: obj.order,
642
640
  $schema: '',
643
641
  required: obj.required ?? [],
644
642
  type: 'object'
@@ -658,12 +656,10 @@ $: shouldDispatchChanges && debounced(value);
658
656
  {onlyMaskPassword}
659
657
  {disablePortal}
660
658
  {disabled}
661
- noDelete
659
+ schemaSkippedValues={['label']}
662
660
  schema={{
663
- properties: Object.fromEntries(
664
- Object.entries(obj.properties).filter(([k, v]) => k !== 'label')
665
- ),
666
- order: obj.order?.filter((k) => k !== 'label') ?? undefined,
661
+ properties: obj.properties,
662
+ order: obj.order,
667
663
  $schema: '',
668
664
  required: obj.required ?? [],
669
665
  type: 'object'
@@ -68,6 +68,7 @@ declare const __propDef: {
68
68
  hash: string;
69
69
  } | undefined;
70
70
  otherArgs?: Record<string, any> | undefined;
71
+ lightHeader?: boolean | undefined;
71
72
  focus?: (() => void) | undefined;
72
73
  };
73
74
  events: {
@@ -4,14 +4,16 @@ import Tooltip from './Tooltip.svelte';
4
4
  import AssignableTagsInner from './AssignableTagsInner.svelte';
5
5
  export let placement = 'bottom-end';
6
6
  export let color = 'dark';
7
+ export let disabled = false;
7
8
  </script>
8
9
 
9
10
  <Popup
10
11
  floatingConfig={{ strategy: 'absolute', placement: placement }}
11
12
  containerClasses="border rounded-lg shadow-lg p-4 bg-surface"
13
+ {disabled}
12
14
  >
13
15
  <svelte:fragment slot="button">
14
- <Button {color} size="xs" nonCaptureEvent={true}>
16
+ <Button {color} size="xs" nonCaptureEvent={true} {disabled}>
15
17
  <div class="flex flex-row gap-1 items-center"
16
18
  ><Pen size={14} /> Custom tags&nbsp;<Tooltip light
17
19
  >Tags are assigned to scripts and flows. Workers only accept jobs that correspond to their
@@ -3,6 +3,7 @@ declare const __propDef: {
3
3
  props: {
4
4
  placement?: "top-end" | "bottom-end" | undefined;
5
5
  color?: "dark" | "nord" | undefined;
6
+ disabled?: boolean | undefined;
6
7
  };
7
8
  events: {
8
9
  refresh: CustomEvent<any>;
@@ -0,0 +1,248 @@
1
+ <script>import { enterpriseLicense } from '../stores';
2
+ import { Alert, Button, Tab, Tabs } from './common';
3
+ import OAuthSetting from './OAuthSetting.svelte';
4
+ import OktaSetting from './OktaSetting.svelte';
5
+ import CloseButton from './common/CloseButton.svelte';
6
+ import KeycloakSetting from './KeycloakSetting.svelte';
7
+ import CustomSso from './CustomSso.svelte';
8
+ import AuthentikSetting from './AuthentikSetting.svelte';
9
+ import AutheliaSetting from './AutheliaSetting.svelte';
10
+ import KanidmSetting from './KanidmSetting.svelte';
11
+ import ZitadelSetting from './ZitadelSetting.svelte';
12
+ import CustomOauth from './CustomOauth.svelte';
13
+ import { capitalize } from '../utils';
14
+ import Toggle from './Toggle.svelte';
15
+ import { ExternalLink, Plus } from 'lucide-svelte';
16
+ export let snowflakeAccountIdentifier = '';
17
+ export let oauths = {};
18
+ const windmillBuiltins = [
19
+ 'github',
20
+ 'gitlab',
21
+ 'bitbucket',
22
+ 'slack',
23
+ 'gsheets',
24
+ 'gdrive',
25
+ 'gmail',
26
+ 'gcal',
27
+ 'gforms',
28
+ 'gcloud',
29
+ 'gworkspace',
30
+ 'basecamp',
31
+ 'linkedin',
32
+ 'quickbooks',
33
+ 'visma',
34
+ 'spotify',
35
+ 'snowflake_oauth',
36
+ 'xero'
37
+ ];
38
+ let oauth_name = undefined;
39
+ let clientName = '';
40
+ let resourceName = '';
41
+ let tab = 'sso';
42
+ let requirePreexistingUserForOauth = false;
43
+ </script>
44
+
45
+ <div>
46
+ <Tabs bind:selected={tab} class="mt-2 mb-4">
47
+ <Tab value="sso">SSO</Tab>
48
+ <Tab value="oauth">OAuth</Tab>
49
+ <Tab value="scim">SCIM/SAML</Tab>
50
+ </Tabs>
51
+ </div>
52
+
53
+ <div class="mb-6">
54
+ {#if tab === 'sso'}
55
+ {#if !$enterpriseLicense || $enterpriseLicense.endsWith('_pro')}
56
+ <Alert type="warning" title="Limited to 10 SSO users">
57
+ Without EE, the number of SSO users is limited to 10. SCIM/SAML is available on EE
58
+ </Alert>
59
+ {/if}
60
+
61
+ <div class="py-1" />
62
+ <div class="mb-2">
63
+ <span class="text-primary text-sm"
64
+ >When at least one of the below options is set, users will be able to login to Windmill via
65
+ their third-party account.
66
+ <br /> To test SSO, the recommended workflow is to to save the settings and try to login in
67
+ an incognito window.
68
+ <a target="_blank" href="https://www.windmill.dev/docs/misc/setup_oauth#sso">Learn more</a
69
+ ></span
70
+ >
71
+ </div>
72
+ <div class="flex flex-col gap-3 py-4">
73
+ <OAuthSetting name="google" bind:value={oauths['google']} />
74
+ <OAuthSetting name="microsoft" bind:value={oauths['microsoft']} />
75
+ <OktaSetting bind:value={oauths['okta']} />
76
+ <OAuthSetting name="github" bind:value={oauths['github']} />
77
+ <OAuthSetting name="gitlab" bind:value={oauths['gitlab']} />
78
+ <OAuthSetting name="jumpcloud" bind:value={oauths['jumpcloud']} />
79
+ <KeycloakSetting bind:value={oauths['keycloak']} />
80
+ <AuthentikSetting bind:value={oauths['authentik']} />
81
+ <AutheliaSetting bind:value={oauths['authelia']} />
82
+ <KanidmSetting bind:value={oauths['kanidm']} />
83
+ <ZitadelSetting bind:value={oauths['zitadel']} />
84
+ {#each Object.keys(oauths) as k}
85
+ {#if !['authelia', 'authentik', 'google', 'microsoft', 'github', 'gitlab', 'jumpcloud', 'okta', 'keycloak', 'slack', 'kanidm', 'zitadel'].includes(k) && 'login_config' in oauths[k]}
86
+ {#if oauths[k]}
87
+ <div class="flex flex-col gap-2 pb-4">
88
+ <div class="flex flex-row items-center gap-2">
89
+ <!-- svelte-ignore a11y-label-has-associated-control -->
90
+ <label class="text-md font-medium text-primary">{k}</label>
91
+ <CloseButton
92
+ on:close={() => {
93
+ delete oauths[k]
94
+ oauths = { ...oauths }
95
+ }}
96
+ />
97
+ </div>
98
+ <div class="p-2 border rounded">
99
+ <label class="block pb-2">
100
+ <span class="text-primary font-semibold text-sm">Custom Name</span>
101
+ <input
102
+ type="text"
103
+ placeholder="Custom Name"
104
+ bind:value={oauths[k]['display_name']}
105
+ />
106
+ </label>
107
+ <label class="block pb-2">
108
+ <span class="text-primary font-semibold text-sm">Client Id</span>
109
+ <input type="text" placeholder="Client Id" bind:value={oauths[k]['id']} />
110
+ </label>
111
+ <label class="block pb-2">
112
+ <span class="text-primary font-semibold text-sm">Client Secret</span>
113
+ <input type="text" placeholder="Client Secret" bind:value={oauths[k]['secret']} />
114
+ </label>
115
+ {#if !windmillBuiltins.includes(k) && k != 'slack'}
116
+ <CustomSso bind:login_config={oauths[k]['login_config']} />
117
+ {/if}
118
+ </div>
119
+ </div>
120
+ {/if}
121
+ {/if}
122
+ {/each}
123
+ </div>
124
+ <div class="flex gap-2 py-4">
125
+ <input type="text" placeholder="client_id" bind:value={clientName} />
126
+ <Button
127
+ variant="border"
128
+ color="blue"
129
+ hover="yo"
130
+ size="sm"
131
+ endIcon={{ icon: Plus }}
132
+ disabled={clientName == ''}
133
+ on:click={() => {
134
+ oauths[clientName] = { id: '', secret: '', login_config: {} }
135
+ clientName = ''
136
+ }}
137
+ >
138
+ Add custom SSO client {!$enterpriseLicense ? '(requires ee)' : ''}
139
+ </Button>
140
+ </div>
141
+ <div class="flex gap-2 py-4">
142
+ <Toggle
143
+ options={{
144
+ right: 'Require users to have been added manually to Windmill to sign in through OAuth'
145
+ }}
146
+ bind:checked={requirePreexistingUserForOauth}
147
+ />
148
+ </div>
149
+ {:else if tab === 'oauth'}
150
+ <div class="mb-2">
151
+ <span class="text-primary text-sm"
152
+ >When one of the below options is set, you will be able to create a specific resource
153
+ containing a token automatically generated by the third-party provider.
154
+ <br />
155
+ To test it after setting an oauth client, go to the Resources menu and create a new one of the
156
+ type of your oauth client (i.e. a 'github' resource if you set Github OAuth).
157
+ <br /><a target="_blank" href="https://www.windmill.dev/docs/misc/setup_oauth#oauth"
158
+ >Learn more</a
159
+ ></span
160
+ >
161
+ </div>
162
+ <div class="py-1" />
163
+ <OAuthSetting login={false} name="slack" bind:value={oauths['slack']} />
164
+ <div class="py-1" />
165
+
166
+ {#each Object.keys(oauths) as k}
167
+ {#if oauths[k] && !('login_config' in oauths[k])}
168
+ {#if !['slack'].includes(k) && oauths[k]}
169
+ <div class="flex flex-col gap-2 pb-4">
170
+ <div class="flex flex-row items-center gap-2">
171
+ <!-- svelte-ignore a11y-label-has-associated-control -->
172
+ <label class="text-md font-medium text-primary">{k}</label>
173
+ <CloseButton
174
+ on:close={() => {
175
+ delete oauths[k]
176
+ oauths = { ...oauths }
177
+ }}
178
+ />
179
+ </div>
180
+ <div class="p-2 border rounded">
181
+ <label class="block pb-2">
182
+ <span class="text-primary font-semibold text-sm">Client Id</span>
183
+ <input type="text" placeholder="Client Id" bind:value={oauths[k]['id']} />
184
+ </label>
185
+ <label class="block pb-2">
186
+ <span class="text-primary font-semibold text-sm">Client Secret</span>
187
+ <input type="text" placeholder="Client Secret" bind:value={oauths[k]['secret']} />
188
+ </label>
189
+ {#if !windmillBuiltins.includes(k) && k != 'slack'}
190
+ <CustomOauth bind:connect_config={oauths[k]['connect_config']} />
191
+ {/if}
192
+ {#if k == 'snowflake_oauth'}
193
+ <label class="block pb-2">
194
+ <span class="text-primary font-semibold text-sm flex gap-2 items-center"
195
+ ><a
196
+ href="https://docs.snowflake.com/en/user-guide/admin-account-identifier#using-an-account-name-as-an-identifier"
197
+ target="_blank">Snowflake Account Identifier</a
198
+ ><ExternalLink size={12} /></span
199
+ >
200
+ <input
201
+ type="text"
202
+ placeholder="<orgname>-<account_name>"
203
+ required={true}
204
+ bind:value={snowflakeAccountIdentifier}
205
+ />
206
+ </label>
207
+ {/if}
208
+ </div>
209
+ </div>
210
+ {/if}
211
+ {/if}
212
+ {/each}
213
+
214
+ <div class="flex gap-2">
215
+ <select name="oauth_name" id="oauth_name" bind:value={oauth_name}>
216
+ <option value={undefined}>Select an OAuth client</option>
217
+ <option value="custom">Fully Custom (requires ee)</option>
218
+ {#each windmillBuiltins as name}
219
+ <option value={name}>{capitalize(name)}</option>
220
+ {/each}
221
+ </select>
222
+ {#if oauth_name == 'custom'}
223
+ <input type="text" placeholder="client_id" bind:value={resourceName} />
224
+ {:else}
225
+ <input type="text" value={oauth_name ?? ''} disabled />
226
+ {/if}
227
+ <Button
228
+ variant="border"
229
+ color="blue"
230
+ hover="yo"
231
+ size="sm"
232
+ endIcon={{ icon: Plus }}
233
+ disabled={!oauth_name ||
234
+ (oauth_name == 'custom' && resourceName == '') ||
235
+ (oauth_name == 'custom' && !$enterpriseLicense)}
236
+ on:click={() => {
237
+ let name = oauth_name == 'custom' ? resourceName : oauth_name
238
+ oauths[name ?? ''] = { id: '', secret: '' }
239
+ resourceName = ''
240
+ }}
241
+ >
242
+ Add OAuth client {oauth_name == 'custom' && !$enterpriseLicense ? '(requires ee)' : ''}
243
+ </Button>
244
+ </div>
245
+ {:else if tab == 'scim'}
246
+ <slot name="scim" />
247
+ {/if}
248
+ </div>
@@ -0,0 +1,19 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ snowflakeAccountIdentifier?: string | undefined;
5
+ oauths?: Record<string, any> | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {
11
+ scim: {};
12
+ };
13
+ };
14
+ export type AuthSettingsProps = typeof __propDef.props;
15
+ export type AuthSettingsEvents = typeof __propDef.events;
16
+ export type AuthSettingsSlots = typeof __propDef.slots;
17
+ export default class AuthSettings extends SvelteComponent<AuthSettingsProps, AuthSettingsEvents, AuthSettingsSlots> {
18
+ }
19
+ export {};
@@ -270,7 +270,7 @@ let test_input = 3;
270
270
  <ToggleButton
271
271
  value="script"
272
272
  size="sm"
273
- label="Custom Script"
273
+ label="Custom script"
274
274
  tooltip="Run a custom script to scale your worker group"
275
275
  />
276
276
  <ToggleButton position="center" disabled value="ecs" size="sm" label="ECS (soon)" />
@@ -345,7 +345,7 @@ let test_input = 3;
345
345
  {:else}
346
346
  <ToggleButtonGroup selected={'script'} disabled class="mb-4 mt-2">
347
347
  <ToggleButton value="dryrun" size="sm" label="Dry run" />
348
- <ToggleButton value="script" size="sm" label="Custom Script" />
348
+ <ToggleButton value="script" size="sm" label="Custom script" />
349
349
  <ToggleButton position="center" value="ecs" size="sm" label="ECS (soon)" />
350
350
  <ToggleButton position="right" value="nomad" size="sm" label="Nomad (soon)" />
351
351
  <ToggleButton position="right" value="kubernetes" size="sm" label="Kubernetes (soon)" />
@@ -244,7 +244,7 @@ const items = Object.keys(timezones)
244
244
  </Label>
245
245
 
246
246
  {#if !disabled}
247
- <div class="flex flex-row gap-2">
247
+ <div class="flex flex-row gap-2 mb-2">
248
248
  <CronBuilder let:close>
249
249
  <div class="w-full flex flex-col">
250
250
  <div class="w-full flex flex-col gap-1">
@@ -382,7 +382,7 @@ const items = Object.keys(timezones)
382
382
  close(null)
383
383
  }}
384
384
  >
385
- Set Cron Schedule
385
+ Set cron schedule
386
386
  </Button>
387
387
  </div>
388
388
  </CronBuilder>
@@ -602,7 +602,7 @@ async function showDiff(kind, path) {
602
602
 
603
603
  {#if !hideButton}
604
604
  <div class="mt-16 flex flex-row-reverse max-w-3xl"
605
- ><Button on:click={deployAll}>Deploy All Toggled</Button></div
605
+ ><Button on:click={deployAll}>Deploy all toggled</Button></div
606
606
  >
607
607
  {/if}
608
608
  {:else}
@@ -0,0 +1,9 @@
1
+ <script>export let link = undefined;
2
+ </script>
3
+
4
+ <div class="text-xs text-tertiary font-normal">
5
+ <slot />
6
+ {#if link}
7
+ <a href={link} target="_blank">Learn more</a>
8
+ {/if}
9
+ </div>
@@ -0,0 +1,18 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ link?: string | undefined;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {
10
+ default: {};
11
+ };
12
+ };
13
+ export type DescriptionProps = typeof __propDef.props;
14
+ export type DescriptionEvents = typeof __propDef.events;
15
+ export type DescriptionSlots = typeof __propDef.slots;
16
+ export default class Description extends SvelteComponent<DescriptionProps, DescriptionEvents, DescriptionSlots> {
17
+ }
18
+ export {};
@@ -389,7 +389,9 @@ setContext('TriggerContext', {
389
389
  primarySchedule: primaryScheduleStore,
390
390
  selectedTrigger: selectedTriggerStore,
391
391
  triggersCount: triggersCount,
392
- simplifiedPoll: writable(false)
392
+ simplifiedPoll: writable(false),
393
+ defaultValues: writable(undefined),
394
+ captureOn: writable(undefined)
393
395
  });
394
396
  setContext('FlowEditorContext', {
395
397
  selectedId: selectedIdStore,
@@ -405,7 +407,8 @@ setContext('FlowEditorContext', {
405
407
  initialPath: '',
406
408
  flowInputsStore: writable({}),
407
409
  customUi: {},
408
- insertButtonOpen: writable(false)
410
+ insertButtonOpen: writable(false),
411
+ executionCount: writable(0),
409
412
  });
410
413
  setContext('PropPickerContext', {
411
414
  flowPropPickerConfig: writable(undefined),
@@ -609,7 +612,19 @@ async function inferModuleArgs(selectedIdStore) {
609
612
  </Pane>
610
613
  <Pane size={33}>
611
614
  {#key reload}
612
- <FlowEditorPanel enableAi noEditor />
615
+ <FlowEditorPanel
616
+ enableAi
617
+ noEditor
618
+ on:applyArgs={(ev) => {
619
+ if (ev.detail.kind === 'preprocessor') {
620
+ $testStepStore['preprocessor'] = ev.detail.args ?? {}
621
+ $selectedIdStore = 'preprocessor'
622
+ } else {
623
+ $previewArgsStore = ev.detail.args ?? {}
624
+ flowPreviewButtons?.openPreview()
625
+ }
626
+ }}
627
+ />
613
628
  {/key}
614
629
  </Pane>
615
630
  </Splitpanes>
@@ -33,6 +33,7 @@ export let noControls = false;
33
33
  export let drawerOpen = false;
34
34
  export let nodeId = undefined;
35
35
  export let language = undefined;
36
+ export let appPath = undefined;
36
37
  const IMG_MAX_SIZE = 10000000;
37
38
  const TABLE_MAX_SIZE = 5000000;
38
39
  const DISPLAY_MAX_SIZE = 100000;
@@ -225,6 +226,7 @@ function handleArrayOfObjectsHeaders(json) {
225
226
  if (Array.isArray(json) &&
226
227
  json.length > 0 &&
227
228
  Array.isArray(json[0]) &&
229
+ json[0].length > 0 &&
228
230
  json[0].every((item) => typeof item === 'string') &&
229
231
  json
230
232
  .slice(1)
@@ -264,6 +266,7 @@ function arrayOfRowsToObjects(input) {
264
266
  // handle possible first row of headers
265
267
  if (input.length > 1 &&
266
268
  Array.isArray(input[0]) &&
269
+ input[0].length > 0 &&
267
270
  input[0].every((item) => typeof item === 'string')) {
268
271
  const headers = input[0];
269
272
  const rows = input.slice(1);
@@ -563,7 +566,7 @@ let seeS3PreviewFileFromList = '';
563
566
  >
564
567
  </button>
565
568
  {:else if !result?.disable_download}
566
- <FileDownload {workspaceId} s3object={result} />
569
+ <FileDownload {workspaceId} s3object={result} {appPath} />
567
570
  <button
568
571
  class="text-secondary underline text-2xs whitespace-nowrap"
569
572
  on:click={() => {
@@ -580,7 +583,7 @@ let seeS3PreviewFileFromList = '';
580
583
  {/if}
581
584
  </div>
582
585
  {#if typeof result?.s3 === 'string'}
583
- {#if result?.s3?.endsWith('.parquet') || result?.s3?.endsWith('.csv')}
586
+ {#if !appPath && (result?.s3?.endsWith('.parquet') || result?.s3?.endsWith('.csv'))}
584
587
  {#key result.s3}
585
588
  <ParqetTableRenderer
586
589
  disable_download={result?.disable_download}
@@ -594,7 +597,7 @@ let seeS3PreviewFileFromList = '';
594
597
  <img
595
598
  alt="preview rendered"
596
599
  class="w-auto h-full"
597
- src={`/api/w/${workspaceId}/job_helpers/load_image_preview?file_key=${result.s3}` +
600
+ src={`/api/w/${workspaceId}/${appPath ? 'apps_u/load_image_preview/' + appPath : 'job_helpers/load_image_preview'}?file_key=${result.s3}` +
598
601
  (result.storage ? `&storage=${result.storage}` : '')}
599
602
  />
600
603
  </div>
@@ -602,7 +605,7 @@ let seeS3PreviewFileFromList = '';
602
605
  <div class="h-96 mt-2 border">
603
606
  <PdfViewer
604
607
  allowFullscreen
605
- source={`/api/w/${workspaceId}/job_helpers/load_image_preview?file_key=${result.s3}` +
608
+ source={`/api/w/${workspaceId}/${appPath ? 'apps_u/load_image_preview/' + appPath : 'job_helpers/load_image_preview'}?file_key=${result.s3}` +
606
609
  (result.storage ? `&storage=${result.storage}` : '')}
607
610
  />
608
611
  </div>
@@ -12,6 +12,7 @@ declare const __propDef: {
12
12
  drawerOpen?: boolean | undefined;
13
13
  nodeId?: string | undefined;
14
14
  language?: string | undefined;
15
+ appPath?: string | undefined;
15
16
  forceJson?: boolean | undefined;
16
17
  };
17
18
  events: {
@@ -3,6 +3,7 @@ import Menu from './common/menu/MenuV2.svelte';
3
3
  import DropdownV2Inner from './DropdownV2Inner.svelte';
4
4
  export let items = [];
5
5
  export let justifyEnd = true;
6
+ export let disabled = false;
6
7
  async function computeItems() {
7
8
  if (typeof items === 'function') {
8
9
  return ((await items()) ?? []).filter((item) => !item.hide);
@@ -13,7 +14,7 @@ async function computeItems() {
13
14
  }
14
15
  </script>
15
16
 
16
- <Menu placement="bottom-end" {justifyEnd} on:close on:open>
17
+ <Menu placement="bottom-end" {justifyEnd} on:close on:open {disabled}>
17
18
  <div slot="trigger">
18
19
  {#if $$slots.buttonReplacement}
19
20
  <slot name="buttonReplacement" />
@@ -27,6 +27,7 @@ declare const __propDef: {
27
27
  hide?: boolean | undefined;
28
28
  }[]>) | undefined;
29
29
  justifyEnd?: boolean | undefined;
30
+ disabled?: boolean | undefined;
30
31
  };
31
32
  events: {
32
33
  close: CustomEvent<any>;
@@ -197,7 +197,7 @@ let editor = undefined;
197
197
  label="JSON View"
198
198
  size="xs"
199
199
  options={{
200
- right: 'JSON Editor',
200
+ right: 'JSON editor',
201
201
  rightTooltip:
202
202
  'Arguments can be edited either using the wizard, or by editing their JSON Schema.'
203
203
  }}
@@ -522,7 +522,7 @@ let editor = undefined;
522
522
  startIcon={{ icon: Plus }}
523
523
  on:click={() => variableEditor?.initNew?.()}
524
524
  >
525
- New Variable
525
+ New variable
526
526
  </Button>
527
527
  </div>
528
528
  </ItemPicker>