windmill-components 1.596.1 → 1.613.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 (416) hide show
  1. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +2 -0
  2. package/dist/sharedUtils/base.d.ts +1 -0
  3. package/dist/sharedUtils/cloud.d.ts +1 -0
  4. package/dist/sharedUtils/common.d.ts +111 -0
  5. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +5 -0
  6. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +5 -0
  7. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
  8. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +13 -0
  9. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +11 -0
  10. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +95 -0
  11. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +6 -0
  12. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +7 -0
  13. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +33 -0
  14. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +10 -0
  15. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +5371 -0
  16. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +3 -0
  17. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +3 -0
  18. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +7 -0
  19. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +3 -0
  20. package/dist/sharedUtils/components/apps/gridUtils.d.ts +14 -0
  21. package/dist/sharedUtils/components/apps/inputType.d.ts +178 -0
  22. package/dist/sharedUtils/components/apps/rx.d.ts +29 -0
  23. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +21 -0
  24. package/dist/sharedUtils/components/apps/types.d.ts +274 -0
  25. package/dist/sharedUtils/components/assets/lib.d.ts +25 -0
  26. package/dist/sharedUtils/components/common/alert/model.d.ts +2 -0
  27. package/dist/sharedUtils/components/common/badge/model.d.ts +8 -0
  28. package/dist/sharedUtils/components/common/button/model.d.ts +45 -0
  29. package/dist/sharedUtils/components/common/fileInput/model.d.ts +1 -0
  30. package/dist/sharedUtils/components/common/index.d.ts +24 -0
  31. package/dist/sharedUtils/components/common/skeleton/model.d.ts +21 -0
  32. package/dist/sharedUtils/components/dbTypes.d.ts +14 -0
  33. package/dist/sharedUtils/components/diff_drawer.d.ts +26 -0
  34. package/dist/sharedUtils/components/ducklake.d.ts +1 -0
  35. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +7 -0
  36. package/dist/sharedUtils/components/icons/index.d.ts +101 -0
  37. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +1 -0
  38. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +10 -0
  39. package/dist/sharedUtils/components/raw_apps/utils.d.ts +15 -0
  40. package/dist/sharedUtils/components/triggers/email/utils.d.ts +4 -0
  41. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +2 -0
  42. package/dist/sharedUtils/components/triggers/http/utils.d.ts +11 -0
  43. package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +2 -0
  44. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +2 -0
  45. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +2 -0
  46. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +8 -0
  47. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +2 -0
  48. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +32 -0
  49. package/dist/sharedUtils/components/triggers/utils.d.ts +80 -0
  50. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +2 -0
  51. package/dist/sharedUtils/components/triggers.d.ts +20 -0
  52. package/dist/sharedUtils/gen/core/ApiError.d.ts +10 -0
  53. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +13 -0
  54. package/dist/sharedUtils/gen/core/ApiResult.d.ts +7 -0
  55. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +26 -0
  56. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +27 -0
  57. package/dist/sharedUtils/gen/core/request.d.ts +29 -0
  58. package/dist/sharedUtils/gen/index.d.ts +6 -0
  59. package/dist/sharedUtils/gen/schemas.gen.d.ts +7036 -0
  60. package/dist/sharedUtils/gen/services.gen.d.ts +6047 -0
  61. package/dist/sharedUtils/gen/types.gen.d.ts +21881 -0
  62. package/dist/sharedUtils/history.svelte.d.ts +9 -0
  63. package/dist/sharedUtils/hub.d.ts +49 -0
  64. package/dist/sharedUtils/jsr.json +6 -0
  65. package/dist/sharedUtils/lib.d.ts +5 -0
  66. package/dist/sharedUtils/lib.es.js +1588 -0
  67. package/dist/sharedUtils/package.json +12 -0
  68. package/dist/sharedUtils/schema.d.ts +3 -0
  69. package/dist/sharedUtils/stores.d.ts +97 -0
  70. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +80 -0
  71. package/dist/sharedUtils/toast.d.ts +8 -0
  72. package/dist/sharedUtils/utils.d.ts +265 -0
  73. package/package/assets/tokens/tokens.json +11 -1
  74. package/package/ata/apis.js +78 -5
  75. package/package/components/AddUser.svelte +1 -1
  76. package/package/components/CenteredModal.svelte +32 -24
  77. package/package/components/CenteredModal.svelte.d.ts +7 -27
  78. package/package/components/CenteredPage.svelte +5 -2
  79. package/package/components/CenteredPage.svelte.d.ts +2 -0
  80. package/package/components/ConcurrentJobsChart.svelte +3 -2
  81. package/package/components/ConcurrentJobsChart.svelte.d.ts +2 -2
  82. package/package/components/CustomPopover.svelte +20 -23
  83. package/package/components/CustomPopover.svelte.d.ts +14 -39
  84. package/package/components/DBManager.svelte +105 -17
  85. package/package/components/DBManager.svelte.d.ts +2 -1
  86. package/package/components/DBManagerContent.svelte +4 -3
  87. package/package/components/DBManagerContent.svelte.d.ts +1 -1
  88. package/package/components/DBTableEditor.svelte +210 -171
  89. package/package/components/DBTableEditor.svelte.d.ts +22 -3
  90. package/package/components/Description.svelte +3 -2
  91. package/package/components/Dev.svelte +36 -2
  92. package/package/components/DiffDrawer.svelte +8 -29
  93. package/package/components/DiffEditor.svelte +32 -2
  94. package/package/components/DisplayResult.svelte +32 -24
  95. package/package/components/Editor.svelte +70 -16
  96. package/package/components/Editor.svelte.d.ts +3 -0
  97. package/package/components/EditorBar.svelte +1 -1
  98. package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
  99. package/package/components/FlowBuilder.svelte +17 -11
  100. package/package/components/FlowDiffViewer.svelte +37 -0
  101. package/package/components/FlowDiffViewer.svelte.d.ts +7 -0
  102. package/package/components/FlowPreviewContent.svelte +3 -2
  103. package/package/components/FlowPreviewResult.svelte +0 -4
  104. package/package/components/FlowStatusViewerInner.svelte +50 -33
  105. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -1
  106. package/package/components/FlowStatusWaitingForEvents.svelte +27 -23
  107. package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +4 -18
  108. package/package/components/FlowViewer.svelte +103 -2
  109. package/package/components/FlowViewer.svelte.d.ts +9 -3
  110. package/package/components/ForkWorkspaceBanner.svelte +16 -13
  111. package/package/components/GraphqlSchemaViewer.svelte +8 -1
  112. package/package/components/HistoricInputs.svelte +25 -27
  113. package/package/components/HistoricInputs.svelte.d.ts +2 -2
  114. package/package/components/InstanceSetting.svelte +38 -0
  115. package/package/components/InviteUser.svelte +16 -42
  116. package/package/components/InviteUser.svelte.d.ts +4 -18
  117. package/package/components/JobOtelTraces.svelte +287 -0
  118. package/package/components/JobOtelTraces.svelte.d.ts +6 -0
  119. package/package/components/JsonInputs.svelte +6 -8
  120. package/package/components/JsonInputs.svelte.d.ts +7 -8
  121. package/package/components/LogViewer.svelte +91 -33
  122. package/package/components/Login.svelte +21 -0
  123. package/package/components/ManualPopover.svelte +5 -6
  124. package/package/components/ManualPopover.svelte.d.ts +9 -35
  125. package/package/components/MemoryFootprintViewer.svelte +2 -6
  126. package/package/components/ModulePreview.svelte +23 -21
  127. package/package/components/ModulePreview.svelte.d.ts +1 -0
  128. package/package/components/Path.svelte +2 -2
  129. package/package/components/Path.svelte.d.ts +1 -1
  130. package/package/components/ResourcePicker.svelte +3 -0
  131. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  132. package/package/components/RunButton.svelte +5 -15
  133. package/package/components/RunButton.svelte.d.ts +7 -19
  134. package/package/components/RunChart.svelte +8 -4
  135. package/package/components/RunChart.svelte.d.ts +2 -2
  136. package/package/components/RunFormAdvancedPopup.svelte +1 -1
  137. package/package/components/RunsPage.svelte +169 -539
  138. package/package/components/RunsPage.svelte.d.ts +5 -5
  139. package/package/components/S3FilePicker.svelte +7 -11
  140. package/package/components/S3FilePickerInner.svelte +2 -3
  141. package/package/components/S3FilePickerInner.svelte.d.ts +2 -2
  142. package/package/components/SchemaForm.svelte +26 -19
  143. package/package/components/SchemaFormWithArgPicker.svelte +4 -3
  144. package/package/components/ScriptBuilder.svelte +1 -1
  145. package/package/components/ScriptEditor.svelte +575 -101
  146. package/package/components/Section.svelte +3 -1
  147. package/package/components/ServiceLogsInner.svelte +4 -4
  148. package/package/components/SimpleEditor.svelte +46 -2
  149. package/package/components/SuperadminSettingsInner.svelte +1 -1
  150. package/package/components/TemplateEditor.svelte +54 -29
  151. package/package/components/TemplateEditor.svelte.d.ts +13 -102
  152. package/package/components/UserSettings.svelte +1 -1
  153. package/package/components/WorkerTagPicker.svelte +1 -1
  154. package/package/components/WorkerTagSelect.svelte +5 -2
  155. package/package/components/WorkspaceTutorials.svelte +5 -0
  156. package/package/components/apps/components/buttons/AppButton.svelte +21 -6
  157. package/package/components/apps/components/buttons/AppForm.svelte +2 -1
  158. package/package/components/apps/components/buttons/AppFormButton.svelte +2 -1
  159. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +0 -4
  160. package/package/components/apps/components/display/dbtable/metadata.js +69 -30
  161. package/package/components/apps/components/display/dbtable/queries/alterTable.d.ts +46 -0
  162. package/package/components/apps/components/display/dbtable/queries/alterTable.js +314 -0
  163. package/package/components/apps/components/display/dbtable/queries/alterTable.test.d.ts +1 -0
  164. package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +867 -0
  165. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +2 -24
  166. package/package/components/apps/components/display/dbtable/queries/createTable.js +11 -25
  167. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.d.ts +9 -0
  168. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.js +45 -0
  169. package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +47 -0
  170. package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +402 -0
  171. package/package/components/apps/components/display/dbtable/queries/select.d.ts +2 -0
  172. package/package/components/apps/components/display/dbtable/queries/select.js +37 -6
  173. package/package/components/apps/components/display/dbtable/tableEditor.d.ts +35 -0
  174. package/package/components/apps/components/display/dbtable/tableEditor.js +49 -0
  175. package/package/components/apps/components/display/dbtable/utils.d.ts +10 -1
  176. package/package/components/apps/components/display/dbtable/utils.js +52 -20
  177. package/package/components/apps/components/helpers/HiddenComponent.svelte +1 -1
  178. package/package/components/apps/components/helpers/InputValue.svelte +1 -1
  179. package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
  180. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -2
  181. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
  182. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
  183. package/package/components/apps/editor/AppEditorHeader.svelte +8 -1
  184. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +32 -29
  185. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -2
  186. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +4 -4
  187. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +3 -3
  188. package/package/components/apps/editor/PublicApp.svelte +49 -30
  189. package/package/components/apps/editor/PublicApp.svelte.d.ts +1 -0
  190. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +77 -7
  191. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +2 -2
  192. package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -2
  193. package/package/components/apps/editor/inlineScriptsPanel/utils.js +10 -1
  194. package/package/components/apps/inputType.d.ts +6 -1
  195. package/package/components/auditLogs/AuditLogsFilters.svelte +9 -17
  196. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  197. package/package/components/common/button/model.js +1 -1
  198. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -1
  199. package/package/components/common/languageIcons/TypeScript.svelte +5 -3
  200. package/package/components/common/languageIcons/TypeScript.svelte.d.ts +1 -0
  201. package/package/components/common/modal/Modal.svelte +3 -3
  202. package/package/components/copilot/autocomplete/Autocompletor.js +3 -2
  203. package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -1
  204. package/package/components/copilot/chat/AIButtonStyle.js +2 -1
  205. package/package/components/copilot/chat/AIChat.svelte +3 -1
  206. package/package/components/copilot/chat/AIChatDisplay.svelte +89 -4
  207. package/package/components/copilot/chat/AIChatInput.svelte +275 -0
  208. package/package/components/copilot/chat/AIChatManager.svelte.js +107 -1
  209. package/package/components/copilot/chat/AiChatLayout.svelte +15 -30
  210. package/package/components/copilot/chat/AppAvailableContextList.svelte +263 -0
  211. package/package/components/copilot/chat/AppAvailableContextList.svelte.d.ts +13 -0
  212. package/package/components/copilot/chat/ContextElementBadge.svelte +44 -0
  213. package/package/components/copilot/chat/DatatableCreationPolicy.svelte +32 -33
  214. package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
  215. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +3 -0
  216. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +4 -0
  217. package/package/components/copilot/chat/app/core.d.ts +56 -15
  218. package/package/components/copilot/chat/app/core.js +141 -22
  219. package/package/components/copilot/chat/context.d.ts +59 -2
  220. package/package/components/copilot/chat/context.js +6 -2
  221. package/package/components/copilot/chat/flow/FlowAIChat.svelte +22 -0
  222. package/package/components/copilot/chat/flow/core.d.ts +3 -1
  223. package/package/components/copilot/chat/flow/core.js +29 -2
  224. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  225. package/package/components/copilot/chat/flow/openFlowZod.d.ts +1 -0
  226. package/package/components/copilot/chat/flow/openFlowZod.js +14 -2
  227. package/package/components/copilot/chat/script/core.d.ts +4 -1
  228. package/package/components/copilot/chat/script/core.js +38 -2
  229. package/package/components/copilot/chat/shared.d.ts +10 -0
  230. package/package/components/copilot/chat/shared.js +24 -0
  231. package/package/components/copilot/lib.d.ts +1 -1
  232. package/package/components/custom_ui.d.ts +2 -0
  233. package/package/components/dbOps.d.ts +18 -4
  234. package/package/components/dbOps.js +25 -3
  235. package/package/components/debug/DebugConsole.svelte +277 -0
  236. package/package/components/debug/DebugConsole.svelte.d.ts +13 -0
  237. package/package/components/debug/DebugPanel.svelte +97 -0
  238. package/package/components/debug/DebugPanel.svelte.d.ts +11 -0
  239. package/package/components/debug/DebugToolbar.svelte +148 -0
  240. package/package/components/debug/DebugToolbar.svelte.d.ts +17 -0
  241. package/package/components/debug/DebugVariableViewer.svelte +115 -0
  242. package/package/components/debug/DebugVariableViewer.svelte.d.ts +11 -0
  243. package/package/components/debug/MonacoDebugger.svelte +384 -0
  244. package/package/components/debug/MonacoDebugger.svelte.d.ts +15 -0
  245. package/package/components/debug/dapClient.d.ts +192 -0
  246. package/package/components/debug/dapClient.js +426 -0
  247. package/package/components/debug/debugUtils.d.ts +30 -0
  248. package/package/components/debug/debugUtils.js +131 -0
  249. package/package/components/debug/index.d.ts +75 -0
  250. package/package/components/debug/index.js +82 -0
  251. package/package/components/flows/CreateActionsApp.svelte +6 -4
  252. package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
  253. package/package/components/flows/FlowHistoryInner.svelte +15 -4
  254. package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
  255. package/package/components/flows/content/FlowEditorDrawer.svelte +124 -0
  256. package/package/components/flows/content/FlowEditorDrawer.svelte.d.ts +22 -0
  257. package/package/components/flows/content/FlowInput.svelte +211 -37
  258. package/package/components/flows/content/FlowModuleComponent.svelte +553 -67
  259. package/package/components/flows/content/FlowModuleEarlyStop.svelte +8 -10
  260. package/package/components/flows/content/FlowModuleHeader.svelte +7 -4
  261. package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +1 -1
  262. package/package/components/flows/content/McpOAuthConnect.svelte +217 -0
  263. package/package/components/flows/content/McpOAuthConnect.svelte.d.ts +7 -0
  264. package/package/components/flows/content/McpToolEditor.svelte +50 -37
  265. package/package/components/flows/content/McpToolEditor.svelte.d.ts +0 -1
  266. package/package/components/flows/conversations/FlowChat.svelte +16 -2
  267. package/package/components/flows/conversations/FlowChat.svelte.d.ts +2 -1
  268. package/package/components/flows/conversations/FlowChatInterface.svelte +103 -6
  269. package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +2 -0
  270. package/package/components/flows/conversations/FlowChatManager.svelte.js +53 -21
  271. package/package/components/flows/header/FlowImportExportMenu.svelte +1 -1
  272. package/package/components/flows/propPicker/PropPickerWrapper.svelte +3 -1
  273. package/package/components/flows/types.d.ts +2 -0
  274. package/package/components/git_sync/GitSyncRepositoryCard.svelte +16 -8
  275. package/package/components/home/ItemsList.svelte +5 -5
  276. package/package/components/home/TutorialBanner.svelte +34 -18
  277. package/package/components/icons/CssIcon.svelte +20 -0
  278. package/package/components/icons/CssIcon.svelte.d.ts +7 -25
  279. package/package/components/icons/HtmlIcon.svelte +20 -0
  280. package/package/components/icons/HtmlIcon.svelte.d.ts +8 -0
  281. package/package/components/icons/JavaScriptIcon.svelte +10 -2
  282. package/package/components/icons/JavaScriptIcon.svelte.d.ts +1 -0
  283. package/package/components/icons/JsonIcon.svelte +8 -2
  284. package/package/components/icons/JsonIcon.svelte.d.ts +1 -0
  285. package/package/components/icons/LessIcon.svelte +16 -0
  286. package/package/components/icons/LessIcon.svelte.d.ts +8 -0
  287. package/package/components/icons/MarkdownIcon.svelte +20 -0
  288. package/package/components/icons/MarkdownIcon.svelte.d.ts +8 -0
  289. package/package/components/icons/ReactIcon.svelte +10 -2
  290. package/package/components/icons/ReactIcon.svelte.d.ts +1 -0
  291. package/package/components/icons/SassIcon.svelte +28 -0
  292. package/package/components/icons/SassIcon.svelte.d.ts +8 -0
  293. package/package/components/icons/SvelteIcon.svelte +10 -2
  294. package/package/components/icons/SvelteIcon.svelte.d.ts +1 -0
  295. package/package/components/icons/VueIcon.svelte +10 -2
  296. package/package/components/icons/VueIcon.svelte.d.ts +1 -0
  297. package/package/components/icons/YamlIcon.svelte +20 -0
  298. package/package/components/icons/YamlIcon.svelte.d.ts +8 -0
  299. package/package/components/instanceSettings/SecretBackendConfig.svelte +514 -0
  300. package/package/components/instanceSettings/SecretBackendConfig.svelte.d.ts +8 -0
  301. package/package/components/instanceSettings.d.ts +2 -1
  302. package/package/components/instanceSettings.js +32 -1
  303. package/package/components/jobs/JobPreview.svelte +46 -39
  304. package/package/components/jobs/JobPreview.svelte.d.ts +1 -0
  305. package/package/components/monacoLanguagesOptions.js +16 -15
  306. package/package/components/propertyPicker/PropPicker.svelte +16 -2
  307. package/package/components/propertyPicker/PropPicker.svelte.d.ts +2 -0
  308. package/package/components/raw_apps/DefaultDatabaseSelector.svelte +9 -5
  309. package/package/components/raw_apps/FileEditorIcon.svelte +12 -7
  310. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +2 -0
  311. package/package/components/raw_apps/FileTreeNode.svelte +119 -83
  312. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +88 -8
  313. package/package/components/raw_apps/RawAppDataTableList.svelte +12 -9
  314. package/package/components/raw_apps/RawAppEditor.svelte +218 -68
  315. package/package/components/raw_apps/RawAppEditorHeader.svelte +33 -16
  316. package/package/components/raw_apps/RawAppHistoryList.svelte +264 -80
  317. package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +1 -0
  318. package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +15 -1
  319. package/package/components/raw_apps/RawAppHistoryManager.svelte.js +46 -12
  320. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +549 -47
  321. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +31 -5
  322. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +25 -18
  323. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -0
  324. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +141 -10
  325. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +8 -0
  326. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +2 -1
  327. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +9 -1
  328. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +47 -3
  329. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +2 -2
  330. package/package/components/raw_apps/RawAppModules.svelte +13 -7
  331. package/package/components/raw_apps/RawAppPreview.svelte +48 -6
  332. package/package/components/raw_apps/RawAppSidebar.svelte +194 -125
  333. package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +1 -0
  334. package/package/components/raw_apps/RunnableRow.svelte +41 -0
  335. package/package/components/raw_apps/RunnableRow.svelte.d.ts +11 -0
  336. package/package/components/raw_apps/utils.d.ts +1 -1
  337. package/package/components/raw_apps/utils.js +76 -18
  338. package/package/components/runs/ManuelDatePicker.svelte +3 -3
  339. package/package/components/runs/ManuelDatePicker.svelte.d.ts +3 -3
  340. package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -1
  341. package/package/components/runs/RunsFilter.svelte +75 -63
  342. package/package/components/runs/RunsFilter.svelte.d.ts +35 -4
  343. package/package/components/runs/RunsQueue.svelte.d.ts +1 -1
  344. package/package/components/runs/RunsTable.svelte +1 -1
  345. package/package/components/runs/RunsTable.svelte.d.ts +1 -1
  346. package/package/components/runs/useJobsLoader.svelte.d.ts +34 -0
  347. package/package/components/runs/useJobsLoader.svelte.js +507 -0
  348. package/package/components/scriptEditor/LogPanel.svelte +17 -2
  349. package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
  350. package/package/components/select/SelectDropdown.svelte +2 -2
  351. package/package/components/settings/AIPromptsModal.svelte +88 -0
  352. package/package/components/settings/AIPromptsModal.svelte.d.ts +11 -0
  353. package/package/components/settings/ChangeWorkspaceColor.svelte +4 -3
  354. package/package/components/settings/ChangeWorkspaceId.svelte +14 -10
  355. package/package/components/settings/ChangeWorkspaceName.svelte +7 -6
  356. package/package/components/settings/CreateToken.svelte +1 -1
  357. package/package/components/settings/UserAIPromptsSettings.svelte +56 -15
  358. package/package/components/settings/WorkspaceOperatorSettings.svelte +68 -85
  359. package/package/components/settings/WorkspaceUserSettings.svelte +531 -406
  360. package/package/components/sidebar/MenuButton.svelte +46 -24
  361. package/package/components/sidebar/MenuButton.svelte.d.ts +2 -0
  362. package/package/components/sidebar/MultiplayerMenu.svelte +3 -3
  363. package/package/components/sidebar/OperatorMenu.svelte +62 -87
  364. package/package/components/sidebar/SidebarContent.svelte +7 -2
  365. package/package/components/sidebar/WorkspaceMenu.svelte +35 -85
  366. package/package/components/sqlTypeService.js +4 -3
  367. package/package/components/table/DataTable.svelte +3 -2
  368. package/package/components/table/DataTable.svelte.d.ts +1 -0
  369. package/package/components/text_input/TextInput.svelte +3 -0
  370. package/package/components/text_input/TextInput.svelte.d.ts +2 -0
  371. package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +6 -35
  372. package/package/components/tutorials/RunsTutorial.svelte +399 -0
  373. package/package/components/{schema/SchemaPicker.svelte.d.ts → tutorials/RunsTutorial.svelte.d.ts} +11 -12
  374. package/package/components/tutorials/TroubleshootFlowTutorial.svelte +5 -20
  375. package/package/components/tutorials/utils.d.ts +16 -0
  376. package/package/components/tutorials/utils.js +96 -0
  377. package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +133 -0
  378. package/package/components/{SavedInputs.svelte.d.ts → tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte.d.ts} +8 -11
  379. package/package/components/vscode.js +6 -6
  380. package/package/components/workspace/WorkspaceCard.svelte +184 -0
  381. package/package/components/workspace/WorkspaceCard.svelte.d.ts +24 -0
  382. package/package/components/workspace/WorkspaceIcon.svelte +21 -0
  383. package/package/components/workspace/WorkspaceIcon.svelte.d.ts +9 -0
  384. package/package/components/workspace/WorkspaceTreeView.svelte +331 -0
  385. package/package/components/workspace/WorkspaceTreeView.svelte.d.ts +15 -0
  386. package/package/components/workspaceSettings/AISettings.svelte +146 -108
  387. package/package/components/workspaceSettings/CreateWorkspace.svelte +25 -11
  388. package/package/components/workspaceSettings/DucklakeSettings.svelte +46 -23
  389. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +2 -1
  390. package/package/components/workspaceSettings/ModelTokenLimits.svelte +14 -18
  391. package/package/components/workspaceSettings/StorageSettings.svelte +280 -241
  392. package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +1 -0
  393. package/package/consts.js +4 -1
  394. package/package/gen/core/OpenAPI.js +1 -1
  395. package/package/gen/schemas.gen.d.ts +126 -0
  396. package/package/gen/schemas.gen.js +126 -0
  397. package/package/gen/services.gen.d.ts +151 -2
  398. package/package/gen/services.gen.js +301 -4
  399. package/package/gen/types.gen.d.ts +584 -2
  400. package/package/hubPaths.json +3 -2
  401. package/package/infer.js +2 -0
  402. package/package/monaco_workers/graphql.worker.bundle.js +121 -121
  403. package/package/rawAppWmillTs.d.ts +11 -0
  404. package/package/rawAppWmillTs.js +38 -1
  405. package/package/svelte5Utils.svelte.d.ts +9 -0
  406. package/package/svelte5Utils.svelte.js +51 -1
  407. package/package/tutorialUtils.js +0 -4
  408. package/package/tutorials/config.js +31 -3
  409. package/package/tutorials/roleUtils.d.ts +1 -1
  410. package/package/tutorials/roleUtils.js +6 -2
  411. package/package/utils.js +159 -1
  412. package/package.json +16 -17
  413. package/package/components/SavedInputs.svelte +0 -416
  414. package/package/components/runs/JobsLoader.svelte +0 -468
  415. package/package/components/runs/JobsLoader.svelte.d.ts +0 -49
  416. package/package/components/schema/SchemaPicker.svelte +0 -92
@@ -45,6 +45,8 @@ import {} from '../../../gen';
45
45
  import { workspaceStore } from '../../../stores';
46
46
  import { checkIfParentLoop } from '../utils.svelte';
47
47
  import ModulePreviewResultViewer from '../../ModulePreviewResultViewer.svelte';
48
+ import LogViewer from '../../LogViewer.svelte';
49
+ import DisplayResult from '../../DisplayResult.svelte';
48
50
  import { refreshStateStore } from '../../../svelte5Utils.svelte';
49
51
  import { getStepHistoryLoaderContext } from '../../stepHistoryLoader.svelte';
50
52
  import AssetsDropdownButton from '../../assets/AssetsDropdownButton.svelte';
@@ -52,6 +54,12 @@ import { useUiIntent } from '../../copilot/chat/flow/useUiIntent';
52
54
  import { editor as meditor } from 'monaco-editor';
53
55
  import { DynamicInput } from '../../../utils';
54
56
  import { usePreparedAssetSqlQueries } from '../../../infer.svelte';
57
+ import { SvelteSet } from 'svelte/reactivity';
58
+ import { slide } from 'svelte/transition';
59
+ import { DebugToolbar, DebugPanel, DebugConsole, getDAPClient, debugState, resetDAPClient, getDebugServerUrl, isDebuggable, getDebugFileExtension, fetchContextualVariables, signDebugRequest, getDebugErrorMessage } from '../../debug';
60
+ import { AlertTriangle, Bug, Terminal } from 'lucide-svelte';
61
+ import Modal from '../../common/modal/Modal.svelte';
62
+ import { getLocalSetting, sendUserToast, storeLocalSetting } from '../../../utils';
55
63
  const { selectionManager, currentEditor, previewArgs, flowStateStore, flowStore, pathStore, saveDraft, customUi, executionCount } = getContext('FlowEditorContext');
56
64
  const selectedId = $derived(selectionManager.getSelectedId());
57
65
  let { flowModule = $bindable(), failureModule = false, preprocessorModule = false, parentModule = $bindable(), previousModule, scriptKind = 'script', scriptTemplate = 'script', noEditor, enableAi, savedModule = undefined, forceTestTab = false, highlightArg = undefined, isAgentTool = false } = $props();
@@ -261,6 +269,303 @@ function onJobDone() {
261
269
  modulePreviewResultViewer?.getOutputPickerInner()?.setJobPreview();
262
270
  }
263
271
  let preparedSqlQueries = usePreparedAssetSqlQueries(() => flowGraphAssetsCtx?.val.sqlQueries[selectedId], () => $workspaceStore);
272
+ // Debug mode state
273
+ const DEBUG_BETA_WARNING_KEY = 'debug_beta_warning_confirmed';
274
+ let showDebugBetaWarning = $state(false);
275
+ let debugMode = $state(false);
276
+ let debugBreakpoints = new SvelteSet();
277
+ let breakpointDecorations = $state([]);
278
+ let currentLineDecoration = $state([]);
279
+ let dapClient = $state(null);
280
+ let selectedDebugFrameId = $state(null);
281
+ let debugSessionJobId = $state(null);
282
+ let showDebugConsole = $state(true);
283
+ let editorPaneSize = $state(75);
284
+ let consolePaneSize = $state(25);
285
+ // Get the DAP server URL based on language
286
+ const dapServerUrl = $derived(getDebugServerUrl((rawScriptLang || 'python3')));
287
+ const debugFilePath = $derived(`/tmp/script${getDebugFileExtension(rawScriptLang ?? '')}`);
288
+ const isDebuggableScript = $derived(isDebuggable(rawScriptLang ?? ''));
289
+ const showDebugPanel = $derived(debugMode && $debugState.connected && ($debugState.running || $debugState.stopped));
290
+ const hasDebugResult = $derived(debugMode && $debugState.result !== undefined);
291
+ const debugConsoleVisible = $derived(showDebugPanel && showDebugConsole);
292
+ const currentDebugFrameId = $derived(selectedDebugFrameId ?? $debugState.stackFrames[0]?.id);
293
+ // Breakpoint decoration options
294
+ const breakpointDecorationType = {
295
+ glyphMarginClassName: 'debug-breakpoint-glyph',
296
+ glyphMarginHoverMessage: { value: 'Breakpoint (click to remove)' },
297
+ stickiness: 1
298
+ };
299
+ const currentLineDecorationType = {
300
+ isWholeLine: true,
301
+ className: 'debug-current-line',
302
+ glyphMarginClassName: 'debug-current-line-glyph'
303
+ };
304
+ // Debug functions
305
+ function toggleBreakpoint(line) {
306
+ if (debugBreakpoints.has(line)) {
307
+ debugBreakpoints.delete(line);
308
+ }
309
+ else {
310
+ debugBreakpoints.add(line);
311
+ }
312
+ updateBreakpointDecorations();
313
+ }
314
+ function updateBreakpointDecorations() {
315
+ const monacoEditor = editor?.getEditor?.();
316
+ if (!monacoEditor)
317
+ return;
318
+ const decorations = Array.from(debugBreakpoints).map((line) => ({
319
+ range: { startLineNumber: line, startColumn: 1, endLineNumber: line, endColumn: 1 },
320
+ options: breakpointDecorationType
321
+ }));
322
+ const oldDecorations = untrack(() => breakpointDecorations);
323
+ breakpointDecorations = monacoEditor.deltaDecorations(oldDecorations, decorations);
324
+ }
325
+ function refreshBreakpointPositions() {
326
+ const monacoEditor = editor?.getEditor?.();
327
+ if (!monacoEditor || breakpointDecorations.length === 0)
328
+ return;
329
+ const model = monacoEditor.getModel();
330
+ if (!model)
331
+ return;
332
+ const newLines = new Set();
333
+ for (const decorationId of breakpointDecorations) {
334
+ const range = model.getDecorationRange(decorationId);
335
+ if (range) {
336
+ newLines.add(range.startLineNumber);
337
+ }
338
+ }
339
+ const oldLines = Array.from(debugBreakpoints).sort((a, b) => a - b);
340
+ const updatedLines = Array.from(newLines).sort((a, b) => a - b);
341
+ const positionsChanged = oldLines.length !== updatedLines.length ||
342
+ oldLines.some((line, i) => line !== updatedLines[i]);
343
+ if (positionsChanged) {
344
+ debugBreakpoints.clear();
345
+ for (const line of newLines) {
346
+ debugBreakpoints.add(line);
347
+ }
348
+ syncBreakpointsWithServer();
349
+ }
350
+ }
351
+ async function syncBreakpointsWithServer() {
352
+ if (!dapClient || !dapClient.isConnected())
353
+ return;
354
+ try {
355
+ await dapClient.setBreakpoints(debugFilePath, Array.from(debugBreakpoints));
356
+ }
357
+ catch (error) {
358
+ console.error('Failed to sync breakpoints:', error);
359
+ }
360
+ }
361
+ function updateCurrentLineDecoration(line) {
362
+ const monacoEditor = editor?.getEditor?.();
363
+ if (!monacoEditor)
364
+ return;
365
+ const oldDecorations = untrack(() => currentLineDecoration);
366
+ if (!line) {
367
+ currentLineDecoration = monacoEditor.deltaDecorations(oldDecorations, []);
368
+ return;
369
+ }
370
+ const decorations = [
371
+ {
372
+ range: { startLineNumber: line, startColumn: 1, endLineNumber: line, endColumn: 1 },
373
+ options: currentLineDecorationType
374
+ }
375
+ ];
376
+ currentLineDecoration = monacoEditor.deltaDecorations(oldDecorations, decorations);
377
+ monacoEditor.revealLineInCenter(line);
378
+ }
379
+ async function startDebugging() {
380
+ if (flowModule.value.type !== 'rawscript')
381
+ return;
382
+ try {
383
+ showDebugConsole = true;
384
+ selectedDebugFrameId = null;
385
+ resetDAPClient();
386
+ dapClient = getDAPClient(dapServerUrl);
387
+ const env = await fetchContextualVariables($workspaceStore ?? '');
388
+ const code = flowModule.value.content;
389
+ let signedPayload;
390
+ try {
391
+ signedPayload = await signDebugRequest($workspaceStore ?? '', code ?? '', rawScriptLang ?? 'python3');
392
+ debugSessionJobId = signedPayload.job_id;
393
+ }
394
+ catch (signError) {
395
+ sendUserToast(getDebugErrorMessage(signError), true);
396
+ return;
397
+ }
398
+ // Get static args from input transforms
399
+ const args = Object.entries(flowModule.value.input_transforms).reduce((acc, [key, obj]) => {
400
+ if (obj.type === 'static') {
401
+ acc[key] = obj.value;
402
+ }
403
+ return acc;
404
+ }, {});
405
+ await dapClient.connect();
406
+ await dapClient.initialize();
407
+ await dapClient.setBreakpoints(debugFilePath, Array.from(debugBreakpoints));
408
+ await dapClient.configurationDone();
409
+ await dapClient.launch({
410
+ code,
411
+ cwd: '/tmp',
412
+ args,
413
+ callMain: true,
414
+ env,
415
+ token: signedPayload.token
416
+ });
417
+ }
418
+ catch (error) {
419
+ console.error('Failed to start debugging:', error);
420
+ sendUserToast(getDebugErrorMessage(error), true);
421
+ }
422
+ }
423
+ async function stopDebugging() {
424
+ if (!dapClient)
425
+ return;
426
+ try {
427
+ await dapClient.terminate();
428
+ dapClient.disconnect();
429
+ }
430
+ catch (error) {
431
+ console.error('Failed to stop debugging:', error);
432
+ }
433
+ finally {
434
+ debugSessionJobId = null;
435
+ }
436
+ }
437
+ async function continueExecution() {
438
+ if (!dapClient)
439
+ return;
440
+ await dapClient.continue_();
441
+ }
442
+ async function stepOver() {
443
+ if (!dapClient)
444
+ return;
445
+ await dapClient.stepOver();
446
+ }
447
+ async function stepIn() {
448
+ if (!dapClient)
449
+ return;
450
+ await dapClient.stepIn();
451
+ }
452
+ async function stepOut() {
453
+ if (!dapClient)
454
+ return;
455
+ await dapClient.stepOut();
456
+ }
457
+ function clearAllBreakpoints() {
458
+ debugBreakpoints.clear();
459
+ updateBreakpointDecorations();
460
+ }
461
+ function toggleDebugMode() {
462
+ if (debugMode) {
463
+ // Exiting debug mode - clean up
464
+ debugMode = false;
465
+ stopDebugging();
466
+ clearAllBreakpoints();
467
+ updateCurrentLineDecoration(undefined);
468
+ }
469
+ else {
470
+ // Entering debug mode - check if beta warning was confirmed
471
+ if (getLocalSetting(DEBUG_BETA_WARNING_KEY) !== 'true') {
472
+ showDebugBetaWarning = true;
473
+ }
474
+ else {
475
+ debugMode = true;
476
+ // Switch to test tab when entering debug mode
477
+ selected = 'test';
478
+ }
479
+ }
480
+ }
481
+ function confirmDebugBetaWarning() {
482
+ storeLocalSetting(DEBUG_BETA_WARNING_KEY, 'true');
483
+ showDebugBetaWarning = false;
484
+ debugMode = true;
485
+ // Switch to test tab when entering debug mode
486
+ selected = 'test';
487
+ }
488
+ // Subscribe to debug state changes for current line highlighting
489
+ $effect(() => {
490
+ const currentLine = $debugState.currentLine;
491
+ if (debugMode) {
492
+ untrack(() => updateCurrentLineDecoration(currentLine));
493
+ }
494
+ });
495
+ // Watch for language changes - exit debug mode when language changes
496
+ let lastDebugLang = undefined;
497
+ $effect(() => {
498
+ const currentLang = rawScriptLang;
499
+ if (lastDebugLang !== undefined && lastDebugLang !== currentLang && debugMode) {
500
+ untrack(() => {
501
+ if (dapClient) {
502
+ dapClient.terminate().catch(() => { }).finally(() => {
503
+ dapClient?.disconnect();
504
+ });
505
+ }
506
+ resetDAPClient();
507
+ dapClient = null;
508
+ debugMode = false;
509
+ clearAllBreakpoints();
510
+ updateCurrentLineDecoration(undefined);
511
+ });
512
+ }
513
+ lastDebugLang = currentLang;
514
+ });
515
+ // Set up glyph margin click handler for breakpoints when debug mode is enabled
516
+ $effect(() => {
517
+ const monacoEditor = editor?.getEditor?.();
518
+ if (!monacoEditor)
519
+ return;
520
+ if (debugMode && isDebuggableScript) {
521
+ monacoEditor.updateOptions({ glyphMargin: true });
522
+ const mouseDownDisposable = monacoEditor.onMouseDown((e) => {
523
+ if (e.target.type === 2) {
524
+ const line = e.target.position?.lineNumber;
525
+ if (line) {
526
+ toggleBreakpoint(line);
527
+ }
528
+ }
529
+ });
530
+ monacoEditor.addCommand(120, () => {
531
+ const position = monacoEditor.getPosition();
532
+ if (position) {
533
+ toggleBreakpoint(position.lineNumber);
534
+ }
535
+ });
536
+ monacoEditor.addCommand(119, () => {
537
+ if ($debugState.stopped)
538
+ continueExecution();
539
+ });
540
+ monacoEditor.addCommand(117, () => {
541
+ if ($debugState.stopped)
542
+ stepOver();
543
+ });
544
+ monacoEditor.addCommand(118, () => {
545
+ if ($debugState.stopped)
546
+ stepIn();
547
+ });
548
+ monacoEditor.addCommand(1143, () => {
549
+ if ($debugState.stopped)
550
+ stepOut();
551
+ });
552
+ return () => {
553
+ mouseDownDisposable.dispose();
554
+ monacoEditor.updateOptions({ glyphMargin: false });
555
+ };
556
+ }
557
+ else {
558
+ monacoEditor.updateOptions({ glyphMargin: false });
559
+ }
560
+ });
561
+ // Clean up debug mode on destroy
562
+ import { onDestroy as onDestroyHook } from 'svelte';
563
+ onDestroyHook(() => {
564
+ if (debugMode) {
565
+ stopDebugging();
566
+ resetDAPClient();
567
+ }
568
+ });
264
569
  </script>
265
570
 
266
571
  <svelte:window onkeydown={onKeyDown} />
@@ -373,54 +678,149 @@ let preparedSqlQueries = usePreparedAssetSqlQueries(() => flowGraphAssetsCtx?.va
373
678
  {#if assets?.length}
374
679
  <AssetsDropdownButton {assets} />
375
680
  {/if}
681
+ {#if isDebuggableScript && customUi?.editorBar?.debug != false}
682
+ <Button
683
+ variant={debugMode ? 'accent' : 'default'}
684
+ size="xs"
685
+ onclick={toggleDebugMode}
686
+ startIcon={{ icon: Bug }}
687
+ btnClasses={debugMode
688
+ ? ''
689
+ : 'bg-surface hover:bg-surface-hover border border-tertiary/30'}
690
+ title="Toggle Debug Mode"
691
+ >
692
+ {debugMode ? 'Exit Debug' : 'Debug'}
693
+ </Button>
694
+ {/if}
695
+ {#if showDebugPanel && !showDebugConsole}
696
+ <Button
697
+ variant="default"
698
+ size="xs"
699
+ onclick={() => (showDebugConsole = true)}
700
+ startIcon={{ icon: Terminal }}
701
+ btnClasses="bg-surface hover:bg-surface-hover border border-tertiary/30"
702
+ title="Show Debug Console"
703
+ >
704
+ Console
705
+ </Button>
706
+ {/if}
376
707
  </div>
377
- <div id="flow-editor-code-section" class="h-full relative">
378
- <Editor
379
- loadAsync
380
- folding
381
- path={$pathStore + '/' + flowModule.id}
382
- bind:websocketAlive
383
- bind:this={editor}
384
- class="h-full relative"
385
- code={flowModule.value.content}
386
- scriptLang={flowModule?.value?.language}
387
- automaticLayout={true}
388
- cmdEnterAction={async () => {
389
- selected = 'test'
390
- if (selectedId == flowModule.id) {
391
- if (flowModule.value.type === 'rawscript' && editor) {
392
- flowModule.value.content = editor.getCode()
708
+ {#if debugConsoleVisible}
709
+ <Splitpanes horizontal class="h-full">
710
+ <Pane bind:size={editorPaneSize} minSize={20}>
711
+ <div id="flow-editor-code-section" class="h-full relative">
712
+ <Editor
713
+ loadAsync
714
+ folding
715
+ path={$pathStore + '/' + flowModule.id}
716
+ bind:websocketAlive
717
+ bind:this={editor}
718
+ class="h-full relative"
719
+ code={flowModule.value.content}
720
+ scriptLang={flowModule?.value?.language}
721
+ automaticLayout={true}
722
+ cmdEnterAction={async () => {
723
+ selected = 'test'
724
+ if (selectedId == flowModule.id) {
725
+ if (flowModule.value.type === 'rawscript' && editor) {
726
+ flowModule.value.content = editor.getCode()
727
+ }
728
+ await reload(flowModule)
729
+ modulePreview?.runTestWithStepArgs()
730
+ }
731
+ }}
732
+ on:change={async (event) => {
733
+ const content = event.detail
734
+ if (flowModule.value.type === 'rawscript') {
735
+ if (flowModule.value.content !== content) {
736
+ flowModule.value.content = content
737
+ }
738
+ await reload(flowModule)
739
+ if (debugMode && breakpointDecorations.length > 0) {
740
+ refreshBreakpointPositions()
741
+ }
742
+ }
743
+ }}
744
+ formatAction={() => {
745
+ reload(flowModule)
746
+ saveDraft()
747
+ }}
748
+ fixedOverflowWidgets={true}
749
+ args={Object.entries(flowModule.value.input_transforms).reduce(
750
+ (acc, [key, obj]) => {
751
+ acc[key] = obj.type === 'static' ? obj.value : undefined
752
+ return acc
753
+ },
754
+ {}
755
+ )}
756
+ key={`flow-inline-${$workspaceStore}-${$pathStore}-${flowModule.id}`}
757
+ moduleId={flowModule.id}
758
+ preparedAssetsSqlQueries={preparedSqlQueries.current}
759
+ />
760
+ </div>
761
+ </Pane>
762
+ <Pane bind:size={consolePaneSize} minSize={10}>
763
+ <DebugConsole
764
+ client={dapClient}
765
+ currentFrameId={currentDebugFrameId}
766
+ onClose={() => (showDebugConsole = false)}
767
+ workspace={$workspaceStore}
768
+ jobId={debugSessionJobId ?? undefined}
769
+ />
770
+ </Pane>
771
+ </Splitpanes>
772
+ {:else}
773
+ <div id="flow-editor-code-section" class="h-full relative">
774
+ <Editor
775
+ loadAsync
776
+ folding
777
+ path={$pathStore + '/' + flowModule.id}
778
+ bind:websocketAlive
779
+ bind:this={editor}
780
+ class="h-full relative"
781
+ code={flowModule.value.content}
782
+ scriptLang={flowModule?.value?.language}
783
+ automaticLayout={true}
784
+ cmdEnterAction={async () => {
785
+ selected = 'test'
786
+ if (selectedId == flowModule.id) {
787
+ if (flowModule.value.type === 'rawscript' && editor) {
788
+ flowModule.value.content = editor.getCode()
789
+ }
790
+ await reload(flowModule)
791
+ modulePreview?.runTestWithStepArgs()
393
792
  }
394
- await reload(flowModule)
395
- modulePreview?.runTestWithStepArgs()
396
- }
397
- }}
398
- on:change={async (event) => {
399
- const content = event.detail
400
- if (flowModule.value.type === 'rawscript') {
401
- if (flowModule.value.content !== content) {
402
- flowModule.value.content = content
793
+ }}
794
+ on:change={async (event) => {
795
+ const content = event.detail
796
+ if (flowModule.value.type === 'rawscript') {
797
+ if (flowModule.value.content !== content) {
798
+ flowModule.value.content = content
799
+ }
800
+ await reload(flowModule)
801
+ if (debugMode && breakpointDecorations.length > 0) {
802
+ refreshBreakpointPositions()
803
+ }
403
804
  }
404
- await reload(flowModule)
405
- }
406
- }}
407
- formatAction={() => {
408
- reload(flowModule)
409
- saveDraft()
410
- }}
411
- fixedOverflowWidgets={true}
412
- args={Object.entries(flowModule.value.input_transforms).reduce(
413
- (acc, [key, obj]) => {
414
- acc[key] = obj.type === 'static' ? obj.value : undefined
415
- return acc
416
- },
417
- {}
418
- )}
419
- key={`flow-inline-${$workspaceStore}-${$pathStore}-${flowModule.id}`}
420
- moduleId={flowModule.id}
421
- preparedAssetsSqlQueries={preparedSqlQueries.current}
422
- />
423
- </div>
805
+ }}
806
+ formatAction={() => {
807
+ reload(flowModule)
808
+ saveDraft()
809
+ }}
810
+ fixedOverflowWidgets={true}
811
+ args={Object.entries(flowModule.value.input_transforms).reduce(
812
+ (acc, [key, obj]) => {
813
+ acc[key] = obj.type === 'static' ? obj.value : undefined
814
+ return acc
815
+ },
816
+ {}
817
+ )}
818
+ key={`flow-inline-${$workspaceStore}-${$pathStore}-${flowModule.id}`}
819
+ moduleId={flowModule.id}
820
+ preparedAssetsSqlQueries={preparedSqlQueries.current}
821
+ />
822
+ </div>
823
+ {/if}
424
824
  <DiffEditor
425
825
  open={false}
426
826
  bind:this={diffEditor}
@@ -525,6 +925,24 @@ let preparedSqlQueries = usePreparedAssetSqlQueries(() => flowGraphAssetsCtx?.va
525
925
  </PropPickerWrapper>
526
926
  </div>
527
927
  {:else if selected === 'test'}
928
+ {#if debugMode && isDebuggableScript}
929
+ <div transition:slide={{ duration: 200 }}>
930
+ <DebugToolbar
931
+ connected={$debugState.connected}
932
+ running={$debugState.running}
933
+ stopped={$debugState.stopped}
934
+ breakpointCount={debugBreakpoints.size}
935
+ onStart={startDebugging}
936
+ onStop={stopDebugging}
937
+ onContinue={continueExecution}
938
+ onStepOver={stepOver}
939
+ onStepIn={stepIn}
940
+ onStepOut={stepOut}
941
+ onClearBreakpoints={clearAllBreakpoints}
942
+ onExitDebug={toggleDebugMode}
943
+ />
944
+ </div>
945
+ {/if}
528
946
  <ModulePreview
529
947
  class="flex-1"
530
948
  pickableProperties={stepPropPicker.pickableProperties}
@@ -537,6 +955,7 @@ let preparedSqlQueries = usePreparedAssetSqlQueries(() => flowGraphAssetsCtx?.va
537
955
  bind:scriptProgress
538
956
  focusArg={highlightArg}
539
957
  {onJobDone}
958
+ hideRunButton={debugMode && isDebuggableScript}
540
959
  />
541
960
  {:else if selected === 'advanced'}
542
961
  <Tabs bind:selected={advancedSelected} wrapperClass="shrink-0">
@@ -831,28 +1250,78 @@ let preparedSqlQueries = usePreparedAssetSqlQueries(() => flowGraphAssetsCtx?.va
831
1250
  >
832
1251
  </div>
833
1252
  {/if}
834
- <ModulePreviewResultViewer
835
- lang={flowModule.value['language'] ?? 'deno'}
836
- {editor}
837
- {diffEditor}
838
- loopStatus={parentLoop
839
- ? { type: 'inside', flow: parentLoop.type }
840
- : undefined}
841
- onUpdateMock={(detail) => {
842
- flowModule.mock = detail
843
- flowModule = flowModule
844
- refreshStateStore(flowStore)
845
- }}
846
- {testJob}
847
- {scriptProgress}
848
- mod={flowModule}
849
- {testIsLoading}
850
- disableMock={preprocessorModule || failureModule}
851
- disableHistory={failureModule}
852
- loadingJob={stepHistoryLoader?.stepStates[flowModule.id]?.loadingJobs}
853
- tagLabel={customUi?.tagLabel}
854
- bind:this={modulePreviewResultViewer}
855
- />
1253
+ {#if showDebugPanel || hasDebugResult}
1254
+ <Splitpanes horizontal class="h-full">
1255
+ <Pane size={50} minSize={15}>
1256
+ <Splitpanes horizontal class="h-full">
1257
+ <Pane size={50} minSize={10}>
1258
+ <LogViewer
1259
+ small
1260
+ content={$debugState.logs}
1261
+ isLoading={$debugState.running && !$debugState.stopped}
1262
+ tag={undefined}
1263
+ />
1264
+ </Pane>
1265
+ <Pane size={50} minSize={10}>
1266
+ {#if hasDebugResult}
1267
+ <div class="h-full p-2 overflow-auto">
1268
+ <DisplayResult
1269
+ result={$debugState.result}
1270
+ language={rawScriptLang}
1271
+ />
1272
+ </div>
1273
+ {:else}
1274
+ <div class="h-full flex items-center justify-center text-sm text-tertiary">
1275
+ {#if $debugState.running && !$debugState.stopped}
1276
+ Running...
1277
+ {:else if $debugState.stopped}
1278
+ Paused at breakpoint
1279
+ {:else}
1280
+ Waiting for debug session
1281
+ {/if}
1282
+ </div>
1283
+ {/if}
1284
+ </Pane>
1285
+ </Splitpanes>
1286
+ </Pane>
1287
+ <Pane size={50} minSize={15}>
1288
+ <DebugPanel
1289
+ stackFrames={$debugState.stackFrames}
1290
+ scopes={$debugState.scopes}
1291
+ variables={$debugState.variables}
1292
+ client={dapClient}
1293
+ bind:selectedFrameId={selectedDebugFrameId}
1294
+ />
1295
+ </Pane>
1296
+ </Splitpanes>
1297
+ {:else if debugMode && isDebuggableScript}
1298
+ <div class="h-full flex items-center justify-center text-sm text-tertiary">
1299
+ Click "Debug" in the toolbar to start debugging
1300
+ </div>
1301
+ {:else}
1302
+ <ModulePreviewResultViewer
1303
+ lang={flowModule.value['language'] ?? 'deno'}
1304
+ {editor}
1305
+ {diffEditor}
1306
+ loopStatus={parentLoop
1307
+ ? { type: 'inside', flow: parentLoop.type }
1308
+ : undefined}
1309
+ onUpdateMock={(detail) => {
1310
+ flowModule.mock = detail
1311
+ flowModule = flowModule
1312
+ refreshStateStore(flowStore)
1313
+ }}
1314
+ {testJob}
1315
+ {scriptProgress}
1316
+ mod={flowModule}
1317
+ {testIsLoading}
1318
+ disableMock={preprocessorModule || failureModule}
1319
+ disableHistory={failureModule}
1320
+ loadingJob={stepHistoryLoader?.stepStates[flowModule.id]?.loadingJobs}
1321
+ tagLabel={customUi?.tagLabel}
1322
+ bind:this={modulePreviewResultViewer}
1323
+ />
1324
+ {/if}
856
1325
  </Pane>
857
1326
  {/if}
858
1327
  </Splitpanes>
@@ -865,3 +1334,20 @@ let preparedSqlQueries = usePreparedAssetSqlQueries(() => flowGraphAssetsCtx?.va
865
1334
  {:else}
866
1335
  Incorrect flow module type
867
1336
  {/if}
1337
+
1338
+ <Modal title="Debug Feature (Beta)" bind:open={showDebugBetaWarning}>
1339
+ <div class="flex items-start gap-3">
1340
+ <div class="flex-shrink-0">
1341
+ <div class="flex h-10 w-10 items-center justify-center rounded-full bg-yellow-100 dark:bg-yellow-800/50">
1342
+ <AlertTriangle class="h-5 w-5 text-yellow-600 dark:text-yellow-400" />
1343
+ </div>
1344
+ </div>
1345
+ <div class="text-secondary text-sm">
1346
+ <p>The Debug feature is currently in <strong>beta</strong>. You may encounter unexpected behavior or limitations.</p>
1347
+ <p class="mt-2">By continuing, you acknowledge that this feature is experimental.</p>
1348
+ </div>
1349
+ </div>
1350
+ {#snippet actions()}
1351
+ <Button size="sm" on:click={confirmDebugBetaWarning}>Continue</Button>
1352
+ {/snippet}
1353
+ </Modal>