windmill-components 1.269.4 → 1.291.4

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 (339) hide show
  1. package/package/ata/apis.d.ts +8 -5
  2. package/package/ata/apis.js +20 -9
  3. package/package/ata/edgeCases.js +5 -1
  4. package/package/ata/index.d.ts +3 -3
  5. package/package/ata/index.js +51 -28
  6. package/package/common.d.ts +1 -0
  7. package/package/components/AddUser.svelte +15 -6
  8. package/package/components/ApiConnectForm.svelte +1 -1
  9. package/package/components/ArgEnum.svelte +1 -1
  10. package/package/components/ArgEnum.svelte.d.ts +1 -1
  11. package/package/components/ArgInfo.svelte +2 -1
  12. package/package/components/ArgInput.svelte +7 -6
  13. package/package/components/ArgInput.svelte.d.ts +1 -1
  14. package/package/components/ArrayTypeNarrowing.svelte +2 -0
  15. package/package/components/CenteredModal.svelte +5 -2
  16. package/package/components/ChangeInstanceUsername.svelte +123 -0
  17. package/package/components/ChangeInstanceUsername.svelte.d.ts +20 -0
  18. package/package/components/ContentSearch.svelte +3 -4
  19. package/package/components/ContentSearch.svelte.d.ts +0 -3
  20. package/package/components/DateTimeInput.svelte +73 -9
  21. package/package/components/DateTimeInput.svelte.d.ts +8 -1
  22. package/package/components/DefaultScripts.svelte +26 -0
  23. package/package/components/DefaultScripts.svelte.d.ts +14 -0
  24. package/package/components/DefaultScriptsInner.svelte +75 -0
  25. package/package/components/DefaultScriptsInner.svelte.d.ts +14 -0
  26. package/package/components/Dev.svelte +59 -17
  27. package/package/components/DisplayResult.svelte +73 -67
  28. package/package/components/DurationMs.svelte +9 -8
  29. package/package/components/DurationMs.svelte.d.ts +1 -0
  30. package/package/components/Editor.svelte +23 -7
  31. package/package/components/FieldHeader.svelte +7 -7
  32. package/package/components/FlowBuilder.svelte +24 -13
  33. package/package/components/FlowBuilder.svelte.d.ts +0 -3
  34. package/package/components/FlowLoopIterationPreview.svelte +6 -5
  35. package/package/components/FlowMetadata.svelte +6 -2
  36. package/package/components/FlowPreviewContent.svelte +5 -5
  37. package/package/components/FolderEditor.svelte +20 -39
  38. package/package/components/GroupEditor.svelte +1 -1
  39. package/package/components/HighlightCode.svelte +7 -5
  40. package/package/components/IconedResourceType.svelte +5 -3
  41. package/package/components/IconedResourceType.svelte.d.ts +21 -7
  42. package/package/components/InputTransformForm.svelte +6 -1
  43. package/package/components/InstanceSettings.svelte +29 -17
  44. package/package/components/InstanceSettings.svelte.d.ts +3 -0
  45. package/package/components/InviteGlobalUser.svelte +1 -1
  46. package/package/components/JobArgs.svelte +20 -7
  47. package/package/components/JobStatus.svelte +8 -2
  48. package/package/components/LightweightArgInput.svelte +30 -14
  49. package/package/components/LightweightSchemaForm.svelte +1 -0
  50. package/package/components/LogViewer.svelte +21 -6
  51. package/package/components/ModulePreview.svelte +19 -11
  52. package/package/components/ModulePreview.svelte.d.ts +3 -2
  53. package/package/components/ObjectResourceInput.svelte +2 -0
  54. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  55. package/package/components/Password.svelte +5 -2
  56. package/package/components/Password.svelte.d.ts +1 -0
  57. package/package/components/Path.svelte +10 -11
  58. package/package/components/ResourcePicker.svelte +28 -9
  59. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  60. package/package/components/RunChart.svelte +1 -0
  61. package/package/components/RunForm.svelte +9 -17
  62. package/package/components/RunFormAdvancedPopup.svelte +11 -12
  63. package/package/components/S3FilePicker.svelte +1 -0
  64. package/package/components/ScheduleEditorInner.svelte +10 -9
  65. package/package/components/ScheduleEditorInner.svelte.d.ts +2 -2
  66. package/package/components/SchemaEditor.svelte +12 -1
  67. package/package/components/SchemaForm.svelte +1 -2
  68. package/package/components/SchemaModal.svelte +2 -2
  69. package/package/components/ScriptBuilder.svelte +152 -79
  70. package/package/components/ScriptBuilder.svelte.d.ts +1 -1
  71. package/package/components/ScriptEditor.svelte +8 -9
  72. package/package/components/ScriptSchedules.svelte +99 -0
  73. package/package/components/ScriptSchedules.svelte.d.ts +20 -0
  74. package/package/components/ShareModal.svelte +1 -0
  75. package/package/components/StringTypeNarrowing.svelte +9 -3
  76. package/package/components/SuperadminSettings.svelte +114 -10
  77. package/package/components/TestJobLoader.svelte +8 -0
  78. package/package/components/TestJobLoader.svelte.d.ts +1 -0
  79. package/package/components/TimeAgo.svelte +2 -2
  80. package/package/components/TimelineBar.svelte +5 -2
  81. package/package/components/Toggle.svelte +5 -2
  82. package/package/components/Toggle.svelte.d.ts +1 -0
  83. package/package/components/Tooltip.svelte +13 -2
  84. package/package/components/Tooltip.svelte.d.ts +1 -0
  85. package/package/components/Uptodate.svelte +12 -6
  86. package/package/components/UserSettings.svelte +87 -73
  87. package/package/components/WorkerTagPicker.svelte +4 -2
  88. package/package/components/WorkflowTimeline.svelte +106 -0
  89. package/package/components/WorkflowTimeline.svelte.d.ts +18 -0
  90. package/package/components/WorkspaceGroup.svelte +1 -0
  91. package/package/components/apps/components/buttons/AppButton.svelte +9 -19
  92. package/package/components/apps/components/display/AppCustomComponent.svelte +2 -4
  93. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +246 -94
  94. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte.d.ts +0 -3
  95. package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +17 -5
  96. package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +6 -2
  97. package/package/components/apps/components/display/dbtable/DeleteRow.svelte +6 -4
  98. package/package/components/apps/components/display/dbtable/DeleteRow.svelte.d.ts +3 -3
  99. package/package/components/apps/components/display/dbtable/InsertRow.svelte +55 -37
  100. package/package/components/apps/components/display/dbtable/InsertRow.svelte.d.ts +17 -1
  101. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +4 -3
  102. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte.d.ts +2 -2
  103. package/package/components/apps/components/display/dbtable/UpdateCell.svelte +5 -4
  104. package/package/components/apps/components/display/dbtable/UpdateCell.svelte.d.ts +3 -3
  105. package/package/components/apps/components/display/dbtable/queries/count.d.ts +4 -0
  106. package/package/components/apps/components/display/dbtable/queries/count.js +140 -0
  107. package/package/components/apps/components/display/dbtable/queries/delete.d.ts +3 -0
  108. package/package/components/apps/components/display/dbtable/queries/delete.js +68 -0
  109. package/package/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
  110. package/package/components/apps/components/display/dbtable/queries/insert.js +121 -0
  111. package/package/components/apps/components/display/dbtable/queries/select.d.ts +7 -0
  112. package/package/components/apps/components/display/dbtable/queries/select.js +196 -0
  113. package/package/components/apps/components/display/dbtable/queries/update.d.ts +3 -0
  114. package/package/components/apps/components/display/dbtable/queries/update.js +75 -0
  115. package/package/components/apps/components/display/dbtable/utils.d.ts +79 -0
  116. package/package/components/apps/components/display/dbtable/utils.js +284 -309
  117. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +39 -19
  118. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +0 -2
  119. package/package/components/apps/components/display/table/AppAggridTable.svelte +4 -1
  120. package/package/components/apps/components/display/table/AppTable.svelte +4 -0
  121. package/package/components/apps/components/display/table/AppTable.svelte.d.ts +2 -2
  122. package/package/components/apps/components/display/table/utils.js +42 -0
  123. package/package/components/apps/components/helpers/InputValue.svelte +10 -8
  124. package/package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
  125. package/package/components/apps/components/helpers/RefreshButton.svelte +1 -1
  126. package/package/components/apps/components/helpers/ResolveConfig.svelte +2 -0
  127. package/package/components/apps/components/helpers/RunnableComponent.svelte +6 -2
  128. package/package/components/apps/components/helpers/eval.d.ts +2 -2
  129. package/package/components/apps/components/helpers/eval.js +33 -11
  130. package/package/components/apps/components/inputs/AppCheckbox.svelte +4 -0
  131. package/package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +1 -0
  132. package/package/components/apps/components/inputs/AppDateInput.svelte +2 -2
  133. package/package/components/apps/components/inputs/AppDateTimeInput.svelte +121 -0
  134. package/package/components/apps/components/inputs/AppDateTimeInput.svelte.d.ts +22 -0
  135. package/package/components/apps/components/inputs/AppSelect.svelte +5 -0
  136. package/package/components/apps/components/inputs/AppSelect.svelte.d.ts +1 -0
  137. package/package/components/apps/components/inputs/AppTimeInput.svelte +103 -0
  138. package/package/components/apps/components/inputs/AppTimeInput.svelte.d.ts +21 -0
  139. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +0 -1
  140. package/package/components/apps/components/layout/AppDecisionTree.svelte +12 -0
  141. package/package/components/apps/components/layout/AppStepper.svelte +4 -2
  142. package/package/components/apps/editor/AppEditor.svelte +19 -4
  143. package/package/components/apps/editor/AppEditorHeader.svelte +42 -14
  144. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +2 -0
  145. package/package/components/apps/editor/AppTimeline.svelte +4 -4
  146. package/package/components/apps/editor/DecisionTreeDebug.svelte +1 -1
  147. package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
  148. package/package/components/apps/editor/GridEditorMenu.svelte +3 -3
  149. package/package/components/apps/editor/RecomputeAllComponents.svelte +1 -1
  150. package/package/components/apps/editor/SettingsPanel.svelte +2 -0
  151. package/package/components/apps/editor/TabsDebug.svelte +2 -2
  152. package/package/components/apps/editor/appUtils.js +8 -0
  153. package/package/components/apps/editor/component/Component.svelte +21 -0
  154. package/package/components/apps/editor/component/components.d.ts +168 -9
  155. package/package/components/apps/editor/component/components.js +203 -10
  156. package/package/components/apps/editor/component/sets.js +2 -0
  157. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +3 -3
  158. package/package/components/apps/editor/componentsPanel/ThemeList.svelte +1 -0
  159. package/package/components/apps/editor/componentsPanel/ThemeList.svelte.d.ts +2 -0
  160. package/package/components/apps/editor/componentsPanel/ThemeRow.svelte +8 -4
  161. package/package/components/apps/editor/componentsPanel/componentControlUtils.js +2 -0
  162. package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
  163. package/package/components/apps/editor/contextPanel/DebugPanel.svelte +178 -0
  164. package/package/components/apps/editor/contextPanel/DebugPanel.svelte.d.ts +14 -0
  165. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +3 -1
  166. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +9 -18
  167. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +11 -16
  168. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +2 -2
  169. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptHiddenRunnable.svelte +2 -2
  170. package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte +4 -12
  171. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +27 -4
  172. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +3 -1
  173. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +68 -28
  174. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +1 -1
  175. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +57 -43
  176. package/package/components/apps/editor/settingsPanel/GridTab.svelte +15 -12
  177. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +9 -3
  178. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +4 -0
  179. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +8 -0
  180. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +2 -0
  181. package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +6 -0
  182. package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte.d.ts +2 -0
  183. package/package/components/apps/editor/settingsPanel/Recompute.svelte +4 -5
  184. package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +3 -0
  185. package/package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +4 -2
  186. package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte +42 -0
  187. package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte.d.ts +19 -0
  188. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +24 -2
  189. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +2 -0
  190. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +25 -15
  191. package/package/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte +1 -1
  192. package/package/components/apps/editor/settingsPanel/script/ComponentScriptSettings.svelte +1 -1
  193. package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte +8 -1
  194. package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte.d.ts +1 -0
  195. package/package/components/apps/editor/settingsPanel/script/shared/ScriptTriggers.svelte +13 -0
  196. package/package/components/apps/inputType.d.ts +2 -2
  197. package/package/components/apps/svelte-select/lib/Select.svelte +2 -1
  198. package/package/components/apps/types.d.ts +5 -3
  199. package/package/components/build_workers.js +9 -13
  200. package/package/components/common/button/Button.svelte +78 -36
  201. package/package/components/common/button/Button.svelte.d.ts +7 -0
  202. package/package/components/common/button/model.d.ts +0 -1
  203. package/package/components/common/button/model.js +0 -8
  204. package/package/components/common/calendarPicker/CalendarPicker.svelte +11 -37
  205. package/package/components/common/confirmationModal/ConfirmationModal.svelte +11 -10
  206. package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +5 -12
  207. package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +0 -3
  208. package/package/components/common/table/ScriptRow.svelte +28 -1
  209. package/package/components/common/tabs/Tab.svelte +6 -4
  210. package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
  211. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -2
  212. package/package/components/copilot/IteratorGen.svelte +10 -5
  213. package/package/components/copilot/MetadataGen.svelte +6 -1
  214. package/package/components/copilot/PredicateGen.svelte +3 -4
  215. package/package/components/copilot/ScriptFix.svelte +1 -1
  216. package/package/components/copilot/StepGen.svelte +2 -1
  217. package/package/components/copilot/StepGen.svelte.d.ts +1 -0
  218. package/package/components/copilot/StepInputGen.svelte +13 -7
  219. package/package/components/copilot/StepInputsGen.svelte +12 -7
  220. package/package/components/copilot/lib.d.ts +1 -1
  221. package/package/components/copilot/lib.js +2 -2
  222. package/package/components/details/Menu.svelte +11 -6
  223. package/package/components/details/Menu.svelte.d.ts +1 -3
  224. package/package/components/details/WebhooksPanel.svelte +1 -1
  225. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +11 -10
  226. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +11 -9
  227. package/package/components/flows/content/FlowInputs.svelte +84 -238
  228. package/package/components/flows/content/FlowLoop.svelte +25 -16
  229. package/package/components/flows/content/FlowModuleComponent.svelte +17 -2
  230. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  231. package/package/components/flows/content/FlowModuleWrapper.svelte +5 -0
  232. package/package/components/flows/content/FlowSchedules.svelte +75 -1
  233. package/package/components/flows/content/FlowSettings.svelte +5 -0
  234. package/package/components/flows/content/SuspendDrawer.svelte +1 -1
  235. package/package/components/flows/flowStateUtils.d.ts +1 -1
  236. package/package/components/flows/flowStateUtils.js +2 -2
  237. package/package/components/flows/idUtils.js +12 -1
  238. package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
  239. package/package/components/flows/map/InsertModuleButton.svelte +1 -3
  240. package/package/components/flows/map/MapItem.svelte +1 -1
  241. package/package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
  242. package/package/components/flows/scheduleUtils.d.ts +2 -1
  243. package/package/components/flows/scheduleUtils.js +2 -1
  244. package/package/components/home/ItemsList.svelte +10 -9
  245. package/package/components/icons/AsanaIcon.svelte +5 -0
  246. package/package/components/icons/AsanaIcon.svelte.d.ts +17 -0
  247. package/package/components/icons/BitbucketIcon.svelte +19 -0
  248. package/package/components/icons/BitbucketIcon.svelte.d.ts +17 -0
  249. package/package/components/icons/CACertificate.svelte +7 -0
  250. package/package/components/icons/CACertificate.svelte.d.ts +17 -0
  251. package/package/components/icons/CurrencyApiIcon.svelte +24 -0
  252. package/package/components/icons/CurrencyApiIcon.svelte.d.ts +17 -0
  253. package/package/components/icons/DynatraceIcon.svelte +26 -0
  254. package/package/components/icons/DynatraceIcon.svelte.d.ts +17 -0
  255. package/package/components/icons/EdgeDbIcon.svelte +25 -0
  256. package/package/components/icons/EdgeDbIcon.svelte.d.ts +17 -0
  257. package/package/components/icons/GitIcon.svelte +7 -0
  258. package/package/components/icons/GitIcon.svelte.d.ts +17 -0
  259. package/package/components/icons/GoogleCloudIcon.svelte +20 -0
  260. package/package/components/icons/GoogleCloudIcon.svelte.d.ts +17 -0
  261. package/package/components/icons/IpinfoIcon.svelte +8 -0
  262. package/package/components/icons/IpinfoIcon.svelte.d.ts +17 -0
  263. package/package/components/icons/MSTeamsIcon.svelte +5 -0
  264. package/package/components/icons/MSTeamsIcon.svelte.d.ts +17 -0
  265. package/package/components/icons/MailgunIcon.svelte +11 -0
  266. package/package/components/icons/MailgunIcon.svelte.d.ts +17 -0
  267. package/package/components/icons/PushoverIcon.svelte +8 -0
  268. package/package/components/icons/PushoverIcon.svelte.d.ts +17 -0
  269. package/package/components/icons/QuickbooksIcon.svelte +5 -0
  270. package/package/components/icons/QuickbooksIcon.svelte.d.ts +17 -0
  271. package/package/components/icons/ResendIcon.svelte +7 -0
  272. package/package/components/icons/ResendIcon.svelte.d.ts +17 -0
  273. package/package/components/icons/TrelloIcon.svelte +5 -0
  274. package/package/components/icons/TrelloIcon.svelte.d.ts +17 -0
  275. package/package/components/icons/TwilioIcon.svelte +11 -0
  276. package/package/components/icons/TwilioIcon.svelte.d.ts +17 -0
  277. package/package/components/icons/ZendeskIcon.svelte +11 -0
  278. package/package/components/icons/ZendeskIcon.svelte.d.ts +17 -0
  279. package/package/components/icons/index.d.ts +36 -1
  280. package/package/components/icons/index.js +37 -2
  281. package/package/components/instanceSettings.js +38 -1
  282. package/package/components/jobs/JobPreview.svelte +4 -1
  283. package/package/components/runs/JobLoader.svelte +6 -4
  284. package/package/components/runs/JobPreview.svelte +15 -1
  285. package/package/components/runs/ManuelDatePicker.svelte +1 -1
  286. package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -3
  287. package/package/components/runs/RunRow.svelte +5 -19
  288. package/package/components/runs/RunsFilter.svelte +1 -1
  289. package/package/components/runs/RunsTable.svelte +1 -1
  290. package/package/components/scriptEditor/LogPanel.svelte +12 -0
  291. package/package/components/settings/PremiumInfo.svelte +92 -31
  292. package/package/components/settings/WorkspaceUserSettings.svelte +42 -6
  293. package/package/components/sidebar/changelogs.js +20 -0
  294. package/package/components/table/AutoDataTable.svelte +18 -4
  295. package/package/consts.d.ts +0 -3
  296. package/package/consts.js +0 -3
  297. package/package/enterpriseUtils.d.ts +1 -0
  298. package/package/enterpriseUtils.js +17 -0
  299. package/package/gen/core/OpenAPI.js +1 -1
  300. package/package/gen/index.d.ts +5 -2
  301. package/package/gen/models/LargeFileStorage.d.ts +3 -1
  302. package/package/gen/models/LargeFileStorage.js +2 -0
  303. package/package/gen/models/User.d.ts +0 -2
  304. package/package/gen/models/UserUsage.d.ts +4 -0
  305. package/package/gen/models/WorkflowStatus.d.ts +6 -0
  306. package/package/gen/models/WorkflowStatusRecord.d.ts +2 -0
  307. package/package/gen/models/WorkflowStatusRecord.js +5 -0
  308. package/package/gen/models/WorkflowTask.d.ts +4 -0
  309. package/package/gen/models/WorkflowTask.js +5 -0
  310. package/package/gen/models/WorkspaceDefaultScripts.d.ts +5 -0
  311. package/package/gen/models/WorkspaceDefaultScripts.js +5 -0
  312. package/package/gen/services/AdminService.d.ts +6 -9
  313. package/package/gen/services/AdminService.js +6 -7
  314. package/package/gen/services/FolderService.d.ts +3 -2
  315. package/package/gen/services/JobService.d.ts +27 -2
  316. package/package/gen/services/JobService.js +22 -2
  317. package/package/gen/services/SettingService.d.ts +11 -0
  318. package/package/gen/services/SettingService.js +13 -0
  319. package/package/gen/services/UserService.d.ts +14 -9
  320. package/package/gen/services/UserService.js +20 -7
  321. package/package/gen/services/WorkspaceService.d.ts +62 -0
  322. package/package/gen/services/WorkspaceService.js +76 -0
  323. package/package/infer.d.ts +20 -1
  324. package/package/infer.js +39 -19
  325. package/package/script_helpers.d.ts +7 -6
  326. package/package/script_helpers.js +24 -7
  327. package/package/scripts.d.ts +11 -0
  328. package/package/scripts.js +38 -1
  329. package/package/stores.d.ts +2 -1
  330. package/package/stores.js +2 -0
  331. package/package/utils.d.ts +1 -1
  332. package/package/utils.js +3 -3
  333. package/package.json +3 -4
  334. package/package/components/common/confirmationModal/model.d.ts +0 -9
  335. package/package/components/common/confirmationModal/model.js +0 -1
  336. package/package/gen/models/NewUser.d.ts +0 -5
  337. package/package/gen/models/Usage.d.ts +0 -3
  338. /package/package/gen/models/{NewUser.js → UserUsage.js} +0 -0
  339. /package/package/gen/models/{Usage.js → WorkflowStatus.js} +0 -0
@@ -1,6 +1,6 @@
1
- <script>import { defaultIfEmptyString, emptyString, getModifierKey, truncateHash } from '../utils';
1
+ <script>import { defaultIfEmptyString, emptyString, truncateHash } from '../utils';
2
2
  import CliHelpBox from './CliHelpBox.svelte';
3
- import { Badge, Button, Kbd } from './common';
3
+ import { Badge, Button } from './common';
4
4
  import SchemaForm from './SchemaForm.svelte';
5
5
  import SharedBadge from './SharedBadge.svelte';
6
6
  import CollapseLink from './CollapseLink.svelte';
@@ -9,7 +9,7 @@ import TimeAgo from './TimeAgo.svelte';
9
9
  import ClipboardPanel from './details/ClipboardPanel.svelte';
10
10
  import Popup from './common/popup/Popup.svelte';
11
11
  import { autoPlacement } from '@floating-ui/core';
12
- import { Calendar } from 'lucide-svelte';
12
+ import { Calendar, CornerDownLeft } from 'lucide-svelte';
13
13
  import RunFormAdvancedPopup from './RunFormAdvancedPopup.svelte';
14
14
  export let runnable;
15
15
  export let runAction;
@@ -121,14 +121,9 @@ $: cliCommand = `wmill ${isFlow ? 'flow' : 'script'} run ${runnable?.path} -d '$
121
121
  btnClasses="!px-6 !py-1 !h-8 inline-flex gap-2"
122
122
  disabled={!isValid}
123
123
  on:click={() => runAction(scheduledForStr, args, invisible_to_owner, overrideTag)}
124
+ shortCut={{ Icon: CornerDownLeft, hide: !viewKeybinding }}
124
125
  >
125
- {#if viewKeybinding}
126
- <div class="inline-flex gap-0 items-center">
127
- <Kbd small isModifier>{getModifierKey()}</Kbd><Kbd small>Enter</Kbd>
128
- </div>{/if}
129
- <div>
130
- {scheduledForStr ? 'Schedule to run later' : buttonText}
131
- </div>
126
+ {scheduledForStr ? 'Schedule to run later' : buttonText}
132
127
  </Button>
133
128
  <div>
134
129
  <Popup
@@ -150,9 +145,9 @@ $: cliCommand = `wmill ${isFlow ? 'flow' : 'script'} run ${runnable?.path} -d '$
150
145
  blockOpen={blockPopupOpen}
151
146
  >
152
147
  <svelte:fragment slot="button">
153
- <Button nonCaptureEvent startIcon={{ icon: Calendar }} size="xs" color="light"
154
- >Advanced</Button
155
- >
148
+ <Button nonCaptureEvent startIcon={{ icon: Calendar }} size="xs" color="light">
149
+ Advanced
150
+ </Button>
156
151
  </svelte:fragment>
157
152
  <RunFormAdvancedPopup
158
153
  bind:scheduledForStr
@@ -180,11 +175,8 @@ $: cliCommand = `wmill ${isFlow ? 'flow' : 'script'} run ${runnable?.path} -d '$
180
175
  btnClasses="!px-6 !py-1 w-full"
181
176
  disabled={!isValid}
182
177
  on:click={() => runAction(undefined, args, invisible_to_owner, overrideTag)}
178
+ shortCut={{ Icon: CornerDownLeft, hide: !viewKeybinding }}
183
179
  >
184
- {#if viewKeybinding}
185
- <div>
186
- <Kbd small isModifier>{getModifierKey()}</Kbd>+<Kbd small>Enter</Kbd>
187
- </div>{/if}
188
180
  {buttonText}
189
181
  </Button>
190
182
  {/if}
@@ -5,8 +5,8 @@ import Toggle from './Toggle.svelte';
5
5
  import Tooltip from './Tooltip.svelte';
6
6
  import { userStore, workerTags } from '../stores';
7
7
  import { Button } from './common';
8
- import { getToday } from '../utils';
9
8
  import { WorkerService } from '../gen';
9
+ import DateTimeInput from './DateTimeInput.svelte';
10
10
  export let runnable;
11
11
  export let scheduledForStr;
12
12
  export let invisible_to_owner;
@@ -29,23 +29,22 @@ async function loadWorkerGroups() {
29
29
  </svelte:fragment>
30
30
  </Label>
31
31
 
32
- <div class="flex flex-row items-end">
33
- <div class="w-max md:w-2/3 mt-2 mb-1">
32
+ <div class="flex flex-row items-center my-1">
33
+ <div>
34
34
  <label for="run-time" />
35
- <input
36
- class="inline-block"
37
- type="datetime-local"
38
- id="run-time"
39
- name="run-scheduled-time"
40
- bind:value={scheduledForStr}
41
- min={getToday().toISOString().slice(0, 16)}
35
+ <DateTimeInput
36
+ value={scheduledForStr}
37
+ on:change={(e) => {
38
+ console.log('e.detail', e.detail)
39
+ scheduledForStr = e.detail
40
+ }}
42
41
  />
43
42
  </div>
44
43
  <Button
45
44
  variant="border"
46
45
  color="light"
47
- size="sm"
48
- btnClasses="mx-2 mb-1"
46
+ size="xs"
47
+ btnClasses="mx-2 "
49
48
  on:click={() => {
50
49
  scheduledForStr = undefined
51
50
  }}
@@ -246,6 +246,7 @@ async function reloadContent() {
246
246
  }
247
247
  try {
248
248
  await HelpersService.datasetStorageTestConnection({ workspace: $workspaceStore });
249
+ workspaceSettingsInitialized = true;
249
250
  }
250
251
  catch (e) {
251
252
  console.error('Workspace not connected to S3 bucket: ', e);
@@ -57,9 +57,10 @@ export function openEdit(ePath, isFlow) {
57
57
  edit = true;
58
58
  drawer?.openDrawer();
59
59
  }
60
- export async function openNew(is_flow, initial_script_path) {
60
+ export async function openNew(nis_flow, initial_script_path) {
61
61
  args = {};
62
62
  runnable = undefined;
63
+ is_flow = nis_flow;
63
64
  let defaultErrorHandlerMaybe = undefined;
64
65
  let defaultRecoveryHandlerMaybe = undefined;
65
66
  if ($workspaceStore) {
@@ -71,7 +72,7 @@ export async function openNew(is_flow, initial_script_path) {
71
72
  });
72
73
  }
73
74
  edit = false;
74
- itemKind = is_flow ? 'flow' : 'script';
75
+ itemKind = nis_flow ? 'flow' : 'script';
75
76
  initialScriptPath = initial_script_path ?? '';
76
77
  summary = '';
77
78
  no_flow_overlap = false;
@@ -261,13 +262,13 @@ async function loadSchedule() {
261
262
  }
262
263
  }
263
264
  async function scheduleScript() {
265
+ if (errorHandlerPath !== undefined && isSlackHandler('error', errorHandlerPath)) {
266
+ errorHandlerExtraArgs['slack'] = '$res:f/slack_bot/bot_token';
267
+ }
268
+ if (recoveryHandlerPath !== undefined && isSlackHandler('recovery', recoveryHandlerPath)) {
269
+ recoveryHandlerExtraArgs['slack'] = '$res:f/slack_bot/bot_token';
270
+ }
264
271
  if (edit) {
265
- if (errorHandlerPath !== undefined && isSlackHandler('error', errorHandlerPath)) {
266
- errorHandlerExtraArgs['slack'] = '$res:f/slack_bot/bot_token';
267
- }
268
- if (recoveryHandlerPath !== undefined && isSlackHandler('recovery', recoveryHandlerPath)) {
269
- recoveryHandlerExtraArgs['slack'] = '$res:f/slack_bot/bot_token';
270
- }
271
272
  await ScheduleService.updateSchedule({
272
273
  workspace: $workspaceStore,
273
274
  path: initialPath,
@@ -364,7 +365,7 @@ let dirtyPath = false;
364
365
  View Runs
365
366
  </Button>
366
367
  </div>
367
- <div class="mr-8 center-center -mt-2">
368
+ <div class="mr-8 center-center -mt-1">
368
369
  <Toggle
369
370
  disabled={!can_write}
370
371
  checked={enabled}
@@ -2,7 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  openEdit?: ((ePath: string, isFlow: boolean) => void) | undefined;
5
- openNew?: ((is_flow: boolean, initial_script_path?: string) => Promise<void>) | undefined;
5
+ openNew?: ((nis_flow: boolean, initial_script_path?: string) => Promise<void>) | undefined;
6
6
  };
7
7
  events: {
8
8
  update: CustomEvent<any>;
@@ -16,6 +16,6 @@ export type ScheduleEditorInnerEvents = typeof __propDef.events;
16
16
  export type ScheduleEditorInnerSlots = typeof __propDef.slots;
17
17
  export default class ScheduleEditorInner extends SvelteComponent<ScheduleEditorInnerProps, ScheduleEditorInnerEvents, ScheduleEditorInnerSlots> {
18
18
  get openEdit(): (ePath: string, isFlow: boolean) => void;
19
- get openNew(): (is_flow: boolean, initial_script_path?: string | undefined) => Promise<void>;
19
+ get openNew(): (nis_flow: boolean, initial_script_path?: string | undefined) => Promise<void>;
20
20
  }
21
21
  export {};
@@ -83,6 +83,9 @@ function handleAddOrEditArgument(modalProperty) {
83
83
  if (!schema.required) {
84
84
  schema.required = [];
85
85
  }
86
+ if (!schema.order || !Array.isArray(schema.order)) {
87
+ syncOrders();
88
+ }
86
89
  schema.properties[modalProperty.name] = modalToSchema(modalProperty);
87
90
  if (modalProperty.required) {
88
91
  if (!schema.required.includes(modalProperty.name)) {
@@ -96,15 +99,20 @@ function handleAddOrEditArgument(modalProperty) {
96
99
  }
97
100
  }
98
101
  if (editing && oldArgName && oldArgName !== modalProperty.name) {
102
+ let oldPosition = schema.order.indexOf(oldArgName);
103
+ schema.order[oldPosition] = modalProperty.name;
104
+ reorder();
99
105
  handleDeleteArgument([oldArgName]);
100
106
  }
107
+ if (!schema.order?.includes(modalProperty.name)) {
108
+ schema.order.push(modalProperty.name);
109
+ }
101
110
  modalProperty = Object.assign({}, DEFAULT_PROPERTY);
102
111
  editing = false;
103
112
  oldArgName = undefined;
104
113
  schemaModal.closeDrawer();
105
114
  }
106
115
  schema = schema;
107
- syncOrders();
108
116
  schemaString = JSON.stringify(schema, null, '\t');
109
117
  jsonEditor?.setCode(schemaString);
110
118
  dispatch('change', schema);
@@ -144,6 +152,9 @@ function handleDeleteArgument(argPath) {
144
152
  if (Object.keys(modifiedProperties).includes(argName)) {
145
153
  delete modifiedProperties[argName];
146
154
  modifiedObject.required = schema.required.filter((arg) => arg !== argName);
155
+ if (modifiedObject.order) {
156
+ modifiedObject.order = modifiedObject.order.filter((arg) => arg !== argName);
157
+ }
147
158
  schema = schema;
148
159
  schemaString = JSON.stringify(schema, null, '\t');
149
160
  dispatch('change', schema);
@@ -73,7 +73,6 @@ async function loadResourceTypes() {
73
73
  loadResourceTypes();
74
74
  $: schema && reorder();
75
75
  function reorder() {
76
- console.log('reordering');
77
76
  if (schema?.order && Array.isArray(schema.order)) {
78
77
  const n = {};
79
78
  schema.order.forEach((x) => {
@@ -110,7 +109,7 @@ function reorder() {
110
109
  {disablePortal}
111
110
  {resourceTypes}
112
111
  {prettifyHeader}
113
- autofocus={i == 0 && autofocus}
112
+ autofocus={i == 0 && autofocus ? true : null}
114
113
  label={argName}
115
114
  description={schema.properties[argName].description}
116
115
  bind:value={args[argName]}
@@ -273,9 +273,9 @@ function getResourceTypesFromFormat(format) {
273
273
  bind:currencyLocale={property.currencyLocale}
274
274
  />
275
275
  {:else if property.selectedType == 'object' && property.format !== 'resource-s3'}
276
- <Tabs selected="custom-object">
277
- <Tab value="custom-object">Custom Object</Tab>
276
+ <Tabs selected="resource">
278
277
  <Tab value="resource">Resource</Tab>
278
+ <Tab value="custom-object">Custom Object</Tab>
279
279
  <svelte:fragment slot="content">
280
280
  <div class="pt-2">
281
281
  <TabContent value="custom-object">
@@ -1,20 +1,20 @@
1
- <script>import { DraftService, NewScript, Script, ScriptService } from '../gen';
1
+ <script>import { DraftService, NewScript, Script, ScriptService, ScheduleService } from '../gen';
2
+ import { goto } from '$app/navigation';
2
3
  import { page } from '$app/stores';
3
4
  import { inferArgs } from '../infer';
4
5
  import { initialCode } from '../script_helpers';
5
- import { enterpriseLicense, userStore, workspaceStore } from '../stores';
6
- import { cleanValueProperties, emptySchema, emptyString, encodeState, getModifierKey, orderedJsonStringify } from '../utils';
6
+ import { defaultScripts, enterpriseLicense, userStore, workspaceStore } from '../stores';
7
+ import { cleanValueProperties, emptySchema, emptyString, encodeState, formatCron, orderedJsonStringify } from '../utils';
7
8
  import Path from './Path.svelte';
8
9
  import ScriptEditor from './ScriptEditor.svelte';
9
- import { Alert, Badge, Button, Drawer, Kbd, SecondsInput, Tab, TabContent, Tabs } from './common';
10
+ import { Alert, Badge, Button, Drawer, SecondsInput, Tab, TabContent, Tabs } from './common';
10
11
  import LanguageIcon from './common/languageIcons/LanguageIcon.svelte';
11
12
  import Tooltip from './Tooltip.svelte';
12
13
  import DrawerContent from './common/drawer/DrawerContent.svelte';
13
14
  import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
14
15
  import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
15
16
  import ErrorHandlerToggleButton from './details/ErrorHandlerToggleButton.svelte';
16
- import { Bug, CheckCircle, Code, DiffIcon, Pen, Plus, Rocket, Save, Settings, X } from 'lucide-svelte';
17
- import { SCRIPT_SHOW_BASH, SCRIPT_SHOW_GO } from '../consts';
17
+ import { Bug, Calendar, CheckCircle, Code, DiffIcon, Pen, Plus, Rocket, Save, Settings, X } from 'lucide-svelte';
18
18
  import UnsavedConfirmationModal from './common/confirmationModal/UnsavedConfirmationModal.svelte';
19
19
  import { sendUserToast } from '../toast';
20
20
  import { isCloudHosted } from '../cloud';
@@ -28,7 +28,10 @@ import Label from './Label.svelte';
28
28
  import { cloneDeep } from 'lodash';
29
29
  import WorkerTagPicker from './WorkerTagPicker.svelte';
30
30
  import MetadataGen from './copilot/MetadataGen.svelte';
31
- import { beforeNavigate, goto } from '$app/navigation';
31
+ import ScriptSchedules from './ScriptSchedules.svelte';
32
+ import { writable } from 'svelte/store';
33
+ import { loadScriptSchedule, defaultScriptLanguages } from '../scripts';
34
+ import DefaultScripts from './DefaultScripts.svelte';
32
35
  export let script;
33
36
  export let initialPath = '';
34
37
  export let template = 'script';
@@ -43,29 +46,31 @@ let metadataOpen = showMeta ||
43
46
  $page.url.searchParams.get('collab') == undefined);
44
47
  let editor = undefined;
45
48
  let scriptEditor = undefined;
49
+ let scheduleStore = writable({
50
+ summary: '',
51
+ cron: '0 */5 * * *',
52
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
53
+ args: {},
54
+ enabled: false
55
+ });
56
+ async function loadSchedule() {
57
+ const scheduleRes = await loadScriptSchedule(initialPath, $workspaceStore);
58
+ if (scheduleRes) {
59
+ scheduleStore.set(scheduleRes);
60
+ }
61
+ }
62
+ $: {
63
+ if (initialPath != '') {
64
+ loadSchedule();
65
+ }
66
+ }
46
67
  const enterpriseLangs = ['bigquery', 'snowflake', 'mssql'];
47
68
  export function setCode(code) {
48
69
  editor?.setCode(code);
49
70
  }
50
- const langs = [
51
- ['TypeScript (Deno)', Script.language.DENO],
52
- ['Python', Script.language.PYTHON3],
53
- ['TypeScript (Bun)', Script.language.BUN]
54
- ];
55
- if (SCRIPT_SHOW_BASH) {
56
- langs.push(['Bash', Script.language.BASH]);
57
- }
58
- if (SCRIPT_SHOW_GO) {
59
- langs.push(['Go', Script.language.GO]);
60
- }
61
- langs.push(['REST', Script.language.NATIVETS]);
62
- langs.push(['PostgreSQL', Script.language.POSTGRESQL]);
63
- langs.push(['MySQL', Script.language.MYSQL]);
64
- langs.push(['BigQuery', Script.language.BIGQUERY]);
65
- langs.push(['Snowflake', Script.language.SNOWFLAKE]);
66
- langs.push(['MS SQL Server', Script.language.MSSQL]);
67
- langs.push(['GraphQL', Script.language.GRAPHQL]);
68
- langs.push(['PowerShell', Script.language.POWERSHELL]);
71
+ $: langs = ($defaultScripts?.order ?? Object.keys(defaultScriptLanguages))
72
+ .map((l) => [defaultScriptLanguages[l], l])
73
+ .filter((x) => $defaultScripts?.hidden == undefined || !$defaultScripts.hidden.includes(x[1]));
69
74
  const scriptKindOptions = [
70
75
  {
71
76
  value: Script.kind.SCRIPT,
@@ -117,6 +122,27 @@ function initContent(language, kind, template) {
117
122
  setCode(script.content);
118
123
  }
119
124
  }
125
+ async function createSchedule(path) {
126
+ const { cron, timezone, args, enabled, summary } = $scheduleStore;
127
+ try {
128
+ await ScheduleService.createSchedule({
129
+ workspace: $workspaceStore,
130
+ requestBody: {
131
+ path: path,
132
+ schedule: formatCron(cron),
133
+ timezone,
134
+ script_path: path,
135
+ is_flow: false,
136
+ args,
137
+ enabled,
138
+ summary
139
+ }
140
+ });
141
+ }
142
+ catch (err) {
143
+ sendUserToast(`The primary schedule could not be created: ${err}`, true);
144
+ }
145
+ }
120
146
  async function editScript(stay) {
121
147
  loadingSave = true;
122
148
  try {
@@ -159,6 +185,42 @@ async function editScript(stay) {
159
185
  concurrency_key: emptyString(script.concurrency_key) ? undefined : script.concurrency_key
160
186
  }
161
187
  });
188
+ const { enabled, timezone, args, cron, summary } = $scheduleStore;
189
+ const scheduleExists = await ScheduleService.existsSchedule({
190
+ workspace: $workspaceStore ?? '',
191
+ path: script.path
192
+ });
193
+ if (scheduleExists) {
194
+ const schedule = await ScheduleService.getSchedule({
195
+ workspace: $workspaceStore ?? '',
196
+ path: script.path
197
+ });
198
+ if (JSON.stringify(schedule.args) != JSON.stringify(args) ||
199
+ schedule.schedule != cron ||
200
+ schedule.timezone != timezone ||
201
+ schedule.summary != summary) {
202
+ await ScheduleService.updateSchedule({
203
+ workspace: $workspaceStore ?? '',
204
+ path: script.path,
205
+ requestBody: {
206
+ schedule: formatCron(cron),
207
+ timezone,
208
+ args,
209
+ summary
210
+ }
211
+ });
212
+ }
213
+ if (enabled != schedule.enabled) {
214
+ await ScheduleService.setScheduleEnabled({
215
+ workspace: $workspaceStore ?? '',
216
+ path: script.path,
217
+ requestBody: { enabled }
218
+ });
219
+ }
220
+ }
221
+ else if (enabled) {
222
+ await createSchedule(script.path);
223
+ }
162
224
  savedScript = cloneDeep(script);
163
225
  history.replaceState(history.state, '', `/scripts/edit/${script.path}`);
164
226
  if (stay) {
@@ -242,7 +304,6 @@ async function saveDraft(forceSave = false) {
242
304
  : script.concurrency_key
243
305
  }
244
306
  });
245
- initialPath = script.path;
246
307
  }
247
308
  await DraftService.createDraft({
248
309
  workspace: $workspaceStore,
@@ -259,6 +320,7 @@ async function saveDraft(forceSave = false) {
259
320
  draft: cloneDeep(script)
260
321
  };
261
322
  if (initialPath == '' || (savedScript?.draft_only && script.path !== initialPath)) {
323
+ initialPath = script.path;
262
324
  goto(`/scripts/edit/${script.path}`);
263
325
  }
264
326
  sendUserToast('Saved as draft');
@@ -313,13 +375,7 @@ let selectedTab = 'metadata';
313
375
  </script>
314
376
 
315
377
  <svelte:window on:keydown={onKeyDown} />
316
- <UnsavedConfirmationModal
317
- gotoUrl={goto}
318
- {beforeNavigate}
319
- {diffDrawer}
320
- savedValue={savedScript}
321
- modifiedValue={script}
322
- />
378
+ <UnsavedConfirmationModal {diffDrawer} savedValue={savedScript} modifiedValue={script} />
323
379
 
324
380
  {#if !$userStore?.operator}
325
381
  <Drawer placement="right" bind:open={metadataOpen} size="800px">
@@ -337,6 +393,7 @@ let selectedTab = 'metadata';
337
393
  cannot be inferred from the type directly.
338
394
  </Tooltip>
339
395
  </Tab>
396
+ <Tab value="schedule" active={$scheduleStore.enabled}>Schedule</Tab>
340
397
  <svelte:fragment slot="content">
341
398
  <div class="p-4">
342
399
  <TabContent value="metadata">
@@ -406,14 +463,17 @@ let selectedTab = 'metadata';
406
463
  </Section>
407
464
 
408
465
  <Section label="Language">
466
+ <svelte:fragment slot="action"><DefaultScripts /></svelte:fragment>
409
467
  {#if lockedLanguage}
410
468
  <div class="text-sm text-tertiary italic mb-2">
411
469
  As a forked script, the language '{script.language}' cannot be modified.
412
470
  </div>
413
471
  {/if}
414
472
  <div class=" grid grid-cols-3 gap-2">
415
- {#each langs as [label, lang]}
416
- {@const isPicked = script.language == lang && template == 'script'}
473
+ {#each langs as [label, lang] (lang)}
474
+ {@const isPicked =
475
+ (lang == script.language && template == 'script') ||
476
+ (template == 'docker' && lang == 'docker')}
417
477
  <Popover
418
478
  disablePopup={!enterpriseLangs.includes(lang) || !!$enterpriseLicense}
419
479
  >
@@ -425,9 +485,33 @@ let selectedTab = 'metadata';
425
485
  ? '!border-2 !bg-blue-50/75 dark:!bg-frost-900/75'
426
486
  : 'm-[1px]'}
427
487
  on:click={() => {
428
- template = 'script'
429
- initContent(lang, script.kind, template)
430
- script.language = lang
488
+ if (lang == 'docker') {
489
+ if (isCloudHosted()) {
490
+ sendUserToast(
491
+ 'You cannot use Docker scripts on the multi-tenant platform. Use a dedicated instance or self-host windmill instead.',
492
+ true,
493
+ [
494
+ {
495
+ label: 'Learn more',
496
+ callback: () => {
497
+ window.open(
498
+ 'https://www.windmill.dev/docs/advanced/docker',
499
+ '_blank'
500
+ )
501
+ }
502
+ }
503
+ ]
504
+ )
505
+ return
506
+ }
507
+ template = 'docker'
508
+ } else {
509
+ template = 'script'
510
+ }
511
+ let language = lang == 'docker' ? Script.language.BASH : lang
512
+ //
513
+ initContent(language, script.kind, template)
514
+ script.language = language
431
515
  }}
432
516
  disabled={lockedLanguage ||
433
517
  (enterpriseLangs.includes(lang) && !$enterpriseLicense)}
@@ -440,40 +524,6 @@ let selectedTab = 'metadata';
440
524
  >
441
525
  </Popover>
442
526
  {/each}
443
- <Button
444
- size="sm"
445
- variant="border"
446
- color={template == 'docker' ? 'blue' : 'light'}
447
- btnClasses={template == 'docker'
448
- ? '!border-2 !bg-blue-50/75 dark:!bg-frost-900/75'
449
- : 'm-[1px]'}
450
- disabled={lockedLanguage}
451
- on:click={() => {
452
- if (isCloudHosted()) {
453
- sendUserToast(
454
- 'You cannot use Docker scripts on the multi-tenant platform. Use a dedicated instance or self-host windmill instead.',
455
- true,
456
- [
457
- {
458
- label: 'Learn more',
459
- callback: () => {
460
- window.open(
461
- 'https://www.windmill.dev/docs/advanced/docker',
462
- '_blank'
463
- )
464
- }
465
- }
466
- ]
467
- )
468
- return
469
- }
470
- template = 'docker'
471
- initContent(Script.language.BASH, script.kind, template)
472
- script.language = Script.language.BASH
473
- }}
474
- >
475
- <LanguageIcon lang="docker" /><span class="ml-2 py-2">Docker</span>
476
- </Button>
477
527
  </div>
478
528
  </Section>
479
529
 
@@ -541,8 +591,13 @@ let selectedTab = 'metadata';
541
591
  type="text"
542
592
  autofocus
543
593
  bind:value={script.concurrency_key}
544
- placeholder={`$workspace/script/${script.path}`}
594
+ placeholder={`$workspace/script/${script.path}-$args[foo]`}
545
595
  />
596
+ <Tooltip
597
+ >Concurrency keys are global, you can have them be workspace specific using
598
+ the variable `$workspace`. You can also use an argument's value using
599
+ `$args[name_of_arg]`</Tooltip
600
+ >
546
601
  </Label>
547
602
  </div>
548
603
  </Section>
@@ -750,7 +805,7 @@ let selectedTab = 'metadata';
750
805
  <Section label="Custom env variables">
751
806
  <svelte:fragment slot="header">
752
807
  <Tooltip
753
- documentationLink="https://www.windmill.dev/docs/reference#custom-environment-variables"
808
+ documentationLink="https://www.windmill.dev/docs/script_editor/custom_environment_variables"
754
809
  >
755
810
  Additional static custom env variables to pass to the script.
756
811
  </Tooltip>
@@ -808,6 +863,9 @@ let selectedTab = 'metadata';
808
863
  <div class="mt-4" />
809
864
  <ScriptSchema bind:schema={script.schema} />
810
865
  </TabContent>
866
+ <TabContent value="schedule">
867
+ <ScriptSchedules {initialPath} schema={script.schema} schedule={scheduleStore} />
868
+ </TabContent>
811
869
  </div>
812
870
  </svelte:fragment>
813
871
  </Tabs>
@@ -838,6 +896,21 @@ let selectedTab = 'metadata';
838
896
  </div>
839
897
 
840
898
  <div class="gap-4 flex">
899
+ {#if $scheduleStore.enabled}
900
+ <Button
901
+ btnClasses="hidden lg:inline-flex"
902
+ startIcon={{ icon: Calendar }}
903
+ variant="contained"
904
+ color="light"
905
+ size="xs"
906
+ on:click={async () => {
907
+ metadataOpen = true
908
+ selectedTab = 'schedule'
909
+ }}
910
+ >
911
+ {$scheduleStore.cron ?? ''}
912
+ </Button>
913
+ {/if}
841
914
  <div class="flex justify-start w-full border rounded-md overflow-hidden">
842
915
  <div>
843
916
  <button
@@ -911,11 +984,11 @@ let selectedTab = 'metadata';
911
984
  startIcon={{ icon: Save }}
912
985
  on:click={() => saveDraft()}
913
986
  disabled={initialPath != '' && !savedScript}
987
+ shortCut={{
988
+ key: 'S'
989
+ }}
914
990
  >
915
- <span class="hidden lg:flex">
916
- Draft&nbsp;<Kbd small isModifier>{getModifierKey()}</Kbd>
917
- </span>
918
- <Kbd small>S</Kbd>
991
+ <span class="hidden lg:flex"> Draft </span>
919
992
  </Button>
920
993
  <Button
921
994
  loading={loadingSave}
@@ -5,7 +5,7 @@ declare const __propDef: {
5
5
  props: {
6
6
  script: NewScript;
7
7
  initialPath?: string | undefined;
8
- template?: "script" | "powershell" | "mysql" | "pgsql" | "docker" | undefined;
8
+ template?: "script" | "docker" | undefined;
9
9
  initialArgs?: Record<string, any> | undefined;
10
10
  lockedLanguage?: boolean | undefined;
11
11
  showMeta?: boolean | undefined;