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
@@ -13,6 +13,6 @@ interface Props {
13
13
  actionKind?: ActionKind | 'all';
14
14
  scope?: undefined | 'all_workspaces' | 'instance';
15
15
  }
16
- declare const AuditLogsFilters: import("svelte").Component<Props, {}, "resource" | "username" | "operation" | "before" | "after" | "perPage" | "hasMore" | "logs" | "pageIndex" | "actionKind" | "scope">;
16
+ declare const AuditLogsFilters: import("svelte").Component<Props, {}, "resource" | "username" | "operation" | "before" | "after" | "logs" | "perPage" | "hasMore" | "pageIndex" | "actionKind" | "scope">;
17
17
  type AuditLogsFilters = ReturnType<typeof AuditLogsFilters>;
18
18
  export default AuditLogsFilters;
@@ -1,9 +1,7 @@
1
1
  <script lang="ts">import { workspaceStore } from '../../../stores';
2
2
  import { Download } from 'lucide-svelte';
3
3
  import { base } from '../../../base';
4
- export let s3object;
5
- export let workspaceId = undefined;
6
- export let appPath = undefined;
4
+ let { s3object, workspaceId = undefined, appPath = undefined } = $props();
7
5
  </script>
8
6
 
9
7
  <a
@@ -1,22 +1,8 @@
1
- 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> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: Props & {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
13
- }
14
- declare const FileDownload: $$__sveltets_2_IsomorphicComponent<{
1
+ interface Props {
15
2
  s3object: any;
16
3
  workspaceId?: string | undefined;
17
4
  appPath?: string | undefined;
18
- }, {
19
- [evt: string]: CustomEvent<any>;
20
- }, {}, {}, string>;
21
- type FileDownload = InstanceType<typeof FileDownload>;
5
+ }
6
+ declare const FileDownload: import("svelte").Component<Props, {}, "">;
7
+ type FileDownload = ReturnType<typeof FileDownload>;
22
8
  export default FileDownload;
@@ -20,6 +20,7 @@ import CSharpIcon from '../../icons/CSharpIcon.svelte';
20
20
  import NuIcon from '../../icons/NuIcon.svelte';
21
21
  import JavaIcon from '../../icons/JavaIcon.svelte';
22
22
  import DuckDbIcon from '../../icons/DuckDbIcon.svelte';
23
+ import RubyIcon from '../../icons/RubyIcon.svelte';
23
24
  let { lang, width = 30, height = 30, scale = 1, ...rest } = $props();
24
25
  const languageLabel = {
25
26
  python3: 'Python',
@@ -43,8 +44,9 @@ const languageLabel = {
43
44
  ansible: 'Ansible',
44
45
  csharp: 'C#',
45
46
  nu: 'Nu',
46
- java: 'Java'
47
- // for related places search: ADD_NEW_LANG
47
+ java: 'Java',
48
+ ruby: 'Ruby'
49
+ // for related places search: ADD_NEW_LANG
48
50
  };
49
51
  const langToComponent = {
50
52
  go: GoIcon,
@@ -73,6 +75,7 @@ const langToComponent = {
73
75
  csharp: CSharpIcon,
74
76
  nu: NuIcon,
75
77
  java: JavaIcon,
78
+ ruby: RubyIcon,
76
79
  duckdb: DuckDbIcon
77
80
  // for related places search: ADD_NEW_LANG
78
81
  };
@@ -0,0 +1,58 @@
1
+ <script lang="ts">import { copilotInfo } from '../../stores';
2
+ import { autoPlacement } from '@floating-ui/core';
3
+ import Popover from '../meltComponents/Popover.svelte';
4
+ import Button from '../common/button/Button.svelte';
5
+ import { ExternalLink, WandSparkles } from 'lucide-svelte';
6
+ import { base } from '../../base';
7
+ import { twMerge } from 'tailwind-merge';
8
+ import { aiChatManager, AIMode } from './chat/AIChatManager.svelte';
9
+ const aiChatScriptModeClasses = $derived(aiChatManager.mode === AIMode.SCRIPT && aiChatManager.isOpen
10
+ ? 'dark:bg-violet-900 bg-violet-100'
11
+ : '');
12
+ </script>
13
+
14
+ {#snippet button(onClick?: () => void)}
15
+ <Button
16
+ size="xs"
17
+ color="light"
18
+ btnClasses={twMerge('!px-2', aiChatScriptModeClasses)}
19
+ {onClick}
20
+ iconOnly
21
+ title="Open AI chat in script mode"
22
+ startIcon={{ icon: WandSparkles, classes: 'text-violet-800 dark:text-violet-400' }}
23
+ />
24
+ {/snippet}
25
+
26
+ {#if $copilotInfo.enabled}
27
+ {@render button(() => {
28
+ aiChatManager.openChat()
29
+ aiChatManager.changeMode(AIMode.SCRIPT)
30
+ })}
31
+ {:else}
32
+ <Popover
33
+ floatingConfig={{
34
+ middleware: [
35
+ autoPlacement({
36
+ allowedPlacements: ['bottom-start', 'bottom-end', 'top-start', 'top-end', 'top', 'bottom']
37
+ })
38
+ ]
39
+ }}
40
+ >
41
+ {#snippet trigger()}
42
+ {@render button()}
43
+ {/snippet}
44
+ {#snippet content({ close })}
45
+ <div class="p-4">
46
+ <p class="text-sm">
47
+ Enable Windmill AI in the <a
48
+ href="{base}/workspace_settings?tab=ai"
49
+ target="_blank"
50
+ class="inline-flex flex-row items-center gap-1"
51
+ >
52
+ workspace settings <ExternalLink size={16} />
53
+ </a>
54
+ </p>
55
+ </div>
56
+ {/snippet}
57
+ </Popover>
58
+ {/if}
@@ -0,0 +1,3 @@
1
+ declare const FlowInlineScriptAiButton: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type FlowInlineScriptAiButton = ReturnType<typeof FlowInlineScriptAiButton>;
3
+ export default FlowInlineScriptAiButton;
@@ -9,6 +9,7 @@ import autosize from '../../autosize';
9
9
  import { yamlStringifyExceptKeys } from './utils';
10
10
  import { createDispatcherIfMounted } from '../../createDispatcherIfMounted';
11
11
  import { triggerableByAI } from '../../actions/triggerableByAI.svelte';
12
+ import { validateToolName } from '../graph/renderers/nodes/AIToolNode.svelte';
12
13
  const promptConfigs = {
13
14
  summary: {
14
15
  system: `
@@ -61,6 +62,18 @@ Do not include line breaks.
61
62
  Generate a description for the flow below:
62
63
  {flow}`,
63
64
  placeholderName: 'flow'
65
+ },
66
+ agentToolFunctionName: {
67
+ system: `
68
+ You are a helpful AI assistant. You generate function names from scripts.
69
+ These function names will be used by an AI agent to call this tool.
70
+ It has to respect the following regex: /[a-zA-Z0-9_]+/
71
+ Examples: generate_image, classify_image, summarize_text, etc.
72
+ `,
73
+ user: `
74
+ Generate a function name for the script below:
75
+ {code}`,
76
+ placeholderName: 'code'
64
77
  }
65
78
  };
66
79
  export let aiId = undefined;
@@ -268,7 +281,12 @@ onDestroy(() => {
268
281
  bind:this={el}
269
282
  bind:value={content}
270
283
  placeholder={!active ? elementProps.placeholder : ''}
271
- class={active ? '!indent-[3.5rem]' : ''}
284
+ class={twMerge(
285
+ active ? '!indent-[3.5rem]' : '',
286
+ promptConfigName === 'agentToolFunctionName' &&
287
+ !validateToolName(content ?? '') &&
288
+ '!border-red-400'
289
+ )}
272
290
  on:focus={() => (focused = true)}
273
291
  on:blur={() => (focused = false)}
274
292
  />
@@ -19,7 +19,7 @@ declare const MetadataGen: $$__sveltets_2_IsomorphicComponent<{
19
19
  content: string | undefined;
20
20
  code?: string | undefined | undefined;
21
21
  flow?: FlowValue | undefined;
22
- promptConfigName: "summary" | "description" | "flowSummary" | "flowDescription";
22
+ promptConfigName: "summary" | "description" | "flowSummary" | "flowDescription" | "agentToolFunctionName";
23
23
  generateOnAppear?: boolean | undefined;
24
24
  elementType?: "input" | "textarea" | undefined;
25
25
  elementProps?: Record<string, any> | undefined;
@@ -1,5 +1,4 @@
1
- <script lang="ts">import { run } from 'svelte/legacy';
2
- import { base } from '../../base';
1
+ <script lang="ts">import { base } from '../../base';
3
2
  import { Button } from '../common';
4
3
  import { MAX_SCHEMA_LENGTH, SUPPORTED_LANGUAGES, addThousandsSeparator, copilot } from './lib';
5
4
  import { sendUserToast } from '../../toast';
@@ -13,7 +12,7 @@ import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
13
12
  import { writable } from 'svelte/store';
14
13
  import HighlightCode from '../HighlightCode.svelte';
15
14
  import LoadingIcon from '../apps/svelte-select/lib/LoadingIcon.svelte';
16
- import { sleep } from '../../utils';
15
+ import { readFieldsRecursively, sleep } from '../../utils';
17
16
  import { autoPlacement } from '@floating-ui/core';
18
17
  import { AlertTriangle, Ban, Check, ExternalLink, HistoryIcon, Wand2, X } from 'lucide-svelte';
19
18
  import { fade } from 'svelte/transition';
@@ -21,9 +20,8 @@ import { isInitialCode } from '../../script_helpers';
21
20
  import { twMerge } from 'tailwind-merge';
22
21
  import { onDestroy } from 'svelte';
23
22
  import ProviderModelSelector from './chat/ProviderModelSelector.svelte';
24
- import { aiChatManager, AIMode } from './chat/AIChatManager.svelte';
25
- let { iconOnly = false, lang = $bindable(), editor, diffEditor, inlineScript = false, args, transformer = false, openAiChat = false } = $props();
26
- run(() => {
23
+ let { iconOnly = false, lang = $bindable(), editor, diffEditor, inlineScript = false, args, transformer = false } = $props();
24
+ $effect.pre(() => {
27
25
  if (lang == 'bunnative') {
28
26
  lang = 'bun';
29
27
  }
@@ -39,7 +37,7 @@ let abortController = $state(undefined);
39
37
  let blockPopupOpen = $state(false);
40
38
  let mode = $state('gen');
41
39
  let button = $state();
42
- run(() => {
40
+ $effect.pre(() => {
43
41
  trimmedDesc = funcDesc.trim();
44
42
  });
45
43
  async function callCopilot() {
@@ -72,16 +70,9 @@ function handleAiButtonClick() {
72
70
  else {
73
71
  mode = 'edit';
74
72
  }
75
- if (openAiChat) {
76
- // Open the AI chat in script mode
77
- aiChatManager.openChat();
78
- aiChatManager.changeMode(AIMode.SCRIPT);
79
- }
80
- else {
81
- setTimeout(() => {
82
- autoResize();
83
- }, 0);
84
- }
73
+ setTimeout(() => {
74
+ autoResize();
75
+ }, 0);
85
76
  }
86
77
  async function onGenerate(closePopup) {
87
78
  if (trimmedDesc.length <= 0) {
@@ -141,16 +132,16 @@ function hideDiff() {
141
132
  editor?.show();
142
133
  diffEditor?.hide();
143
134
  }
144
- run(() => {
135
+ $effect(() => {
145
136
  input && setTimeout(() => input?.focus(), 100);
146
137
  });
147
138
  function clear() {
148
139
  $generatedCode = '';
149
140
  }
150
- run(() => {
141
+ $effect(() => {
151
142
  lang && clear();
152
143
  });
153
- run(() => {
144
+ $effect(() => {
154
145
  !$generatedCode && hideDiff();
155
146
  });
156
147
  function updateSchema(lang, args, dbSchemas) {
@@ -168,7 +159,12 @@ function updateSchema(lang, args, dbSchemas) {
168
159
  dbSchema = undefined;
169
160
  }
170
161
  }
171
- run(() => {
162
+ $effect(() => {
163
+ readFieldsRecursively(args);
164
+ updateSchema(lang, args, $dbSchemas);
165
+ });
166
+ $effect(() => {
167
+ readFieldsRecursively(args);
172
168
  updateSchema(lang, args, $dbSchemas);
173
169
  });
174
170
  let codeDiv = $state();
@@ -214,10 +210,10 @@ function clearPromptHistory() {
214
210
  const storageKey = getPromptStorageKey();
215
211
  safeLocalStorageOperation(() => localStorage.setItem(storageKey, JSON.stringify(promptHistory)));
216
212
  }
217
- run(() => {
213
+ $effect(() => {
218
214
  lang && getPromptHistory();
219
215
  });
220
- run(() => {
216
+ $effect(() => {
221
217
  $generatedCode && updateScroll();
222
218
  });
223
219
  let innerWidth = $state(0);
@@ -241,9 +237,6 @@ function handlePublicOnlySelected({ detail }) {
241
237
  return;
242
238
  dbSchema.publicOnly = detail === 'true';
243
239
  }
244
- const aiChatScriptModeClasses = $derived(aiChatManager.mode === AIMode.SCRIPT && aiChatManager.isOpen
245
- ? 'dark:bg-violet-900 bg-violet-100'
246
- : '');
247
240
  onDestroy(() => {
248
241
  abortController?.abort();
249
242
  });
@@ -321,8 +314,8 @@ onDestroy(() => {
321
314
  <Button
322
315
  size="xs"
323
316
  color={genLoading ? 'red' : 'light'}
324
- btnClasses={twMerge(genLoading ? '!px-3 z-[5000]' : '!px-2', aiChatScriptModeClasses)}
325
- propagateEvent={!genLoading && !openAiChat}
317
+ btnClasses={twMerge(genLoading ? '!px-3 z-[5000]' : '!px-2')}
318
+ propagateEvent={!genLoading}
326
319
  on:click={genLoading ? () => abortController?.abort() : handleAiButtonClick}
327
320
  bind:element={button}
328
321
  iconOnly
@@ -336,14 +329,13 @@ onDestroy(() => {
336
329
  title="Generate code from prompt"
337
330
  btnClasses={twMerge(
338
331
  '!font-medium',
339
- genLoading ? 'z-[5000]' : 'text-violet-800 dark:text-violet-400',
340
- aiChatScriptModeClasses
332
+ genLoading ? 'z-[5000]' : 'text-violet-800 dark:text-violet-400'
341
333
  )}
342
334
  size="xs"
343
335
  color={genLoading ? 'red' : 'light'}
344
336
  spacingSize="md"
345
337
  startIcon={genLoading ? { icon: Ban } : { icon: Wand2 }}
346
- propagateEvent={!genLoading && !openAiChat}
338
+ propagateEvent={!genLoading}
347
339
  on:click={genLoading ? () => abortController?.abort() : handleAiButtonClick}
348
340
  bind:element={button}
349
341
  {iconOnly}
@@ -10,7 +10,6 @@ interface Props {
10
10
  inlineScript?: boolean;
11
11
  args: Record<string, any>;
12
12
  transformer?: boolean;
13
- openAiChat?: boolean;
14
13
  }
15
14
  declare const ScriptGen: import("svelte").Component<Props, {}, "lang">;
16
15
  type ScriptGen = ReturnType<typeof ScriptGen>;
@@ -128,6 +128,8 @@ export class Autocompletor {
128
128
  ]
129
129
  };
130
130
  },
131
+ // @ts-ignore
132
+ disposeInlineCompletions: () => { },
131
133
  freeInlineCompletions: () => { }
132
134
  });
133
135
  this.#cursorDisposable = editor.onDidChangeCursorPosition(async (e) => {
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">import AIChatMessage from './AIChatMessage.svelte';
2
2
  import {} from 'svelte';
3
- import { CheckIcon, HistoryIcon, Loader2, Plus, StopCircleIcon, X, XIcon } from 'lucide-svelte';
3
+ import { CheckIcon, HistoryIcon, Loader2, Plus, X, XIcon } from 'lucide-svelte';
4
4
  import Button from '../../common/button/Button.svelte';
5
5
  import Popover from '../../meltComponents/Popover.svelte';
6
6
  import {} from './shared';
@@ -43,6 +43,7 @@ $effect(() => {
43
43
  aiChatManager.setAiChatInput(null);
44
44
  };
45
45
  });
46
+ const isLastMessageTool = $derived(messages.length > 0 && messages[messages.length - 1].role === 'tool');
46
47
  </script>
47
48
 
48
49
  <div class="flex flex-col h-full">
@@ -146,7 +147,7 @@ $effect(() => {
146
147
  bind:editingMessageIndex
147
148
  />
148
149
  {/each}
149
- {#if aiChatManager.loading && !aiChatManager.currentReply}
150
+ {#if aiChatManager.loading && !aiChatManager.currentReply && !isLastMessageTool}
150
151
  <div class="mb-6 py-1 px-2">
151
152
  <Loader2 class="animate-spin" />
152
153
  </div>
@@ -159,7 +160,7 @@ $effect(() => {
159
160
  {#if aiChatManager.loading}
160
161
  <div class="absolute -top-10 w-full flex flex-row justify-center">
161
162
  <Button
162
- startIcon={{ icon: StopCircleIcon }}
163
+ startIcon={{ icon: Loader2, classes: 'animate-spin' }}
163
164
  size="xs"
164
165
  variant="border"
165
166
  color="light"
@@ -205,7 +206,6 @@ $effect(() => {
205
206
  {availableContext}
206
207
  {disabled}
207
208
  isFirstMessage={messages.length === 0}
208
- placeholder={messages.length === 0 ? 'Ask anything' : 'Ask followup'}
209
209
  />
210
210
  <div
211
211
  class={`flex flex-row ${
@@ -3,14 +3,37 @@ import AvailableContextList from './AvailableContextList.svelte';
3
3
  import ContextElementBadge from './ContextElementBadge.svelte';
4
4
  import ContextTextarea from './ContextTextarea.svelte';
5
5
  import autosize from '../../../autosize';
6
- import { aiChatManager } from './AIChatManager.svelte';
6
+ import { aiChatManager, AIMode } from './AIChatManager.svelte';
7
7
  import { twMerge } from 'tailwind-merge';
8
- let { availableContext, selectedContext = $bindable([]), disabled = false, isFirstMessage = false, placeholder = 'Ask anything', initialInstructions = '', editingMessageIndex = null, onEditEnd = () => { }, className = '', onClickOutside = () => { }, onSendRequest = undefined, showContext = true, bottomRightSnippet, onKeyDown = undefined } = $props();
8
+ let { availableContext, selectedContext = $bindable([]), disabled = false, isFirstMessage = false, placeholder, initialInstructions = '', editingMessageIndex = null, onEditEnd = () => { }, className = '', onClickOutside = () => { }, onSendRequest = undefined, showContext = true, bottomRightSnippet, onKeyDown = undefined } = $props();
9
+ // Generate mode-specific placeholder
10
+ const modePlaceholder = $derived.by(() => {
11
+ if (!isFirstMessage) {
12
+ return 'Ask followup';
13
+ }
14
+ if (placeholder) {
15
+ return placeholder;
16
+ }
17
+ switch (aiChatManager.mode) {
18
+ case AIMode.SCRIPT:
19
+ return 'Modify this script...';
20
+ case AIMode.FLOW:
21
+ return 'Modify this flow...';
22
+ case AIMode.NAVIGATOR:
23
+ return 'Navigate the app...';
24
+ case AIMode.API:
25
+ return 'Make API calls...';
26
+ case AIMode.ASK:
27
+ return 'Ask questions about Windmill...';
28
+ default:
29
+ return 'Ask anything';
30
+ }
31
+ });
9
32
  let contextTextareaComponent = $state();
10
33
  let instructionsTextareaComponent = $state();
11
34
  let instructions = $state(initialInstructions);
12
35
  export function focusInput() {
13
- if (aiChatManager.mode === 'script') {
36
+ if (aiChatManager.mode === AIMode.SCRIPT) {
14
37
  contextTextareaComponent?.focus();
15
38
  }
16
39
  else {
@@ -59,7 +82,7 @@ $effect(() => {
59
82
  </script>
60
83
 
61
84
  <div use:clickOutside class="relative">
62
- {#if aiChatManager.mode === 'script'}
85
+ {#if aiChatManager.mode === AIMode.SCRIPT}
63
86
  {#if showContext}
64
87
  <div class="flex flex-row gap-1 mb-1 overflow-scroll pt-2 no-scrollbar">
65
88
  <Popover>
@@ -99,7 +122,7 @@ $effect(() => {
99
122
  {availableContext}
100
123
  {selectedContext}
101
124
  {isFirstMessage}
102
- {placeholder}
125
+ placeholder={modePlaceholder}
103
126
  onAddContext={(contextElement) => addContextToSelection(contextElement)}
104
127
  onSendRequest={() => {
105
128
  if (disabled) {
@@ -126,7 +149,7 @@ $effect(() => {
126
149
  }
127
150
  }}
128
151
  rows={3}
129
- {placeholder}
152
+ placeholder={modePlaceholder}
130
153
  class="resize-none"
131
154
  {disabled}
132
155
  ></textarea>