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
@@ -1,5 +1,4 @@
1
1
  <script lang="ts">import { Tabs, Tab, TabContent } from '../common';
2
- import SplitPanesWrapper from '../splitPanes/SplitPanesWrapper.svelte';
3
2
  import { Pane, Splitpanes } from 'svelte-splitpanes';
4
3
  import DetailPageDetailPanel from './DetailPageDetailPanel.svelte';
5
4
  let { isOperator = false, flow_json = undefined, selected = $bindable(), header, form, scriptRender: script, save_inputs, flow_step, triggers } = $props();
@@ -13,9 +12,9 @@ const triggers_render = $derived(triggers);
13
12
 
14
13
  <main class="h-screen w-full" bind:clientWidth>
15
14
  {#if clientWidth >= 768}
16
- <div class="h-full w-full">
15
+ <div class="h-full w-full flex flex-col">
17
16
  {@render header?.()}
18
- <SplitPanesWrapper>
17
+ <div class="grow min-h-0 w-full">
19
18
  <Splitpanes>
20
19
  <Pane size={65} minSize={50}>
21
20
  {@render form?.()}
@@ -37,41 +36,43 @@ const triggers_render = $derived(triggers);
37
36
  </DetailPageDetailPanel>
38
37
  </Pane>
39
38
  </Splitpanes>
40
- </SplitPanesWrapper>
39
+ </div>
41
40
  </div>
42
41
  {:else}
43
- <div class="h-full w-full">
42
+ <div class="h-full w-full flex flex-col">
44
43
  {@render header?.()}
45
- <Tabs bind:selected={mobileTab}>
46
- <Tab value="form">Run form</Tab>
47
- <Tab value="saved_inputs">Inputs</Tab>
48
- {#if !isOperator}
49
- <Tab value="triggers">Triggers</Tab>
50
- {/if}
51
- {#if flow_json}
52
- <Tab value="raw">Export</Tab>
53
- {:else}
54
- <Tab value="script">Script</Tab>
55
- {/if}
44
+ <div class="grow min-h-0 w-full flex flex-col">
45
+ <Tabs bind:selected={mobileTab} wrapperClass="flex-none">
46
+ <Tab value="form">Run form</Tab>
47
+ <Tab value="saved_inputs">Inputs</Tab>
48
+ {#if !isOperator}
49
+ <Tab value="triggers">Triggers</Tab>
50
+ {/if}
51
+ {#if flow_json}
52
+ <Tab value="raw">Export</Tab>
53
+ {:else}
54
+ <Tab value="script">Script</Tab>
55
+ {/if}
56
56
 
57
- {#snippet content()}
58
- <div class="h-full">
59
- <TabContent value="form" class="flex flex-col flex-1 h-full">
60
- {@render form?.()}
61
- </TabContent>
57
+ {#snippet content()}
58
+ <div class="grow min-h-0">
59
+ <TabContent value="form" class="flex flex-col flex-1 h-full">
60
+ {@render form?.()}
61
+ </TabContent>
62
62
 
63
- <TabContent value="saved_inputs" class="flex flex-col flex-1 h-full">
64
- {@render save_inputs?.()}
65
- </TabContent>
66
- <TabContent value="triggers" class="flex flex-col flex-1 h-full mt-[-2px]">
67
- {@render triggers?.()}
68
- </TabContent>
69
- <TabContent value="script" class="flex flex-col flex-1 h-full">
70
- {@render script?.()}
71
- </TabContent>
72
- </div>
73
- {/snippet}
74
- </Tabs>
63
+ <TabContent value="saved_inputs" class="flex flex-col flex-1 h-full">
64
+ {@render save_inputs?.()}
65
+ </TabContent>
66
+ <TabContent value="triggers" class="flex flex-col flex-1 h-full mt-[-2px]">
67
+ {@render triggers?.()}
68
+ </TabContent>
69
+ <TabContent value="script" class="flex flex-col flex-1 h-full">
70
+ {@render script?.()}
71
+ </TabContent>
72
+ </div>
73
+ {/snippet}
74
+ </Tabs>
75
+ </div>
75
76
  </div>
76
77
  {/if}
77
78
  </main>
@@ -1,6 +1,5 @@
1
1
  import type { OpenFlow } from '../gen';
2
2
  import type { StateStore } from '../utils';
3
- import type { Writable } from 'svelte/store';
4
3
  import type { FlowState } from './flows/flowState';
5
4
  import type { FlowWithDraftAndDraftTriggers, Trigger } from './triggers/utils';
6
5
  import type { DiffDrawerI } from './diff_drawer';
@@ -15,7 +14,7 @@ export type FlowBuilderProps = {
15
14
  initialArgs?: Record<string, any>;
16
15
  loading?: boolean;
17
16
  flowStore: StateStore<OpenFlow>;
18
- flowStateStore: Writable<FlowState>;
17
+ flowStateStore: StateStore<FlowState>;
19
18
  savedFlow?: FlowWithDraftAndDraftTriggers | undefined;
20
19
  diffDrawer?: DiffDrawerI | undefined;
21
20
  customUi?: FlowBuilderWhitelabelCustomUi;
@@ -9,7 +9,7 @@ import FlowAIChat from '../copilot/chat/flow/FlowAIChat.svelte';
9
9
  import { aiChatManager, AIMode } from '../copilot/chat/AIChatManager.svelte';
10
10
  import { triggerableByAI } from '../../actions/triggerableByAI.svelte';
11
11
  const { flowStore } = getContext('FlowEditorContext');
12
- let { loading, disableStaticInputs = false, disableTutorials = false, disableAi = false, disableSettings = false, disabledFlowInputs = false, smallErrorHandler = false, newFlow = false, savedFlow = undefined, onDeployTrigger = () => { }, onTestUpTo = undefined, onEditInput = undefined, forceTestTab, highlightArg, localModuleStates = writable({}), aiChatOpen, showFlowAiButton, toggleAiChat, isOwner, onTestFlow, isRunning, onCancelTestFlow, onOpenPreview, onHideJobStatus, individualStepTests = false, job, localDurationStatuses, suspendStatus, showJobStatus, onDelete, flowHasChanged } = $props();
12
+ let { loading, disableStaticInputs = false, disableTutorials = false, disableAi = false, disableSettings = false, disabledFlowInputs = false, smallErrorHandler = false, showJobStatus = false, newFlow = false, savedFlow = undefined, onDeployTrigger = () => { }, onTestUpTo = undefined, onEditInput = undefined, forceTestTab, highlightArg, localModuleStates = {}, testModuleStates = undefined, aiChatOpen, showFlowAiButton, toggleAiChat, isOwner, onTestFlow, isRunning, onCancelTestFlow, onOpenPreview, onHideJobStatus, individualStepTests = false, job, suspendStatus, onDelete, flowHasChanged } = $props();
13
13
  let flowModuleSchemaMap = $state();
14
14
  export function isNodeVisible(nodeId) {
15
15
  return flowModuleSchemaMap?.isNodeVisible(nodeId) ?? false;
@@ -52,6 +52,7 @@ onDestroy(() => {
52
52
  {disableSettings}
53
53
  {smallErrorHandler}
54
54
  {newFlow}
55
+ {showJobStatus}
55
56
  on:reload
56
57
  on:generateStep={({ detail }) => {
57
58
  if (!aiChatManager.open) {
@@ -62,6 +63,7 @@ onDestroy(() => {
62
63
  {onTestUpTo}
63
64
  {onEditInput}
64
65
  {localModuleStates}
66
+ {testModuleStates}
65
67
  {aiChatOpen}
66
68
  {showFlowAiButton}
67
69
  {toggleAiChat}
@@ -73,7 +75,6 @@ onDestroy(() => {
73
75
  {onHideJobStatus}
74
76
  {individualStepTests}
75
77
  flowJob={job}
76
- {showJobStatus}
77
78
  {suspendStatus}
78
79
  {onDelete}
79
80
  {flowHasChanged}
@@ -102,7 +103,6 @@ onDestroy(() => {
102
103
  {onTestFlow}
103
104
  {job}
104
105
  {isOwner}
105
- {localDurationStatuses}
106
106
  {suspendStatus}
107
107
  onOpenDetails={onOpenPreview}
108
108
  />
@@ -1,7 +1,8 @@
1
- import { type Writable } from 'svelte/store';
2
1
  import type { Flow, Job } from '../../gen';
3
2
  import type { Trigger } from '../triggers/utils';
4
- import type { DurationStatus, GraphModuleState } from '../graph';
3
+ import type { GraphModuleState } from '../graph';
4
+ import type { ModulesTestStates } from '../modulesTest.svelte';
5
+ import type { StateStore } from '../../utils';
5
6
  interface Props {
6
7
  loading: boolean;
7
8
  disableStaticInputs?: boolean;
@@ -11,6 +12,7 @@ interface Props {
11
12
  disabledFlowInputs?: boolean;
12
13
  smallErrorHandler?: boolean;
13
14
  newFlow?: boolean;
15
+ showJobStatus?: boolean;
14
16
  savedFlow?: (Flow & {
15
17
  draft?: Flow | undefined;
16
18
  }) | undefined;
@@ -22,7 +24,8 @@ interface Props {
22
24
  aiChatOpen?: boolean;
23
25
  showFlowAiButton?: boolean;
24
26
  toggleAiChat?: () => void;
25
- localModuleStates?: Writable<Record<string, GraphModuleState>>;
27
+ localModuleStates?: Record<string, GraphModuleState>;
28
+ testModuleStates?: ModulesTestStates;
26
29
  isOwner?: boolean;
27
30
  onTestFlow?: () => void;
28
31
  isRunning?: boolean;
@@ -31,12 +34,10 @@ interface Props {
31
34
  onHideJobStatus?: () => void;
32
35
  individualStepTests?: boolean;
33
36
  job?: Job;
34
- localDurationStatuses?: Writable<Record<string, DurationStatus>>;
35
- suspendStatus?: Writable<Record<string, {
37
+ suspendStatus?: StateStore<Record<string, {
36
38
  job: Job;
37
39
  nb: number;
38
40
  }>>;
39
- showJobStatus?: boolean;
40
41
  onDelete?: (id: string) => void;
41
42
  flowHasChanged?: boolean;
42
43
  }
@@ -1,11 +1,11 @@
1
1
  <script lang="ts">import FlowCardHeader from './FlowCardHeader.svelte';
2
- let { title = undefined, summary = $bindable(undefined), noEditor, noHeader = false, flowModuleValue = undefined, header, children } = $props();
2
+ let { title = undefined, summary = $bindable(undefined), noEditor, noHeader = false, flowModuleValue = undefined, header, children, isAgentTool = false } = $props();
3
3
  </script>
4
4
 
5
5
  <div class="flex flex-col h-full">
6
6
  {#if !noEditor && !noHeader}
7
7
  <div>
8
- <FlowCardHeader on:setHash on:reload {title} bind:summary {flowModuleValue}>
8
+ <FlowCardHeader on:setHash on:reload {title} bind:summary {flowModuleValue} {isAgentTool}>
9
9
  {@render header?.()}
10
10
  </FlowCardHeader>
11
11
  </div>
@@ -7,6 +7,7 @@ interface Props {
7
7
  flowModuleValue?: FlowModuleValue | undefined;
8
8
  header?: import('svelte').Snippet;
9
9
  children?: import('svelte').Snippet;
10
+ isAgentTool?: boolean;
10
11
  }
11
12
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
12
13
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
@@ -11,7 +11,9 @@ import { ScriptService } from '../../../gen';
11
11
  import { workspaceStore } from '../../../stores';
12
12
  import { Lock, RefreshCw, Unlock } from 'lucide-svelte';
13
13
  import { createEventDispatcher, untrack } from 'svelte';
14
- let { flowModuleValue = undefined, title = undefined, summary = $bindable(undefined), children } = $props();
14
+ import { twMerge } from 'tailwind-merge';
15
+ import { validateToolName } from '../../graph/renderers/nodes/AIToolNode.svelte';
16
+ let { flowModuleValue = undefined, title = undefined, summary = $bindable(undefined), children, isAgentTool = false } = $props();
15
17
  let latestHash = $state(undefined);
16
18
  function getCachedKey(path) {
17
19
  return `${$workspaceStore}-${path}`;
@@ -58,11 +60,11 @@ $effect.pre(() => {
58
60
  </div>
59
61
  <MetadataGen
60
62
  bind:content={summary}
61
- promptConfigName="summary"
63
+ promptConfigName={isAgentTool ? 'agentToolFunctionName' : 'summary'}
62
64
  code={flowModuleValue.content}
63
65
  class="w-full"
64
66
  elementProps={{
65
- placeholder: 'Summary'
67
+ placeholder: isAgentTool ? 'Tool name' : 'Summary'
66
68
  }}
67
69
  />
68
70
  {:else if flowModuleValue.type === 'script' && 'path' in flowModuleValue && flowModuleValue.path}
@@ -116,7 +118,14 @@ $effect.pre(() => {
116
118
  >
117
119
  </div>
118
120
  {/if}
119
- <input bind:value={summary} placeholder="Summary" class="w-full grow" />
121
+ <input
122
+ bind:value={summary}
123
+ placeholder={isAgentTool ? 'Tool name' : 'Summary'}
124
+ class={twMerge(
125
+ 'w-full grow',
126
+ isAgentTool && !validateToolName(summary ?? '') && '!border-red-400'
127
+ )}
128
+ />
120
129
  {:else if flowModuleValue.type === 'flow'}
121
130
  <Badge color="indigo" capitalize>flow</Badge>
122
131
  <input bind:value={summary} placeholder="Summary" class="w-full grow" />
@@ -4,6 +4,7 @@ interface Props {
4
4
  title?: string | undefined;
5
5
  summary?: string | undefined;
6
6
  children?: import('svelte').Snippet;
7
+ isAgentTool?: boolean;
7
8
  }
8
9
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
9
10
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
@@ -5,14 +5,11 @@ import { getStepPropPicker } from '../previousResults';
5
5
  import Button from '../../common/button/Button.svelte';
6
6
  import { Pen } from 'lucide-svelte';
7
7
  import PredicateGen from '../../copilot/PredicateGen.svelte';
8
- export let branch;
9
- export let parentModule;
10
- export let previousModule;
11
- export let enableAi = false;
8
+ let { branch = $bindable(), parentModule, previousModule, enableAi = false } = $props();
12
9
  const { previewArgs, flowStateStore, flowStore } = getContext('FlowEditorContext');
13
- let editor = undefined;
14
- let open = false;
15
- $: stepPropPicker = getStepPropPicker($flowStateStore, parentModule, previousModule, parentModule.id, flowStore.val, previewArgs.val, false);
10
+ let editor = $state(undefined);
11
+ let open = $state(false);
12
+ let stepPropPicker = $derived(getStepPropPicker(flowStateStore.val, parentModule, previousModule, parentModule.id, flowStore.val, previewArgs.val, false));
16
13
  </script>
17
14
 
18
15
  {#if open}
@@ -1,4 +1,14 @@
1
1
  import type { FlowModule } from '../../../gen';
2
+ interface Props {
3
+ branch: {
4
+ summary?: string;
5
+ expr: string;
6
+ modules: Array<FlowModule>;
7
+ };
8
+ parentModule: FlowModule;
9
+ previousModule: FlowModule | undefined;
10
+ enableAi?: boolean;
11
+ }
2
12
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
13
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
14
  $$bindings?: Bindings;
@@ -12,19 +22,10 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
12
22
  };
13
23
  z_$$bindings?: Bindings;
14
24
  }
15
- declare const BranchPredicateEditor: $$__sveltets_2_IsomorphicComponent<{
16
- branch: {
17
- summary?: string;
18
- expr: string;
19
- modules: Array<FlowModule>;
20
- };
21
- parentModule: FlowModule;
22
- previousModule: FlowModule | undefined;
23
- enableAi?: boolean;
24
- }, {
25
+ declare const BranchPredicateEditor: $$__sveltets_2_IsomorphicComponent<Props, {
25
26
  updateSummary: CustomEvent<any>;
26
27
  } & {
27
28
  [evt: string]: CustomEvent<any>;
28
- }, {}, {}, string>;
29
+ }, {}, {}, "branch">;
29
30
  type BranchPredicateEditor = InstanceType<typeof BranchPredicateEditor>;
30
31
  export default BranchPredicateEditor;
@@ -16,7 +16,7 @@ let resources = $derived(Object.fromEntries(scriptModules
16
16
  m.id,
17
17
  Object.entries(v.input_transforms)
18
18
  .map((x) => {
19
- let schema = flowStateStore[m.id]?.schema;
19
+ let schema = flowStateStore.val[m.id]?.schema;
20
20
  let val = undefined;
21
21
  const [k, inputTransform] = x;
22
22
  const v = schema?.properties[k];
@@ -41,7 +41,7 @@ let steps = $derived(scriptModules
41
41
  Object.entries(v.input_transforms)
42
42
  .filter((x) => {
43
43
  const shouldDisplay = hideOptional
44
- ? $flowStateStore[m.id]?.schema?.required?.includes(x[0])
44
+ ? flowStateStore.val[m.id]?.schema?.required?.includes(x[0])
45
45
  : true;
46
46
  return x[1].type == 'static' && shouldDisplay;
47
47
  })
@@ -109,7 +109,7 @@ setContext('PropPickerWrapper', {
109
109
  noDynamicToggle
110
110
  {filter}
111
111
  class="mt-2"
112
- schema={$flowStateStore[m.id]?.schema ?? {}}
112
+ schema={flowStateStore.val[m.id]?.schema ?? {}}
113
113
  bind:args={steps[index][0]}
114
114
  />
115
115
  </div>
@@ -10,7 +10,7 @@ import TriggersEditor from '../../triggers/TriggersEditor.svelte';
10
10
  import { handleSelectTriggerFromKind } from '../../triggers/utils';
11
11
  import { computeMissingInputWarnings } from '../missingInputWarnings';
12
12
  import FlowResult from './FlowResult.svelte';
13
- let { noEditor = false, enableAi = false, newFlow = false, disabledFlowInputs = false, savedFlow = undefined, onDeployTrigger = () => { }, forceTestTab, highlightArg, onTestFlow, job, isOwner, localDurationStatuses, suspendStatus, onOpenDetails } = $props();
13
+ let { noEditor = false, enableAi = false, newFlow = false, disabledFlowInputs = false, savedFlow = undefined, onDeployTrigger = () => { }, forceTestTab, highlightArg, onTestFlow, job, isOwner, suspendStatus, onOpenDetails } = $props();
14
14
  const { selectedId, flowStore, flowStateStore, flowInputsStore, pathStore, initialPathStore, fakeInitialPath, previewArgs, flowInputEditorState } = getContext('FlowEditorContext');
15
15
  const { showCaptureHint, triggersState, triggersCount } = getContext('TriggerContext');
16
16
  function checkDup(modules) {
@@ -24,7 +24,7 @@ function checkDup(modules) {
24
24
  }
25
25
  }
26
26
  $effect(() => {
27
- computeMissingInputWarnings(flowStore, $flowStateStore, flowInputsStore);
27
+ computeMissingInputWarnings(flowStore, flowStateStore.val, flowInputsStore);
28
28
  });
29
29
  </script>
30
30
 
@@ -43,7 +43,7 @@ $effect(() => {
43
43
  {onTestFlow}
44
44
  />
45
45
  {:else if $selectedId === 'Result'}
46
- <FlowResult {noEditor} {job} {isOwner} {localDurationStatuses} {suspendStatus} {onOpenDetails} />
46
+ <FlowResult {noEditor} {job} {isOwner} {suspendStatus} {onOpenDetails} />
47
47
  {:else if $selectedId === 'constants'}
48
48
  <FlowConstants {noEditor} />
49
49
  {:else if $selectedId === 'failure'}
@@ -1,7 +1,6 @@
1
1
  import type { Flow, Job } from '../../../gen';
2
2
  import { type Trigger } from '../../triggers/utils';
3
- import type { Writable } from 'svelte/store';
4
- import type { DurationStatus } from '../../graph';
3
+ import type { StateStore } from '../../../utils';
5
4
  interface Props {
6
5
  noEditor?: boolean;
7
6
  enableAi?: boolean;
@@ -16,8 +15,7 @@ interface Props {
16
15
  onTestFlow?: () => void;
17
16
  job?: Job;
18
17
  isOwner?: boolean;
19
- localDurationStatuses?: Writable<Record<string, DurationStatus>>;
20
- suspendStatus?: Writable<Record<string, {
18
+ suspendStatus?: StateStore<Record<string, {
21
19
  job: Job;
22
20
  nb: number;
23
21
  }>>;
@@ -90,7 +90,8 @@ const allToplevelNodes = [
90
90
  ['For loop', 'forloop'],
91
91
  ['While loop', 'whileloop'],
92
92
  ['Branch to one', 'branchone'],
93
- ['Branch to all', 'branchall']
93
+ ['Branch to all', 'branchall'],
94
+ ['AI Agent', 'aiagent']
94
95
  ];
95
96
  let topLevelNodes = $state([]);
96
97
  function computeToplevelNodeChoices(funcDesc, preFilter) {
@@ -26,13 +26,13 @@ let editor = $state(undefined);
26
26
  let selected = $state('early-stop');
27
27
  const { flowPropPickerConfig } = getContext('PropPickerContext');
28
28
  flowPropPickerConfig.set(undefined);
29
- let stepPropPicker = $derived(getStepPropPicker($flowStateStore, parentModule, previousModule, mod.id, flowStore.val, previewArgs.val, false));
29
+ let stepPropPicker = $derived(getStepPropPicker(flowStateStore.val, parentModule, previousModule, mod.id, flowStore.val, previewArgs.val, false));
30
30
  let previewOpen = $state(false);
31
31
  let jobId = $state(undefined);
32
32
  let job = $state(undefined);
33
33
  let iteratorFieldFocused = $state(false);
34
34
  let iteratorGen = $state(undefined);
35
- let previewIterationArgs = $derived($flowStateStore[mod.id]?.previewArgs ?? {});
35
+ let previewIterationArgs = $derived(flowStateStore.val[mod.id]?.previewArgs ?? {});
36
36
  function setExpr(code) {
37
37
  if (mod.value.type === 'forloopflow') {
38
38
  mod.value.iterator = {