windmill-components 1.550.0 → 1.555.0

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 (268) hide show
  1. package/package/aiStore.d.ts +13 -0
  2. package/package/aiStore.js +70 -0
  3. package/package/common.d.ts +2 -1
  4. package/package/components/AIProviderPicker.svelte +25 -8
  5. package/package/components/ArgEnum.svelte +3 -2
  6. package/package/components/ArgEnum.svelte.d.ts +1 -0
  7. package/package/components/ArgInput.svelte +235 -174
  8. package/package/components/ArgInput.svelte.d.ts +4 -1
  9. package/package/components/ArrayTypeNarrowing.svelte +38 -32
  10. package/package/components/AutoscalingEvents.svelte +21 -5
  11. package/package/components/AutoscalingEvents.svelte.d.ts +4 -18
  12. package/package/components/DateTimeInput.svelte +8 -6
  13. package/package/components/DeployButton.svelte +1 -1
  14. package/package/components/Dev.svelte +6 -4
  15. package/package/components/EditableSchemaForm.svelte +7 -6
  16. package/package/components/Editor.svelte +2 -1
  17. package/package/components/EditorSettings.svelte +5 -5
  18. package/package/components/EditorSettings.svelte.d.ts +4 -18
  19. package/package/components/FakeMonacoPlaceHolder.svelte +4 -2
  20. package/package/components/FakeMonacoPlaceHolder.svelte.d.ts +1 -0
  21. package/package/components/FieldHeader.svelte +5 -7
  22. package/package/components/FirstStepInputs.svelte +1 -1
  23. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  24. package/package/components/FlowPlugConnect.svelte +8 -2
  25. package/package/components/FlowPlugConnect.svelte.d.ts +1 -0
  26. package/package/components/FlowPreviewContent.svelte +113 -92
  27. package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
  28. package/package/components/FlowStatusViewer.svelte +3 -2
  29. package/package/components/FlowStatusViewerInner.svelte +1 -1
  30. package/package/components/FolderEditor.svelte +6 -7
  31. package/package/components/GroupEditor.svelte +148 -141
  32. package/package/components/GroupEditor.svelte.d.ts +5 -4
  33. package/package/components/InputTransformForm.svelte +88 -82
  34. package/package/components/InputTransformSchemaForm.svelte +5 -4
  35. package/package/components/InstanceSetting.svelte +17 -9
  36. package/package/components/JsonEditor.svelte +18 -9
  37. package/package/components/JsonEditor.svelte.d.ts +1 -1
  38. package/package/components/JsonInputs.svelte +1 -1
  39. package/package/components/ModulePreviewForm.svelte +23 -19
  40. package/package/components/NumberTypeNarrowing.svelte +32 -16
  41. package/package/components/ObjectStoreConfigSettings.svelte +27 -19
  42. package/package/components/Path.svelte +2 -8
  43. package/package/components/Path.svelte.d.ts +1 -1
  44. package/package/components/ResourceEditor.svelte +3 -10
  45. package/package/components/ResourcePicker.svelte +85 -72
  46. package/package/components/ResourcePicker.svelte.d.ts +2 -0
  47. package/package/components/RunChart.svelte +1 -1
  48. package/package/components/RunForm.svelte +11 -7
  49. package/package/components/S3ArrayHelperButton.svelte +12 -6
  50. package/package/components/S3ArrayHelperButton.svelte.d.ts +1 -0
  51. package/package/components/S3FilePicker.svelte +1 -1
  52. package/package/components/SchemaForm.svelte +18 -10
  53. package/package/components/SchemaForm.svelte.d.ts +7 -1
  54. package/package/components/SchemaFormWithArgPicker.svelte +1 -1
  55. package/package/components/ScriptBuilder.svelte +2 -2
  56. package/package/components/ScriptEditor.svelte +4 -3
  57. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  58. package/package/components/ShareModal.svelte +4 -4
  59. package/package/components/SimpleEditor.svelte +6 -2
  60. package/package/components/SimpleEditor.svelte.d.ts +3 -0
  61. package/package/components/StringTypeNarrowing.svelte +5 -1
  62. package/package/components/SuperadminSettingsInner.svelte +3 -3
  63. package/package/components/TemplateEditor.svelte +18 -9
  64. package/package/components/Toast.svelte +2 -7
  65. package/package/components/Toast.svelte.d.ts +4 -18
  66. package/package/components/Toggle.svelte +17 -7
  67. package/package/components/ToggleHubWorkspaceQuick.svelte +3 -3
  68. package/package/components/WorkerGroup.svelte +2 -14
  69. package/package/components/apps/components/buttons/AppButton.svelte +57 -39
  70. package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -2
  71. package/package/components/apps/components/display/dbtable/queries/insert.js +2 -1
  72. package/package/components/apps/components/display/dbtable/utils.d.ts +8 -8
  73. package/package/components/apps/components/display/table/utils.js +13 -3
  74. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -3
  75. package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -1
  76. package/package/components/apps/editor/AppEditorHeader.svelte +33 -271
  77. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +233 -0
  78. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +18 -0
  79. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +47 -0
  80. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +8 -0
  81. package/package/components/apps/editor/GridEditor.svelte +7 -2
  82. package/package/components/apps/editor/appDeploy.svelte.d.ts +1 -0
  83. package/package/components/apps/editor/appDeploy.svelte.js +6 -0
  84. package/package/components/apps/editor/appUtils.d.ts +1 -0
  85. package/package/components/apps/editor/appUtils.js +30 -1
  86. package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -1
  87. package/package/components/apps/editor/component/components.d.ts +3 -3
  88. package/package/components/apps/editor/component/components.js +1 -1
  89. package/package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
  90. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -4
  91. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  92. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  93. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  94. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +58 -8
  95. package/package/components/auditLogs/AuditLogsFilters.svelte +1 -1
  96. package/package/components/common/ResizeTransitionWrapper.svelte +39 -0
  97. package/package/components/common/ResizeTransitionWrapper.svelte.d.ts +12 -0
  98. package/package/components/common/badge/CountBadge.svelte +29 -0
  99. package/package/components/common/badge/CountBadge.svelte.d.ts +8 -0
  100. package/package/components/common/button/Button.svelte +1 -0
  101. package/package/components/common/button/ConnectionButton.svelte +6 -1
  102. package/package/components/common/button/ConnectionButton.svelte.d.ts +2 -0
  103. package/package/components/common/button/RefreshButton.svelte +8 -4
  104. package/package/components/common/button/RefreshButton.svelte.d.ts +3 -0
  105. package/package/components/common/calendarPicker/CalendarPicker.svelte +1 -1
  106. package/package/components/common/fileInput/FileInput.svelte +7 -6
  107. package/package/components/common/fileUpload/S3ArgInput.svelte +11 -9
  108. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +1 -0
  109. package/package/components/common/popup/PopupV2.svelte +6 -0
  110. package/package/components/common/toggleButton-v2/ToggleButton.svelte +17 -26
  111. package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +16 -30
  112. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
  113. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +3 -3
  114. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
  115. package/package/components/copilot/CodeCompletionStatus.svelte +2 -1
  116. package/package/components/copilot/CronGen.svelte +1 -1
  117. package/package/components/copilot/FlowInlineScriptAIButton.svelte +2 -2
  118. package/package/components/copilot/IteratorGen.svelte +30 -25
  119. package/package/components/copilot/IteratorGen.svelte.d.ts +8 -7
  120. package/package/components/copilot/MetadataGen.svelte +4 -3
  121. package/package/components/copilot/PredicateGen.svelte +15 -12
  122. package/package/components/copilot/PredicateGen.svelte.d.ts +5 -4
  123. package/package/components/copilot/RegexGen.svelte +1 -1
  124. package/package/components/copilot/ScriptFix.svelte +1 -1
  125. package/package/components/copilot/ScriptGen.svelte +2 -1
  126. package/package/components/copilot/StepGenQuick.svelte +15 -16
  127. package/package/components/copilot/StepGenQuick.svelte.d.ts +14 -13
  128. package/package/components/copilot/StepInputGen.svelte +50 -36
  129. package/package/components/copilot/StepInputGen.svelte.d.ts +13 -10
  130. package/package/components/copilot/StepInputsGen.svelte +18 -19
  131. package/package/components/copilot/StepInputsGen.svelte.d.ts +4 -18
  132. package/package/components/copilot/autocomplete/Autocompletor.js +1 -1
  133. package/package/components/copilot/autocomplete/request.js +1 -1
  134. package/package/components/copilot/chat/AIChat.svelte +2 -1
  135. package/package/components/copilot/chat/AIChatManager.svelte.js +2 -1
  136. package/package/components/copilot/chat/AiChatLayout.svelte +2 -1
  137. package/package/components/copilot/chat/ProviderModelSelector.svelte +10 -9
  138. package/package/components/copilot/chat/ProviderModelSelector.svelte.d.ts +2 -17
  139. package/package/components/copilot/chat/flow/FlowAIButton.svelte +1 -1
  140. package/package/components/copilot/chat/script/core.js +2 -1
  141. package/package/components/copilot/chat/shared.js +2 -1
  142. package/package/components/copilot/lib.js +2 -1
  143. package/package/components/details/DetailPageLayout.svelte +3 -2
  144. package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
  145. package/package/components/flows/CreateActionsFlow.svelte +1 -1
  146. package/package/components/flows/FlowChatInterface.svelte +404 -0
  147. package/package/components/flows/FlowChatInterface.svelte.d.ts +19 -0
  148. package/package/components/flows/FlowChatMessage.svelte +41 -0
  149. package/package/components/flows/FlowChatMessage.svelte.d.ts +9 -0
  150. package/package/components/flows/FlowConversationsSidebar.svelte +213 -0
  151. package/package/components/flows/FlowConversationsSidebar.svelte.d.ts +15 -0
  152. package/package/components/flows/FlowEditor.svelte.d.ts +1 -1
  153. package/package/components/flows/FlowModuleIcon.svelte +10 -10
  154. package/package/components/flows/common/FlowCard.svelte +10 -2
  155. package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
  156. package/package/components/flows/common/FlowCardHeader.svelte +2 -1
  157. package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
  158. package/package/components/flows/content/DynamicInputHelpBox.svelte +4 -4
  159. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -1
  160. package/package/components/flows/content/FlowInput.svelte +381 -259
  161. package/package/components/flows/content/FlowInput.svelte.d.ts +1 -1
  162. package/package/components/flows/content/FlowInputsQuick.svelte +55 -34
  163. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +2 -2
  164. package/package/components/flows/content/FlowModuleComponent.svelte +5 -10
  165. package/package/components/flows/flowInfers.d.ts +60 -0
  166. package/package/components/flows/flowInfers.js +72 -66
  167. package/package/components/flows/{flowStore.d.ts → flowStore.svelte.d.ts} +1 -0
  168. package/package/components/flows/header/FlowPreviewButtons.svelte +1 -1
  169. package/package/components/flows/map/FlowErrorHandlerItem.svelte +4 -2
  170. package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
  171. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
  172. package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -2
  173. package/package/components/flows/map/FlowStickyNode.svelte +2 -2
  174. package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
  175. package/package/components/flows/map/InsertModuleButton.svelte +5 -2
  176. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +4 -3
  177. package/package/components/flows/map/InsertModuleInner.svelte +3 -1
  178. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +2 -2
  179. package/package/components/flows/map/VirtualItem.svelte +1 -2
  180. package/package/components/flows/pickers/PickHubScriptQuick.svelte +8 -3
  181. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
  182. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +15 -12
  183. package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -15
  184. package/package/components/graph/FlowGraphV2.svelte +2 -1
  185. package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
  186. package/package/components/graph/graphBuilder.svelte.d.ts +2 -0
  187. package/package/components/graph/graphBuilder.svelte.js +1 -0
  188. package/package/components/graph/renderers/edges/BaseEdge.svelte +1 -0
  189. package/package/components/graph/renderers/nodes/InputNode.svelte +13 -2
  190. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +2 -27
  191. package/package/components/instanceSettings.js +17 -0
  192. package/package/components/progressBar/ProgressBar.svelte +1 -1
  193. package/package/components/raw_apps/FileEditorIcon.svelte +1 -1
  194. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +4 -18
  195. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +2 -8
  196. package/package/components/raw_apps/RawAppBackgroundRunner.svelte.d.ts +4 -18
  197. package/package/components/raw_apps/RawAppEditor.svelte +6 -7
  198. package/package/components/raw_apps/RawAppEditorHeader.svelte +48 -301
  199. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +18 -19
  200. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +10 -16
  201. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +13 -13
  202. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +8 -11
  203. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -2
  204. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +0 -1
  205. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +7 -13
  206. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +8 -8
  207. package/package/components/raw_apps/RawAppPreview.svelte +3 -7
  208. package/package/components/raw_apps/RawAppPreview.svelte.d.ts +5 -19
  209. package/package/components/raw_apps/utils.d.ts +1 -1
  210. package/package/components/raw_apps/utils.js +3 -3
  211. package/package/components/runs/RunOption.svelte +2 -2
  212. package/package/components/runs/RunsFilter.svelte +15 -12
  213. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  214. package/package/components/schema/EditableSchemaDrawer.svelte +19 -18
  215. package/package/components/schema/FlowPropertyEditor.svelte +9 -2
  216. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  217. package/package/components/schema/PropertyEditor.svelte +22 -26
  218. package/package/components/schema/SchemaFormDND.svelte +3 -2
  219. package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
  220. package/package/components/select/DraggableTags.svelte +2 -2
  221. package/package/components/select/MultiSelect.svelte +14 -8
  222. package/package/components/select/Select.svelte +12 -5
  223. package/package/components/select/Select.svelte.d.ts +11 -0
  224. package/package/components/select/SelectDropdown.svelte +98 -46
  225. package/package/components/select/SelectDropdown.svelte.d.ts +10 -0
  226. package/package/components/select/utils.svelte.js +2 -0
  227. package/package/components/settings/CreateToken.svelte +76 -49
  228. package/package/components/settings/WorkspaceUserSettings.svelte +20 -17
  229. package/package/components/sidebar/CriticalAlertTable.svelte +2 -1
  230. package/package/components/sidebar/Linkify.svelte +14 -0
  231. package/package/components/sidebar/Linkify.svelte.d.ts +5 -0
  232. package/package/components/sidebar/WorkspaceMenu.svelte +8 -3
  233. package/package/components/table/tableUtils.js +1 -1
  234. package/package/components/text_input/TextInput.svelte +30 -0
  235. package/package/components/text_input/TextInput.svelte.d.ts +17 -0
  236. package/package/components/triggers/TriggersEditor.svelte +11 -1
  237. package/package/components/triggers/triggers.svelte.d.ts +1 -1
  238. package/package/components/triggers/triggers.svelte.js +8 -4
  239. package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +2 -2
  240. package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +3 -0
  241. package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +49 -17
  242. package/package/components/tutorials/Tutorial.svelte +9 -0
  243. package/package/components/tutorials/Tutorial.svelte.d.ts +1 -0
  244. package/package/components/tutorials/app/AppTutorial.svelte +41 -57
  245. package/package/components/tutorials/app/BackgroundRunnablesTutorial.svelte +3 -5
  246. package/package/components/tutorials/app/ConnectionTutorial.svelte +2 -2
  247. package/package/components/tutorials/utils.js +2 -154
  248. package/package/components/vscode.js +16 -8
  249. package/package/components/workspaceSettings/AISettings.svelte +4 -3
  250. package/package/components/workspaceSettings/CreateWorkspace.svelte +2 -2
  251. package/package/components/workspaceSettings/DucklakeSettings.svelte +64 -7
  252. package/package/components/workspaceSettings/StorageSettings.svelte +24 -26
  253. package/package/editorUtils.d.ts +1 -1
  254. package/package/gen/core/OpenAPI.js +1 -1
  255. package/package/gen/schemas.gen.d.ts +82 -1
  256. package/package/gen/schemas.gen.js +82 -1
  257. package/package/gen/services.gen.d.ts +175 -1
  258. package/package/gen/services.gen.js +345 -2
  259. package/package/gen/types.gen.d.ts +1324 -549
  260. package/package/script_helpers.js +5 -5
  261. package/package/services/JobManager.js +4 -2
  262. package/package/stores.d.ts +4 -13
  263. package/package/stores.js +5 -68
  264. package/package/toast.js +2 -1
  265. package/package/utils.d.ts +1 -0
  266. package/package/utils.js +3 -0
  267. package/package.json +3 -3
  268. /package/package/components/flows/{flowStore.js → flowStore.svelte.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { deepEqual } from 'fast-equals';
2
- import { findGridItem } from '../apps/editor/appUtils';
2
+ import { emptyApp, findGridItem } from '../apps/editor/appUtils';
3
3
  export function setInputBySelector(selector, value) {
4
4
  const input = document.querySelector(selector);
5
5
  if (input) {
@@ -36,154 +36,6 @@ export function selectOptionsBySelector(selector, value) {
36
36
  export function isFlowTainted(flow) {
37
37
  return (flow.value.modules.length > 0 || Object.keys(flow?.schema?.properties ?? {}).length > 0);
38
38
  }
39
- const emptyApp = {
40
- grid: [
41
- {
42
- '3': {
43
- fixed: false,
44
- x: 0,
45
- y: 0,
46
- fullHeight: false,
47
- w: 6,
48
- h: 2
49
- },
50
- '12': {
51
- fixed: false,
52
- x: 0,
53
- y: 0,
54
- fullHeight: false,
55
- w: 12,
56
- h: 2
57
- },
58
- data: {
59
- type: 'containercomponent',
60
- configuration: {},
61
- customCss: {
62
- container: {
63
- class: '!p-0',
64
- style: ''
65
- }
66
- },
67
- numberOfSubgrids: 1,
68
- id: 'a'
69
- },
70
- id: 'a'
71
- }
72
- ],
73
- fullscreen: false,
74
- unusedInlineScripts: [],
75
- hiddenInlineScripts: [],
76
- theme: {
77
- type: 'path',
78
- path: 'f/app_themes/theme_0'
79
- },
80
- subgrids: {
81
- 'a-0': [
82
- {
83
- '3': {
84
- fixed: false,
85
- x: 0,
86
- y: 0,
87
- fullHeight: false,
88
- w: 6,
89
- h: 1
90
- },
91
- '12': {
92
- fixed: false,
93
- x: 0,
94
- y: 0,
95
- fullHeight: false,
96
- w: 6,
97
- h: 1
98
- },
99
- data: {
100
- type: 'textcomponent',
101
- configuration: {
102
- style: {
103
- type: 'static',
104
- value: 'Body'
105
- },
106
- copyButton: {
107
- type: 'static',
108
- value: false
109
- },
110
- tooltip: {
111
- type: 'evalv2',
112
- value: '',
113
- fieldType: 'text',
114
- expr: '`Author: ${ctx.author}`',
115
- connections: [
116
- {
117
- componentId: 'ctx',
118
- id: 'author'
119
- }
120
- ]
121
- },
122
- disableNoText: {
123
- type: 'static',
124
- value: true,
125
- fieldType: 'boolean'
126
- }
127
- },
128
- componentInput: {
129
- type: 'templatev2',
130
- fieldType: 'template',
131
- eval: '${ctx.summary}',
132
- connections: [
133
- {
134
- id: 'summary',
135
- componentId: 'ctx'
136
- }
137
- ]
138
- },
139
- customCss: {
140
- text: {
141
- class: 'text-xl font-semibold whitespace-nowrap truncate',
142
- style: ''
143
- },
144
- container: {
145
- class: '',
146
- style: ''
147
- }
148
- },
149
- horizontalAlignment: 'left',
150
- verticalAlignment: 'center',
151
- id: 'b'
152
- },
153
- id: 'b'
154
- },
155
- {
156
- '3': {
157
- fixed: false,
158
- x: 0,
159
- y: 1,
160
- fullHeight: false,
161
- w: 3,
162
- h: 1
163
- },
164
- '12': {
165
- fixed: false,
166
- x: 6,
167
- y: 0,
168
- fullHeight: false,
169
- w: 6,
170
- h: 1
171
- },
172
- data: {
173
- type: 'recomputeallcomponent',
174
- configuration: {},
175
- menuItems: [],
176
- horizontalAlignment: 'right',
177
- verticalAlignment: 'center',
178
- id: 'c'
179
- },
180
- id: 'c'
181
- }
182
- ]
183
- },
184
- hideLegacyTopBar: true,
185
- norefreshbar: false
186
- };
187
39
  export function isAppTainted(app) {
188
40
  if (app.hideLegacyTopBar === true) {
189
41
  // An empty app should have only have a topbar and no hidden inline scripts
@@ -195,7 +47,7 @@ export function isAppTainted(app) {
195
47
  return true;
196
48
  }
197
49
  // Check if the current app is different from an empty app
198
- return !deepEqual(app, emptyApp);
50
+ return !deepEqual(app, emptyApp());
199
51
  }
200
52
  else {
201
53
  // For older apps,
@@ -224,14 +76,12 @@ export function updateFlowModuleById(flow, id, callback) {
224
76
  }
225
77
  };
226
78
  dfs(flow.value.modules);
227
- flow = flow;
228
79
  }
229
80
  export function updateBackgroundRunnableCode(app, index, newCode) {
230
81
  const script = app.hiddenInlineScripts[index];
231
82
  if (script.type === 'runnableByName' && script.inlineScript) {
232
83
  script.inlineScript.content = newCode;
233
84
  }
234
- app = app;
235
85
  }
236
86
  export function updateInlineRunnableCode(app, componentId, newCode) {
237
87
  const gridItem = findGridItem(app, componentId);
@@ -241,7 +91,6 @@ export function updateInlineRunnableCode(app, componentId, newCode) {
241
91
  gridItem.data.componentInput.runnable.inlineScript.content = newCode;
242
92
  }
243
93
  }
244
- app = app;
245
94
  }
246
95
  export function connectComponentSourceToOutput(app, componentId, targetId) {
247
96
  const gridItem = findGridItem(app, componentId);
@@ -258,7 +107,6 @@ export function connectComponentSourceToOutput(app, componentId, targetId) {
258
107
  ]
259
108
  };
260
109
  }
261
- app = app;
262
110
  }
263
111
  export function connectInlineRunnableInputToComponentOutput(app, sourceComponentId, sourceField, targetComponentId, targetField, fieldType = 'text') {
264
112
  const gridItem = findGridItem(app, sourceComponentId);
@@ -110,7 +110,7 @@ export async function initializeVscode(caller, htmlContainer) {
110
110
  token: 'comment'
111
111
  },
112
112
  {
113
- foreground: 'a3be8c',
113
+ foreground: 'b3deac',
114
114
  token: 'string'
115
115
  },
116
116
  {
@@ -122,7 +122,7 @@ export async function initializeVscode(caller, htmlContainer) {
122
122
  token: 'constant.language'
123
123
  },
124
124
  {
125
- foreground: '81a1c1',
125
+ foreground: '92bae6',
126
126
  token: 'keyword'
127
127
  },
128
128
  {
@@ -179,15 +179,20 @@ export async function initializeVscode(caller, htmlContainer) {
179
179
  {
180
180
  foreground: '8fbcbb',
181
181
  token: 'variable.other.constant'
182
- }
182
+ },
183
+ { token: 'string.value.json', foreground: 'e8b886' }, // string values in JSON
184
+ { token: 'keyword.json', foreground: 'e8b886' } // true, false, null in JSON
183
185
  ],
184
186
  colors: {
185
187
  'editor.foreground': '#D8DEE9',
186
- 'editor.background': '#272D38',
187
- 'editor.selectionBackground': '#434C5ECC',
188
+ 'editor.background': '#00000000',
189
+ 'editor.selectionBackground': '#515A6D',
190
+ 'editor.inactiveSelectionBackground': '#515A6DB0',
188
191
  'editor.lineHighlightBackground': '#3B4252',
189
192
  'editorCursor.foreground': '#D8DEE9',
190
- 'editorWhitespace.foreground': '#434C5ECC'
193
+ 'editorWhitespace.foreground': '#515A6D',
194
+ 'editorIndentGuide.background1': '#5A647860',
195
+ 'editorIndentGuide.activeBackground1': '#6A7488'
191
196
  }
192
197
  });
193
198
  meditor.defineTheme('myTheme', {
@@ -195,8 +200,11 @@ export async function initializeVscode(caller, htmlContainer) {
195
200
  inherit: true,
196
201
  rules: [],
197
202
  colors: {
198
- 'editorLineNumber.foreground': '#999',
199
- 'editorGutter.background': '#F9FAFB'
203
+ 'editor.background': '#FFFFFF00',
204
+ 'editor.foreground': '#2d3748',
205
+ 'editorLineNumber.foreground': '#C2C9D1',
206
+ 'editorLineNumber.activeForeground': '#989DA5',
207
+ 'editorGutter.background': '#FFFFFF00'
200
208
  }
201
209
  });
202
210
  if (document.documentElement.classList.contains('dark')) {
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">import { WorkspaceService } from '../../gen';
2
- import { setCopilotInfo, workspaceStore } from '../../stores';
2
+ import { workspaceStore } from '../../stores';
3
3
  import { sendUserToast } from '../../toast';
4
4
  import { AI_PROVIDERS, fetchAvailableModels } from '../copilot/lib';
5
5
  import TestAiKey from '../copilot/TestAIKey.svelte';
@@ -18,6 +18,7 @@ import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelt
18
18
  import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
19
19
  import autosize from '../../autosize';
20
20
  import ModelTokenLimits from './ModelTokenLimits.svelte';
21
+ import { setCopilotInfo } from '../../aiStore';
21
22
  const MAX_CUSTOM_PROMPT_LENGTH = 5000;
22
23
  let { aiProviders = $bindable(), codeCompletionModel = $bindable(), defaultModel = $bindable(), customPrompts = $bindable(), maxTokensPerModel = $bindable(), usingOpenaiClientCredentialsOauth = $bindable() } = $props();
23
24
  let fetchedAiModels = $state(false);
@@ -185,9 +186,9 @@ async function onAiProviderChange(provider) {
185
186
  : provider}
186
187
  initialValue={aiProviders[provider].resource_path}
187
188
  bind:value={
188
- () => aiProviders[provider].resource_path,
189
+ () => aiProviders[provider].resource_path || undefined,
189
190
  (v) => {
190
- aiProviders[provider].resource_path = v
191
+ aiProviders[provider].resource_path = v ?? ''
191
192
  onAiProviderChange(provider as AIProvider)
192
193
  }
193
194
  }
@@ -367,8 +367,8 @@ let domain = $derived($usersWorkspaceStore?.email.split('@')[1]);
367
367
  }}
368
368
  >
369
369
  {#snippet children({ item })}
370
- <ToggleButton value="operator" size="xs" label="Operator" {item} />
371
- <ToggleButton value="developer" size="xs" label="Developer" {item} />
370
+ <ToggleButton value="operator" small label="Operator" {item} />
371
+ <ToggleButton value="developer" small label="Developer" {item} />
372
372
  {/snippet}
373
373
  </ToggleButtonGroup>
374
374
  </div>
@@ -57,6 +57,8 @@ export function convertDucklakeSettingsToBackend(settings) {
57
57
  import Alert from '../common/alert/Alert.svelte'
58
58
  import { deepEqual } from 'fast-equals'
59
59
  import Popover from '../meltComponents/Popover.svelte'
60
+ import TextInput from '../text_input/TextInput.svelte'
61
+ import Section from '../Section.svelte'
60
62
 
61
63
  const DEFAULT_DUCKLAKE_CATALOG_NAME = 'ducklake_catalog'
62
64
 
@@ -164,7 +166,7 @@ export function convertDucklakeSettingsToBackend(settings) {
164
166
  <div class="text-primary text-lg font-semibold">Ducklake</div>
165
167
  <Description link="https://www.windmill.dev/docs/core_concepts/ducklake">
166
168
  Windmill has first class support for Ducklake. You can use and explore ducklakes like a normal
167
- SQL database, even through the data is actually stored in parquet files in S3 !
169
+ SQL database, even though the data is actually stored in parquet files in S3 !
168
170
  </Description>
169
171
  </div>
170
172
  </div>
@@ -173,6 +175,52 @@ export function convertDucklakeSettingsToBackend(settings) {
173
175
  <Alert title="Instance catalogs use the Windmill database" class="mb-4" type="info">
174
176
  Using an instance catalog is the fastest way to get started with Ducklake. They are public to
175
177
  the instance and can be re-used in other workspaces' Ducklake settings.
178
+ <div>
179
+ <Section
180
+ label="Manual setup instructions"
181
+ collapsable
182
+ headerClass="mt-6 border bg-surface px-3 py-1 rounded-md text-xs text-secondary"
183
+ class="text-secondary"
184
+ animate
185
+ >
186
+ This is what happens when you create a new Instance catalog with the name
187
+ <code>ducklake_catalog</code>. This may be useful to debug issues in case the automatic
188
+ setup fails in the middle, but in most cases Windmill will handle it for you.
189
+ <br /><br />
190
+
191
+ If the database <code>ducklake_catalog</code> already exists, Windmill assumes that the
192
+ setup was successful and does not do anything. However, it is possible that it failed in the
193
+ middle (in which case you should have seen an error pop up during setup). There is no
194
+ rollback as the following operations do not work in a transaction.
195
+ <br />
196
+ This is what the setup does :
197
+ <br /><br />
198
+ Connect to the Windmill PostgreSQL as the default user (the one in your DATABASE_URL, usually
199
+ 'postgres') and run :
200
+ <br />
201
+ <code class="block p-2 border rounded-md bg-surface mt-2">
202
+ CREATE DATABASE <code>ducklake_catalog</code>;<br />
203
+ GRANT CONNECT ON DATABASE <code>ducklake_catalog</code> TO ducklake_user;
204
+ </code>
205
+ <br />
206
+ Then, connect to the <code>ducklake_catalog</code> database with the same user as above (NOT
207
+ ducklake_user) and run :
208
+ <code class="block p-2 border rounded-md bg-surface mt-2">
209
+ GRANT USAGE ON SCHEMA public TO ducklake_user;<br />
210
+ GRANT CREATE ON SCHEMA public TO ducklake_user;<br />
211
+ ALTER DEFAULT PRIVILEGES IN SCHEMA public<br />
212
+ &nbsp;&nbsp;GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ducklake_user;
213
+ </code>
214
+ <br />
215
+ After doing that, creating a new Ducklake with an Instance catalog named
216
+ <code>ducklake_catalog</code> should not prompt you to run the automatic setup, and
217
+ everything should work fine.
218
+ <br /><br />
219
+ Note : the ducklake_user is automatically created by Windmill in a migration. Its password is
220
+ auto-generated and stored in the database table <code>global_settings</code> with the key
221
+ <code>ducklake_user_pg_pwd</code>.
222
+ </Section>
223
+ </div>
176
224
  </Alert>
177
225
  {/if}
178
226
 
@@ -209,7 +257,7 @@ export function convertDucklakeSettingsToBackend(settings) {
209
257
  <code class="px-1 py-0.5 border rounded-md">ATTACH 'ducklake' AS dl;</code> shorthand
210
258
  </Tooltip>
211
259
  {/if}
212
- <input bind:value={ducklake.name} placeholder="Name" />
260
+ <TextInput bind:value={ducklake.name} inputProps={{ placeholder: 'Name' }} />
213
261
  </Cell>
214
262
  <Cell>
215
263
  <div class="flex gap-4">
@@ -243,11 +291,13 @@ export function convertDucklakeSettingsToBackend(settings) {
243
291
  <ResourcePicker
244
292
  bind:value={ducklake.catalog.resource_path}
245
293
  resourceType={ducklake.catalog.resource_type}
294
+ selectInputClass="min-h-9"
295
+ class="min-h-9"
246
296
  />
247
297
  {:else}
248
- <input
298
+ <TextInput
249
299
  bind:value={ducklake.catalog.resource_path}
250
- placeholder="PostgreSQL database name"
300
+ inputProps={{ placeholder: 'PostgreSQL database name' }}
251
301
  />
252
302
  {/if}
253
303
  </div>
@@ -269,9 +319,12 @@ export function convertDucklakeSettingsToBackend(settings) {
269
319
  }
270
320
  }
271
321
  class="w-48"
272
- inputClass="!placeholder-primary"
322
+ inputClass="!placeholder-secondary"
323
+ />
324
+ <TextInput
325
+ inputProps={{ placeholder: 'Data path (defaults to /)' }}
326
+ bind:value={ducklake.storage.path}
273
327
  />
274
- <input placeholder="Data path (defaults to /)" bind:value={ducklake.storage.path} />
275
328
  </div>
276
329
  </Cell>
277
330
  <Cell class="w-12">
@@ -283,6 +336,7 @@ export function convertDucklakeSettingsToBackend(settings) {
283
336
  >
284
337
  <svelte:fragment slot="trigger">
285
338
  <ExploreAssetButton
339
+ class="h-9"
286
340
  asset={{ kind: 'ducklake', path: ducklake.name }}
287
341
  {dbManagerDrawer}
288
342
  disabled
@@ -316,8 +370,11 @@ export function convertDucklakeSettingsToBackend(settings) {
316
370
  <Button
317
371
  wrapperClasses="mt-4 mb-44 max-w-fit"
318
372
  on:click={onSave}
319
- disabled={Object.values(ducklakeIsDirty).every((v) => v === false)}>Save ducklake settings</Button
373
+ disabled={ducklakeSavedSettings.ducklakes.length === ducklakeSettings.ducklakes.length &&
374
+ Object.values(ducklakeIsDirty).every((v) => v === false)}
320
375
  >
376
+ Save ducklake settings
377
+ </Button>
321
378
  <DbManagerDrawer bind:this={dbManagerDrawer} />
322
379
 
323
380
  <ConfirmationModal {...confirmationModal.props} />
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">import { enterpriseLicense, workspaceStore } from '../../stores';
2
2
  import { emptyString, sendUserToast } from '../../utils';
3
- import { ChevronDown, Plus, Shield, X } from 'lucide-svelte';
3
+ import { ChevronDown, Plus, Shield } from 'lucide-svelte';
4
4
  import Alert from '../common/alert/Alert.svelte';
5
5
  import Button from '../common/button/Button.svelte';
6
6
  import Tab from '../common/tabs/Tab.svelte';
@@ -13,11 +13,12 @@ import { convertFrontendToBackendSetting, defaultS3AdvancedPermissions } from '.
13
13
  import { WorkspaceService } from '../../gen';
14
14
  import S3FilePicker from '../S3FilePicker.svelte';
15
15
  import Portal from '../Portal.svelte';
16
- import { fade } from 'svelte/transition';
17
16
  import Popover from '../meltComponents/Popover.svelte';
18
17
  import ClearableInput from '../common/clearableInput/ClearableInput.svelte';
19
18
  import MultiSelect from '../select/MultiSelect.svelte';
20
19
  import CloseButton from '../common/CloseButton.svelte';
20
+ import TextInput from '../text_input/TextInput.svelte';
21
+ import Select from '../select/Select.svelte';
21
22
  let { s3ResourceSettings = $bindable() } = $props();
22
23
  let s3FileViewer = $state();
23
24
  async function editWindmillLFSSettings() {
@@ -105,10 +106,10 @@ async function editWindmillLFSSettings() {
105
106
  <div class="mt-6">
106
107
  <div class="flex mt-2 flex-col gap-y-4 max-w-5xl">
107
108
  {#each s3ResourceSettings.secondaryStorage ?? [] as _, idx}
108
- <div class="flex gap-1 items-center">
109
- <input
109
+ <div class="flex gap-1 relative">
110
+ <TextInput
110
111
  class="max-w-[200px]"
111
- type="text"
112
+ inputProps={{ type: 'text', placeholder: 'Storage name' }}
112
113
  bind:value={
113
114
  () => s3ResourceSettings.secondaryStorage?.[idx]?.[0] || '',
114
115
  (v) => {
@@ -117,10 +118,10 @@ async function editWindmillLFSSettings() {
117
118
  }
118
119
  }
119
120
  }
120
- placeholder="Storage name"
121
121
  />
122
- <select
122
+ <Select
123
123
  class="max-w-[125px]"
124
+ inputClass="h-full"
124
125
  bind:value={
125
126
  () => s3ResourceSettings.secondaryStorage?.[idx]?.[1].resourceType || 's3',
126
127
  (v) => {
@@ -129,19 +130,19 @@ async function editWindmillLFSSettings() {
129
130
  }
130
131
  }
131
132
  }
132
- >
133
- <option value="s3">S3</option>
134
- <option value="azure_blob">Azure Blob</option>
135
- <option value="s3_aws_oidc">AWS OIDC</option>
136
- <option value="azure_workload_identity">Azure Workload Identity</option>
137
- <option value="gcloud_storage">Google Cloud Storage</option>
138
- </select>
139
- <!-- this can be removed once parent moves to runes -->
140
- <!-- svelte-ignore binding_property_non_reactive -->
133
+ items={[
134
+ { value: 's3', label: 'S3' },
135
+ { value: 'azure_blob', label: 'Azure Blob' },
136
+ { value: 's3_aws_oidc', label: 'AWS OIDC' },
137
+ { value: 'azure_workload_identity', label: 'Azure Workload Identity' },
138
+ { value: 'gcloud_storage', label: 'Google Cloud Storage' }
139
+ ]}
140
+ />
141
+
141
142
  <ResourcePicker
142
143
  resourceType={s3ResourceSettings.secondaryStorage?.[idx]?.[1].resourceType || 's3'}
143
144
  bind:value={
144
- () => s3ResourceSettings.secondaryStorage?.[idx]?.[1].resourcePath || '',
145
+ () => s3ResourceSettings.secondaryStorage?.[idx]?.[1].resourcePath || undefined,
145
146
  (v) => {
146
147
  if (s3ResourceSettings.secondaryStorage?.[idx]) {
147
148
  s3ResourceSettings.secondaryStorage[idx][1].resourcePath = v
@@ -164,19 +165,16 @@ async function editWindmillLFSSettings() {
164
165
  }
165
166
  }}>Browse content (save first)</Button
166
167
  >
167
- <button
168
- transition:fade|local={{ duration: 100 }}
169
- class="rounded-full p-1 bg-surface-secondary duration-200 hover:bg-surface-hover ml-2"
170
- aria-label="Clear"
171
- onclick={() => {
168
+ <CloseButton
169
+ class="my-auto"
170
+ small
171
+ on:close={() => {
172
172
  if (s3ResourceSettings.secondaryStorage) {
173
173
  s3ResourceSettings.secondaryStorage.splice(idx, 1)
174
174
  s3ResourceSettings.secondaryStorage = [...s3ResourceSettings.secondaryStorage]
175
175
  }
176
176
  }}
177
- >
178
- <X size={14} />
179
- </button>
177
+ />
180
178
  </div>
181
179
  {/each}
182
180
  <div class="flex gap-1">
@@ -220,7 +218,7 @@ async function editWindmillLFSSettings() {
220
218
  {#snippet permissionBtn(storage: NonNullable<S3ResourceSettings['secondaryStorage']>[number][1])}
221
219
  <Popover closeOnOtherPopoverOpen placement="left">
222
220
  <svelte:fragment slot="trigger">
223
- <Button variant="border" btnClasses="px-2.5" color="dark" size="sm">
221
+ <Button variant="border" wrapperClasses="h-full" btnClasses="px-2.5" color="dark" size="sm">
224
222
  <Shield size={16} /> Permissions <ChevronDown size={14} />
225
223
  </Button>
226
224
  </svelte:fragment>
@@ -7,7 +7,7 @@ export declare function editorConfig(code: string, lang: string, automaticLayout
7
7
  fixedOverflowWidgets: boolean;
8
8
  lineDecorationsWidth: number;
9
9
  lineNumbersMinChars: number;
10
- lineNumbers: "on" | "relative";
10
+ lineNumbers: "relative" | "on";
11
11
  scrollbar: {
12
12
  alwaysConsumeMouseWheel: boolean;
13
13
  };
@@ -21,7 +21,7 @@ export const OpenAPI = {
21
21
  PASSWORD: undefined,
22
22
  TOKEN: undefined,
23
23
  USERNAME: undefined,
24
- VERSION: '1.549.1',
24
+ VERSION: '1.554.1',
25
25
  WITH_CREDENTIALS: false,
26
26
  interceptors: {
27
27
  request: new Interceptors(),
@@ -55,6 +55,10 @@ export declare const $FlowValue: {
55
55
  readonly early_return: {
56
56
  readonly type: "string";
57
57
  };
58
+ readonly chat_input_enabled: {
59
+ readonly type: "boolean";
60
+ readonly description: "Whether this flow accepts chat-style input";
61
+ };
58
62
  };
59
63
  readonly required: readonly ["modules"];
60
64
  };
@@ -768,6 +772,80 @@ export declare const $FlowStatusModule: {
768
772
  };
769
773
  readonly required: readonly ["type"];
770
774
  };
775
+ export declare const $FlowConversation: {
776
+ readonly type: "object";
777
+ readonly required: readonly ["id", "workspace_id", "flow_path", "created_at", "updated_at", "created_by"];
778
+ readonly properties: {
779
+ readonly id: {
780
+ readonly type: "string";
781
+ readonly format: "uuid";
782
+ readonly description: "Unique identifier for the conversation";
783
+ };
784
+ readonly workspace_id: {
785
+ readonly type: "string";
786
+ readonly description: "The workspace ID where the conversation belongs";
787
+ };
788
+ readonly flow_path: {
789
+ readonly type: "string";
790
+ readonly description: "Path of the flow this conversation is for";
791
+ };
792
+ readonly title: {
793
+ readonly type: "string";
794
+ readonly description: "Optional title for the conversation";
795
+ readonly nullable: true;
796
+ };
797
+ readonly created_at: {
798
+ readonly type: "string";
799
+ readonly format: "date-time";
800
+ readonly description: "When the conversation was created";
801
+ };
802
+ readonly updated_at: {
803
+ readonly type: "string";
804
+ readonly format: "date-time";
805
+ readonly description: "When the conversation was last updated";
806
+ };
807
+ readonly created_by: {
808
+ readonly type: "string";
809
+ readonly description: "Username who created the conversation";
810
+ };
811
+ };
812
+ };
813
+ export declare const $FlowConversationMessage: {
814
+ readonly type: "object";
815
+ readonly required: readonly ["id", "conversation_id", "message_type", "content", "created_at"];
816
+ readonly properties: {
817
+ readonly id: {
818
+ readonly type: "string";
819
+ readonly format: "uuid";
820
+ readonly description: "Unique identifier for the message";
821
+ };
822
+ readonly conversation_id: {
823
+ readonly type: "string";
824
+ readonly format: "uuid";
825
+ readonly description: "The conversation this message belongs to";
826
+ };
827
+ readonly message_type: {
828
+ readonly type: "string";
829
+ readonly enum: readonly ["user", "assistant", "system"];
830
+ readonly description: "Type of the message";
831
+ };
832
+ readonly content: {
833
+ readonly type: "string";
834
+ readonly description: "The message content";
835
+ };
836
+ readonly job_id: {
837
+ readonly type: "string";
838
+ readonly format: "uuid";
839
+ readonly nullable: true;
840
+ readonly description: "Associated job ID if this message came from a flow run";
841
+ };
842
+ readonly created_at: {
843
+ readonly type: "string";
844
+ readonly format: "date-time";
845
+ readonly description: "When the message was created";
846
+ };
847
+ };
848
+ };
771
849
  export declare const $EndpointTool: {
772
850
  readonly type: "object";
773
851
  readonly required: readonly ["name", "description", "instructions", "path", "method"];
@@ -4412,8 +4490,11 @@ export declare const $UserWorkspaceList: {
4412
4490
  readonly type: "string";
4413
4491
  readonly nullable: true;
4414
4492
  };
4493
+ readonly disabled: {
4494
+ readonly type: "boolean";
4495
+ };
4415
4496
  };
4416
- readonly required: readonly ["id", "name", "username", "color"];
4497
+ readonly required: readonly ["id", "name", "username", "color", "disabled"];
4417
4498
  };
4418
4499
  };
4419
4500
  };