windmill-components 1.550.0 → 1.555.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 (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 +5 -5
  268. /package/package/components/flows/{flowStore.js → flowStore.svelte.js} +0 -0
@@ -20,6 +20,7 @@ import FlowHistoryJobPicker from './FlowHistoryJobPicker.svelte';
20
20
  import { getStepHistoryLoaderContext } from './stepHistoryLoader.svelte';
21
21
  import { aiChatManager } from './copilot/chat/AIChatManager.svelte';
22
22
  import { stateSnapshot } from '../svelte5Utils.svelte';
23
+ import FlowChatInterface from './flows/FlowChatInterface.svelte';
23
24
  let { previewMode = $bindable(), open, preventEscape = $bindable(false), jobId = $bindable(undefined), job = $bindable(undefined), initial = $bindable(false), selectedJobStep = $bindable(undefined), selectedJobStepIsTopLevel = $bindable(undefined), selectedJobStepType = $bindable('single'), rightColumnSelect = $bindable('timeline'), branchOrIterationN = $bindable(0), scrollTop = $bindable(0), localModuleStates = $bindable({}), localDurationStatuses = $bindable({}), onRunPreview, render = false, onJobDone, upToId = undefined } = $props();
24
25
  let restartBranchNames = [];
25
26
  let isRunning = $state(false);
@@ -29,9 +30,9 @@ let schemaHeight = $state(0);
29
30
  let isValid = $state(true);
30
31
  let suspendStatus = $state({ val: {} });
31
32
  let isOwner = $state(false);
32
- export function test() {
33
+ export async function test() {
33
34
  renderCount++;
34
- runPreview(previewArgs.val, undefined);
35
+ return await runPreview(previewArgs.val, undefined);
35
36
  }
36
37
  const { selectedId, previewArgs, flowStateStore, flowStore, pathStore, initialPathStore, fakeInitialPath, customUi, executionCount } = $state(getContext('FlowEditorContext'));
37
38
  const dispatch = createEventDispatcher();
@@ -58,6 +59,7 @@ function extractFlow(previewMode) {
58
59
  }
59
60
  let lastPreviewFlow = $state(undefined);
60
61
  export async function runPreview(args, restartedFrom) {
62
+ let newJobId = undefined;
61
63
  if (stepHistoryLoader?.flowJobInitial !== false) {
62
64
  stepHistoryLoader?.setFlowJobInitial(false);
63
65
  }
@@ -65,7 +67,8 @@ export async function runPreview(args, restartedFrom) {
65
67
  lastPreviewFlow = JSON.stringify(flowStore.val);
66
68
  flowProgressBar?.reset();
67
69
  const newFlow = extractFlow(previewMode);
68
- jobId = await runFlowPreview(args, newFlow, $pathStore, restartedFrom);
70
+ newJobId = await runFlowPreview(args, newFlow, $pathStore, restartedFrom);
71
+ jobId = newJobId;
69
72
  isRunning = true;
70
73
  if (inputSelected) {
71
74
  savedArgs = $state.snapshot(previewArgs.val);
@@ -79,6 +82,7 @@ export async function runPreview(args, restartedFrom) {
79
82
  jobId = undefined;
80
83
  }
81
84
  schemaFormWithArgPicker?.refreshHistory();
85
+ return newJobId;
82
86
  }
83
87
  function onKeyDown(event) {
84
88
  if (open) {
@@ -323,25 +327,27 @@ export function flowHasChanged() {
323
327
  </Popover>
324
328
  {/if}
325
329
  {/if}
326
- <Button
327
- variant="contained"
328
- startIcon={{ icon: isRunning ? RefreshCw : Play }}
329
- color="dark"
330
- size="sm"
331
- btnClasses="w-full max-w-lg"
332
- on:click={() => runPreview(previewArgs.val, undefined)}
333
- id="flow-editor-test-flow-drawer"
334
- shortCut={{ Icon: CornerDownLeft }}
335
- >
336
- {#if previewMode == 'upTo'}
337
- Test up to
338
- <Badge baseClass="ml-1" color="indigo">
339
- {$selectedId}
340
- </Badge>
341
- {:else}
342
- Test flow
343
- {/if}
344
- </Button>
330
+ {#if !flowStore.val.value?.chat_input_enabled}
331
+ <Button
332
+ variant="contained"
333
+ startIcon={{ icon: isRunning ? RefreshCw : Play }}
334
+ color="dark"
335
+ size="sm"
336
+ btnClasses="w-full max-w-lg"
337
+ on:click={() => runPreview(previewArgs.val, undefined)}
338
+ id="flow-editor-test-flow-drawer"
339
+ shortCut={{ Icon: CornerDownLeft }}
340
+ >
341
+ {#if previewMode == 'upTo'}
342
+ Test up to
343
+ <Badge baseClass="ml-1" color="indigo">
344
+ {$selectedId}
345
+ </Badge>
346
+ {:else}
347
+ Test flow
348
+ {/if}
349
+ </Button>
350
+ {/if}
345
351
  </div>
346
352
  {/if}
347
353
  </div>
@@ -366,81 +372,96 @@ export function flowHasChanged() {
366
372
  onscroll={(e) => handleScroll()}
367
373
  >
368
374
  {#if render}
369
- <div class="border-b">
370
- <SchemaFormWithArgPicker
371
- bind:this={schemaFormWithArgPicker}
372
- runnableId={$initialPathStore}
373
- stablePathForCaptures={$initialPathStore || fakeInitialPath}
374
- runnableType={'FlowPath'}
375
- previewArgs={previewArgs.val}
376
- on:openTriggers
377
- on:select={(e) => {
378
- selectInput(e.detail.payload, e.detail?.type)
379
- }}
380
- {isValid}
381
- {jsonView}
382
- >
383
- <div class="w-full flex flex-row justify-between">
384
- <InputSelectedBadge
385
- onReject={() => schemaFormWithArgPicker?.resetSelected()}
386
- {inputSelected}
387
- />
388
- <div class="flex flex-row gap-2">
389
- <Toggle
390
- bind:checked={jsonView}
391
- label="JSON View"
392
- size="xs"
393
- options={{
394
- right: 'JSON',
395
- rightTooltip: 'Fill args from JSON'
396
- }}
397
- lightMode
398
- on:change={(e) => {
399
- jsonEditor?.setCode(JSON.stringify(previewArgs.val ?? {}, null, '\t'))
400
- refresh()
401
- }}
402
- />
403
- </div>
404
- </div>
405
- {#if jsonView}
406
- <div class="py-2" style="height: {Math.max(schemaHeight, 100)}px" data-schema-picker>
407
- <JsonInputs
408
- bind:this={jsonEditor}
409
- on:select={(e) => {
410
- if (e.detail) {
411
- previewArgs.val = e.detail
412
- }
413
- }}
414
- updateOnBlur={false}
415
- placeholder={`Write args as JSON.<br/><br/>Example:<br/><br/>{<br/>&nbsp;&nbsp;"foo": "12"<br/>}`}
375
+ {#if flowStore.val.value?.chat_input_enabled}
376
+ <div class="flex flex-row justify-center w-full">
377
+ <FlowChatInterface
378
+ onRunFlow={async (userMessage, _conversationId) => {
379
+ await runPreview({ user_message: userMessage }, undefined)
380
+ return jobId ?? ''
381
+ }}
382
+ createConversation={async () => {
383
+ const newConversationId = crypto.randomUUID()
384
+ return newConversationId
385
+ }}
386
+ />
387
+ </div>
388
+ {:else}
389
+ <div class="border-b">
390
+ <SchemaFormWithArgPicker
391
+ bind:this={schemaFormWithArgPicker}
392
+ runnableId={$initialPathStore}
393
+ stablePathForCaptures={$initialPathStore || fakeInitialPath}
394
+ runnableType={'FlowPath'}
395
+ previewArgs={previewArgs.val}
396
+ on:openTriggers
397
+ on:select={(e) => {
398
+ selectInput(e.detail.payload, e.detail?.type)
399
+ }}
400
+ {isValid}
401
+ {jsonView}
402
+ >
403
+ <div class="w-full flex flex-row justify-between">
404
+ <InputSelectedBadge
405
+ onReject={() => schemaFormWithArgPicker?.resetSelected()}
406
+ {inputSelected}
416
407
  />
408
+ <div class="flex flex-row gap-2">
409
+ <Toggle
410
+ bind:checked={jsonView}
411
+ label="JSON View"
412
+ size="xs"
413
+ options={{
414
+ right: 'JSON',
415
+ rightTooltip: 'Fill args from JSON'
416
+ }}
417
+ lightMode
418
+ on:change={(e) => {
419
+ jsonEditor?.setCode(JSON.stringify(previewArgs.val ?? {}, null, '\t'))
420
+ refresh()
421
+ }}
422
+ />
423
+ </div>
417
424
  </div>
418
- {:else}
419
- {#key renderCount}
420
- <div bind:clientHeight={schemaHeight} class="min-h-[40vh]">
421
- <SchemaForm
422
- noVariablePicker
423
- compact
424
- schema={flowStore.val.schema}
425
- bind:args={previewArgs.val}
426
- on:change={() => {
427
- savedArgs = $state.snapshot(previewArgs.val)
425
+ {#if jsonView}
426
+ <div class="py-2" style="height: {Math.max(schemaHeight, 100)}px" data-schema-picker>
427
+ <JsonInputs
428
+ bind:this={jsonEditor}
429
+ on:select={(e) => {
430
+ if (e.detail) {
431
+ previewArgs.val = e.detail
432
+ }
428
433
  }}
429
- bind:isValid
430
- helperScript={flowStore.val.schema?.['x-windmill-dyn-select-code'] &&
431
- flowStore.val.schema?.['x-windmill-dyn-select-lang']
432
- ? {
433
- source: 'inline',
434
- code: flowStore.val.schema['x-windmill-dyn-select-code'] as string,
435
- lang: flowStore.val.schema['x-windmill-dyn-select-lang'] as ScriptLang
436
- }
437
- : undefined}
434
+ updateOnBlur={false}
435
+ placeholder={`Write args as JSON.<br/><br/>Example:<br/><br/>{<br/>&nbsp;&nbsp;"foo": "12"<br/>}`}
438
436
  />
439
437
  </div>
440
- {/key}
441
- {/if}
442
- </SchemaFormWithArgPicker>
443
- </div>
438
+ {:else}
439
+ {#key renderCount}
440
+ <div bind:clientHeight={schemaHeight} class="min-h-[40vh]">
441
+ <SchemaForm
442
+ noVariablePicker
443
+ compact
444
+ schema={flowStore.val.schema}
445
+ bind:args={previewArgs.val}
446
+ on:change={() => {
447
+ savedArgs = $state.snapshot(previewArgs.val)
448
+ }}
449
+ bind:isValid
450
+ helperScript={flowStore.val.schema?.['x-windmill-dyn-select-code'] &&
451
+ flowStore.val.schema?.['x-windmill-dyn-select-lang']
452
+ ? {
453
+ source: 'inline',
454
+ code: flowStore.val.schema['x-windmill-dyn-select-code'] as string,
455
+ lang: flowStore.val.schema['x-windmill-dyn-select-lang'] as ScriptLang
456
+ }
457
+ : undefined}
458
+ />
459
+ </div>
460
+ {/key}
461
+ {/if}
462
+ </SchemaFormWithArgPicker>
463
+ </div>
464
+ {/if}
444
465
  {/if}
445
466
  <div class="pt-4 flex flex-col grow relative">
446
467
  <div
@@ -43,8 +43,8 @@ declare const FlowPreviewContent: $$__sveltets_2_IsomorphicComponent<Props, {
43
43
  } & {
44
44
  [evt: string]: CustomEvent<any>;
45
45
  }, {}, {
46
- test: () => void;
47
- runPreview: (args: Record<string, any>, restartedFrom: RestartedFrom | undefined) => Promise<void>;
46
+ test: () => Promise<string | undefined>;
47
+ runPreview: (args: Record<string, any>, restartedFrom: RestartedFrom | undefined) => Promise<string | undefined>;
48
48
  refresh: () => void;
49
49
  cancelTest: () => Promise<void>;
50
50
  getLocalModuleStates: () => Record<string, GraphModuleState>;
@@ -57,6 +57,6 @@ declare const FlowPreviewContent: $$__sveltets_2_IsomorphicComponent<Props, {
57
57
  getIsOwner: () => boolean;
58
58
  getJob: () => Job | undefined;
59
59
  flowHasChanged: () => boolean;
60
- }, "initial" | "preventEscape" | "job" | "scrollTop" | "jobId" | "localModuleStates" | "localDurationStatuses" | "rightColumnSelect" | "selectedJobStep" | "previewMode" | "selectedJobStepIsTopLevel" | "selectedJobStepType" | "branchOrIterationN">;
60
+ }, "initial" | "preventEscape" | "job" | "jobId" | "scrollTop" | "localModuleStates" | "localDurationStatuses" | "rightColumnSelect" | "selectedJobStep" | "previewMode" | "selectedJobStepIsTopLevel" | "selectedJobStepType" | "branchOrIterationN">;
61
61
  type FlowPreviewContent = InstanceType<typeof FlowPreviewContent>;
62
62
  export default FlowPreviewContent;
@@ -7,7 +7,7 @@ let lastJobId = jobId;
7
7
  let retryStatus = $state({ val: {} });
8
8
  let globalRefreshes = $state({});
9
9
  setContext('FlowStatusViewer', {
10
- flowState: flowState,
10
+ flowState,
11
11
  suspendStatus,
12
12
  retryStatus,
13
13
  hideDownloadInGraph,
@@ -26,7 +26,8 @@ async function updateJobId() {
26
26
  retryStatus.val = {};
27
27
  suspendStatus.val = {};
28
28
  globalRefreshes = {};
29
- flowState = {};
29
+ for (let key in localModuleStates)
30
+ delete flowState[key];
30
31
  localDurationStatuses = {};
31
32
  localModuleStates = {};
32
33
  }
@@ -1326,7 +1326,7 @@ let minTabHeight = $derived(Math.max(tabsHeight.sequenceHeight, tabsHeight.logsH
1326
1326
  </div>
1327
1327
  {#if selected == 'logs' && render}
1328
1328
  <div
1329
- class="mx-auto"
1329
+ class="mx-auto overflow-auto"
1330
1330
  bind:clientHeight={tabsHeight.logsHeight}
1331
1331
  style="min-height: {minTabHeight}px"
1332
1332
  >
@@ -1,5 +1,4 @@
1
- <script lang="ts">import { run } from 'svelte/legacy';
2
- import { userStore, workspaceStore } from '../stores';
1
+ <script lang="ts">import { userStore, workspaceStore } from '../stores';
3
2
  import { FolderService, UserService, GranularAclService, GroupService } from '../gen';
4
3
  import TableCustom from './TableCustom.svelte';
5
4
  import { Alert, Button, Drawer, DrawerContent } from './common';
@@ -11,7 +10,7 @@ import Section from './Section.svelte';
11
10
  import { Eye, Plus } from 'lucide-svelte';
12
11
  import Label from './Label.svelte';
13
12
  import { sendUserToast } from '../toast';
14
- import { createEventDispatcher } from 'svelte';
13
+ import { createEventDispatcher, untrack } from 'svelte';
15
14
  import Select from './select/Select.svelte';
16
15
  import { safeSelectItems } from './select/utils.svelte';
17
16
  let { name } = $props();
@@ -109,9 +108,11 @@ async function updateFolder() {
109
108
  dispatch('update');
110
109
  loadFolder();
111
110
  }
112
- run(() => {
111
+ $effect.pre(() => {
113
112
  if ($workspaceStore && $userStore) {
114
- load();
113
+ untrack(() => {
114
+ load();
115
+ });
115
116
  }
116
117
  });
117
118
  </script>
@@ -297,7 +298,6 @@ run(() => {
297
298
  />
298
299
 
299
300
  <ToggleButton
300
- position="center"
301
301
  value="writer"
302
302
  label="Writer"
303
303
  tooltip="A writer of a folder has read AND write access to all the elements (scripts/flows/apps/schedules/resources/variables) inside the folder"
@@ -305,7 +305,6 @@ run(() => {
305
305
  />
306
306
 
307
307
  <ToggleButton
308
- position="right"
309
308
  value="admin"
310
309
  label="Admin"
311
310
  tooltip="An admin of a folder has read AND write access to all the elements inside the folders and can manage the permissions as well as add new admins"