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
@@ -0,0 +1,328 @@
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
+ /**
18
+ * Browser Web Push, implemented directly on node:crypto:
19
+ *
20
+ * - RFC 8291 payload encryption (ECDH P-256 + HKDF + aes128gcm, one record).
21
+ * - RFC 8292 VAPID authorization (ES256 JWT bound to the endpoint origin).
22
+ * - Per-device subscriptions encrypted at rest, bound to the auth session
23
+ * that created them, and removed when that session is revoked.
24
+ *
25
+ * VAPID keys come from `VAPID_PUBLIC_KEY`/`VAPID_PRIVATE_KEY` (base64url,
26
+ * uncompressed point + raw scalar) or are generated once and persisted in
27
+ * system settings, encrypted. Deliveries go through the shared egress guard,
28
+ * so a subscription endpoint can never reach private address space.
29
+ */
30
+ import { createCipheriv, createECDH, createPrivateKey, hkdfSync, randomBytes, randomUUID, sign as cryptoSign, } from 'node:crypto';
31
+ import { isIP } from 'node:net';
32
+ import { getPersistence } from '../persistence/index.js';
33
+ import { encryptionService } from './encryptionService.js';
34
+ import { getSystemSetting, setSystemSetting } from './systemSettingsService.js';
35
+ import { isAllowlistedPrivateHost, secureToolRequest, validateToolServerUrl, } from '../utils/toolEgress.js';
36
+ import { isPublicIpAddress } from '../utils/webpageFetcher.js';
37
+ import { registerSessionRevocationListener, } from './authSessionService.js';
38
+ import { createLogger } from '../utils/logger.js';
39
+ const logger = createLogger('services:web-push');
40
+ const repositories = () => getPersistence(encryptionService).repositories.resources;
41
+ const MAX_SUBSCRIPTIONS_PER_USER = 10;
42
+ const MAX_PAYLOAD_BYTES = 3800;
43
+ const PUSH_TTL_SECONDS = 24 * 60 * 60;
44
+ const VAPID_JWT_LIFETIME_SECONDS = 12 * 60 * 60;
45
+ export class WebPushError extends Error {
46
+ constructor(message, statusCode = 400) {
47
+ super(message);
48
+ this.statusCode = statusCode;
49
+ }
50
+ }
51
+ /** The endpoint acknowledged but the subscription no longer exists. */
52
+ export class PushSubscriptionGoneError extends Error {
53
+ }
54
+ let cachedKeys = null;
55
+ const generateVapidKeys = () => {
56
+ const ecdh = createECDH('prime256v1');
57
+ ecdh.generateKeys();
58
+ return {
59
+ publicKey: ecdh.getPublicKey().toString('base64url'),
60
+ privateKey: ecdh.getPrivateKey().toString('base64url'),
61
+ };
62
+ };
63
+ const validKeyShape = (keys) => {
64
+ try {
65
+ const publicKey = Buffer.from(keys.publicKey, 'base64url');
66
+ const privateKey = Buffer.from(keys.privateKey, 'base64url');
67
+ return (publicKey.length === 65 &&
68
+ publicKey[0] === 0x04 &&
69
+ privateKey.length === 32);
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ };
75
+ export const getVapidKeys = async () => {
76
+ if (cachedKeys)
77
+ return cachedKeys;
78
+ const fromEnv = {
79
+ publicKey: process.env.VAPID_PUBLIC_KEY?.trim() ?? '',
80
+ privateKey: process.env.VAPID_PRIVATE_KEY?.trim() ?? '',
81
+ };
82
+ if (fromEnv.publicKey && fromEnv.privateKey) {
83
+ if (!validKeyShape(fromEnv)) {
84
+ throw new WebPushError('VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY are not valid base64url P-256 keys', 500);
85
+ }
86
+ cachedKeys = fromEnv;
87
+ return cachedKeys;
88
+ }
89
+ const stored = await getSystemSetting('web_push_vapid_keys');
90
+ if (stored) {
91
+ try {
92
+ const decoded = JSON.parse(encryptionService.decryptAuthenticated(stored));
93
+ if (validKeyShape(decoded)) {
94
+ cachedKeys = decoded;
95
+ return cachedKeys;
96
+ }
97
+ }
98
+ catch {
99
+ logger.warn('Stored VAPID keys were unreadable; regenerating');
100
+ }
101
+ }
102
+ const generated = generateVapidKeys();
103
+ await setSystemSetting('web_push_vapid_keys', encryptionService.encrypt(JSON.stringify(generated)));
104
+ cachedKeys = generated;
105
+ return cachedKeys;
106
+ };
107
+ export const getVapidPublicKey = async () => (await getVapidKeys()).publicKey;
108
+ /** Raw P-256 scalar + point → a PEM/KeyObject for ES256 signing. */
109
+ const vapidPrivateKeyObject = (keys) => {
110
+ const publicKey = Buffer.from(keys.publicKey, 'base64url');
111
+ return createPrivateKey({
112
+ key: {
113
+ kty: 'EC',
114
+ crv: 'P-256',
115
+ d: keys.privateKey,
116
+ x: publicKey.subarray(1, 33).toString('base64url'),
117
+ y: publicKey.subarray(33, 65).toString('base64url'),
118
+ },
119
+ format: 'jwk',
120
+ });
121
+ };
122
+ const base64UrlJson = (value) => Buffer.from(JSON.stringify(value), 'utf8').toString('base64url');
123
+ /** RFC 8292 VAPID JWT for one push-service origin. */
124
+ export const buildVapidAuthorization = async (endpointOrigin) => {
125
+ const keys = await getVapidKeys();
126
+ const header = base64UrlJson({ typ: 'JWT', alg: 'ES256' });
127
+ const payload = base64UrlJson({
128
+ aud: endpointOrigin,
129
+ exp: Math.floor(Date.now() / 1000) + VAPID_JWT_LIFETIME_SECONDS,
130
+ sub: process.env.VAPID_SUBJECT?.trim() || 'mailto:admin@localhost',
131
+ });
132
+ const signature = cryptoSign('sha256', Buffer.from(`${header}.${payload}`, 'utf8'), { key: vapidPrivateKeyObject(keys), dsaEncoding: 'ieee-p1363' }).toString('base64url');
133
+ return `vapid t=${header}.${payload}.${signature}, k=${keys.publicKey}`;
134
+ };
135
+ /**
136
+ * Encrypt one push message with aes128gcm content encoding. Returns the
137
+ * complete request body (header block + single record).
138
+ */
139
+ export const encryptPushPayload = (userAgentPublicKey, authSecret, plaintext, params = {}) => {
140
+ if (userAgentPublicKey.length !== 65 || userAgentPublicKey[0] !== 0x04) {
141
+ throw new WebPushError('Subscription p256dh key is not a P-256 point');
142
+ }
143
+ if (authSecret.length !== 16) {
144
+ throw new WebPushError('Subscription auth secret must be 16 bytes');
145
+ }
146
+ if (plaintext.length > MAX_PAYLOAD_BYTES) {
147
+ throw new WebPushError('Push payload is too large');
148
+ }
149
+ const ecdh = createECDH('prime256v1');
150
+ if (params.ephemeralPrivateKey) {
151
+ ecdh.setPrivateKey(params.ephemeralPrivateKey);
152
+ }
153
+ else {
154
+ ecdh.generateKeys();
155
+ }
156
+ const applicationServerPublicKey = ecdh.getPublicKey();
157
+ const sharedSecret = ecdh.computeSecret(userAgentPublicKey);
158
+ // RFC 8291 §3.3-3.4: combine the ECDH secret with the auth secret and both
159
+ // public keys, then derive the content key and nonce from a random salt.
160
+ const keyInfo = Buffer.concat([
161
+ Buffer.from('WebPush: info\0', 'utf8'),
162
+ userAgentPublicKey,
163
+ applicationServerPublicKey,
164
+ ]);
165
+ const inputKeyingMaterial = Buffer.from(hkdfSync('sha256', sharedSecret, authSecret, keyInfo, 32));
166
+ const salt = params.salt ?? randomBytes(16);
167
+ const contentEncryptionKey = Buffer.from(hkdfSync('sha256', inputKeyingMaterial, salt, Buffer.from('Content-Encoding: aes128gcm\0', 'utf8'), 16));
168
+ const nonce = Buffer.from(hkdfSync('sha256', inputKeyingMaterial, salt, Buffer.from('Content-Encoding: nonce\0', 'utf8'), 12));
169
+ const recordSize = Buffer.alloc(4);
170
+ recordSize.writeUInt32BE(4096);
171
+ const header = Buffer.concat([
172
+ salt,
173
+ recordSize,
174
+ Buffer.from([applicationServerPublicKey.length]),
175
+ applicationServerPublicKey,
176
+ ]);
177
+ const cipher = createCipheriv('aes-128-gcm', contentEncryptionKey, nonce);
178
+ const padded = Buffer.concat([plaintext, Buffer.from([0x02])]);
179
+ const ciphertext = Buffer.concat([
180
+ cipher.update(padded),
181
+ cipher.final(),
182
+ cipher.getAuthTag(),
183
+ ]);
184
+ return Buffer.concat([header, ciphertext]);
185
+ };
186
+ /* ------------------------------------------------------ subscriptions */
187
+ const endpointLookup = (endpoint) => encryptionService.purposeLookupToken('push-endpoint', endpoint);
188
+ const assertAcceptableEndpoint = (endpoint) => {
189
+ let url;
190
+ try {
191
+ url = validateToolServerUrl(endpoint);
192
+ }
193
+ catch {
194
+ throw new WebPushError('The push endpoint URL is not valid');
195
+ }
196
+ if (url.protocol !== 'https:') {
197
+ throw new WebPushError('Push endpoints must use HTTPS');
198
+ }
199
+ const literalHost = url.hostname.replace(/^\[|\]$/g, '');
200
+ if (isIP(literalHost) !== 0 &&
201
+ !isAllowlistedPrivateHost(url.hostname) &&
202
+ !isPublicIpAddress(literalHost)) {
203
+ throw new WebPushError('Push endpoints cannot target private or local addresses');
204
+ }
205
+ return url;
206
+ };
207
+ const decodeSubscriptionKey = (value, name, expectedLength) => {
208
+ if (typeof value !== 'string' || !value) {
209
+ throw new WebPushError(`Subscription ${name} key is required`);
210
+ }
211
+ const decoded = Buffer.from(value, 'base64url');
212
+ if (decoded.length !== expectedLength) {
213
+ throw new WebPushError(`Subscription ${name} key has the wrong length`);
214
+ }
215
+ return decoded;
216
+ };
217
+ export const subscribe = async (userId, sessionId, input, userAgent) => {
218
+ const endpoint = typeof input.endpoint === 'string' ? input.endpoint : '';
219
+ if (!endpoint || endpoint.length > 2048) {
220
+ throw new WebPushError('The push endpoint URL is not valid');
221
+ }
222
+ assertAcceptableEndpoint(endpoint);
223
+ decodeSubscriptionKey(input.keys?.p256dh, 'p256dh', 65);
224
+ decodeSubscriptionKey(input.keys?.auth, 'auth', 16);
225
+ const existing = await repositories().pushSubscriptions.listByUser(userId);
226
+ const lookup = endpointLookup(endpoint);
227
+ const alreadyMine = existing.some(row => row.endpoint_lookup === lookup);
228
+ if (!alreadyMine && existing.length >= MAX_SUBSCRIPTIONS_PER_USER) {
229
+ throw new WebPushError(`At most ${MAX_SUBSCRIPTIONS_PER_USER} push subscriptions are supported per account`, 409);
230
+ }
231
+ const record = {
232
+ id: randomUUID(),
233
+ user_id: userId,
234
+ session_id: sessionId,
235
+ endpoint_lookup: lookup,
236
+ subscription: encryptionService.encrypt(JSON.stringify({
237
+ endpoint,
238
+ keys: { p256dh: input.keys?.p256dh, auth: input.keys?.auth },
239
+ })),
240
+ user_agent: userAgent?.slice(0, 512) ?? null,
241
+ created_at: Date.now(),
242
+ last_used_at: null,
243
+ };
244
+ await repositories().pushSubscriptions.upsertByEndpoint(record);
245
+ const stored = await repositories().pushSubscriptions.findByLookup(lookup);
246
+ return { id: stored?.id ?? record.id };
247
+ };
248
+ export const unsubscribe = async (userId, endpoint) => repositories().pushSubscriptions.deleteByLookup(userId, endpointLookup(endpoint));
249
+ export const listSubscriptionsForUser = async (userId) => repositories().pushSubscriptions.listByUser(userId);
250
+ /* ------------------------------------------------------------ delivery */
251
+ const decryptSubscription = (record) => {
252
+ try {
253
+ const decoded = JSON.parse(encryptionService.decryptAuthenticated(record.subscription));
254
+ if (typeof decoded.endpoint === 'string' &&
255
+ typeof decoded.keys?.p256dh === 'string' &&
256
+ typeof decoded.keys?.auth === 'string') {
257
+ return decoded;
258
+ }
259
+ }
260
+ catch {
261
+ // Fall through: an unreadable envelope means the subscription is dead.
262
+ }
263
+ return null;
264
+ };
265
+ /**
266
+ * Deliver one message to one stored subscription. Returns false (and
267
+ * removes the row) when the push service reports the subscription gone.
268
+ */
269
+ export const deliverToSubscription = async (subscriptionId, message, signal) => {
270
+ const record = await repositories().pushSubscriptions.findById(subscriptionId);
271
+ if (!record)
272
+ return { delivered: false };
273
+ const subscription = decryptSubscription(record);
274
+ if (!subscription) {
275
+ await repositories().pushSubscriptions.delete(record.id);
276
+ return { delivered: false };
277
+ }
278
+ const endpointUrl = assertAcceptableEndpoint(subscription.endpoint);
279
+ const body = encryptPushPayload(Buffer.from(subscription.keys.p256dh, 'base64url'), Buffer.from(subscription.keys.auth, 'base64url'), Buffer.from(JSON.stringify(message), 'utf8'));
280
+ const authorization = await buildVapidAuthorization(endpointUrl.origin);
281
+ const response = await secureToolRequest({
282
+ url: subscription.endpoint,
283
+ method: 'POST',
284
+ headers: {
285
+ Authorization: authorization,
286
+ TTL: String(PUSH_TTL_SECONDS),
287
+ 'Content-Encoding': 'aes128gcm',
288
+ 'Content-Type': 'application/octet-stream',
289
+ Urgency: 'normal',
290
+ },
291
+ body,
292
+ timeoutMs: 10000,
293
+ maxResponseBytes: 16 * 1024,
294
+ ...(signal ? { signal } : {}),
295
+ });
296
+ if (response.status === 404 || response.status === 410) {
297
+ await repositories().pushSubscriptions.delete(record.id);
298
+ throw new PushSubscriptionGoneError(`Push subscription is gone (${response.status})`);
299
+ }
300
+ if (response.status >= 200 && response.status < 300) {
301
+ await repositories().pushSubscriptions.touch(record.id, Date.now());
302
+ return { delivered: true, status: response.status };
303
+ }
304
+ return { delivered: false, status: response.status };
305
+ };
306
+ /* ---------------------------------------------------------- lifecycle */
307
+ let revocationCleanupRegistered = false;
308
+ /** Remove device subscriptions when their auth session is revoked. */
309
+ export const registerPushSessionCleanup = () => {
310
+ if (revocationCleanupRegistered)
311
+ return;
312
+ revocationCleanupRegistered = true;
313
+ registerSessionRevocationListener((event) => {
314
+ void (async () => {
315
+ try {
316
+ for (const sessionId of event.sessionIds) {
317
+ await repositories().pushSubscriptions.deleteForSession(sessionId);
318
+ }
319
+ }
320
+ catch (error) {
321
+ logger.warn('Push subscription cleanup after revocation failed', {
322
+ error,
323
+ });
324
+ }
325
+ })();
326
+ });
327
+ };
328
+ //# sourceMappingURL=webPushService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webPushService.js","sourceRoot":"","sources":["../../src/services/webPushService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ export declare class PasskeyError extends Error {
2
+ readonly statusCode: number;
3
+ constructor(message: string, statusCode?: number);
4
+ }
5
+ /** The relying-party id and origin policy for a request host. */
6
+ export declare const resolveRelyingParty: (requestHost: string) => {
7
+ rpId: string;
8
+ };
9
+ export interface PublicPasskey {
10
+ id: string;
11
+ name: string | null;
12
+ createdAt: number;
13
+ lastUsedAt: number | null;
14
+ }
15
+ export declare const listPasskeys: (userId: string) => Promise<PublicPasskey[]>;
16
+ export declare const deletePasskey: (userId: string, passkeyId: string) => Promise<boolean>;
17
+ export declare const deleteAllPasskeys: (userId: string) => Promise<number>;
18
+ export declare const registrationOptions: (user: {
19
+ id: string;
20
+ username: string;
21
+ }, requestHost: string) => Promise<{
22
+ challengeToken: string;
23
+ publicKey: Record<string, unknown>;
24
+ }>;
25
+ export interface RegistrationSubmission {
26
+ challengeToken: string;
27
+ name?: string;
28
+ credential: {
29
+ rawId: string;
30
+ response: {
31
+ clientDataJSON: string;
32
+ attestationObject: string;
33
+ transports?: string[];
34
+ };
35
+ };
36
+ }
37
+ export declare const registerPasskey: (userId: string, submission: RegistrationSubmission, requestHost: string) => Promise<PublicPasskey>;
38
+ export declare const loginOptions: (requestHost: string) => Promise<{
39
+ challengeToken: string;
40
+ publicKey: Record<string, unknown>;
41
+ }>;
42
+ export interface AssertionSubmission {
43
+ challengeToken: string;
44
+ credential: {
45
+ rawId: string;
46
+ response: {
47
+ clientDataJSON: string;
48
+ authenticatorData: string;
49
+ signature: string;
50
+ };
51
+ };
52
+ }
53
+ /** Verify a passwordless sign-in assertion; returns the credential owner. */
54
+ export declare const verifyPasskeyLogin: (submission: AssertionSubmission, requestHost: string) => Promise<{
55
+ userId: string;
56
+ passkeyId: string;
57
+ }>;
58
+ //# sourceMappingURL=webauthnService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webauthnService.d.ts","sourceRoot":"","sources":["../../src/services/webauthnService.ts"],"names":[],"mappings":"AAyDA,qBAAa,YAAa,SAAQ,KAAK;aAGnB,UAAU;IAF5B,YACE,OAAO,EAAE,MAAM,EACC,UAAU,SAAM,EAGjC;CACF;AAyBD,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,gBAAiB,MAAM,KAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAQvE,CAAC;AAuEF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AASD,eAAO,MAAM,YAAY,WAAkB,MAAM,KAAG,OAAO,CAAC,aAAa,EAAE,CACV,CAAC;AAElE,eAAO,MAAM,aAAa,WAChB,MAAM,aACH,MAAM,KAChB,OAAO,CAAC,OAAO,CAAqD,CAAC;AAExE,eAAO,MAAM,iBAAiB,WAAkB,MAAM,KAAG,OAAO,CAAC,MAAM,CACzB,CAAC;AAE/C,eAAO,MAAM,mBAAmB,SACxB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,eACzB,MAAM,KAClB,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CA2CxE,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE;YACR,cAAc,EAAE,MAAM,CAAC;YACvB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;SACvB,CAAC;KACH,CAAC;CACH;AAED,eAAO,MAAM,eAAe,WAClB,MAAM,cACF,sBAAsB,eACrB,MAAM,KAClB,OAAO,CAAC,aAAa,CAgGvB,CAAC;AAEF,eAAO,MAAM,YAAY,gBACV,MAAM,KAClB,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAYxE,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE;YACR,cAAc,EAAE,MAAM,CAAC;YACvB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;CACH;AAED,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,eACjB,mBAAmB,eAClB,MAAM,KAClB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAqF/C,CAAC"}