windmill-components 1.596.1 → 1.612.2

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 (414) hide show
  1. package/dist/appPolicy/myFunction.es.js +1337 -0
  2. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +2 -0
  3. package/dist/sharedUtils/base.d.ts +1 -0
  4. package/dist/sharedUtils/cloud.d.ts +1 -0
  5. package/dist/sharedUtils/common.d.ts +108 -0
  6. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +5 -0
  7. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +5 -0
  8. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
  9. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +11 -0
  10. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +11 -0
  11. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +84 -0
  12. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +6 -0
  13. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +7 -0
  14. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +22 -0
  15. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +10 -0
  16. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +5305 -0
  17. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +3 -0
  18. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +3 -0
  19. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +7 -0
  20. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +3 -0
  21. package/dist/sharedUtils/components/apps/gridUtils.d.ts +14 -0
  22. package/dist/sharedUtils/components/apps/inputType.d.ts +176 -0
  23. package/dist/sharedUtils/components/apps/rx.d.ts +29 -0
  24. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +19 -0
  25. package/dist/sharedUtils/components/apps/types.d.ts +274 -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 +11 -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/random_positive_adjetive.d.ts +1 -0
  37. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +10 -0
  38. package/dist/sharedUtils/components/raw_apps/utils.d.ts +15 -0
  39. package/dist/sharedUtils/components/triggers/email/utils.d.ts +4 -0
  40. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +2 -0
  41. package/dist/sharedUtils/components/triggers/http/utils.d.ts +11 -0
  42. package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +2 -0
  43. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +2 -0
  44. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +2 -0
  45. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +8 -0
  46. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +2 -0
  47. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +32 -0
  48. package/dist/sharedUtils/components/triggers/utils.d.ts +81 -0
  49. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +2 -0
  50. package/dist/sharedUtils/components/triggers.d.ts +20 -0
  51. package/dist/sharedUtils/gen/core/ApiError.d.ts +10 -0
  52. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +13 -0
  53. package/dist/sharedUtils/gen/core/ApiResult.d.ts +7 -0
  54. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +26 -0
  55. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +27 -0
  56. package/dist/sharedUtils/gen/core/request.d.ts +29 -0
  57. package/dist/sharedUtils/gen/index.d.ts +6 -0
  58. package/dist/sharedUtils/gen/schemas.gen.d.ts +6192 -0
  59. package/dist/sharedUtils/gen/services.gen.d.ts +5741 -0
  60. package/dist/sharedUtils/gen/types.gen.d.ts +20152 -0
  61. package/dist/sharedUtils/history.svelte.d.ts +9 -0
  62. package/dist/sharedUtils/hub.d.ts +48 -0
  63. package/dist/sharedUtils/jsr.json +6 -0
  64. package/dist/sharedUtils/lib.d.ts +5 -0
  65. package/dist/sharedUtils/lib.es.js +1426 -0
  66. package/dist/sharedUtils/package.json +12 -0
  67. package/dist/sharedUtils/schema.d.ts +3 -0
  68. package/dist/sharedUtils/stores.d.ts +96 -0
  69. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +49 -0
  70. package/dist/sharedUtils/toast.d.ts +8 -0
  71. package/dist/sharedUtils/utils.d.ts +250 -0
  72. package/package/assets/tokens/tokens.json +11 -1
  73. package/package/ata/apis.js +78 -5
  74. package/package/components/AddUser.svelte +1 -1
  75. package/package/components/CenteredModal.svelte +32 -24
  76. package/package/components/CenteredModal.svelte.d.ts +7 -27
  77. package/package/components/CenteredPage.svelte +5 -2
  78. package/package/components/CenteredPage.svelte.d.ts +2 -0
  79. package/package/components/ConcurrentJobsChart.svelte +3 -2
  80. package/package/components/ConcurrentJobsChart.svelte.d.ts +2 -2
  81. package/package/components/CustomPopover.svelte +20 -23
  82. package/package/components/CustomPopover.svelte.d.ts +14 -39
  83. package/package/components/DBManager.svelte +105 -17
  84. package/package/components/DBManager.svelte.d.ts +2 -1
  85. package/package/components/DBManagerContent.svelte +4 -3
  86. package/package/components/DBManagerContent.svelte.d.ts +1 -1
  87. package/package/components/DBTableEditor.svelte +210 -171
  88. package/package/components/DBTableEditor.svelte.d.ts +22 -3
  89. package/package/components/Description.svelte +3 -2
  90. package/package/components/Dev.svelte +36 -2
  91. package/package/components/DiffDrawer.svelte +8 -29
  92. package/package/components/DiffEditor.svelte +32 -2
  93. package/package/components/DisplayResult.svelte +32 -24
  94. package/package/components/Editor.svelte +70 -16
  95. package/package/components/Editor.svelte.d.ts +3 -0
  96. package/package/components/EditorBar.svelte +1 -1
  97. package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
  98. package/package/components/FlowBuilder.svelte +17 -11
  99. package/package/components/FlowDiffViewer.svelte +37 -0
  100. package/package/components/FlowDiffViewer.svelte.d.ts +7 -0
  101. package/package/components/FlowPreviewContent.svelte +3 -2
  102. package/package/components/FlowPreviewResult.svelte +0 -4
  103. package/package/components/FlowStatusViewerInner.svelte +50 -33
  104. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -1
  105. package/package/components/FlowStatusWaitingForEvents.svelte +27 -23
  106. package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +4 -18
  107. package/package/components/FlowViewer.svelte +103 -2
  108. package/package/components/FlowViewer.svelte.d.ts +9 -3
  109. package/package/components/ForkWorkspaceBanner.svelte +16 -13
  110. package/package/components/GraphqlSchemaViewer.svelte +8 -1
  111. package/package/components/HistoricInputs.svelte +25 -27
  112. package/package/components/HistoricInputs.svelte.d.ts +2 -2
  113. package/package/components/InstanceSetting.svelte +38 -0
  114. package/package/components/InviteUser.svelte +16 -42
  115. package/package/components/InviteUser.svelte.d.ts +4 -18
  116. package/package/components/JobOtelTraces.svelte +287 -0
  117. package/package/components/JobOtelTraces.svelte.d.ts +6 -0
  118. package/package/components/JsonInputs.svelte +6 -8
  119. package/package/components/JsonInputs.svelte.d.ts +7 -8
  120. package/package/components/LogViewer.svelte +91 -33
  121. package/package/components/Login.svelte +21 -0
  122. package/package/components/ManualPopover.svelte +5 -6
  123. package/package/components/ManualPopover.svelte.d.ts +9 -35
  124. package/package/components/MemoryFootprintViewer.svelte +2 -6
  125. package/package/components/ModulePreview.svelte +23 -21
  126. package/package/components/ModulePreview.svelte.d.ts +1 -0
  127. package/package/components/Path.svelte +2 -2
  128. package/package/components/Path.svelte.d.ts +1 -1
  129. package/package/components/ResourcePicker.svelte +3 -0
  130. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  131. package/package/components/RunButton.svelte +5 -15
  132. package/package/components/RunButton.svelte.d.ts +7 -19
  133. package/package/components/RunChart.svelte +8 -4
  134. package/package/components/RunChart.svelte.d.ts +2 -2
  135. package/package/components/RunFormAdvancedPopup.svelte +1 -1
  136. package/package/components/RunsPage.svelte +169 -539
  137. package/package/components/RunsPage.svelte.d.ts +5 -5
  138. package/package/components/S3FilePicker.svelte +7 -11
  139. package/package/components/S3FilePickerInner.svelte +2 -3
  140. package/package/components/S3FilePickerInner.svelte.d.ts +2 -2
  141. package/package/components/SchemaForm.svelte +26 -19
  142. package/package/components/SchemaFormWithArgPicker.svelte +4 -3
  143. package/package/components/ScriptBuilder.svelte +1 -1
  144. package/package/components/ScriptEditor.svelte +575 -101
  145. package/package/components/Section.svelte +3 -1
  146. package/package/components/ServiceLogsInner.svelte +4 -4
  147. package/package/components/SimpleEditor.svelte +46 -2
  148. package/package/components/SuperadminSettingsInner.svelte +1 -1
  149. package/package/components/TemplateEditor.svelte +54 -29
  150. package/package/components/TemplateEditor.svelte.d.ts +13 -102
  151. package/package/components/UserSettings.svelte +1 -1
  152. package/package/components/WorkerTagPicker.svelte +1 -1
  153. package/package/components/WorkerTagSelect.svelte +5 -2
  154. package/package/components/WorkspaceTutorials.svelte +5 -0
  155. package/package/components/apps/components/buttons/AppButton.svelte +21 -6
  156. package/package/components/apps/components/buttons/AppForm.svelte +2 -1
  157. package/package/components/apps/components/buttons/AppFormButton.svelte +2 -1
  158. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +0 -4
  159. package/package/components/apps/components/display/dbtable/metadata.js +69 -30
  160. package/package/components/apps/components/display/dbtable/queries/alterTable.d.ts +46 -0
  161. package/package/components/apps/components/display/dbtable/queries/alterTable.js +314 -0
  162. package/package/components/apps/components/display/dbtable/queries/alterTable.test.d.ts +1 -0
  163. package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +867 -0
  164. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +2 -24
  165. package/package/components/apps/components/display/dbtable/queries/createTable.js +11 -25
  166. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.d.ts +9 -0
  167. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.js +45 -0
  168. package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +47 -0
  169. package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +402 -0
  170. package/package/components/apps/components/display/dbtable/queries/select.d.ts +2 -0
  171. package/package/components/apps/components/display/dbtable/queries/select.js +37 -6
  172. package/package/components/apps/components/display/dbtable/tableEditor.d.ts +35 -0
  173. package/package/components/apps/components/display/dbtable/tableEditor.js +49 -0
  174. package/package/components/apps/components/display/dbtable/utils.d.ts +10 -1
  175. package/package/components/apps/components/display/dbtable/utils.js +52 -20
  176. package/package/components/apps/components/helpers/HiddenComponent.svelte +1 -1
  177. package/package/components/apps/components/helpers/InputValue.svelte +1 -1
  178. package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
  179. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -2
  180. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
  181. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
  182. package/package/components/apps/editor/AppEditorHeader.svelte +8 -1
  183. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +32 -29
  184. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -2
  185. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +4 -4
  186. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +3 -3
  187. package/package/components/apps/editor/PublicApp.svelte +49 -30
  188. package/package/components/apps/editor/PublicApp.svelte.d.ts +1 -0
  189. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +77 -7
  190. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +2 -2
  191. package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -2
  192. package/package/components/apps/editor/inlineScriptsPanel/utils.js +10 -1
  193. package/package/components/apps/inputType.d.ts +6 -1
  194. package/package/components/auditLogs/AuditLogsFilters.svelte +9 -17
  195. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  196. package/package/components/common/button/model.js +1 -1
  197. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -1
  198. package/package/components/common/languageIcons/TypeScript.svelte +5 -3
  199. package/package/components/common/languageIcons/TypeScript.svelte.d.ts +1 -0
  200. package/package/components/common/modal/Modal.svelte +3 -3
  201. package/package/components/copilot/autocomplete/Autocompletor.js +3 -2
  202. package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -1
  203. package/package/components/copilot/chat/AIButtonStyle.js +2 -1
  204. package/package/components/copilot/chat/AIChat.svelte +3 -1
  205. package/package/components/copilot/chat/AIChatDisplay.svelte +89 -4
  206. package/package/components/copilot/chat/AIChatInput.svelte +275 -0
  207. package/package/components/copilot/chat/AIChatManager.svelte.js +107 -1
  208. package/package/components/copilot/chat/AiChatLayout.svelte +15 -30
  209. package/package/components/copilot/chat/AppAvailableContextList.svelte +263 -0
  210. package/package/components/copilot/chat/AppAvailableContextList.svelte.d.ts +13 -0
  211. package/package/components/copilot/chat/ContextElementBadge.svelte +44 -0
  212. package/package/components/copilot/chat/DatatableCreationPolicy.svelte +32 -33
  213. package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
  214. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +3 -0
  215. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +4 -0
  216. package/package/components/copilot/chat/app/core.d.ts +56 -15
  217. package/package/components/copilot/chat/app/core.js +141 -22
  218. package/package/components/copilot/chat/context.d.ts +59 -2
  219. package/package/components/copilot/chat/context.js +6 -2
  220. package/package/components/copilot/chat/flow/FlowAIChat.svelte +22 -0
  221. package/package/components/copilot/chat/flow/core.d.ts +3 -1
  222. package/package/components/copilot/chat/flow/core.js +29 -2
  223. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  224. package/package/components/copilot/chat/flow/openFlowZod.d.ts +1 -0
  225. package/package/components/copilot/chat/flow/openFlowZod.js +14 -2
  226. package/package/components/copilot/chat/script/core.d.ts +4 -1
  227. package/package/components/copilot/chat/script/core.js +38 -2
  228. package/package/components/copilot/chat/shared.d.ts +10 -0
  229. package/package/components/copilot/chat/shared.js +24 -0
  230. package/package/components/copilot/lib.d.ts +1 -1
  231. package/package/components/custom_ui.d.ts +1 -0
  232. package/package/components/dbOps.d.ts +18 -4
  233. package/package/components/dbOps.js +25 -3
  234. package/package/components/debug/DebugConsole.svelte +277 -0
  235. package/package/components/debug/DebugConsole.svelte.d.ts +13 -0
  236. package/package/components/debug/DebugPanel.svelte +97 -0
  237. package/package/components/debug/DebugPanel.svelte.d.ts +11 -0
  238. package/package/components/debug/DebugToolbar.svelte +148 -0
  239. package/package/components/debug/DebugToolbar.svelte.d.ts +17 -0
  240. package/package/components/debug/DebugVariableViewer.svelte +115 -0
  241. package/package/components/debug/DebugVariableViewer.svelte.d.ts +11 -0
  242. package/package/components/debug/MonacoDebugger.svelte +384 -0
  243. package/package/components/debug/MonacoDebugger.svelte.d.ts +15 -0
  244. package/package/components/debug/dapClient.d.ts +192 -0
  245. package/package/components/debug/dapClient.js +426 -0
  246. package/package/components/debug/debugUtils.d.ts +30 -0
  247. package/package/components/debug/debugUtils.js +131 -0
  248. package/package/components/debug/index.d.ts +75 -0
  249. package/package/components/debug/index.js +82 -0
  250. package/package/components/flows/CreateActionsApp.svelte +6 -4
  251. package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
  252. package/package/components/flows/FlowHistoryInner.svelte +15 -4
  253. package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
  254. package/package/components/flows/content/FlowEditorDrawer.svelte +124 -0
  255. package/package/components/flows/content/FlowEditorDrawer.svelte.d.ts +22 -0
  256. package/package/components/flows/content/FlowInput.svelte +211 -37
  257. package/package/components/flows/content/FlowModuleComponent.svelte +553 -67
  258. package/package/components/flows/content/FlowModuleEarlyStop.svelte +8 -10
  259. package/package/components/flows/content/FlowModuleHeader.svelte +7 -4
  260. package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +1 -1
  261. package/package/components/flows/content/McpOAuthConnect.svelte +217 -0
  262. package/package/components/flows/content/McpOAuthConnect.svelte.d.ts +7 -0
  263. package/package/components/flows/content/McpToolEditor.svelte +50 -37
  264. package/package/components/flows/content/McpToolEditor.svelte.d.ts +0 -1
  265. package/package/components/flows/conversations/FlowChat.svelte +16 -2
  266. package/package/components/flows/conversations/FlowChat.svelte.d.ts +2 -1
  267. package/package/components/flows/conversations/FlowChatInterface.svelte +103 -6
  268. package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +2 -0
  269. package/package/components/flows/conversations/FlowChatManager.svelte.js +53 -21
  270. package/package/components/flows/header/FlowImportExportMenu.svelte +1 -1
  271. package/package/components/flows/propPicker/PropPickerWrapper.svelte +3 -1
  272. package/package/components/flows/types.d.ts +2 -0
  273. package/package/components/git_sync/GitSyncRepositoryCard.svelte +16 -8
  274. package/package/components/home/ItemsList.svelte +5 -5
  275. package/package/components/home/TutorialBanner.svelte +34 -18
  276. package/package/components/icons/CssIcon.svelte +20 -0
  277. package/package/components/icons/CssIcon.svelte.d.ts +7 -25
  278. package/package/components/icons/HtmlIcon.svelte +20 -0
  279. package/package/components/icons/HtmlIcon.svelte.d.ts +8 -0
  280. package/package/components/icons/JavaScriptIcon.svelte +10 -2
  281. package/package/components/icons/JavaScriptIcon.svelte.d.ts +1 -0
  282. package/package/components/icons/JsonIcon.svelte +8 -2
  283. package/package/components/icons/JsonIcon.svelte.d.ts +1 -0
  284. package/package/components/icons/LessIcon.svelte +16 -0
  285. package/package/components/icons/LessIcon.svelte.d.ts +8 -0
  286. package/package/components/icons/MarkdownIcon.svelte +20 -0
  287. package/package/components/icons/MarkdownIcon.svelte.d.ts +8 -0
  288. package/package/components/icons/ReactIcon.svelte +10 -2
  289. package/package/components/icons/ReactIcon.svelte.d.ts +1 -0
  290. package/package/components/icons/SassIcon.svelte +28 -0
  291. package/package/components/icons/SassIcon.svelte.d.ts +8 -0
  292. package/package/components/icons/SvelteIcon.svelte +10 -2
  293. package/package/components/icons/SvelteIcon.svelte.d.ts +1 -0
  294. package/package/components/icons/VueIcon.svelte +10 -2
  295. package/package/components/icons/VueIcon.svelte.d.ts +1 -0
  296. package/package/components/icons/YamlIcon.svelte +20 -0
  297. package/package/components/icons/YamlIcon.svelte.d.ts +8 -0
  298. package/package/components/instanceSettings/SecretBackendConfig.svelte +514 -0
  299. package/package/components/instanceSettings/SecretBackendConfig.svelte.d.ts +8 -0
  300. package/package/components/instanceSettings.d.ts +2 -1
  301. package/package/components/instanceSettings.js +32 -1
  302. package/package/components/jobs/JobPreview.svelte +46 -39
  303. package/package/components/jobs/JobPreview.svelte.d.ts +1 -0
  304. package/package/components/monacoLanguagesOptions.js +16 -15
  305. package/package/components/propertyPicker/PropPicker.svelte +16 -2
  306. package/package/components/propertyPicker/PropPicker.svelte.d.ts +2 -0
  307. package/package/components/raw_apps/DefaultDatabaseSelector.svelte +9 -5
  308. package/package/components/raw_apps/FileEditorIcon.svelte +12 -7
  309. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +2 -0
  310. package/package/components/raw_apps/FileTreeNode.svelte +119 -83
  311. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +88 -8
  312. package/package/components/raw_apps/RawAppDataTableList.svelte +12 -9
  313. package/package/components/raw_apps/RawAppEditor.svelte +218 -68
  314. package/package/components/raw_apps/RawAppEditorHeader.svelte +33 -16
  315. package/package/components/raw_apps/RawAppHistoryList.svelte +264 -80
  316. package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +1 -0
  317. package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +15 -1
  318. package/package/components/raw_apps/RawAppHistoryManager.svelte.js +46 -12
  319. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +549 -47
  320. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +31 -5
  321. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +25 -18
  322. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -0
  323. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +141 -10
  324. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +8 -0
  325. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +2 -1
  326. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +9 -1
  327. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +47 -3
  328. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +2 -2
  329. package/package/components/raw_apps/RawAppModules.svelte +13 -7
  330. package/package/components/raw_apps/RawAppPreview.svelte +48 -6
  331. package/package/components/raw_apps/RawAppSidebar.svelte +194 -125
  332. package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +1 -0
  333. package/package/components/raw_apps/RunnableRow.svelte +41 -0
  334. package/package/components/raw_apps/RunnableRow.svelte.d.ts +11 -0
  335. package/package/components/raw_apps/utils.d.ts +1 -1
  336. package/package/components/raw_apps/utils.js +76 -18
  337. package/package/components/runs/ManuelDatePicker.svelte +3 -3
  338. package/package/components/runs/ManuelDatePicker.svelte.d.ts +3 -3
  339. package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -1
  340. package/package/components/runs/RunsFilter.svelte +75 -63
  341. package/package/components/runs/RunsFilter.svelte.d.ts +35 -4
  342. package/package/components/runs/RunsQueue.svelte.d.ts +1 -1
  343. package/package/components/runs/RunsTable.svelte +1 -1
  344. package/package/components/runs/RunsTable.svelte.d.ts +1 -1
  345. package/package/components/runs/useJobsLoader.svelte.d.ts +34 -0
  346. package/package/components/runs/useJobsLoader.svelte.js +507 -0
  347. package/package/components/scriptEditor/LogPanel.svelte +17 -2
  348. package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
  349. package/package/components/select/SelectDropdown.svelte +2 -2
  350. package/package/components/settings/AIPromptsModal.svelte +88 -0
  351. package/package/components/settings/AIPromptsModal.svelte.d.ts +11 -0
  352. package/package/components/settings/ChangeWorkspaceColor.svelte +4 -3
  353. package/package/components/settings/ChangeWorkspaceId.svelte +14 -10
  354. package/package/components/settings/ChangeWorkspaceName.svelte +7 -6
  355. package/package/components/settings/UserAIPromptsSettings.svelte +56 -15
  356. package/package/components/settings/WorkspaceOperatorSettings.svelte +68 -85
  357. package/package/components/settings/WorkspaceUserSettings.svelte +531 -406
  358. package/package/components/sidebar/MenuButton.svelte +46 -24
  359. package/package/components/sidebar/MenuButton.svelte.d.ts +2 -0
  360. package/package/components/sidebar/MultiplayerMenu.svelte +3 -3
  361. package/package/components/sidebar/OperatorMenu.svelte +62 -87
  362. package/package/components/sidebar/SidebarContent.svelte +7 -2
  363. package/package/components/sidebar/WorkspaceMenu.svelte +35 -85
  364. package/package/components/sqlTypeService.js +4 -3
  365. package/package/components/table/DataTable.svelte +3 -2
  366. package/package/components/table/DataTable.svelte.d.ts +1 -0
  367. package/package/components/text_input/TextInput.svelte +3 -0
  368. package/package/components/text_input/TextInput.svelte.d.ts +2 -0
  369. package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +6 -35
  370. package/package/components/tutorials/RunsTutorial.svelte +399 -0
  371. package/package/components/{schema/SchemaPicker.svelte.d.ts → tutorials/RunsTutorial.svelte.d.ts} +11 -12
  372. package/package/components/tutorials/TroubleshootFlowTutorial.svelte +5 -20
  373. package/package/components/tutorials/utils.d.ts +16 -0
  374. package/package/components/tutorials/utils.js +96 -0
  375. package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +133 -0
  376. package/package/components/{SavedInputs.svelte.d.ts → tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte.d.ts} +8 -11
  377. package/package/components/vscode.js +6 -6
  378. package/package/components/workspace/WorkspaceCard.svelte +184 -0
  379. package/package/components/workspace/WorkspaceCard.svelte.d.ts +24 -0
  380. package/package/components/workspace/WorkspaceIcon.svelte +21 -0
  381. package/package/components/workspace/WorkspaceIcon.svelte.d.ts +9 -0
  382. package/package/components/workspace/WorkspaceTreeView.svelte +331 -0
  383. package/package/components/workspace/WorkspaceTreeView.svelte.d.ts +15 -0
  384. package/package/components/workspaceSettings/AISettings.svelte +146 -108
  385. package/package/components/workspaceSettings/CreateWorkspace.svelte +25 -11
  386. package/package/components/workspaceSettings/DucklakeSettings.svelte +46 -23
  387. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +2 -1
  388. package/package/components/workspaceSettings/ModelTokenLimits.svelte +14 -18
  389. package/package/components/workspaceSettings/StorageSettings.svelte +280 -241
  390. package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +1 -0
  391. package/package/consts.js +4 -1
  392. package/package/gen/core/OpenAPI.js +1 -1
  393. package/package/gen/schemas.gen.d.ts +126 -0
  394. package/package/gen/schemas.gen.js +126 -0
  395. package/package/gen/services.gen.d.ts +160 -2
  396. package/package/gen/services.gen.js +319 -4
  397. package/package/gen/types.gen.d.ts +607 -2
  398. package/package/hubPaths.json +3 -2
  399. package/package/infer.js +2 -0
  400. package/package/monaco_workers/graphql.worker.bundle.js +121 -121
  401. package/package/rawAppWmillTs.d.ts +11 -0
  402. package/package/rawAppWmillTs.js +38 -1
  403. package/package/svelte5Utils.svelte.d.ts +9 -0
  404. package/package/svelte5Utils.svelte.js +51 -1
  405. package/package/tutorialUtils.js +0 -4
  406. package/package/tutorials/config.js +31 -3
  407. package/package/tutorials/roleUtils.d.ts +1 -1
  408. package/package/tutorials/roleUtils.js +6 -2
  409. package/package/utils.js +159 -1
  410. package/package.json +16 -17
  411. package/package/components/SavedInputs.svelte +0 -416
  412. package/package/components/runs/JobsLoader.svelte +0 -468
  413. package/package/components/runs/JobsLoader.svelte.d.ts +0 -49
  414. package/package/components/schema/SchemaPicker.svelte +0 -92
@@ -1,19 +1,26 @@
1
1
  import type { ScriptLang } from '../../gen';
2
2
  import Editor from '../Editor.svelte';
3
- import type { AppInput, InlineScript } from '../apps/inputType';
3
+ import type { InlineScript, StaticAppInput, UserAppInput, CtxAppInput } from '../apps/inputType';
4
+ import { SvelteSet } from 'svelte/reactivity';
4
5
  interface Props {
5
6
  inlineScript: (InlineScript & {
6
7
  language: ScriptLang;
7
8
  }) | undefined;
8
9
  name?: string | undefined;
9
10
  id: string;
10
- fields?: Record<string, AppInput>;
11
+ fields?: Record<string, StaticAppInput | UserAppInput | CtxAppInput>;
11
12
  path: string;
12
- isLoading?: boolean;
13
13
  onRun: () => Promise<void>;
14
- onCancel: () => Promise<void>;
15
14
  editor?: Editor | undefined;
16
15
  lastDeployedCode?: string | undefined;
16
+ /** Called when code is selected in the editor */
17
+ onSelectionChange?: (selection: {
18
+ content: string;
19
+ startLine: number;
20
+ endLine: number;
21
+ startColumn: number;
22
+ endColumn: number;
23
+ } | null) => void;
17
24
  }
18
25
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
19
26
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
@@ -32,6 +39,25 @@ declare const RawAppInlineScriptEditor: $$__sveltets_2_IsomorphicComponent<Props
32
39
  delete: CustomEvent<any>;
33
40
  } & {
34
41
  [evt: string]: CustomEvent<any>;
35
- }, {}, {}, "name" | "fields" | "inlineScript" | "editor">;
42
+ }, {}, {
43
+ getDebugState: () => {
44
+ debugMode: boolean;
45
+ isDebuggableScript: boolean;
46
+ showDebugPanel: boolean;
47
+ hasDebugResult: boolean;
48
+ dapClient: import("../debug").DAPClient | null;
49
+ selectedDebugFrameId: number | null;
50
+ debugSessionJobId: string | null;
51
+ debugBreakpoints: SvelteSet<number>;
52
+ };
53
+ startDebugging: () => Promise<void>;
54
+ stopDebugging: () => Promise<void>;
55
+ continueExecution: () => Promise<void>;
56
+ stepOver: () => Promise<void>;
57
+ stepIn: () => Promise<void>;
58
+ stepOut: () => Promise<void>;
59
+ clearAllBreakpoints: () => void;
60
+ toggleDebugMode: () => void;
61
+ }, "name" | "fields" | "inlineScript" | "editor">;
36
62
  type RawAppInlineScriptEditor = InstanceType<typeof RawAppInlineScriptEditor>;
37
63
  export default RawAppInlineScriptEditor;
@@ -1,10 +1,11 @@
1
- <script lang="ts">import { Badge, Button } from '../common';
2
- import { Plus, AlertCircle, AlertTriangle } from 'lucide-svelte';
1
+ <script lang="ts">import { Button } from '../common';
2
+ import { Plus, File, AlertCircle, AlertTriangle } from 'lucide-svelte';
3
3
  import PanelSection from '../apps/editor/settingsPanel/common/PanelSection.svelte';
4
4
  import Popover from '../Popover.svelte';
5
5
  import { getNextId } from '../flows/idUtils';
6
6
  import { rawAppLintStore } from './lintStore';
7
- let { selectedRunnable = $bindable(), runnables } = $props();
7
+ import RunnableRow from './RunnableRow.svelte';
8
+ let { selectedRunnable = $bindable(), runnables, onSelect } = $props();
8
9
  // Subscribe to lint store for reactive updates
9
10
  let lintSnapshot = $state(rawAppLintStore.getSnapshot());
10
11
  $effect(() => {
@@ -24,22 +25,24 @@ function createBackgroundScript() {
24
25
  type: 'inline'
25
26
  };
26
27
  selectedRunnable = nid;
28
+ onSelect?.(nid);
27
29
  }
28
30
  </script>
29
31
 
30
- <PanelSection size="lg" fullHeight={false} title="backend" id="app-editor-runnable-panel">
32
+ <PanelSection size="sm" fullHeight={false} title="backend" id="app-editor-runnable-panel">
31
33
  {#snippet action()}
32
34
  <div class="flex flex-row gap-1">
33
35
  <Button
34
- size="xs"
35
- variant="default"
36
- btnClasses="!rounded-full !p-1"
36
+ unifiedSize="xs"
37
+ variant="subtle"
37
38
  title="Create a new background runnable"
38
39
  aria-label="Create a new background runnable"
39
40
  on:click={createBackgroundScript}
40
41
  id="create-background-runnable"
42
+ btnClasses="gap-0.5 px-1"
41
43
  >
42
- <Plus size={14} class="!text-primary" />
44
+ <Plus size={12} />
45
+ <File size={12} />
43
46
  </Button>
44
47
  </div>
45
48
  {/snippet}
@@ -49,17 +52,21 @@ function createBackgroundScript() {
49
52
  {#if Object.keys(runnables ?? {}).length > 0}
50
53
  {#each Object.entries(runnables ?? {}) as [id, runnable]}
51
54
  {#if runnable}
52
- <button
55
+ <RunnableRow
53
56
  {id}
54
- class="panel-item
55
- {selectedRunnable === id
56
- ? 'border-blue-500 bg-blue-100 dark:bg-frost-900/50'
57
- : 'hover:bg-blue-50 dark:hover:bg-frost-900/50'}"
58
- onclick={() => (selectedRunnable = id)}
59
- >
60
- <span class="text-2xs truncate">{runnable?.name}</span>
61
- <Badge color="indigo">{id}</Badge>
62
- </button>
57
+ {runnable}
58
+ isSelected={selectedRunnable === id}
59
+ onSelect={() => {
60
+ selectedRunnable = id
61
+ onSelect?.(id)
62
+ }}
63
+ onDelete={() => {
64
+ delete runnables[id]
65
+ if (selectedRunnable === id) {
66
+ selectedRunnable = undefined
67
+ }
68
+ }}
69
+ />
63
70
  {/if}
64
71
  {/each}
65
72
  {:else}
@@ -2,6 +2,7 @@ import type { Runnable } from '../apps/inputType';
2
2
  interface Props {
3
3
  selectedRunnable: string | undefined;
4
4
  runnables: Record<string, Runnable>;
5
+ onSelect?: (id: string) => void;
5
6
  }
6
7
  declare const RawAppInlineScriptPanelList: import("svelte").Component<Props, {}, "selectedRunnable">;
7
8
  type RawAppInlineScriptPanelList = ReturnType<typeof RawAppInlineScriptPanelList>;
@@ -11,7 +11,13 @@ import SplitPanesWrapper from '../splitPanes/SplitPanesWrapper.svelte';
11
11
  import SchemaForm from '../SchemaForm.svelte';
12
12
  import RunnableJobPanelInner from '../apps/editor/RunnableJobPanelInner.svelte';
13
13
  import JobLoader from '../JobLoader.svelte';
14
- let { runnable = $bindable(), id, appPath } = $props();
14
+ import { slide } from 'svelte/transition';
15
+ import { DebugToolbar, DebugPanel, debugState } from '../debug';
16
+ import LogViewer from '../LogViewer.svelte';
17
+ import DisplayResult from '../DisplayResult.svelte';
18
+ import RunButton from '../RunButton.svelte';
19
+ import { userStore, workspaceStore } from '../../stores';
20
+ let { runnable = $bindable(), id, appPath, onSelectionChange } = $props();
15
21
  const dispatch = createEventDispatcher();
16
22
  async function fork(nrunnable) {
17
23
  runnable = nrunnable == undefined ? undefined : { ...runnable, ...nrunnable };
@@ -26,7 +32,7 @@ function onPick(o) {
26
32
  fields: o.fields
27
33
  };
28
34
  }
29
- let selectedTab = $state('inputs');
35
+ let selectedTab = $state('test');
30
36
  let args = $state({});
31
37
  function getSchema(runnable) {
32
38
  if (isRunnableByPath(runnable)) {
@@ -41,6 +47,49 @@ let jobLoader = $state();
41
47
  let testJob = $state();
42
48
  let testIsLoading = $state(false);
43
49
  let scriptProgress = $state(0);
50
+ // Reference to the inline script editor for debug functions
51
+ let inlineScriptEditor = $state();
52
+ // Get debug state from the editor
53
+ const editorDebugState = $derived(inlineScriptEditor?.getDebugState?.() ?? {
54
+ debugMode: false,
55
+ isDebuggableScript: false,
56
+ showDebugPanel: false,
57
+ hasDebugResult: false,
58
+ dapClient: null,
59
+ selectedDebugFrameId: null,
60
+ debugSessionJobId: null,
61
+ debugBreakpoints: new Set()
62
+ });
63
+ // Reactive debug state values
64
+ const debugMode = $derived(editorDebugState.debugMode);
65
+ const isDebuggableScript = $derived(editorDebugState.isDebuggableScript);
66
+ const showDebugPanel = $derived(editorDebugState.showDebugPanel);
67
+ const hasDebugResult = $derived(editorDebugState.hasDebugResult);
68
+ const dapClient = $derived(editorDebugState.dapClient);
69
+ let selectedDebugFrameId = $state(null);
70
+ // Auto-switch to test tab when debug mode is enabled
71
+ $effect(() => {
72
+ if (debugMode) {
73
+ selectedTab = 'test';
74
+ }
75
+ });
76
+ // Helper to get actual ctx value for testing
77
+ function getCtxValue(expr) {
78
+ switch (expr) {
79
+ case 'username':
80
+ return $userStore?.username ?? '';
81
+ case 'email':
82
+ return $userStore?.email ?? '';
83
+ case 'groups':
84
+ return $userStore?.groups ?? [];
85
+ case 'workspace':
86
+ return $workspaceStore ?? '';
87
+ case 'author':
88
+ return $userStore?.email ?? ''; // In editor, author is the current user
89
+ default:
90
+ return '';
91
+ }
92
+ }
44
93
  function onFieldsChange(fields) {
45
94
  if (args == undefined) {
46
95
  args = {};
@@ -49,6 +98,10 @@ function onFieldsChange(fields) {
49
98
  if (v.type == 'static') {
50
99
  args[k] = v.value;
51
100
  }
101
+ else if (v.type == 'ctx' && v.ctx) {
102
+ // For test preview, use actual user values
103
+ args[k] = getCtxValue(v.ctx);
104
+ }
52
105
  });
53
106
  }
54
107
  async function testPreview() {
@@ -85,20 +138,16 @@ $effect(() => {
85
138
  <Pane size={55}>
86
139
  {#if isRunnableByName(runnable)}
87
140
  <RawAppInlineScriptEditor
141
+ bind:this={inlineScriptEditor}
88
142
  on:createScriptFromInlineScript={() => dispatch('createScriptFromInlineScript', runnable)}
89
143
  {id}
90
144
  bind:inlineScript={runnable.inlineScript}
91
145
  bind:name={runnable.name}
92
146
  bind:fields={runnable.fields}
93
- isLoading={testIsLoading}
94
147
  onRun={testPreview}
95
- onCancel={async () => {
96
- if (jobLoader) {
97
- await jobLoader.cancelJob()
98
- }
99
- }}
100
148
  on:delete
101
149
  path={appPath}
150
+ {onSelectionChange}
102
151
  />
103
152
  {:else if isRunnableByPath(runnable)}
104
153
  <InlineScriptRunnableByPath
@@ -120,8 +169,8 @@ $effect(() => {
120
169
  </Pane>
121
170
  <Pane size={45}>
122
171
  <Tabs bind:selected={selectedTab}>
123
- <Tab value="inputs" label="Inputs" />
124
172
  <Tab value="test" label="Test" />
173
+ <Tab value="inputs" label="Inputs" />
125
174
  {#snippet content()}
126
175
  {#if selectedTab == 'inputs'}
127
176
  {#if runnable?.fields}
@@ -152,10 +201,40 @@ $effect(() => {
152
201
  <div class="text-primary text-xs">No inputs</div>
153
202
  {/if}
154
203
  {:else if selectedTab == 'test'}
204
+ {#if debugMode && isDebuggableScript}
205
+ <div transition:slide={{ duration: 200 }}>
206
+ <DebugToolbar
207
+ connected={$debugState.connected}
208
+ running={$debugState.running}
209
+ stopped={$debugState.stopped}
210
+ breakpointCount={editorDebugState.debugBreakpoints?.size ?? 0}
211
+ onStart={() => inlineScriptEditor?.startDebugging() ?? Promise.resolve()}
212
+ onStop={() => inlineScriptEditor?.stopDebugging() ?? Promise.resolve()}
213
+ onContinue={() => inlineScriptEditor?.continueExecution() ?? Promise.resolve()}
214
+ onStepOver={() => inlineScriptEditor?.stepOver() ?? Promise.resolve()}
215
+ onStepIn={() => inlineScriptEditor?.stepIn() ?? Promise.resolve()}
216
+ onStepOut={() => inlineScriptEditor?.stepOut() ?? Promise.resolve()}
217
+ onClearBreakpoints={() => inlineScriptEditor?.clearAllBreakpoints()}
218
+ onExitDebug={() => inlineScriptEditor?.toggleDebugMode()}
219
+ />
220
+ </div>
221
+ {/if}
155
222
  <SplitPanesWrapper>
156
223
  <Splitpanes horizontal class="grow">
157
224
  <Pane size={50}>
158
225
  <div class="px-2 py-3 h-full overflow-auto">
226
+ <div class="mx-auto w-fit">
227
+ <RunButton
228
+ isLoading={testIsLoading}
229
+ onRun={testPreview}
230
+ onCancel={async () => {
231
+ if (jobLoader) {
232
+ await jobLoader.cancelJob()
233
+ }
234
+ }}
235
+ size="md"
236
+ />
237
+ </div>
159
238
  <SchemaForm
160
239
  on:keydownCmdEnter={testPreview}
161
240
  disabledArgs={Object.entries(runnable?.fields ?? {})
@@ -167,7 +246,59 @@ $effect(() => {
167
246
  </div>
168
247
  </Pane>
169
248
  <Pane size={50}>
170
- <RunnableJobPanelInner frontendJob={false} {testJob} {testIsLoading} />
249
+ {#if showDebugPanel || hasDebugResult}
250
+ <Splitpanes horizontal class="h-full">
251
+ <Pane size={50} minSize={15}>
252
+ <Splitpanes horizontal class="h-full">
253
+ <Pane size={50} minSize={10}>
254
+ <LogViewer
255
+ small
256
+ content={$debugState.logs}
257
+ isLoading={$debugState.running && !$debugState.stopped}
258
+ tag={undefined}
259
+ />
260
+ </Pane>
261
+ <Pane size={50} minSize={10}>
262
+ {#if hasDebugResult}
263
+ <div class="h-full p-2 overflow-auto">
264
+ <DisplayResult
265
+ result={$debugState.result}
266
+ language={runnable?.inlineScript?.language}
267
+ />
268
+ </div>
269
+ {:else}
270
+ <div
271
+ class="h-full flex items-center justify-center text-sm text-tertiary"
272
+ >
273
+ {#if $debugState.running && !$debugState.stopped}
274
+ Running...
275
+ {:else if $debugState.stopped}
276
+ Paused at breakpoint
277
+ {:else}
278
+ Waiting for debug session
279
+ {/if}
280
+ </div>
281
+ {/if}
282
+ </Pane>
283
+ </Splitpanes>
284
+ </Pane>
285
+ <Pane size={50} minSize={15}>
286
+ <DebugPanel
287
+ stackFrames={$debugState.stackFrames}
288
+ scopes={$debugState.scopes}
289
+ variables={$debugState.variables}
290
+ client={dapClient}
291
+ bind:selectedFrameId={selectedDebugFrameId}
292
+ />
293
+ </Pane>
294
+ </Splitpanes>
295
+ {:else if debugMode && isDebuggableScript}
296
+ <div class="h-full flex items-center justify-center text-sm text-tertiary">
297
+ Click "Debug" in the toolbar to start debugging
298
+ </div>
299
+ {:else}
300
+ <RunnableJobPanelInner frontendJob={false} {testJob} {testIsLoading} />
301
+ {/if}
171
302
  </Pane>
172
303
  </Splitpanes>
173
304
  </SplitPanesWrapper>
@@ -11,6 +11,14 @@ interface Props {
11
11
  id: string;
12
12
  appPath: string;
13
13
  lastDeployedCode?: string | undefined;
14
+ /** Called when code is selected in the editor */
15
+ onSelectionChange?: (selection: {
16
+ content: string;
17
+ startLine: number;
18
+ endLine: number;
19
+ startColumn: number;
20
+ endColumn: number;
21
+ } | null) => void;
14
22
  }
15
23
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
24
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">import { workspaceStore } from '../../stores';
2
2
  import RawAppInlineScripRunnable, {} from './RawAppInlineScriptRunnable.svelte';
3
3
  import { createScriptFromInlineScript } from '../apps/editor/inlineScriptsPanel/utils';
4
- let { runnables, selectedRunnable = $bindable(), appPath } = $props();
4
+ let { runnables = $bindable(), selectedRunnable = $bindable(), appPath, onSelectionChange } = $props();
5
5
  </script>
6
6
 
7
7
  {#if !selectedRunnable}
@@ -28,6 +28,7 @@ let { runnables, selectedRunnable = $bindable(), appPath } = $props();
28
28
  }}
29
29
  id={selectedRunnable}
30
30
  bind:runnable={runnables[selectedRunnable]}
31
+ {onSelectionChange}
31
32
  />{/key}
32
33
  {:else}
33
34
  <div class="text-sm text-primary text-center py-8 px-2">
@@ -4,7 +4,15 @@ interface Props {
4
4
  selectedRunnable: string | undefined;
5
5
  appPath: string;
6
6
  initRunnablesContent: Record<string, string>;
7
+ /** Called when code is selected in the editor */
8
+ onSelectionChange?: (selection: {
9
+ content: string;
10
+ startLine: number;
11
+ endLine: number;
12
+ startColumn: number;
13
+ endColumn: number;
14
+ } | null) => void;
7
15
  }
8
- declare const RawAppInlineScriptsPanel: import("svelte").Component<Props, {}, "selectedRunnable">;
16
+ declare const RawAppInlineScriptsPanel: import("svelte").Component<Props, {}, "runnables" | "selectedRunnable">;
9
17
  type RawAppInlineScriptsPanel = ReturnType<typeof RawAppInlineScriptsPanel>;
10
18
  export default RawAppInlineScriptsPanel;
@@ -3,18 +3,33 @@ import { addWhitespaceBeforeCapitals, capitalize, classNames } from '../../utils
3
3
  import Tooltip from '../Tooltip.svelte';
4
4
  import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
5
5
  import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
6
- import { Loader2, Pen, User } from 'lucide-svelte';
6
+ import { Loader2, Pen, User, Shield } from 'lucide-svelte';
7
7
  import Toggle from '../Toggle.svelte';
8
8
  import StaticInputEditor from '../apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte';
9
9
  import { fieldTypeToTsType } from '../apps/utils';
10
+ import Select from '../select/Select.svelte';
11
+ import { userStore, workspaceStore } from '../../stores';
12
+ // Build ctx properties with current user's actual values
13
+ let ctxProperties = $derived([
14
+ { value: 'username', label: 'Username', subtitle: `string — "${$userStore?.username ?? 'unknown'}"` },
15
+ { value: 'email', label: 'Email', subtitle: `string — "${$userStore?.email ?? 'unknown'}"` },
16
+ { value: 'groups', label: 'Groups', subtitle: `string[] — ${JSON.stringify($userStore?.groups ?? [])}` },
17
+ { value: 'workspace', label: 'Workspace', subtitle: `string — "${$workspaceStore ?? 'unknown'}"` },
18
+ { value: 'author', label: 'Author', subtitle: `string — "${$userStore?.email ?? 'unknown'}"` }
19
+ ]);
10
20
  let { id, componentInput = $bindable(), key, shouldCapitalize = true, resourceOnly = false, tooltip = undefined, fieldType, subFieldType, format, selectOptions, placeholder, customTitle = undefined, displayType = false, allowTypeChange = true, loading = false, documentationLink = undefined, markdownTooltip = undefined } = $props();
11
21
  run(() => {
12
22
  if (componentInput == undefined) {
13
23
  //@ts-ignore
14
24
  componentInput = {
15
- type: 'user'
25
+ type: 'user',
26
+ fieldType
16
27
  };
17
28
  }
29
+ else if (componentInput.fieldType == undefined && fieldType) {
30
+ // Ensure fieldType is set on existing inputs
31
+ componentInput = { ...componentInput, fieldType };
32
+ }
18
33
  });
19
34
  </script>
20
35
 
@@ -50,10 +65,25 @@ run(() => {
50
65
 
51
66
  <div class={classNames('flex gap-x-2 gap-y-1 justify-end items-center')}>
52
67
  {#if componentInput?.type && allowTypeChange !== false}
53
- <ToggleButtonGroup bind:selected={componentInput.type}>
68
+ <ToggleButtonGroup
69
+ selected={componentInput.type}
70
+ onSelected={(newType) => {
71
+ // Preserve fieldType and other properties when changing type
72
+ componentInput = {
73
+ ...componentInput,
74
+ type: newType,
75
+ fieldType: componentInput.fieldType ?? fieldType
76
+ }
77
+ // Clear ctx when switching away from ctx type
78
+ if (newType !== 'ctx') {
79
+ delete componentInput.ctx
80
+ }
81
+ }}
82
+ >
54
83
  {#snippet children({ item })}
55
84
  <ToggleButton {item} value="user" icon={User} iconOnly tooltip="User Input" />
56
85
  <ToggleButton {item} value="static" icon={Pen} iconOnly tooltip="Static" />
86
+ <ToggleButton {item} value="ctx" icon={Shield} iconOnly tooltip="Context (secure backend value)" />
57
87
  {/snippet}
58
88
  </ToggleButtonGroup>
59
89
  {/if}
@@ -72,6 +102,20 @@ run(() => {
72
102
  bind:componentInput
73
103
  />
74
104
  </div>
105
+ {:else if componentInput?.type === 'ctx'}
106
+ <div class="w-full">
107
+ <Select
108
+ items={ctxProperties}
109
+ bind:value={componentInput.ctx}
110
+ placeholder="Select context property"
111
+ />
112
+ {#if componentInput.ctx}
113
+ <span class="text-2xs italic text-tertiary mt-1 flex items-center gap-1">
114
+ <Shield size={12} />
115
+ Securely resolved by the backend (cannot be altered by users)
116
+ </span>
117
+ {/if}
118
+ </div>
75
119
  {:else if componentInput?.type === 'user' || componentInput?.type == undefined}
76
120
  <span class="text-2xs italic text-primary">Field's value is a frontend input</span>
77
121
  {/if}
@@ -1,8 +1,8 @@
1
- import type { RichConfiguration } from '../apps/types';
2
1
  import type { InputType } from '../apps/inputType';
2
+ type RawAppInput = any;
3
3
  interface Props {
4
4
  id: string;
5
- componentInput: RichConfiguration;
5
+ componentInput: RawAppInput;
6
6
  key: string;
7
7
  shouldCapitalize?: boolean;
8
8
  resourceOnly?: boolean;
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">import { Loader2 } from 'lucide-svelte';
2
2
  import PanelSection from '../apps/editor/settingsPanel/common/PanelSection.svelte';
3
+ import TextInput from '../text_input/TextInput.svelte';
3
4
  let props = $props();
4
5
  let search = $state('');
5
6
  const filteredModules = $derived({
@@ -16,30 +17,30 @@ const filteredModules = $derived({
16
17
  </script>
17
18
 
18
19
  <PanelSection
19
- size="sm"
20
+ size="xs"
20
21
  collapsible
21
22
  initiallyCollapsed
22
- titlePadding="pl-1 !text-tertiary"
23
+ titlePadding="!text-tertiary"
23
24
  fullHeight={false}
24
25
  title="packages ({Object.keys(props.modules?.installed ?? {}).length})"
25
26
  id="app-editor-frontend-panel-modules"
26
27
  >
27
- <input type="text" class="w-full max-w-sm" placeholder="Search packages" bind:value={search} />
28
+ <TextInput inputProps={{ placeholder: 'Search packages' }} size="sm" bind:value={search} />
28
29
  <div class="mt-2 flex flex-col gap-4 w-full">
29
30
  {#each ['direct', 'indirect', 'dev'] as type}
30
31
  {@const typeModules = filteredModules[type]}
31
32
  {#if typeModules.length > 0}
32
33
  <div class="flex flex-col gap-1">
33
- <div class="text-sm px-2 text-secondary font-mono uppercase"
34
+ <div class="text-xs px-2 text-hint text-2xs"
34
35
  >{type}
35
- <span class="text-2xs text-tertiary">({typeModules.length})</span></div
36
+ <span>({typeModules.length})</span></div
36
37
  >
37
38
  {#each typeModules as mod (mod)}
38
- <div class="text-xs px-2 text-secondary font-mono flex justify-between w-full"
39
+ <div class="text-xs px-2 text-primary font-mono flex justify-between w-full"
39
40
  ><div class="truncate">{mod}</div>
40
41
  <div class="flex items-center gap-1">
41
42
  {#if props.modules?.installed?.[mod]}
42
- <span class="text-2xs px-2 text-tertiary font-mono">
43
+ <span class="text-2xs px-2 text-hint">
43
44
  {props.modules?.installed?.[mod]}
44
45
  </span>
45
46
  {:else}
@@ -51,5 +52,10 @@ const filteredModules = $derived({
51
52
  </div>
52
53
  {/if}
53
54
  {/each}
55
+ {#if filteredModules.direct.length === 0 && filteredModules.indirect.length === 0 && filteredModules.dev.length === 0}
56
+ <span class="text-xs px-2 text-hint text-2xs"
57
+ >No packages found. Edit <b>package.json</b> to add them.</span
58
+ >
59
+ {/if}
54
60
  </div>
55
61
  </PanelSection>
@@ -1,15 +1,57 @@
1
1
  <script lang="ts">import {} from '../../stores';
2
2
  import RawAppBackgroundRunner from './RawAppBackgroundRunner.svelte';
3
3
  import { htmlContent } from './utils';
4
+ import { onMount } from 'svelte';
4
5
  let { workspace, user, secret, path, runnables } = $props();
5
6
  let iframe = $state();
7
+ // Get initial hash from parent URL to pass to iframe
8
+ let initialHash = $state('');
9
+ onMount(() => {
10
+ initialHash = window.location.hash || '';
11
+ });
12
+ // Use blob URL instead of srcDoc to give the iframe a proper origin.
13
+ // srcDoc iframes have "null" origin which breaks URL constructor in routers.
14
+ let blobUrl = $derived.by(() => {
15
+ if (!secret)
16
+ return undefined;
17
+ const baseUrl = typeof window !== 'undefined' ? window.location.origin : '';
18
+ const html = htmlContent(workspace, secret, { ctx: user, workspace }, baseUrl, initialHash);
19
+ const blob = new Blob([html], { type: 'text/html' });
20
+ return URL.createObjectURL(blob);
21
+ });
22
+ // Cleanup blob URL when it changes or component unmounts
23
+ $effect(() => {
24
+ const url = blobUrl;
25
+ return () => {
26
+ if (url)
27
+ URL.revokeObjectURL(url);
28
+ };
29
+ });
30
+ // Listen for hash changes from iframe and update parent URL
31
+ $effect(() => {
32
+ function handleMessage(event) {
33
+ console.log('[Parent] Received message:', event.data);
34
+ if (event.data?.type === 'windmill:hashchange') {
35
+ const newHash = event.data.hash || '';
36
+ console.log('[Parent] Updating hash to:', newHash);
37
+ // Update parent URL without triggering navigation
38
+ if (window.location.hash !== newHash) {
39
+ history.replaceState(null, '', newHash || window.location.pathname);
40
+ }
41
+ }
42
+ }
43
+ window.addEventListener('message', handleMessage);
44
+ return () => window.removeEventListener('message', handleMessage);
45
+ });
6
46
  </script>
7
47
 
8
48
  <RawAppBackgroundRunner {workspace} editor={false} {iframe} {runnables} {path} />
9
49
 
10
- <iframe
11
- bind:this={iframe}
12
- title="raw-app"
13
- srcDoc={htmlContent(workspace, secret, { ctx: user, workspace })}
14
- class="w-full h-full min-h-screen bg-white border-none"
15
- ></iframe>
50
+ {#if blobUrl}
51
+ <iframe
52
+ bind:this={iframe}
53
+ title="raw-app"
54
+ src={blobUrl}
55
+ class="w-full h-full min-h-screen bg-white border-none"
56
+ ></iframe>
57
+ {/if}