windmill-components 1.522.0 → 1.531.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 (272) hide show
  1. package/package/components/AIAgentLogViewer.svelte +123 -0
  2. package/package/components/AIAgentLogViewer.svelte.d.ts +13 -0
  3. package/package/components/AppConnectInner.svelte +10 -10
  4. package/package/components/AutoscalingConfigEditor.svelte +76 -2
  5. package/package/components/Dev.svelte +12 -28
  6. package/package/components/DiffEditor.svelte +6 -3
  7. package/package/components/DiffEditor.svelte.d.ts +1 -0
  8. package/package/components/DisplayResult.svelte +16 -10
  9. package/package/components/DisplayResult.svelte.d.ts +1 -0
  10. package/package/components/EditableSchemaForm.svelte +5 -2
  11. package/package/components/Editor.svelte +26 -8
  12. package/package/components/Editor.svelte.d.ts +1 -1
  13. package/package/components/EditorBar.svelte +25 -5
  14. package/package/components/EditorSettings.svelte +6 -0
  15. package/package/components/FirstStepInputs.svelte +2 -2
  16. package/package/components/FlowBuilder.svelte +18 -36
  17. package/package/components/FlowGraphViewerStep.svelte +7 -0
  18. package/package/components/FlowJobResult.svelte +15 -63
  19. package/package/components/FlowJobResult.svelte.d.ts +10 -4
  20. package/package/components/FlowLogViewer.svelte +660 -0
  21. package/package/components/FlowLogViewer.svelte.d.ts +34 -0
  22. package/package/components/FlowLogViewerWrapper.svelte +52 -0
  23. package/package/components/FlowLogViewerWrapper.svelte.d.ts +21 -0
  24. package/package/components/FlowLoopIterationPreview.svelte +3 -3
  25. package/package/components/FlowPreviewContent.svelte +4 -5
  26. package/package/components/FlowPreviewContent.svelte.d.ts +7 -7
  27. package/package/components/FlowPreviewResult.svelte +4 -5
  28. package/package/components/FlowPreviewResult.svelte.d.ts +3 -5
  29. package/package/components/FlowStatusViewer.svelte +28 -16
  30. package/package/components/FlowStatusViewer.svelte.d.ts +19 -27
  31. package/package/components/FlowStatusViewerInner.svelte +483 -296
  32. package/package/components/FlowStatusViewerInner.svelte.d.ts +27 -33
  33. package/package/components/FlowTimeline.svelte +11 -13
  34. package/package/components/FlowTimeline.svelte.d.ts +6 -5
  35. package/package/components/FlowWrapper.svelte +3 -2
  36. package/package/components/HighlightCode.svelte +4 -1
  37. package/package/components/IconedResourceType.svelte +9 -5
  38. package/package/components/JobLoader.svelte +61 -8
  39. package/package/components/JobLoader.svelte.d.ts +9 -1
  40. package/package/components/LogViewer.svelte +8 -2
  41. package/package/components/LogViewer.svelte.d.ts +1 -0
  42. package/package/components/LogViewerHeader.svelte +32 -0
  43. package/package/components/LogViewerHeader.svelte.d.ts +8 -0
  44. package/package/components/ModulePreviewForm.svelte +10 -6
  45. package/package/components/ModulePreviewResultViewer.svelte +16 -0
  46. package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -1
  47. package/package/components/ModuleTest.svelte +59 -16
  48. package/package/components/RelativeLineNumbers.svelte +16 -0
  49. package/package/components/RelativeLineNumbers.svelte.d.ts +18 -0
  50. package/package/components/ResourceEditor.svelte +9 -4
  51. package/package/components/ScriptBuilder.svelte +13 -11
  52. package/package/components/ScriptEditor.svelte +2 -2
  53. package/package/components/SimpleEditor.svelte +10 -4
  54. package/package/components/SimpleEditor.svelte.d.ts +1 -0
  55. package/package/components/TemplateEditor.svelte +1 -1
  56. package/package/components/UserSettings.svelte +4 -4
  57. package/package/components/apps/components/display/AppAccordionList.svelte +1 -1
  58. package/package/components/apps/components/display/AppCarouselList.svelte +10 -8
  59. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +3 -3
  60. package/package/components/apps/components/display/table/AppAggridTable.svelte +2 -2
  61. package/package/components/apps/components/helpers/HiddenComponent.svelte +0 -1
  62. package/package/components/apps/components/helpers/InputValue.svelte +6 -1
  63. package/package/components/apps/components/helpers/NonRunnableComponent.svelte +8 -4
  64. package/package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -1
  65. package/package/components/apps/components/helpers/RunnableComponent.svelte +7 -8
  66. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
  67. package/package/components/apps/components/helpers/RunnableWrapper.svelte +12 -3
  68. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -1
  69. package/package/components/apps/components/inputs/AppCodeInputComponent.svelte +0 -5
  70. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +1 -1
  71. package/package/components/apps/components/layout/AppContainer.svelte +1 -1
  72. package/package/components/apps/components/layout/AppDecisionTree.svelte +31 -20
  73. package/package/components/apps/components/layout/AppDrawer.svelte +1 -1
  74. package/package/components/apps/components/layout/AppList.svelte +9 -8
  75. package/package/components/apps/components/layout/AppModal.svelte +1 -1
  76. package/package/components/apps/components/layout/AppSplitpanes.svelte +5 -2
  77. package/package/components/apps/components/layout/AppStepper.svelte +9 -5
  78. package/package/components/apps/components/layout/AppTabs.svelte +2 -2
  79. package/package/components/apps/editor/AppJobsDrawer.svelte +2 -2
  80. package/package/components/apps/editor/GridEditor.svelte +24 -19
  81. package/package/components/apps/editor/GridEditor.svelte.d.ts +4 -1
  82. package/package/components/apps/editor/GridViewer.svelte +1 -1
  83. package/package/components/apps/editor/SubGridEditor.svelte +7 -11
  84. package/package/components/apps/editor/SubGridEditor.svelte.d.ts +3 -19
  85. package/package/components/apps/editor/appUtils.js +17 -68
  86. package/package/components/apps/editor/component/ComponentInner.svelte +845 -694
  87. package/package/components/apps/editor/component/componentCallbacks.svelte.js +8 -1
  88. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +9 -46
  89. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +29 -43
  90. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
  91. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +1 -0
  92. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +2 -2
  93. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +1 -0
  94. package/package/components/apps/svelte-grid/Grid.svelte +23 -25
  95. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +21 -9
  96. package/package/components/apps/svelte-grid/MoveResize.svelte +13 -15
  97. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +17 -24
  98. package/package/components/apps/utils.d.ts +2 -0
  99. package/package/components/apps/utils.js +22 -0
  100. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  101. package/package/components/common/fileDownload/FileDownload.svelte +1 -3
  102. package/package/components/common/fileDownload/FileDownload.svelte.d.ts +4 -18
  103. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  104. package/package/components/copilot/FlowInlineScriptAIButton.svelte +58 -0
  105. package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +3 -0
  106. package/package/components/copilot/MetadataGen.svelte +19 -1
  107. package/package/components/copilot/MetadataGen.svelte.d.ts +1 -1
  108. package/package/components/copilot/ScriptGen.svelte +23 -31
  109. package/package/components/copilot/ScriptGen.svelte.d.ts +0 -1
  110. package/package/components/copilot/autocomplete/Autocompletor.js +2 -0
  111. package/package/components/copilot/chat/AIChatDisplay.svelte +4 -4
  112. package/package/components/copilot/chat/AIChatInput.svelte +29 -6
  113. package/package/components/copilot/chat/AIChatManager.svelte.js +110 -26
  114. package/package/components/copilot/chat/AIChatMessage.svelte +3 -0
  115. package/package/components/copilot/chat/ToolContentDisplay.svelte +84 -0
  116. package/package/components/copilot/chat/ToolContentDisplay.svelte.d.ts +11 -0
  117. package/package/components/copilot/chat/ToolExecutionDisplay.svelte +105 -0
  118. package/package/components/copilot/chat/ToolExecutionDisplay.svelte.d.ts +7 -0
  119. package/package/components/copilot/chat/api/apiTools.d.ts +7 -0
  120. package/package/components/copilot/chat/api/apiTools.js +192 -0
  121. package/package/components/copilot/chat/api/core.d.ts +7 -0
  122. package/package/components/copilot/chat/api/core.js +61 -0
  123. package/package/components/copilot/chat/flow/FlowAIChat.svelte +4 -6
  124. package/package/components/copilot/chat/flow/core.js +213 -42
  125. package/package/components/copilot/chat/flow/utils.js +3 -0
  126. package/package/components/copilot/chat/monaco-adapter.d.ts +1 -1
  127. package/package/components/copilot/chat/monaco-adapter.js +10 -4
  128. package/package/components/copilot/chat/navigator/core.d.ts +1 -1
  129. package/package/components/copilot/chat/navigator/core.js +20 -22
  130. package/package/components/copilot/chat/script/core.d.ts +11 -3
  131. package/package/components/copilot/chat/script/core.js +92 -15
  132. package/package/components/copilot/chat/shared.d.ts +30 -3
  133. package/package/components/copilot/chat/shared.js +228 -9
  134. package/package/components/copilot/lib.d.ts +1 -1
  135. package/package/components/copilot/lib.js +15 -6
  136. package/package/components/custom_ui.d.ts +2 -0
  137. package/package/components/details/DetailPageLayout.svelte +34 -33
  138. package/package/components/flow_builder.d.ts +1 -2
  139. package/package/components/flows/FlowEditor.svelte +3 -3
  140. package/package/components/flows/FlowEditor.svelte.d.ts +7 -6
  141. package/package/components/flows/common/FlowCard.svelte +2 -2
  142. package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
  143. package/package/components/flows/common/FlowCardHeader.svelte +13 -4
  144. package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
  145. package/package/components/flows/content/BranchPredicateEditor.svelte +4 -7
  146. package/package/components/flows/content/BranchPredicateEditor.svelte.d.ts +12 -11
  147. package/package/components/flows/content/FlowConstants.svelte +3 -3
  148. package/package/components/flows/content/FlowEditorPanel.svelte +3 -3
  149. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -4
  150. package/package/components/flows/content/FlowInputsQuick.svelte +2 -1
  151. package/package/components/flows/content/FlowLoop.svelte +2 -2
  152. package/package/components/flows/content/FlowModuleComponent.svelte +130 -108
  153. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  154. package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
  155. package/package/components/flows/content/FlowModuleSkip.svelte +1 -1
  156. package/package/components/flows/content/FlowModuleSleep.svelte +1 -1
  157. package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
  158. package/package/components/flows/content/FlowModuleWrapper.svelte +15 -5
  159. package/package/components/flows/content/FlowModuleWrapper.svelte.d.ts +1 -0
  160. package/package/components/flows/content/FlowResult.svelte +2 -3
  161. package/package/components/flows/content/FlowResult.svelte.d.ts +2 -4
  162. package/package/components/flows/content/FlowWhileLoop.svelte +1 -1
  163. package/package/components/flows/dfs.d.ts +3 -1
  164. package/package/components/flows/dfs.js +5 -1
  165. package/package/components/flows/flowInfers.js +78 -0
  166. package/package/components/flows/flowState.d.ts +2 -3
  167. package/package/components/flows/flowState.js +2 -2
  168. package/package/components/flows/flowStateUtils.svelte.d.ts +4 -4
  169. package/package/components/flows/flowStateUtils.svelte.js +14 -13
  170. package/package/components/flows/flowStore.d.ts +3 -4
  171. package/package/components/flows/header/FlowPreviewButtons.svelte +2 -1
  172. package/package/components/flows/header/FlowYamlEditor.svelte +10 -1
  173. package/package/components/flows/map/FlowGraphPreviewButton.svelte +1 -1
  174. package/package/components/flows/map/FlowJobsMenu.svelte +7 -3
  175. package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +1 -0
  176. package/package/components/flows/map/FlowModuleSchemaItem.svelte +12 -12
  177. package/package/components/flows/map/FlowModuleSchemaMap.svelte +26 -19
  178. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +6 -4
  179. package/package/components/flows/map/InsertModuleInner.svelte +9 -1
  180. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +1 -0
  181. package/package/components/flows/map/MapItem.svelte +4 -2
  182. package/package/components/flows/pickers/TopLevelNode.svelte +4 -1
  183. package/package/components/flows/propPicker/InputPickerInner.svelte +5 -4
  184. package/package/components/flows/propPicker/OutputBadge.svelte +11 -9
  185. package/package/components/flows/propPicker/OutputPickerInner.svelte +10 -1
  186. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
  187. package/package/components/flows/testSteps.svelte.d.ts +3 -2
  188. package/package/components/flows/testSteps.svelte.js +26 -23
  189. package/package/components/flows/types.d.ts +1 -1
  190. package/package/components/flows/utils.d.ts +3 -5
  191. package/package/components/flows/utils.js +3 -4
  192. package/package/components/git_sync/GitSyncContext.svelte.js +2 -1
  193. package/package/components/graph/FlowGraphV2.svelte +44 -24
  194. package/package/components/graph/FlowGraphV2.svelte.d.ts +5 -2
  195. package/package/components/graph/graphBuilder.svelte.d.ts +49 -17
  196. package/package/components/graph/graphBuilder.svelte.js +30 -14
  197. package/package/components/graph/model.d.ts +9 -6
  198. package/package/components/graph/renderers/edges/BaseEdge.svelte +3 -3
  199. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +2 -3
  200. package/package/components/graph/renderers/nodes/AIToolNode.svelte +234 -0
  201. package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +24 -0
  202. package/package/components/graph/renderers/nodes/AssetNode.svelte +15 -10
  203. package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +18 -1
  204. package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte +1 -1
  205. package/package/components/graph/renderers/nodes/BranchAllStart.svelte +1 -1
  206. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  207. package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +2 -2
  208. package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +1 -1
  209. package/package/components/graph/renderers/nodes/ModuleNode.svelte +21 -21
  210. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +64 -0
  211. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte.d.ts +7 -0
  212. package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +1 -1
  213. package/package/components/icons/RubyIcon.svelte +656 -0
  214. package/package/components/icons/RubyIcon.svelte.d.ts +7 -0
  215. package/package/components/instanceSettings.js +9 -0
  216. package/package/components/modulesTest.svelte.d.ts +6 -3
  217. package/package/components/modulesTest.svelte.js +32 -0
  218. package/package/components/preview/FlowPreviewStatus.svelte +3 -1
  219. package/package/components/raw_apps/RawAppEditor.svelte +27 -26
  220. package/package/components/raw_apps/RawAppEditor.svelte.d.ts +17 -17
  221. package/package/components/runs/{JobPreview.svelte → JobRunsPreview.svelte} +1 -4
  222. package/package/components/runs/{JobPreview.svelte.d.ts → JobRunsPreview.svelte.d.ts} +3 -3
  223. package/package/components/runs/RunRow.svelte +5 -1
  224. package/package/components/schema/AddProperty.svelte +41 -36
  225. package/package/components/schema/AddProperty.svelte.d.ts +2 -2
  226. package/package/components/schema/AddPropertyV2.svelte +41 -37
  227. package/package/components/schema/AddPropertyV2.svelte.d.ts +1 -1
  228. package/package/components/schema/FlowPropertyEditor.svelte +8 -6
  229. package/package/components/search/RunsSearch.svelte +1 -1
  230. package/package/components/settings/CreateToken.svelte +132 -12
  231. package/package/components/settings/CreateToken.svelte.d.ts +3 -20
  232. package/package/components/settings/TokenDisplay.svelte +18 -42
  233. package/package/components/settings/TokenDisplay.svelte.d.ts +0 -1
  234. package/package/components/settings/TokensTable.svelte +2 -4
  235. package/package/components/settings/TokensTable.svelte.d.ts +3 -19
  236. package/package/components/settings/WorkspaceUserSettings.svelte +428 -69
  237. package/package/components/sidebar/MenuButton.svelte +12 -10
  238. package/package/components/stepHistoryLoader.svelte.d.ts +2 -2
  239. package/package/components/stepHistoryLoader.svelte.js +7 -12
  240. package/package/components/triggers/http/OpenAPISpecGenerator.svelte +2 -2
  241. package/package/components/tutorials/FlowBuilderTutorialBranchOne.svelte +1 -1
  242. package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +4 -4
  243. package/package/components/tutorials/utils.js +3 -0
  244. package/package/components/worker_group.d.ts +4 -1
  245. package/package/components/worker_group.js +3 -2
  246. package/package/editorLangUtils.d.ts +1 -1
  247. package/package/editorLangUtils.js +2 -0
  248. package/package/editorUtils.d.ts +2 -1
  249. package/package/editorUtils.js +2 -1
  250. package/package/gen/core/OpenAPI.js +1 -1
  251. package/package/gen/schemas.gen.d.ts +296 -8
  252. package/package/gen/schemas.gen.js +364 -70
  253. package/package/gen/services.gen.d.ts +118 -16
  254. package/package/gen/services.gen.js +226 -19
  255. package/package/gen/types.gen.d.ts +660 -16
  256. package/package/hubPaths.json +7 -4
  257. package/package/infer.js +10 -1
  258. package/package/monaco_workers/graphql.worker.bundle.js +144 -110
  259. package/package/script_helpers.d.ts +3 -0
  260. package/package/script_helpers.js +58 -3
  261. package/package/scripts.d.ts +1 -1
  262. package/package/scripts.js +3 -2
  263. package/package/stores.d.ts +2 -0
  264. package/package/stores.js +2 -0
  265. package/package/svelte5Utils.svelte.d.ts +16 -0
  266. package/package/svelte5Utils.svelte.js +26 -0
  267. package/package/utils.d.ts +1 -1
  268. package/package.json +20 -19
  269. package/package/components/AllFlowLogs.svelte +0 -31
  270. package/package/components/AllFlowLogs.svelte.d.ts +0 -8
  271. package/package/components/copilot/chat/navigator/apiTools.d.ts +0 -68
  272. package/package/components/copilot/chat/navigator/apiTools.js +0 -258
@@ -71,7 +71,7 @@ declare const Editor: $$__sveltets_2_IsomorphicComponent<Props, {
71
71
  append: (code: string) => void;
72
72
  format: () => Promise<void>;
73
73
  getScriptLang: () => string | undefined;
74
- reviewAndApplyCode: (code: string) => void;
74
+ reviewAndApplyCode: (code: string, applyAll?: boolean) => void;
75
75
  reloadWebsocket: () => Promise<void>;
76
76
  fetchPackageDeps: (deps: DepsToGet) => Promise<void>;
77
77
  addAction: (id: string, label: string, callback: (editor: meditor.IStandaloneCodeEditor) => void, keybindings?: number[]) => void;
@@ -23,13 +23,14 @@ import Toggle from './Toggle.svelte';
23
23
  import { DatabaseIcon, DiffIcon, DollarSign, File, History, Library, Link, Package, Plus, RotateCw, Save, Users } from 'lucide-svelte';
24
24
  import { capitalize, formatS3Object, toCamel } from '../utils';
25
25
  import ScriptVersionHistory from './ScriptVersionHistory.svelte';
26
- import ScriptGen from './copilot/ScriptGen.svelte';
27
26
  import { getResetCode } from '../script_helpers';
28
27
  import Popover from './Popover.svelte';
29
28
  import ResourceEditorDrawer from './ResourceEditorDrawer.svelte';
30
29
  import EditorSettings from './EditorSettings.svelte';
31
30
  import S3FilePicker from './S3FilePicker.svelte';
32
31
  import DucklakeIcon from './icons/DucklakeIcon.svelte';
32
+ import FlowInlineScriptAiButton from './copilot/FlowInlineScriptAIButton.svelte';
33
+ import ScriptGen from './copilot/ScriptGen.svelte';
33
34
  let { lang, editor, websocketAlive, iconOnly = false, validCode = true, kind = 'script', template = 'script', collabMode = false, collabLive = false, collabUsers = [], scriptPath = undefined, diffEditor = undefined, args, noHistory = false, saveToWorkspace = false, customUi = {}, lastDeployedCode = undefined, diffMode = false, showHistoryDrawer = $bindable(false), right, openAiChat = false } = $props();
34
35
  let contextualVariablePicker = $state();
35
36
  let variablePicker = $state();
@@ -53,7 +54,8 @@ let showContextVarPicker = $derived([
53
54
  'rust',
54
55
  'csharp',
55
56
  'nu',
56
- 'java'
57
+ 'java',
58
+ 'ruby'
57
59
  // for related places search: ADD_NEW_LANG
58
60
  ].includes(lang ?? ''));
59
61
  let showVarPicker = $derived([
@@ -69,7 +71,8 @@ let showVarPicker = $derived([
69
71
  'rust',
70
72
  'csharp',
71
73
  'nu',
72
- 'java'
74
+ 'java',
75
+ 'ruby'
73
76
  // for related places search: ADD_NEW_LANG
74
77
  ].includes(lang ?? ''));
75
78
  let showResourcePicker = $derived([
@@ -85,7 +88,8 @@ let showResourcePicker = $derived([
85
88
  'rust',
86
89
  'csharp',
87
90
  'nu',
88
- 'java'
91
+ 'java',
92
+ 'ruby',
89
93
  // for related places search: ADD_NEW_LANG
90
94
  ].includes(lang ?? ''));
91
95
  let showS3Picker = $derived(['duckdb', 'python3'].includes(lang ?? '') ||
@@ -341,6 +345,8 @@ function windmillPathToCamelCaseName(path) {
341
345
  } else if (lang == 'java') {
342
346
  editor.insertAtCursor(`System.getenv("${name}");`)
343
347
  // for related places search: ADD_NEW_LANG
348
+ } else if (lang == 'ruby') {
349
+ editor.insertAtCursor(`ENV['${name}']`)
344
350
  }
345
351
  sendUserToast(`${name} inserted at cursor`)
346
352
  }}
@@ -411,6 +417,11 @@ string ${windmillPathToCamelCaseName(path)} = await client.GetStringAsync(uri);
411
417
  } else if (lang == 'java') {
412
418
  editor.insertAtCursor(`(Wmill.getVariable("${path}"))`)
413
419
  // for related places search: ADD_NEW_LANG
420
+ } else if (lang == 'ruby') {
421
+ if (!editor.getCode().includes("require 'windmill/mini'")) {
422
+ editor.insertAtBeginning("require 'windmill/mini'\n")
423
+ }
424
+ editor.insertAtCursor(`get_variable("${path}")`)
414
425
  }
415
426
  sendUserToast(`${name} inserted at cursor`)
416
427
  }}
@@ -500,6 +511,11 @@ JsonNode ${windmillPathToCamelCaseName(path)} = JsonNode.Parse(await client.GetS
500
511
  } else if (lang == 'java') {
501
512
  editor.insertAtCursor(`(Wmill.getResource("${path}"))`)
502
513
  // for related places search: ADD_NEW_LANG
514
+ } else if (lang == 'ruby') {
515
+ if (!editor.getCode().includes("require 'windmill/mini'")) {
516
+ editor.insertAtBeginning("require 'windmill/mini'\n")
517
+ }
518
+ editor.insertAtCursor(`get_resource("${path}")`)
503
519
  } else if (lang == 'duckdb') {
504
520
  let t = { postgresql: 'postgres', mysql: 'mysql', bigquery: 'bigquery' }[resType]
505
521
  if (!t) {
@@ -853,7 +869,11 @@ JsonNode ${windmillPathToCamelCaseName(path)} = JsonNode.Parse(await client.GetS
853
869
  {/if}
854
870
 
855
871
  {#if customUi?.aiGen != false}
856
- <ScriptGen {editor} {diffEditor} {lang} {iconOnly} {args} {openAiChat} />
872
+ {#if openAiChat}
873
+ <FlowInlineScriptAiButton />
874
+ {:else}
875
+ <ScriptGen {editor} {diffEditor} {lang} {iconOnly} {args} />
876
+ {/if}
857
877
  {/if}
858
878
 
859
879
  <EditorSettings {customUi} />
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">import { Settings } from 'lucide-svelte';
2
2
  import FormatOnSave from './FormatOnSave.svelte';
3
3
  import VimMode from './VimMode.svelte';
4
+ import RelativeLineNumbers from './RelativeLineNumbers.svelte';
4
5
  import { Button } from './common';
5
6
  import CodeCompletionStatus from './copilot/CodeCompletionStatus.svelte';
6
7
  import Popover from './meltComponents/Popover.svelte';
@@ -36,6 +37,11 @@ export let customUi = {};
36
37
  <VimMode />
37
38
  </div>
38
39
  {/if}
40
+ {#if customUi?.relativeLineNumbers != false}
41
+ <div>
42
+ <RelativeLineNumbers />
43
+ </div>
44
+ {/if}
39
45
  {#if customUi?.aiCompletion != false}
40
46
  <div>
41
47
  <CodeCompletionStatus />
@@ -14,7 +14,7 @@ let error = $state(undefined);
14
14
  let mod = $state(undefined);
15
15
  async function loadSchema() {
16
16
  try {
17
- const res = await getFirstStepSchema($flowStateStore, flowStore.val);
17
+ const res = await getFirstStepSchema(flowStateStore.val, flowStore.val);
18
18
  schema = res.schema;
19
19
  mod = res.mod;
20
20
  dispatch('connectFirstNode', { connectFirstNode: res.connectFirstNode });
@@ -24,7 +24,7 @@ async function loadSchema() {
24
24
  }
25
25
  }
26
26
  $effect(() => {
27
- flowStore.val && $flowStateStore && untrack(() => loadSchema());
27
+ flowStore.val && flowStateStore.val && untrack(() => loadSchema());
28
28
  });
29
29
  function handleClick() {
30
30
  selected = !selected;
@@ -15,7 +15,7 @@ import ScriptEditorDrawer from './flows/content/ScriptEditorDrawer.svelte';
15
15
  import { dfs as dfsApply } from './flows/dfs';
16
16
  import FlowImportExportMenu from './flows/header/FlowImportExportMenu.svelte';
17
17
  import FlowPreviewButtons from './flows/header/FlowPreviewButtons.svelte';
18
- import { cleanInputs, updateDerivedModuleStatesFromTestJobs } from './flows/utils';
18
+ import { cleanInputs } from './flows/utils';
19
19
  import { Calendar, Pen, Save, DiffIcon, HistoryIcon, FileJson, Settings } from 'lucide-svelte';
20
20
  import Awareness from './Awareness.svelte';
21
21
  import { getAllModules } from './flows/flowExplorer';
@@ -445,13 +445,7 @@ function select(selectedId) {
445
445
  selectedIdStore.set(selectedId);
446
446
  }
447
447
  let insertButtonOpen = writable(false);
448
- let testModuleId = $state(undefined);
449
- let modulesTestStates = new ModulesTestStates((moduleId) => {
450
- // Update the derived store with test job states
451
- delete $derivedModuleStates[moduleId];
452
- testModuleId = moduleId;
453
- showJobStatus = false;
454
- });
448
+ let modulesTestStates = new ModulesTestStates();
455
449
  let outputPickerOpenFns = $state({});
456
450
  let flowEditor = $state(undefined);
457
451
  setContext('FlowEditorContext', {
@@ -715,25 +709,8 @@ function onJobDone() {
715
709
  }
716
710
  }
717
711
  }
718
- const localModuleStates = $derived(flowPreviewContent?.getLocalModuleStates() ?? writable({}));
719
- const localDurationStatuses = $derived(flowPreviewContent?.getLocalDurationStatuses() ?? writable({}));
720
- const suspendStatus = $derived(flowPreviewContent?.getSuspendStatus() ?? writable({}));
721
- // Create a derived store that only shows the module states when showModuleStatus is true
722
- // this store can also be updated
723
- let derivedModuleStates = writable({});
724
- $effect(() => {
725
- derivedModuleStates.update((currentStates) => {
726
- return showJobStatus ? $localModuleStates : currentStates;
727
- });
728
- });
729
- $effect(() => {
730
- updateDerivedModuleStatesFromTestJobs(testModuleId, modulesTestStates, derivedModuleStates);
731
- });
732
- function resetModulesStates() {
733
- derivedModuleStates.set({});
734
- showJobStatus = false;
735
- }
736
- const individualStepTests = $derived(!(showJobStatus && job) && Object.keys($derivedModuleStates).length > 0);
712
+ let localModuleStates = $state({});
713
+ let suspendStatus = $state({ val: {} });
737
714
  const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
738
715
  </script>
739
716
 
@@ -798,7 +775,7 @@ const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
798
775
  for (const mod of restoredModules) {
799
776
  if (mod) {
800
777
  try {
801
- loadFlowModuleState(mod).then((state) => ($flowStateStore[mod.id] = state))
778
+ loadFlowModuleState(mod).then((state) => (flowStateStore.val[mod.id] = state))
802
779
  } catch (e) {
803
780
  console.error('Error loading state for restored node', e)
804
781
  }
@@ -928,10 +905,12 @@ const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
928
905
  showCaptureHint.set(true)
929
906
  }}
930
907
  {onJobDone}
908
+ bind:localModuleStates
931
909
  bind:this={flowPreviewButtons}
932
910
  {loading}
933
911
  onRunPreview={() => {
934
- localModuleStates.set({})
912
+ modulesTestStates.hideJobsInGraph()
913
+ localModuleStates = {}
935
914
  showJobStatus = true
936
915
  }}
937
916
  />
@@ -958,7 +937,7 @@ const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
958
937
  </div>
959
938
  </div>
960
939
  <!-- metadata -->
961
- {#if $flowStateStore}
940
+ {#if flowStateStore.val}
962
941
  <FlowEditor
963
942
  bind:this={flowEditor}
964
943
  {disabledFlowInputs}
@@ -1001,19 +980,22 @@ const flowHasChanged = $derived(flowPreviewContent?.flowHasChanged());
1001
980
  showFlowAiButton={!disableAi && customUi?.topBar?.aiBuilder != false}
1002
981
  toggleAiChat={() => aiChatManager.toggleOpen()}
1003
982
  onOpenPreview={flowPreviewButtons?.openPreview}
1004
- localModuleStates={derivedModuleStates}
983
+ localModuleStates={showJobStatus ? localModuleStates : {}}
984
+ {showJobStatus}
985
+ testModuleStates={modulesTestStates}
1005
986
  isOwner={flowPreviewContent?.getIsOwner()}
1006
987
  onTestFlow={flowPreviewButtons?.runPreview}
1007
988
  isRunning={flowPreviewContent?.getIsRunning()}
1008
989
  onCancelTestFlow={flowPreviewContent?.cancelTest}
1009
- onHideJobStatus={resetModulesStates}
1010
- {individualStepTests}
990
+ onHideJobStatus={() => {
991
+ modulesTestStates.hideJobsInGraph()
992
+ showJobStatus = false
993
+ }}
1011
994
  {job}
1012
- {localDurationStatuses}
1013
995
  {suspendStatus}
1014
- {showJobStatus}
1015
996
  onDelete={(id) => {
1016
- delete $derivedModuleStates[id]
997
+ delete localModuleStates[id]
998
+ delete modulesTestStates.states[id]
1017
999
  }}
1018
1000
  {flowHasChanged}
1019
1001
  />
@@ -132,6 +132,8 @@ let codeViewer;
132
132
  Inline {stepDetail.value.language} script
133
133
  {:else if stepDetail.value.type == 'script'}
134
134
  Workspace script
135
+ {:else if stepDetail.value.type == 'aiagent'}
136
+ AI Agent
135
137
  {/if}
136
138
  </span>
137
139
  </div>
@@ -212,6 +214,11 @@ let codeViewer;
212
214
  {:else}
213
215
  <FlowModuleScript path={stepDetail.value.path} />
214
216
  {/if}
217
+ {:else if stepDetail.value.type == 'aiagent'}
218
+ <div class="text-2xs">
219
+ <h3 class="mb-2 font-semibold mt-2">Step Inputs</h3>
220
+ <InputTransformsViewer inputTransforms={stepDetail?.value?.input_transforms ?? {}} />
221
+ </div>
215
222
  {:else if stepDetail.value.type == 'forloopflow'}
216
223
  <div>
217
224
  <p class="font-medium text-secondary pb-2"> Iterator expression: </p>
@@ -1,59 +1,10 @@
1
1
  <script lang="ts">import { Loader2 } from 'lucide-svelte';
2
2
  import DisplayResult from './DisplayResult.svelte';
3
3
  import LogViewer from './LogViewer.svelte';
4
- import { JobService } from '../gen';
5
- import { workspaceStore } from '../stores';
6
- import DrawerContent from './common/drawer/DrawerContent.svelte';
7
- import { Drawer } from './common';
8
- import AllFlowLogs from './AllFlowLogs.svelte';
9
- import { untrack } from 'svelte';
10
- let { waitingForExecutor = false, result, result_stream, logs = $bindable(), col = false, noBorder = false, loading, filename = undefined, jobId = undefined, tag = undefined, workspaceId = undefined, refreshLog = false, durationStates, downloadLogs = true, tagLabel = undefined } = $props();
11
- let lastJobId = $state(undefined);
12
- let drawer = $state(undefined);
13
- let iteration = 0;
14
- let logOffset = 0;
15
- async function diffJobId() {
16
- if (jobId != lastJobId) {
17
- lastJobId = jobId;
18
- logs = undefined;
19
- logOffset = 0;
20
- iteration = 0;
21
- getLogs();
22
- }
23
- }
24
- async function getLogs() {
25
- iteration += 1;
26
- if (jobId) {
27
- const getUpdate = await JobService.getJobUpdates({
28
- workspace: workspaceId ?? $workspaceStore,
29
- id: jobId,
30
- running: loading ?? false,
31
- logOffset: logOffset == 0 ? (logs?.length ? logs?.length + 1 : 0) : logOffset
32
- });
33
- logs = (logs ?? '').concat(getUpdate.new_logs ?? '');
34
- logOffset = getUpdate.log_offset ?? 0;
35
- }
36
- if (refreshLog) {
37
- setTimeout(() => {
38
- if (refreshLog) {
39
- getLogs();
40
- }
41
- }, iteration < 10 ? 1000 : iteration < 20 ? 2000 : 5000);
42
- }
43
- }
44
- $effect(() => {
45
- jobId;
46
- untrack(() => {
47
- jobId != lastJobId && diffJobId();
48
- });
49
- });
4
+ import AiAgentLogViewer from './AIAgentLogViewer.svelte';
5
+ let { waitingForExecutor = false, result, result_stream, logs, col = false, noBorder = false, loading, filename = undefined, jobId = undefined, tag = undefined, workspaceId = undefined, downloadLogs = true, tagLabel = undefined, aiAgentStatus = undefined } = $props();
50
6
  </script>
51
7
 
52
- <Drawer bind:this={drawer}>
53
- <DrawerContent title="Explore all steps' logs" on:close={drawer.closeDrawer}
54
- ><AllFlowLogs states={durationStates} /></DrawerContent
55
- >
56
- </Drawer>
57
8
  <div
58
9
  class:border={!noBorder}
59
10
  class="grid {!col
@@ -63,7 +14,7 @@ $effect(() => {
63
14
  <div class="bg-surface {col ? '' : 'max-h-80'} p-1 overflow-auto relative">
64
15
  <span class="text-tertiary">Result</span>
65
16
  {#if result !== undefined || result_stream !== undefined}
66
- <DisplayResult {workspaceId} {jobId} {filename} {result} {result_stream} />
17
+ <DisplayResult {workspaceId} {jobId} {filename} {result} {result_stream} growVertical />
67
18
  {:else if loading}
68
19
  <Loader2 class="animate-spin" />
69
20
  {:else}
@@ -71,16 +22,17 @@ $effect(() => {
71
22
  {/if}
72
23
  </div>
73
24
  <div class="overflow-auto {col ? '' : 'max-h-80'} relative">
74
- <div class="absolute z-40 text-xs top-0 left-1"
75
- ><button class="" onclick={drawer.openDrawer}>explore all steps' logs</button></div
76
- >
77
- <LogViewer
78
- {tagLabel}
79
- download={downloadLogs}
80
- content={logs ?? ''}
81
- {jobId}
82
- isLoading={waitingForExecutor}
83
- {tag}
84
- />
25
+ {#if aiAgentStatus}
26
+ <AiAgentLogViewer {...aiAgentStatus} {workspaceId} />
27
+ {:else}
28
+ <LogViewer
29
+ {tagLabel}
30
+ download={downloadLogs}
31
+ content={logs ?? ''}
32
+ {jobId}
33
+ isLoading={waitingForExecutor}
34
+ {tag}
35
+ />
36
+ {/if}
85
37
  </div>
86
38
  </div>
@@ -1,5 +1,4 @@
1
- import type { DurationStatus } from './graph';
2
- import type { Writable } from 'svelte/store';
1
+ import type { CompletedJob, FlowModule, Job } from '../gen';
3
2
  interface Props {
4
3
  waitingForExecutor?: boolean;
5
4
  result: any;
@@ -13,10 +12,17 @@ interface Props {
13
12
  tag?: string | undefined;
14
13
  workspaceId?: string | undefined;
15
14
  refreshLog?: boolean;
16
- durationStates: Writable<Record<string, DurationStatus>> | undefined;
17
15
  downloadLogs?: boolean;
18
16
  tagLabel?: string | undefined;
17
+ aiAgentStatus?: {
18
+ tools: FlowModule[];
19
+ agentJob: Partial<CompletedJob> & Pick<CompletedJob, 'id'> & {
20
+ type: 'CompletedJob';
21
+ };
22
+ storedToolCallJobs?: Record<number, Job>;
23
+ onToolJobLoaded?: (job: Job, idx: number) => void;
24
+ };
19
25
  }
20
- declare const FlowJobResult: import("svelte").Component<Props, {}, "logs">;
26
+ declare const FlowJobResult: import("svelte").Component<Props, {}, "">;
21
27
  type FlowJobResult = ReturnType<typeof FlowJobResult>;
22
28
  export default FlowJobResult;