libre-webui 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/README.md +57 -29
  2. package/backend/dist/index.d.ts.map +1 -1
  3. package/backend/dist/index.js +7 -0
  4. package/backend/dist/index.js.map +1 -1
  5. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.d.ts +9 -0
  6. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.d.ts.map +1 -0
  7. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.js +44 -0
  8. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.js.map +1 -0
  9. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.d.ts +9 -0
  10. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.d.ts.map +1 -0
  11. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.js +107 -0
  12. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.js.map +1 -0
  13. package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -1
  14. package/backend/dist/persistence/postgresMigrationRegistry.js +8 -0
  15. package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -1
  16. package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -1
  17. package/backend/dist/persistence/postgresResourceRepositories.js +179 -4
  18. package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -1
  19. package/backend/dist/persistence/postgresSecurityRepositories.d.ts.map +1 -1
  20. package/backend/dist/persistence/postgresSecurityRepositories.js +154 -0
  21. package/backend/dist/persistence/postgresSecurityRepositories.js.map +1 -1
  22. package/backend/dist/persistence/postgresWorkComputerMigration.d.ts +8 -0
  23. package/backend/dist/persistence/postgresWorkComputerMigration.d.ts.map +1 -0
  24. package/backend/dist/persistence/postgresWorkComputerMigration.js +37 -0
  25. package/backend/dist/persistence/postgresWorkComputerMigration.js.map +1 -0
  26. package/backend/dist/persistence/postgresWorkTakeoverMigration.d.ts +9 -0
  27. package/backend/dist/persistence/postgresWorkTakeoverMigration.d.ts.map +1 -0
  28. package/backend/dist/persistence/postgresWorkTakeoverMigration.js +38 -0
  29. package/backend/dist/persistence/postgresWorkTakeoverMigration.js.map +1 -0
  30. package/backend/dist/persistence/resourceTypes.d.ts +64 -0
  31. package/backend/dist/persistence/resourceTypes.d.ts.map +1 -1
  32. package/backend/dist/persistence/resourceTypes.js.map +1 -1
  33. package/backend/dist/persistence/securityTypes.d.ts +60 -0
  34. package/backend/dist/persistence/securityTypes.d.ts.map +1 -1
  35. package/backend/dist/persistence/sqliteMigrations.d.ts +4 -0
  36. package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -1
  37. package/backend/dist/persistence/sqliteMigrations.js +267 -0
  38. package/backend/dist/persistence/sqliteMigrations.js.map +1 -1
  39. package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -1
  40. package/backend/dist/persistence/sqliteResourceRepositories.js +151 -7
  41. package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -1
  42. package/backend/dist/persistence/sqliteSecurityRepositories.d.ts.map +1 -1
  43. package/backend/dist/persistence/sqliteSecurityRepositories.js +140 -0
  44. package/backend/dist/persistence/sqliteSecurityRepositories.js.map +1 -1
  45. package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -1
  46. package/backend/dist/persistence/sqliteToPostgresMigration.js +45 -0
  47. package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -1
  48. package/backend/dist/platform/jobs/domainJobContracts.d.ts +2 -0
  49. package/backend/dist/platform/jobs/domainJobContracts.d.ts.map +1 -1
  50. package/backend/dist/platform/jobs/domainJobContracts.js +2 -0
  51. package/backend/dist/platform/jobs/domainJobContracts.js.map +1 -1
  52. package/backend/dist/platform/jobs/domainJobHandlers.d.ts.map +1 -1
  53. package/backend/dist/platform/jobs/domainJobHandlers.js +152 -2
  54. package/backend/dist/platform/jobs/domainJobHandlers.js.map +1 -1
  55. package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts.map +1 -1
  56. package/backend/dist/platform/workPersistence/postgresWorkPersistence.js +7 -3
  57. package/backend/dist/platform/workPersistence/postgresWorkPersistence.js.map +1 -1
  58. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts.map +1 -1
  59. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js +8 -4
  60. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js.map +1 -1
  61. package/backend/dist/platform/workPersistence/types.d.ts +2 -0
  62. package/backend/dist/platform/workPersistence/types.d.ts.map +1 -1
  63. package/backend/dist/platform/workPersistence/types.js.map +1 -1
  64. package/backend/dist/routes/auth.d.ts.map +1 -1
  65. package/backend/dist/routes/auth.js +427 -5
  66. package/backend/dist/routes/auth.js.map +1 -1
  67. package/backend/dist/routes/automations.d.ts.map +1 -1
  68. package/backend/dist/routes/automations.js +5 -0
  69. package/backend/dist/routes/automations.js.map +1 -1
  70. package/backend/dist/routes/documents.d.ts.map +1 -1
  71. package/backend/dist/routes/documents.js +4 -0
  72. package/backend/dist/routes/documents.js.map +1 -1
  73. package/backend/dist/routes/push.d.ts +3 -0
  74. package/backend/dist/routes/push.d.ts.map +1 -0
  75. package/backend/dist/routes/push.js +105 -0
  76. package/backend/dist/routes/push.js.map +1 -0
  77. package/backend/dist/routes/recovery.d.ts +3 -0
  78. package/backend/dist/routes/recovery.d.ts.map +1 -0
  79. package/backend/dist/routes/recovery.js +83 -0
  80. package/backend/dist/routes/recovery.js.map +1 -0
  81. package/backend/dist/routes/users.d.ts.map +1 -1
  82. package/backend/dist/routes/users.js +35 -0
  83. package/backend/dist/routes/users.js.map +1 -1
  84. package/backend/dist/routes/work.d.ts.map +1 -1
  85. package/backend/dist/routes/work.js +205 -1
  86. package/backend/dist/routes/work.js.map +1 -1
  87. package/backend/dist/services/authService.d.ts +8 -0
  88. package/backend/dist/services/authService.d.ts.map +1 -1
  89. package/backend/dist/services/authService.js +29 -0
  90. package/backend/dist/services/authService.js.map +1 -1
  91. package/backend/dist/services/automationSchedulerService.d.ts.map +1 -1
  92. package/backend/dist/services/automationSchedulerService.js +31 -0
  93. package/backend/dist/services/automationSchedulerService.js.map +1 -1
  94. package/backend/dist/services/automationService.d.ts +4 -1
  95. package/backend/dist/services/automationService.d.ts.map +1 -1
  96. package/backend/dist/services/automationService.js +27 -0
  97. package/backend/dist/services/automationService.js.map +1 -1
  98. package/backend/dist/services/dataArchiveService.d.ts.map +1 -1
  99. package/backend/dist/services/dataArchiveService.js +3 -0
  100. package/backend/dist/services/dataArchiveService.js.map +1 -1
  101. package/backend/dist/services/documentMediaExtractionService.d.ts +40 -0
  102. package/backend/dist/services/documentMediaExtractionService.d.ts.map +1 -0
  103. package/backend/dist/services/documentMediaExtractionService.js +157 -0
  104. package/backend/dist/services/documentMediaExtractionService.js.map +1 -0
  105. package/backend/dist/services/documentService.d.ts +6 -0
  106. package/backend/dist/services/documentService.d.ts.map +1 -1
  107. package/backend/dist/services/documentService.js +58 -4
  108. package/backend/dist/services/documentService.js.map +1 -1
  109. package/backend/dist/services/encryptionService.d.ts +6 -0
  110. package/backend/dist/services/encryptionService.d.ts.map +1 -1
  111. package/backend/dist/services/encryptionService.js +12 -0
  112. package/backend/dist/services/encryptionService.js.map +1 -1
  113. package/backend/dist/services/mfaService.d.ts +64 -0
  114. package/backend/dist/services/mfaService.d.ts.map +1 -0
  115. package/backend/dist/services/mfaService.js +262 -0
  116. package/backend/dist/services/mfaService.js.map +1 -0
  117. package/backend/dist/services/notificationService.d.ts +5 -0
  118. package/backend/dist/services/notificationService.d.ts.map +1 -1
  119. package/backend/dist/services/notificationService.js +33 -1
  120. package/backend/dist/services/notificationService.js.map +1 -1
  121. package/backend/dist/services/preferencesService.d.ts +1 -1
  122. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  123. package/backend/dist/services/preferencesService.js +1 -0
  124. package/backend/dist/services/preferencesService.js.map +1 -1
  125. package/backend/dist/services/recoveryDrillService.d.ts +57 -0
  126. package/backend/dist/services/recoveryDrillService.d.ts.map +1 -0
  127. package/backend/dist/services/recoveryDrillService.js +363 -0
  128. package/backend/dist/services/recoveryDrillService.js.map +1 -0
  129. package/backend/dist/services/webPushService.d.ts +71 -0
  130. package/backend/dist/services/webPushService.d.ts.map +1 -0
  131. package/backend/dist/services/webPushService.js +328 -0
  132. package/backend/dist/services/webPushService.js.map +1 -0
  133. package/backend/dist/services/webauthnService.d.ts +58 -0
  134. package/backend/dist/services/webauthnService.d.ts.map +1 -0
  135. package/backend/dist/services/webauthnService.js +301 -0
  136. package/backend/dist/services/webauthnService.js.map +1 -0
  137. package/backend/dist/services/websocketTicketService.d.ts +1 -1
  138. package/backend/dist/services/websocketTicketService.d.ts.map +1 -1
  139. package/backend/dist/services/websocketTicketService.js +3 -1
  140. package/backend/dist/services/websocketTicketService.js.map +1 -1
  141. package/backend/dist/services/workAgentGuidance.d.ts +14 -0
  142. package/backend/dist/services/workAgentGuidance.d.ts.map +1 -1
  143. package/backend/dist/services/workAgentGuidance.js +38 -2
  144. package/backend/dist/services/workAgentGuidance.js.map +1 -1
  145. package/backend/dist/services/workAgentService.d.ts +9 -0
  146. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  147. package/backend/dist/services/workAgentService.js +503 -13
  148. package/backend/dist/services/workAgentService.js.map +1 -1
  149. package/backend/dist/services/workComputerSetupService.d.ts +33 -0
  150. package/backend/dist/services/workComputerSetupService.d.ts.map +1 -0
  151. package/backend/dist/services/workComputerSetupService.js +164 -0
  152. package/backend/dist/services/workComputerSetupService.js.map +1 -0
  153. package/backend/dist/services/workComputerTeachService.d.ts +105 -0
  154. package/backend/dist/services/workComputerTeachService.d.ts.map +1 -0
  155. package/backend/dist/services/workComputerTeachService.js +513 -0
  156. package/backend/dist/services/workComputerTeachService.js.map +1 -0
  157. package/backend/dist/services/workKubernetesDriver.d.ts +8 -0
  158. package/backend/dist/services/workKubernetesDriver.d.ts.map +1 -1
  159. package/backend/dist/services/workKubernetesDriver.js +22 -0
  160. package/backend/dist/services/workKubernetesDriver.js.map +1 -1
  161. package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
  162. package/backend/dist/services/workModelProviderService.js +102 -8
  163. package/backend/dist/services/workModelProviderService.js.map +1 -1
  164. package/backend/dist/services/workPolicyService.d.ts +8 -0
  165. package/backend/dist/services/workPolicyService.d.ts.map +1 -1
  166. package/backend/dist/services/workPolicyService.js +25 -0
  167. package/backend/dist/services/workPolicyService.js.map +1 -1
  168. package/backend/dist/services/workRuntimeDriver.d.ts +32 -0
  169. package/backend/dist/services/workRuntimeDriver.d.ts.map +1 -1
  170. package/backend/dist/services/workRuntimeDriver.js +54 -8
  171. package/backend/dist/services/workRuntimeDriver.js.map +1 -1
  172. package/backend/dist/services/workRuntimeService.d.ts +212 -1
  173. package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
  174. package/backend/dist/services/workRuntimeService.js +1184 -9
  175. package/backend/dist/services/workRuntimeService.js.map +1 -1
  176. package/backend/dist/services/workRuntimeShared.d.ts +11 -1
  177. package/backend/dist/services/workRuntimeShared.d.ts.map +1 -1
  178. package/backend/dist/services/workRuntimeShared.js +24 -1
  179. package/backend/dist/services/workRuntimeShared.js.map +1 -1
  180. package/backend/dist/services/workScreenControlService.d.ts +60 -0
  181. package/backend/dist/services/workScreenControlService.d.ts.map +1 -0
  182. package/backend/dist/services/workScreenControlService.js +201 -0
  183. package/backend/dist/services/workScreenControlService.js.map +1 -0
  184. package/backend/dist/services/workTaskService.d.ts +11 -0
  185. package/backend/dist/services/workTaskService.d.ts.map +1 -1
  186. package/backend/dist/services/workTaskService.js +31 -0
  187. package/backend/dist/services/workTaskService.js.map +1 -1
  188. package/backend/dist/types/index.d.ts +10 -2
  189. package/backend/dist/types/index.d.ts.map +1 -1
  190. package/backend/dist/types/index.js.map +1 -1
  191. package/backend/dist/types/work.d.ts +13 -0
  192. package/backend/dist/types/work.d.ts.map +1 -1
  193. package/backend/dist/utils/documentExtraction.d.ts +31 -3
  194. package/backend/dist/utils/documentExtraction.d.ts.map +1 -1
  195. package/backend/dist/utils/documentExtraction.js +106 -0
  196. package/backend/dist/utils/documentExtraction.js.map +1 -1
  197. package/backend/dist/utils/toolEgress.d.ts +2 -1
  198. package/backend/dist/utils/toolEgress.d.ts.map +1 -1
  199. package/backend/dist/utils/toolEgress.js +14 -2
  200. package/backend/dist/utils/toolEgress.js.map +1 -1
  201. package/backend/dist/utils/totp.d.ts +19 -0
  202. package/backend/dist/utils/totp.d.ts.map +1 -0
  203. package/backend/dist/utils/totp.js +117 -0
  204. package/backend/dist/utils/totp.js.map +1 -0
  205. package/backend/dist/utils/webauthn.d.ts +47 -0
  206. package/backend/dist/utils/webauthn.d.ts.map +1 -0
  207. package/backend/dist/utils/webauthn.js +323 -0
  208. package/backend/dist/utils/webauthn.js.map +1 -0
  209. package/backend/dist/websocketServer.d.ts.map +1 -1
  210. package/backend/dist/websocketServer.js +9 -0
  211. package/backend/dist/websocketServer.js.map +1 -1
  212. package/backend/dist/workScreenServer.d.ts +12 -0
  213. package/backend/dist/workScreenServer.d.ts.map +1 -0
  214. package/backend/dist/workScreenServer.js +291 -0
  215. package/backend/dist/workScreenServer.js.map +1 -0
  216. package/backend/package.json +1 -1
  217. package/deploy/work-computer/Dockerfile +48 -0
  218. package/deploy/work-computer/README.md +93 -0
  219. package/deploy/work-computer/fonts/fonts.css +335 -0
  220. package/deploy/work-computer/fonts/v16-aFTR7PB1QTsUX8KYvumzEY2tbYf-Vlh3uA.woff2 +0 -0
  221. package/deploy/work-computer/fonts/v16-aFTR7PB1QTsUX8KYvumzEYOtbYf-Vlg.woff2 +0 -0
  222. package/deploy/work-computer/fonts/v16-aFTU7PB1QTsUX8KYthSQBK6PYK3EXw.woff2 +0 -0
  223. package/deploy/work-computer/fonts/v16-aFTU7PB1QTsUX8KYthqQBK6PYK0.woff2 +0 -0
  224. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggOxSvfedN62Zw.woff2 +0 -0
  225. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggSxSvfedN62Zw.woff2 +0 -0
  226. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggexSvfedN4.woff2 +0 -0
  227. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggixSvfedN62Zw.woff2 +0 -0
  228. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggmxSvfedN62Zw.woff2 +0 -0
  229. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggqxSvfedN62Zw.woff2 +0 -0
  230. package/deploy/work-computer/fonts/v22-V8mDoQDjQSkFtoMM3T6r8E7mPb54C_k3HqUtEw.woff2 +0 -0
  231. package/deploy/work-computer/fonts/v22-V8mDoQDjQSkFtoMM3T6r8E7mPb94C_k3HqUtEw.woff2 +0 -0
  232. package/deploy/work-computer/fonts/v22-V8mDoQDjQSkFtoMM3T6r8E7mPbF4C_k3HqU.woff2 +0 -0
  233. package/deploy/work-computer/start-computer.sh +155 -0
  234. package/deploy/work-computer/start-page.html +251 -0
  235. package/deploy/work-computer/tint2rc +76 -0
  236. package/deploy/work-computer/wallpaper.png +0 -0
  237. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  238. package/frontend/dist/assets/index-DGy6mo0B.js +33 -0
  239. package/frontend/dist/assets/index-DqLJKWF-.css +1 -0
  240. package/frontend/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
  241. package/frontend/dist/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
  242. package/frontend/dist/fonts/jetbrains-mono.css +24 -0
  243. package/frontend/dist/index.html +40 -18
  244. package/frontend/dist/js/ArtifactContainer-DvIMxleC.js +1 -0
  245. package/frontend/dist/js/{ArtifactDemoPage-D0JEIAbZ.js → ArtifactDemoPage-BqYskFqc.js} +1 -1
  246. package/frontend/dist/js/ArtifactSandboxFrame-9wuufHn6.js +111 -0
  247. package/frontend/dist/js/ArtifactSlideOutPanel-DXESMtPh.js +1 -0
  248. package/frontend/dist/js/AutomationsPage-DByxhIKj.js +1 -0
  249. package/frontend/dist/js/AvatarUpload-DnCGQ46o.js +1 -0
  250. package/frontend/dist/js/{Button-C0r3J9G_.js → Button-CpobxJ2P.js} +1 -1
  251. package/frontend/dist/js/CalendarPage-JywVP-9y.js +1 -0
  252. package/frontend/dist/js/ChannelsPage-B31rcARd.js +1 -0
  253. package/frontend/dist/js/ChatPage-CHXJY8m3.js +14 -0
  254. package/frontend/dist/js/{EvaluationsPage-Bm8FRoeX.js → EvaluationsPage-CcmB5wdF.js} +1 -1
  255. package/frontend/dist/js/FirstTimeSetup-DDU7SowM.js +1 -0
  256. package/frontend/dist/js/GalleryPage-XfX_7iCf.js +1 -0
  257. package/frontend/dist/js/HomePage-DAZAkoAV.js +1 -0
  258. package/frontend/dist/js/LibreClawPage-De0gZmbF.js +1 -0
  259. package/frontend/dist/js/Logo-yKM43xGa.js +1 -0
  260. package/frontend/dist/js/LogoMark-PmpKQOre.js +1 -0
  261. package/frontend/dist/js/{ModelManagerModals-DX9eT5r2.js → ModelManagerModals-hz2cZZ4a.js} +1 -1
  262. package/frontend/dist/js/ModelSelector-BoFehQy-.js +1 -0
  263. package/frontend/dist/js/NotesPage-BGPI3gG6.js +3 -0
  264. package/frontend/dist/js/OptimizedSyntaxHighlighter-DrejdNUm.js +1 -0
  265. package/frontend/dist/js/OptimizedSyntaxHighlighter-hNqZPLiB.js +1 -0
  266. package/frontend/dist/js/PasswordStrengthMeter-RwModpZ1.js +1 -0
  267. package/frontend/dist/js/PersonasPage-BkNRD2wO.js +13 -0
  268. package/frontend/dist/js/PluginUsagePage-Cqt7V2SQ.js +1 -0
  269. package/frontend/dist/js/RichMessageContent-B2QSyX-l.js +1 -0
  270. package/frontend/dist/js/RichMessageContent-CYEhT6uU.js +3 -0
  271. package/frontend/dist/js/SettingsModal-IbIvVyss.js +19 -0
  272. package/frontend/dist/js/{SettingsToggle-BIVyfGjl.js → SettingsToggle-3GxA96E0.js} +1 -1
  273. package/frontend/dist/js/ShareDialog-BoE4OVhV.js +1 -0
  274. package/frontend/dist/js/SystemPage-B5ecz5H3.js +1 -0
  275. package/frontend/dist/js/TurnstileWidget-DHU9IUM1.js +1 -0
  276. package/frontend/dist/js/UserManagementPage-C0VUfbMk.js +1 -0
  277. package/frontend/dist/js/WorkPage-EweYI5Dx.js +74 -0
  278. package/frontend/dist/js/api-Bbh2AHHN.js +1 -0
  279. package/frontend/dist/js/api-F0CnlVH8.js +14 -0
  280. package/frontend/dist/js/appNavigation-DqV69ohR.js +1 -0
  281. package/frontend/dist/js/appStore-SLLBamo2.js +2 -0
  282. package/frontend/dist/js/appVersion-46bF9UkF.js +1 -0
  283. package/frontend/dist/js/ar-C4yo7x5J.js +2 -0
  284. package/frontend/dist/js/artifactHtml-DDmfpcB0.js +41 -0
  285. package/frontend/dist/js/authStore-CcfL8T6T.js +1 -0
  286. package/frontend/dist/js/authStore-DlSQ1TcP.js +4 -0
  287. package/frontend/dist/js/axios-_ZpUYd3e.js +1 -0
  288. package/frontend/dist/js/bn-BeZ6d2qF.js +2 -0
  289. package/frontend/dist/js/chatStore-DI79tEJ-.js +3 -0
  290. package/frontend/dist/js/classPrivateMethodInitSpec-B31Q4d2M.js +1 -0
  291. package/frontend/dist/js/{config-8KdgjtEx.js → config-0QgGZCrI.js} +1 -1
  292. package/frontend/dist/js/cs-9K5LILI5.js +2 -0
  293. package/frontend/dist/js/da-BWbBhLK8.js +2 -0
  294. package/frontend/dist/js/de-BXD9t2uY.js +2 -0
  295. package/frontend/dist/js/es-Dv4wZKlU.js +2 -0
  296. package/frontend/dist/js/{estree-BU5-LV_1.js → estree-WDwviHUZ.js} +1 -1
  297. package/frontend/dist/js/evaluationsApi-wjf0nh5J.js +1 -0
  298. package/frontend/dist/js/fr-BkXGyEei.js +2 -0
  299. package/frontend/dist/js/hi-BS1ldbWk.js +2 -0
  300. package/frontend/dist/js/{html-DeoAy2bo.js → html-Cj0HNcRt.js} +1 -1
  301. package/frontend/dist/js/id-Cr1njx5M.js +2 -0
  302. package/frontend/dist/js/is-BqpNCtDd.js +2 -0
  303. package/frontend/dist/js/it-Dp-iwH27.js +2 -0
  304. package/frontend/dist/js/ja-_e4v_6Mn.js +2 -0
  305. package/frontend/dist/js/ko-CjXf2pIX.js +2 -0
  306. package/frontend/dist/js/{logger-DSXjF4ye.js → logger-CpCQz3Vi.js} +1 -1
  307. package/frontend/dist/js/{markdown-DOLsYkBY.js → markdown-DTahdtRF.js} +1 -1
  308. package/frontend/dist/js/{messageCodeStyles-DhVgizF-.js → messageCodeStyles-COJFoq4P.js} +2 -2
  309. package/frontend/dist/js/ms-xpn-zACj.js +2 -0
  310. package/frontend/dist/js/nl-Baf0a2X0.js +2 -0
  311. package/frontend/dist/js/pl-BEOTrcUv.js +2 -0
  312. package/frontend/dist/js/pt-B5FUaihM.js +2 -0
  313. package/frontend/dist/js/rfb-bJaPz33m.js +5 -0
  314. package/frontend/dist/js/ru-BjzgMmkJ.js +2 -0
  315. package/frontend/dist/js/{standalone-BO5pzI8_.js → standalone-C04jT26m.js} +1 -1
  316. package/frontend/dist/js/sv-DDX_gP1z.js +2 -0
  317. package/frontend/dist/js/{syntax-highlight-DcR9Vhb7.js → syntax-highlight-P2zo9o06.js} +1 -1
  318. package/frontend/dist/js/teamEventStream-CgUkgjFC.js +8 -0
  319. package/frontend/dist/js/th-BXr3KovE.js +2 -0
  320. package/frontend/dist/js/tr-CdqxHEM8.js +2 -0
  321. package/frontend/dist/js/ttsBatching-BfhNT3c5.js +2 -0
  322. package/frontend/dist/js/{typescript-6GJ8APmn.js → typescript-FtGI7Y5P.js} +1 -1
  323. package/frontend/dist/js/ui-DFa2W4QC.js +2 -0
  324. package/frontend/dist/js/ui-vendor-CRZXLK0Q.js +177 -0
  325. package/frontend/dist/js/uk-CotKDP2Q.js +2 -0
  326. package/frontend/dist/js/useChat-BawGm7ua.js +10 -0
  327. package/frontend/dist/js/useQuery-BboI5V5G.js +1 -0
  328. package/frontend/dist/js/{useTranslation-5b5UhAc9.js → useTranslation-D7uLySn1.js} +1 -1
  329. package/frontend/dist/js/{utils-BGrdX9ie.js → utils-sD-qFh8D.js} +1 -1
  330. package/frontend/dist/js/utils-vendor-DTLgmsuc.js +9 -0
  331. package/frontend/dist/js/vi-F2NC1HaJ.js +2 -0
  332. package/frontend/dist/js/webauthnClient-CPSq528Q.js +1 -0
  333. package/frontend/dist/js/workApi-8mBuh_-J.js +6 -0
  334. package/frontend/dist/js/workApi-DJtLOslf.js +1 -0
  335. package/frontend/dist/js/workStatus-CcO9Fg41.js +1 -0
  336. package/frontend/dist/js/zh-DZ-kpEEA.js +2 -0
  337. package/frontend/dist/manifest.webmanifest +32 -0
  338. package/frontend/dist/sw.js +125 -0
  339. package/package.json +4 -2
  340. package/frontend/dist/assets/index-BPsH9FII.js +0 -80
  341. package/frontend/dist/assets/index-BtXF0Oxa.css +0 -1
  342. package/frontend/dist/js/ArtifactContainer-CIoFoMv8.js +0 -1
  343. package/frontend/dist/js/ArtifactSandboxFrame-REazyIrx.js +0 -151
  344. package/frontend/dist/js/ArtifactSlideOutPanel-A-i94ghF.js +0 -1
  345. package/frontend/dist/js/AutomationsPage-Dow_lbIf.js +0 -1
  346. package/frontend/dist/js/CalendarPage-DLjasZOd.js +0 -1
  347. package/frontend/dist/js/ChannelsPage-C8hvTD7J.js +0 -1
  348. package/frontend/dist/js/ChatPage-BAgBHUES.js +0 -16
  349. package/frontend/dist/js/FirstTimeSetup-BxJapNul.js +0 -1
  350. package/frontend/dist/js/GalleryPage-DHz9DkK7.js +0 -1
  351. package/frontend/dist/js/HomePage-BqNy-FWX.js +0 -1
  352. package/frontend/dist/js/LibreClawPage-BDzDILjY.js +0 -1
  353. package/frontend/dist/js/ModelSelector-ol8mK2ja.js +0 -1
  354. package/frontend/dist/js/NotesPage-DzHEx2O4.js +0 -3
  355. package/frontend/dist/js/OptimizedSyntaxHighlighter-CZNPwN0i.js +0 -1
  356. package/frontend/dist/js/PersonasPage-M_WKH2a9.js +0 -13
  357. package/frontend/dist/js/PluginUsagePage-Ctoka6JZ.js +0 -1
  358. package/frontend/dist/js/RichMessageContent-BqgafH4p.js +0 -3
  359. package/frontend/dist/js/SettingsModal-R9EDadAV.js +0 -19
  360. package/frontend/dist/js/SystemPage-aOkrSuY7.js +0 -1
  361. package/frontend/dist/js/UserManagementPage-BOuaX3ay.js +0 -1
  362. package/frontend/dist/js/WorkPage-DxZISerQ.js +0 -6
  363. package/frontend/dist/js/api-6bSMtSNh.js +0 -14
  364. package/frontend/dist/js/appStore-CdObhQBb.js +0 -2
  365. package/frontend/dist/js/ar-DT_VLBO3.js +0 -2
  366. package/frontend/dist/js/authStore-DbqqrfZv.js +0 -4
  367. package/frontend/dist/js/bn-BrvEqhGA.js +0 -2
  368. package/frontend/dist/js/chatStore-DbZPJNsu.js +0 -3
  369. package/frontend/dist/js/cs-BthnM_YI.js +0 -2
  370. package/frontend/dist/js/da-DCth-6_j.js +0 -2
  371. package/frontend/dist/js/de-BBWt0gJ_.js +0 -2
  372. package/frontend/dist/js/es-DuslOPqM.js +0 -2
  373. package/frontend/dist/js/evaluationsApi-CwZJsgeG.js +0 -1
  374. package/frontend/dist/js/fr-DZAeg46S.js +0 -2
  375. package/frontend/dist/js/hi-ijDSiY77.js +0 -2
  376. package/frontend/dist/js/id-BS6qS0oq.js +0 -2
  377. package/frontend/dist/js/is-CO2PMDte.js +0 -2
  378. package/frontend/dist/js/it-ChhxT4hs.js +0 -2
  379. package/frontend/dist/js/ja-cyeqUeJN.js +0 -2
  380. package/frontend/dist/js/ko-CfqHTLXj.js +0 -2
  381. package/frontend/dist/js/ms-DZ5pACe1.js +0 -2
  382. package/frontend/dist/js/nl-BsRsnOVp.js +0 -2
  383. package/frontend/dist/js/pl-DXSTAW4M.js +0 -2
  384. package/frontend/dist/js/pt-DmDx0JxB.js +0 -2
  385. package/frontend/dist/js/ru-d2g8EWfY.js +0 -2
  386. package/frontend/dist/js/sv-CIhYUTVQ.js +0 -2
  387. package/frontend/dist/js/th-B3wSxanB.js +0 -2
  388. package/frontend/dist/js/tr-R4UGgPOY.js +0 -2
  389. package/frontend/dist/js/ui-CV0LYmkM.js +0 -2
  390. package/frontend/dist/js/ui-vendor-CWjIBW-z.js +0 -177
  391. package/frontend/dist/js/uk-BzUF4Vkt.js +0 -2
  392. package/frontend/dist/js/utils-vendor-9bQ62WeD.js +0 -9
  393. package/frontend/dist/js/vi-CKc6Fg4h.js +0 -2
  394. package/frontend/dist/js/workApi-BruWTlHM.js +0 -6
  395. package/frontend/dist/js/zh-CXL-kDe8.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"sqliteMigrations.d.ts","sourceRoot":"","sources":["../../src/persistence/sqliteMigrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqliteMigrations.d.ts","sourceRoot":"","sources":["../../src/persistence/sqliteMigrations.ts"],"names":[],"mappings":"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"}
@@ -1013,6 +1013,61 @@ const MEDIA_ENTERPRISE_OPS_REQUIRED_SCHEMA = {
1013
1013
  'completed_at',
1014
1014
  ],
1015
1015
  };
1016
+ const MFA_PUSH_RECOVERY_REQUIRED_SCHEMA = {
1017
+ user_mfa: [
1018
+ 'user_id',
1019
+ 'totp_secret',
1020
+ 'activated_at',
1021
+ 'last_used_step',
1022
+ 'created_at',
1023
+ 'updated_at',
1024
+ ],
1025
+ mfa_recovery_codes: ['id', 'user_id', 'code_lookup', 'created_at', 'used_at'],
1026
+ webauthn_credentials: [
1027
+ 'id',
1028
+ 'user_id',
1029
+ 'credential_lookup',
1030
+ 'credential_data',
1031
+ 'name',
1032
+ 'sign_count',
1033
+ 'created_at',
1034
+ 'last_used_at',
1035
+ ],
1036
+ push_subscriptions: [
1037
+ 'id',
1038
+ 'user_id',
1039
+ 'session_id',
1040
+ 'endpoint_lookup',
1041
+ 'subscription',
1042
+ 'user_agent',
1043
+ 'created_at',
1044
+ 'last_used_at',
1045
+ ],
1046
+ recovery_drills: [
1047
+ 'id',
1048
+ 'status',
1049
+ 'origin',
1050
+ 'started_at',
1051
+ 'finished_at',
1052
+ 'snapshot_bytes',
1053
+ 'rpo_seconds',
1054
+ 'restore_ms',
1055
+ 'error',
1056
+ 'report',
1057
+ 'created_by',
1058
+ 'created_at',
1059
+ ],
1060
+ };
1061
+ const AUTOMATION_WORK_TARGET_REQUIRED_SCHEMA = {
1062
+ automations: ['target', 'work_policy_id'],
1063
+ automation_runs: ['work_task_id'],
1064
+ };
1065
+ const WORK_COMPUTER_REQUIRED_SCHEMA = {
1066
+ work_policies: ['gui_enabled'],
1067
+ };
1068
+ const WORK_TAKEOVER_REQUIRED_SCHEMA = {
1069
+ work_policies: ['takeover_enabled'],
1070
+ };
1016
1071
  export const IDENTITY_EMAIL_LOOKUP_SCHEMA_SQL = `
1017
1072
  ALTER TABLE users ADD COLUMN email_lookup TEXT;
1018
1073
  CREATE UNIQUE INDEX idx_users_email_lookup
@@ -1711,6 +1766,87 @@ export const MEDIA_ENTERPRISE_OPS_SCHEMA_SQL = `
1711
1766
  ALTER TABLE voice_profiles ADD COLUMN transfer_count INTEGER NOT NULL DEFAULT 0;
1712
1767
  ALTER TABLE voice_profiles ADD COLUMN last_transfer_at INTEGER;
1713
1768
  ${MEDIA_ENTERPRISE_OPS_TABLES_SQL}`;
1769
+ export const MFA_PUSH_RECOVERY_TABLES_SQL = `
1770
+ CREATE TABLE IF NOT EXISTS user_mfa (
1771
+ user_id TEXT PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
1772
+ totp_secret TEXT NOT NULL,
1773
+ activated_at INTEGER,
1774
+ last_used_step INTEGER,
1775
+ created_at INTEGER NOT NULL,
1776
+ updated_at INTEGER NOT NULL
1777
+ );
1778
+
1779
+ CREATE TABLE IF NOT EXISTS mfa_recovery_codes (
1780
+ id TEXT PRIMARY KEY,
1781
+ user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
1782
+ code_lookup TEXT NOT NULL UNIQUE,
1783
+ created_at INTEGER NOT NULL,
1784
+ used_at INTEGER
1785
+ );
1786
+
1787
+ CREATE INDEX IF NOT EXISTS idx_mfa_recovery_codes_user
1788
+ ON mfa_recovery_codes(user_id);
1789
+
1790
+ CREATE TABLE IF NOT EXISTS webauthn_credentials (
1791
+ id TEXT PRIMARY KEY,
1792
+ user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
1793
+ credential_lookup TEXT NOT NULL UNIQUE,
1794
+ credential_data TEXT NOT NULL,
1795
+ name TEXT,
1796
+ sign_count INTEGER NOT NULL DEFAULT 0,
1797
+ created_at INTEGER NOT NULL,
1798
+ last_used_at INTEGER
1799
+ );
1800
+
1801
+ CREATE INDEX IF NOT EXISTS idx_webauthn_credentials_user
1802
+ ON webauthn_credentials(user_id);
1803
+
1804
+ CREATE TABLE IF NOT EXISTS push_subscriptions (
1805
+ id TEXT PRIMARY KEY,
1806
+ user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
1807
+ session_id TEXT,
1808
+ endpoint_lookup TEXT NOT NULL UNIQUE,
1809
+ subscription TEXT NOT NULL,
1810
+ user_agent TEXT,
1811
+ created_at INTEGER NOT NULL,
1812
+ last_used_at INTEGER
1813
+ );
1814
+
1815
+ CREATE INDEX IF NOT EXISTS idx_push_subscriptions_user
1816
+ ON push_subscriptions(user_id);
1817
+
1818
+ CREATE TABLE IF NOT EXISTS recovery_drills (
1819
+ id TEXT PRIMARY KEY,
1820
+ status TEXT NOT NULL CHECK (status IN ('running', 'passed', 'failed')),
1821
+ origin TEXT NOT NULL CHECK (origin IN ('scheduled', 'manual')),
1822
+ started_at INTEGER NOT NULL,
1823
+ finished_at INTEGER,
1824
+ snapshot_bytes INTEGER,
1825
+ rpo_seconds INTEGER,
1826
+ restore_ms INTEGER,
1827
+ error TEXT,
1828
+ report TEXT,
1829
+ created_by TEXT,
1830
+ created_at INTEGER NOT NULL
1831
+ );
1832
+
1833
+ CREATE INDEX IF NOT EXISTS idx_recovery_drills_started
1834
+ ON recovery_drills(started_at);
1835
+ `;
1836
+ // No CHECK on target: SQLite cannot DROP a column referenced by an inline
1837
+ // CHECK, which would make the documented rollback impossible. The service
1838
+ // layer normalizes the value; PostgreSQL keeps a real constraint.
1839
+ export const AUTOMATION_WORK_TARGET_SCHEMA_SQL = `
1840
+ ALTER TABLE automations ADD COLUMN target TEXT NOT NULL DEFAULT 'chat';
1841
+ ALTER TABLE automations ADD COLUMN work_policy_id TEXT;
1842
+ ALTER TABLE automation_runs ADD COLUMN work_task_id TEXT;
1843
+ `;
1844
+ export const WORK_COMPUTER_SCHEMA_SQL = `
1845
+ ALTER TABLE work_policies ADD COLUMN gui_enabled INTEGER;
1846
+ `;
1847
+ export const WORK_TAKEOVER_SCHEMA_SQL = `
1848
+ ALTER TABLE work_policies ADD COLUMN takeover_enabled INTEGER;
1849
+ `;
1714
1850
  const REQUIRED_SCHEMA = {
1715
1851
  ...LEGACY_REQUIRED_SCHEMA,
1716
1852
  users: [
@@ -1907,6 +2043,11 @@ const REQUIRED_PRIMARY_KEYS = {
1907
2043
  arena_votes: ['id'],
1908
2044
  eval_sets: ['id'],
1909
2045
  eval_runs: ['id'],
2046
+ user_mfa: ['user_id'],
2047
+ mfa_recovery_codes: ['id'],
2048
+ webauthn_credentials: ['id'],
2049
+ push_subscriptions: ['id'],
2050
+ recovery_drills: ['id'],
1910
2051
  };
1911
2052
  const REQUIRED_UNIQUE_KEYS = {
1912
2053
  [MIGRATION_TABLE]: [['name']],
@@ -1935,6 +2076,9 @@ const REQUIRED_UNIQUE_KEYS = {
1935
2076
  skill_files: [['skill_id', 'path']],
1936
2077
  message_feedback: [['user_id', 'message_id']],
1937
2078
  arena_votes: [['user_id', 'compare_group']],
2079
+ mfa_recovery_codes: [['code_lookup']],
2080
+ webauthn_credentials: [['credential_lookup']],
2081
+ push_subscriptions: [['endpoint_lookup']],
1938
2082
  };
1939
2083
  const REQUIRED_FOREIGN_KEYS = [
1940
2084
  {
@@ -2280,6 +2424,34 @@ const REQUIRED_FOREIGN_KEYS = [
2280
2424
  referencedColumns: ['id'],
2281
2425
  onDelete: 'CASCADE',
2282
2426
  },
2427
+ {
2428
+ table: 'user_mfa',
2429
+ columns: ['user_id'],
2430
+ referencedTable: 'users',
2431
+ referencedColumns: ['id'],
2432
+ onDelete: 'CASCADE',
2433
+ },
2434
+ {
2435
+ table: 'mfa_recovery_codes',
2436
+ columns: ['user_id'],
2437
+ referencedTable: 'users',
2438
+ referencedColumns: ['id'],
2439
+ onDelete: 'CASCADE',
2440
+ },
2441
+ {
2442
+ table: 'webauthn_credentials',
2443
+ columns: ['user_id'],
2444
+ referencedTable: 'users',
2445
+ referencedColumns: ['id'],
2446
+ onDelete: 'CASCADE',
2447
+ },
2448
+ {
2449
+ table: 'push_subscriptions',
2450
+ columns: ['user_id'],
2451
+ referencedTable: 'users',
2452
+ referencedColumns: ['id'],
2453
+ onDelete: 'CASCADE',
2454
+ },
2283
2455
  ];
2284
2456
  const REQUIRED_INDEXES = [
2285
2457
  {
@@ -2622,6 +2794,26 @@ const REQUIRED_INDEXES = [
2622
2794
  table: 'eval_runs',
2623
2795
  columns: ['set_id'],
2624
2796
  },
2797
+ {
2798
+ name: 'idx_mfa_recovery_codes_user',
2799
+ table: 'mfa_recovery_codes',
2800
+ columns: ['user_id'],
2801
+ },
2802
+ {
2803
+ name: 'idx_webauthn_credentials_user',
2804
+ table: 'webauthn_credentials',
2805
+ columns: ['user_id'],
2806
+ },
2807
+ {
2808
+ name: 'idx_push_subscriptions_user',
2809
+ table: 'push_subscriptions',
2810
+ columns: ['user_id'],
2811
+ },
2812
+ {
2813
+ name: 'idx_recovery_drills_started',
2814
+ table: 'recovery_drills',
2815
+ columns: ['started_at'],
2816
+ },
2625
2817
  ];
2626
2818
  const REQUIRED_TABLE_SQL_FRAGMENTS = {
2627
2819
  platform_vector_entries: ['CHECK(dimensions > 0)'],
@@ -2685,6 +2877,10 @@ const REQUIRED_TABLE_SQL_FRAGMENTS = {
2685
2877
  eval_runs: [
2686
2878
  "status IN ('queued', 'running', 'completed', 'failed', 'cancelled')",
2687
2879
  ],
2880
+ recovery_drills: [
2881
+ "status IN ('running', 'passed', 'failed')",
2882
+ "origin IN ('scheduled', 'manual')",
2883
+ ],
2688
2884
  };
2689
2885
  const quoteIdentifier = (identifier) => `"${identifier.replace(/"/g, '""')}"`;
2690
2886
  const normalizeSql = (sql) => sql
@@ -3009,6 +3205,17 @@ const collectMissingMediaEnterpriseOpsSchema = (database) => [
3009
3205
  item.includes('eval_sets') ||
3010
3206
  item.includes('eval_runs')),
3011
3207
  ];
3208
+ const collectMissingMfaPushRecoverySchema = (database) => [
3209
+ ...collectMissingColumns(database, MFA_PUSH_RECOVERY_REQUIRED_SCHEMA),
3210
+ ...collectMissingStructuralInvariants(database).filter(item => item.includes('user_mfa') ||
3211
+ item.includes('mfa_recovery_codes') ||
3212
+ item.includes('webauthn_credentials') ||
3213
+ item.includes('push_subscriptions') ||
3214
+ item.includes('recovery_drills')),
3215
+ ];
3216
+ const collectMissingAutomationWorkTargetSchema = (database) => collectMissingColumns(database, AUTOMATION_WORK_TARGET_REQUIRED_SCHEMA);
3217
+ const collectMissingWorkComputerSchema = (database) => collectMissingColumns(database, WORK_COMPUTER_REQUIRED_SCHEMA);
3218
+ const collectMissingWorkTakeoverSchema = (database) => collectMissingColumns(database, WORK_TAKEOVER_REQUIRED_SCHEMA);
3012
3219
  const collectMissingIdentityAccountRetirementSchema = (database) => {
3013
3220
  const row = database
3014
3221
  .prepare("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'users'")
@@ -3052,6 +3259,12 @@ function collectMissingSchemaAtVersion(database, version) {
3052
3259
  ...(version >= 18 ? collectMissingNotesV2Schema(database) : []),
3053
3260
  ...(version >= 19 ? collectMissingTeamCollaborationSchema(database) : []),
3054
3261
  ...(version >= 20 ? collectMissingMediaEnterpriseOpsSchema(database) : []),
3262
+ ...(version >= 21 ? collectMissingMfaPushRecoverySchema(database) : []),
3263
+ ...(version >= 22
3264
+ ? collectMissingAutomationWorkTargetSchema(database)
3265
+ : []),
3266
+ ...(version >= 23 ? collectMissingWorkComputerSchema(database) : []),
3267
+ ...(version >= 24 ? collectMissingWorkTakeoverSchema(database) : []),
3055
3268
  ];
3056
3269
  }
3057
3270
  const collectMissingLegacyBootstrapSchema = (database) => {
@@ -3107,6 +3320,10 @@ const SKILL_FILES_MIGRATION_CHECKSUM = '584e1f9bca79eb5974f997088636d74d7f2c1e5f
3107
3320
  const NOTES_V2_MIGRATION_CHECKSUM = '05a6758ab2b2a54f9097a5d5604a2bd57e085f1dd16816b5dc96d1eb7a41a399';
3108
3321
  const TEAM_COLLABORATION_MIGRATION_CHECKSUM = '1cf021c941cfd9207a82e794e58d7553ae24a35b3f8f8a84bb4a0e06d0d77443';
3109
3322
  const MEDIA_ENTERPRISE_OPS_MIGRATION_CHECKSUM = 'c6bc6d98518f7a279ad7109cfdfcd8a75fbf7e3e157c50bca98142b50ac0f38b';
3323
+ const MFA_PUSH_RECOVERY_MIGRATION_CHECKSUM = '9b2cdc08d2316877af091587113c749aed4b224d6ee12e72626b830da5447005';
3324
+ const WORK_COMPUTER_MIGRATION_CHECKSUM = 'b86fa1e6cb13bd76129db93043007cf7dd6888b85bd0139dfc34dbe394069867';
3325
+ const AUTOMATION_WORK_TARGET_MIGRATION_CHECKSUM = 'e5fb43e9bf42ab206dce74bfd867d5001754983c7a3cef30b811c4d4da54d1a9';
3326
+ const WORK_TAKEOVER_MIGRATION_CHECKSUM = '739dc7f86890961573baba8fdf8859bccf1e9e5ba9625288183582fc6be5c1b0';
3110
3327
  const MIGRATIONS = [
3111
3328
  {
3112
3329
  version: 1,
@@ -3398,6 +3615,56 @@ const MIGRATIONS = [
3398
3615
  }
3399
3616
  },
3400
3617
  },
3618
+ {
3619
+ version: 21,
3620
+ name: 'mfa-push-recovery',
3621
+ checksum: MFA_PUSH_RECOVERY_MIGRATION_CHECKSUM,
3622
+ apply(database) {
3623
+ database.exec(MFA_PUSH_RECOVERY_TABLES_SQL);
3624
+ const missing = collectMissingMfaPushRecoverySchema(database);
3625
+ if (missing.length > 0) {
3626
+ throw new Error(`SQLite mfa/push/recovery schema is incomplete; missing ${missing.join(', ')}`);
3627
+ }
3628
+ },
3629
+ },
3630
+ {
3631
+ version: 22,
3632
+ name: 'automation-work-target',
3633
+ checksum: AUTOMATION_WORK_TARGET_MIGRATION_CHECKSUM,
3634
+ apply(database) {
3635
+ addColumnIfMissing(database, 'automations', 'target', "TEXT NOT NULL DEFAULT 'chat'");
3636
+ addColumnIfMissing(database, 'automations', 'work_policy_id', 'TEXT');
3637
+ addColumnIfMissing(database, 'automation_runs', 'work_task_id', 'TEXT');
3638
+ const missing = collectMissingAutomationWorkTargetSchema(database);
3639
+ if (missing.length > 0) {
3640
+ throw new Error(`SQLite automation work-target schema is incomplete; missing ${missing.join(', ')}`);
3641
+ }
3642
+ },
3643
+ },
3644
+ {
3645
+ version: 23,
3646
+ name: 'work-computer',
3647
+ checksum: WORK_COMPUTER_MIGRATION_CHECKSUM,
3648
+ apply(database) {
3649
+ addColumnIfMissing(database, 'work_policies', 'gui_enabled', 'INTEGER');
3650
+ const missing = collectMissingWorkComputerSchema(database);
3651
+ if (missing.length > 0) {
3652
+ throw new Error(`SQLite work computer schema is incomplete; missing ${missing.join(', ')}`);
3653
+ }
3654
+ },
3655
+ },
3656
+ {
3657
+ version: 24,
3658
+ name: 'work-takeover',
3659
+ checksum: WORK_TAKEOVER_MIGRATION_CHECKSUM,
3660
+ apply(database) {
3661
+ addColumnIfMissing(database, 'work_policies', 'takeover_enabled', 'INTEGER');
3662
+ const missing = collectMissingWorkTakeoverSchema(database);
3663
+ if (missing.length > 0) {
3664
+ throw new Error(`SQLite work takeover schema is incomplete; missing ${missing.join(', ')}`);
3665
+ }
3666
+ },
3667
+ },
3401
3668
  ];
3402
3669
  /**
3403
3670
  * Whether a pending migration needs foreign-key enforcement suspended before