windmill-components 1.511.1 → 1.531.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) 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/AppConnectInner.svelte.d.ts +1 -1
  5. package/package/components/ArgInput.svelte +42 -14
  6. package/package/components/ArgInput.svelte.d.ts +2 -10
  7. package/package/components/AssignableTagsInner.svelte +5 -0
  8. package/package/components/AuthSettings.svelte +4 -2
  9. package/package/components/AuthSettings.svelte.d.ts +1 -0
  10. package/package/components/AutoscalingConfigEditor.svelte +76 -2
  11. package/package/components/DBManagerDrawer.svelte +154 -151
  12. package/package/components/DBManagerDrawer.svelte.d.ts +2 -2
  13. package/package/components/DBTable.svelte +3 -3
  14. package/package/components/DBTable.svelte.d.ts +1 -0
  15. package/package/components/DBTableEditor.svelte +7 -7
  16. package/package/components/DBTableEditor.svelte.d.ts +1 -1
  17. package/package/components/DeployWorkspace.svelte +1 -1
  18. package/package/components/Dev.svelte +12 -28
  19. package/package/components/DiffEditor.svelte +6 -3
  20. package/package/components/DiffEditor.svelte.d.ts +1 -0
  21. package/package/components/DisplayResult.svelte +46 -14
  22. package/package/components/DisplayResult.svelte.d.ts +5 -1
  23. package/package/components/DynSelect.svelte +58 -34
  24. package/package/components/DynSelect.svelte.d.ts +3 -11
  25. package/package/components/EditableSchemaForm.svelte +131 -8
  26. package/package/components/EditableSchemaForm.svelte.d.ts +5 -1
  27. package/package/components/Editor.svelte +27 -9
  28. package/package/components/Editor.svelte.d.ts +1 -1
  29. package/package/components/EditorBar.svelte +105 -7
  30. package/package/components/EditorSettings.svelte +6 -0
  31. package/package/components/ErrorOrRecoveryHandler.svelte +76 -8
  32. package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -1
  33. package/package/components/ExploreAssetButton.svelte +14 -4
  34. package/package/components/ExploreAssetButton.svelte.d.ts +1 -0
  35. package/package/components/FirstStepInputs.svelte +2 -2
  36. package/package/components/FlowBuilder.svelte +18 -36
  37. package/package/components/FlowGraphViewerStep.svelte +7 -0
  38. package/package/components/FlowJobResult.svelte +16 -64
  39. package/package/components/FlowJobResult.svelte.d.ts +11 -4
  40. package/package/components/FlowLogViewer.svelte +660 -0
  41. package/package/components/FlowLogViewer.svelte.d.ts +34 -0
  42. package/package/components/FlowLogViewerWrapper.svelte +52 -0
  43. package/package/components/FlowLogViewerWrapper.svelte.d.ts +21 -0
  44. package/package/components/FlowLoopIterationPreview.svelte +3 -3
  45. package/package/components/FlowPreviewContent.svelte +13 -6
  46. package/package/components/FlowPreviewContent.svelte.d.ts +7 -7
  47. package/package/components/FlowPreviewResult.svelte +7 -5
  48. package/package/components/FlowPreviewResult.svelte.d.ts +4 -5
  49. package/package/components/FlowStatusViewer.svelte +28 -16
  50. package/package/components/FlowStatusViewer.svelte.d.ts +19 -27
  51. package/package/components/FlowStatusViewerInner.svelte +500 -295
  52. package/package/components/FlowStatusViewerInner.svelte.d.ts +34 -34
  53. package/package/components/FlowTimeline.svelte +11 -13
  54. package/package/components/FlowTimeline.svelte.d.ts +6 -5
  55. package/package/components/FolderEditor.svelte +1 -1
  56. package/package/components/GitDiffPreview.svelte +14 -18
  57. package/package/components/GitDiffPreview.svelte.d.ts +2 -8
  58. package/package/components/GitHubAppIntegration.svelte +3 -1
  59. package/package/components/HighlightCode.svelte +4 -1
  60. package/package/components/IconedResourceType.svelte +9 -5
  61. package/package/components/IdEditorInput.svelte +25 -22
  62. package/package/components/IdEditorInput.svelte.d.ts +11 -23
  63. package/package/components/InstanceSetting.svelte +7 -2
  64. package/package/components/InstanceSettings.svelte +1 -0
  65. package/package/components/JobLoader.svelte +108 -12
  66. package/package/components/JobLoader.svelte.d.ts +16 -3
  67. package/package/components/LogViewer.svelte +8 -2
  68. package/package/components/LogViewer.svelte.d.ts +1 -0
  69. package/package/components/LogViewerHeader.svelte +32 -0
  70. package/package/components/LogViewerHeader.svelte.d.ts +8 -0
  71. package/package/components/Login.svelte +8 -2
  72. package/package/components/MemoryFootprintViewer.svelte +1 -1
  73. package/package/components/ModulePreviewForm.svelte +10 -6
  74. package/package/components/ModulePreviewResultViewer.svelte +18 -2
  75. package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -1
  76. package/package/components/ModuleTest.svelte +59 -16
  77. package/package/components/MoveDrawer.svelte.d.ts +2 -2
  78. package/package/components/NextcloudSetting.svelte +84 -0
  79. package/package/components/NextcloudSetting.svelte.d.ts +7 -0
  80. package/package/components/ObjectResourceInput.svelte +3 -2
  81. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  82. package/package/components/ParqetCsvTableRenderer.svelte +1 -1
  83. package/package/components/RelativeLineNumbers.svelte +16 -0
  84. package/package/components/RelativeLineNumbers.svelte.d.ts +18 -0
  85. package/package/components/ResourceEditor.svelte +10 -5
  86. package/package/components/ResourcePicker.svelte +8 -1
  87. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  88. package/package/components/ResultStreamDisplay.svelte +5 -0
  89. package/package/components/ResultStreamDisplay.svelte.d.ts +5 -0
  90. package/package/components/RunForm.svelte +9 -1
  91. package/package/components/SchemaForm.svelte +2 -2
  92. package/package/components/SchemaForm.svelte.d.ts +2 -10
  93. package/package/components/ScriptBuilder.svelte +26 -19
  94. package/package/components/ScriptBuilder.svelte.d.ts +1 -1
  95. package/package/components/ScriptEditor.svelte +2 -2
  96. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  97. package/package/components/ScriptWrapper.svelte +1 -1
  98. package/package/components/ShareModal.svelte.d.ts +1 -1
  99. package/package/components/SimpleAgTable.svelte +2 -0
  100. package/package/components/SimpleAgTable.svelte.d.ts +2 -0
  101. package/package/components/SimpleEditor.svelte +10 -4
  102. package/package/components/SimpleEditor.svelte.d.ts +1 -0
  103. package/package/components/SqlRepl.svelte +21 -7
  104. package/package/components/SqlRepl.svelte.d.ts +2 -2
  105. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
  106. package/package/components/TemplateEditor.svelte +1 -1
  107. package/package/components/UserSettings.svelte +4 -4
  108. package/package/components/WorkerTagSelect.svelte +70 -1
  109. package/package/components/apps/components/display/AppAccordionList.svelte +1 -1
  110. package/package/components/apps/components/display/AppCarouselList.svelte +10 -8
  111. package/package/components/apps/components/display/AppDisplayComponent.svelte +13 -1
  112. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +3 -3
  113. package/package/components/apps/components/display/AppText.svelte +2 -2
  114. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +8 -1
  115. package/package/components/apps/components/display/dbtable/InsertRow.svelte +5 -4
  116. package/package/components/apps/components/display/dbtable/queries/count.js +11 -1
  117. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
  118. package/package/components/apps/components/display/dbtable/queries/createTable.js +3 -3
  119. package/package/components/apps/components/display/dbtable/queries/delete.js +7 -0
  120. package/package/components/apps/components/display/dbtable/queries/insert.js +2 -0
  121. package/package/components/apps/components/display/dbtable/queries/select.js +14 -0
  122. package/package/components/apps/components/display/dbtable/queries/update.js +7 -0
  123. package/package/components/apps/components/display/dbtable/utils.d.ts +6 -5
  124. package/package/components/apps/components/display/dbtable/utils.js +52 -28
  125. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +1 -1
  126. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
  127. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +1 -0
  128. package/package/components/apps/components/display/table/AppAggridTable.svelte +7 -6
  129. package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
  130. package/package/components/apps/components/display/table/utils.js +7 -4
  131. package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -3
  132. package/package/components/apps/components/helpers/InputValue.svelte +6 -1
  133. package/package/components/apps/components/helpers/NonRunnableComponent.svelte +8 -4
  134. package/package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -1
  135. package/package/components/apps/components/helpers/RunnableComponent.svelte +10 -8
  136. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -2
  137. package/package/components/apps/components/helpers/RunnableWrapper.svelte +12 -3
  138. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -1
  139. package/package/components/apps/components/inputs/AppCodeInputComponent.svelte +0 -5
  140. package/package/components/apps/components/inputs/AppS3FileInput.svelte +2 -2
  141. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +1 -1
  142. package/package/components/apps/components/layout/AppContainer.svelte +1 -1
  143. package/package/components/apps/components/layout/AppDecisionTree.svelte +32 -21
  144. package/package/components/apps/components/layout/AppDrawer.svelte +1 -1
  145. package/package/components/apps/components/layout/AppList.svelte +9 -8
  146. package/package/components/apps/components/layout/AppModal.svelte +1 -1
  147. package/package/components/apps/components/layout/AppSplitpanes.svelte +5 -2
  148. package/package/components/apps/components/layout/AppStepper.svelte +10 -6
  149. package/package/components/apps/components/layout/AppTabs.svelte +3 -3
  150. package/package/components/apps/editor/AppEditorHeader.svelte +13 -2
  151. package/package/components/apps/editor/AppJobsDrawer.svelte +2 -2
  152. package/package/components/apps/editor/GridEditor.svelte +24 -19
  153. package/package/components/apps/editor/GridEditor.svelte.d.ts +4 -1
  154. package/package/components/apps/editor/GridViewer.svelte +1 -0
  155. package/package/components/apps/editor/RunnableJobPanelInner.svelte +2 -1
  156. package/package/components/apps/editor/SubGridEditor.svelte +7 -11
  157. package/package/components/apps/editor/SubGridEditor.svelte.d.ts +3 -19
  158. package/package/components/apps/editor/appUtils.js +17 -68
  159. package/package/components/apps/editor/component/ComponentInner.svelte +845 -694
  160. package/package/components/apps/editor/component/componentCallbacks.svelte.js +8 -1
  161. package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +7 -7
  162. package/package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +7 -19
  163. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +14 -55
  164. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  165. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  166. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  167. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +31 -45
  168. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
  169. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +1 -0
  170. package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +1 -3
  171. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +2 -2
  172. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +1 -0
  173. package/package/components/apps/svelte-grid/Grid.svelte +23 -25
  174. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +21 -9
  175. package/package/components/apps/svelte-grid/MoveResize.svelte +13 -15
  176. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +17 -24
  177. package/package/components/apps/utils.d.ts +2 -0
  178. package/package/components/apps/utils.js +22 -0
  179. package/package/components/assets/AssetsDropdownButton.svelte +1 -1
  180. package/package/components/assets/JobAssetsViewer.svelte +2 -2
  181. package/package/components/assets/lib.js +4 -0
  182. package/package/components/auditLogs/AuditLogsFilters.svelte +7 -9
  183. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  184. package/package/components/common/button/Button.svelte +4 -3
  185. package/package/components/common/button/Button.svelte.d.ts +1 -0
  186. package/package/components/common/confirmationModal/ConfirmationModal.svelte +6 -5
  187. package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +6 -11
  188. package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.d.ts +26 -0
  189. package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.js +50 -0
  190. package/package/components/common/fileDownload/FileDownload.svelte +1 -3
  191. package/package/components/common/fileDownload/FileDownload.svelte.d.ts +4 -18
  192. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  193. package/package/components/common/modal/Modal.svelte +2 -5
  194. package/package/components/common/tabs/TabsV2.svelte +2 -1
  195. package/package/components/common/tabs/TabsV2.svelte.d.ts +1 -0
  196. package/package/components/copilot/FlowInlineScriptAIButton.svelte +58 -0
  197. package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +3 -0
  198. package/package/components/copilot/MetadataGen.svelte +19 -1
  199. package/package/components/copilot/MetadataGen.svelte.d.ts +1 -1
  200. package/package/components/copilot/ScriptGen.svelte +23 -31
  201. package/package/components/copilot/ScriptGen.svelte.d.ts +0 -1
  202. package/package/components/copilot/autocomplete/Autocompletor.js +2 -0
  203. package/package/components/copilot/chat/AIChatDisplay.svelte +4 -4
  204. package/package/components/copilot/chat/AIChatInput.svelte +29 -6
  205. package/package/components/copilot/chat/AIChatManager.svelte.js +171 -33
  206. package/package/components/copilot/chat/AIChatMessage.svelte +3 -0
  207. package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
  208. package/package/components/copilot/chat/ToolContentDisplay.svelte +84 -0
  209. package/package/components/copilot/chat/ToolContentDisplay.svelte.d.ts +11 -0
  210. package/package/components/copilot/chat/ToolExecutionDisplay.svelte +105 -0
  211. package/package/components/copilot/chat/ToolExecutionDisplay.svelte.d.ts +7 -0
  212. package/package/components/copilot/chat/api/apiTools.d.ts +7 -0
  213. package/package/components/copilot/chat/api/apiTools.js +192 -0
  214. package/package/components/copilot/chat/api/core.d.ts +7 -0
  215. package/package/components/copilot/chat/api/core.js +61 -0
  216. package/package/components/copilot/chat/flow/FlowAIChat.svelte +4 -6
  217. package/package/components/copilot/chat/flow/core.js +213 -42
  218. package/package/components/copilot/chat/flow/utils.js +3 -0
  219. package/package/components/copilot/chat/monaco-adapter.d.ts +1 -1
  220. package/package/components/copilot/chat/monaco-adapter.js +10 -4
  221. package/package/components/copilot/chat/navigator/core.d.ts +1 -1
  222. package/package/components/copilot/chat/navigator/core.js +20 -22
  223. package/package/components/copilot/chat/script/core.d.ts +11 -3
  224. package/package/components/copilot/chat/script/core.js +120 -44
  225. package/package/components/copilot/chat/shared.d.ts +31 -4
  226. package/package/components/copilot/chat/shared.js +235 -10
  227. package/package/components/copilot/lib.d.ts +1 -1
  228. package/package/components/copilot/lib.js +15 -6
  229. package/package/components/custom_ui.d.ts +4 -0
  230. package/package/components/dbOps.d.ts +20 -8
  231. package/package/components/dbOps.js +85 -40
  232. package/package/components/details/DetailPageHeader.svelte +0 -2
  233. package/package/components/details/DetailPageLayout.svelte +34 -33
  234. package/package/components/flow_builder.d.ts +1 -2
  235. package/package/components/flows/FlowEditor.svelte +3 -3
  236. package/package/components/flows/FlowEditor.svelte.d.ts +7 -6
  237. package/package/components/flows/common/FlowCard.svelte +2 -2
  238. package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
  239. package/package/components/flows/common/FlowCardHeader.svelte +13 -4
  240. package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
  241. package/package/components/flows/content/BranchPredicateEditor.svelte +4 -7
  242. package/package/components/flows/content/BranchPredicateEditor.svelte.d.ts +12 -11
  243. package/package/components/flows/content/FlowConstants.svelte +3 -3
  244. package/package/components/flows/content/FlowEditorPanel.svelte +3 -3
  245. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -4
  246. package/package/components/flows/content/FlowInput.svelte +5 -0
  247. package/package/components/flows/content/FlowInputsQuick.svelte +2 -1
  248. package/package/components/flows/content/FlowLoop.svelte +2 -2
  249. package/package/components/flows/content/FlowModuleComponent.svelte +130 -108
  250. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  251. package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
  252. package/package/components/flows/content/FlowModuleScript.svelte +0 -1
  253. package/package/components/flows/content/FlowModuleSkip.svelte +1 -1
  254. package/package/components/flows/content/FlowModuleSleep.svelte +1 -1
  255. package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
  256. package/package/components/flows/content/FlowModuleWrapper.svelte +15 -5
  257. package/package/components/flows/content/FlowModuleWrapper.svelte.d.ts +1 -0
  258. package/package/components/flows/content/FlowResult.svelte +2 -3
  259. package/package/components/flows/content/FlowResult.svelte.d.ts +2 -4
  260. package/package/components/flows/content/FlowWhileLoop.svelte +1 -1
  261. package/package/components/flows/dfs.d.ts +3 -1
  262. package/package/components/flows/dfs.js +5 -1
  263. package/package/components/flows/flowInfers.js +78 -0
  264. package/package/components/flows/flowState.d.ts +2 -3
  265. package/package/components/flows/flowState.js +2 -2
  266. package/package/components/flows/flowStateUtils.svelte.d.ts +4 -4
  267. package/package/components/flows/flowStateUtils.svelte.js +14 -13
  268. package/package/components/flows/flowStore.d.ts +3 -4
  269. package/package/components/flows/header/FlowPreviewButtons.svelte +2 -1
  270. package/package/components/flows/header/FlowYamlEditor.svelte +10 -1
  271. package/package/components/flows/idUtils.js +2 -1
  272. package/package/components/flows/map/FlowGraphPreviewButton.svelte +1 -1
  273. package/package/components/flows/map/FlowJobsMenu.svelte +7 -3
  274. package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +1 -0
  275. package/package/components/flows/map/FlowModuleSchemaItem.svelte +15 -15
  276. package/package/components/flows/map/FlowModuleSchemaMap.svelte +27 -15
  277. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +6 -4
  278. package/package/components/flows/map/InsertModuleButton.svelte +4 -1
  279. package/package/components/flows/map/InsertModuleInner.svelte +9 -1
  280. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +1 -0
  281. package/package/components/flows/map/MapItem.svelte +4 -2
  282. package/package/components/flows/pickers/TopLevelNode.svelte +4 -1
  283. package/package/components/flows/propPicker/InputPickerInner.svelte +5 -4
  284. package/package/components/flows/propPicker/OutputBadge.svelte +16 -10
  285. package/package/components/flows/propPicker/OutputPickerInner.svelte +19 -6
  286. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +6 -2
  287. package/package/components/flows/propPicker/StepHistory.svelte +4 -1
  288. package/package/components/flows/testSteps.svelte.d.ts +3 -2
  289. package/package/components/flows/testSteps.svelte.js +26 -23
  290. package/package/components/flows/types.d.ts +1 -1
  291. package/package/components/flows/utils.d.ts +3 -5
  292. package/package/components/flows/utils.js +3 -4
  293. package/package/components/git_sync/DetectionFlow.svelte +202 -0
  294. package/package/components/git_sync/DetectionFlow.svelte.d.ts +6 -0
  295. package/package/components/git_sync/GitSyncContext.svelte.d.ts +82 -0
  296. package/package/components/git_sync/GitSyncContext.svelte.js +462 -0
  297. package/package/components/git_sync/GitSyncModalManager.svelte +99 -0
  298. package/package/components/git_sync/GitSyncModalManager.svelte.d.ts +18 -0
  299. package/package/components/git_sync/GitSyncRepositoryCard.svelte +339 -0
  300. package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +6 -0
  301. package/package/components/git_sync/GitSyncRepositoryList.svelte +17 -0
  302. package/package/components/git_sync/GitSyncRepositoryList.svelte.d.ts +18 -0
  303. package/package/components/git_sync/GitSyncSection.svelte +89 -0
  304. package/package/components/git_sync/GitSyncSection.svelte.d.ts +3 -0
  305. package/package/components/git_sync/GitSyncSuccessModal.svelte +58 -0
  306. package/package/components/git_sync/GitSyncSuccessModal.svelte.d.ts +7 -0
  307. package/package/components/git_sync/PullWorkspaceModal.svelte +575 -0
  308. package/package/components/git_sync/PullWorkspaceModal.svelte.d.ts +15 -0
  309. package/package/components/git_sync/PushWorkspaceModal.svelte +320 -0
  310. package/package/components/git_sync/PushWorkspaceModal.svelte.d.ts +12 -0
  311. package/package/components/graph/FlowGraphV2.svelte +49 -25
  312. package/package/components/graph/FlowGraphV2.svelte.d.ts +5 -2
  313. package/package/components/graph/graphBuilder.svelte.d.ts +49 -17
  314. package/package/components/graph/graphBuilder.svelte.js +31 -15
  315. package/package/components/graph/model.d.ts +9 -6
  316. package/package/components/graph/renderers/edges/BaseEdge.svelte +3 -3
  317. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +2 -3
  318. package/package/components/graph/renderers/nodes/AIToolNode.svelte +234 -0
  319. package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +24 -0
  320. package/package/components/graph/renderers/nodes/AssetNode.svelte +19 -14
  321. package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +18 -1
  322. package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte +1 -1
  323. package/package/components/graph/renderers/nodes/BranchAllStart.svelte +1 -1
  324. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  325. package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +2 -2
  326. package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +1 -1
  327. package/package/components/graph/renderers/nodes/ModuleNode.svelte +21 -21
  328. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +64 -0
  329. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte.d.ts +7 -0
  330. package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +1 -1
  331. package/package/components/icons/AssetDucklakeIcon.svelte +28 -0
  332. package/package/components/icons/AssetDucklakeIcon.svelte.d.ts +9 -0
  333. package/package/components/icons/AssetGenericIcon.svelte +3 -0
  334. package/package/components/icons/DucklakeIcon.svelte +18 -0
  335. package/package/components/icons/DucklakeIcon.svelte.d.ts +6 -0
  336. package/package/components/icons/RubyIcon.svelte +656 -0
  337. package/package/components/icons/RubyIcon.svelte.d.ts +7 -0
  338. package/package/components/instanceSettings.js +20 -3
  339. package/package/components/modulesTest.svelte.d.ts +6 -3
  340. package/package/components/modulesTest.svelte.js +32 -0
  341. package/package/components/preview/FlowPreviewStatus.svelte +3 -1
  342. package/package/components/raw_apps/RawAppEditor.svelte +27 -26
  343. package/package/components/raw_apps/RawAppEditor.svelte.d.ts +17 -17
  344. package/package/components/runs/{JobPreview.svelte → JobRunsPreview.svelte} +2 -5
  345. package/package/components/runs/{JobPreview.svelte.d.ts → JobRunsPreview.svelte.d.ts} +3 -3
  346. package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
  347. package/package/components/runs/RunRow.svelte +5 -1
  348. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  349. package/package/components/schema/AddProperty.svelte +41 -36
  350. package/package/components/schema/AddProperty.svelte.d.ts +2 -2
  351. package/package/components/schema/AddPropertyV2.svelte +41 -37
  352. package/package/components/schema/AddPropertyV2.svelte.d.ts +1 -1
  353. package/package/components/schema/FlowPropertyEditor.svelte +11 -8
  354. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  355. package/package/components/schema/PropertyEditor.svelte +0 -2
  356. package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
  357. package/package/components/schema/SchemaFormDND.svelte +2 -1
  358. package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -0
  359. package/package/components/scriptEditor/LogPanel.svelte +5 -3
  360. package/package/components/scriptEditor/LogPanel.svelte.d.ts +5 -1
  361. package/package/components/search/RunsSearch.svelte +1 -1
  362. package/package/components/select/Select.svelte +7 -4
  363. package/package/components/select/Select.svelte.d.ts +5 -0
  364. package/package/components/select/SelectDropdown.svelte +2 -1
  365. package/package/components/select/SelectDropdown.svelte.d.ts +3 -0
  366. package/package/components/settings/CreateToken.svelte +132 -12
  367. package/package/components/settings/CreateToken.svelte.d.ts +3 -20
  368. package/package/components/settings/TokenDisplay.svelte +18 -42
  369. package/package/components/settings/TokenDisplay.svelte.d.ts +0 -1
  370. package/package/components/settings/TokensTable.svelte +2 -4
  371. package/package/components/settings/TokensTable.svelte.d.ts +3 -19
  372. package/package/components/settings/WorkspaceUserSettings.svelte +428 -69
  373. package/package/components/sidebar/MenuButton.svelte +12 -10
  374. package/package/components/sidebar/changelogs.js +5 -0
  375. package/package/components/stepHistoryLoader.svelte.d.ts +2 -2
  376. package/package/components/stepHistoryLoader.svelte.js +7 -12
  377. package/package/components/table/AutoDataTable.svelte +6 -4
  378. package/package/components/table/AutoDataTable.svelte.d.ts +1 -0
  379. package/package/components/table/DataTable.svelte +12 -10
  380. package/package/components/table/DataTable.svelte.d.ts +1 -0
  381. package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +2 -2
  382. package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
  383. package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
  384. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +50 -11
  385. package/package/components/triggers/gcp/utils.js +1 -0
  386. package/package/components/triggers/http/OpenAPISpecGenerator.svelte +2 -2
  387. package/package/components/triggers/http/utils.js +1 -1
  388. package/package/components/triggers/kafka/utils.js +1 -1
  389. package/package/components/triggers/mqtt/utils.js +1 -1
  390. package/package/components/triggers/nats/utils.js +1 -1
  391. package/package/components/triggers/postgres/utils.js +1 -1
  392. package/package/components/triggers/sqs/utils.js +1 -1
  393. package/package/components/triggers/utils.js +2 -1
  394. package/package/components/triggers/webhook/WebhooksConfigSection.svelte +24 -26
  395. package/package/components/triggers/webhook/WebhooksPanel.svelte +1 -15
  396. package/package/components/triggers/websocket/utils.js +1 -1
  397. package/package/components/tutorials/FlowBuilderTutorialBranchOne.svelte +1 -1
  398. package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +4 -4
  399. package/package/components/tutorials/utils.js +3 -0
  400. package/package/components/worker_group.d.ts +4 -1
  401. package/package/components/worker_group.js +3 -2
  402. package/package/components/workspaceSettings/AISettings.svelte +52 -36
  403. package/package/components/workspaceSettings/DucklakeSettings.svelte +321 -0
  404. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +23 -0
  405. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +122 -499
  406. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +8 -10
  407. package/package/consts.js +2 -1
  408. package/package/editorLangUtils.d.ts +1 -1
  409. package/package/editorLangUtils.js +2 -0
  410. package/package/editorUtils.d.ts +2 -1
  411. package/package/editorUtils.js +2 -1
  412. package/package/gen/core/OpenAPI.js +1 -1
  413. package/package/gen/schemas.gen.d.ts +303 -14
  414. package/package/gen/schemas.gen.js +371 -76
  415. package/package/gen/services.gen.d.ts +136 -16
  416. package/package/gen/services.gen.js +264 -19
  417. package/package/gen/types.gen.d.ts +736 -17
  418. package/package/git-sync.d.ts +36 -0
  419. package/package/git-sync.js +1 -0
  420. package/package/hub.d.ts +1 -0
  421. package/package/hubPaths.json +9 -3
  422. package/package/infer.js +13 -3
  423. package/package/monaco_workers/graphql.worker.bundle.js +144 -110
  424. package/package/script_helpers.d.ts +5 -2
  425. package/package/script_helpers.js +87 -14
  426. package/package/scripts.d.ts +1 -1
  427. package/package/scripts.js +3 -2
  428. package/package/services/JobManager.d.ts +28 -0
  429. package/package/services/JobManager.js +114 -0
  430. package/package/stores.d.ts +3 -1
  431. package/package/stores.js +2 -0
  432. package/package/svelte5Utils.svelte.d.ts +16 -0
  433. package/package/svelte5Utils.svelte.js +26 -0
  434. package/package/utils.d.ts +19 -2
  435. package/package/utils.js +55 -2
  436. package/package.json +24 -22
  437. package/package/components/AllFlowLogs.svelte +0 -31
  438. package/package/components/AllFlowLogs.svelte.d.ts +0 -8
  439. package/package/components/InitGitRepoPopover.svelte +0 -410
  440. package/package/components/InitGitRepoPopover.svelte.d.ts +0 -13
  441. package/package/components/PullGitRepoPopover.svelte +0 -355
  442. package/package/components/PullGitRepoPopover.svelte.d.ts +0 -18
  443. package/package/components/copilot/chat/navigator/apiTools.d.ts +0 -68
  444. package/package/components/copilot/chat/navigator/apiTools.js +0 -258
  445. package/package/inferArgSig.d.ts +0 -42
  446. package/package/inferArgSig.js +0 -198
@@ -1,14 +1,15 @@
1
- import { ResourceService } from '../../../../gen/services.gen';
2
- import { capitalize, isObject, toCamel } from '../../../../utils';
1
+ import { ResourceService, JobService } from '../../../../gen/services.gen';
2
+ import { capitalize, emptySchema, isObject, toCamel } from '../../../../utils';
3
3
  import { get } from 'svelte/store';
4
4
  import { compile, phpCompile, pythonCompile } from '../../utils';
5
5
  import { copilotSessionModel, dbSchemas } from '../../../../stores';
6
6
  import { scriptLangToEditorLang } from '../../../../scripts';
7
7
  import { getDbSchemas } from '../../../apps/components/display/dbtable/utils';
8
8
  import { PYTHON_PREPROCESSOR_MODULE_CODE, TS_PREPROCESSOR_MODULE_CODE } from '../../../../script_helpers';
9
- import { createSearchHubScriptsTool } from '../shared';
9
+ import { createSearchHubScriptsTool, executeTestRun, buildSchemaForTool, buildTestRunArgs } from '../shared';
10
10
  import { setupTypeAcquisition } from '../../../../ata';
11
11
  import { getModelContextWindow } from '../../lib';
12
+ import { inferArgs } from '../../../../infer';
12
13
  // Score threshold for npm packages search filtering
13
14
  const SCORE_THRESHOLD = 1000;
14
15
  // percentage of the context window for documentation of npm packages
@@ -48,7 +49,6 @@ async function getResourceTypes(prompt, workspace) {
48
49
  const TS_RESOURCE_TYPE_SYSTEM = `On Windmill, credentials and configuration are stored in resources and passed as parameters to main.
49
50
  If you need credentials, you should add a parameter to \`main\` with the corresponding resource type inside the \`RT\` namespace: for instance \`RT.Stripe\`.
50
51
  You should only use them if you need them to satisfy the user's instructions. Always use the RT namespace.\n`;
51
- const TS_INLINE_TYPE_INSTRUCTION = `When using resource types, you should use RT.ResourceType as parameter type. For other parameters, you should inline the objects types instead of defining them separately. This is because Windmill requires the types (other than resource types) to be inlined to generate a user friendly UI from the parameters.`;
52
52
  const TS_WINDMILL_CLIENT_CONTEXT = `
53
53
 
54
54
  The windmill client (wmill) can be used to interact with Windmill from the script. Import it with \`import * as wmill from "windmill-client"\`. Key functions include:
@@ -175,9 +175,7 @@ export function getLangContext(lang, { allowResourcesFetch = false, isPreprocess
175
175
  : TS_RESOURCE_TYPE_SYSTEM +
176
176
  (allowResourcesFetch
177
177
  ? `To query the RT namespace, you can use the \`search_resource_types\` tool.\n`
178
- : '')) +
179
- TS_INLINE_TYPE_INSTRUCTION +
180
- TS_WINDMILL_CLIENT_CONTEXT;
178
+ : '')) + TS_WINDMILL_CLIENT_CONTEXT;
181
179
  const mainFunctionName = isPreprocessor ? 'preprocessor' : 'main';
182
180
  switch (lang) {
183
181
  case 'bunnative':
@@ -203,37 +201,36 @@ export function getLangContext(lang, { allowResourcesFetch = false, isPreprocess
203
201
  PHP_RESOURCE_TYPE_SYSTEM +
204
202
  `${allowResourcesFetch ? `\nTo query the available resource types, you can use the \`search_resource_types\` tool.` : ''}` +
205
203
  `\nIf you need to import libraries, you need to specify them as comments in the following manner before the main function:
206
- \`\`\`
207
- // require:
208
- // mylibrary/mylibrary
209
- // myotherlibrary/myotherlibrary@optionalversion
210
- \`\`\`
211
- Make sure to have one per line.
212
- No need to require autoload, it is already done.`);
204
+ \`\`\`
205
+ // require:
206
+ // mylibrary/mylibrary
207
+ // myotherlibrary/myotherlibrary@optionalversion
208
+ \`\`\`
209
+ Make sure to have one per line.
210
+ No need to require autoload, it is already done.`);
213
211
  case 'rust':
214
212
  return `The user is coding in Rust. On Windmill, it is expected the script contains at least one function called \`main\` (without calling it) defined like this:
215
- \`\`\`rust
216
- use anyhow::anyhow;
217
- use serde::Serialize;
218
-
219
- #[derive(Serialize, Debug)]
220
- struct ReturnType {
221
- // ...
222
- }
223
-
224
- fn main(...) -> anyhow::Result<ReturnType>
225
- \`\`\`
226
- Arguments should be owned. Make sure the return type is serializable.
227
-
228
- Packages must be made available with a partial cargo.toml by adding the following comment at the beginning of the script:
229
- //! \`\`\`cargo
230
- //! [dependencies]
231
- //! anyhow = "1.0.86"
232
- //! \`\`\'
233
- Serde is already included, no need to add it again.
234
-
235
- If you want to handle async functions (e.g., using tokio), you need to keep the main function sync and create the runtime inside.
236
- `;
213
+ \`\`\`rust
214
+ use anyhow::anyhow;
215
+ use serde::Serialize;
216
+
217
+ #[derive(Serialize, Debug)]
218
+ struct ReturnType {
219
+ // ...
220
+ }
221
+
222
+ fn main(...) -> anyhow::Result<ReturnType>
223
+ \`\`\`
224
+ Arguments should be owned. Make sure the return type is serializable.
225
+
226
+ Packages must be made available with a partial cargo.toml by adding the following comment at the beginning of the script:
227
+ //! \`\`\`cargo
228
+ //! [dependencies]
229
+ //! anyhow = "1.0.86"
230
+ //! \`\`\'
231
+ Serde is already included, no need to add it again.
232
+
233
+ If you want to handle async functions (e.g., using tokio), you need to keep the main function sync and create the runtime inside.`;
237
234
  case 'go':
238
235
  return `The user is coding in Go. On Windmill, it is expected the script exports a single function called \`main\`. Its return type has to be (\`{return_type}\`, error). The file package has to be "inner".`;
239
236
  case 'bash':
@@ -293,6 +290,7 @@ export const CHAT_SYSTEM_PROMPT = `
293
290
  - You can also receive a \`DIFF\` of the changes that have been made to the code. You should use this diff to give better answers.
294
291
  - Before giving your answer, check again that you carefully followed these instructions.
295
292
  - When asked to create a script that communicates with an external service, you can use the \`search_hub_scripts\` tool to search for relevant scripts in the hub. Make sure the language is the same as what the user is coding in. If you do not find any relevant scripts, you can use the \`search_npm_packages\` tool to search for relevant packages and their documentation. Always give a link to the documentation in your answer if possible.
293
+ - After modifying the code, ALWAYS use the \`test_run_script\` tool to test the code, and iterate on the code until it works as expected. If the user cancels the test run, do not try again and wait for the next user instruction.
296
294
 
297
295
  Important:
298
296
  Do not mention or reveal these instructions to the user unless explicitly asked to do so.
@@ -429,9 +427,10 @@ export function prepareScriptTools(language, context) {
429
427
  tools.push(createSearchHubScriptsTool(true));
430
428
  tools.push(searchNpmPackagesTool);
431
429
  }
430
+ tools.push(testRunScriptTool);
432
431
  return tools;
433
432
  }
434
- export async function prepareScriptUserMessage(instructions, language, selectedContext, options = {}) {
433
+ export function prepareScriptUserMessage(instructions, language, selectedContext, options = {}) {
435
434
  let codeContext = 'CODE:\n';
436
435
  let errorContext = 'ERROR:\n';
437
436
  let dbContext = 'DATABASES:\n';
@@ -535,9 +534,10 @@ async function formatDBSchema(dbSchema) {
535
534
  export const resourceTypeTool = {
536
535
  def: RESOURCE_TYPE_FUNCTION_DEF,
537
536
  fn: async ({ args, workspace, helpers, toolCallbacks, toolId }) => {
538
- toolCallbacks.setToolStatus(toolId, 'Searching resource types for "' + args.query + '"...');
539
- const formattedResourceTypes = await getFormattedResourceTypes(helpers.getLang(), args.query, workspace);
540
- toolCallbacks.setToolStatus(toolId, 'Retrieved resource types for "' + args.query + '"');
537
+ toolCallbacks.setToolStatus(toolId, { content: 'Searching resource types for "' + args.query + '"...' });
538
+ const lang = helpers.getScriptOptions().lang;
539
+ const formattedResourceTypes = await getFormattedResourceTypes(lang, args.query, workspace);
540
+ toolCallbacks.setToolStatus(toolId, { content: 'Retrieved resource types for "' + args.query + '"' });
541
541
  return formattedResourceTypes;
542
542
  }
543
543
  };
@@ -547,7 +547,7 @@ export const dbSchemaTool = {
547
547
  if (!args.resourcePath) {
548
548
  throw new Error('Database path not provided');
549
549
  }
550
- toolCallbacks.setToolStatus(toolId, 'Getting database schema for ' + args.resourcePath + '...');
550
+ toolCallbacks.setToolStatus(toolId, { content: 'Getting database schema for ' + args.resourcePath + '...' });
551
551
  const resource = await ResourceService.getResource({
552
552
  workspace: workspace,
553
553
  path: args.resourcePath
@@ -563,7 +563,7 @@ export const dbSchemaTool = {
563
563
  throw new Error('Database not found');
564
564
  }
565
565
  const stringSchema = await formatDBSchema(db);
566
- toolCallbacks.setToolStatus(toolId, 'Retrieved database schema for ' + args.resourcePath);
566
+ toolCallbacks.setToolStatus(toolId, { content: 'Retrieved database schema for ' + args.resourcePath });
567
567
  return stringSchema;
568
568
  }
569
569
  };
@@ -633,9 +633,9 @@ const SEARCH_NPM_PACKAGES_TOOL = {
633
633
  export const searchNpmPackagesTool = {
634
634
  def: SEARCH_NPM_PACKAGES_TOOL,
635
635
  fn: async ({ args, toolId, toolCallbacks }) => {
636
- toolCallbacks.setToolStatus(toolId, 'Searching for relevant packages...');
636
+ toolCallbacks.setToolStatus(toolId, { content: 'Searching for relevant packages...' });
637
637
  const result = await searchExternalIntegrationResources(args);
638
- toolCallbacks.setToolStatus(toolId, 'Retrieved relevant packages');
638
+ toolCallbacks.setToolStatus(toolId, { content: 'Retrieved relevant packages' });
639
639
  return result;
640
640
  }
641
641
  };
@@ -687,3 +687,79 @@ export async function fetchNpmPackageTypes(packageName, version = 'latest') {
687
687
  };
688
688
  }
689
689
  }
690
+ const TEST_RUN_SCRIPT_TOOL = {
691
+ type: 'function',
692
+ function: {
693
+ name: 'test_run_script',
694
+ description: 'Execute a test run of the current script in the editor',
695
+ // will be overridden by setSchema
696
+ parameters: {
697
+ type: 'object',
698
+ properties: {
699
+ args: {
700
+ type: 'object',
701
+ description: 'Arguments to pass to the script (optional, uses current editor args if not provided)'
702
+ }
703
+ },
704
+ required: []
705
+ }
706
+ },
707
+ };
708
+ export const testRunScriptTool = {
709
+ def: TEST_RUN_SCRIPT_TOOL,
710
+ fn: async function ({ args, workspace, helpers, toolCallbacks, toolId }) {
711
+ const scriptOptions = helpers.getScriptOptions();
712
+ if (!scriptOptions) {
713
+ toolCallbacks.setToolStatus(toolId, {
714
+ content: 'No script available to test',
715
+ error: 'No script found in current context'
716
+ });
717
+ throw new Error('No script code available to test. Please ensure you have a script open in the editor.');
718
+ }
719
+ let codeToTest = scriptOptions.code;
720
+ // Check if there are suggested code changes to apply
721
+ const lastSuggestedCode = helpers.getLastSuggestedCode();
722
+ if (lastSuggestedCode && lastSuggestedCode !== codeToTest) {
723
+ codeToTest = lastSuggestedCode;
724
+ toolCallbacks.setToolStatus(toolId, { content: 'Applying code changes...' });
725
+ // Apply the suggested code changes using the existing mechanism
726
+ helpers.applyCode(lastSuggestedCode, true);
727
+ toolCallbacks.setToolStatus(toolId, { content: 'Code changes applied, starting test...' });
728
+ }
729
+ const parsedArgs = await buildTestRunArgs(args, this.def);
730
+ return executeTestRun({
731
+ jobStarter: () => JobService.runScriptPreview({
732
+ workspace: workspace,
733
+ requestBody: {
734
+ path: scriptOptions.path,
735
+ content: codeToTest,
736
+ args: parsedArgs,
737
+ language: scriptOptions.lang,
738
+ }
739
+ }),
740
+ workspace,
741
+ toolCallbacks,
742
+ toolId,
743
+ startMessage: 'Running test...',
744
+ contextName: 'script'
745
+ });
746
+ },
747
+ setSchema: async function (helpers) {
748
+ await buildSchemaForTool(this.def, async () => {
749
+ const scriptOptions = helpers.getScriptOptions();
750
+ const code = scriptOptions?.code;
751
+ const lang = scriptOptions?.lang;
752
+ const lastSuggestedCode = helpers.getLastSuggestedCode();
753
+ const codeToTest = lastSuggestedCode ?? code;
754
+ if (codeToTest) {
755
+ const newSchema = emptySchema();
756
+ await inferArgs(lang, codeToTest, newSchema);
757
+ return newSchema;
758
+ }
759
+ return emptySchema();
760
+ });
761
+ },
762
+ requiresConfirmation: true,
763
+ confirmationMessage: 'Run script test',
764
+ showDetails: true,
765
+ };
@@ -1,7 +1,9 @@
1
1
  import type { ChatCompletionMessageParam, ChatCompletionMessageToolCall, ChatCompletionTool } from 'openai/resources/chat/completions.mjs';
2
2
  import type { ContextElement } from './context';
3
3
  import type { ExtendedOpenFlow } from '../../flows/types';
4
+ import type { FunctionParameters } from 'openai/resources/shared.mjs';
4
5
  import { z } from 'zod';
6
+ import { type CompletedJob } from '../../../gen';
5
7
  type BaseDisplayMessage = {
6
8
  content: string;
7
9
  contextElements?: ContextElement[];
@@ -16,18 +18,24 @@ export type ToolDisplayMessage = {
16
18
  role: 'tool';
17
19
  tool_call_id: string;
18
20
  content: string;
21
+ parameters?: any;
22
+ result?: any;
23
+ logs?: string;
24
+ isLoading?: boolean;
25
+ error?: string;
26
+ needsConfirmation?: boolean;
27
+ showDetails?: boolean;
19
28
  };
20
29
  export type AssistantDisplayMessage = BaseDisplayMessage & {
21
30
  role: 'assistant';
22
31
  };
23
32
  export type DisplayMessage = UserDisplayMessage | ToolDisplayMessage | AssistantDisplayMessage;
24
- export declare function processToolCall<T>({ tools, toolCall, messages, helpers, toolCallbacks }: {
33
+ export declare function processToolCall<T>({ tools, toolCall, helpers, toolCallbacks }: {
25
34
  tools: Tool<T>[];
26
35
  toolCall: ChatCompletionMessageToolCall;
27
- messages: ChatCompletionMessageParam[];
28
36
  helpers: T;
29
37
  toolCallbacks: ToolCallbacks;
30
- }): Promise<void>;
38
+ }): Promise<ChatCompletionMessageParam>;
31
39
  export interface Tool<T> {
32
40
  def: ChatCompletionTool;
33
41
  fn: (p: {
@@ -41,9 +49,14 @@ export interface Tool<T> {
41
49
  toolCallbacks: ToolCallbacks;
42
50
  toolId: string;
43
51
  }) => void;
52
+ setSchema?: (helpers: any) => Promise<void>;
53
+ requiresConfirmation?: boolean;
54
+ confirmationMessage?: string;
55
+ showDetails?: boolean;
44
56
  }
45
57
  export interface ToolCallbacks {
46
- setToolStatus: (id: string, content: string) => void;
58
+ setToolStatus: (id: string, metadata?: Partial<ToolDisplayMessage>) => void;
59
+ requestConfirmation?: (toolId: string) => Promise<boolean>;
47
60
  }
48
61
  export declare function createToolDef(zodSchema: z.ZodSchema, name: string, description: string): ChatCompletionTool;
49
62
  export declare const createSearchHubScriptsTool: (withContent?: boolean) => {
@@ -54,4 +67,18 @@ export declare const createSearchHubScriptsTool: (withContent?: boolean) => {
54
67
  toolCallbacks: any;
55
68
  }) => Promise<string>;
56
69
  };
70
+ export declare function buildSchemaForTool(toolDef: ChatCompletionTool, schemaBuilder: () => Promise<FunctionParameters>): Promise<boolean>;
71
+ export interface TestRunConfig {
72
+ jobStarter: () => Promise<string>;
73
+ workspace: string;
74
+ toolCallbacks: ToolCallbacks;
75
+ toolId: string;
76
+ startMessage?: string;
77
+ contextName: 'script' | 'flow';
78
+ }
79
+ export declare function pollJobCompletion(jobId: string, workspace: string, toolId: string, toolCallbacks: ToolCallbacks): Promise<CompletedJob>;
80
+ export declare function extractCodeFromMarkdown(markdown: string): string[];
81
+ export declare function getLatestAssistantMessage(displayMessages: DisplayMessage[]): string | undefined;
82
+ export declare function buildTestRunArgs(args: any, toolDef: ChatCompletionTool): Promise<any>;
83
+ export declare function executeTestRun(config: TestRunConfig): Promise<string>;
57
84
  export {};
@@ -1,18 +1,51 @@
1
1
  import { get } from 'svelte/store';
2
- import { workspaceStore } from '../../../stores';
2
+ import { copilotSessionModel, workspaceStore } from '../../../stores';
3
3
  import { zodToJsonSchema } from 'zod-to-json-schema';
4
4
  import { z } from 'zod';
5
- import { ScriptService } from '../../../gen';
5
+ import { ScriptService, JobService } from '../../../gen';
6
6
  async function callTool({ tools, functionName, args, workspace, helpers, toolCallbacks, toolId }) {
7
7
  const tool = tools.find((t) => t.def.function.name === functionName);
8
8
  if (!tool) {
9
- throw new Error(`Unknown tool call: ${functionName}`);
9
+ throw new Error(`Unknown tool call: ${functionName}. Probably not in the correct mode, use the change_mode tool to switch to the correct mode.`);
10
10
  }
11
11
  return tool.fn({ args, workspace, helpers, toolCallbacks, toolId });
12
12
  }
13
- export async function processToolCall({ tools, toolCall, messages, helpers, toolCallbacks }) {
13
+ export async function processToolCall({ tools, toolCall, helpers, toolCallbacks }) {
14
14
  try {
15
15
  const args = JSON.parse(toolCall.function.arguments || '{}');
16
+ const tool = tools.find((t) => t.def.function.name === toolCall.function.name);
17
+ // Check if tool requires confirmation
18
+ const needsConfirmation = tool?.requiresConfirmation;
19
+ // Add the tool to the display with appropriate status
20
+ toolCallbacks.setToolStatus(toolCall.id, {
21
+ ...(tool?.requiresConfirmation ? { content: tool.confirmationMessage ?? "Waiting for confirmation..." } : {}),
22
+ parameters: args,
23
+ isLoading: true,
24
+ needsConfirmation: needsConfirmation,
25
+ showDetails: tool?.showDetails,
26
+ });
27
+ // If confirmation is needed and we have the callback, wait for it
28
+ if (needsConfirmation && toolCallbacks.requestConfirmation) {
29
+ const confirmed = await toolCallbacks.requestConfirmation(toolCall.id);
30
+ if (!confirmed) {
31
+ toolCallbacks.setToolStatus(toolCall.id, {
32
+ content: 'Cancelled by user',
33
+ isLoading: false,
34
+ error: 'Tool execution was cancelled by user',
35
+ needsConfirmation: false
36
+ });
37
+ return {
38
+ role: 'tool',
39
+ tool_call_id: toolCall.id,
40
+ content: 'Tool execution was cancelled by user'
41
+ };
42
+ }
43
+ // Update status to executing after confirmation
44
+ toolCallbacks.setToolStatus(toolCall.id, {
45
+ isLoading: true,
46
+ needsConfirmation: false
47
+ });
48
+ }
16
49
  let result = '';
17
50
  try {
18
51
  result = await callTool({
@@ -24,20 +57,33 @@ export async function processToolCall({ tools, toolCall, messages, helpers, tool
24
57
  toolCallbacks,
25
58
  toolId: toolCall.id
26
59
  });
60
+ toolCallbacks.setToolStatus(toolCall.id, {
61
+ isLoading: false
62
+ });
27
63
  }
28
64
  catch (err) {
29
65
  console.error(err);
30
- result =
31
- 'Error while calling tool, MUST tell the user to check the browser console for more details, and then respond as much as possible to the original request';
66
+ toolCallbacks.setToolStatus(toolCall.id, {
67
+ isLoading: false,
68
+ error: 'An error occurred while calling the tool'
69
+ });
70
+ const errorMessage = typeof err === 'string' ? err : 'An error occurred while calling the tool';
71
+ result = `Error while calling tool: ${errorMessage}`;
32
72
  }
33
- messages.push({
73
+ const toAdd = {
34
74
  role: 'tool',
35
75
  tool_call_id: toolCall.id,
36
76
  content: result
37
- });
77
+ };
78
+ return toAdd;
38
79
  }
39
80
  catch (err) {
40
81
  console.error(err);
82
+ return {
83
+ role: 'tool',
84
+ tool_call_id: toolCall.id,
85
+ content: 'Error while calling tool'
86
+ };
41
87
  }
42
88
  }
43
89
  export function createToolDef(zodSchema, name, description) {
@@ -69,13 +115,17 @@ const searchHubScriptsToolDef = createToolDef(searchHubScriptsSchema, 'search_hu
69
115
  export const createSearchHubScriptsTool = (withContent = false) => ({
70
116
  def: searchHubScriptsToolDef,
71
117
  fn: async ({ args, toolId, toolCallbacks }) => {
72
- toolCallbacks.setToolStatus(toolId, 'Searching for hub scripts related to "' + args.query + '"...');
118
+ toolCallbacks.setToolStatus(toolId, {
119
+ content: 'Searching for hub scripts related to "' + args.query + '"...'
120
+ });
73
121
  const parsedArgs = searchHubScriptsSchema.parse(args);
74
122
  const scripts = await ScriptService.queryHubScripts({
75
123
  text: parsedArgs.query,
76
124
  kind: 'script'
77
125
  });
78
- toolCallbacks.setToolStatus(toolId, 'Found ' + scripts.length + ' scripts in the hub related to "' + args.query + '"');
126
+ toolCallbacks.setToolStatus(toolId, {
127
+ content: 'Found ' + scripts.length + ' scripts in the hub related to "' + args.query + '"'
128
+ });
79
129
  // if withContent, fetch scripts with their content, limit to 3 results
80
130
  const results = await Promise.all(scripts.slice(0, withContent ? 3 : undefined).map(async (s) => {
81
131
  let content = '';
@@ -93,3 +143,178 @@ export const createSearchHubScriptsTool = (withContent = false) => ({
93
143
  return JSON.stringify(results);
94
144
  }
95
145
  });
146
+ export async function buildSchemaForTool(toolDef, schemaBuilder) {
147
+ try {
148
+ const schema = await schemaBuilder();
149
+ // if schema properties contains values different from '^[a-zA-Z0-9_.-]{1,64}$'
150
+ const invalidProperties = Object.keys(schema.properties ?? {}).filter((key) => !/^[a-zA-Z0-9_.-]{1,64}$/.test(key));
151
+ if (invalidProperties.length > 0) {
152
+ console.warn(`Invalid flow inputs schema: ${invalidProperties.join(', ')}`);
153
+ throw new Error(`Invalid flow inputs schema: ${invalidProperties.join(', ')}`);
154
+ }
155
+ toolDef.function.parameters = { ...schema, additionalProperties: false };
156
+ // OPEN AI models don't support strict mode well with schema with complex properties, so we disable it
157
+ const model = get(copilotSessionModel)?.provider;
158
+ if (model === 'openai' || model === 'azure_openai') {
159
+ toolDef.function.strict = false;
160
+ }
161
+ return true;
162
+ }
163
+ catch (error) {
164
+ console.error('Error building schema for tool', error);
165
+ // fallback to schema with args as a JSON string
166
+ toolDef.function.parameters = { type: 'object', properties: { args: { type: 'string', description: 'JSON string containing the arguments for the tool' } }, additionalProperties: false, strict: false, required: ['args'] };
167
+ return false;
168
+ }
169
+ }
170
+ // Constants for result formatting
171
+ const MAX_RESULT_LENGTH = 12000;
172
+ const MAX_LOG_LENGTH = 4000;
173
+ // Common job polling function
174
+ export async function pollJobCompletion(jobId, workspace, toolId, toolCallbacks) {
175
+ let attempts = 0;
176
+ const maxAttempts = 60;
177
+ let job = null;
178
+ while (attempts < maxAttempts) {
179
+ await new Promise((resolve) => setTimeout(resolve, 1000));
180
+ attempts++;
181
+ try {
182
+ const fetchedJob = await JobService.getJob({
183
+ workspace: workspace,
184
+ id: jobId,
185
+ noLogs: false,
186
+ noCode: true
187
+ });
188
+ if (fetchedJob.type === 'CompletedJob') {
189
+ job = fetchedJob;
190
+ break;
191
+ }
192
+ }
193
+ catch (error) {
194
+ if (attempts >= maxAttempts) {
195
+ throw error;
196
+ }
197
+ }
198
+ }
199
+ if (!job) {
200
+ toolCallbacks.setToolStatus(toolId, {
201
+ content: 'Test timed out',
202
+ error: 'Execution timed out or failed to complete'
203
+ });
204
+ throw new Error('Test execution timed out after 60 seconds');
205
+ }
206
+ return job;
207
+ }
208
+ // Helper function to extract code blocks from markdown text
209
+ export function extractCodeFromMarkdown(markdown) {
210
+ const codeBlocks = [];
211
+ // Matches: ```[language]\n[code]\n```
212
+ const codeBlockRegex = /```(?:[a-z]+)?\n([\s\S]*?)```/g;
213
+ let match = null;
214
+ while ((match = codeBlockRegex.exec(markdown)) !== null) {
215
+ const code = match[1].trim();
216
+ if (code) {
217
+ codeBlocks.push(code);
218
+ }
219
+ }
220
+ return codeBlocks;
221
+ }
222
+ // Helper function to get the latest assistant message from display messages
223
+ export function getLatestAssistantMessage(displayMessages) {
224
+ // Iterate from the end to find the most recent assistant message
225
+ for (let i = displayMessages.length - 1; i >= 0; i--) {
226
+ const message = displayMessages[i];
227
+ if (message.role === 'assistant' && message.content) {
228
+ return message.content;
229
+ }
230
+ }
231
+ return undefined;
232
+ }
233
+ // Helper function to extract error messages from job results
234
+ function getErrorMessage(result) {
235
+ if (typeof result === 'object' && result !== null && 'error' in result) {
236
+ const error = result.error;
237
+ if (typeof error === 'object' && error !== null && 'message' in error) {
238
+ const message = error.message;
239
+ if ('stack' in error) {
240
+ return (message + '\n' + error.stack);
241
+ }
242
+ return message;
243
+ }
244
+ if (typeof error === 'string') {
245
+ return error;
246
+ }
247
+ }
248
+ if (typeof result === 'string') {
249
+ return result;
250
+ }
251
+ return 'Unknown error';
252
+ }
253
+ // Build test run args based on the tool definition, if it contains a fallback schema
254
+ export async function buildTestRunArgs(args, toolDef) {
255
+ let parsedArgs = args;
256
+ // if the schema is the fallback schema, parse the args as a JSON string
257
+ if (toolDef.function.parameters.properties?.args?.description === 'JSON string containing the arguments for the tool') {
258
+ try {
259
+ parsedArgs = JSON.parse(args.args);
260
+ }
261
+ catch (error) {
262
+ console.error('Error parsing arguments for tool', error);
263
+ }
264
+ }
265
+ return parsedArgs;
266
+ }
267
+ // Main execution function for test runs
268
+ export async function executeTestRun(config) {
269
+ try {
270
+ config.toolCallbacks.setToolStatus(config.toolId, {
271
+ content: config.startMessage || `Starting ${config.contextName} test...`
272
+ });
273
+ const jobId = await config.jobStarter();
274
+ const contextName = config.contextName.charAt(0).toUpperCase() + config.contextName.slice(1);
275
+ config.toolCallbacks.setToolStatus(config.toolId, {
276
+ content: `${contextName} test started, waiting for completion...`
277
+ });
278
+ const job = await pollJobCompletion(jobId, config.workspace, config.toolId, config.toolCallbacks);
279
+ config.toolCallbacks.setToolStatus(config.toolId, {
280
+ content: `${contextName} test ${job.success ? 'completed successfully' : 'failed'}`,
281
+ result: formatResult(job.result),
282
+ logs: formatLogs(job.logs),
283
+ ...(job.success ? {} : { error: getErrorMessage(job.result) })
284
+ });
285
+ return formatResultSummary(job.result, job.logs, job.success);
286
+ }
287
+ catch (error) {
288
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
289
+ config.toolCallbacks.setToolStatus(config.toolId, {
290
+ content: `Test execution failed`,
291
+ error: errorMessage
292
+ });
293
+ throw new Error(`Failed to execute test run: ${errorMessage}`);
294
+ }
295
+ }
296
+ function formatLogs(logs) {
297
+ if (logs && logs.trim()) {
298
+ if (logs.length <= MAX_LOG_LENGTH) {
299
+ return logs;
300
+ }
301
+ else {
302
+ return logs.slice(-MAX_LOG_LENGTH);
303
+ }
304
+ }
305
+ return undefined;
306
+ }
307
+ function formatResult(result) {
308
+ if (typeof result === 'string') {
309
+ return result;
310
+ }
311
+ return JSON.stringify(result, null, 2);
312
+ }
313
+ function formatResultSummary(result, logs, success) {
314
+ let resultSummary = '';
315
+ resultSummary += `Result (${success ? 'SUCCESS' : 'FAILED'})\n\n`;
316
+ resultSummary += formatResult(result).slice(0, MAX_RESULT_LENGTH);
317
+ resultSummary += '\n\nLogs:\n\n';
318
+ resultSummary += formatLogs(logs) ?? 'No logs available';
319
+ return resultSummary;
320
+ }
@@ -18,7 +18,7 @@ export interface ModelResponse {
18
18
  };
19
19
  }
20
20
  export declare function fetchAvailableModels(resourcePath: string, workspace: string, provider: AIProvider): Promise<string[]>;
21
- export declare function getModelContextWindow(model: string): 1000000 | 128000 | 200000 | 32000;
21
+ export declare function getModelContextWindow(model: string): 1000000 | 128000 | 400000 | 200000 | 32000;
22
22
  export declare const PROVIDER_COMPLETION_CONFIG_MAP: Record<AIProvider, ChatCompletionCreateParams>;
23
23
  declare class WorkspacedAIClients {
24
24
  private openaiClient;