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,6 +1,12 @@
1
- <script lang="ts">import { classNames, displayDate } from '../../utils';
2
- import { GitBranch } from 'lucide-svelte';
3
- let { entries, branches, selectedId, onSelect } = $props();
1
+ <script lang="ts">import { displayDate } from '../../utils';
2
+ import { Circle, CircleDot, CircleDotDashed, CircleDashed } from 'lucide-svelte';
3
+ import { twMerge } from 'tailwind-merge';
4
+ let { entries, branches, selectedId, onSelect, onSelectCurrent } = $props();
5
+ // Constants for layout
6
+ const LINE_X = 8; // X position of main timeline line (center of dots)
7
+ const BRANCH_OFFSET_X = 45; // How far branches are offset horizontally
8
+ const ENTRY_HEIGHT = 28; // Height of each entry
9
+ const CURRENT_HEIGHT = 32; // Height of current state button
4
10
  // Build a map of fork points to their branches for rendering
5
11
  const branchesByForkPoint = $derived(branches.reduce((acc, branch) => {
6
12
  if (!acc[branch.forkPointId]) {
@@ -9,98 +15,276 @@ const branchesByForkPoint = $derived(branches.reduce((acc, branch) => {
9
15
  acc[branch.forkPointId].push(branch);
10
16
  return acc;
11
17
  }, {}));
12
- // Entries in reverse order (newest first)
18
+ // Entries in reverse order (newest first) for display
13
19
  const reversedEntries = $derived(entries.slice().reverse());
20
+ // Calculate positions for rendering
21
+ const entryPositions = $derived.by(() => {
22
+ const positions = {};
23
+ let currentY = CURRENT_HEIGHT + 12; // Start below current button
24
+ reversedEntries.forEach((entry, index) => {
25
+ // For each entry, calculate space needed for branches above it
26
+ const entryBranches = branchesByForkPoint[entry.id] ?? [];
27
+ const branchSpaceAbove = entryBranches.reduce((total, branch) => {
28
+ return total + branch.entries.length * ENTRY_HEIGHT;
29
+ }, 0);
30
+ // Add space for branches above this entry
31
+ currentY += branchSpaceAbove;
32
+ // Position this entry
33
+ positions[entry.id] = { x: LINE_X, y: currentY, index };
34
+ // Move to next entry position
35
+ currentY += ENTRY_HEIGHT;
36
+ });
37
+ return positions;
38
+ });
39
+ // Calculate total height needed for the container
40
+ const totalHeight = $derived.by(() => {
41
+ const mainTimelineMaxY = Object.values(entryPositions).reduce((max, pos) => Math.max(max, pos.y), 0);
42
+ const branchMaxY = Object.values(branchPositions)
43
+ .flatMap((groups) => Object.values(groups).flatMap((nodes) => nodes.map((node) => node.y)))
44
+ .reduce((max, y) => Math.max(max, y), 0);
45
+ return Math.max(mainTimelineMaxY, branchMaxY, 150) + 20; // Add padding at bottom
46
+ });
47
+ // Calculate branch positions
48
+ const branchPositions = $derived.by(() => {
49
+ const positions = {};
50
+ Object.entries(branchesByForkPoint).forEach(([forkPointId, forkBranches]) => {
51
+ const forkPoint = entryPositions[Number(forkPointId)];
52
+ if (!forkPoint)
53
+ return;
54
+ positions[Number(forkPointId)] = {};
55
+ forkBranches.forEach((branch) => {
56
+ positions[Number(forkPointId)][branch.id] = [];
57
+ // Branch flows from fork point upward (toward newer/current)
58
+ // Start just above the fork point and continue upward
59
+ // Oldest branch entry is closest to fork point, newest is furthest
60
+ let currentY = forkPoint.y - ENTRY_HEIGHT;
61
+ branch.entries.forEach((entry) => {
62
+ positions[Number(forkPointId)][branch.id].push({
63
+ id: entry.id,
64
+ x: LINE_X + BRANCH_OFFSET_X,
65
+ y: currentY
66
+ });
67
+ currentY -= ENTRY_HEIGHT; // Move upward (decreasing Y)
68
+ });
69
+ });
70
+ });
71
+ return positions;
72
+ });
73
+ // Helper to create SVG path for branch connection
74
+ function createBranchPath(startX, startY, endX, endY) {
75
+ // Control points are vertically offset to create vertical tangents
76
+ const controlOffset = Math.abs(startY - endY) * 0.85; // 85% of vertical distance for very intense curve
77
+ // Both tangents point upward (toward smaller Y values)
78
+ // Start control point: above the start point
79
+ // End control point: above the end point (since endY < startY, we add to go further up)
80
+ return `M ${startX} ${startY} C ${startX} ${startY - controlOffset}, ${endX} ${endY + controlOffset}, ${endX} ${endY}`;
81
+ }
14
82
  </script>
15
83
 
84
+ {#snippet timelineButton(
85
+ label: string,
86
+ timestamp: string | null,
87
+ isSelected: boolean,
88
+ onClick: () => void,
89
+ position: { x: number; y: number },
90
+ type: 'current' | 'main' | 'branch' = 'main'
91
+ )}
92
+ {@const colors = {
93
+ current: {
94
+ selected: 'text-accent',
95
+ default: 'text-primary',
96
+ textSelected: 'text-accent',
97
+ bgSelected: 'bg-surface-accent-selected'
98
+ },
99
+ main: {
100
+ selected: 'text-accent',
101
+ default: 'text-primary',
102
+ textSelected: 'text-accent',
103
+ bgSelected: 'bg-surface-accent-selected'
104
+ },
105
+ branch: {
106
+ selected: 'text-amber-500 dark:text-amber-400',
107
+ default: 'text-secondary',
108
+ textSelected: 'text-amber-600 dark:text-amber-400',
109
+ bgSelected: 'bg-amber-50 dark:bg-amber-900/20'
110
+ }
111
+ }}
112
+ {@const color = colors[type]}
113
+
114
+ <button
115
+ onclick={onClick}
116
+ aria-label={timestamp ? `Snapshot from ${displayDate(timestamp, true, false)}` : label}
117
+ aria-current={isSelected ? 'true' : 'false'}
118
+ class={'absolute flex items-center gap-1 transition-all duration-200 animate-fadeIn'}
119
+ style="left: {position.x - 6}px; top: {position.y - 6}px;"
120
+ >
121
+ {#if isSelected}
122
+ {#if type === 'current'}
123
+ <CircleDotDashed size={12} class="bg-surface {color.selected}" />
124
+ {:else}
125
+ <CircleDot size={12} class="bg-surface {color.selected}" />
126
+ {/if}
127
+ {:else if type === 'current'}
128
+ <CircleDashed size={12} class="bg-surface {color.default}" />
129
+ {:else}
130
+ <Circle size={12} class="bg-surface {color.default}" />
131
+ {/if}
132
+ <span
133
+ class={twMerge(
134
+ 'text-2xs truncate px-2 py-1 rounded-md',
135
+ type === 'current' ? 'font-semibold text-emphasis' : 'font-normal',
136
+ isSelected ? color.textSelected : 'text-tertiary',
137
+ isSelected ? color.bgSelected : 'hover:bg-surface-hover'
138
+ )}
139
+ >
140
+ {timestamp ? displayDate(timestamp, true, false) : label}
141
+ </span>
142
+ </button>
143
+ {/snippet}
144
+
16
145
  {#if entries.length === 0}
17
146
  <div class="text-tertiary py-2 text-center text-2xs">
18
147
  No snapshots yet. Auto-saved every 5 min.
19
148
  </div>
20
149
  {:else}
21
- <div class="relative w-full">
22
- <!-- Timeline line -->
23
- <div class="absolute left-[0.95rem] top-2 bottom-2 w-px bg-gray-200 dark:bg-gray-700"></div>
150
+ <div
151
+ class="relative w-full"
152
+ style="height: {totalHeight}px; transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1);"
153
+ role="list"
154
+ aria-label="History timeline"
155
+ >
156
+ <!-- SVG for lines and connections -->
157
+ <svg class="absolute inset-0 pointer-events-none" style="width: 100%; height: 100%;">
158
+ <!-- Always show the main line if there are entries -->
159
+ {#if reversedEntries.length > 0}
160
+ {@const mainTimelineMaxY = Math.max(...Object.values(entryPositions).map((pos) => pos.y))}
161
+ {@const branchMaxY = Object.values(branchPositions)
162
+ .flatMap((groups) =>
163
+ Object.values(groups).flatMap((nodes) => nodes.map((node) => node.y))
164
+ )
165
+ .reduce((max, y) => Math.max(max, y), 0)}
166
+ {@const maxY = Math.max(mainTimelineMaxY, branchMaxY)}
167
+ <line
168
+ x1={LINE_X}
169
+ y1={8}
170
+ x2={LINE_X}
171
+ y2={maxY + 8}
172
+ stroke="currentColor"
173
+ stroke-width="1"
174
+ opacity="1"
175
+ class="text-primary"
176
+ style="transition: y2 0.3s cubic-bezier(0.4, 0, 0.2, 1)"
177
+ />
178
+ {/if}
24
179
 
25
- {#each reversedEntries as entry, i (entry.id)}
26
- {@const isSelected = selectedId === entry.id}
27
- {@const isFirst = i === 0}
28
- {@const entryBranches = branchesByForkPoint[entry.id] ?? []}
180
+ <!-- Branch connection lines -->
181
+ {#each Object.entries(branchPositions) as [forkPointId, branchGroups] (forkPointId)}
182
+ {@const forkPoint = entryPositions[Number(forkPointId)]}
183
+ {#if forkPoint}
184
+ {#each Object.entries(branchGroups) as [branchId, branchNodes] (branchId)}
185
+ {#if branchNodes.length > 0}
186
+ <!-- Connection from fork point to first branch entry -->
187
+ <path
188
+ d={createBranchPath(forkPoint.x, forkPoint.y, branchNodes[0].x, branchNodes[0].y)}
189
+ stroke="currentColor"
190
+ stroke-width="1.5"
191
+ fill="none"
192
+ stroke-dasharray="4 2"
193
+ opacity="0.6"
194
+ class="text-secondary transition-all duration-300"
195
+ />
29
196
 
30
- <!-- Render branches ABOVE their fork point (newest first within branch) -->
31
- {#each entryBranches as branch (branch.id)}
32
- <div
33
- class="ml-4 relative border-l border-dashed border-gray-300 dark:border-gray-600 pl-2 my-1"
34
- >
35
- <div class="absolute left-3 bottom-2 text-tertiary">
36
- <GitBranch size={10} />
37
- </div>
38
- <!-- Branch entries in reverse order (newest first) -->
39
- {#each branch.entries.slice().reverse() as branchEntry (branchEntry.id)}
40
- {@const isBranchSelected = selectedId === branchEntry.id}
41
- <button
42
- onclick={() => onSelect(branchEntry.id)}
43
- class={classNames(
44
- 'relative flex items-center gap-2 py-1 pr-1 pl-2 w-full text-left rounded transition-colors',
45
- 'hover:bg-surface-hover',
46
- isBranchSelected ? 'bg-amber-50 dark:bg-amber-900/20' : ''
47
- )}
48
- >
49
- <!-- Branch dot -->
50
- <div
51
- class={classNames(
52
- 'w-1 h-1 rounded-full',
53
- isBranchSelected
54
- ? 'bg-amber-500 dark:bg-amber-400'
55
- : 'bg-gray-300 dark:bg-gray-600'
56
- )}
57
- ></div>
58
- <span
59
- class={classNames(
60
- 'text-2xs truncate',
61
- isBranchSelected
62
- ? 'text-amber-600 dark:text-amber-400 font-medium'
63
- : 'text-tertiary'
64
- )}
65
- >
66
- {displayDate(branchEntry.timestamp.toISOString(), true, false)}
67
- </span>
68
- </button>
197
+ <!-- Vertical line connecting branch entries within this branch -->
198
+ {#if branchNodes.length > 1}
199
+ {@const firstNode = branchNodes[0]}
200
+ {@const lastNode = branchNodes[branchNodes.length - 1]}
201
+ <line
202
+ x1={firstNode.x}
203
+ y1={firstNode.y}
204
+ x2={lastNode.x}
205
+ y2={lastNode.y}
206
+ stroke="currentColor"
207
+ stroke-width="1.5"
208
+ stroke-dasharray="4 2"
209
+ opacity="0.6"
210
+ class="text-secondary"
211
+ style="transition: y1 0.3s cubic-bezier(0.4, 0, 0.2, 1), y2 0.3s cubic-bezier(0.4, 0, 0.2, 1)"
212
+ />
213
+ {/if}
214
+ {/if}
69
215
  {/each}
70
- </div>
216
+ {/if}
71
217
  {/each}
218
+ </svg>
72
219
 
73
- <!-- Main timeline entry -->
74
- <button
75
- onclick={() => onSelect(entry.id)}
76
- class={classNames(
77
- 'relative flex items-center gap-2 py-1 pr-1 pl-3 w-full text-left rounded transition-colors',
78
- 'hover:bg-surface-hover',
79
- isSelected ? 'bg-blue-50 dark:bg-blue-900/20' : ''
80
- )}
81
- >
82
- <!-- Timeline dot -->
83
- <div
84
- class={classNames(
85
- 'absolute left-0 w-1.5 h-1.5 rounded-full border-[1.5px] bg-surface',
86
- isSelected
87
- ? 'border-blue-500 dark:border-blue-400'
88
- : 'border-gray-300 dark:border-gray-600'
89
- )}
90
- ></div>
220
+ <!-- Interactive elements -->
221
+ <div class="relative">
222
+ <!-- Current Working State -->
223
+ {@render timelineButton(
224
+ 'Current',
225
+ null,
226
+ selectedId === undefined,
227
+ () => onSelectCurrent?.(),
228
+ { x: LINE_X, y: 6 },
229
+ 'current'
230
+ )}
231
+
232
+ <!-- Main timeline entries -->
233
+ {#each reversedEntries as entry (entry.id)}
234
+ {@const pos = entryPositions[entry.id]}
235
+ {@const isSelected = selectedId === entry.id}
236
+ {@const entryBranches = branchesByForkPoint[entry.id] ?? []}
91
237
 
92
- <span
93
- class={classNames(
94
- 'text-2xs truncate',
95
- isSelected ? 'text-blue-600 dark:text-blue-400 font-medium' : 'text-secondary'
238
+ {#if pos}
239
+ <!-- Main entry button -->
240
+ {@render timelineButton(
241
+ '',
242
+ entry.timestamp.toISOString(),
243
+ isSelected,
244
+ () => onSelect(entry.id),
245
+ pos,
246
+ 'main'
96
247
  )}
97
- >
98
- {#if isFirst && !isSelected}
99
- <span class="text-tertiary">Latest · </span>
248
+
249
+ <!-- Branch entries -->
250
+ {#if entryBranches.length > 0}
251
+ {#each Object.values(branchPositions[entry.id] ?? {}) as branchNodes}
252
+ {#each branchNodes as branchNode (branchNode.id)}
253
+ {@const branchEntry = branches
254
+ .flatMap((b) => b.entries)
255
+ .find((e) => e.id === branchNode.id)}
256
+ {@const isBranchSelected = selectedId === branchNode.id}
257
+ {#if branchEntry}
258
+ {@render timelineButton(
259
+ '',
260
+ branchEntry.timestamp.toISOString(),
261
+ isBranchSelected,
262
+ () => onSelect(branchNode.id),
263
+ { x: branchNode.x, y: branchNode.y - 4 },
264
+ 'branch'
265
+ )}
266
+ {/if}
267
+ {/each}
268
+ {/each}
100
269
  {/if}
101
- {displayDate(entry.timestamp.toISOString(), true, false)}
102
- </span>
103
- </button>
104
- {/each}
270
+ {/if}
271
+ {/each}
272
+ </div>
105
273
  </div>
106
274
  {/if}
275
+
276
+ <style>
277
+ @keyframes fadeIn {
278
+ from {
279
+ opacity: 0;
280
+ transform: translateY(-10px);
281
+ }
282
+ to {
283
+ opacity: 1;
284
+ transform: translateY(0);
285
+ }
286
+ }
287
+
288
+ .animate-fadeIn {
289
+ animation: fadeIn 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
290
+ }</style>
@@ -4,6 +4,7 @@ interface Props {
4
4
  branches: HistoryBranch[];
5
5
  selectedId: number | undefined;
6
6
  onSelect: (id: number) => void;
7
+ onSelectCurrent?: () => void;
7
8
  }
8
9
  declare const RawAppHistoryList: import("svelte").Component<Props, {}, "">;
9
10
  type RawAppHistoryList = ReturnType<typeof RawAppHistoryList>;
@@ -54,6 +54,7 @@ export declare class RawAppHistoryManager {
54
54
  private entryIdCounter;
55
55
  private branchIdCounter;
56
56
  private hasPendingChanges;
57
+ private temporaryCurrentState;
57
58
  readonly hasEntries: boolean;
58
59
  readonly entryCount: number;
59
60
  readonly allEntries: HistoryEntry[];
@@ -61,6 +62,7 @@ export declare class RawAppHistoryManager {
61
62
  readonly canSnapshot: boolean;
62
63
  readonly selectedEntryId: number | undefined;
63
64
  readonly needsSnapshotBeforeNav: boolean;
65
+ readonly hasTemporaryState: boolean;
64
66
  readonly canUndo: boolean;
65
67
  readonly canRedo: boolean;
66
68
  constructor(config: HistoryConfig);
@@ -115,9 +117,21 @@ export declare class RawAppHistoryManager {
115
117
  */
116
118
  selectEntry(id: number): HistoryEntry | undefined;
117
119
  /**
118
- * Clear selection (go back to latest state)
120
+ * Clear selection (go back to current state)
119
121
  */
120
122
  clearSelection(): void;
123
+ /**
124
+ * Save current state temporarily when viewing history
125
+ */
126
+ saveTemporaryCurrentState(files: Record<string, string>, runnables: Record<string, Runnable>, summary: string, data: RawAppData): void;
127
+ /**
128
+ * Get and clear temporary current state
129
+ */
130
+ getAndClearTemporaryState(): HistoryEntry | undefined;
131
+ /**
132
+ * Convert temporary current state to a real snapshot
133
+ */
134
+ convertTemporaryToSnapshot(): void;
121
135
  /**
122
136
  * Get entry by ID (searches main timeline and branches)
123
137
  */
@@ -31,6 +31,8 @@ export class RawAppHistoryManager {
31
31
  branchIdCounter = $state(0);
32
32
  // Track if current state has pending changes
33
33
  hasPendingChanges = $state(false);
34
+ // Temporary storage for current state when viewing history
35
+ temporaryCurrentState = $state(undefined);
34
36
  // Derived state
35
37
  hasEntries = $derived(this.entries.length > 0);
36
38
  entryCount = $derived(this.entries.length);
@@ -49,6 +51,8 @@ export class RawAppHistoryManager {
49
51
  });
50
52
  // Whether we need to save current state before navigating
51
53
  needsSnapshotBeforeNav = $derived(this.currentIndex === -1 && this.currentBranchId === undefined && this.hasPendingChanges);
54
+ // Whether we have a temporary current state saved
55
+ hasTemporaryState = $derived(this.temporaryCurrentState !== undefined);
52
56
  canUndo = $derived(this.currentIndex > 0 ||
53
57
  (this.currentIndex === -1 && this.entries.length > 1) ||
54
58
  (this.currentIndex === -1 && this.entries.length === 1 && this.hasPendingChanges));
@@ -111,18 +115,23 @@ export class RawAppHistoryManager {
111
115
  * When making changes from a historical position, create a branch from the "future"
112
116
  */
113
117
  markPendingChanges() {
114
- // If we're on a branch and making changes, that branch becomes main
115
- if (this.currentBranchId !== undefined) {
116
- this.promoteBranchToMain();
117
- }
118
- // If we're at a historical position on main timeline
119
- else if (this.currentIndex !== -1 && this.currentIndex < this.entries.length - 1) {
120
- this.createBranchFromFuture();
118
+ // If we're viewing history (not at current state)
119
+ if (this.currentIndex !== -1 || this.currentBranchId !== undefined) {
120
+ // Convert temporary current state to a real snapshot first
121
+ this.convertTemporaryToSnapshot();
122
+ // If we're on a branch and making changes, that branch becomes main
123
+ if (this.currentBranchId !== undefined) {
124
+ this.promoteBranchToMain();
125
+ }
126
+ // If we're at a historical position on main timeline
127
+ else if (this.currentIndex !== -1 && this.currentIndex < this.entries.length - 1) {
128
+ this.createBranchFromFuture();
129
+ }
130
+ // Clear selection - we're now at current state
131
+ this.currentIndex = -1;
132
+ this.currentBranchId = undefined;
133
+ this.currentBranchEntryIndex = -1;
121
134
  }
122
- // Clear selection - we're now in a new unsaved state
123
- this.currentIndex = -1;
124
- this.currentBranchId = undefined;
125
- this.currentBranchEntryIndex = -1;
126
135
  this.hasPendingChanges = true;
127
136
  }
128
137
  /**
@@ -244,12 +253,36 @@ export class RawAppHistoryManager {
244
253
  return undefined;
245
254
  }
246
255
  /**
247
- * Clear selection (go back to latest state)
256
+ * Clear selection (go back to current state)
248
257
  */
249
258
  clearSelection() {
250
259
  this.currentIndex = -1;
251
260
  this.currentBranchId = undefined;
252
261
  this.currentBranchEntryIndex = -1;
262
+ this.hasPendingChanges = false;
263
+ }
264
+ /**
265
+ * Save current state temporarily when viewing history
266
+ */
267
+ saveTemporaryCurrentState(files, runnables, summary, data) {
268
+ this.temporaryCurrentState = this.createSnapshot(files, runnables, summary, data);
269
+ }
270
+ /**
271
+ * Get and clear temporary current state
272
+ */
273
+ getAndClearTemporaryState() {
274
+ const temp = this.temporaryCurrentState;
275
+ this.temporaryCurrentState = undefined;
276
+ return temp;
277
+ }
278
+ /**
279
+ * Convert temporary current state to a real snapshot
280
+ */
281
+ convertTemporaryToSnapshot() {
282
+ if (this.temporaryCurrentState) {
283
+ this.addSnapshot(this.temporaryCurrentState);
284
+ this.temporaryCurrentState = undefined;
285
+ }
253
286
  }
254
287
  /**
255
288
  * Get entry by ID (searches main timeline and branches)
@@ -305,6 +338,7 @@ export class RawAppHistoryManager {
305
338
  this.currentIndex = -1;
306
339
  this.currentBranchId = undefined;
307
340
  this.currentBranchEntryIndex = -1;
341
+ this.temporaryCurrentState = undefined;
308
342
  }
309
343
  /**
310
344
  * Cleanup resources