libre-webui 0.27.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 (311) hide show
  1. package/README.md +57 -29
  2. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.d.ts +9 -0
  3. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.d.ts.map +1 -0
  4. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.js +44 -0
  5. package/backend/dist/persistence/postgresAutomationWorkTargetMigration.js.map +1 -0
  6. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.d.ts.map +1 -1
  7. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.js +4 -4
  8. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.js.map +1 -1
  9. package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -1
  10. package/backend/dist/persistence/postgresMigrationRegistry.js +6 -0
  11. package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -1
  12. package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -1
  13. package/backend/dist/persistence/postgresResourceRepositories.js +17 -4
  14. package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -1
  15. package/backend/dist/persistence/postgresSecurityRepositories.d.ts.map +1 -1
  16. package/backend/dist/persistence/postgresSecurityRepositories.js +4 -0
  17. package/backend/dist/persistence/postgresSecurityRepositories.js.map +1 -1
  18. package/backend/dist/persistence/postgresWorkComputerMigration.d.ts +8 -0
  19. package/backend/dist/persistence/postgresWorkComputerMigration.d.ts.map +1 -0
  20. package/backend/dist/persistence/postgresWorkComputerMigration.js +37 -0
  21. package/backend/dist/persistence/postgresWorkComputerMigration.js.map +1 -0
  22. package/backend/dist/persistence/postgresWorkTakeoverMigration.d.ts +9 -0
  23. package/backend/dist/persistence/postgresWorkTakeoverMigration.d.ts.map +1 -0
  24. package/backend/dist/persistence/postgresWorkTakeoverMigration.js +38 -0
  25. package/backend/dist/persistence/postgresWorkTakeoverMigration.js.map +1 -0
  26. package/backend/dist/persistence/resourceTypes.d.ts +5 -0
  27. package/backend/dist/persistence/resourceTypes.d.ts.map +1 -1
  28. package/backend/dist/persistence/resourceTypes.js.map +1 -1
  29. package/backend/dist/persistence/securityTypes.d.ts +1 -0
  30. package/backend/dist/persistence/securityTypes.d.ts.map +1 -1
  31. package/backend/dist/persistence/sqliteMigrations.d.ts +3 -0
  32. package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -1
  33. package/backend/dist/persistence/sqliteMigrations.js +73 -0
  34. package/backend/dist/persistence/sqliteMigrations.js.map +1 -1
  35. package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -1
  36. package/backend/dist/persistence/sqliteResourceRepositories.js +17 -7
  37. package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -1
  38. package/backend/dist/persistence/sqliteSecurityRepositories.d.ts.map +1 -1
  39. package/backend/dist/persistence/sqliteSecurityRepositories.js +6 -0
  40. package/backend/dist/persistence/sqliteSecurityRepositories.js.map +1 -1
  41. package/backend/dist/platform/jobs/domainJobHandlers.d.ts.map +1 -1
  42. package/backend/dist/platform/jobs/domainJobHandlers.js +87 -0
  43. package/backend/dist/platform/jobs/domainJobHandlers.js.map +1 -1
  44. package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts.map +1 -1
  45. package/backend/dist/platform/workPersistence/postgresWorkPersistence.js +7 -3
  46. package/backend/dist/platform/workPersistence/postgresWorkPersistence.js.map +1 -1
  47. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts.map +1 -1
  48. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js +8 -4
  49. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js.map +1 -1
  50. package/backend/dist/platform/workPersistence/types.d.ts +2 -0
  51. package/backend/dist/platform/workPersistence/types.d.ts.map +1 -1
  52. package/backend/dist/platform/workPersistence/types.js.map +1 -1
  53. package/backend/dist/routes/auth.d.ts.map +1 -1
  54. package/backend/dist/routes/auth.js +8 -4
  55. package/backend/dist/routes/auth.js.map +1 -1
  56. package/backend/dist/routes/automations.d.ts.map +1 -1
  57. package/backend/dist/routes/automations.js +5 -0
  58. package/backend/dist/routes/automations.js.map +1 -1
  59. package/backend/dist/routes/work.d.ts.map +1 -1
  60. package/backend/dist/routes/work.js +205 -1
  61. package/backend/dist/routes/work.js.map +1 -1
  62. package/backend/dist/services/authService.d.ts +2 -0
  63. package/backend/dist/services/authService.d.ts.map +1 -1
  64. package/backend/dist/services/authService.js +20 -0
  65. package/backend/dist/services/authService.js.map +1 -1
  66. package/backend/dist/services/automationSchedulerService.d.ts.map +1 -1
  67. package/backend/dist/services/automationSchedulerService.js +24 -0
  68. package/backend/dist/services/automationSchedulerService.js.map +1 -1
  69. package/backend/dist/services/automationService.d.ts +4 -1
  70. package/backend/dist/services/automationService.d.ts.map +1 -1
  71. package/backend/dist/services/automationService.js +27 -0
  72. package/backend/dist/services/automationService.js.map +1 -1
  73. package/backend/dist/services/mfaService.d.ts.map +1 -1
  74. package/backend/dist/services/mfaService.js +2 -3
  75. package/backend/dist/services/mfaService.js.map +1 -1
  76. package/backend/dist/services/webauthnService.d.ts.map +1 -1
  77. package/backend/dist/services/webauthnService.js +1 -0
  78. package/backend/dist/services/webauthnService.js.map +1 -1
  79. package/backend/dist/services/websocketTicketService.d.ts +1 -1
  80. package/backend/dist/services/websocketTicketService.d.ts.map +1 -1
  81. package/backend/dist/services/websocketTicketService.js +3 -1
  82. package/backend/dist/services/websocketTicketService.js.map +1 -1
  83. package/backend/dist/services/workAgentGuidance.d.ts +14 -0
  84. package/backend/dist/services/workAgentGuidance.d.ts.map +1 -1
  85. package/backend/dist/services/workAgentGuidance.js +38 -2
  86. package/backend/dist/services/workAgentGuidance.js.map +1 -1
  87. package/backend/dist/services/workAgentService.d.ts +9 -0
  88. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  89. package/backend/dist/services/workAgentService.js +503 -13
  90. package/backend/dist/services/workAgentService.js.map +1 -1
  91. package/backend/dist/services/workComputerSetupService.d.ts +33 -0
  92. package/backend/dist/services/workComputerSetupService.d.ts.map +1 -0
  93. package/backend/dist/services/workComputerSetupService.js +164 -0
  94. package/backend/dist/services/workComputerSetupService.js.map +1 -0
  95. package/backend/dist/services/workComputerTeachService.d.ts +105 -0
  96. package/backend/dist/services/workComputerTeachService.d.ts.map +1 -0
  97. package/backend/dist/services/workComputerTeachService.js +513 -0
  98. package/backend/dist/services/workComputerTeachService.js.map +1 -0
  99. package/backend/dist/services/workKubernetesDriver.d.ts +8 -0
  100. package/backend/dist/services/workKubernetesDriver.d.ts.map +1 -1
  101. package/backend/dist/services/workKubernetesDriver.js +22 -0
  102. package/backend/dist/services/workKubernetesDriver.js.map +1 -1
  103. package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
  104. package/backend/dist/services/workModelProviderService.js +102 -8
  105. package/backend/dist/services/workModelProviderService.js.map +1 -1
  106. package/backend/dist/services/workPolicyService.d.ts +8 -0
  107. package/backend/dist/services/workPolicyService.d.ts.map +1 -1
  108. package/backend/dist/services/workPolicyService.js +25 -0
  109. package/backend/dist/services/workPolicyService.js.map +1 -1
  110. package/backend/dist/services/workRuntimeDriver.d.ts +32 -0
  111. package/backend/dist/services/workRuntimeDriver.d.ts.map +1 -1
  112. package/backend/dist/services/workRuntimeDriver.js +54 -8
  113. package/backend/dist/services/workRuntimeDriver.js.map +1 -1
  114. package/backend/dist/services/workRuntimeService.d.ts +212 -1
  115. package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
  116. package/backend/dist/services/workRuntimeService.js +1184 -9
  117. package/backend/dist/services/workRuntimeService.js.map +1 -1
  118. package/backend/dist/services/workRuntimeShared.d.ts +11 -1
  119. package/backend/dist/services/workRuntimeShared.d.ts.map +1 -1
  120. package/backend/dist/services/workRuntimeShared.js +24 -1
  121. package/backend/dist/services/workRuntimeShared.js.map +1 -1
  122. package/backend/dist/services/workScreenControlService.d.ts +60 -0
  123. package/backend/dist/services/workScreenControlService.d.ts.map +1 -0
  124. package/backend/dist/services/workScreenControlService.js +201 -0
  125. package/backend/dist/services/workScreenControlService.js.map +1 -0
  126. package/backend/dist/services/workTaskService.d.ts +11 -0
  127. package/backend/dist/services/workTaskService.d.ts.map +1 -1
  128. package/backend/dist/services/workTaskService.js +31 -0
  129. package/backend/dist/services/workTaskService.js.map +1 -1
  130. package/backend/dist/types/index.d.ts +7 -0
  131. package/backend/dist/types/index.d.ts.map +1 -1
  132. package/backend/dist/types/index.js.map +1 -1
  133. package/backend/dist/types/work.d.ts +13 -0
  134. package/backend/dist/types/work.d.ts.map +1 -1
  135. package/backend/dist/utils/webauthn.d.ts +6 -2
  136. package/backend/dist/utils/webauthn.d.ts.map +1 -1
  137. package/backend/dist/utils/webauthn.js +32 -3
  138. package/backend/dist/utils/webauthn.js.map +1 -1
  139. package/backend/dist/websocketServer.d.ts.map +1 -1
  140. package/backend/dist/websocketServer.js +9 -0
  141. package/backend/dist/websocketServer.js.map +1 -1
  142. package/backend/dist/workScreenServer.d.ts +12 -0
  143. package/backend/dist/workScreenServer.d.ts.map +1 -0
  144. package/backend/dist/workScreenServer.js +291 -0
  145. package/backend/dist/workScreenServer.js.map +1 -0
  146. package/backend/package.json +1 -1
  147. package/deploy/work-computer/Dockerfile +48 -0
  148. package/deploy/work-computer/README.md +93 -0
  149. package/deploy/work-computer/fonts/fonts.css +335 -0
  150. package/deploy/work-computer/fonts/v16-aFTR7PB1QTsUX8KYvumzEY2tbYf-Vlh3uA.woff2 +0 -0
  151. package/deploy/work-computer/fonts/v16-aFTR7PB1QTsUX8KYvumzEYOtbYf-Vlg.woff2 +0 -0
  152. package/deploy/work-computer/fonts/v16-aFTU7PB1QTsUX8KYthSQBK6PYK3EXw.woff2 +0 -0
  153. package/deploy/work-computer/fonts/v16-aFTU7PB1QTsUX8KYthqQBK6PYK0.woff2 +0 -0
  154. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggOxSvfedN62Zw.woff2 +0 -0
  155. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggSxSvfedN62Zw.woff2 +0 -0
  156. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggexSvfedN4.woff2 +0 -0
  157. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggixSvfedN62Zw.woff2 +0 -0
  158. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggmxSvfedN62Zw.woff2 +0 -0
  159. package/deploy/work-computer/fonts/v20-xn7gYHE41ni1AdIRggqxSvfedN62Zw.woff2 +0 -0
  160. package/deploy/work-computer/fonts/v22-V8mDoQDjQSkFtoMM3T6r8E7mPb54C_k3HqUtEw.woff2 +0 -0
  161. package/deploy/work-computer/fonts/v22-V8mDoQDjQSkFtoMM3T6r8E7mPb94C_k3HqUtEw.woff2 +0 -0
  162. package/deploy/work-computer/fonts/v22-V8mDoQDjQSkFtoMM3T6r8E7mPbF4C_k3HqU.woff2 +0 -0
  163. package/deploy/work-computer/start-computer.sh +155 -0
  164. package/deploy/work-computer/start-page.html +251 -0
  165. package/deploy/work-computer/tint2rc +76 -0
  166. package/deploy/work-computer/wallpaper.png +0 -0
  167. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  168. package/frontend/dist/assets/index-DGy6mo0B.js +33 -0
  169. package/frontend/dist/assets/index-DqLJKWF-.css +1 -0
  170. package/frontend/dist/index.html +31 -16
  171. package/frontend/dist/js/{ArtifactContainer-C9zNtCay.js → ArtifactContainer-DvIMxleC.js} +1 -1
  172. package/frontend/dist/js/{ArtifactDemoPage-C-EBFBCt.js → ArtifactDemoPage-BqYskFqc.js} +1 -1
  173. package/frontend/dist/js/{ArtifactSandboxFrame-CTA1j_d1.js → ArtifactSandboxFrame-9wuufHn6.js} +1 -1
  174. package/frontend/dist/js/ArtifactSlideOutPanel-DXESMtPh.js +1 -0
  175. package/frontend/dist/js/AutomationsPage-DByxhIKj.js +1 -0
  176. package/frontend/dist/js/AvatarUpload-DnCGQ46o.js +1 -0
  177. package/frontend/dist/js/{Button-C0r3J9G_.js → Button-CpobxJ2P.js} +1 -1
  178. package/frontend/dist/js/CalendarPage-JywVP-9y.js +1 -0
  179. package/frontend/dist/js/ChannelsPage-B31rcARd.js +1 -0
  180. package/frontend/dist/js/ChatPage-CHXJY8m3.js +14 -0
  181. package/frontend/dist/js/{EvaluationsPage-FWIJu2fI.js → EvaluationsPage-CcmB5wdF.js} +1 -1
  182. package/frontend/dist/js/FirstTimeSetup-DDU7SowM.js +1 -0
  183. package/frontend/dist/js/GalleryPage-XfX_7iCf.js +1 -0
  184. package/frontend/dist/js/HomePage-DAZAkoAV.js +1 -0
  185. package/frontend/dist/js/LibreClawPage-De0gZmbF.js +1 -0
  186. package/frontend/dist/js/Logo-yKM43xGa.js +1 -0
  187. package/frontend/dist/js/LogoMark-PmpKQOre.js +1 -0
  188. package/frontend/dist/js/{ModelManagerModals-BY5TK38_.js → ModelManagerModals-hz2cZZ4a.js} +1 -1
  189. package/frontend/dist/js/ModelSelector-BoFehQy-.js +1 -0
  190. package/frontend/dist/js/NotesPage-BGPI3gG6.js +3 -0
  191. package/frontend/dist/js/OptimizedSyntaxHighlighter-DrejdNUm.js +1 -0
  192. package/frontend/dist/js/OptimizedSyntaxHighlighter-hNqZPLiB.js +1 -0
  193. package/frontend/dist/js/PasswordStrengthMeter-RwModpZ1.js +1 -0
  194. package/frontend/dist/js/PersonasPage-BkNRD2wO.js +13 -0
  195. package/frontend/dist/js/PluginUsagePage-Cqt7V2SQ.js +1 -0
  196. package/frontend/dist/js/RichMessageContent-B2QSyX-l.js +1 -0
  197. package/frontend/dist/js/RichMessageContent-CYEhT6uU.js +3 -0
  198. package/frontend/dist/js/SettingsModal-IbIvVyss.js +19 -0
  199. package/frontend/dist/js/{SettingsToggle-BIVyfGjl.js → SettingsToggle-3GxA96E0.js} +1 -1
  200. package/frontend/dist/js/ShareDialog-BoE4OVhV.js +1 -0
  201. package/frontend/dist/js/{SystemPage-BT07dTMT.js → SystemPage-B5ecz5H3.js} +1 -1
  202. package/frontend/dist/js/TurnstileWidget-DHU9IUM1.js +1 -0
  203. package/frontend/dist/js/UserManagementPage-C0VUfbMk.js +1 -0
  204. package/frontend/dist/js/WorkPage-EweYI5Dx.js +74 -0
  205. package/frontend/dist/js/api-Bbh2AHHN.js +1 -0
  206. package/frontend/dist/js/api-F0CnlVH8.js +14 -0
  207. package/frontend/dist/js/appNavigation-DqV69ohR.js +1 -0
  208. package/frontend/dist/js/appStore-SLLBamo2.js +2 -0
  209. package/frontend/dist/js/appVersion-46bF9UkF.js +1 -0
  210. package/frontend/dist/js/ar-C4yo7x5J.js +2 -0
  211. package/frontend/dist/js/authStore-CcfL8T6T.js +1 -0
  212. package/frontend/dist/js/authStore-DlSQ1TcP.js +4 -0
  213. package/frontend/dist/js/axios-_ZpUYd3e.js +1 -0
  214. package/frontend/dist/js/bn-BeZ6d2qF.js +2 -0
  215. package/frontend/dist/js/chatStore-DI79tEJ-.js +3 -0
  216. package/frontend/dist/js/classPrivateMethodInitSpec-B31Q4d2M.js +1 -0
  217. package/frontend/dist/js/{config-BqZ5304Q.js → config-0QgGZCrI.js} +1 -1
  218. package/frontend/dist/js/cs-9K5LILI5.js +2 -0
  219. package/frontend/dist/js/da-BWbBhLK8.js +2 -0
  220. package/frontend/dist/js/de-BXD9t2uY.js +2 -0
  221. package/frontend/dist/js/es-Dv4wZKlU.js +2 -0
  222. package/frontend/dist/js/{estree-DPkpBuOU.js → estree-WDwviHUZ.js} +1 -1
  223. package/frontend/dist/js/evaluationsApi-wjf0nh5J.js +1 -0
  224. package/frontend/dist/js/fr-BkXGyEei.js +2 -0
  225. package/frontend/dist/js/hi-BS1ldbWk.js +2 -0
  226. package/frontend/dist/js/{html-BpGUXG8E.js → html-Cj0HNcRt.js} +1 -1
  227. package/frontend/dist/js/id-Cr1njx5M.js +2 -0
  228. package/frontend/dist/js/is-BqpNCtDd.js +2 -0
  229. package/frontend/dist/js/{it-AxEMG8Jg.js → it-Dp-iwH27.js} +1 -1
  230. package/frontend/dist/js/ja-_e4v_6Mn.js +2 -0
  231. package/frontend/dist/js/ko-CjXf2pIX.js +2 -0
  232. package/frontend/dist/js/{logger-DSXjF4ye.js → logger-CpCQz3Vi.js} +1 -1
  233. package/frontend/dist/js/{markdown-DCBRWJSK.js → markdown-DTahdtRF.js} +1 -1
  234. package/frontend/dist/js/{messageCodeStyles-BQwf7sSz.js → messageCodeStyles-COJFoq4P.js} +2 -2
  235. package/frontend/dist/js/{ms-BhEwb4b7.js → ms-xpn-zACj.js} +1 -1
  236. package/frontend/dist/js/nl-Baf0a2X0.js +2 -0
  237. package/frontend/dist/js/pl-BEOTrcUv.js +2 -0
  238. package/frontend/dist/js/pt-B5FUaihM.js +2 -0
  239. package/frontend/dist/js/rfb-bJaPz33m.js +5 -0
  240. package/frontend/dist/js/ru-BjzgMmkJ.js +2 -0
  241. package/frontend/dist/js/{standalone-BFrK0R2A.js → standalone-C04jT26m.js} +1 -1
  242. package/frontend/dist/js/sv-DDX_gP1z.js +2 -0
  243. package/frontend/dist/js/teamEventStream-CgUkgjFC.js +8 -0
  244. package/frontend/dist/js/{th-DVnW2yyh.js → th-BXr3KovE.js} +1 -1
  245. package/frontend/dist/js/tr-CdqxHEM8.js +2 -0
  246. package/frontend/dist/js/ttsBatching-BfhNT3c5.js +2 -0
  247. package/frontend/dist/js/{typescript-DYVyvmm_.js → typescript-FtGI7Y5P.js} +1 -1
  248. package/frontend/dist/js/ui-DFa2W4QC.js +2 -0
  249. package/frontend/dist/js/ui-vendor-CRZXLK0Q.js +177 -0
  250. package/frontend/dist/js/{uk-BNPKIZga.js → uk-CotKDP2Q.js} +1 -1
  251. package/frontend/dist/js/useChat-BawGm7ua.js +10 -0
  252. package/frontend/dist/js/useQuery-BboI5V5G.js +1 -0
  253. package/frontend/dist/js/{useTranslation-5b5UhAc9.js → useTranslation-D7uLySn1.js} +1 -1
  254. package/frontend/dist/js/{utils-BGrdX9ie.js → utils-sD-qFh8D.js} +1 -1
  255. package/frontend/dist/js/utils-vendor-DTLgmsuc.js +9 -0
  256. package/frontend/dist/js/vi-F2NC1HaJ.js +2 -0
  257. package/frontend/dist/js/webauthnClient-CPSq528Q.js +1 -0
  258. package/frontend/dist/js/workApi-8mBuh_-J.js +6 -0
  259. package/frontend/dist/js/workApi-DJtLOslf.js +1 -0
  260. package/frontend/dist/js/workStatus-CcO9Fg41.js +1 -0
  261. package/frontend/dist/js/zh-DZ-kpEEA.js +2 -0
  262. package/package.json +4 -2
  263. package/frontend/dist/assets/index-DBAf_VaS.js +0 -47
  264. package/frontend/dist/assets/index-kn_Axjts.css +0 -1
  265. package/frontend/dist/js/ArtifactSlideOutPanel-BOENbOiv.js +0 -1
  266. package/frontend/dist/js/AutomationsPage-C58MQ4te.js +0 -1
  267. package/frontend/dist/js/CalendarPage-BcdAZ292.js +0 -1
  268. package/frontend/dist/js/ChannelsPage-DPr9Yajs.js +0 -1
  269. package/frontend/dist/js/ChatPage-DsbB748s.js +0 -14
  270. package/frontend/dist/js/FirstTimeSetup-Cy-w6xko.js +0 -1
  271. package/frontend/dist/js/GalleryPage-DDAtxM-x.js +0 -1
  272. package/frontend/dist/js/HomePage-DLKwmE7n.js +0 -1
  273. package/frontend/dist/js/LibreClawPage-vKOj-9w9.js +0 -1
  274. package/frontend/dist/js/ModelSelector-CoCS6MZ9.js +0 -1
  275. package/frontend/dist/js/NotesPage-BElIpXgA.js +0 -3
  276. package/frontend/dist/js/OptimizedSyntaxHighlighter-xgyE3dRA.js +0 -1
  277. package/frontend/dist/js/PersonasPage-P40jVbfU.js +0 -13
  278. package/frontend/dist/js/PluginUsagePage-CKUEPCJN.js +0 -1
  279. package/frontend/dist/js/RichMessageContent-Bm2WaEGi.js +0 -3
  280. package/frontend/dist/js/SettingsModal-DxSGzx9A.js +0 -19
  281. package/frontend/dist/js/UserManagementPage-B9Vz5cm3.js +0 -1
  282. package/frontend/dist/js/WorkPage-qoN_e_jK.js +0 -6
  283. package/frontend/dist/js/api-D7Ff5M2Q.js +0 -14
  284. package/frontend/dist/js/appStore-DmV5wqDz.js +0 -2
  285. package/frontend/dist/js/ar-YHHTVP8f.js +0 -2
  286. package/frontend/dist/js/authStore-BYW8-kP6.js +0 -4
  287. package/frontend/dist/js/bn-C8VTxBVl.js +0 -2
  288. package/frontend/dist/js/chatStore-D-NTlArO.js +0 -3
  289. package/frontend/dist/js/cs-CCngB5fC.js +0 -2
  290. package/frontend/dist/js/da-CM2PP2ma.js +0 -2
  291. package/frontend/dist/js/de-BqVkD-dw.js +0 -2
  292. package/frontend/dist/js/es-BtWsWBjZ.js +0 -2
  293. package/frontend/dist/js/evaluationsApi-Dnf2dTd-.js +0 -1
  294. package/frontend/dist/js/fr-C68w9abT.js +0 -2
  295. package/frontend/dist/js/hi-DtBlcyXZ.js +0 -2
  296. package/frontend/dist/js/id-BWzIu8tn.js +0 -2
  297. package/frontend/dist/js/is-yeFwu4dJ.js +0 -2
  298. package/frontend/dist/js/ja-B-VyokB8.js +0 -2
  299. package/frontend/dist/js/ko-CvwzYr9k.js +0 -2
  300. package/frontend/dist/js/nl-Dq-QRx1L.js +0 -2
  301. package/frontend/dist/js/pl-BNEy8mQm.js +0 -2
  302. package/frontend/dist/js/pt-_3Jl3FdY.js +0 -2
  303. package/frontend/dist/js/ru-IhQiJ8ta.js +0 -2
  304. package/frontend/dist/js/sv-DWunXUNz.js +0 -2
  305. package/frontend/dist/js/tr-Do8CFmhR.js +0 -2
  306. package/frontend/dist/js/ui-db9meqAB.js +0 -2
  307. package/frontend/dist/js/ui-vendor-C0DZ8-Cm.js +0 -177
  308. package/frontend/dist/js/utils-vendor-9bQ62WeD.js +0 -9
  309. package/frontend/dist/js/vi-CZMFo9je.js +0 -2
  310. package/frontend/dist/js/workApi-CcprMH_1.js +0 -6
  311. package/frontend/dist/js/zh-Pg0881v0.js +0 -2
package/README.md CHANGED
@@ -101,7 +101,7 @@ The first account created on a fresh installation becomes the administrator.
101
101
  Install Ollama, then pull a model:
102
102
 
103
103
  ```bash
104
- ollama pull gemma4:12b
104
+ ollama pull gemma3:4b
105
105
  ```
106
106
 
107
107
  Libre WebUI can now use Ollama for local inference. No cloud account or API key
@@ -123,32 +123,33 @@ persistent storage.
123
123
 
124
124
  ## Features
125
125
 
126
- | Feature | Description |
127
- | ---------------------- | ------------------------------------------------------------------------------------------------------ |
128
- | **Chat** | Streaming conversations with prompt queueing, multi-model comparison, and chat forking |
129
- | **Local inference** | Ollama support with no required cloud account |
130
- | **Provider plugins** | Chat, image, video, embedding, and speech providers through an extensible plugin layer |
131
- | **Knowledge** | Chat with PDF, Office, Markdown, HTML, code, and CSV documents via hybrid retrieval with cited sources |
132
- | **Web search** | Self-hosted SearXNG search for chats and Work tasks |
133
- | **Artifacts** | Generate and preview HTML, SVG, JSON, code, and multi-file projects |
134
- | **Workspaces** | Persistent, task-scoped environments with files, terminal, diffs, and previews |
135
- | **Channels** | Public, private, and direct-message team conversations with threads, reactions, files, and `@model` |
136
- | **Calendar** | Multiple shareable calendars with recurrence, reminders, and ICS import/export, encrypted at rest |
137
- | **Automations** | Scheduled AI runs delivered as normal chat sessions |
138
- | **Notifications** | Durable in-app inbox with live delivery and signed, egress-guarded outbound webhooks |
139
- | **Notes** | Notebook with revision history, attachments, sharing, and reversible AI edits |
140
- | **Personas** | Reusable assistant profiles with their own prompts, models, and memory |
141
- | **Media generation** | Image generation and editing plus video generation, with a persistent gallery and retention controls |
142
- | **Voice** | Speech-to-text dictation, text-to-speech playback, and hands-free voice mode with consent-aware voices |
143
- | **Context management** | Context meter and undoable conversation compaction for long chats |
144
- | **Agents** | Optional integration with installed agent CLIs and Libre Claw |
145
- | **Sharing** | One grant model for chats, notes, knowledge, personas, prompts, skills, and calendars |
146
- | **Accounts** | Local accounts, roles, groups, API tokens, and SSO |
147
- | **Public API** | OpenAI-compatible `/v1` endpoints on scoped API tokens |
148
- | **Evaluations** | Feedback with topic tags, blind arena matches with an Elo leaderboard, and reproducible eval runs |
149
- | **Monitoring** | System diagnostics, usage analytics with tariffs and budgets, OpenTelemetry export, and an audit log |
150
- | **Deployment** | npm, Docker Compose, Kubernetes, Helm, and desktop client |
151
- | **Interface** | Tabs, full-text search across chats, notes, and documents, themes, and 25 locales including Arabic RTL |
126
+ | Feature | Description |
127
+ | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
128
+ | **Chat** | Streaming conversations with prompt queueing, multi-model comparison, and chat forking |
129
+ | **Local inference** | Ollama support with no required cloud account |
130
+ | **Provider plugins** | Chat, image, video, embedding, and speech providers through an extensible plugin layer |
131
+ | **Knowledge** | Chat with PDF, Office, Markdown, HTML, code, and CSV documents via hybrid retrieval with cited sources |
132
+ | **Web search** | Self-hosted SearXNG search for chats and Work tasks |
133
+ | **Artifacts** | Generate and preview HTML, SVG, JSON, code, and multi-file projects |
134
+ | **Workspaces** | Persistent, task-scoped environments with files, terminal, diffs, and previews |
135
+ | **Work Computer** | A watchable desktop with a browser for each agent — verified clicks and typing, take over for sign-ins, hear its audio, and teach it anchored tasks by demonstration |
136
+ | **Channels** | Public, private, and direct-message team conversations with threads, reactions, files, and `@model` |
137
+ | **Calendar** | Multiple shareable calendars with recurrence, reminders, and ICS import/export, encrypted at rest |
138
+ | **Automations** | Scheduled AI runs delivered as normal chat sessions |
139
+ | **Notifications** | Durable in-app inbox with live delivery and signed, egress-guarded outbound webhooks |
140
+ | **Notes** | Notebook with revision history, attachments, sharing, and reversible AI edits |
141
+ | **Personas** | Reusable assistant profiles with their own prompts, models, and memory |
142
+ | **Media generation** | Image generation and editing plus video generation, with a persistent gallery and retention controls |
143
+ | **Voice** | Speech-to-text dictation, text-to-speech playback, and hands-free voice mode with consent-aware voices |
144
+ | **Context management** | Context meter and undoable conversation compaction for long chats |
145
+ | **Agents** | Optional integration with installed agent CLIs and Libre Claw |
146
+ | **Sharing** | One grant model for chats, notes, knowledge, personas, prompts, skills, and calendars |
147
+ | **Accounts** | Local accounts, roles, groups, API tokens, and SSO |
148
+ | **Public API** | OpenAI-compatible `/v1` endpoints on scoped API tokens |
149
+ | **Evaluations** | Feedback with topic tags, blind arena matches with an Elo leaderboard, and reproducible eval runs |
150
+ | **Monitoring** | System diagnostics, usage analytics with tariffs and budgets, OpenTelemetry export, and an audit log |
151
+ | **Deployment** | npm, Docker Compose, Kubernetes, Helm, and desktop client |
152
+ | **Interface** | Tabs, full-text search across chats, notes, and documents, themes, and 25 locales including Arabic RTL |
152
153
 
153
154
  ## Models and providers
154
155
 
@@ -172,6 +173,7 @@ Supported integrations include:
172
173
  - Qwen3-TTS
173
174
  - Kyutai TTS
174
175
  - MLX LM on Apple Silicon
176
+ - llama.cpp
175
177
  - OpenAI-compatible services
176
178
 
177
179
  Provider availability can change between releases. See the
@@ -193,7 +195,7 @@ Work task
193
195
  ├── Persistent conversation and run history
194
196
  ├── Dedicated workspace volume
195
197
  ├── Policy-checked command sandbox
196
- └── Files · Activity · Terminal · Preview
198
+ └── Files · Activity · Changes · Terminal · Preview · Screen
197
199
  ```
198
200
 
199
201
  Work can allow a model to:
@@ -201,10 +203,35 @@ Work can allow a model to:
201
203
  - Read, create, edit, move, delete, and search files
202
204
  - Run bounded shell commands
203
205
  - Start and stop a browser preview
206
+ - Drive a real desktop with a browser through screenshots and input
204
207
  - Produce syntax-highlighted code
205
208
  - Show file diffs
206
209
  - Continue work in the same environment later
207
210
 
211
+ **[▶ Watch a real run (2:22)](https://s3.librewebui.org/media/work-computer-demo.mp4?v=2)** —
212
+ a Work agent browsing NASA's galleries on its own screen, choosing
213
+ photos, then building and testing an interactive Three.js gallery,
214
+ unedited, from a single prompt.
215
+
216
+ https://github.com/user-attachments/assets/acd1ee80-c643-4622-bee6-3cdc2325a4ca
217
+
218
+ With the **Work Computer** enabled (one click for an administrator; the
219
+ GUI image is published ready to pull), each task also gets a live virtual
220
+ desktop: watch the agent browse in real time, unmute the computer's
221
+ audio, take over the mouse and keyboard for sign-ins or CAPTCHAs —
222
+ credentials go directly from your keyboard to the page, never through the
223
+ model — and teach reusable tasks by demonstrating them once on screen.
224
+ Taught playbooks name the controls that were clicked, carry the sites the
225
+ demonstration actually visited as their allowed scope, and collect a
226
+ worked/failed track record from your one-click reviews. The agent's own
227
+ actions are verified, not assumed: typing asserts the focused field,
228
+ batches stop when the screen changes underneath them, outcomes are
229
+ checked against declared expectations, and repeated no-effect actions end
230
+ the run asking for help instead of burning its budget. Policies decide
231
+ whether takeover is allowed at all. You can message the agent while it
232
+ works; it picks the message up at its next step without stopping the
233
+ run.
234
+
208
235
  Work is disabled for regular users by default and never falls back to executing
209
236
  commands directly on the host.
210
237
 
@@ -249,7 +276,7 @@ For multi-user deployments, Libre WebUI supports:
249
276
  - Optional GitHub and Hugging Face OAuth, plus generic OIDC single sign-on
250
277
  - An admin-facing security audit log
251
278
  - AES-256-GCM encryption for sensitive application values
252
- - Persistent SQLite storage
279
+ - Persistent SQLite storage, or PostgreSQL with S3 blobs and pgvector for the multi-replica team profile
253
280
  - Configurable data directories
254
281
 
255
282
  Application-layer encryption is not full-disk encryption or end-to-end
@@ -291,6 +318,7 @@ HTTP, web search, MCP, memory, approvals, and schedules.
291
318
  | **External Ollama** | `docker compose -f docker-compose.external-ollama.yml up -d` | Use an existing Ollama instance |
292
319
  | **NVIDIA Docker** | `docker compose -f docker-compose.gpu.yml up -d` | GPU-enabled local inference |
293
320
  | **Kubernetes** | `helm install libre-webui oci://ghcr.io/libre-webui/charts/libre-webui` | Cluster deployment |
321
+ | **Team profile** | `docker compose -f docker-compose.team.yml up -d` | Multi-replica PostgreSQL + S3 deployment |
294
322
  | **Desktop client** | [GitHub Releases](https://github.com/libre-webui/libre-webui/releases) | Desktop interface over a managed backend |
295
323
  | **Source** | `npm install && npm run dev` | Development |
296
324
 
@@ -0,0 +1,9 @@
1
+ import type { PostgresMigration } from './postgresMigrationTypes.js';
2
+ /**
3
+ * Automations gain a run target: 'chat' keeps today's scheduled chat
4
+ * sessions, 'work' launches an isolated Work task instead, optionally under
5
+ * a named Work policy. Runs record the task they created.
6
+ */
7
+ export declare const POSTGRES_AUTOMATION_WORK_TARGET_SQL = "ALTER TABLE automations ADD COLUMN target text NOT NULL DEFAULT 'chat' CHECK (target IN ('chat', 'work'));\nALTER TABLE automations ADD COLUMN work_policy_id text;\nALTER TABLE automation_runs ADD COLUMN work_task_id text;";
8
+ export declare const POSTGRES_AUTOMATION_WORK_TARGET_MIGRATION: PostgresMigration;
9
+ //# sourceMappingURL=postgresAutomationWorkTargetMigration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgresAutomationWorkTargetMigration.d.ts","sourceRoot":"","sources":["../../src/persistence/postgresAutomationWorkTargetMigration.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;GAIG;AAIH,eAAO,MAAM,mCAAmC,mOAEU,CAAC;AAK3D,eAAO,MAAM,yCAAyC,EAAE,iBAcpD,CAAC"}
@@ -0,0 +1,44 @@
1
+ /*
2
+ * Libre WebUI
3
+ * Copyright (C) 2025 Kroonen AI, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at:
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { createHash } from 'node:crypto';
18
+ /**
19
+ * Automations gain a run target: 'chat' keeps today's scheduled chat
20
+ * sessions, 'work' launches an isolated Work task instead, optionally under
21
+ * a named Work policy. Runs record the task they created.
22
+ */
23
+ // CHECK expressions use the exact form PostgreSQL reconstructs in
24
+ // pg_get_constraintdef, so the schema inspector's declared and actual
25
+ // constraint texts normalize identically.
26
+ export const POSTGRES_AUTOMATION_WORK_TARGET_SQL = `ALTER TABLE automations ADD COLUMN target text NOT NULL DEFAULT 'chat' CHECK (target IN ('chat', 'work'));
27
+ ALTER TABLE automations ADD COLUMN work_policy_id text;
28
+ ALTER TABLE automation_runs ADD COLUMN work_task_id text;`;
29
+ const version = 21;
30
+ const name = 'automation-work-target';
31
+ export const POSTGRES_AUTOMATION_WORK_TARGET_MIGRATION = Object.freeze({
32
+ version,
33
+ name,
34
+ checksum: createHash('sha256')
35
+ .update(`${version}\n${name}\n${POSTGRES_AUTOMATION_WORK_TARGET_SQL}`)
36
+ .digest('hex'),
37
+ sql: POSTGRES_AUTOMATION_WORK_TARGET_SQL,
38
+ rollbackPlan: 'ALTER TABLE automations DROP COLUMN target, DROP COLUMN ' +
39
+ 'work_policy_id; ALTER TABLE automation_runs DROP COLUMN ' +
40
+ 'work_task_id; delete ledger row 21. Every automation reverts to ' +
41
+ 'running as a scheduled chat session.',
42
+ minimumCompatibleVersion: 21,
43
+ });
44
+ //# sourceMappingURL=postgresAutomationWorkTargetMigration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgresAutomationWorkTargetMigration.js","sourceRoot":"","sources":["../../src/persistence/postgresAutomationWorkTargetMigration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,kEAAkE;AAClE,sEAAsE;AACtE,0CAA0C;AAC1C,MAAM,CAAC,MAAM,mCAAmC,GAAG;;0DAEO,CAAC;AAE3D,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,MAAM,IAAI,GAAG,wBAAwB,CAAC;AAEtC,MAAM,CAAC,MAAM,yCAAyC,GACpD,MAAM,CAAC,MAAM,CAAC;IACZ,OAAO;IACP,IAAI;IACJ,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;SAC3B,MAAM,CAAC,GAAG,OAAO,KAAK,IAAI,KAAK,mCAAmC,EAAE,CAAC;SACrE,MAAM,CAAC,KAAK,CAAC;IAChB,GAAG,EAAE,mCAAmC;IACxC,YAAY,EACV,0DAA0D;QAC1D,0DAA0D;QAC1D,kEAAkE;QAClE,sCAAsC;IACxC,wBAAwB,EAAE,EAAE;CAC7B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgresMfaPushRecoveryMigration.d.ts","sourceRoot":"","sources":["../../src/persistence/postgresMfaPushRecoveryMigration.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;GAIG;AAIH,eAAO,MAAM,8BAA8B,ywDAgET,CAAC;AAKnC,eAAO,MAAM,oCAAoC,EAAE,iBAe/C,CAAC"}
1
+ {"version":3,"file":"postgresMfaPushRecoveryMigration.d.ts","sourceRoot":"","sources":["../../src/persistence/postgresMfaPushRecoveryMigration.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;GAIG;AAIH,eAAO,MAAM,8BAA8B,ywDAgET,CAAC;AASnC,eAAO,MAAM,oCAAoC,EAAE,iBAa/C,CAAC"}
@@ -14,7 +14,6 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { createHash } from 'node:crypto';
18
17
  /**
19
18
  * Account-security and client-delivery schema: TOTP multi-factor state with
20
19
  * one-time recovery codes, WebAuthn passkey credentials, browser Web Push
@@ -90,12 +89,13 @@ CREATE INDEX idx_recovery_drills_started
90
89
  ON recovery_drills(started_at);`;
91
90
  const version = 20;
92
91
  const name = 'mfa-push-recovery';
92
+ // Frozen integrity checksum of `${version}\n${name}\n${SQL}`. This migration is
93
+ // already released, so changing its DDL must fail registry validation.
94
+ const checksum = '91906a765da28e48e7d1e2d82a230f76ab06fe934a12f8cc06658ffd75671e23';
93
95
  export const POSTGRES_MFA_PUSH_RECOVERY_MIGRATION = Object.freeze({
94
96
  version,
95
97
  name,
96
- checksum: createHash('sha256')
97
- .update(`${version}\n${name}\n${POSTGRES_MFA_PUSH_RECOVERY_SQL}`)
98
- .digest('hex'),
98
+ checksum,
99
99
  sql: POSTGRES_MFA_PUSH_RECOVERY_SQL,
100
100
  rollbackPlan: 'DROP TABLE recovery_drills, push_subscriptions, ' +
101
101
  'webauthn_credentials, mfa_recovery_codes, user_mfa; delete ledger ' +
@@ -1 +1 @@
1
- {"version":3,"file":"postgresMfaPushRecoveryMigration.js","sourceRoot":"","sources":["../../src/persistence/postgresMfaPushRecoveryMigration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;GAIG;AACH,kEAAkE;AAClE,sEAAsE;AACtE,0CAA0C;AAC1C,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAgEZ,CAAC;AAEnC,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,MAAM,IAAI,GAAG,mBAAmB,CAAC;AAEjC,MAAM,CAAC,MAAM,oCAAoC,GAC/C,MAAM,CAAC,MAAM,CAAC;IACZ,OAAO;IACP,IAAI;IACJ,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;SAC3B,MAAM,CAAC,GAAG,OAAO,KAAK,IAAI,KAAK,8BAA8B,EAAE,CAAC;SAChE,MAAM,CAAC,KAAK,CAAC;IAChB,GAAG,EAAE,8BAA8B;IACnC,YAAY,EACV,kDAAkD;QAClD,oEAAoE;QACpE,oEAAoE;QACpE,oEAAoE;QACpE,WAAW;IACb,wBAAwB,EAAE,EAAE;CAC7B,CAAC,CAAC"}
1
+ {"version":3,"file":"postgresMfaPushRecoveryMigration.js","sourceRoot":"","sources":["../../src/persistence/postgresMfaPushRecoveryMigration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;GAIG;AACH,kEAAkE;AAClE,sEAAsE;AACtE,0CAA0C;AAC1C,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAgEZ,CAAC;AAEnC,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,MAAM,IAAI,GAAG,mBAAmB,CAAC;AACjC,gFAAgF;AAChF,uEAAuE;AACvE,MAAM,QAAQ,GACZ,kEAAkE,CAAC;AAErE,MAAM,CAAC,MAAM,oCAAoC,GAC/C,MAAM,CAAC,MAAM,CAAC;IACZ,OAAO;IACP,IAAI;IACJ,QAAQ;IACR,GAAG,EAAE,8BAA8B;IACnC,YAAY,EACV,kDAAkD;QAClD,oEAAoE;QACpE,oEAAoE;QACpE,oEAAoE;QACpE,WAAW;IACb,wBAAwB,EAAE,EAAE;CAC7B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgresMigrationRegistry.d.ts","sourceRoot":"","sources":["../../src/persistence/postgresMigrationRegistry.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EA0BzD,CAAC"}
1
+ {"version":3,"file":"postgresMigrationRegistry.d.ts","sourceRoot":"","sources":["../../src/persistence/postgresMigrationRegistry.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EA6BzD,CAAC"}
@@ -22,6 +22,9 @@ import { POSTGRES_NOTES_V2_MIGRATION } from './postgresNotesV2Migration.js';
22
22
  import { POSTGRES_TEAM_COLLABORATION_MIGRATION } from './postgresTeamCollaborationMigration.js';
23
23
  import { POSTGRES_MEDIA_ENTERPRISE_OPS_MIGRATION } from './postgresMediaEnterpriseOpsMigration.js';
24
24
  import { POSTGRES_MFA_PUSH_RECOVERY_MIGRATION } from './postgresMfaPushRecoveryMigration.js';
25
+ import { POSTGRES_AUTOMATION_WORK_TARGET_MIGRATION } from './postgresAutomationWorkTargetMigration.js';
26
+ import { POSTGRES_WORK_COMPUTER_MIGRATION } from './postgresWorkComputerMigration.js';
27
+ import { POSTGRES_WORK_TAKEOVER_MIGRATION } from './postgresWorkTakeoverMigration.js';
25
28
  import { validatePostgresMigrationRegistry } from './postgresMigrations.js';
26
29
  /** Ordered, immutable schema contract consumed by every PostgreSQL replica. */
27
30
  export const POSTGRES_MIGRATIONS = validatePostgresMigrationRegistry(Object.freeze([
@@ -45,5 +48,8 @@ export const POSTGRES_MIGRATIONS = validatePostgresMigrationRegistry(Object.free
45
48
  POSTGRES_TEAM_COLLABORATION_MIGRATION,
46
49
  POSTGRES_MEDIA_ENTERPRISE_OPS_MIGRATION,
47
50
  POSTGRES_MFA_PUSH_RECOVERY_MIGRATION,
51
+ POSTGRES_AUTOMATION_WORK_TARGET_MIGRATION,
52
+ POSTGRES_WORK_COMPUTER_MIGRATION,
53
+ POSTGRES_WORK_TAKEOVER_MIGRATION,
48
54
  ].map(migration => Object.freeze({ ...migration }))));
49
55
  //# sourceMappingURL=postgresMigrationRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgresMigrationRegistry.js","sourceRoot":"","sources":["../../src/persistence/postgresMigrationRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sCAAsC,EAAE,MAAM,iDAAiD,CAAC;AACzG,OAAO,EAAE,4CAA4C,EAAE,MAAM,8DAA8D,CAAC;AAC5H,OAAO,EAAE,6CAA6C,EAAE,MAAM,8DAA8D,CAAC;AAC7H,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,8CAA8C,EAAE,MAAM,mEAAmE,CAAC;AACnI,OAAO,EAAE,mCAAmC,EAAE,MAAM,sDAAsD,CAAC;AAC3G,OAAO,EAAE,iCAAiC,EAAE,MAAM,+DAA+D,CAAC;AAClH,OAAO,EAAE,uCAAuC,EAAE,MAAM,oEAAoE,CAAC;AAC7H,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,uCAAuC,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,uCAAuC,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAE7F,OAAO,EAAE,iCAAiC,EAAE,MAAM,yBAAyB,CAAC;AAE5E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAC9B,iCAAiC,CAC/B,MAAM,CAAC,MAAM,CACX;IACE,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,sCAAsC;IACtC,4BAA4B;IAC5B,mCAAmC;IACnC,oCAAoC;IACpC,iCAAiC;IACjC,4CAA4C;IAC5C,8CAA8C;IAC9C,uCAAuC;IACvC,6CAA6C;IAC7C,mCAAmC;IACnC,uCAAuC;IACvC,mCAAmC;IACnC,8BAA8B;IAC9B,2BAA2B;IAC3B,qCAAqC;IACrC,uCAAuC;IACvC,oCAAoC;CACrC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CACpD,CACF,CAAC"}
1
+ {"version":3,"file":"postgresMigrationRegistry.js","sourceRoot":"","sources":["../../src/persistence/postgresMigrationRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sCAAsC,EAAE,MAAM,iDAAiD,CAAC;AACzG,OAAO,EAAE,4CAA4C,EAAE,MAAM,8DAA8D,CAAC;AAC5H,OAAO,EAAE,6CAA6C,EAAE,MAAM,8DAA8D,CAAC;AAC7H,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,8CAA8C,EAAE,MAAM,mEAAmE,CAAC;AACnI,OAAO,EAAE,mCAAmC,EAAE,MAAM,sDAAsD,CAAC;AAC3G,OAAO,EAAE,iCAAiC,EAAE,MAAM,+DAA+D,CAAC;AAClH,OAAO,EAAE,uCAAuC,EAAE,MAAM,oEAAoE,CAAC;AAC7H,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,uCAAuC,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,uCAAuC,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,yCAAyC,EAAE,MAAM,4CAA4C,CAAC;AACvG,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EAAE,iCAAiC,EAAE,MAAM,yBAAyB,CAAC;AAE5E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAC9B,iCAAiC,CAC/B,MAAM,CAAC,MAAM,CACX;IACE,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,sCAAsC;IACtC,4BAA4B;IAC5B,mCAAmC;IACnC,oCAAoC;IACpC,iCAAiC;IACjC,4CAA4C;IAC5C,8CAA8C;IAC9C,uCAAuC;IACvC,6CAA6C;IAC7C,mCAAmC;IACnC,uCAAuC;IACvC,mCAAmC;IACnC,8BAA8B;IAC9B,2BAA2B;IAC3B,qCAAqC;IACrC,uCAAuC;IACvC,oCAAoC;IACpC,yCAAyC;IACzC,gCAAgC;IAChC,gCAAgC;CACjC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CACpD,CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgresResourceRepositories.d.ts","sourceRoot":"","sources":["../../src/persistence/postgresResourceRepositories.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,IAAI,CAAC;AAErD,OAAO,KAAK,EACV,+BAA+B,EAyEhC,MAAM,oBAAoB,CAAC;AAM5B,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAyyI/B,eAAO,MAAM,kCAAkC,aACnC,gBAAgB,KACzB,+BA+BD,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,+CAA+C,aAChD,gBAAgB,UAClB,UAAU,KACjB,+BAOF,CAAC"}
1
+ {"version":3,"file":"postgresResourceRepositories.d.ts","sourceRoot":"","sources":["../../src/persistence/postgresResourceRepositories.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,IAAI,CAAC;AAErD,OAAO,KAAK,EACV,+BAA+B,EAyEhC,MAAM,oBAAoB,CAAC;AAM5B,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAo0I/B,eAAO,MAAM,kCAAkC,aACnC,gBAAgB,KACzB,+BA+BD,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,+CAA+C,aAChD,gBAAgB,UAClB,UAAU,KACjB,+BAOF,CAAC"}
@@ -1426,8 +1426,10 @@ class PostgresAutomationRepository {
1426
1426
  }
1427
1427
  const result = await client.query(`INSERT INTO automations
1428
1428
  (id, user_id, name, instructions, triggers, provider, model,
1429
- notify, status, next_run_at, last_run_at, created_at, updated_at)
1430
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
1429
+ notify, status, target, work_policy_id, next_run_at,
1430
+ last_run_at, created_at, updated_at)
1431
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13,
1432
+ $14, $15)
1431
1433
  ON CONFLICT (id) DO UPDATE SET
1432
1434
  name = EXCLUDED.name,
1433
1435
  instructions = EXCLUDED.instructions,
@@ -1436,6 +1438,8 @@ class PostgresAutomationRepository {
1436
1438
  model = EXCLUDED.model,
1437
1439
  notify = EXCLUDED.notify,
1438
1440
  status = EXCLUDED.status,
1441
+ target = EXCLUDED.target,
1442
+ work_policy_id = EXCLUDED.work_policy_id,
1439
1443
  next_run_at = EXCLUDED.next_run_at,
1440
1444
  last_run_at = EXCLUDED.last_run_at,
1441
1445
  updated_at = EXCLUDED.updated_at
@@ -1449,6 +1453,8 @@ class PostgresAutomationRepository {
1449
1453
  value.model,
1450
1454
  value.notify,
1451
1455
  value.status,
1456
+ value.target,
1457
+ value.work_policy_id,
1452
1458
  value.next_run_at,
1453
1459
  value.last_run_at,
1454
1460
  value.created_at,
@@ -1488,8 +1494,9 @@ class PostgresAutomationRunRepository {
1488
1494
  async insert(run) {
1489
1495
  await this.database.query(`INSERT INTO automation_runs
1490
1496
  (id, automation_id, user_id, scheduled_for, started_at, finished_at,
1491
- status, session_id, assistant_message_id, error, seen_at, created_at)
1492
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)`, [
1497
+ status, session_id, assistant_message_id, work_task_id, error,
1498
+ seen_at, created_at)
1499
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)`, [
1493
1500
  run.id,
1494
1501
  run.automation_id,
1495
1502
  run.user_id,
@@ -1499,6 +1506,7 @@ class PostgresAutomationRunRepository {
1499
1506
  run.status,
1500
1507
  run.session_id,
1501
1508
  run.assistant_message_id,
1509
+ run.work_task_id,
1502
1510
  run.error,
1503
1511
  run.seen_at,
1504
1512
  run.created_at,
@@ -1543,6 +1551,11 @@ class PostgresAutomationRunRepository {
1543
1551
  status = 'running'
1544
1552
  WHERE id = $4 AND status = 'queued'`, [sessionId, assistantMessageId, startedAt, runId])).rowCount) > 0);
1545
1553
  }
1554
+ async markStartedWork(runId, workTaskId, startedAt) {
1555
+ return (changes((await this.database.query(`UPDATE automation_runs
1556
+ SET work_task_id = $1, started_at = $2, status = 'running'
1557
+ WHERE id = $3 AND status = 'queued'`, [workTaskId, startedAt, runId])).rowCount) > 0);
1558
+ }
1546
1559
  async finalize(runId, status, finishedAt, error) {
1547
1560
  return (changes((await this.database.query(`UPDATE automation_runs
1548
1561
  SET status = $1, finished_at = $2, error = $3