windmill-components 1.655.2 → 1.665.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 (650) hide show
  1. package/package/components/ApiConnectForm.svelte +6 -6
  2. package/package/components/ApiConnectForm.svelte.d.ts +3 -2
  3. package/package/components/AppConnectDrawer.svelte +3 -1
  4. package/package/components/AppConnectDrawer.svelte.d.ts +2 -0
  5. package/package/components/AppConnectInner.svelte +137 -72
  6. package/package/components/AppConnectInner.svelte.d.ts +1 -0
  7. package/package/components/CompareWorkspaces.svelte +32 -24
  8. package/package/components/DBManager.svelte +7 -13
  9. package/package/components/DBTable.svelte +2 -2
  10. package/package/components/DBTableEditor.svelte +39 -31
  11. package/package/components/DBTableEditor.svelte.d.ts +2 -2
  12. package/package/components/DedicatedWorkersSelector.svelte +292 -85
  13. package/package/components/DeployWorkspace.svelte +30 -26
  14. package/package/components/Dev.svelte +7 -2
  15. package/package/components/Dev.svelte.d.ts +3 -0
  16. package/package/components/Editor.svelte +17 -13
  17. package/package/components/EditorBar.svelte.d.ts +1 -1
  18. package/package/components/FilterSearchbar.svelte +1 -1
  19. package/package/components/FirstStepInputs.svelte +0 -1
  20. package/package/components/FlowBuilder.svelte +5 -0
  21. package/package/components/FlowGraphDiffViewer.svelte +3 -0
  22. package/package/components/FlowGraphViewer.svelte +7 -4
  23. package/package/components/FlowGraphViewer.svelte.d.ts +1 -0
  24. package/package/components/FlowGraphViewerStep.svelte +3 -3
  25. package/package/components/FlowGraphViewerStep.svelte.d.ts +1 -0
  26. package/package/components/FlowPreviewContent.svelte +11 -1
  27. package/package/components/FlowStatusViewer.svelte +4 -1
  28. package/package/components/FlowStatusViewer.svelte.d.ts +3 -1
  29. package/package/components/FlowStatusViewerInner.svelte +46 -11
  30. package/package/components/FlowStatusViewerInner.svelte.d.ts +4 -1
  31. package/package/components/FlowStatusWaitingForEvents.svelte +48 -103
  32. package/package/components/FlowTimeline.svelte +76 -84
  33. package/package/components/FlowViewer.svelte +40 -22
  34. package/package/components/FlowViewer.svelte.d.ts +8 -2
  35. package/package/components/GroupEditor.svelte +7 -9
  36. package/package/components/HistoricList.svelte +12 -4
  37. package/package/components/InstanceGroupEditor.svelte +92 -19
  38. package/package/components/InstanceSetting.svelte +16 -6
  39. package/package/components/InstanceSettings.svelte +51 -7
  40. package/package/components/InstanceSettings.svelte.d.ts +2 -1
  41. package/package/components/JobLoader.svelte +5 -4
  42. package/package/components/JobLoader.svelte.d.ts +1 -1
  43. package/package/components/Login.svelte +9 -1
  44. package/package/components/NoMainFuncBadge.svelte +2 -2
  45. package/package/components/OnBehalfOfSelector.svelte +49 -37
  46. package/package/components/OnBehalfOfSelector.svelte.d.ts +16 -6
  47. package/package/components/ResourceEditor.svelte +16 -11
  48. package/package/components/ResourceEditor.svelte.d.ts +1 -0
  49. package/package/components/ResourceEditorDrawer.svelte +3 -1
  50. package/package/components/ResourceEditorDrawer.svelte.d.ts +6 -2
  51. package/package/components/ResourcePicker.svelte +10 -5
  52. package/package/components/ResourcePicker.svelte.d.ts +2 -0
  53. package/package/components/S3FilePickerInner.svelte +12 -4
  54. package/package/components/SchemaForm.svelte +20 -14
  55. package/package/components/SchemaForm.svelte.d.ts +2 -2
  56. package/package/components/ScriptBuilder.svelte +158 -18
  57. package/package/components/ScriptEditor.svelte +674 -150
  58. package/package/components/ScriptEditor.svelte.d.ts +7 -3
  59. package/package/components/SuperadminSettings.svelte +4 -1
  60. package/package/components/SuperadminSettingsInner.svelte +176 -67
  61. package/package/components/SuperadminSettingsInner.svelte.d.ts +3 -1
  62. package/package/components/SyncResourceTypes.svelte +31 -0
  63. package/package/components/SyncResourceTypes.svelte.d.ts +6 -0
  64. package/package/components/TimelineBar.svelte +14 -8
  65. package/package/components/TimelineBar.svelte.d.ts +1 -0
  66. package/package/components/WorkerGroup.svelte +11 -4
  67. package/package/components/WorkflowTimeline.svelte +386 -58
  68. package/package/components/WorkflowTimeline.svelte.d.ts +6 -1
  69. package/package/components/WorkspaceDependenciesEditor.svelte +32 -2
  70. package/package/components/apps/components/display/dbtable/DeleteRow.svelte +2 -2
  71. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +2 -2
  72. package/package/components/apps/components/display/dbtable/UpdateCell.svelte +2 -2
  73. package/package/components/apps/components/display/dbtable/metadata.js +44 -222
  74. package/package/components/apps/components/display/dbtable/queries/count.d.ts +9 -0
  75. package/package/components/apps/components/display/dbtable/queries/delete.d.ts +9 -0
  76. package/package/components/apps/components/display/dbtable/queries/insert.d.ts +9 -0
  77. package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +7 -0
  78. package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +1 -1
  79. package/package/components/apps/components/display/dbtable/queries/select.d.ts +9 -0
  80. package/package/components/apps/components/display/dbtable/queries/update.d.ts +9 -0
  81. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +11 -9
  82. package/package/components/apps/editor/appUtilsS3.js +2 -2
  83. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +53 -10
  84. package/package/components/common/clearableInput/ClearableInput.svelte +3 -7
  85. package/package/components/common/confirmationModal/ConfirmationModal.svelte +7 -1
  86. package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +1 -0
  87. package/package/components/common/drawer/Disposable.svelte +24 -2
  88. package/package/components/common/drawer/Disposable.svelte.d.ts +5 -0
  89. package/package/components/common/modal/Modal.svelte +84 -58
  90. package/package/components/common/table/AppRow.svelte.d.ts +1 -1
  91. package/package/components/common/table/FlowRow.svelte.d.ts +1 -1
  92. package/package/components/common/table/ScriptRow.svelte +31 -3
  93. package/package/components/common/table/ScriptRow.svelte.d.ts +1 -1
  94. package/package/components/copilot/MetadataGen.svelte +8 -5
  95. package/package/components/copilot/MetadataGen.svelte.d.ts +1 -0
  96. package/package/components/copilot/TestAIKey.svelte +2 -1
  97. package/package/components/copilot/TestAIKey.svelte.d.ts +1 -0
  98. package/package/components/copilot/chat/AIChatManager.svelte.js +62 -80
  99. package/package/components/copilot/chat/HistoryManager.svelte.d.ts +1 -0
  100. package/package/components/copilot/chat/HistoryManager.svelte.js +3 -0
  101. package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +47 -31
  102. package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +1 -6
  103. package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +18 -13
  104. package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +14 -5
  105. package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +13 -12
  106. package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +46 -29
  107. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +1 -4
  108. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +14 -5
  109. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +13 -12
  110. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +5 -8
  111. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +82 -108
  112. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +4 -7
  113. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +19 -11
  114. package/package/components/copilot/chat/__tests__/shared/types.d.ts +3 -0
  115. package/package/components/copilot/chat/anthropic.d.ts +9 -2
  116. package/package/components/copilot/chat/anthropic.js +12 -6
  117. package/package/components/copilot/chat/app/core.js +5 -12
  118. package/package/components/copilot/chat/chatLoop.d.ts +40 -0
  119. package/package/components/copilot/chat/chatLoop.js +97 -0
  120. package/package/components/copilot/chat/openai-responses.d.ts +8 -2
  121. package/package/components/copilot/chat/openai-responses.js +17 -17
  122. package/package/components/copilot/chat/shared.d.ts +2 -1
  123. package/package/components/copilot/chat/shared.js +2 -2
  124. package/package/components/copilot/lib.d.ts +14 -5
  125. package/package/components/copilot/lib.js +68 -48
  126. package/package/components/dbOps.d.ts +2 -2
  127. package/package/components/dbOps.js +129 -53
  128. package/package/components/debug/debugUtils.d.ts +5 -0
  129. package/package/components/debug/debugUtils.js +20 -0
  130. package/package/components/debug/index.d.ts +1 -1
  131. package/package/components/debug/index.js +3 -7
  132. package/package/components/flows/CreateActionsFlow.svelte +221 -43
  133. package/package/components/flows/DebounceLimit.svelte +42 -9
  134. package/package/components/flows/common/FlowCard.svelte +2 -1
  135. package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
  136. package/package/components/flows/common/FlowCardHeader.svelte +14 -10
  137. package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
  138. package/package/components/flows/content/AgentToolWrapper.svelte +2 -1
  139. package/package/components/flows/content/AgentToolWrapper.svelte.d.ts +1 -0
  140. package/package/components/flows/content/FlowEditorPanel.svelte +1 -0
  141. package/package/components/flows/content/FlowModuleComponent.svelte +32 -18
  142. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  143. package/package/components/flows/content/FlowModuleDebounce.svelte +46 -0
  144. package/package/components/flows/content/FlowModuleDebounce.svelte.d.ts +8 -0
  145. package/package/components/flows/content/FlowModuleEarlyStop.svelte +26 -5
  146. package/package/components/flows/content/FlowModuleWrapper.svelte +1 -0
  147. package/package/components/flows/content/FlowRetries.svelte +57 -57
  148. package/package/components/flows/content/FlowSelectionPanel.svelte +9 -14
  149. package/package/components/flows/content/FlowSelectionPanel.svelte.d.ts +1 -0
  150. package/package/components/flows/content/FlowSettings.svelte +6 -6
  151. package/package/components/flows/content/ScriptEditorDrawer.svelte +1 -1
  152. package/package/components/flows/content/SuspendDrawer.svelte +0 -18
  153. package/package/components/flows/header/FlowYamlEditor.svelte +20 -4
  154. package/package/components/flows/map/FlowErrorHandlerItem.svelte +32 -14
  155. package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
  156. package/package/components/flows/map/FlowModuleSchemaItem.svelte +7 -10
  157. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -8
  158. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +0 -2
  159. package/package/components/flows/map/FlowModuleSchemaMap.svelte +343 -137
  160. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
  161. package/package/components/flows/map/FlowStickyNode.svelte +24 -16
  162. package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
  163. package/package/components/flows/map/VirtualItemWrapper.svelte +1 -1
  164. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
  165. package/package/components/flows/propPicker/OutputPickerInner.svelte +5 -1
  166. package/package/components/flows/scheduleUtils.js +3 -1
  167. package/package/components/flows/utils.svelte.js +6 -1
  168. package/package/components/git_sync/GitSyncContext.svelte.js +13 -2
  169. package/package/components/git_sync/GitSyncSection.svelte +135 -99
  170. package/package/components/graph/DragGhost.svelte +11 -2
  171. package/package/components/graph/FlowGraphV2.svelte +138 -42
  172. package/package/components/graph/FlowGraphV2.svelte.d.ts +15 -1
  173. package/package/components/graph/GroupActionBar.svelte +124 -0
  174. package/package/components/graph/GroupActionBar.svelte.d.ts +20 -0
  175. package/package/components/graph/GroupHeader.svelte +98 -0
  176. package/package/components/graph/GroupHeader.svelte.d.ts +11 -0
  177. package/package/components/graph/GroupHeaderBlock.svelte +58 -0
  178. package/package/components/graph/GroupHeaderBlock.svelte.d.ts +13 -0
  179. package/package/components/graph/GroupModuleIcons.svelte +163 -0
  180. package/package/components/graph/GroupModuleIcons.svelte.d.ts +11 -0
  181. package/package/components/graph/GroupNodeCard.svelte +127 -0
  182. package/package/components/graph/GroupNodeCard.svelte.d.ts +18 -0
  183. package/package/components/graph/GroupNoteArea.svelte +132 -0
  184. package/package/components/graph/GroupNoteArea.svelte.d.ts +11 -0
  185. package/package/components/graph/GroupOverlay.svelte +71 -0
  186. package/package/components/graph/GroupOverlay.svelte.d.ts +12 -0
  187. package/package/components/graph/MiniFlowGraph.svelte +17 -2
  188. package/package/components/graph/SelectionBoundingBox.svelte +14 -14
  189. package/package/components/graph/compoundLayout.d.ts +17 -1
  190. package/package/components/graph/compoundLayout.js +129 -14
  191. package/package/components/graph/flowStructure.d.ts +63 -0
  192. package/package/components/graph/flowStructure.js +422 -0
  193. package/package/components/graph/flowStructure.test.d.ts +1 -0
  194. package/package/components/graph/flowStructure.test.js +205 -0
  195. package/package/components/graph/graphBuilder.svelte.d.ts +52 -3
  196. package/package/components/graph/graphBuilder.svelte.js +170 -67
  197. package/package/components/graph/graphContext.d.ts +7 -0
  198. package/package/components/graph/groupDetectionUtils.d.ts +24 -1
  199. package/package/components/graph/groupDetectionUtils.js +101 -1
  200. package/package/components/graph/groupEditor.svelte.d.ts +105 -0
  201. package/package/components/graph/groupEditor.svelte.js +253 -0
  202. package/package/components/graph/groupedModulesProxy.svelte.d.ts +55 -0
  203. package/package/components/graph/groupedModulesProxy.svelte.js +130 -0
  204. package/package/components/graph/model.d.ts +2 -1
  205. package/package/components/graph/moveManager.svelte.js +0 -3
  206. package/package/components/graph/nodeExtraSpace.d.ts +32 -0
  207. package/package/components/graph/nodeExtraSpace.js +113 -0
  208. package/package/components/graph/noteColors.d.ts +1 -0
  209. package/package/components/graph/noteColors.js +20 -10
  210. package/package/components/graph/noteUtils.svelte.d.ts +0 -18
  211. package/package/components/graph/noteUtils.svelte.js +6 -41
  212. package/package/components/graph/renderers/edges/BaseEdge.svelte +26 -11
  213. package/package/components/graph/renderers/nodes/AIToolNode.svelte +24 -49
  214. package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +1 -4
  215. package/package/components/graph/renderers/nodes/AssetNode.svelte +1 -27
  216. package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +0 -4
  217. package/package/components/graph/renderers/nodes/CollapsedGroupNode.svelte +85 -0
  218. package/package/components/graph/renderers/nodes/CollapsedGroupNode.svelte.d.ts +8 -0
  219. package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +3 -2
  220. package/package/components/graph/renderers/nodes/GroupEndNode.svelte +9 -0
  221. package/package/components/graph/renderers/nodes/GroupEndNode.svelte.d.ts +6 -0
  222. package/package/components/graph/renderers/nodes/GroupHeadNode.svelte +20 -0
  223. package/package/components/graph/renderers/nodes/GroupHeadNode.svelte.d.ts +8 -0
  224. package/package/components/graph/renderers/nodes/ModuleNode.svelte +8 -5
  225. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +1 -1
  226. package/package/components/graph/util.d.ts +5 -1
  227. package/package/components/graph/util.js +7 -5
  228. package/package/components/home/Item.svelte +1 -0
  229. package/package/components/home/ItemsList.svelte +1 -1
  230. package/package/components/icons/ActiveCampaignIcon.svelte +10 -0
  231. package/package/components/icons/ActiveCampaignIcon.svelte.d.ts +7 -0
  232. package/package/components/icons/AlgoliaIcon.svelte +7 -0
  233. package/package/components/icons/AlgoliaIcon.svelte.d.ts +7 -0
  234. package/package/components/icons/ApolloIcon.svelte +7 -0
  235. package/package/components/icons/ApolloIcon.svelte.d.ts +7 -0
  236. package/package/components/icons/BambooHrIcon.svelte +7 -0
  237. package/package/components/icons/BambooHrIcon.svelte.d.ts +7 -0
  238. package/package/components/icons/BaremetricsIcon.svelte +7 -0
  239. package/package/components/icons/BaremetricsIcon.svelte.d.ts +7 -0
  240. package/package/components/icons/BitlyIcon.svelte +7 -0
  241. package/package/components/icons/BitlyIcon.svelte.d.ts +7 -0
  242. package/package/components/icons/BloggerIcon.svelte +7 -0
  243. package/package/components/icons/BloggerIcon.svelte.d.ts +7 -0
  244. package/package/components/icons/BlueskyIcon.svelte +7 -0
  245. package/package/components/icons/BlueskyIcon.svelte.d.ts +7 -0
  246. package/package/components/icons/BoxIcon.svelte +7 -0
  247. package/package/components/icons/BoxIcon.svelte.d.ts +7 -0
  248. package/package/components/icons/BrevoIcon.svelte +7 -0
  249. package/package/components/icons/BrevoIcon.svelte.d.ts +7 -0
  250. package/package/components/icons/BrexIcon.svelte +7 -0
  251. package/package/components/icons/BrexIcon.svelte.d.ts +7 -0
  252. package/package/components/icons/BrowserlessIcon.svelte +7 -0
  253. package/package/components/icons/BrowserlessIcon.svelte.d.ts +7 -0
  254. package/package/components/icons/BubbleIcon.svelte +11 -0
  255. package/package/components/icons/BubbleIcon.svelte.d.ts +7 -0
  256. package/package/components/icons/BuildkiteIcon.svelte +7 -0
  257. package/package/components/icons/BuildkiteIcon.svelte.d.ts +7 -0
  258. package/package/components/icons/CalcomIcon.svelte +1 -1
  259. package/package/components/icons/CalendlyIcon.svelte +7 -0
  260. package/package/components/icons/CalendlyIcon.svelte.d.ts +7 -0
  261. package/package/components/icons/CircleCiIcon.svelte +7 -0
  262. package/package/components/icons/CircleCiIcon.svelte.d.ts +7 -0
  263. package/package/components/icons/CiscoIcon.svelte +7 -0
  264. package/package/components/icons/CiscoIcon.svelte.d.ts +7 -0
  265. package/package/components/icons/ClearbitIcon.svelte +7 -0
  266. package/package/components/icons/ClearbitIcon.svelte.d.ts +7 -0
  267. package/package/components/icons/ClerkIcon.svelte +7 -0
  268. package/package/components/icons/ClerkIcon.svelte.d.ts +7 -0
  269. package/package/components/icons/CloseIcon.svelte +37 -0
  270. package/package/components/icons/CloseIcon.svelte.d.ts +7 -0
  271. package/package/components/icons/CloudinaryIcon.svelte +7 -0
  272. package/package/components/icons/CloudinaryIcon.svelte.d.ts +7 -0
  273. package/package/components/icons/CockroachDbIcon.svelte +7 -0
  274. package/package/components/icons/CockroachDbIcon.svelte.d.ts +7 -0
  275. package/package/components/icons/CodaIcon.svelte +7 -0
  276. package/package/components/icons/CodaIcon.svelte.d.ts +7 -0
  277. package/package/components/icons/CohereIcon.svelte +16 -0
  278. package/package/components/icons/CohereIcon.svelte.d.ts +7 -0
  279. package/package/components/icons/CoinMarketCapIcon.svelte +7 -0
  280. package/package/components/icons/CoinMarketCapIcon.svelte.d.ts +7 -0
  281. package/package/components/icons/CoinbaseIcon.svelte +7 -0
  282. package/package/components/icons/CoinbaseIcon.svelte.d.ts +7 -0
  283. package/package/components/icons/ConfluenceIcon.svelte +7 -0
  284. package/package/components/icons/ConfluenceIcon.svelte.d.ts +7 -0
  285. package/package/components/icons/ContentfulIcon.svelte +7 -0
  286. package/package/components/icons/ContentfulIcon.svelte.d.ts +7 -0
  287. package/package/components/icons/ConvertKitIcon.svelte +7 -0
  288. package/package/components/icons/ConvertKitIcon.svelte.d.ts +7 -0
  289. package/package/components/icons/DatoCmsIcon.svelte +7 -0
  290. package/package/components/icons/DatoCmsIcon.svelte.d.ts +7 -0
  291. package/package/components/icons/DeelIcon.svelte +7 -0
  292. package/package/components/icons/DeelIcon.svelte.d.ts +7 -0
  293. package/package/components/icons/DeepLIcon.svelte +7 -0
  294. package/package/components/icons/DeepLIcon.svelte.d.ts +7 -0
  295. package/package/components/icons/DigitalOceanIcon.svelte +7 -0
  296. package/package/components/icons/DigitalOceanIcon.svelte.d.ts +7 -0
  297. package/package/components/icons/DiscourseIcon.svelte +7 -0
  298. package/package/components/icons/DiscourseIcon.svelte.d.ts +7 -0
  299. package/package/components/icons/DocusignIcon.svelte +7 -0
  300. package/package/components/icons/DocusignIcon.svelte.d.ts +7 -0
  301. package/package/components/icons/DropboxIcon.svelte +7 -0
  302. package/package/components/icons/DropboxIcon.svelte.d.ts +7 -0
  303. package/package/components/icons/EdgeDbIcon.svelte +16 -20
  304. package/package/components/icons/EventbriteIcon.svelte +10 -0
  305. package/package/components/icons/EventbriteIcon.svelte.d.ts +7 -0
  306. package/package/components/icons/FigmaIcon.svelte +7 -0
  307. package/package/components/icons/FigmaIcon.svelte.d.ts +7 -0
  308. package/package/components/icons/FlyIcon.svelte +7 -0
  309. package/package/components/icons/FlyIcon.svelte.d.ts +7 -0
  310. package/package/components/icons/FreshdeskIcon.svelte +7 -0
  311. package/package/components/icons/FreshdeskIcon.svelte.d.ts +7 -0
  312. package/package/components/icons/FrontAppIcon.svelte +7 -0
  313. package/package/components/icons/FrontAppIcon.svelte.d.ts +7 -0
  314. package/package/components/icons/GhostCmsIcon.svelte +7 -0
  315. package/package/components/icons/GhostCmsIcon.svelte.d.ts +7 -0
  316. package/package/components/icons/GiphyIcon.svelte +7 -0
  317. package/package/components/icons/GiphyIcon.svelte.d.ts +7 -0
  318. package/package/components/icons/GitBookIcon.svelte +7 -0
  319. package/package/components/icons/GitBookIcon.svelte.d.ts +7 -0
  320. package/package/components/icons/GroqIcon.svelte +7 -0
  321. package/package/components/icons/GroqIcon.svelte.d.ts +7 -0
  322. package/package/components/icons/HoneybadgerIcon.svelte +7 -0
  323. package/package/components/icons/HoneybadgerIcon.svelte.d.ts +7 -0
  324. package/package/components/icons/HttpIcon.svelte +1 -0
  325. package/package/components/icons/IftttIcon.svelte +7 -0
  326. package/package/components/icons/IftttIcon.svelte.d.ts +7 -0
  327. package/package/components/icons/IntercomIcon.svelte +7 -0
  328. package/package/components/icons/IntercomIcon.svelte.d.ts +7 -0
  329. package/package/components/icons/JoomlaIcon.svelte +7 -0
  330. package/package/components/icons/JoomlaIcon.svelte.d.ts +7 -0
  331. package/package/components/icons/LineIcon.svelte +7 -0
  332. package/package/components/icons/LineIcon.svelte.d.ts +7 -0
  333. package/package/components/icons/LinearIcon.svelte +7 -0
  334. package/package/components/icons/LinearIcon.svelte.d.ts +7 -0
  335. package/package/components/icons/LinodeIcon.svelte +7 -0
  336. package/package/components/icons/LinodeIcon.svelte.d.ts +7 -0
  337. package/package/components/icons/LumaAiIcon.svelte +39 -0
  338. package/package/components/icons/LumaAiIcon.svelte.d.ts +7 -0
  339. package/package/components/icons/MSTeamsIcon.svelte +20 -38
  340. package/package/components/icons/MSTeamsIcon.svelte.d.ts +2 -0
  341. package/package/components/icons/MagentoIcon.svelte +7 -0
  342. package/package/components/icons/MagentoIcon.svelte.d.ts +7 -0
  343. package/package/components/icons/MailchimpIcon.svelte +25 -13
  344. package/package/components/icons/MandrillIcon.svelte +7 -0
  345. package/package/components/icons/MandrillIcon.svelte.d.ts +7 -0
  346. package/package/components/icons/MauticIcon.svelte +7 -0
  347. package/package/components/icons/MauticIcon.svelte.d.ts +7 -0
  348. package/package/components/icons/MediumIcon.svelte +7 -0
  349. package/package/components/icons/MediumIcon.svelte.d.ts +7 -0
  350. package/package/components/icons/MiroIcon.svelte +7 -0
  351. package/package/components/icons/MiroIcon.svelte.d.ts +7 -0
  352. package/package/components/icons/MistralIcon.svelte +7 -0
  353. package/package/components/icons/MistralIcon.svelte.d.ts +7 -0
  354. package/package/components/icons/MixpanelIcon.svelte +7 -0
  355. package/package/components/icons/MixpanelIcon.svelte.d.ts +7 -0
  356. package/package/components/icons/MondayIcon.svelte +7 -0
  357. package/package/components/icons/MondayIcon.svelte.d.ts +7 -0
  358. package/package/components/icons/NeonDbIcon.svelte +23 -0
  359. package/package/components/icons/NeonDbIcon.svelte.d.ts +7 -0
  360. package/package/components/icons/NetlifyIcon.svelte +7 -0
  361. package/package/components/icons/NetlifyIcon.svelte.d.ts +7 -0
  362. package/package/components/icons/OneSignalIcon.svelte +9 -0
  363. package/package/components/icons/OneSignalIcon.svelte.d.ts +7 -0
  364. package/package/components/icons/OpenWeatherIcon.svelte +7 -0
  365. package/package/components/icons/OpenWeatherIcon.svelte.d.ts +7 -0
  366. package/package/components/icons/PagerDutyIcon.svelte +7 -0
  367. package/package/components/icons/PagerDutyIcon.svelte.d.ts +7 -0
  368. package/package/components/icons/PandaDocIcon.svelte +7 -0
  369. package/package/components/icons/PandaDocIcon.svelte.d.ts +7 -0
  370. package/package/components/icons/PaypalIcon.svelte +7 -0
  371. package/package/components/icons/PaypalIcon.svelte.d.ts +7 -0
  372. package/package/components/icons/PersonioIcon.svelte +7 -0
  373. package/package/components/icons/PersonioIcon.svelte.d.ts +7 -0
  374. package/package/components/icons/PinterestIcon.svelte +7 -0
  375. package/package/components/icons/PinterestIcon.svelte.d.ts +7 -0
  376. package/package/components/icons/PipedriveIcon.svelte +11 -0
  377. package/package/components/icons/PipedriveIcon.svelte.d.ts +7 -0
  378. package/package/components/icons/PlanetScaleIcon.svelte +7 -0
  379. package/package/components/icons/PlanetScaleIcon.svelte.d.ts +7 -0
  380. package/package/components/icons/PostmarkIcon.svelte +7 -0
  381. package/package/components/icons/PostmarkIcon.svelte.d.ts +7 -0
  382. package/package/components/icons/PusherIcon.svelte +7 -0
  383. package/package/components/icons/PusherIcon.svelte.d.ts +7 -0
  384. package/package/components/icons/QuickbooksIcon.svelte +13 -1
  385. package/package/components/icons/RaindropIcon.svelte +27 -0
  386. package/package/components/icons/RaindropIcon.svelte.d.ts +7 -0
  387. package/package/components/icons/ReadwiseIcon.svelte +12 -0
  388. package/package/components/icons/ReadwiseIcon.svelte.d.ts +7 -0
  389. package/package/components/icons/RenderIcon.svelte +7 -0
  390. package/package/components/icons/RenderIcon.svelte.d.ts +7 -0
  391. package/package/components/icons/ReplicateIcon.svelte +7 -0
  392. package/package/components/icons/ReplicateIcon.svelte.d.ts +7 -0
  393. package/package/components/icons/ResendIcon.svelte +1 -1
  394. package/package/components/icons/RestIcon.svelte +1 -0
  395. package/package/components/icons/RingCentralIcon.svelte +7 -0
  396. package/package/components/icons/RingCentralIcon.svelte.d.ts +7 -0
  397. package/package/components/icons/RocketChatIcon.svelte +7 -0
  398. package/package/components/icons/RocketChatIcon.svelte.d.ts +7 -0
  399. package/package/components/icons/RunPodIcon.svelte +8 -0
  400. package/package/components/icons/RunPodIcon.svelte.d.ts +7 -0
  401. package/package/components/icons/RustIcon.svelte +74 -56
  402. package/package/components/icons/SalesforceIcon.svelte +7 -0
  403. package/package/components/icons/SalesforceIcon.svelte.d.ts +7 -0
  404. package/package/components/icons/SegmentIcon.svelte +7 -0
  405. package/package/components/icons/SegmentIcon.svelte.d.ts +7 -0
  406. package/package/components/icons/SentryIcon.svelte +7 -0
  407. package/package/components/icons/SentryIcon.svelte.d.ts +7 -0
  408. package/package/components/icons/ServiceNowIcon.svelte +7 -0
  409. package/package/components/icons/ServiceNowIcon.svelte.d.ts +7 -0
  410. package/package/components/icons/ShortcutIcon.svelte +7 -0
  411. package/package/components/icons/ShortcutIcon.svelte.d.ts +7 -0
  412. package/package/components/icons/SigNozIcon.svelte +8 -0
  413. package/package/components/icons/SigNozIcon.svelte.d.ts +7 -0
  414. package/package/components/icons/SmartsheetIcon.svelte +7 -0
  415. package/package/components/icons/SmartsheetIcon.svelte.d.ts +7 -0
  416. package/package/components/icons/SpeechifyIcon.svelte +7 -0
  417. package/package/components/icons/SpeechifyIcon.svelte.d.ts +7 -0
  418. package/package/components/icons/SplitwiseIcon.svelte +7 -0
  419. package/package/components/icons/SplitwiseIcon.svelte.d.ts +7 -0
  420. package/package/components/icons/StravaIcon.svelte +7 -0
  421. package/package/components/icons/StravaIcon.svelte.d.ts +7 -0
  422. package/package/components/icons/TallyIcon.svelte +7 -0
  423. package/package/components/icons/TallyIcon.svelte.d.ts +7 -0
  424. package/package/components/icons/TelnyxIcon.svelte +19 -0
  425. package/package/components/icons/TelnyxIcon.svelte.d.ts +7 -0
  426. package/package/components/icons/ThreadsIcon.svelte +7 -0
  427. package/package/components/icons/ThreadsIcon.svelte.d.ts +7 -0
  428. package/package/components/icons/TodoistIcon.svelte +7 -0
  429. package/package/components/icons/TodoistIcon.svelte.d.ts +7 -0
  430. package/package/components/icons/TogetherAiIcon.svelte +23 -0
  431. package/package/components/icons/TogetherAiIcon.svelte.d.ts +7 -0
  432. package/package/components/icons/TrelloIcon.svelte +22 -1
  433. package/package/components/icons/TursoIcon.svelte +7 -0
  434. package/package/components/icons/TursoIcon.svelte.d.ts +7 -0
  435. package/package/components/icons/TwitchIcon.svelte +7 -0
  436. package/package/components/icons/TwitchIcon.svelte.d.ts +7 -0
  437. package/package/components/icons/TwitterIcon.svelte +7 -0
  438. package/package/components/icons/TwitterIcon.svelte.d.ts +7 -0
  439. package/package/components/icons/TypeformIcon.svelte +1 -1
  440. package/package/components/icons/VercelIcon.svelte +7 -0
  441. package/package/components/icons/VercelIcon.svelte.d.ts +7 -0
  442. package/package/components/icons/WebflowIcon.svelte +7 -0
  443. package/package/components/icons/WebflowIcon.svelte.d.ts +7 -0
  444. package/package/components/icons/WooCommerceIcon.svelte +7 -0
  445. package/package/components/icons/WooCommerceIcon.svelte.d.ts +7 -0
  446. package/package/components/icons/WordpressIcon.svelte +7 -0
  447. package/package/components/icons/WordpressIcon.svelte.d.ts +7 -0
  448. package/package/components/icons/XataIcon.svelte +13 -0
  449. package/package/components/icons/XataIcon.svelte.d.ts +7 -0
  450. package/package/components/icons/YelpIcon.svelte +7 -0
  451. package/package/components/icons/YelpIcon.svelte.d.ts +7 -0
  452. package/package/components/icons/YnabIcon.svelte +7 -0
  453. package/package/components/icons/YnabIcon.svelte.d.ts +7 -0
  454. package/package/components/icons/YoutubeIcon.svelte +7 -0
  455. package/package/components/icons/YoutubeIcon.svelte.d.ts +7 -0
  456. package/package/components/icons/ZendeskIcon.svelte +1 -1
  457. package/package/components/icons/ZeroTierIcon.svelte +7 -0
  458. package/package/components/icons/ZeroTierIcon.svelte.d.ts +7 -0
  459. package/package/components/icons/ZoomIcon.svelte +7 -0
  460. package/package/components/icons/ZoomIcon.svelte.d.ts +7 -0
  461. package/package/components/icons/index.d.ts +111 -1
  462. package/package/components/icons/index.js +225 -2
  463. package/package/components/instanceSettings/GhesAppSettings.svelte +161 -0
  464. package/package/components/instanceSettings/GhesAppSettings.svelte.d.ts +8 -0
  465. package/package/components/instanceSettings/IndexerMemorySettings.svelte +19 -8
  466. package/package/components/instanceSettings/InstanceAISettings.svelte +132 -0
  467. package/package/components/instanceSettings/InstanceAISettings.svelte.d.ts +10 -0
  468. package/package/components/instanceSettings/WorkspaceRegistries.svelte +293 -0
  469. package/package/components/instanceSettings/WorkspaceRegistries.svelte.d.ts +8 -0
  470. package/package/components/instanceSettings/WsConnectivityTest.svelte +177 -0
  471. package/package/components/instanceSettings/WsConnectivityTest.svelte.d.ts +7 -0
  472. package/package/components/instanceSettings.d.ts +3 -1
  473. package/package/components/instanceSettings.js +92 -2
  474. package/package/components/mcp/McpScopeSelector.svelte +408 -0
  475. package/package/components/mcp/McpScopeSelector.svelte.d.ts +7 -0
  476. package/package/components/meltComponents/Popover.svelte +0 -1
  477. package/package/components/raw_apps/RawAppPreview.svelte +6 -2
  478. package/package/components/recording/FlowRecordingReplay.svelte +94 -52
  479. package/package/components/recording/FlowRecordingReplay.svelte.d.ts +10 -1
  480. package/package/components/recording/ScriptRecordingReplay.svelte +139 -76
  481. package/package/components/recording/ScriptRecordingReplay.svelte.d.ts +10 -1
  482. package/package/components/runs/JobRunsPreview.svelte +8 -1
  483. package/package/components/runs/TimeframeSelect.svelte +0 -1
  484. package/package/components/schema/JobSchemaPicker.svelte +8 -2
  485. package/package/components/schema/JobSchemaPicker.svelte.d.ts +1 -0
  486. package/package/components/schema/SchemaFormDND.svelte +15 -3
  487. package/package/components/scriptEditor/LogPanel.svelte +78 -68
  488. package/package/components/script_builder.d.ts +1 -1
  489. package/package/components/scripts/CreateActionsScript.svelte +3 -3
  490. package/package/components/scripts/WacExportDrawer.svelte +127 -0
  491. package/package/components/scripts/WacExportDrawer.svelte.d.ts +8 -0
  492. package/package/components/scripts/scriptStore.svelte.d.ts +2 -0
  493. package/package/components/scripts/scriptStore.svelte.js +2 -0
  494. package/package/components/select/SelectDropdown.svelte +1 -1
  495. package/package/components/settings/AIPromptsModal.svelte +5 -2
  496. package/package/components/settings/AIPromptsModal.svelte.d.ts +1 -1
  497. package/package/components/settings/CloudQuotas.svelte +152 -0
  498. package/package/components/settings/CloudQuotas.svelte.d.ts +3 -0
  499. package/package/components/settings/CreateToken.svelte +15 -430
  500. package/package/components/settings/Trashbin.svelte +248 -0
  501. package/package/components/settings/Trashbin.svelte.d.ts +3 -0
  502. package/package/components/sidebar/MultiplayerMenu.svelte +14 -4
  503. package/package/components/triggers/DeleteTriggerButton.svelte +1 -0
  504. package/package/components/triggers/PermissionedAsLine.svelte +66 -0
  505. package/package/components/triggers/PermissionedAsLine.svelte.d.ts +9 -0
  506. package/package/components/triggers/TriggerEditorToolbar.svelte +2 -2
  507. package/package/components/triggers/TriggerTokens.svelte +3 -3
  508. package/package/components/triggers/email/EmailTriggerEditorInner.svelte +19 -1
  509. package/package/components/triggers/email/utils.js +3 -1
  510. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +24 -4
  511. package/package/components/triggers/gcp/utils.js +2 -0
  512. package/package/components/triggers/http/RouteEditorConfigSection.svelte +22 -3
  513. package/package/components/triggers/http/RouteEditorInner.svelte +28 -6
  514. package/package/components/triggers/http/RoutesGenerator.svelte +13 -2
  515. package/package/components/triggers/http/utils.js +3 -1
  516. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +23 -6
  517. package/package/components/triggers/kafka/utils.js +3 -1
  518. package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +27 -5
  519. package/package/components/triggers/mqtt/utils.js +2 -0
  520. package/package/components/triggers/native/NativeTriggerEditor.svelte +23 -1
  521. package/package/components/triggers/native/NativeTriggerTable.svelte +14 -3
  522. package/package/components/triggers/native/utils.js +3 -2
  523. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +19 -1
  524. package/package/components/triggers/nats/utils.js +2 -0
  525. package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +19 -1
  526. package/package/components/triggers/postgres/utils.js +2 -0
  527. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +29 -7
  528. package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +19 -1
  529. package/package/components/triggers/sqs/utils.js +2 -0
  530. package/package/components/triggers/utils.js +9 -2
  531. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +24 -4
  532. package/package/components/triggers/websocket/utils.js +3 -1
  533. package/package/components/workspaceSettings/AISettings.svelte +342 -214
  534. package/package/components/workspaceSettings/AISettings.svelte.d.ts +18 -10
  535. package/package/components/workspaceSettings/CreateWorkspace.svelte +304 -196
  536. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +1 -2
  537. package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
  538. package/package/components/workspaceSettings/InstanceFallbackSettings.svelte +75 -0
  539. package/package/components/workspaceSettings/InstanceFallbackSettings.svelte.d.ts +9 -0
  540. package/package/components/workspaceSettings/StorageSettings.svelte +4 -35
  541. package/package/components/workspaceSettings/VolumeStorageSettings.svelte +80 -0
  542. package/package/components/workspaceSettings/VolumeStorageSettings.svelte.d.ts +10 -0
  543. package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +4 -1
  544. package/package/forLater.js +4 -0
  545. package/package/gen/core/OpenAPI.js +1 -1
  546. package/package/gen/schemas.gen.d.ts +294 -94
  547. package/package/gen/schemas.gen.js +294 -94
  548. package/package/gen/services.gen.d.ts +121 -5
  549. package/package/gen/services.gen.js +237 -5
  550. package/package/gen/types.gen.d.ts +715 -91
  551. package/package/githubApp.js +19 -1
  552. package/package/hubPaths.json +8 -4
  553. package/package/infer.d.ts +1 -1
  554. package/package/infer.js +5 -1
  555. package/package/logoutRedirect.d.ts +1 -0
  556. package/package/logoutRedirect.js +24 -0
  557. package/package/script_helpers.d.ts +8 -2
  558. package/package/script_helpers.js +15 -1
  559. package/package/services/trashService.d.ts +28 -0
  560. package/package/services/trashService.js +47 -0
  561. package/package/stores.d.ts +1 -0
  562. package/package/stores.js +1 -0
  563. package/package/system_prompts/index.d.ts +1 -0
  564. package/package/system_prompts/index.js +7 -0
  565. package/package/system_prompts/prompts.d.ts +7 -5
  566. package/package/system_prompts/prompts.js +182 -11
  567. package/package/templates/wac_python.py.template +42 -0
  568. package/package/templates/wac_typescript.ts.template +48 -0
  569. package/package/utils_deployable.d.ts +22 -21
  570. package/package/utils_deployable.js +58 -25
  571. package/package/utils_workspace_deploy.d.ts +15 -4
  572. package/package/utils_workspace_deploy.js +19 -15
  573. package/package/wsUrl.d.ts +1 -0
  574. package/package/wsUrl.js +15 -0
  575. package/package.json +13 -5
  576. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
  577. package/dist/sharedUtils/base.d.ts +0 -1
  578. package/dist/sharedUtils/cloud.d.ts +0 -1
  579. package/dist/sharedUtils/common.d.ts +0 -111
  580. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
  581. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
  582. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
  583. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
  584. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
  585. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
  586. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
  587. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
  588. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
  589. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
  590. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
  591. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
  592. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
  593. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
  594. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
  595. package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
  596. package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
  597. package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
  598. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
  599. package/dist/sharedUtils/components/apps/types.d.ts +0 -274
  600. package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
  601. package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
  602. package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
  603. package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
  604. package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
  605. package/dist/sharedUtils/components/common/index.d.ts +0 -24
  606. package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
  607. package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
  608. package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
  609. package/dist/sharedUtils/components/ducklake.d.ts +0 -1
  610. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
  611. package/dist/sharedUtils/components/icons/index.d.ts +0 -101
  612. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
  613. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
  614. package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
  615. package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
  616. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
  617. package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
  618. package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +0 -2
  619. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
  620. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
  621. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
  622. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
  623. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
  624. package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
  625. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
  626. package/dist/sharedUtils/components/triggers.d.ts +0 -20
  627. package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
  628. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
  629. package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
  630. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
  631. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
  632. package/dist/sharedUtils/gen/core/request.d.ts +0 -29
  633. package/dist/sharedUtils/gen/index.d.ts +0 -6
  634. package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
  635. package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
  636. package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
  637. package/dist/sharedUtils/history.svelte.d.ts +0 -9
  638. package/dist/sharedUtils/hub.d.ts +0 -49
  639. package/dist/sharedUtils/jsr.json +0 -6
  640. package/dist/sharedUtils/lib.d.ts +0 -5
  641. package/dist/sharedUtils/lib.es.js +0 -1588
  642. package/dist/sharedUtils/package.json +0 -12
  643. package/dist/sharedUtils/schema.d.ts +0 -3
  644. package/dist/sharedUtils/stores.d.ts +0 -97
  645. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
  646. package/dist/sharedUtils/toast.d.ts +0 -8
  647. package/dist/sharedUtils/utils.d.ts +0 -265
  648. package/package/components/graph/NodeContextMenu.svelte +0 -36
  649. package/package/components/graph/NodeContextMenu.svelte.d.ts +0 -8
  650. package/package/svelte5Utils.svelte.d.ts +0 -184
@@ -1,4 +1,4 @@
1
- <script lang="ts">import { BROWSER } from 'esm-env';
1
+ <script lang="ts">import { buildWsUrl } from '../wsUrl';
2
2
  import { JobService } from '../gen';
3
3
  import { enterpriseLicense, userStore, workspaceStore } from '../stores';
4
4
  import { copyToClipboard, emptySchema, getLocalSetting, sendUserToast, storeLocalSetting } from '../utils';
@@ -16,11 +16,13 @@ import SplitPanesWrapper from './splitPanes/SplitPanesWrapper.svelte';
16
16
  import WindmillIcon from './icons/WindmillIcon.svelte';
17
17
  import * as Y from 'yjs';
18
18
  import { scriptLangToEditorLang } from '../scripts';
19
+ import { langToExt } from '../editorLangUtils';
19
20
  import { WebsocketProvider } from 'y-websocket';
20
21
  import Modal from './common/modal/Modal.svelte';
22
+ import Popover from './meltComponents/Popover.svelte';
21
23
  import DiffEditor from './DiffEditor.svelte';
22
- import { AlertTriangle, Bug, Copy, CornerDownLeft, Disc, Download, ExternalLink, Github, GitBranch, Play, PlayIcon, Terminal, WandSparkles } from 'lucide-svelte';
23
- import { DebugToolbar, DebugPanel, DebugConsole, getDAPClient, debugState, resetDAPClient, getDebugServerUrl, isDebuggable, getDebugFileExtension, fetchContextualVariables, signDebugRequest, getDebugErrorMessage } from './debug';
24
+ import { AlertTriangle, Bug, Copy, CornerDownLeft, Disc, Download, ExternalLink, Github, GitBranch, Play, PlayIcon, Plus, Terminal, Pencil, WandSparkles, X } from 'lucide-svelte';
25
+ import { DebugToolbar, DebugPanel, DebugConsole, getDAPClient, debugState, resetDAPClient, getDebugServerUrl, isDebuggable, getDebugFileExtension, fetchContextualVariables, signDebugRequest, signMultiplayerRequest, getDebugErrorMessage } from './debug';
24
26
  import { SvelteSet } from 'svelte/reactivity';
25
27
  import { setLicense } from '../enterpriseUtils';
26
28
  import Tabs from './common/tabs/Tabs.svelte';
@@ -51,10 +53,287 @@ import { resource, watch } from 'runed';
51
53
  import { createScriptRecording } from './recording/scriptRecording.svelte';
52
54
  import { setActiveRecording } from './recording/flowRecording.svelte';
53
55
  import DropdownV2 from './DropdownV2.svelte';
54
- let { schema = $bindable(), code = $bindable(), path, lang, kind = undefined, template = 'script', tag, fixedOverflowWidgets = true, noSyncFromGithub = false, editor = $bindable(undefined), diffEditor = $bindable(undefined), collabMode = false, edit = true, noHistory = false, saveToWorkspace = false, watchChanges = false, customUi = undefined, args = $bindable(), selectedTab = $bindable('main'), hasPreprocessor = $bindable(false), captureTable = $bindable(undefined), showCaptures = true, stablePathForCaptures = '', lastSavedCode = undefined, lastDeployedCode = undefined, disableAi = false, assets = $bindable(), editorBarRight, enablePreprocessorSnippet = false } = $props();
56
+ let { schema = $bindable(), code = $bindable(), path, lang, kind = undefined, template = 'script', tag, fixedOverflowWidgets = true, noSyncFromGithub = false, editor = $bindable(undefined), diffEditor = $bindable(undefined), collabMode = false, edit = true, noHistory = false, saveToWorkspace = false, watchChanges = false, customUi = undefined, args = $bindable(), selectedTab = $bindable('main'), hasPreprocessor = $bindable(false), captureTable = $bindable(undefined), showCaptures = true, stablePathForCaptures = '', lastSavedCode = undefined, lastDeployedCode = undefined, disableAi = false, assets = $bindable(), modules = $bindable(undefined), editorBarRight, enablePreprocessorSnippet = false } = $props();
55
57
  let initialArgs = structuredClone($state.snapshot(args));
56
58
  let jsonView = $state(false);
57
59
  let schemaHeight = $state(0);
60
+ // Module tab state
61
+ let activeModuleTab = $state(null);
62
+ // Per-module test panel state (args + schema), persisted across tab switches
63
+ let moduleTestState = $state({});
64
+ let testPanelArgs = $state({});
65
+ let testPanelSchema = $state(emptySchema());
66
+ // editorCode is what the editor shows; code always holds the main script content
67
+ let editorCode = $state(code);
68
+ // Sync editorCode when code changes externally (template reset, copilot, etc.)
69
+ let lastSyncedCode = code;
70
+ $effect.pre(() => {
71
+ if (activeModuleTab === null && code !== lastSyncedCode) {
72
+ editorCode = code;
73
+ lastSyncedCode = code;
74
+ }
75
+ });
76
+ function switchToModule(modulePath) {
77
+ if (activeModuleTab !== null && modules && activeModuleTab !== modulePath) {
78
+ // Switching from another module: save its content and test state
79
+ modules[activeModuleTab] = { ...modules[activeModuleTab], content: editorCode };
80
+ moduleTestState[activeModuleTab] = { args: testPanelArgs, schema: testPanelSchema };
81
+ }
82
+ if (modules && modules[modulePath]) {
83
+ activeModuleTab = modulePath;
84
+ editorCode = modules[modulePath].content;
85
+ editor?.setCode(editorCode);
86
+ // Restore or initialize test state for the new module
87
+ if (moduleTestState[modulePath]) {
88
+ testPanelArgs = moduleTestState[modulePath].args;
89
+ testPanelSchema = moduleTestState[modulePath].schema;
90
+ }
91
+ else {
92
+ testPanelArgs = {};
93
+ testPanelSchema = emptySchema();
94
+ inferModuleSchema();
95
+ }
96
+ }
97
+ }
98
+ function switchToMain() {
99
+ if (activeModuleTab !== null && modules) {
100
+ // Save current module content and test state
101
+ modules[activeModuleTab] = { ...modules[activeModuleTab], content: editorCode };
102
+ moduleTestState[activeModuleTab] = { args: testPanelArgs, schema: testPanelSchema };
103
+ }
104
+ activeModuleTab = null;
105
+ editorCode = code;
106
+ lastSyncedCode = code;
107
+ editor?.setCode(editorCode);
108
+ }
109
+ let effectiveLang = $derived(activeModuleTab && modules?.[activeModuleTab]
110
+ ? modules[activeModuleTab].language
111
+ : lang);
112
+ let isWacV2 = $derived.by(() => {
113
+ const mainCode = code;
114
+ const isTsWac = mainCode.includes('windmill-client') &&
115
+ mainCode.includes('workflow') &&
116
+ mainCode.includes('task');
117
+ const isPyWac = (mainCode.includes('import wmill') || mainCode.includes('from wmill')) &&
118
+ mainCode.includes('workflow') &&
119
+ mainCode.includes('task');
120
+ return isTsWac || isPyWac;
121
+ });
122
+ let supportsModules = $derived((lang === 'bun' || lang === 'python3') && isWacV2);
123
+ let mainFileName = $derived('script.' + langToExt(scriptLangToEditorLang(lang)));
124
+ let modulePathInput = $state('');
125
+ let showAddModulePopover = $state(false);
126
+ let modulePathInputEl = $state(undefined);
127
+ let modulePathError = $state('');
128
+ let renameModuleInput = $state('');
129
+ let renameModuleError = $state('');
130
+ let renameModuleInputEl = $state(undefined);
131
+ const ALL_MODULE_EXTENSIONS = {
132
+ '.ts': 'bun',
133
+ '.py': 'python3',
134
+ '.go': 'go',
135
+ '.sh': 'bash',
136
+ '.ps1': 'powershell',
137
+ '.sql': 'postgresql',
138
+ '.gql': 'graphql',
139
+ '.php': 'php',
140
+ '.rs': 'rust',
141
+ '.yml': 'ansible',
142
+ '.cs': 'csharp',
143
+ '.nu': 'nu',
144
+ '.java': 'java',
145
+ '.rb': 'ruby'
146
+ };
147
+ /** Map main script language to allowed module file extensions. */
148
+ const LANG_MODULE_EXTENSIONS = {
149
+ python3: ['.py'],
150
+ bun: ['.ts'],
151
+ deno: ['.ts'],
152
+ nativets: ['.ts'],
153
+ go: ['.go'],
154
+ bash: ['.sh'],
155
+ powershell: ['.ps1'],
156
+ postgresql: ['.sql'],
157
+ mysql: ['.sql'],
158
+ bigquery: ['.sql'],
159
+ snowflake: ['.sql'],
160
+ mssql: ['.sql'],
161
+ oracledb: ['.sql'],
162
+ duckdb: ['.sql'],
163
+ graphql: ['.gql'],
164
+ php: ['.php'],
165
+ rust: ['.rs'],
166
+ ansible: ['.yml'],
167
+ csharp: ['.cs'],
168
+ nu: ['.nu'],
169
+ java: ['.java'],
170
+ ruby: ['.rb'],
171
+ bunnative: ['.ts']
172
+ };
173
+ let allowedModuleExtensions = $derived(lang
174
+ ? (LANG_MODULE_EXTENSIONS[lang] ?? Object.keys(ALL_MODULE_EXTENSIONS))
175
+ : Object.keys(ALL_MODULE_EXTENSIONS));
176
+ function inferModuleLang(filePath) {
177
+ for (const [ext, moduleLang] of Object.entries(ALL_MODULE_EXTENSIONS)) {
178
+ if (filePath.endsWith(ext))
179
+ return moduleLang;
180
+ }
181
+ return undefined;
182
+ }
183
+ function getModuleDefaultContent(filePath) {
184
+ if (filePath.endsWith('.py')) {
185
+ return `def hello() -> str:\n return "world"\n`;
186
+ }
187
+ else if (filePath.endsWith('.ts')) {
188
+ return `export function hello(): string {\n return "world"\n}\n`;
189
+ }
190
+ else if (filePath.endsWith('.go')) {
191
+ return `package inner\n\nfunc Hello() string {\n\treturn "world"\n}\n`;
192
+ }
193
+ else if (filePath.endsWith('.sh')) {
194
+ return `#!/bin/bash\necho "world"\n`;
195
+ }
196
+ else if (filePath.endsWith('.ps1')) {
197
+ return `function Hello {\n return "world"\n}\n`;
198
+ }
199
+ else if (filePath.endsWith('.sql')) {
200
+ return `SELECT 'world' as result;\n`;
201
+ }
202
+ else if (filePath.endsWith('.gql')) {
203
+ return `query Hello {\n hello\n}\n`;
204
+ }
205
+ else if (filePath.endsWith('.php')) {
206
+ return `<?php\nfunction hello(): string {\n return "world";\n}\n`;
207
+ }
208
+ else if (filePath.endsWith('.rs')) {
209
+ return `pub fn hello() -> String {\n "world".to_string()\n}\n`;
210
+ }
211
+ else if (filePath.endsWith('.yml')) {
212
+ return `---\n- name: Hello\n debug:\n msg: "world"\n`;
213
+ }
214
+ else if (filePath.endsWith('.cs')) {
215
+ return `public static string Hello() {\n return "world";\n}\n`;
216
+ }
217
+ else if (filePath.endsWith('.nu')) {
218
+ return `def hello [] {\n "world"\n}\n`;
219
+ }
220
+ else if (filePath.endsWith('.java')) {
221
+ return `public class Helper {\n public static String hello() {\n return "world";\n }\n}\n`;
222
+ }
223
+ else if (filePath.endsWith('.rb')) {
224
+ return `def hello\n "world"\nend\n`;
225
+ }
226
+ return '';
227
+ }
228
+ function validateModulePath(path) {
229
+ if (!path.trim())
230
+ return '';
231
+ const moduleLang = inferModuleLang(path);
232
+ if (!moduleLang) {
233
+ const exts = allowedModuleExtensions.join(', ');
234
+ return `File must end with a supported extension: ${exts}`;
235
+ }
236
+ const matchedExt = allowedModuleExtensions.find((ext) => path.endsWith(ext));
237
+ if (!matchedExt) {
238
+ const exts = allowedModuleExtensions.join(', ');
239
+ return `File must end with a supported extension for this language: ${exts}`;
240
+ }
241
+ if (modules?.[path.trim()]) {
242
+ return `Module ${path.trim()} already exists`;
243
+ }
244
+ return '';
245
+ }
246
+ function addModule() {
247
+ const modulePath = modulePathInput.trim();
248
+ if (!modulePath)
249
+ return;
250
+ const error = validateModulePath(modulePath);
251
+ if (error) {
252
+ modulePathError = error;
253
+ return;
254
+ }
255
+ if (!modules) {
256
+ modules = {};
257
+ }
258
+ modules[modulePath] = {
259
+ content: getModuleDefaultContent(modulePath),
260
+ language: inferModuleLang(modulePath)
261
+ };
262
+ modulePathInput = '';
263
+ modulePathError = '';
264
+ showAddModulePopover = false;
265
+ switchToModule(modulePath);
266
+ }
267
+ function removeModule(modulePath) {
268
+ if (!modules)
269
+ return;
270
+ if (activeModuleTab === modulePath) {
271
+ switchToMain();
272
+ }
273
+ delete modules[modulePath];
274
+ delete moduleTestState[modulePath];
275
+ modules = { ...modules };
276
+ }
277
+ function validateRenameModulePath(newPath, oldPath) {
278
+ if (!newPath.trim())
279
+ return '';
280
+ const moduleLang = inferModuleLang(newPath);
281
+ if (!moduleLang) {
282
+ const exts = allowedModuleExtensions.join(', ');
283
+ return `File must end with a supported extension: ${exts}`;
284
+ }
285
+ const matchedExt = allowedModuleExtensions.find((ext) => newPath.endsWith(ext));
286
+ if (!matchedExt) {
287
+ const exts = allowedModuleExtensions.join(', ');
288
+ return `File must end with a supported extension for this language: ${exts}`;
289
+ }
290
+ if (newPath.trim() !== oldPath && modules?.[newPath.trim()]) {
291
+ return `Module ${newPath.trim()} already exists`;
292
+ }
293
+ return '';
294
+ }
295
+ function renameModule(oldPath) {
296
+ const newPath = renameModuleInput.trim();
297
+ if (!newPath || newPath === oldPath) {
298
+ return;
299
+ }
300
+ const error = validateRenameModulePath(newPath, oldPath);
301
+ if (error) {
302
+ renameModuleError = error;
303
+ return;
304
+ }
305
+ if (!modules)
306
+ return;
307
+ const mod = modules[oldPath];
308
+ const newLang = inferModuleLang(newPath);
309
+ delete modules[oldPath];
310
+ modules[newPath] = { ...mod, language: newLang ?? mod.language };
311
+ modules = { ...modules };
312
+ if (moduleTestState[oldPath]) {
313
+ moduleTestState[newPath] = moduleTestState[oldPath];
314
+ delete moduleTestState[oldPath];
315
+ }
316
+ if (activeModuleTab === oldPath) {
317
+ activeModuleTab = newPath;
318
+ }
319
+ renameModuleInput = '';
320
+ renameModuleError = '';
321
+ }
322
+ /** Save the active module tab's editor content back into the modules map (no UI side-effects). */
323
+ function flushModuleContent() {
324
+ if (activeModuleTab !== null && modules) {
325
+ modules[activeModuleTab] = { ...modules[activeModuleTab], content: editorCode };
326
+ }
327
+ }
328
+ /** Flush module content and reset the editor back to the main script tab. */
329
+ export function flushModuleState() {
330
+ if (activeModuleTab !== null && modules) {
331
+ flushModuleContent();
332
+ moduleTestState[activeModuleTab] = { args: testPanelArgs, schema: testPanelSchema };
333
+ activeModuleTab = null;
334
+ editorCode = code;
335
+ }
336
+ }
58
337
  $effect.pre(() => {
59
338
  if (schema == undefined) {
60
339
  schema = emptySchema();
@@ -188,12 +467,23 @@ export function setArgs(nargs) {
188
467
  args = nargs;
189
468
  }
190
469
  export async function runTest() {
470
+ // Discard any previous recording when running a normal test
471
+ if (!scriptRecording.active) {
472
+ lastRecording = undefined;
473
+ }
191
474
  // Not defined if JobProgressBar not loaded
192
475
  jobProgressBar?.reset();
476
+ // Flush module edits back to modules map before running preview
477
+ flushModuleContent();
478
+ const testCode = activeModuleTab !== null ? editorCode : code;
479
+ const testLang = activeModuleTab !== null ? effectiveLang : lang;
480
+ const testArgs = activeModuleTab !== null
481
+ ? testPanelArgs
482
+ : selectedTab === 'preprocessor' || kind === 'preprocessor'
483
+ ? { _ENTRYPOINT_OVERRIDE: 'preprocessor', ...(args ?? {}) }
484
+ : (args ?? {});
193
485
  //@ts-ignore
194
- let job = await jobLoader.runPreview(path, code, lang, selectedTab === 'preprocessor' || kind === 'preprocessor'
195
- ? { _ENTRYPOINT_OVERRIDE: 'preprocessor', ...(args ?? {}) }
196
- : (args ?? {}), tag, undefined, undefined, {
486
+ let job = await jobLoader.runPreview(path, testCode, testLang, testArgs, tag, undefined, undefined, {
197
487
  done(_x) {
198
488
  if (scriptRecording.active) {
199
489
  lastRecording = scriptRecording.stop();
@@ -208,7 +498,7 @@ export async function runTest() {
208
498
  }
209
499
  console.error(error);
210
500
  }
211
- });
501
+ }, undefined, activeModuleTab !== null ? undefined : modules);
212
502
  logPanel?.setFocusToLogs();
213
503
  return job;
214
504
  }
@@ -241,8 +531,7 @@ export async function inferSchema(code, { nlang, resetArgs = false, applyInitial
241
531
  }
242
532
  else {
243
533
  hasPreprocessor =
244
- (selectedTab === 'preprocessor' ? !result?.no_main_func : result?.has_preprocessor) ??
245
- false;
534
+ (selectedTab === 'preprocessor' ? !result?.auto_kind : result?.has_preprocessor) ?? false;
246
535
  if (!hasPreprocessor && selectedTab === 'preprocessor') {
247
536
  selectedTab = 'main';
248
537
  }
@@ -261,6 +550,17 @@ export async function inferSchema(code, { nlang, resetArgs = false, applyInitial
261
550
  validCode = false;
262
551
  }
263
552
  }
553
+ async function inferModuleSchema() {
554
+ if (activeModuleTab === null)
555
+ return;
556
+ try {
557
+ await inferArgs(effectiveLang, editorCode, testPanelSchema);
558
+ moduleTestState[activeModuleTab] = { args: testPanelArgs, schema: testPanelSchema };
559
+ }
560
+ catch (e) {
561
+ // Module code may be in-progress; silently ignore
562
+ }
563
+ }
264
564
  let gitRepoResourcePickerOpen = $state(false);
265
565
  let commitHashForGitRepo = $derived(ansibleAlternativeExecutionMode?.commit);
266
566
  // Check if delegate_to_git_repo exists in the code
@@ -587,13 +887,21 @@ export async function setCollaborationMode() {
587
887
  ]);
588
888
  return;
589
889
  }
890
+ let token;
891
+ try {
892
+ token = await signMultiplayerRequest($workspaceStore ?? '');
893
+ }
894
+ catch (e) {
895
+ console.error('Failed to sign multiplayer request:', e);
896
+ sendUserToast('Failed to authorize multiplayer session', true);
897
+ return;
898
+ }
590
899
  const ydoc = new Y.Doc();
591
900
  if (wsProvider) {
592
901
  wsProvider.destroy();
593
902
  }
594
903
  let yContentInit = ydoc.getText('content');
595
- const wsProtocol = BROWSER && window.location.protocol == 'https:' ? 'wss' : 'ws';
596
- wsProvider = new WebsocketProvider(`${wsProtocol}://${window.location.host}/ws_mp/`, $workspaceStore + '/' + (path ?? 'no-room-name'), ydoc, { connect: false });
904
+ wsProvider = new WebsocketProvider(buildWsUrl('/ws_mp/'), $workspaceStore + '/' + (path ?? 'no-room-name'), ydoc, { connect: false, params: { token } });
597
905
  wsProvider.on('sync', (isSynced) => {
598
906
  if (isSynced && yContentInit?.toJSON() == '') {
599
907
  showCollabPopup = true;
@@ -655,7 +963,11 @@ $effect(() => {
655
963
  !hasPreprocessor && (selectedTab = 'main');
656
964
  });
657
965
  $effect(() => {
658
- selectedTab && code && untrack(() => inferSchema(code));
966
+ // Only depend on selectedTab (preprocessor main toggle).
967
+ // Code changes are handled by the editor on:change handler and
968
+ // explicit inferSchema calls (initContent, onMount), so we read
969
+ // `code` inside untrack to avoid a redundant double-inference race.
970
+ selectedTab && untrack(() => code && inferSchema(code));
659
971
  });
660
972
  let argsRender = $state(0);
661
973
  export async function updateArgs(newArgs) {
@@ -967,16 +1279,7 @@ $effect(() => {
967
1279
  displayName: 'Test & record',
968
1280
  icon: Disc,
969
1281
  action: () => recordAndTest()
970
- },
971
- ...(lastRecording
972
- ? [
973
- {
974
- displayName: 'Download recording',
975
- icon: Download,
976
- action: () => downloadRecording()
977
- }
978
- ]
979
- : [])
1282
+ }
980
1283
  ]}
981
1284
  />
982
1285
  </div>
@@ -995,7 +1298,11 @@ $effect(() => {
995
1298
  <JsonInputs
996
1299
  on:select={(e) => {
997
1300
  if (e.detail) {
998
- args = e.detail
1301
+ if (activeModuleTab !== null) {
1302
+ testPanelArgs = e.detail
1303
+ } else {
1304
+ args = e.detail
1305
+ }
999
1306
  }
1000
1307
  }}
1001
1308
  updateOnBlur={false}
@@ -1006,20 +1313,37 @@ $effect(() => {
1006
1313
  <div class="px-4">
1007
1314
  <div class="break-words relative font-sans" bind:clientHeight={schemaHeight}>
1008
1315
  {#key argsRender}
1009
- <SchemaForm
1010
- helperScript={{
1011
- source: 'inline',
1012
- code,
1013
- //@ts-ignore
1014
- lang
1015
- }}
1016
- compact
1017
- {schema}
1018
- bind:args
1019
- bind:isValid
1020
- noVariablePicker={customUi?.previewPanel?.disableVariablePicker === true}
1021
- showSchemaExplorer
1022
- />
1316
+ {#if activeModuleTab !== null}
1317
+ <SchemaForm
1318
+ helperScript={{
1319
+ source: 'inline',
1320
+ code: editorCode,
1321
+ //@ts-ignore
1322
+ lang: effectiveLang
1323
+ }}
1324
+ compact
1325
+ schema={testPanelSchema}
1326
+ bind:args={testPanelArgs}
1327
+ bind:isValid
1328
+ noVariablePicker={customUi?.previewPanel?.disableVariablePicker === true}
1329
+ showSchemaExplorer
1330
+ />
1331
+ {:else}
1332
+ <SchemaForm
1333
+ helperScript={{
1334
+ source: 'inline',
1335
+ code,
1336
+ //@ts-ignore
1337
+ lang
1338
+ }}
1339
+ compact
1340
+ {schema}
1341
+ bind:args
1342
+ bind:isValid
1343
+ noVariablePicker={customUi?.previewPanel?.disableVariablePicker === true}
1344
+ showSchemaExplorer
1345
+ />
1346
+ {/if}
1023
1347
  {/key}
1024
1348
  </div>
1025
1349
  </div>
@@ -1044,7 +1368,7 @@ $effect(() => {
1044
1368
  : testIsLoading}
1045
1369
  {editor}
1046
1370
  {diffEditor}
1047
- {args}
1371
+ args={activeModuleTab !== null ? testPanelArgs : args}
1048
1372
  {showCaptures}
1049
1373
  customUi={customUi?.previewPanel}
1050
1374
  showCustomResultPanel={showDebugPanel}
@@ -1090,140 +1414,334 @@ $effect(() => {
1090
1414
  </Splitpanes>
1091
1415
  </SplitPanesWrapper>
1092
1416
 
1417
+ {#snippet addModuleForm(close: () => void)}
1418
+ <div class="flex flex-col gap-2">
1419
+ <label for="module-name-input" class="text-xs font-semibold text-emphasis">File name</label>
1420
+ <input
1421
+ id="module-name-input"
1422
+ type="text"
1423
+ class="border rounded px-2 py-1.5 text-sm bg-surface"
1424
+ bind:this={modulePathInputEl}
1425
+ bind:value={modulePathInput}
1426
+ placeholder={'helper' + (allowedModuleExtensions[0] ?? '.ts')}
1427
+ oninput={() => {
1428
+ modulePathError = validateModulePath(modulePathInput)
1429
+ }}
1430
+ onkeydown={(e) => {
1431
+ if (e.key === 'Enter') addModule()
1432
+ if (e.key === 'Escape') close()
1433
+ }}
1434
+ />
1435
+ {#if modulePathError}
1436
+ <p class="text-red-500 text-2xs">{modulePathError}</p>
1437
+ {/if}
1438
+ <p class="text-tertiary text-2xs"
1439
+ >Supports subfolders, e.g. <code class="text-2xs"
1440
+ >utils/math{allowedModuleExtensions[0] ?? '.ts'}</code
1441
+ ></p
1442
+ >
1443
+ <div class="flex justify-end gap-2">
1444
+ <Button
1445
+ variant="default"
1446
+ size="xs"
1447
+ onclick={() => {
1448
+ modulePathInput = ''
1449
+ modulePathError = ''
1450
+ close()
1451
+ }}>Cancel</Button
1452
+ >
1453
+ <Button
1454
+ variant="accent"
1455
+ size="xs"
1456
+ onclick={addModule}
1457
+ disabled={!modulePathInput.trim() || !!modulePathError}>Add</Button
1458
+ >
1459
+ </div>
1460
+ </div>
1461
+ {/snippet}
1462
+
1463
+ {#snippet renameModuleForm(oldPath: string, close: () => void)}
1464
+ <div class="flex flex-col gap-2">
1465
+ <label for="rename-module-input" class="text-xs font-semibold text-emphasis"
1466
+ >Rename module</label
1467
+ >
1468
+ <input
1469
+ id="rename-module-input"
1470
+ type="text"
1471
+ class="border rounded px-2 py-1.5 text-sm bg-surface"
1472
+ bind:this={renameModuleInputEl}
1473
+ bind:value={renameModuleInput}
1474
+ oninput={() => {
1475
+ renameModuleError = validateRenameModulePath(renameModuleInput, oldPath)
1476
+ }}
1477
+ onkeydown={(e) => {
1478
+ if (e.key === 'Enter') {
1479
+ renameModule(oldPath)
1480
+ close()
1481
+ }
1482
+ if (e.key === 'Escape') close()
1483
+ }}
1484
+ />
1485
+ {#if renameModuleError}
1486
+ <p class="text-red-500 text-2xs">{renameModuleError}</p>
1487
+ {/if}
1488
+ <div class="flex justify-end gap-2">
1489
+ <Button
1490
+ variant="default"
1491
+ size="xs"
1492
+ onclick={() => {
1493
+ renameModuleInput = ''
1494
+ renameModuleError = ''
1495
+ close()
1496
+ }}>Cancel</Button
1497
+ >
1498
+ <Button
1499
+ variant="accent"
1500
+ size="xs"
1501
+ onclick={() => {
1502
+ renameModule(oldPath)
1503
+ close()
1504
+ }}
1505
+ disabled={!renameModuleInput.trim() ||
1506
+ renameModuleInput.trim() === oldPath ||
1507
+ !!renameModuleError}>Rename</Button
1508
+ >
1509
+ </div>
1510
+ </div>
1511
+ {/snippet}
1512
+
1093
1513
  {#snippet editorContent()}
1094
- <div class="h-full !overflow-visible bg-surface dark:bg-[#272D38] relative">
1095
- <div class="absolute top-2 right-4 z-10 flex flex-row gap-2">
1096
- {#if assets?.length}
1097
- <AssetsDropdownButton {assets} />
1098
- {/if}
1099
- {#if isDebuggableScript && customUi?.editorBar?.debug != false}
1100
- <Button
1101
- variant={debugMode ? 'accent' : 'default'}
1102
- size="xs"
1103
- onclick={toggleDebugMode}
1104
- startIcon={{ icon: Bug }}
1105
- btnClasses={debugMode
1106
- ? ''
1107
- : 'bg-surface hover:bg-surface-hover border border-tertiary/30'}
1108
- title="Toggle Debug Mode"
1109
- >
1110
- {debugMode ? 'Exit Debug' : 'Debug'}
1111
- </Button>
1112
- {/if}
1113
- {#if showDebugPanel && !showDebugConsole}
1114
- <Button
1115
- variant="default"
1116
- size="xs"
1117
- onclick={() => (showDebugConsole = true)}
1118
- startIcon={{ icon: Terminal }}
1119
- btnClasses="bg-surface hover:bg-surface-hover border border-tertiary/30"
1120
- title="Show Debug Console"
1514
+ <div class="h-full !overflow-visible bg-surface dark:bg-[#272D38] relative flex flex-col">
1515
+ {#if supportsModules}
1516
+ <div
1517
+ class="flex items-center border-b border-tertiary/30 bg-surface-secondary px-1 gap-0.5 text-xs overflow-x-auto shrink-0"
1518
+ >
1519
+ <button
1520
+ class="px-2 py-1 rounded-t {activeModuleTab === null
1521
+ ? 'bg-surface font-semibold border-b-2 border-blue-500'
1522
+ : 'hover:bg-surface-hover'}"
1523
+ onclick={() => switchToMain()}
1121
1524
  >
1122
- Console
1123
- </Button>
1124
- {/if}
1125
- {#if lang === 'ansible' && hasDelegateToGitRepo}
1126
- <Button
1127
- variant="default"
1128
- size="xs"
1129
- onclick={() => (gitRepoResourcePickerOpen = true)}
1130
- startIcon={{ icon: GitBranch }}
1131
- btnClasses="bg-surface hover:bg-surface-hover border border-tertiary/30"
1525
+ {mainFileName}
1526
+ </button>
1527
+ {#each Object.keys(modules ?? {}) as modulePath}
1528
+ <div
1529
+ class="group rounded-t flex items-center {activeModuleTab === modulePath
1530
+ ? 'bg-surface font-semibold border-b-2 border-blue-500'
1531
+ : 'hover:bg-surface-hover'}"
1532
+ >
1533
+ <button class="pl-2 py-1 flex items-center" onclick={() => switchToModule(modulePath)}>
1534
+ {modulePath}
1535
+ </button>
1536
+ <div class="flex items-center pr-1 w-[32px] justify-end">
1537
+ <Popover
1538
+ placement="bottom-start"
1539
+ openFocus={renameModuleInputEl}
1540
+ contentClasses="p-3 w-72"
1541
+ >
1542
+ {#snippet trigger()}
1543
+ <span
1544
+ class="opacity-0 group-hover:opacity-100 hover:text-blue-500 transition-opacity"
1545
+ role="button"
1546
+ tabindex="0"
1547
+ onclick={(e) => {
1548
+ e.stopPropagation()
1549
+ renameModuleInput = modulePath
1550
+ renameModuleError = ''
1551
+ }}
1552
+ onkeydown={(e) => {
1553
+ if (e.key === 'Enter') {
1554
+ e.stopPropagation()
1555
+ renameModuleInput = modulePath
1556
+ renameModuleError = ''
1557
+ }
1558
+ }}
1559
+ >
1560
+ <Pencil size={12} />
1561
+ </span>
1562
+ {/snippet}
1563
+ {#snippet content({ close })}
1564
+ {@render renameModuleForm(modulePath, close)}
1565
+ {/snippet}
1566
+ </Popover>
1567
+ <span
1568
+ class="opacity-0 group-hover:opacity-100 hover:text-red-500 transition-opacity"
1569
+ role="button"
1570
+ tabindex="0"
1571
+ onclick={(e) => {
1572
+ e.stopPropagation()
1573
+ removeModule(modulePath)
1574
+ }}
1575
+ onkeydown={(e) => {
1576
+ if (e.key === 'Enter') {
1577
+ e.stopPropagation()
1578
+ removeModule(modulePath)
1579
+ }
1580
+ }}
1581
+ >
1582
+ <X size={12} />
1583
+ </span>
1584
+ </div>
1585
+ </div>
1586
+ {/each}
1587
+ <Popover
1588
+ placement="bottom-start"
1589
+ bind:isOpen={showAddModulePopover}
1590
+ openFocus={modulePathInputEl}
1591
+ contentClasses="p-3 w-72"
1132
1592
  >
1133
- Delegating to git repo
1134
- </Button>
1135
- {/if}
1136
- {#if testPanelSize === 0}
1137
- <HideButton
1138
- hidden={true}
1139
- direction="right"
1140
- size="md"
1141
- panelName="Test"
1142
- shortcut="U"
1143
- customHiddenIcon={{
1144
- icon: PlayIcon
1145
- }}
1146
- on:click={() => {
1147
- toggleTestPanel()
1148
- }}
1149
- btnClasses="bg-marine-400 hover:bg-marine-200 !text-primary-inverse hover:!text-primary-inverse hover:dark:!text-primary-inverse dark:bg-marine-50 dark:hover:bg-marine-50/70"
1150
- color="marine"
1151
- />
1152
- {/if}
1153
- {#if !aiChatManager.open && !disableAi}
1154
- {#if customUi?.editorBar?.aiGen != false && SUPPORTED_CHAT_SCRIPT_LANGUAGES.includes(lang ?? '')}
1593
+ {#snippet trigger()}
1594
+ <span class="px-2 py-1 rounded-t hover:bg-surface-hover inline-flex items-center">
1595
+ <Plus size={12} />
1596
+ </span>
1597
+ {/snippet}
1598
+ {#snippet content({ close })}
1599
+ {@render addModuleForm(close)}
1600
+ {/snippet}
1601
+ </Popover>
1602
+ </div>
1603
+ {/if}
1604
+ <div class="relative flex-1 !overflow-visible">
1605
+ <div class="absolute top-2 right-4 z-10 flex flex-row gap-2">
1606
+ {#if assets?.length}
1607
+ <AssetsDropdownButton {assets} />
1608
+ {/if}
1609
+ {#if isDebuggableScript && customUi?.editorBar?.debug != false}
1610
+ <Button
1611
+ variant={debugMode ? 'accent' : 'default'}
1612
+ size="xs"
1613
+ onclick={toggleDebugMode}
1614
+ startIcon={{ icon: Bug }}
1615
+ btnClasses={debugMode
1616
+ ? ''
1617
+ : 'bg-surface hover:bg-surface-hover border border-tertiary/30'}
1618
+ title="Toggle Debug Mode"
1619
+ >
1620
+ {debugMode ? 'Exit Debug' : 'Debug'}
1621
+ </Button>
1622
+ {/if}
1623
+ {#if showDebugPanel && !showDebugConsole}
1624
+ <Button
1625
+ variant="default"
1626
+ size="xs"
1627
+ onclick={() => (showDebugConsole = true)}
1628
+ startIcon={{ icon: Terminal }}
1629
+ btnClasses="bg-surface hover:bg-surface-hover border border-tertiary/30"
1630
+ title="Show Debug Console"
1631
+ >
1632
+ Console
1633
+ </Button>
1634
+ {/if}
1635
+ {#if lang === 'ansible' && hasDelegateToGitRepo}
1636
+ <Button
1637
+ variant="default"
1638
+ size="xs"
1639
+ onclick={() => (gitRepoResourcePickerOpen = true)}
1640
+ startIcon={{ icon: GitBranch }}
1641
+ btnClasses="bg-surface hover:bg-surface-hover border border-tertiary/30"
1642
+ >
1643
+ Delegating to git repo
1644
+ </Button>
1645
+ {/if}
1646
+ {#if testPanelSize === 0}
1155
1647
  <HideButton
1156
1648
  hidden={true}
1157
1649
  direction="right"
1158
- panelName="AI"
1159
- shortcut="L"
1160
1650
  size="md"
1161
- usePopoverOverride={!$copilotInfo.enabled}
1651
+ panelName="Test"
1652
+ shortcut="U"
1162
1653
  customHiddenIcon={{
1163
- icon: WandSparkles
1654
+ icon: PlayIcon
1164
1655
  }}
1165
- btnClasses="!text-ai border border-gray-200 dark:border-gray-600 bg-surface"
1166
1656
  on:click={() => {
1167
- if (!aiChatManager.open) {
1168
- aiChatManager.changeMode(AIMode.SCRIPT)
1169
- }
1170
- aiChatManager.toggleOpen()
1657
+ toggleTestPanel()
1171
1658
  }}
1172
- >
1173
- {#snippet popoverOverride()}
1174
- <div class="text-sm">
1175
- Enable Windmill AI in the <a
1176
- href="{base}/workspace_settings?tab=ai"
1177
- target="_blank"
1178
- class="inline-flex flex-row items-center gap-1"
1179
- >
1180
- workspace settings <ExternalLink size={16} />
1181
- </a>
1182
- </div>
1183
- {/snippet}
1184
- </HideButton>
1659
+ btnClasses="bg-marine-400 hover:bg-marine-200 !text-primary-inverse hover:!text-primary-inverse hover:dark:!text-primary-inverse dark:bg-marine-50 dark:hover:bg-marine-50/70"
1660
+ color="marine"
1661
+ />
1185
1662
  {/if}
1186
- {/if}
1187
- </div>
1663
+ {#if !aiChatManager.open && !disableAi}
1664
+ {#if customUi?.editorBar?.aiGen != false && SUPPORTED_CHAT_SCRIPT_LANGUAGES.includes(lang ?? '')}
1665
+ <HideButton
1666
+ hidden={true}
1667
+ direction="right"
1668
+ panelName="AI"
1669
+ shortcut="L"
1670
+ size="md"
1671
+ usePopoverOverride={!$copilotInfo.enabled}
1672
+ customHiddenIcon={{
1673
+ icon: WandSparkles
1674
+ }}
1675
+ btnClasses="!text-ai border border-gray-200 dark:border-gray-600 bg-surface"
1676
+ on:click={() => {
1677
+ if (!aiChatManager.open) {
1678
+ aiChatManager.changeMode(AIMode.SCRIPT)
1679
+ }
1680
+ aiChatManager.toggleOpen()
1681
+ }}
1682
+ >
1683
+ {#snippet popoverOverride()}
1684
+ <div class="text-sm">
1685
+ Enable Windmill AI in the <a
1686
+ href="{base}/workspace_settings?tab=ai"
1687
+ target="_blank"
1688
+ class="inline-flex flex-row items-center gap-1"
1689
+ >
1690
+ workspace settings <ExternalLink size={16} />
1691
+ </a>
1692
+ </div>
1693
+ {/snippet}
1694
+ </HideButton>
1695
+ {/if}
1696
+ {/if}
1697
+ </div>
1188
1698
 
1189
- {#if debugConsoleVisible}
1190
- <!-- Use Splitpanes when debug console is visible for resizing -->
1191
- <Splitpanes horizontal class="h-full !overflow-visible">
1192
- <Pane bind:size={editorPaneSize} minSize={20} class="!overflow-visible">
1699
+ {#if debugConsoleVisible}
1700
+ <!-- Use Splitpanes when debug console is visible for resizing -->
1701
+ <Splitpanes horizontal class="h-full !overflow-visible">
1702
+ <Pane bind:size={editorPaneSize} minSize={20} class="!overflow-visible">
1703
+ {@render editorPane()}
1704
+ </Pane>
1705
+ <Pane bind:size={consolePaneSize} minSize={10}>
1706
+ <DebugConsole
1707
+ client={dapClient}
1708
+ currentFrameId={currentDebugFrameId}
1709
+ onClose={() => (showDebugConsole = false)}
1710
+ workspace={$workspaceStore}
1711
+ jobId={debugSessionJobId ?? undefined}
1712
+ />
1713
+ </Pane>
1714
+ </Splitpanes>
1715
+ {:else}
1716
+ <!-- Normal editor without console -->
1717
+ <div class="h-full !overflow-visible">
1193
1718
  {@render editorPane()}
1194
- </Pane>
1195
- <Pane bind:size={consolePaneSize} minSize={10}>
1196
- <DebugConsole
1197
- client={dapClient}
1198
- currentFrameId={currentDebugFrameId}
1199
- onClose={() => (showDebugConsole = false)}
1200
- workspace={$workspaceStore}
1201
- jobId={debugSessionJobId ?? undefined}
1202
- />
1203
- </Pane>
1204
- </Splitpanes>
1205
- {:else}
1206
- <!-- Normal editor without console -->
1207
- <div class="h-full !overflow-visible">
1208
- {@render editorPane()}
1209
- </div>
1210
- {/if}
1719
+ </div>
1720
+ {/if}
1721
+ </div>
1211
1722
  </div>
1212
1723
  {/snippet}
1213
1724
 
1214
1725
  {#snippet editorPane()}
1215
- {#key lang}
1726
+ {#key effectiveLang}
1216
1727
  <Editor
1217
1728
  lineNumbersMinChars={4}
1218
1729
  folding
1219
1730
  {path}
1220
- bind:code
1731
+ bind:code={editorCode}
1221
1732
  bind:websocketAlive
1222
1733
  bind:this={editor}
1223
1734
  {yContent}
1224
1735
  awareness={wsProvider?.awareness}
1225
1736
  on:change={(e) => {
1226
- inferSchema(e.detail)
1737
+ if (activeModuleTab === null) {
1738
+ code = editorCode
1739
+ lastSyncedCode = code
1740
+ inferSchema(e.detail)
1741
+ } else {
1742
+ flushModuleContent()
1743
+ inferModuleSchema()
1744
+ }
1227
1745
  // Refresh breakpoint positions when code changes (decorations track their lines)
1228
1746
  if (debugMode && breakpointDecorations.length > 0) {
1229
1747
  refreshBreakpointPositions()
@@ -1232,20 +1750,26 @@ $effect(() => {
1232
1750
  on:saveDraft
1233
1751
  on:toggleTestPanel={toggleTestPanel}
1234
1752
  cmdEnterAction={async () => {
1235
- await inferSchema(code)
1753
+ if (activeModuleTab === null) {
1754
+ await inferSchema(editorCode)
1755
+ } else {
1756
+ await inferModuleSchema()
1757
+ }
1236
1758
  runTest()
1237
1759
  }}
1238
1760
  formatAction={async () => {
1239
- await inferSchema(code)
1761
+ if (activeModuleTab === null) {
1762
+ await inferSchema(editorCode)
1763
+ }
1240
1764
  try {
1241
- localStorage.setItem(path ?? 'last_save', code)
1765
+ localStorage.setItem(path ?? 'last_save', activeModuleTab === null ? editorCode : code)
1242
1766
  } catch (e) {
1243
1767
  console.error('Could not save last_save to local storage', e)
1244
1768
  }
1245
1769
  dispatch('format')
1246
1770
  }}
1247
1771
  class="flex flex-1 h-full !overflow-visible"
1248
- scriptLang={lang}
1772
+ scriptLang={effectiveLang}
1249
1773
  automaticLayout={true}
1250
1774
  {fixedOverflowWidgets}
1251
1775
  {args}