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
@@ -27,7 +27,7 @@ export type Script = {
27
27
  };
28
28
  lock?: string;
29
29
  lock_error_logs?: string;
30
- language: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible';
30
+ language: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible' | 'csharp';
31
31
  kind: 'script' | 'failure' | 'trigger' | 'command' | 'approval';
32
32
  starred: boolean;
33
33
  tag?: string;
@@ -60,7 +60,7 @@ export type NewScript = {
60
60
  };
61
61
  is_template?: boolean;
62
62
  lock?: string;
63
- language: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible';
63
+ language: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible' | 'csharp';
64
64
  kind?: 'script' | 'failure' | 'trigger' | 'command' | 'approval';
65
65
  tag?: string;
66
66
  draft_only?: boolean;
@@ -130,7 +130,7 @@ export type QueuedJob = {
130
130
  canceled_by?: string;
131
131
  canceled_reason?: string;
132
132
  last_ping?: string;
133
- job_kind: 'script' | 'preview' | 'dependencies' | 'flowdependencies' | 'appdependencies' | 'flow' | 'flowpreview' | 'script_hub' | 'identity' | 'deploymentcallback' | 'singlescriptflow' | 'flowscript';
133
+ job_kind: 'script' | 'preview' | 'dependencies' | 'flowdependencies' | 'appdependencies' | 'flow' | 'flowpreview' | 'script_hub' | 'identity' | 'deploymentcallback' | 'singlescriptflow' | 'flowscript' | 'flownode' | 'appscript';
134
134
  schedule_path?: string;
135
135
  /**
136
136
  * The user (u/userfoo) or group (g/groupfoo) whom
@@ -141,7 +141,7 @@ export type QueuedJob = {
141
141
  flow_status?: FlowStatus;
142
142
  raw_flow?: FlowValue;
143
143
  is_flow_step: boolean;
144
- language?: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible';
144
+ language?: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible' | 'csharp';
145
145
  email: string;
146
146
  visible_to_owner: boolean;
147
147
  mem_peak?: number;
@@ -170,7 +170,7 @@ export type CompletedJob = {
170
170
  canceled: boolean;
171
171
  canceled_by?: string;
172
172
  canceled_reason?: string;
173
- job_kind: 'script' | 'preview' | 'dependencies' | 'flow' | 'flowdependencies' | 'appdependencies' | 'flowpreview' | 'script_hub' | 'identity' | 'deploymentcallback' | 'singlescriptflow' | 'flowscript';
173
+ job_kind: 'script' | 'preview' | 'dependencies' | 'flow' | 'flowdependencies' | 'appdependencies' | 'flowpreview' | 'script_hub' | 'identity' | 'deploymentcallback' | 'singlescriptflow' | 'flowscript' | 'flownode' | 'appscript';
174
174
  schedule_path?: string;
175
175
  /**
176
176
  * The user (u/userfoo) or group (g/groupfoo) whom
@@ -181,7 +181,7 @@ export type CompletedJob = {
181
181
  flow_status?: FlowStatus;
182
182
  raw_flow?: FlowValue;
183
183
  is_flow_step: boolean;
184
- language?: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible';
184
+ language?: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible' | 'csharp';
185
185
  is_skipped: boolean;
186
186
  email: string;
187
187
  visible_to_owner: boolean;
@@ -206,6 +206,7 @@ export type User = {
206
206
  email: string;
207
207
  username: string;
208
208
  is_admin: boolean;
209
+ name?: string;
209
210
  is_super_admin: boolean;
210
211
  created_at: string;
211
212
  operator: boolean;
@@ -330,7 +331,7 @@ export type Preview = {
330
331
  content?: string;
331
332
  path?: string;
332
333
  args: ScriptArgs;
333
- language?: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible';
334
+ language?: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible' | 'csharp';
334
335
  tag?: string;
335
336
  kind?: 'code' | 'identity' | 'http';
336
337
  dedicated_worker?: boolean;
@@ -792,6 +793,7 @@ export type ListableApp = {
792
793
  starred?: boolean;
793
794
  edited_at: string;
794
795
  execution_mode: 'viewer' | 'publisher' | 'anonymous';
796
+ raw_app?: boolean;
795
797
  };
796
798
  export type ListableRawApp = {
797
799
  workspace_id: string;
@@ -820,6 +822,7 @@ export type AppWithLastVersion = {
820
822
  extra_perms: {
821
823
  [key: string]: (boolean);
822
824
  };
825
+ custom_path?: string;
823
826
  };
824
827
  export type AppWithLastVersionWDraft = AppWithLastVersion & {
825
828
  draft_only?: boolean;
@@ -934,7 +937,7 @@ export type MetricDataPoint = {
934
937
  export type RawScriptForDependencies = {
935
938
  raw_code: string;
936
939
  path: string;
937
- language: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible';
940
+ language: 'python3' | 'deno' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'graphql' | 'nativets' | 'bun' | 'php' | 'rust' | 'ansible' | 'csharp';
938
941
  };
939
942
  export type ConcurrencyGroup = {
940
943
  concurrency_key: string;
@@ -1222,6 +1225,7 @@ export type ParameterScriptPath = string;
1222
1225
  export type ParameterScriptHash = string;
1223
1226
  export type ParameterJobId = string;
1224
1227
  export type ParameterPath = string;
1228
+ export type ParameterCustomPath = string;
1225
1229
  export type ParameterPathId = number;
1226
1230
  export type ParameterPathVersion = number;
1227
1231
  export type ParameterName = string;
@@ -1555,6 +1559,9 @@ export type DeleteUserData = {
1555
1559
  };
1556
1560
  export type DeleteUserResponse = string;
1557
1561
  export type GetCurrentEmailResponse = string;
1562
+ export type RefreshUserTokenData = {
1563
+ ifExpiringInLessThanS?: number;
1564
+ };
1558
1565
  export type RefreshUserTokenResponse = string;
1559
1566
  export type GetTutorialProgressResponse = {
1560
1567
  progress?: number;
@@ -2091,7 +2098,17 @@ export type GetCriticalAlertsData = {
2091
2098
  page?: number;
2092
2099
  pageSize?: number;
2093
2100
  };
2094
- export type GetCriticalAlertsResponse = Array<CriticalAlert>;
2101
+ export type GetCriticalAlertsResponse = {
2102
+ alerts?: Array<CriticalAlert>;
2103
+ /**
2104
+ * Total number of rows matching the query.
2105
+ */
2106
+ total_rows?: number;
2107
+ /**
2108
+ * Total number of pages based on the page size.
2109
+ */
2110
+ total_pages?: number;
2111
+ };
2095
2112
  export type AcknowledgeCriticalAlertData = {
2096
2113
  /**
2097
2114
  * The ID of the critical alert to acknowledge
@@ -2145,7 +2162,17 @@ export type WorkspaceGetCriticalAlertsData = {
2145
2162
  pageSize?: number;
2146
2163
  workspace: string;
2147
2164
  };
2148
- export type WorkspaceGetCriticalAlertsResponse = Array<CriticalAlert>;
2165
+ export type WorkspaceGetCriticalAlertsResponse = {
2166
+ alerts?: Array<CriticalAlert>;
2167
+ /**
2168
+ * Total number of rows matching the query.
2169
+ */
2170
+ total_rows?: number;
2171
+ /**
2172
+ * Total number of pages based on the page size.
2173
+ */
2174
+ total_pages?: number;
2175
+ };
2149
2176
  export type WorkspaceAcknowledgeCriticalAlertData = {
2150
2177
  /**
2151
2178
  * The ID of the critical alert to acknowledge
@@ -2706,6 +2733,12 @@ export type GetHubAppByIdResponse = {
2706
2733
  value: unknown;
2707
2734
  };
2708
2735
  };
2736
+ export type GetPublicAppByCustomPathData = {
2737
+ customPath: string;
2738
+ };
2739
+ export type GetPublicAppByCustomPathResponse = AppWithLastVersion & {
2740
+ workspace_id?: string;
2741
+ };
2709
2742
  export type ListSearchAppData = {
2710
2743
  workspace: string;
2711
2744
  };
@@ -2770,6 +2803,8 @@ export type CreateAppData = {
2770
2803
  policy: Policy;
2771
2804
  draft_only?: boolean;
2772
2805
  deployment_message?: string;
2806
+ custom_path?: string;
2807
+ raw_app?: boolean;
2773
2808
  };
2774
2809
  workspace: string;
2775
2810
  };
@@ -2785,6 +2820,11 @@ export type GetAppByPathData = {
2785
2820
  workspace: string;
2786
2821
  };
2787
2822
  export type GetAppByPathResponse = AppWithLastVersion;
2823
+ export type GetAppLiteByPathData = {
2824
+ path: string;
2825
+ workspace: string;
2826
+ };
2827
+ export type GetAppLiteByPathResponse = AppWithLastVersion;
2788
2828
  export type GetAppByPathWithDraftData = {
2789
2829
  path: string;
2790
2830
  workspace: string;
@@ -2848,10 +2888,17 @@ export type UpdateAppData = {
2848
2888
  value?: unknown;
2849
2889
  policy?: Policy;
2850
2890
  deployment_message?: string;
2891
+ custom_path?: string;
2892
+ raw_app?: boolean;
2851
2893
  };
2852
2894
  workspace: string;
2853
2895
  };
2854
2896
  export type UpdateAppResponse = string;
2897
+ export type CustomPathExistsData = {
2898
+ customPath: string;
2899
+ workspace: string;
2900
+ };
2901
+ export type CustomPathExistsResponse = boolean;
2855
2902
  export type ExecuteComponentData = {
2856
2903
  path: string;
2857
2904
  /**
@@ -2860,6 +2907,7 @@ export type ExecuteComponentData = {
2860
2907
  requestBody: {
2861
2908
  component: string;
2862
2909
  path?: string;
2910
+ version?: number;
2863
2911
  args: unknown;
2864
2912
  raw_code?: {
2865
2913
  content: string;
@@ -2868,6 +2916,7 @@ export type ExecuteComponentData = {
2868
2916
  lock?: string;
2869
2917
  cache_ttl?: number;
2870
2918
  };
2919
+ id?: number;
2871
2920
  force_viewer_static_fields?: {
2872
2921
  [key: string]: unknown;
2873
2922
  };
@@ -4180,6 +4229,16 @@ export type GetResumeUrlsResponse = {
4180
4229
  resume: string;
4181
4230
  cancel: string;
4182
4231
  };
4232
+ export type GetSlackApprovalPayloadData = {
4233
+ approver?: string;
4234
+ channelId: string;
4235
+ flowStepId: string;
4236
+ id: string;
4237
+ message?: string;
4238
+ slackResourcePath: string;
4239
+ workspace: string;
4240
+ };
4241
+ export type GetSlackApprovalPayloadResponse = unknown;
4183
4242
  export type ResumeSuspendedJobGetData = {
4184
4243
  approver?: string;
4185
4244
  id: string;
@@ -5416,6 +5475,10 @@ export type CountSearchLogsIndexResponse = {
5416
5475
  [key: string]: unknown;
5417
5476
  };
5418
5477
  };
5478
+ export type ClearIndexData = {
5479
+ idxName: 'JobIndex' | 'ServiceLogIndex';
5480
+ };
5481
+ export type ClearIndexResponse = string;
5419
5482
  export type $OpenApiTs = {
5420
5483
  '/version': {
5421
5484
  get: {
@@ -5799,9 +5862,12 @@ export type $OpenApiTs = {
5799
5862
  };
5800
5863
  '/users/refresh_token': {
5801
5864
  get: {
5865
+ req: {
5866
+ ifExpiringInLessThanS?: number;
5867
+ };
5802
5868
  res: {
5803
5869
  /**
5804
- * free usage
5870
+ * new token
5805
5871
  */
5806
5872
  200: string;
5807
5873
  };
@@ -6980,7 +7046,17 @@ export type $OpenApiTs = {
6980
7046
  /**
6981
7047
  * Successfully retrieved all critical alerts
6982
7048
  */
6983
- 200: Array<CriticalAlert>;
7049
+ 200: {
7050
+ alerts?: Array<CriticalAlert>;
7051
+ /**
7052
+ * Total number of rows matching the query.
7053
+ */
7054
+ total_rows?: number;
7055
+ /**
7056
+ * Total number of pages based on the page size.
7057
+ */
7058
+ total_pages?: number;
7059
+ };
6984
7060
  };
6985
7061
  };
6986
7062
  };
@@ -7133,7 +7209,17 @@ export type $OpenApiTs = {
7133
7209
  /**
7134
7210
  * Successfully retrieved all critical alerts
7135
7211
  */
7136
- 200: Array<CriticalAlert>;
7212
+ 200: {
7213
+ alerts?: Array<CriticalAlert>;
7214
+ /**
7215
+ * Total number of rows matching the query.
7216
+ */
7217
+ total_rows?: number;
7218
+ /**
7219
+ * Total number of pages based on the page size.
7220
+ */
7221
+ total_pages?: number;
7222
+ };
7137
7223
  };
7138
7224
  };
7139
7225
  };
@@ -8282,6 +8368,21 @@ export type $OpenApiTs = {
8282
8368
  };
8283
8369
  };
8284
8370
  };
8371
+ '/apps_u/public_app_by_custom_path/{custom_path}': {
8372
+ get: {
8373
+ req: {
8374
+ customPath: string;
8375
+ };
8376
+ res: {
8377
+ /**
8378
+ * app details
8379
+ */
8380
+ 200: AppWithLastVersion & {
8381
+ workspace_id?: string;
8382
+ };
8383
+ };
8384
+ };
8385
+ };
8285
8386
  '/w/{workspace}/apps/list_search': {
8286
8387
  get: {
8287
8388
  req: {
@@ -8366,6 +8467,8 @@ export type $OpenApiTs = {
8366
8467
  policy: Policy;
8367
8468
  draft_only?: boolean;
8368
8469
  deployment_message?: string;
8470
+ custom_path?: string;
8471
+ raw_app?: boolean;
8369
8472
  };
8370
8473
  workspace: string;
8371
8474
  };
@@ -8406,6 +8509,20 @@ export type $OpenApiTs = {
8406
8509
  };
8407
8510
  };
8408
8511
  };
8512
+ '/w/{workspace}/apps/get/lite/{path}': {
8513
+ get: {
8514
+ req: {
8515
+ path: string;
8516
+ workspace: string;
8517
+ };
8518
+ res: {
8519
+ /**
8520
+ * app lite details
8521
+ */
8522
+ 200: AppWithLastVersion;
8523
+ };
8524
+ };
8525
+ };
8409
8526
  '/w/{workspace}/apps/get/draft/{path}': {
8410
8527
  get: {
8411
8528
  req: {
@@ -8552,6 +8669,8 @@ export type $OpenApiTs = {
8552
8669
  value?: unknown;
8553
8670
  policy?: Policy;
8554
8671
  deployment_message?: string;
8672
+ custom_path?: string;
8673
+ raw_app?: boolean;
8555
8674
  };
8556
8675
  workspace: string;
8557
8676
  };
@@ -8563,6 +8682,20 @@ export type $OpenApiTs = {
8563
8682
  };
8564
8683
  };
8565
8684
  };
8685
+ '/w/{workspace}/apps/custom_path_exists/{custom_path}': {
8686
+ get: {
8687
+ req: {
8688
+ customPath: string;
8689
+ workspace: string;
8690
+ };
8691
+ res: {
8692
+ /**
8693
+ * custom path exists
8694
+ */
8695
+ 200: boolean;
8696
+ };
8697
+ };
8698
+ };
8566
8699
  '/w/{workspace}/apps_u/execute_component/{path}': {
8567
8700
  post: {
8568
8701
  req: {
@@ -8573,6 +8706,7 @@ export type $OpenApiTs = {
8573
8706
  requestBody: {
8574
8707
  component: string;
8575
8708
  path?: string;
8709
+ version?: number;
8576
8710
  args: unknown;
8577
8711
  raw_code?: {
8578
8712
  content: string;
@@ -8581,6 +8715,7 @@ export type $OpenApiTs = {
8581
8715
  lock?: string;
8582
8716
  cache_ttl?: number;
8583
8717
  };
8718
+ id?: number;
8584
8719
  force_viewer_static_fields?: {
8585
8720
  [key: string]: unknown;
8586
8721
  };
@@ -10573,6 +10708,25 @@ export type $OpenApiTs = {
10573
10708
  };
10574
10709
  };
10575
10710
  };
10711
+ '/w/{workspace}/jobs/slack_approval/{id}': {
10712
+ get: {
10713
+ req: {
10714
+ approver?: string;
10715
+ channelId: string;
10716
+ flowStepId: string;
10717
+ id: string;
10718
+ message?: string;
10719
+ slackResourcePath: string;
10720
+ workspace: string;
10721
+ };
10722
+ res: {
10723
+ /**
10724
+ * Interactive slack approval message sent successfully
10725
+ */
10726
+ 200: unknown;
10727
+ };
10728
+ };
10729
+ };
10576
10730
  '/w/{workspace}/jobs_u/resume/{id}/{resume_id}/{signature}': {
10577
10731
  get: {
10578
10732
  req: {
@@ -12883,4 +13037,17 @@ export type $OpenApiTs = {
12883
13037
  };
12884
13038
  };
12885
13039
  };
13040
+ '/srch/index/delete/{idx_name}': {
13041
+ delete: {
13042
+ req: {
13043
+ idxName: 'JobIndex' | 'ServiceLogIndex';
13044
+ };
13045
+ res: {
13046
+ /**
13047
+ * idx to be deleted and container restarting
13048
+ */
13049
+ 200: string;
13050
+ };
13051
+ };
13052
+ };
12886
13053
  };
@@ -1,6 +1,9 @@
1
1
  {
2
- "gitSync": "hub/9087/sync-script-to-git-repo-windmill",
3
- "gitSyncTest": "hub/9073/git-repo-test-read-write-windmill",
2
+ "gitSync_0": "hub/9087/sync-script-to-git-repo-windmill",
3
+ "gitSync_1": "hub/9987/sync-script-to-git-repo-windmill",
4
+ "gitSync": "hub/11498/sync-script-to-git-repo-windmill",
5
+ "gitSyncTest_0": "hub/9073/git-repo-test-read-write-windmill",
6
+ "gitSyncTest": "hub/11499/git-repo-test-read-write-windmill",
4
7
  "slackErrorHandler": "hub/9206/workspace-or-schedule-error-handler-slack",
5
8
  "slackErrorHandler_0": "hub/9079/workspace-or-schedule-error-handler-slack",
6
9
  "slackRecoveryHandler": "hub/9080/slack/schedule-recovery-handler-slack",
@@ -8,4 +11,4 @@
8
11
  "slackReport": "hub/9084/slack",
9
12
  "discordReport": "hub/9085/discord",
10
13
  "smtpReport": "hub/9086/smtp"
11
- }
14
+ }
package/package/infer.js CHANGED
@@ -9,6 +9,7 @@ import initGoParser, { parse_go } from 'windmill-parser-wasm-go';
9
9
  import initPhpParser, { parse_php } from 'windmill-parser-wasm-php';
10
10
  import initRustParser, { parse_rust } from 'windmill-parser-wasm-rust';
11
11
  import initYamlParser, { parse_ansible } from 'windmill-parser-wasm-yaml';
12
+ import initCSharpParser, { parse_csharp } from 'windmill-parser-wasm-csharp';
12
13
  import wasmUrlTs from 'windmill-parser-wasm-ts/windmill_parser_wasm_bg.wasm?url';
13
14
  import wasmUrlRegex from 'windmill-parser-wasm-regex/windmill_parser_wasm_bg.wasm?url';
14
15
  import wasmUrlPy from 'windmill-parser-wasm-py/windmill_parser_wasm_bg.wasm?url';
@@ -16,6 +17,7 @@ import wasmUrlGo from 'windmill-parser-wasm-go/windmill_parser_wasm_bg.wasm?url'
16
17
  import wasmUrlPhp from 'windmill-parser-wasm-php/windmill_parser_wasm_bg.wasm?url';
17
18
  import wasmUrlRust from 'windmill-parser-wasm-rust/windmill_parser_wasm_bg.wasm?url';
18
19
  import wasmUrlYaml from 'windmill-parser-wasm-yaml/windmill_parser_wasm_bg.wasm?url';
20
+ import wasmUrlCSharp from 'windmill-parser-wasm-csharp/windmill_parser_wasm_bg.wasm?url';
19
21
  import { workspaceStore } from './stores.js';
20
22
  import { argSigToJsonSchemaType } from './inferArgSig.js';
21
23
  const loadSchemaLastRun = writable(undefined);
@@ -44,6 +46,9 @@ async function initWasmGo() {
44
46
  async function initWasmYaml() {
45
47
  await initYamlParser(wasmUrlYaml);
46
48
  }
49
+ async function initWasmCSharp() {
50
+ await initCSharpParser(wasmUrlCSharp);
51
+ }
47
52
  export async function inferArgs(language, code, schema, mainOverride) {
48
53
  const lastRun = get(loadSchemaLastRun);
49
54
  let inferedSchema;
@@ -152,6 +157,10 @@ export async function inferArgs(language, code, schema, mainOverride) {
152
157
  await initWasmYaml();
153
158
  inferedSchema = JSON.parse(parse_ansible(code));
154
159
  }
160
+ else if (language == 'csharp') {
161
+ await initWasmCSharp();
162
+ inferedSchema = JSON.parse(parse_csharp(code));
163
+ }
155
164
  else {
156
165
  return null;
157
166
  }
@@ -1,5 +1,7 @@
1
1
  import { type Script } from './gen';
2
2
  import type { SupportedLanguage } from './common';
3
+ export declare const BUN_PREPROCESSOR_MODULE_CODE = "\nexport async function preprocessor(\n\twm_trigger: {\n\t\tkind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka',\n\t\thttp?: {\n\t\t\troute: string // The route path, e.g. \"/users/:id\"\n\t\t\tpath: string // The actual path called, e.g. \"/users/123\"\n\t\t\tmethod: string\n\t\t\tparams: Record<string, string> // path parameters\n\t\t\tquery: Record<string, string> // query parameters\n\t\t\theaders: Record<string, string>\n\t\t},\n\t\twebsocket?: {\n\t\t\turl: string // The websocket url\n\t\t},\n\t\tkafka?: {\n\t\t\tbrokers: string[]\n\t\t\ttopic: string\n\t\t\tgroup_id: string\n\t\t}\n\t},\n\t/* your other args */ \n) {\n\treturn {\n\t\t// return the args to be passed to the runnable\n\t}\n}\n";
4
+ export declare const PYTHON_PREPROCESSOR_MODULE_CODE = "from typing import TypedDict, Literal\n\nclass Http(TypedDict):\n\troute: str # The route path, e.g. \"/users/:id\"\n\tpath: str # The actual path called, e.g. \"/users/123\"\n\tmethod: str\n\tparams: dict[str, str]\n\tquery: dict[str, str]\n\theaders: dict[str, str]\n\nclass Websocket(TypedDict):\n\turl: str # The websocket url\n\nclass Kafka(TypedDict):\n\ttopic: str\n\tbrokers: list[str]\n\tgroup_id: str\n\nclass WmTrigger(TypedDict):\n\tkind: Literal[\"http\", \"email\", \"webhook\", \"websocket\", \"kafka\"]\n\thttp: Http | None\n\twebsocket: Websocket | None\n\tkafka: Kafka | None\n\ndef preprocessor(\n\twm_trigger: WmTrigger,\n\t# your other args\n):\n\treturn {\n\t\t# return the args to be passed to the runnable\n\t}\n";
3
5
  export declare const INITIAL_CODE: {
4
6
  bun: {
5
7
  script: string;
@@ -67,6 +69,9 @@ export declare const INITIAL_CODE: {
67
69
  ansible: {
68
70
  script: string;
69
71
  };
72
+ csharp: {
73
+ script: string;
74
+ };
70
75
  docker: {
71
76
  script: string;
72
77
  };
@@ -223,6 +223,7 @@ export async function main(message: string, name: string, step_id: string) {
223
223
  }
224
224
  `;
225
225
  const POSTGRES_INIT_CODE = `-- to pin the database use '-- database f/your/path'
226
+ -- to only return the result of the last query use '--return_last_result'
226
227
  -- $1 name1 = default arg
227
228
  -- $2 name2
228
229
  -- $3 name3
@@ -322,6 +323,54 @@ fn main(who_to_greet: String, numbers: Vec<i8>) -> anyhow::Result<Ret> {
322
323
  })
323
324
  }
324
325
  `;
326
+ const CSHARP_INIT_CODE = `#r "nuget: Humanizer, 2.14.1"
327
+
328
+ using System;
329
+ using System.Linq;
330
+ using Humanizer;
331
+
332
+
333
+ class Script
334
+ {
335
+ public static int Main(string[] extraWords, string word = "clue", int highNumberThreshold = 50)
336
+ {
337
+ Console.WriteLine("Hello, World!");
338
+
339
+ Console.WriteLine("Your chosen words are pluralized here:");
340
+
341
+ string[] newWordArray = extraWords.Concat(new[] { word }).ToArray();
342
+
343
+ foreach (var s in newWordArray)
344
+ {
345
+ Console.WriteLine($" {s.Pluralize()}");
346
+ }
347
+
348
+ var random = new Random();
349
+ int randomNumber = random.Next(1, 101);
350
+
351
+ Console.WriteLine($"Random number: {randomNumber}");
352
+
353
+ string greeting = randomNumber > highNumberThreshold ? "High number!" : "Low number!";
354
+ greeting += " (according to the threshold parameter)";
355
+ Console.WriteLine(greeting);
356
+ // Humanize a timespan
357
+ var timespan = TimeSpan.FromMinutes(90);
358
+ Console.WriteLine($"Timespan: {timespan.Humanize()}");
359
+
360
+ // Humanize numbers into words
361
+ int number = 123;
362
+ Console.WriteLine($"Number: {number.ToWords()}");
363
+
364
+ // Pluralize words
365
+ string singular = "apple";
366
+
367
+ // Humanize date difference
368
+ var date = DateTime.UtcNow.AddDays(-3);
369
+ Console.WriteLine($"Date: {date.Humanize()}");
370
+ return 2;
371
+ }
372
+ }
373
+ `;
325
374
  const FETCH_INIT_CODE = `export async function main(
326
375
  url: string | undefined,
327
376
  method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'OPTIONS' = 'GET',
@@ -478,7 +527,7 @@ export async function main(approver?: string) {
478
527
 
479
528
  // add a form in Advanced - Suspend
480
529
  // all on approval steps: https://www.windmill.dev/docs/flows/flow_approval`;
481
- const BUN_PREPROCESSOR_MODULE_CODE = `
530
+ export const BUN_PREPROCESSOR_MODULE_CODE = `
482
531
  export async function preprocessor(
483
532
  wm_trigger: {
484
533
  kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka',
@@ -502,7 +551,7 @@ export async function preprocessor(
502
551
  /* your other args */
503
552
  ) {
504
553
  return {
505
- // return the args to be passed to the flow
554
+ // return the args to be passed to the runnable
506
555
  }
507
556
  }
508
557
  `;
@@ -530,7 +579,7 @@ export async function preprocessor(
530
579
  /* your other args */
531
580
  ) {
532
581
  return {
533
- // return the args to be passed to the flow
582
+ // return the args to be passed to the runnable
534
583
  }
535
584
  }
536
585
  `;
@@ -560,7 +609,7 @@ def main():
560
609
 
561
610
  # add a form in Advanced - Suspend
562
611
  # all on approval steps: https://www.windmill.dev/docs/flows/flow_approval`;
563
- const PYTHON_PREPROCESSOR_MODULE_CODE = `from typing import TypedDict, Literal
612
+ export const PYTHON_PREPROCESSOR_MODULE_CODE = `from typing import TypedDict, Literal
564
613
 
565
614
  class Http(TypedDict):
566
615
  route: str # The route path, e.g. "/users/:id"
@@ -589,12 +638,15 @@ def preprocessor(
589
638
  # your other args
590
639
  ):
591
640
  return {
592
- # return the args to be passed to the flow
641
+ # return the args to be passed to the runnable
593
642
  }
594
643
  `;
595
644
  const DOCKER_INIT_CODE = `# shellcheck shell=bash
596
- # Bash script that calls docker as a client to the host daemon
597
- # See documentation: https://www.windmill.dev/docs/advanced/docker
645
+ # docker
646
+ # The annotation "docker" above is important, it tells windmill that after
647
+ # the end of the bash script, it should manage the container at id $WM_JOB_ID:
648
+ # pipe logs, monitor memory usage, kill container if job is cancelled.
649
+
598
650
  msg="\${1:-world}"
599
651
 
600
652
  IMAGE="alpine:latest"
@@ -602,7 +654,9 @@ COMMAND="/bin/echo Hello $msg"
602
654
 
603
655
  # ensure that the image is up-to-date
604
656
  docker pull $IMAGE
605
- docker run --rm $IMAGE $COMMAND
657
+
658
+ # if using the 'docker' mode, name it with $WM_JOB_ID for windmill to monitor it
659
+ docker run --name $WM_JOB_ID -it -d $IMAGE $COMMAND
606
660
  `;
607
661
  const POWERSHELL_INIT_CODE = `param($Msg, $Dflt = "default value", [int]$Nb = 3)
608
662
 
@@ -728,6 +782,9 @@ export const INITIAL_CODE = {
728
782
  ansible: {
729
783
  script: ANSIBLE_PLAYBOOK_INIT_CODE
730
784
  },
785
+ csharp: {
786
+ script: CSHARP_INIT_CODE
787
+ },
731
788
  docker: {
732
789
  script: DOCKER_INIT_CODE
733
790
  },
@@ -844,6 +901,9 @@ export function initialCode(language, kind, subkind) {
844
901
  else if (language == 'ansible') {
845
902
  return INITIAL_CODE.ansible.script;
846
903
  }
904
+ else if (language == 'csharp') {
905
+ return INITIAL_CODE.csharp.script;
906
+ }
847
907
  else if (language == 'bun' || language == 'bunnative') {
848
908
  if (kind == 'trigger') {
849
909
  return INITIAL_CODE.bun.trigger;
@@ -1,6 +1,6 @@
1
1
  import type { Schema, SupportedLanguage } from './common';
2
2
  import { type Script } from './gen';
3
- export declare function scriptLangToEditorLang(lang: Script['language'] | 'bunnative' | 'frontend' | undefined): "go" | "powershell" | "graphql" | "php" | "rust" | "sql" | "yaml" | "typescript" | "python" | "shell";
3
+ export declare function scriptLangToEditorLang(lang: Script['language'] | 'bunnative' | 'frontend' | undefined): "go" | "powershell" | "graphql" | "php" | "rust" | "csharp" | "sql" | "yaml" | "typescript" | "python" | "shell";
4
4
  export type ScriptSchedule = {
5
5
  summary: string | undefined;
6
6
  args: Record<string, any>;