libre-webui 0.21.2 → 0.22.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 (946) hide show
  1. package/README.md +308 -328
  2. package/backend/dist/cli/migrateSqliteToPostgres.d.ts +2 -0
  3. package/backend/dist/cli/migrateSqliteToPostgres.d.ts.map +1 -0
  4. package/backend/dist/cli/migrateSqliteToPostgres.js +113 -0
  5. package/backend/dist/cli/migrateSqliteToPostgres.js.map +1 -0
  6. package/backend/dist/cli/recoveryBackup.d.ts +3 -0
  7. package/backend/dist/cli/recoveryBackup.d.ts.map +1 -0
  8. package/backend/dist/cli/recoveryBackup.js +251 -0
  9. package/backend/dist/cli/recoveryBackup.js.map +1 -0
  10. package/backend/dist/cli/recoveryInventory.d.ts +2 -0
  11. package/backend/dist/cli/recoveryInventory.d.ts.map +1 -0
  12. package/backend/dist/cli/recoveryInventory.js +109 -0
  13. package/backend/dist/cli/recoveryInventory.js.map +1 -0
  14. package/backend/dist/db.d.ts +27 -0
  15. package/backend/dist/db.d.ts.map +1 -1
  16. package/backend/dist/db.js +333 -16
  17. package/backend/dist/db.js.map +1 -1
  18. package/backend/dist/env.d.ts.map +1 -1
  19. package/backend/dist/env.js +12 -2
  20. package/backend/dist/env.js.map +1 -1
  21. package/backend/dist/index.d.ts.map +1 -1
  22. package/backend/dist/index.js +235 -47
  23. package/backend/dist/index.js.map +1 -1
  24. package/backend/dist/main.d.ts +2 -0
  25. package/backend/dist/main.d.ts.map +1 -0
  26. package/backend/dist/main.js +137 -0
  27. package/backend/dist/main.js.map +1 -0
  28. package/backend/dist/middleware/auth.d.ts.map +1 -1
  29. package/backend/dist/middleware/auth.js +7 -3
  30. package/backend/dist/middleware/auth.js.map +1 -1
  31. package/backend/dist/middleware/chatCancellationAdmission.d.ts +7 -0
  32. package/backend/dist/middleware/chatCancellationAdmission.d.ts.map +1 -0
  33. package/backend/dist/middleware/chatCancellationAdmission.js +17 -0
  34. package/backend/dist/middleware/chatCancellationAdmission.js.map +1 -0
  35. package/backend/dist/middleware/coordinatedRateLimit.d.ts +18 -0
  36. package/backend/dist/middleware/coordinatedRateLimit.d.ts.map +1 -0
  37. package/backend/dist/middleware/coordinatedRateLimit.js +52 -0
  38. package/backend/dist/middleware/coordinatedRateLimit.js.map +1 -0
  39. package/backend/dist/middleware/sharedRateLimit.d.ts +26 -0
  40. package/backend/dist/middleware/sharedRateLimit.d.ts.map +1 -0
  41. package/backend/dist/middleware/sharedRateLimit.js +99 -0
  42. package/backend/dist/middleware/sharedRateLimit.js.map +1 -0
  43. package/backend/dist/models/personaModel.d.ts +1 -26
  44. package/backend/dist/models/personaModel.d.ts.map +1 -1
  45. package/backend/dist/models/personaModel.js +54 -247
  46. package/backend/dist/models/personaModel.js.map +1 -1
  47. package/backend/dist/models/userModel.d.ts +23 -66
  48. package/backend/dist/models/userModel.d.ts.map +1 -1
  49. package/backend/dist/models/userModel.js +110 -187
  50. package/backend/dist/models/userModel.js.map +1 -1
  51. package/backend/dist/persistence/chatGenerationTypes.d.ts +24 -0
  52. package/backend/dist/persistence/chatGenerationTypes.d.ts.map +1 -0
  53. package/backend/dist/persistence/chatGenerationTypes.js +7 -0
  54. package/backend/dist/persistence/chatGenerationTypes.js.map +1 -0
  55. package/backend/dist/persistence/extensionTypes.d.ts +185 -0
  56. package/backend/dist/persistence/extensionTypes.d.ts.map +1 -0
  57. package/backend/dist/persistence/extensionTypes.js +13 -0
  58. package/backend/dist/persistence/extensionTypes.js.map +1 -0
  59. package/backend/dist/persistence/identityDeletionTypes.d.ts +16 -0
  60. package/backend/dist/persistence/identityDeletionTypes.d.ts.map +1 -0
  61. package/backend/dist/persistence/identityDeletionTypes.js +7 -0
  62. package/backend/dist/persistence/identityDeletionTypes.js.map +1 -0
  63. package/backend/dist/persistence/index.d.ts +48 -0
  64. package/backend/dist/persistence/index.d.ts.map +1 -0
  65. package/backend/dist/persistence/index.js +159 -0
  66. package/backend/dist/persistence/index.js.map +1 -0
  67. package/backend/dist/persistence/postgresConfig.d.ts +32 -0
  68. package/backend/dist/persistence/postgresConfig.d.ts.map +1 -0
  69. package/backend/dist/persistence/postgresConfig.js +91 -0
  70. package/backend/dist/persistence/postgresConfig.js.map +1 -0
  71. package/backend/dist/persistence/postgresCoreMigration.d.ts +8 -0
  72. package/backend/dist/persistence/postgresCoreMigration.d.ts.map +1 -0
  73. package/backend/dist/persistence/postgresCoreMigration.js +179 -0
  74. package/backend/dist/persistence/postgresCoreMigration.js.map +1 -0
  75. package/backend/dist/persistence/postgresDatabase.d.ts +40 -0
  76. package/backend/dist/persistence/postgresDatabase.d.ts.map +1 -0
  77. package/backend/dist/persistence/postgresDatabase.js +148 -0
  78. package/backend/dist/persistence/postgresDatabase.js.map +1 -0
  79. package/backend/dist/persistence/postgresExtensionMigration.d.ts +4 -0
  80. package/backend/dist/persistence/postgresExtensionMigration.d.ts.map +1 -0
  81. package/backend/dist/persistence/postgresExtensionMigration.js +143 -0
  82. package/backend/dist/persistence/postgresExtensionMigration.js.map +1 -0
  83. package/backend/dist/persistence/postgresExtensionRepositories.d.ts +6 -0
  84. package/backend/dist/persistence/postgresExtensionRepositories.d.ts.map +1 -0
  85. package/backend/dist/persistence/postgresExtensionRepositories.js +550 -0
  86. package/backend/dist/persistence/postgresExtensionRepositories.js.map +1 -0
  87. package/backend/dist/persistence/postgresImportState.d.ts +9 -0
  88. package/backend/dist/persistence/postgresImportState.d.ts.map +1 -0
  89. package/backend/dist/persistence/postgresImportState.js +64 -0
  90. package/backend/dist/persistence/postgresImportState.js.map +1 -0
  91. package/backend/dist/persistence/postgresMigrationRegistry.d.ts +4 -0
  92. package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -0
  93. package/backend/dist/persistence/postgresMigrationRegistry.js +33 -0
  94. package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -0
  95. package/backend/dist/persistence/postgresMigrationTypes.d.ts +24 -0
  96. package/backend/dist/persistence/postgresMigrationTypes.d.ts.map +1 -0
  97. package/backend/dist/persistence/postgresMigrationTypes.js +7 -0
  98. package/backend/dist/persistence/postgresMigrationTypes.js.map +1 -0
  99. package/backend/dist/persistence/postgresMigrations.d.ts +15 -0
  100. package/backend/dist/persistence/postgresMigrations.d.ts.map +1 -0
  101. package/backend/dist/persistence/postgresMigrations.js +333 -0
  102. package/backend/dist/persistence/postgresMigrations.js.map +1 -0
  103. package/backend/dist/persistence/postgresPersistence.d.ts +17 -0
  104. package/backend/dist/persistence/postgresPersistence.d.ts.map +1 -0
  105. package/backend/dist/persistence/postgresPersistence.js +332 -0
  106. package/backend/dist/persistence/postgresPersistence.js.map +1 -0
  107. package/backend/dist/persistence/postgresPluginDefinitionMigration.d.ts +4 -0
  108. package/backend/dist/persistence/postgresPluginDefinitionMigration.d.ts.map +1 -0
  109. package/backend/dist/persistence/postgresPluginDefinitionMigration.js +40 -0
  110. package/backend/dist/persistence/postgresPluginDefinitionMigration.js.map +1 -0
  111. package/backend/dist/persistence/postgresResourceRepositories.d.ts +7 -0
  112. package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -0
  113. package/backend/dist/persistence/postgresResourceRepositories.js +776 -0
  114. package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -0
  115. package/backend/dist/persistence/postgresSchemaInspector.d.ts +14 -0
  116. package/backend/dist/persistence/postgresSchemaInspector.d.ts.map +1 -0
  117. package/backend/dist/persistence/postgresSchemaInspector.js +817 -0
  118. package/backend/dist/persistence/postgresSchemaInspector.js.map +1 -0
  119. package/backend/dist/persistence/resourceTypes.d.ts +207 -0
  120. package/backend/dist/persistence/resourceTypes.d.ts.map +1 -0
  121. package/backend/dist/persistence/resourceTypes.js +38 -0
  122. package/backend/dist/persistence/resourceTypes.js.map +1 -0
  123. package/backend/dist/persistence/sqliteExtensionRepositories.d.ts +4 -0
  124. package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -0
  125. package/backend/dist/persistence/sqliteExtensionRepositories.js +494 -0
  126. package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -0
  127. package/backend/dist/persistence/sqliteMigrations.d.ts +93 -0
  128. package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -0
  129. package/backend/dist/persistence/sqliteMigrations.js +2232 -0
  130. package/backend/dist/persistence/sqliteMigrations.js.map +1 -0
  131. package/backend/dist/persistence/sqlitePersistence.d.ts +23 -0
  132. package/backend/dist/persistence/sqlitePersistence.d.ts.map +1 -0
  133. package/backend/dist/persistence/sqlitePersistence.js +596 -0
  134. package/backend/dist/persistence/sqlitePersistence.js.map +1 -0
  135. package/backend/dist/persistence/sqliteResourceRepositories.d.ts +4 -0
  136. package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -0
  137. package/backend/dist/persistence/sqliteResourceRepositories.js +663 -0
  138. package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -0
  139. package/backend/dist/persistence/sqliteSyncExecutor.d.ts +5 -0
  140. package/backend/dist/persistence/sqliteSyncExecutor.d.ts.map +1 -0
  141. package/backend/dist/persistence/sqliteSyncExecutor.js +19 -0
  142. package/backend/dist/persistence/sqliteSyncExecutor.js.map +1 -0
  143. package/backend/dist/persistence/sqliteToPostgresMigration.d.ts +80 -0
  144. package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -0
  145. package/backend/dist/persistence/sqliteToPostgresMigration.js +1543 -0
  146. package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -0
  147. package/backend/dist/persistence/types.d.ts +131 -0
  148. package/backend/dist/persistence/types.d.ts.map +1 -0
  149. package/backend/dist/persistence/types.js +18 -0
  150. package/backend/dist/persistence/types.js.map +1 -0
  151. package/backend/dist/persistence/voiceProfileNameLookup.d.ts +9 -0
  152. package/backend/dist/persistence/voiceProfileNameLookup.d.ts.map +1 -0
  153. package/backend/dist/persistence/voiceProfileNameLookup.js +15 -0
  154. package/backend/dist/persistence/voiceProfileNameLookup.js.map +1 -0
  155. package/backend/dist/platform/coordination/index.d.ts +7 -0
  156. package/backend/dist/platform/coordination/index.d.ts.map +1 -0
  157. package/backend/dist/platform/coordination/index.js +24 -0
  158. package/backend/dist/platform/coordination/index.js.map +1 -0
  159. package/backend/dist/platform/coordination/localCoordinator.d.ts +49 -0
  160. package/backend/dist/platform/coordination/localCoordinator.d.ts.map +1 -0
  161. package/backend/dist/platform/coordination/localCoordinator.js +380 -0
  162. package/backend/dist/platform/coordination/localCoordinator.js.map +1 -0
  163. package/backend/dist/platform/coordination/redisCoordinator.d.ts +83 -0
  164. package/backend/dist/platform/coordination/redisCoordinator.d.ts.map +1 -0
  165. package/backend/dist/platform/coordination/redisCoordinator.js +726 -0
  166. package/backend/dist/platform/coordination/redisCoordinator.js.map +1 -0
  167. package/backend/dist/platform/coordination/service.d.ts +11 -0
  168. package/backend/dist/platform/coordination/service.d.ts.map +1 -0
  169. package/backend/dist/platform/coordination/service.js +55 -0
  170. package/backend/dist/platform/coordination/service.js.map +1 -0
  171. package/backend/dist/platform/coordination/sharedAdmission.d.ts +53 -0
  172. package/backend/dist/platform/coordination/sharedAdmission.d.ts.map +1 -0
  173. package/backend/dist/platform/coordination/sharedAdmission.js +194 -0
  174. package/backend/dist/platform/coordination/sharedAdmission.js.map +1 -0
  175. package/backend/dist/platform/coordination/types.d.ts +76 -0
  176. package/backend/dist/platform/coordination/types.d.ts.map +1 -0
  177. package/backend/dist/platform/coordination/types.js +32 -0
  178. package/backend/dist/platform/coordination/types.js.map +1 -0
  179. package/backend/dist/platform/events/durableEventGateway.d.ts +54 -0
  180. package/backend/dist/platform/events/durableEventGateway.d.ts.map +1 -0
  181. package/backend/dist/platform/events/durableEventGateway.js +262 -0
  182. package/backend/dist/platform/events/durableEventGateway.js.map +1 -0
  183. package/backend/dist/platform/events/index.d.ts +3 -0
  184. package/backend/dist/platform/events/index.d.ts.map +1 -0
  185. package/backend/dist/platform/events/index.js +8 -0
  186. package/backend/dist/platform/events/index.js.map +1 -0
  187. package/backend/dist/platform/events/service.d.ts +8 -0
  188. package/backend/dist/platform/events/service.d.ts.map +1 -0
  189. package/backend/dist/platform/events/service.js +25 -0
  190. package/backend/dist/platform/events/service.js.map +1 -0
  191. package/backend/dist/platform/jobs/chatGenerationEnqueuer.d.ts +3 -0
  192. package/backend/dist/platform/jobs/chatGenerationEnqueuer.d.ts.map +1 -0
  193. package/backend/dist/platform/jobs/chatGenerationEnqueuer.js +55 -0
  194. package/backend/dist/platform/jobs/chatGenerationEnqueuer.js.map +1 -0
  195. package/backend/dist/platform/jobs/documentIngestionEnqueuer.d.ts +3 -0
  196. package/backend/dist/platform/jobs/documentIngestionEnqueuer.d.ts.map +1 -0
  197. package/backend/dist/platform/jobs/documentIngestionEnqueuer.js +38 -0
  198. package/backend/dist/platform/jobs/documentIngestionEnqueuer.js.map +1 -0
  199. package/backend/dist/platform/jobs/domainJobContracts.d.ts +30 -0
  200. package/backend/dist/platform/jobs/domainJobContracts.d.ts.map +1 -0
  201. package/backend/dist/platform/jobs/domainJobContracts.js +53 -0
  202. package/backend/dist/platform/jobs/domainJobContracts.js.map +1 -0
  203. package/backend/dist/platform/jobs/domainJobHandlers.d.ts +11 -0
  204. package/backend/dist/platform/jobs/domainJobHandlers.d.ts.map +1 -0
  205. package/backend/dist/platform/jobs/domainJobHandlers.js +612 -0
  206. package/backend/dist/platform/jobs/domainJobHandlers.js.map +1 -0
  207. package/backend/dist/platform/jobs/durableEventIdentity.d.ts +8 -0
  208. package/backend/dist/platform/jobs/durableEventIdentity.d.ts.map +1 -0
  209. package/backend/dist/platform/jobs/durableEventIdentity.js +33 -0
  210. package/backend/dist/platform/jobs/durableEventIdentity.js.map +1 -0
  211. package/backend/dist/platform/jobs/durableJobRuntime.d.ts +57 -0
  212. package/backend/dist/platform/jobs/durableJobRuntime.d.ts.map +1 -0
  213. package/backend/dist/platform/jobs/durableJobRuntime.js +131 -0
  214. package/backend/dist/platform/jobs/durableJobRuntime.js.map +1 -0
  215. package/backend/dist/platform/jobs/durableJobRuntimeBackend.d.ts +28 -0
  216. package/backend/dist/platform/jobs/durableJobRuntimeBackend.d.ts.map +1 -0
  217. package/backend/dist/platform/jobs/durableJobRuntimeBackend.js +62 -0
  218. package/backend/dist/platform/jobs/durableJobRuntimeBackend.js.map +1 -0
  219. package/backend/dist/platform/jobs/durableJobService.d.ts +85 -0
  220. package/backend/dist/platform/jobs/durableJobService.d.ts.map +1 -0
  221. package/backend/dist/platform/jobs/durableJobService.js +726 -0
  222. package/backend/dist/platform/jobs/durableJobService.js.map +1 -0
  223. package/backend/dist/platform/jobs/durableJobTypes.d.ts +195 -0
  224. package/backend/dist/platform/jobs/durableJobTypes.d.ts.map +1 -0
  225. package/backend/dist/platform/jobs/durableJobTypes.js +72 -0
  226. package/backend/dist/platform/jobs/durableJobTypes.js.map +1 -0
  227. package/backend/dist/platform/jobs/embeddedDurableJobWorker.d.ts +87 -0
  228. package/backend/dist/platform/jobs/embeddedDurableJobWorker.d.ts.map +1 -0
  229. package/backend/dist/platform/jobs/embeddedDurableJobWorker.js +429 -0
  230. package/backend/dist/platform/jobs/embeddedDurableJobWorker.js.map +1 -0
  231. package/backend/dist/platform/jobs/identityDeletionEnqueuer.d.ts +3 -0
  232. package/backend/dist/platform/jobs/identityDeletionEnqueuer.d.ts.map +1 -0
  233. package/backend/dist/platform/jobs/identityDeletionEnqueuer.js +36 -0
  234. package/backend/dist/platform/jobs/identityDeletionEnqueuer.js.map +1 -0
  235. package/backend/dist/platform/jobs/index.d.ts +18 -0
  236. package/backend/dist/platform/jobs/index.d.ts.map +1 -0
  237. package/backend/dist/platform/jobs/index.js +34 -0
  238. package/backend/dist/platform/jobs/index.js.map +1 -0
  239. package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.d.ts +4 -0
  240. package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.d.ts.map +1 -0
  241. package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.js +25 -0
  242. package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.js.map +1 -0
  243. package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.d.ts +4 -0
  244. package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.d.ts.map +1 -0
  245. package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.js +23 -0
  246. package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.js.map +1 -0
  247. package/backend/dist/platform/jobs/postgresDurableJobMigration.d.ts +11 -0
  248. package/backend/dist/platform/jobs/postgresDurableJobMigration.d.ts.map +1 -0
  249. package/backend/dist/platform/jobs/postgresDurableJobMigration.js +106 -0
  250. package/backend/dist/platform/jobs/postgresDurableJobMigration.js.map +1 -0
  251. package/backend/dist/platform/jobs/postgresDurableJobRepository.d.ts +88 -0
  252. package/backend/dist/platform/jobs/postgresDurableJobRepository.d.ts.map +1 -0
  253. package/backend/dist/platform/jobs/postgresDurableJobRepository.js +1185 -0
  254. package/backend/dist/platform/jobs/postgresDurableJobRepository.js.map +1 -0
  255. package/backend/dist/platform/jobs/postgresDurableJobService.d.ts +86 -0
  256. package/backend/dist/platform/jobs/postgresDurableJobService.d.ts.map +1 -0
  257. package/backend/dist/platform/jobs/postgresDurableJobService.js +696 -0
  258. package/backend/dist/platform/jobs/postgresDurableJobService.js.map +1 -0
  259. package/backend/dist/platform/jobs/postgresDurableJobWorker.d.ts +53 -0
  260. package/backend/dist/platform/jobs/postgresDurableJobWorker.d.ts.map +1 -0
  261. package/backend/dist/platform/jobs/postgresDurableJobWorker.js +393 -0
  262. package/backend/dist/platform/jobs/postgresDurableJobWorker.js.map +1 -0
  263. package/backend/dist/platform/jobs/resourceDeletionEnqueuer.d.ts +3 -0
  264. package/backend/dist/platform/jobs/resourceDeletionEnqueuer.d.ts.map +1 -0
  265. package/backend/dist/platform/jobs/resourceDeletionEnqueuer.js +43 -0
  266. package/backend/dist/platform/jobs/resourceDeletionEnqueuer.js.map +1 -0
  267. package/backend/dist/platform/jobs/sqliteDurableJobRepository.d.ts +166 -0
  268. package/backend/dist/platform/jobs/sqliteDurableJobRepository.d.ts.map +1 -0
  269. package/backend/dist/platform/jobs/sqliteDurableJobRepository.js +1008 -0
  270. package/backend/dist/platform/jobs/sqliteDurableJobRepository.js.map +1 -0
  271. package/backend/dist/platform/jobs/videoGenerationEnqueuer.d.ts +4 -0
  272. package/backend/dist/platform/jobs/videoGenerationEnqueuer.d.ts.map +1 -0
  273. package/backend/dist/platform/jobs/videoGenerationEnqueuer.js +46 -0
  274. package/backend/dist/platform/jobs/videoGenerationEnqueuer.js.map +1 -0
  275. package/backend/dist/platform/jobs/workExecutionEnqueuer.d.ts +3 -0
  276. package/backend/dist/platform/jobs/workExecutionEnqueuer.d.ts.map +1 -0
  277. package/backend/dist/platform/jobs/workExecutionEnqueuer.js +38 -0
  278. package/backend/dist/platform/jobs/workExecutionEnqueuer.js.map +1 -0
  279. package/backend/dist/platform/ollamaRuntimeConfig.d.ts +40 -0
  280. package/backend/dist/platform/ollamaRuntimeConfig.d.ts.map +1 -0
  281. package/backend/dist/platform/ollamaRuntimeConfig.js +72 -0
  282. package/backend/dist/platform/ollamaRuntimeConfig.js.map +1 -0
  283. package/backend/dist/platform/recovery/backupArchive.d.ts +120 -0
  284. package/backend/dist/platform/recovery/backupArchive.d.ts.map +1 -0
  285. package/backend/dist/platform/recovery/backupArchive.js +842 -0
  286. package/backend/dist/platform/recovery/backupArchive.js.map +1 -0
  287. package/backend/dist/platform/recovery/index.d.ts +3 -0
  288. package/backend/dist/platform/recovery/index.d.ts.map +1 -0
  289. package/backend/dist/platform/recovery/index.js +8 -0
  290. package/backend/dist/platform/recovery/index.js.map +1 -0
  291. package/backend/dist/platform/recovery/teamBackupArchive.d.ts +98 -0
  292. package/backend/dist/platform/recovery/teamBackupArchive.d.ts.map +1 -0
  293. package/backend/dist/platform/recovery/teamBackupArchive.js +1203 -0
  294. package/backend/dist/platform/recovery/teamBackupArchive.js.map +1 -0
  295. package/backend/dist/platform/runtimeConfig.d.ts +70 -0
  296. package/backend/dist/platform/runtimeConfig.d.ts.map +1 -0
  297. package/backend/dist/platform/runtimeConfig.js +205 -0
  298. package/backend/dist/platform/runtimeConfig.js.map +1 -0
  299. package/backend/dist/platform/storage/aesGcmKeyring.d.ts +26 -0
  300. package/backend/dist/platform/storage/aesGcmKeyring.d.ts.map +1 -0
  301. package/backend/dist/platform/storage/aesGcmKeyring.js +135 -0
  302. package/backend/dist/platform/storage/aesGcmKeyring.js.map +1 -0
  303. package/backend/dist/platform/storage/blobReferenceRepository.d.ts +36 -0
  304. package/backend/dist/platform/storage/blobReferenceRepository.d.ts.map +1 -0
  305. package/backend/dist/platform/storage/blobReferenceRepository.js +117 -0
  306. package/backend/dist/platform/storage/blobReferenceRepository.js.map +1 -0
  307. package/backend/dist/platform/storage/blobStore.d.ts +111 -0
  308. package/backend/dist/platform/storage/blobStore.d.ts.map +1 -0
  309. package/backend/dist/platform/storage/blobStore.js +46 -0
  310. package/backend/dist/platform/storage/blobStore.js.map +1 -0
  311. package/backend/dist/platform/storage/documentVectorIndex.d.ts +44 -0
  312. package/backend/dist/platform/storage/documentVectorIndex.d.ts.map +1 -0
  313. package/backend/dist/platform/storage/documentVectorIndex.js +110 -0
  314. package/backend/dist/platform/storage/documentVectorIndex.js.map +1 -0
  315. package/backend/dist/platform/storage/durableBlobQuotaPolicy.d.ts +82 -0
  316. package/backend/dist/platform/storage/durableBlobQuotaPolicy.d.ts.map +1 -0
  317. package/backend/dist/platform/storage/durableBlobQuotaPolicy.js +583 -0
  318. package/backend/dist/platform/storage/durableBlobQuotaPolicy.js.map +1 -0
  319. package/backend/dist/platform/storage/index.d.ts +19 -0
  320. package/backend/dist/platform/storage/index.d.ts.map +1 -0
  321. package/backend/dist/platform/storage/index.js +35 -0
  322. package/backend/dist/platform/storage/index.js.map +1 -0
  323. package/backend/dist/platform/storage/localEncryptedBlobStore.d.ts +120 -0
  324. package/backend/dist/platform/storage/localEncryptedBlobStore.d.ts.map +1 -0
  325. package/backend/dist/platform/storage/localEncryptedBlobStore.js +1205 -0
  326. package/backend/dist/platform/storage/localEncryptedBlobStore.js.map +1 -0
  327. package/backend/dist/platform/storage/personaMemoryIndexing.d.ts +12 -0
  328. package/backend/dist/platform/storage/personaMemoryIndexing.d.ts.map +1 -0
  329. package/backend/dist/platform/storage/personaMemoryIndexing.js +25 -0
  330. package/backend/dist/platform/storage/personaMemoryIndexing.js.map +1 -0
  331. package/backend/dist/platform/storage/pgVectorStore.d.ts +37 -0
  332. package/backend/dist/platform/storage/pgVectorStore.d.ts.map +1 -0
  333. package/backend/dist/platform/storage/pgVectorStore.js +493 -0
  334. package/backend/dist/platform/storage/pgVectorStore.js.map +1 -0
  335. package/backend/dist/platform/storage/platformDomainRepositories.d.ts +244 -0
  336. package/backend/dist/platform/storage/platformDomainRepositories.d.ts.map +1 -0
  337. package/backend/dist/platform/storage/platformDomainRepositories.js +7 -0
  338. package/backend/dist/platform/storage/platformDomainRepositories.js.map +1 -0
  339. package/backend/dist/platform/storage/platformStorageRuntime.d.ts +35 -0
  340. package/backend/dist/platform/storage/platformStorageRuntime.d.ts.map +1 -0
  341. package/backend/dist/platform/storage/platformStorageRuntime.js +299 -0
  342. package/backend/dist/platform/storage/platformStorageRuntime.js.map +1 -0
  343. package/backend/dist/platform/storage/postgresPlatformDomainRepositories.d.ts +4 -0
  344. package/backend/dist/platform/storage/postgresPlatformDomainRepositories.d.ts.map +1 -0
  345. package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js +1017 -0
  346. package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js.map +1 -0
  347. package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.d.ts +4 -0
  348. package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.d.ts.map +1 -0
  349. package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.js +40 -0
  350. package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.js.map +1 -0
  351. package/backend/dist/platform/storage/resourceContentCleanup.d.ts +29 -0
  352. package/backend/dist/platform/storage/resourceContentCleanup.d.ts.map +1 -0
  353. package/backend/dist/platform/storage/resourceContentCleanup.js +100 -0
  354. package/backend/dist/platform/storage/resourceContentCleanup.js.map +1 -0
  355. package/backend/dist/platform/storage/resourceDeletionLifecycle.d.ts +14 -0
  356. package/backend/dist/platform/storage/resourceDeletionLifecycle.d.ts.map +1 -0
  357. package/backend/dist/platform/storage/resourceDeletionLifecycle.js +31 -0
  358. package/backend/dist/platform/storage/resourceDeletionLifecycle.js.map +1 -0
  359. package/backend/dist/platform/storage/s3EncryptedBlobStore.d.ts +140 -0
  360. package/backend/dist/platform/storage/s3EncryptedBlobStore.d.ts.map +1 -0
  361. package/backend/dist/platform/storage/s3EncryptedBlobStore.js +1309 -0
  362. package/backend/dist/platform/storage/s3EncryptedBlobStore.js.map +1 -0
  363. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts +71 -0
  364. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts.map +1 -0
  365. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js +766 -0
  366. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js.map +1 -0
  367. package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.d.ts +4 -0
  368. package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.d.ts.map +1 -0
  369. package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js +1037 -0
  370. package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js.map +1 -0
  371. package/backend/dist/platform/storage/sqliteToTeamStorageMigration.d.ts +25 -0
  372. package/backend/dist/platform/storage/sqliteToTeamStorageMigration.d.ts.map +1 -0
  373. package/backend/dist/platform/storage/sqliteToTeamStorageMigration.js +1292 -0
  374. package/backend/dist/platform/storage/sqliteToTeamStorageMigration.js.map +1 -0
  375. package/backend/dist/platform/storage/storageFactory.d.ts +81 -0
  376. package/backend/dist/platform/storage/storageFactory.d.ts.map +1 -0
  377. package/backend/dist/platform/storage/storageFactory.js +518 -0
  378. package/backend/dist/platform/storage/storageFactory.js.map +1 -0
  379. package/backend/dist/platform/storage/storageSchemaContracts.d.ts +22 -0
  380. package/backend/dist/platform/storage/storageSchemaContracts.d.ts.map +1 -0
  381. package/backend/dist/platform/storage/storageSchemaContracts.js +299 -0
  382. package/backend/dist/platform/storage/storageSchemaContracts.js.map +1 -0
  383. package/backend/dist/platform/storage/vectorStore.d.ts +117 -0
  384. package/backend/dist/platform/storage/vectorStore.d.ts.map +1 -0
  385. package/backend/dist/platform/storage/vectorStore.js +40 -0
  386. package/backend/dist/platform/storage/vectorStore.js.map +1 -0
  387. package/backend/dist/platform/workPersistence/index.d.ts +9 -0
  388. package/backend/dist/platform/workPersistence/index.d.ts.map +1 -0
  389. package/backend/dist/platform/workPersistence/index.js +14 -0
  390. package/backend/dist/platform/workPersistence/index.js.map +1 -0
  391. package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.d.ts +9 -0
  392. package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.d.ts.map +1 -0
  393. package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.js +47 -0
  394. package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.js.map +1 -0
  395. package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.d.ts +3 -0
  396. package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.d.ts.map +1 -0
  397. package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.js +28 -0
  398. package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.js.map +1 -0
  399. package/backend/dist/platform/workPersistence/postgresWorkMigration.d.ts +3 -0
  400. package/backend/dist/platform/workPersistence/postgresWorkMigration.d.ts.map +1 -0
  401. package/backend/dist/platform/workPersistence/postgresWorkMigration.js +101 -0
  402. package/backend/dist/platform/workPersistence/postgresWorkMigration.js.map +1 -0
  403. package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts +79 -0
  404. package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts.map +1 -0
  405. package/backend/dist/platform/workPersistence/postgresWorkPersistence.js +521 -0
  406. package/backend/dist/platform/workPersistence/postgresWorkPersistence.js.map +1 -0
  407. package/backend/dist/platform/workPersistence/service.d.ts +6 -0
  408. package/backend/dist/platform/workPersistence/service.d.ts.map +1 -0
  409. package/backend/dist/platform/workPersistence/service.js +27 -0
  410. package/backend/dist/platform/workPersistence/service.js.map +1 -0
  411. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts +77 -0
  412. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts.map +1 -0
  413. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js +463 -0
  414. package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js.map +1 -0
  415. package/backend/dist/platform/workPersistence/types.d.ts +159 -0
  416. package/backend/dist/platform/workPersistence/types.d.ts.map +1 -0
  417. package/backend/dist/platform/workPersistence/types.js +13 -0
  418. package/backend/dist/platform/workPersistence/types.js.map +1 -0
  419. package/backend/dist/platform/workPersistence/workExecutionTypes.d.ts +13 -0
  420. package/backend/dist/platform/workPersistence/workExecutionTypes.d.ts.map +1 -0
  421. package/backend/dist/platform/workPersistence/workExecutionTypes.js +7 -0
  422. package/backend/dist/platform/workPersistence/workExecutionTypes.js.map +1 -0
  423. package/backend/dist/platform/workPersistence/workMessageContentCodec.d.ts +8 -0
  424. package/backend/dist/platform/workPersistence/workMessageContentCodec.d.ts.map +1 -0
  425. package/backend/dist/platform/workPersistence/workMessageContentCodec.js +25 -0
  426. package/backend/dist/platform/workPersistence/workMessageContentCodec.js.map +1 -0
  427. package/backend/dist/platform/workPersistence/workTextSafety.d.ts +3 -0
  428. package/backend/dist/platform/workPersistence/workTextSafety.d.ts.map +1 -0
  429. package/backend/dist/platform/workPersistence/workTextSafety.js +8 -0
  430. package/backend/dist/platform/workPersistence/workTextSafety.js.map +1 -0
  431. package/backend/dist/routes/agentCli.js +1 -1
  432. package/backend/dist/routes/agentCli.js.map +1 -1
  433. package/backend/dist/routes/artifacts.d.ts.map +1 -1
  434. package/backend/dist/routes/artifacts.js +2 -1
  435. package/backend/dist/routes/artifacts.js.map +1 -1
  436. package/backend/dist/routes/auth.d.ts.map +1 -1
  437. package/backend/dist/routes/auth.js +64 -18
  438. package/backend/dist/routes/auth.js.map +1 -1
  439. package/backend/dist/routes/chat.d.ts.map +1 -1
  440. package/backend/dist/routes/chat.js +519 -85
  441. package/backend/dist/routes/chat.js.map +1 -1
  442. package/backend/dist/routes/documents.d.ts.map +1 -1
  443. package/backend/dist/routes/documents.js +136 -28
  444. package/backend/dist/routes/documents.js.map +1 -1
  445. package/backend/dist/routes/embeddings.d.ts.map +1 -1
  446. package/backend/dist/routes/embeddings.js +2 -1
  447. package/backend/dist/routes/embeddings.js.map +1 -1
  448. package/backend/dist/routes/health.d.ts +3 -0
  449. package/backend/dist/routes/health.d.ts.map +1 -0
  450. package/backend/dist/routes/health.js +52 -0
  451. package/backend/dist/routes/health.js.map +1 -0
  452. package/backend/dist/routes/huggingfaceHub.d.ts.map +1 -1
  453. package/backend/dist/routes/huggingfaceHub.js +2 -1
  454. package/backend/dist/routes/huggingfaceHub.js.map +1 -1
  455. package/backend/dist/routes/imageGen.d.ts.map +1 -1
  456. package/backend/dist/routes/imageGen.js +42 -10
  457. package/backend/dist/routes/imageGen.js.map +1 -1
  458. package/backend/dist/routes/jobs.d.ts +3 -0
  459. package/backend/dist/routes/jobs.d.ts.map +1 -0
  460. package/backend/dist/routes/jobs.js +117 -0
  461. package/backend/dist/routes/jobs.js.map +1 -0
  462. package/backend/dist/routes/libreClaw.d.ts.map +1 -1
  463. package/backend/dist/routes/libreClaw.js +10 -7
  464. package/backend/dist/routes/libreClaw.js.map +1 -1
  465. package/backend/dist/routes/media.d.ts.map +1 -1
  466. package/backend/dist/routes/media.js +523 -77
  467. package/backend/dist/routes/media.js.map +1 -1
  468. package/backend/dist/routes/notes.d.ts.map +1 -1
  469. package/backend/dist/routes/notes.js +21 -21
  470. package/backend/dist/routes/notes.js.map +1 -1
  471. package/backend/dist/routes/ollama.d.ts.map +1 -1
  472. package/backend/dist/routes/ollama.js +40 -12
  473. package/backend/dist/routes/ollama.js.map +1 -1
  474. package/backend/dist/routes/personas.d.ts.map +1 -1
  475. package/backend/dist/routes/personas.js +4 -2
  476. package/backend/dist/routes/personas.js.map +1 -1
  477. package/backend/dist/routes/plugins.d.ts.map +1 -1
  478. package/backend/dist/routes/plugins.js +79 -51
  479. package/backend/dist/routes/plugins.js.map +1 -1
  480. package/backend/dist/routes/preferences.d.ts.map +1 -1
  481. package/backend/dist/routes/preferences.js +290 -25
  482. package/backend/dist/routes/preferences.js.map +1 -1
  483. package/backend/dist/routes/search.d.ts.map +1 -1
  484. package/backend/dist/routes/search.js +23 -14
  485. package/backend/dist/routes/search.js.map +1 -1
  486. package/backend/dist/routes/stt.d.ts +9 -0
  487. package/backend/dist/routes/stt.d.ts.map +1 -0
  488. package/backend/dist/routes/stt.js +217 -0
  489. package/backend/dist/routes/stt.js.map +1 -0
  490. package/backend/dist/routes/systemDiagnostics.d.ts.map +1 -1
  491. package/backend/dist/routes/systemDiagnostics.js +2 -1
  492. package/backend/dist/routes/systemDiagnostics.js.map +1 -1
  493. package/backend/dist/routes/tts.d.ts.map +1 -1
  494. package/backend/dist/routes/tts.js +577 -28
  495. package/backend/dist/routes/tts.js.map +1 -1
  496. package/backend/dist/routes/users.d.ts.map +1 -1
  497. package/backend/dist/routes/users.js +16 -25
  498. package/backend/dist/routes/users.js.map +1 -1
  499. package/backend/dist/routes/work.d.ts.map +1 -1
  500. package/backend/dist/routes/work.js +167 -113
  501. package/backend/dist/routes/work.js.map +1 -1
  502. package/backend/dist/services/agentAccessService.d.ts +2 -2
  503. package/backend/dist/services/agentAccessService.d.ts.map +1 -1
  504. package/backend/dist/services/agentAccessService.js +5 -14
  505. package/backend/dist/services/agentAccessService.js.map +1 -1
  506. package/backend/dist/services/agentCliService.d.ts +3 -2
  507. package/backend/dist/services/agentCliService.d.ts.map +1 -1
  508. package/backend/dist/services/agentCliService.js +44 -16
  509. package/backend/dist/services/agentCliService.js.map +1 -1
  510. package/backend/dist/services/assistantCompletionService.d.ts +2 -1
  511. package/backend/dist/services/assistantCompletionService.d.ts.map +1 -1
  512. package/backend/dist/services/assistantCompletionService.js +7 -3
  513. package/backend/dist/services/assistantCompletionService.js.map +1 -1
  514. package/backend/dist/services/authService.d.ts +7 -2
  515. package/backend/dist/services/authService.d.ts.map +1 -1
  516. package/backend/dist/services/authService.js +23 -10
  517. package/backend/dist/services/authService.js.map +1 -1
  518. package/backend/dist/services/chatGenerationService.d.ts +5 -4
  519. package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
  520. package/backend/dist/services/chatGenerationService.js +23 -17
  521. package/backend/dist/services/chatGenerationService.js.map +1 -1
  522. package/backend/dist/services/chatRequestService.d.ts +4 -3
  523. package/backend/dist/services/chatRequestService.d.ts.map +1 -1
  524. package/backend/dist/services/chatRequestService.js +3 -3
  525. package/backend/dist/services/chatRequestService.js.map +1 -1
  526. package/backend/dist/services/chatService.d.ts +66 -16
  527. package/backend/dist/services/chatService.d.ts.map +1 -1
  528. package/backend/dist/services/chatService.js +402 -111
  529. package/backend/dist/services/chatService.js.map +1 -1
  530. package/backend/dist/services/codexOAuthService.d.ts +2 -2
  531. package/backend/dist/services/codexOAuthService.d.ts.map +1 -1
  532. package/backend/dist/services/codexOAuthService.js +63 -7
  533. package/backend/dist/services/codexOAuthService.js.map +1 -1
  534. package/backend/dist/services/dataArchiveService.d.ts +88 -0
  535. package/backend/dist/services/dataArchiveService.d.ts.map +1 -0
  536. package/backend/dist/services/dataArchiveService.js +1027 -0
  537. package/backend/dist/services/dataArchiveService.js.map +1 -0
  538. package/backend/dist/services/documentService.d.ts +67 -14
  539. package/backend/dist/services/documentService.d.ts.map +1 -1
  540. package/backend/dist/services/documentService.js +938 -193
  541. package/backend/dist/services/documentService.js.map +1 -1
  542. package/backend/dist/services/durableChatCompletion.d.ts +16 -0
  543. package/backend/dist/services/durableChatCompletion.d.ts.map +1 -0
  544. package/backend/dist/services/durableChatCompletion.js +34 -0
  545. package/backend/dist/services/durableChatCompletion.js.map +1 -0
  546. package/backend/dist/services/durableChatGenerationService.d.ts +19 -0
  547. package/backend/dist/services/durableChatGenerationService.d.ts.map +1 -0
  548. package/backend/dist/services/durableChatGenerationService.js +341 -0
  549. package/backend/dist/services/durableChatGenerationService.js.map +1 -0
  550. package/backend/dist/services/embeddingService.d.ts +1 -1
  551. package/backend/dist/services/embeddingService.d.ts.map +1 -1
  552. package/backend/dist/services/embeddingService.js +16 -13
  553. package/backend/dist/services/embeddingService.js.map +1 -1
  554. package/backend/dist/services/encryptionService.d.ts +28 -1
  555. package/backend/dist/services/encryptionService.d.ts.map +1 -1
  556. package/backend/dist/services/encryptionService.js +131 -51
  557. package/backend/dist/services/encryptionService.js.map +1 -1
  558. package/backend/dist/services/followUpService.d.ts +1 -1
  559. package/backend/dist/services/followUpService.d.ts.map +1 -1
  560. package/backend/dist/services/followUpService.js +1 -1
  561. package/backend/dist/services/followUpService.js.map +1 -1
  562. package/backend/dist/services/galleryService.d.ts +38 -37
  563. package/backend/dist/services/galleryService.d.ts.map +1 -1
  564. package/backend/dist/services/galleryService.js +356 -251
  565. package/backend/dist/services/galleryService.js.map +1 -1
  566. package/backend/dist/services/healthService.d.ts +65 -0
  567. package/backend/dist/services/healthService.d.ts.map +1 -0
  568. package/backend/dist/services/healthService.js +379 -0
  569. package/backend/dist/services/healthService.js.map +1 -0
  570. package/backend/dist/services/legacyCiphertextIntegrity.d.ts +40 -0
  571. package/backend/dist/services/legacyCiphertextIntegrity.d.ts.map +1 -0
  572. package/backend/dist/services/legacyCiphertextIntegrity.js +406 -0
  573. package/backend/dist/services/legacyCiphertextIntegrity.js.map +1 -0
  574. package/backend/dist/services/mediaGenerationJobService.d.ts +27 -5
  575. package/backend/dist/services/mediaGenerationJobService.d.ts.map +1 -1
  576. package/backend/dist/services/mediaGenerationJobService.js +185 -55
  577. package/backend/dist/services/mediaGenerationJobService.js.map +1 -1
  578. package/backend/dist/services/memoryService.d.ts +7 -83
  579. package/backend/dist/services/memoryService.d.ts.map +1 -1
  580. package/backend/dist/services/memoryService.js +428 -573
  581. package/backend/dist/services/memoryService.js.map +1 -1
  582. package/backend/dist/services/memoryUtils.d.ts.map +1 -1
  583. package/backend/dist/services/memoryUtils.js +8 -1
  584. package/backend/dist/services/memoryUtils.js.map +1 -1
  585. package/backend/dist/services/modelAccessService.d.ts +3 -3
  586. package/backend/dist/services/modelAccessService.d.ts.map +1 -1
  587. package/backend/dist/services/modelAccessService.js +8 -16
  588. package/backend/dist/services/modelAccessService.js.map +1 -1
  589. package/backend/dist/services/mutationEngineService.d.ts +0 -7
  590. package/backend/dist/services/mutationEngineService.d.ts.map +1 -1
  591. package/backend/dist/services/mutationEngineService.js +7 -78
  592. package/backend/dist/services/mutationEngineService.js.map +1 -1
  593. package/backend/dist/services/ollamaService.d.ts +4 -4
  594. package/backend/dist/services/ollamaService.d.ts.map +1 -1
  595. package/backend/dist/services/ollamaService.js +97 -34
  596. package/backend/dist/services/ollamaService.js.map +1 -1
  597. package/backend/dist/services/personaService.d.ts.map +1 -1
  598. package/backend/dist/services/personaService.js +19 -54
  599. package/backend/dist/services/personaService.js.map +1 -1
  600. package/backend/dist/services/pluginActivationService.d.ts +6 -5
  601. package/backend/dist/services/pluginActivationService.d.ts.map +1 -1
  602. package/backend/dist/services/pluginActivationService.js +36 -76
  603. package/backend/dist/services/pluginActivationService.js.map +1 -1
  604. package/backend/dist/services/pluginAudioGenerationService.d.ts +11 -6
  605. package/backend/dist/services/pluginAudioGenerationService.d.ts.map +1 -1
  606. package/backend/dist/services/pluginAudioGenerationService.js +74 -16
  607. package/backend/dist/services/pluginAudioGenerationService.js.map +1 -1
  608. package/backend/dist/services/pluginCacheInvalidation.d.ts +38 -0
  609. package/backend/dist/services/pluginCacheInvalidation.d.ts.map +1 -0
  610. package/backend/dist/services/pluginCacheInvalidation.js +198 -0
  611. package/backend/dist/services/pluginCacheInvalidation.js.map +1 -0
  612. package/backend/dist/services/pluginCapabilityRegistryService.d.ts +3 -3
  613. package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
  614. package/backend/dist/services/pluginCapabilityRegistryService.js +11 -7
  615. package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
  616. package/backend/dist/services/pluginCredentialsService.d.ts +9 -8
  617. package/backend/dist/services/pluginCredentialsService.d.ts.map +1 -1
  618. package/backend/dist/services/pluginCredentialsService.js +48 -89
  619. package/backend/dist/services/pluginCredentialsService.js.map +1 -1
  620. package/backend/dist/services/pluginEmbeddingService.d.ts +8 -7
  621. package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -1
  622. package/backend/dist/services/pluginEmbeddingService.js +13 -11
  623. package/backend/dist/services/pluginEmbeddingService.js.map +1 -1
  624. package/backend/dist/services/pluginImageGenerationService.d.ts +10 -8
  625. package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
  626. package/backend/dist/services/pluginImageGenerationService.js +119 -14
  627. package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
  628. package/backend/dist/services/pluginSTTService.d.ts +47 -0
  629. package/backend/dist/services/pluginSTTService.d.ts.map +1 -0
  630. package/backend/dist/services/pluginSTTService.js +199 -0
  631. package/backend/dist/services/pluginSTTService.js.map +1 -0
  632. package/backend/dist/services/pluginService.d.ts +94 -40
  633. package/backend/dist/services/pluginService.d.ts.map +1 -1
  634. package/backend/dist/services/pluginService.js +799 -274
  635. package/backend/dist/services/pluginService.js.map +1 -1
  636. package/backend/dist/services/pluginTTSService.d.ts +26 -8
  637. package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
  638. package/backend/dist/services/pluginTTSService.js +277 -25
  639. package/backend/dist/services/pluginTTSService.js.map +1 -1
  640. package/backend/dist/services/pluginUsageService.d.ts +4 -4
  641. package/backend/dist/services/pluginUsageService.d.ts.map +1 -1
  642. package/backend/dist/services/pluginUsageService.js +44 -93
  643. package/backend/dist/services/pluginUsageService.js.map +1 -1
  644. package/backend/dist/services/pluginVariablesService.d.ts +14 -7
  645. package/backend/dist/services/pluginVariablesService.d.ts.map +1 -1
  646. package/backend/dist/services/pluginVariablesService.js +116 -81
  647. package/backend/dist/services/pluginVariablesService.js.map +1 -1
  648. package/backend/dist/services/pluginVideoGenerationService.d.ts +19 -8
  649. package/backend/dist/services/pluginVideoGenerationService.d.ts.map +1 -1
  650. package/backend/dist/services/pluginVideoGenerationService.js +116 -20
  651. package/backend/dist/services/pluginVideoGenerationService.js.map +1 -1
  652. package/backend/dist/services/preferencesService.d.ts +31 -21
  653. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  654. package/backend/dist/services/preferencesService.js +104 -102
  655. package/backend/dist/services/preferencesService.js.map +1 -1
  656. package/backend/dist/services/recoveryInventoryService.d.ts +244 -0
  657. package/backend/dist/services/recoveryInventoryService.d.ts.map +1 -0
  658. package/backend/dist/services/recoveryInventoryService.js +1436 -0
  659. package/backend/dist/services/recoveryInventoryService.js.map +1 -0
  660. package/backend/dist/services/simpleGitHubOAuth.js +3 -3
  661. package/backend/dist/services/simpleGitHubOAuth.js.map +1 -1
  662. package/backend/dist/services/simpleHuggingFaceOAuth.d.ts.map +1 -1
  663. package/backend/dist/services/simpleHuggingFaceOAuth.js +3 -3
  664. package/backend/dist/services/simpleHuggingFaceOAuth.js.map +1 -1
  665. package/backend/dist/services/systemDiagnosticsService.d.ts.map +1 -1
  666. package/backend/dist/services/systemDiagnosticsService.js +2 -2
  667. package/backend/dist/services/systemDiagnosticsService.js.map +1 -1
  668. package/backend/dist/services/systemSettingsService.d.ts +5 -0
  669. package/backend/dist/services/systemSettingsService.d.ts.map +1 -0
  670. package/backend/dist/services/systemSettingsService.js +24 -0
  671. package/backend/dist/services/systemSettingsService.js.map +1 -0
  672. package/backend/dist/services/titleGenerationService.d.ts +1 -1
  673. package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
  674. package/backend/dist/services/titleGenerationService.js +15 -4
  675. package/backend/dist/services/titleGenerationService.js.map +1 -1
  676. package/backend/dist/services/voiceProfileService.d.ts +44 -0
  677. package/backend/dist/services/voiceProfileService.d.ts.map +1 -0
  678. package/backend/dist/services/voiceProfileService.js +195 -0
  679. package/backend/dist/services/voiceProfileService.js.map +1 -0
  680. package/backend/dist/services/webSearchService.d.ts +7 -7
  681. package/backend/dist/services/webSearchService.d.ts.map +1 -1
  682. package/backend/dist/services/webSearchService.js +40 -35
  683. package/backend/dist/services/webSearchService.js.map +1 -1
  684. package/backend/dist/services/websocketTicketService.d.ts +39 -0
  685. package/backend/dist/services/websocketTicketService.d.ts.map +1 -0
  686. package/backend/dist/services/websocketTicketService.js +183 -0
  687. package/backend/dist/services/websocketTicketService.js.map +1 -0
  688. package/backend/dist/services/workAccessService.d.ts +3 -3
  689. package/backend/dist/services/workAccessService.d.ts.map +1 -1
  690. package/backend/dist/services/workAccessService.js +8 -16
  691. package/backend/dist/services/workAccessService.js.map +1 -1
  692. package/backend/dist/services/workAdminService.d.ts +3 -3
  693. package/backend/dist/services/workAdminService.d.ts.map +1 -1
  694. package/backend/dist/services/workAdminService.js +4 -4
  695. package/backend/dist/services/workAdminService.js.map +1 -1
  696. package/backend/dist/services/workAgentService.d.ts +25 -1
  697. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  698. package/backend/dist/services/workAgentService.js +294 -126
  699. package/backend/dist/services/workAgentService.js.map +1 -1
  700. package/backend/dist/services/workEventService.d.ts +15 -2
  701. package/backend/dist/services/workEventService.d.ts.map +1 -1
  702. package/backend/dist/services/workEventService.js +201 -3
  703. package/backend/dist/services/workEventService.js.map +1 -1
  704. package/backend/dist/services/workKubernetesDriver.d.ts +8 -7
  705. package/backend/dist/services/workKubernetesDriver.d.ts.map +1 -1
  706. package/backend/dist/services/workKubernetesDriver.js +65 -21
  707. package/backend/dist/services/workKubernetesDriver.js.map +1 -1
  708. package/backend/dist/services/workModelProviderService.d.ts +2 -2
  709. package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
  710. package/backend/dist/services/workModelProviderService.js +38 -34
  711. package/backend/dist/services/workModelProviderService.js.map +1 -1
  712. package/backend/dist/services/workPolicyService.d.ts +7 -7
  713. package/backend/dist/services/workPolicyService.d.ts.map +1 -1
  714. package/backend/dist/services/workPolicyService.js +50 -51
  715. package/backend/dist/services/workPolicyService.js.map +1 -1
  716. package/backend/dist/services/workPreviewProxyService.d.ts +8 -8
  717. package/backend/dist/services/workPreviewProxyService.d.ts.map +1 -1
  718. package/backend/dist/services/workPreviewProxyService.js +47 -44
  719. package/backend/dist/services/workPreviewProxyService.js.map +1 -1
  720. package/backend/dist/services/workRuntimeDriver.d.ts +21 -18
  721. package/backend/dist/services/workRuntimeDriver.d.ts.map +1 -1
  722. package/backend/dist/services/workRuntimeDriver.js +69 -20
  723. package/backend/dist/services/workRuntimeDriver.js.map +1 -1
  724. package/backend/dist/services/workRuntimeService.d.ts +18 -13
  725. package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
  726. package/backend/dist/services/workRuntimeService.js +438 -194
  727. package/backend/dist/services/workRuntimeService.js.map +1 -1
  728. package/backend/dist/services/workRuntimeShared.d.ts +2 -0
  729. package/backend/dist/services/workRuntimeShared.d.ts.map +1 -1
  730. package/backend/dist/services/workRuntimeShared.js.map +1 -1
  731. package/backend/dist/services/workTaskService.d.ts +42 -36
  732. package/backend/dist/services/workTaskService.d.ts.map +1 -1
  733. package/backend/dist/services/workTaskService.js +445 -350
  734. package/backend/dist/services/workTaskService.js.map +1 -1
  735. package/backend/dist/services/workTerminalService.d.ts +1 -1
  736. package/backend/dist/services/workTerminalService.d.ts.map +1 -1
  737. package/backend/dist/services/workTerminalService.js +33 -6
  738. package/backend/dist/services/workTerminalService.js.map +1 -1
  739. package/backend/dist/storage.d.ts +72 -40
  740. package/backend/dist/storage.d.ts.map +1 -1
  741. package/backend/dist/storage.js +312 -660
  742. package/backend/dist/storage.js.map +1 -1
  743. package/backend/dist/types/index.d.ts +28 -0
  744. package/backend/dist/types/index.d.ts.map +1 -1
  745. package/backend/dist/types/index.js.map +1 -1
  746. package/backend/dist/types/work.d.ts +7 -2
  747. package/backend/dist/types/work.d.ts.map +1 -1
  748. package/backend/dist/utils/chatCancellation.d.ts +48 -0
  749. package/backend/dist/utils/chatCancellation.d.ts.map +1 -0
  750. package/backend/dist/utils/chatCancellation.js +152 -0
  751. package/backend/dist/utils/chatCancellation.js.map +1 -0
  752. package/backend/dist/utils/chatDocumentContext.d.ts +1 -1
  753. package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -1
  754. package/backend/dist/utils/chatDocumentContext.js +11 -5
  755. package/backend/dist/utils/chatDocumentContext.js.map +1 -1
  756. package/backend/dist/utils/chatStreamCoalescer.d.ts +15 -0
  757. package/backend/dist/utils/chatStreamCoalescer.d.ts.map +1 -0
  758. package/backend/dist/utils/chatStreamCoalescer.js +59 -0
  759. package/backend/dist/utils/chatStreamCoalescer.js.map +1 -0
  760. package/backend/dist/utils/dataDirectory.d.ts +49 -0
  761. package/backend/dist/utils/dataDirectory.d.ts.map +1 -0
  762. package/backend/dist/utils/dataDirectory.js +291 -0
  763. package/backend/dist/utils/dataDirectory.js.map +1 -0
  764. package/backend/dist/utils/generationUtils.d.ts.map +1 -1
  765. package/backend/dist/utils/generationUtils.js +18 -6
  766. package/backend/dist/utils/generationUtils.js.map +1 -1
  767. package/backend/dist/utils/jwt.d.ts.map +1 -1
  768. package/backend/dist/utils/jwt.js +2 -3
  769. package/backend/dist/utils/jwt.js.map +1 -1
  770. package/backend/dist/utils/ollamaModelDefaults.d.ts.map +1 -1
  771. package/backend/dist/utils/ollamaModelDefaults.js +2 -7
  772. package/backend/dist/utils/ollamaModelDefaults.js.map +1 -1
  773. package/backend/dist/utils/ollamaStreaming.d.ts +2 -1
  774. package/backend/dist/utils/ollamaStreaming.d.ts.map +1 -1
  775. package/backend/dist/utils/ollamaStreaming.js +49 -11
  776. package/backend/dist/utils/ollamaStreaming.js.map +1 -1
  777. package/backend/dist/utils/pluginConnectionVariables.d.ts.map +1 -1
  778. package/backend/dist/utils/pluginConnectionVariables.js +11 -3
  779. package/backend/dist/utils/pluginConnectionVariables.js.map +1 -1
  780. package/backend/dist/utils/pluginDefinitionTrust.d.ts.map +1 -1
  781. package/backend/dist/utils/pluginDefinitionTrust.js +4 -3
  782. package/backend/dist/utils/pluginDefinitionTrust.js.map +1 -1
  783. package/backend/dist/utils/pluginStreaming.d.ts +2 -1
  784. package/backend/dist/utils/pluginStreaming.d.ts.map +1 -1
  785. package/backend/dist/utils/pluginStreaming.js +5 -1
  786. package/backend/dist/utils/pluginStreaming.js.map +1 -1
  787. package/backend/dist/utils/pluginUpload.d.ts +1 -0
  788. package/backend/dist/utils/pluginUpload.d.ts.map +1 -1
  789. package/backend/dist/utils/pluginUpload.js +9 -2
  790. package/backend/dist/utils/pluginUpload.js.map +1 -1
  791. package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
  792. package/backend/dist/utils/pluginValidation.js +29 -1
  793. package/backend/dist/utils/pluginValidation.js.map +1 -1
  794. package/backend/dist/utils/sttAudioUpload.d.ts +24 -0
  795. package/backend/dist/utils/sttAudioUpload.d.ts.map +1 -0
  796. package/backend/dist/utils/sttAudioUpload.js +500 -0
  797. package/backend/dist/utils/sttAudioUpload.js.map +1 -0
  798. package/backend/dist/utils/ttsVoiceCloneUpload.d.ts +34 -0
  799. package/backend/dist/utils/ttsVoiceCloneUpload.d.ts.map +1 -0
  800. package/backend/dist/utils/ttsVoiceCloneUpload.js +224 -0
  801. package/backend/dist/utils/ttsVoiceCloneUpload.js.map +1 -0
  802. package/backend/dist/utils/websocketMessages.d.ts +2 -1
  803. package/backend/dist/utils/websocketMessages.d.ts.map +1 -1
  804. package/backend/dist/utils/websocketMessages.js +16 -2
  805. package/backend/dist/utils/websocketMessages.js.map +1 -1
  806. package/backend/dist/websocketServer.d.ts +4 -1
  807. package/backend/dist/websocketServer.d.ts.map +1 -1
  808. package/backend/dist/websocketServer.js +290 -44
  809. package/backend/dist/websocketServer.js.map +1 -1
  810. package/backend/dist/workTerminalServer.d.ts +9 -0
  811. package/backend/dist/workTerminalServer.d.ts.map +1 -1
  812. package/backend/dist/workTerminalServer.js +221 -52
  813. package/backend/dist/workTerminalServer.js.map +1 -1
  814. package/backend/dist/worker.d.ts +2 -0
  815. package/backend/dist/worker.d.ts.map +1 -0
  816. package/backend/dist/worker.js +250 -0
  817. package/backend/dist/worker.js.map +1 -0
  818. package/backend/package.json +19 -9
  819. package/bin/cli.js +126 -99
  820. package/bin/runtime-paths.js +108 -0
  821. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  822. package/frontend/dist/artifact-runtime/framer-motion.js +5 -5
  823. package/frontend/dist/artifact-runtime/lucide-react.js +1 -1
  824. package/frontend/dist/assets/index-CUhEG7E2.js +33 -0
  825. package/frontend/dist/assets/index-kxtZQLV6.css +1 -0
  826. package/frontend/dist/assets/{markdown-math-ClQbWekD.css → markdown-math-ClTedVi7.css} +1 -1
  827. package/frontend/dist/index.html +36 -18
  828. package/frontend/dist/js/{ArtifactContainer-C_UdeK4k.js → ArtifactContainer-BTEDhBnv.js} +1 -1
  829. package/frontend/dist/js/{ArtifactDemoPage-D3AuvuR5.js → ArtifactDemoPage-B0gN3YTl.js} +1 -1
  830. package/frontend/dist/js/{ArtifactSandboxFrame-BiXl9iGD.js → ArtifactSandboxFrame-CLBXQkZs.js} +3 -3
  831. package/frontend/dist/js/{ArtifactSlideOutPanel-CvgS3sfQ.js → ArtifactSlideOutPanel-CfqHPFdE.js} +1 -1
  832. package/frontend/dist/js/{Button-DcBM7gdH.js → Button-BV44cTnj.js} +1 -1
  833. package/frontend/dist/js/ChatPage-DIkAXZWA.js +23 -0
  834. package/frontend/dist/js/{FirstTimeSetup-B9742i3H.js → FirstTimeSetup-B8phXGNA.js} +1 -1
  835. package/frontend/dist/js/GalleryPage-W4uI043I.js +1 -0
  836. package/frontend/dist/js/HomePage-DlxehbyO.js +1 -0
  837. package/frontend/dist/js/{LibreClawPage-Ds6pqEyk.js → LibreClawPage-CgD0_G_F.js} +1 -1
  838. package/frontend/dist/js/{ModelManagerModals-BBNg2fxs.js → ModelManagerModals-D7jIT3v1.js} +1 -1
  839. package/frontend/dist/js/{ModelSelector-CJfJYwxh.js → ModelSelector-BYxJU1UV.js} +1 -1
  840. package/frontend/dist/js/ModelsPage-C4XdCKP5.js +2 -0
  841. package/frontend/dist/js/NotesPage-CDECOl4V.js +1 -0
  842. package/frontend/dist/js/{OptimizedSyntaxHighlighter-CWYUn9Oe.js → OptimizedSyntaxHighlighter-XwqZEoTf.js} +1 -1
  843. package/frontend/dist/js/{PersonasPage-CbQVv9OM.js → PersonasPage-CjSLPrgS.js} +2 -2
  844. package/frontend/dist/js/PluginUsagePage-DJOXJuH4.js +1 -0
  845. package/frontend/dist/js/RichMessageContent-Debeh6bi.js +3 -0
  846. package/frontend/dist/js/SettingsModal-cUqAeYUP.js +1 -0
  847. package/frontend/dist/js/{SettingsToggle-Uz2jvV64.js → SettingsToggle-WTa0rgvY.js} +1 -1
  848. package/frontend/dist/js/{SystemPage-CIBDZTWB.js → SystemPage-DxPw0GS7.js} +1 -1
  849. package/frontend/dist/js/UserManagementPage-CEdYFe_Z.js +1 -0
  850. package/frontend/dist/js/WorkPage-DDVeuG_9.js +6 -0
  851. package/frontend/dist/js/api-IzobHGND.js +14 -0
  852. package/frontend/dist/js/appStore-DKwC2vgn.js +2 -0
  853. package/frontend/dist/js/ar-xTSvTq05.js +2 -0
  854. package/frontend/dist/js/authStore-OaTuapL7.js +4 -0
  855. package/frontend/dist/js/{babel-CmENXdZw.js → babel-D24oDI9y.js} +1 -1
  856. package/frontend/dist/js/bn-iYAsohEA.js +2 -0
  857. package/frontend/dist/js/chatStore-DXGUVLXD.js +3 -0
  858. package/frontend/dist/js/{config-CV8L89A5.js → config-DPEEuTAe.js} +1 -1
  859. package/frontend/dist/js/cs-YBHN88Hb.js +2 -0
  860. package/frontend/dist/js/da-D7qlLy_k.js +2 -0
  861. package/frontend/dist/js/de-DV671k2c.js +2 -0
  862. package/frontend/dist/js/es-kyBgzNq-.js +2 -0
  863. package/frontend/dist/js/{estree-Lx6fK8Ug.js → estree-ChwJsD2w.js} +1 -1
  864. package/frontend/dist/js/fr-Cw1vut7I.js +2 -0
  865. package/frontend/dist/js/hi-DWEFC024.js +2 -0
  866. package/frontend/dist/js/{html-Dx5reqmV.js → html-DFrVjciF.js} +1 -1
  867. package/frontend/dist/js/id-DlMHjjy0.js +2 -0
  868. package/frontend/dist/js/is-B9E_a7dG.js +2 -0
  869. package/frontend/dist/js/it-DawmVbLC.js +2 -0
  870. package/frontend/dist/js/ja-DmVvwY3W.js +2 -0
  871. package/frontend/dist/js/ko-DzOPpkVs.js +2 -0
  872. package/frontend/dist/js/{markdown-Bd5G8zQB.js → markdown-FLLx7b67.js} +1 -1
  873. package/frontend/dist/js/markdown-core-BmPPZiuD.js +31 -0
  874. package/frontend/dist/js/{markdown-math-B7FlYsmr.js → markdown-math-mH7AZ_mb.js} +6 -6
  875. package/frontend/dist/js/{messageCodeStyles-CUWSpffv.js → messageCodeStyles-CBkkZY4n.js} +1 -1
  876. package/frontend/dist/js/ms-DpsaOPht.js +2 -0
  877. package/frontend/dist/js/nl-B1d8W22n.js +2 -0
  878. package/frontend/dist/js/pl-nCncRVgt.js +2 -0
  879. package/frontend/dist/js/{postcss-B5WIGhAY.js → postcss-Bx9CTcIc.js} +1 -1
  880. package/frontend/dist/js/pt-DHw8fGuu.js +2 -0
  881. package/frontend/dist/js/{react-vendor-DPNXrO-8.js → react-vendor-C5yShNlM.js} +1 -1
  882. package/frontend/dist/js/{router-vendor-Ca9zqOqT.js → router-vendor-CbPDks39.js} +1 -1
  883. package/frontend/dist/js/ru-Derl_YP_.js +2 -0
  884. package/frontend/dist/js/{standalone-DLNXiOUi.js → standalone-i8-5bg5p.js} +1 -1
  885. package/frontend/dist/js/sv-pJAfBVo0.js +2 -0
  886. package/frontend/dist/js/{syntax-highlight-Ca9bHsaz.js → syntax-highlight-3EEX6CGL.js} +3 -3
  887. package/frontend/dist/js/th-C_7fIGnk.js +2 -0
  888. package/frontend/dist/js/tr-CPqsJvaP.js +2 -0
  889. package/frontend/dist/js/{typescript-YKxslwSt.js → typescript-CQ3x-Uni.js} +1 -1
  890. package/frontend/dist/js/{ui-Dw6jDKxN.js → ui-BHhR3Vok.js} +2 -2
  891. package/frontend/dist/js/ui-vendor-D3Ahl1x5.js +177 -0
  892. package/frontend/dist/js/uk-3o8P_kFi.js +2 -0
  893. package/frontend/dist/js/{useTranslation-t1quV8ce.js → useTranslation-C3ei3mJq.js} +1 -1
  894. package/frontend/dist/js/{utils-iKndEgla.js → utils-CuC1beTY.js} +1 -1
  895. package/frontend/dist/js/{utils-vendor-1zob7nK9.js → utils-vendor-BBa8OxtB.js} +1 -1
  896. package/frontend/dist/js/vi-Dv6N7OVD.js +2 -0
  897. package/frontend/dist/js/{workApi-LrQmhNxb.js → workApi-Czu69yWS.js} +2 -2
  898. package/frontend/dist/js/{yaml-QD4znPfZ.js → yaml-DioTxVLA.js} +1 -1
  899. package/frontend/dist/js/zh-qg5iqtPi.js +2 -0
  900. package/package.json +16 -5
  901. package/plugins/huggingface.json +12 -3
  902. package/plugins/llama-cpp.json +18 -6
  903. package/plugins/longcat-audiodit.json +114 -0
  904. package/plugins/openai.json +18 -0
  905. package/frontend/dist/assets/index-CN7wpzUO.js +0 -26
  906. package/frontend/dist/assets/index-Dqkx5o2y.css +0 -1
  907. package/frontend/dist/js/ChatPage-DBEi-FSO.js +0 -16
  908. package/frontend/dist/js/GalleryPage-BL0x_xl7.js +0 -1
  909. package/frontend/dist/js/HomePage-Ukn2Y-BG.js +0 -1
  910. package/frontend/dist/js/ModelsPage-CDPJM-LA.js +0 -2
  911. package/frontend/dist/js/NotesPage-DJ-_MSI1.js +0 -1
  912. package/frontend/dist/js/PluginUsagePage-D69rQvFl.js +0 -1
  913. package/frontend/dist/js/RichMessageContent-DfuCu6PB.js +0 -3
  914. package/frontend/dist/js/SettingsModal-D87lWSx4.js +0 -1
  915. package/frontend/dist/js/UserManagementPage-DzMnFKDG.js +0 -1
  916. package/frontend/dist/js/WorkPage-D84JNdjS.js +0 -6
  917. package/frontend/dist/js/api-DhmVEJr2.js +0 -14
  918. package/frontend/dist/js/appStore-BsqeY2tS.js +0 -2
  919. package/frontend/dist/js/ar-BgCHB9_9.js +0 -2
  920. package/frontend/dist/js/authStore-DanfaPdm.js +0 -4
  921. package/frontend/dist/js/bn-Cr8_opuR.js +0 -2
  922. package/frontend/dist/js/chatStore-C25ywAXQ.js +0 -3
  923. package/frontend/dist/js/cs-Bb9gXpfH.js +0 -2
  924. package/frontend/dist/js/da-JfdGHjAw.js +0 -2
  925. package/frontend/dist/js/de-CczkCOVx.js +0 -2
  926. package/frontend/dist/js/es-n_0cjhn7.js +0 -2
  927. package/frontend/dist/js/fr-Pno128cn.js +0 -2
  928. package/frontend/dist/js/hi-DBCdcL4p.js +0 -2
  929. package/frontend/dist/js/id-85QDk-wA.js +0 -2
  930. package/frontend/dist/js/is-9MuKmBft.js +0 -2
  931. package/frontend/dist/js/it-C5mz9I3H.js +0 -2
  932. package/frontend/dist/js/ja-Cu90QTBd.js +0 -2
  933. package/frontend/dist/js/ko-CSdgcMgq.js +0 -2
  934. package/frontend/dist/js/markdown-core-DHnR5Hw8.js +0 -16
  935. package/frontend/dist/js/ms-IQMi6HBU.js +0 -2
  936. package/frontend/dist/js/nl-BwpdTgvn.js +0 -2
  937. package/frontend/dist/js/pl-zq8ctKrQ.js +0 -2
  938. package/frontend/dist/js/pt-BIQu7dBu.js +0 -2
  939. package/frontend/dist/js/ru-BT5-Z0F9.js +0 -2
  940. package/frontend/dist/js/sv-B1_q6-Uj.js +0 -2
  941. package/frontend/dist/js/th-BiLLwq0A.js +0 -2
  942. package/frontend/dist/js/tr-NZbkkeKs.js +0 -2
  943. package/frontend/dist/js/ui-vendor-xUzKqAXI.js +0 -177
  944. package/frontend/dist/js/uk-CGu1pg-F.js +0 -2
  945. package/frontend/dist/js/vi-ClvH5JZg.js +0 -2
  946. package/frontend/dist/js/zh-Jgjy3uAG.js +0 -2
@@ -0,0 +1,776 @@
1
+ /*
2
+ * Libre WebUI
3
+ * Copyright (C) 2025 Kroonen AI, Inc.
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ */
6
+ import { v4 as uuidv4 } from 'uuid';
7
+ import { PersistenceResourceConflictError, PersistenceResourceDeletionReservedError, PersistenceResourceLimitError, } from './resourceTypes.js';
8
+ const number = (value, field) => {
9
+ const converted = typeof value === 'number' ? value : Number(value);
10
+ if (!Number.isSafeInteger(converted)) {
11
+ throw new Error(`PostgreSQL returned an invalid ${field}`);
12
+ }
13
+ return converted;
14
+ };
15
+ const chatSession = (row) => ({
16
+ ...row,
17
+ created_at: number(row.created_at, 'session created_at'),
18
+ updated_at: number(row.updated_at, 'session updated_at'),
19
+ archived: number(row.archived, 'session archived'),
20
+ pinned: number(row.pinned, 'session pinned'),
21
+ });
22
+ const chatMessage = (row) => ({
23
+ ...row,
24
+ timestamp: number(row.timestamp, 'message timestamp'),
25
+ message_index: number(row.message_index, 'message index'),
26
+ branch_index: number(row.branch_index, 'message branch index'),
27
+ is_active: number(row.is_active, 'message active state'),
28
+ rating: row.rating === null ? null : number(row.rating, 'message rating'),
29
+ });
30
+ const namedResource = (row) => ({
31
+ ...row,
32
+ created_at: number(row.created_at, 'resource created_at'),
33
+ updated_at: number(row.updated_at, 'resource updated_at'),
34
+ });
35
+ const note = (row) => ({
36
+ ...row,
37
+ created_at: number(row.created_at, 'note created_at'),
38
+ updated_at: number(row.updated_at, 'note updated_at'),
39
+ });
40
+ const changes = (rowCount) => rowCount ?? 0;
41
+ const lockOwner = async (client, userId) => {
42
+ const result = await client.query('SELECT id FROM users WHERE id = $1 FOR UPDATE', [userId]);
43
+ if (result.rowCount !== 1)
44
+ throw new Error('Resource owner does not exist');
45
+ };
46
+ class PostgresChatSessionRepository {
47
+ constructor(database) {
48
+ this.database = database;
49
+ }
50
+ async replaceAggregate(client, aggregate) {
51
+ await lockOwner(client, aggregate.session.user_id);
52
+ const result = await client.query(`INSERT INTO sessions
53
+ (id, user_id, title, model, persona_id, provider_type, provider_id,
54
+ created_at, updated_at, archived, settings, folder_id, pinned)
55
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
56
+ ON CONFLICT (id) DO UPDATE SET
57
+ title = EXCLUDED.title,
58
+ model = EXCLUDED.model,
59
+ persona_id = EXCLUDED.persona_id,
60
+ provider_type = EXCLUDED.provider_type,
61
+ provider_id = EXCLUDED.provider_id,
62
+ updated_at = EXCLUDED.updated_at,
63
+ archived = EXCLUDED.archived,
64
+ settings = EXCLUDED.settings,
65
+ folder_id = EXCLUDED.folder_id,
66
+ pinned = EXCLUDED.pinned
67
+ WHERE sessions.user_id = EXCLUDED.user_id`, [
68
+ aggregate.session.id,
69
+ aggregate.session.user_id,
70
+ aggregate.session.title,
71
+ aggregate.session.model,
72
+ aggregate.session.persona_id,
73
+ aggregate.session.provider_type,
74
+ aggregate.session.provider_id,
75
+ aggregate.session.created_at,
76
+ aggregate.session.updated_at,
77
+ aggregate.session.archived,
78
+ aggregate.session.settings,
79
+ aggregate.session.folder_id,
80
+ aggregate.session.pinned,
81
+ ]);
82
+ if (result.rowCount !== 1)
83
+ throw new PersistenceResourceConflictError();
84
+ await client.query('DELETE FROM session_messages WHERE session_id = $1', [
85
+ aggregate.session.id,
86
+ ]);
87
+ for (const message of aggregate.messages) {
88
+ if (message.session_id !== aggregate.session.id) {
89
+ throw new Error('A chat message does not belong to its aggregate');
90
+ }
91
+ await client.query(`INSERT INTO session_messages
92
+ (id, session_id, role, content, thinking, timestamp, message_index,
93
+ model, provider_metadata, images, statistics, artifacts,
94
+ parent_id, branch_index, is_active, rating)
95
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12,
96
+ $13, $14, $15, $16)`, [
97
+ message.id,
98
+ message.session_id,
99
+ message.role,
100
+ message.content,
101
+ message.thinking,
102
+ message.timestamp,
103
+ message.message_index,
104
+ message.model,
105
+ message.provider_metadata,
106
+ message.images,
107
+ message.statistics,
108
+ message.artifacts,
109
+ message.parent_id,
110
+ message.branch_index,
111
+ message.is_active,
112
+ message.rating,
113
+ ]);
114
+ }
115
+ }
116
+ async listByOwner(userId) {
117
+ const result = await this.database.query(`SELECT s.*,
118
+ COALESCE(
119
+ json_agg(to_jsonb(m) ORDER BY m.message_index, m.branch_index)
120
+ FILTER (WHERE m.id IS NOT NULL),
121
+ '[]'::json
122
+ ) AS messages
123
+ FROM sessions s
124
+ LEFT JOIN session_messages m ON m.session_id = s.id
125
+ WHERE s.user_id = $1
126
+ GROUP BY s.id
127
+ ORDER BY s.updated_at DESC`, [userId]);
128
+ return result.rows.map(row => {
129
+ const rawMessages = Array.isArray(row.messages) ? row.messages : [];
130
+ return {
131
+ session: chatSession(row),
132
+ messages: rawMessages.map(item => chatMessage(item)),
133
+ };
134
+ });
135
+ }
136
+ async findByOwner(sessionId, userId) {
137
+ const sessionResult = await this.database.query('SELECT * FROM sessions WHERE id = $1 AND user_id = $2', [sessionId, userId]);
138
+ const session = sessionResult.rows[0];
139
+ if (!session)
140
+ return null;
141
+ const messageResult = await this.database.query(`SELECT * FROM session_messages
142
+ WHERE session_id = $1
143
+ ORDER BY message_index ASC, branch_index ASC`, [sessionId]);
144
+ return {
145
+ session: chatSession(session),
146
+ messages: messageResult.rows.map(chatMessage),
147
+ };
148
+ }
149
+ async replace(aggregate, beforeCommit) {
150
+ await this.database.transaction(async (client) => {
151
+ await this.replaceAggregate(client, aggregate);
152
+ }, { isolationLevel: 'serializable', beforeCommit });
153
+ }
154
+ async replaceAndEnqueue(aggregate, enqueuer, input, beforeCommit) {
155
+ if (input.sessionId !== aggregate.session.id ||
156
+ input.actorUserId !== aggregate.session.user_id) {
157
+ throw new Error('Chat generation enqueue does not match its aggregate');
158
+ }
159
+ await this.database.transaction(async (client) => {
160
+ const enqueue = await enqueuer.enqueuePostgres(client, input);
161
+ if (enqueue.created)
162
+ await this.replaceAggregate(client, aggregate);
163
+ }, { isolationLevel: 'serializable', beforeCommit });
164
+ }
165
+ async removeMessageIfCurrent(sessionId, userId, messageId, expectedTimestamp, expectedSessionUpdatedAt, previousSessionUpdatedAt, previousActiveMessageId) {
166
+ return this.database.transaction(async (client) => {
167
+ const owner = await client.query('SELECT user_id FROM sessions WHERE id = $1 FOR UPDATE', [sessionId]);
168
+ if (owner.rows[0]?.user_id !== userId)
169
+ return false;
170
+ const target = await client.query(`SELECT timestamp, parent_id, is_active
171
+ FROM session_messages
172
+ WHERE id = $1 AND session_id = $2 FOR UPDATE`, [messageId, sessionId]);
173
+ const row = target.rows[0];
174
+ if (!row ||
175
+ number(row.timestamp, 'message timestamp') !== expectedTimestamp)
176
+ return false;
177
+ const deleted = await client.query(`DELETE FROM session_messages
178
+ WHERE id = $1 AND session_id = $2 AND timestamp = $3`, [messageId, sessionId, expectedTimestamp]);
179
+ if (changes(deleted.rowCount) > 0) {
180
+ await client.query(`UPDATE sessions SET updated_at = $1
181
+ WHERE id = $2 AND user_id = $3 AND updated_at = $4`, [
182
+ previousSessionUpdatedAt,
183
+ sessionId,
184
+ userId,
185
+ expectedSessionUpdatedAt,
186
+ ]);
187
+ }
188
+ if (changes(deleted.rowCount) > 0 &&
189
+ number(row.is_active, 'message active state') === 1 &&
190
+ row.parent_id &&
191
+ previousActiveMessageId) {
192
+ const active = await client.query(`SELECT 1 FROM session_messages
193
+ WHERE session_id = $1 AND (id = $2 OR parent_id = $2)
194
+ AND is_active = 1 LIMIT 1`, [sessionId, row.parent_id]);
195
+ if (!active.rows[0]) {
196
+ await client.query(`UPDATE session_messages SET is_active = 1
197
+ WHERE id = $1 AND session_id = $2
198
+ AND (id = $3 OR parent_id = $3)`, [previousActiveMessageId, sessionId, row.parent_id]);
199
+ }
200
+ }
201
+ return changes(deleted.rowCount) > 0;
202
+ }, { isolationLevel: 'serializable' });
203
+ }
204
+ async deleteByOwner(sessionId, userId, beforeCommit) {
205
+ return this.database.transaction(async (client) => changes((await client.query('DELETE FROM sessions WHERE id = $1 AND user_id = $2', [sessionId, userId])).rowCount) > 0, { isolationLevel: 'serializable', beforeCommit });
206
+ }
207
+ async deleteAllByOwner(userId) {
208
+ return changes((await this.database.query('DELETE FROM sessions WHERE user_id = $1', [
209
+ userId,
210
+ ])).rowCount);
211
+ }
212
+ }
213
+ class PostgresKnowledgeCollectionRepository {
214
+ constructor(database) {
215
+ this.database = database;
216
+ }
217
+ async listByOwner(userId) {
218
+ const result = await this.database.query(`SELECT * FROM knowledge_collections
219
+ WHERE user_id = $1
220
+ ORDER BY lower(name), name`, [userId]);
221
+ return result.rows.map(namedResource);
222
+ }
223
+ async replace(collection) {
224
+ await this.database.transaction(async (client) => {
225
+ await lockOwner(client, collection.user_id);
226
+ const result = await client.query(`INSERT INTO knowledge_collections
227
+ (id, user_id, name, created_at, updated_at)
228
+ VALUES ($1, $2, $3, $4, $5)
229
+ ON CONFLICT (id) DO UPDATE SET
230
+ name = EXCLUDED.name,
231
+ updated_at = EXCLUDED.updated_at
232
+ WHERE knowledge_collections.user_id = EXCLUDED.user_id`, [
233
+ collection.id,
234
+ collection.user_id,
235
+ collection.name,
236
+ collection.created_at,
237
+ collection.updated_at,
238
+ ]);
239
+ if (result.rowCount !== 1)
240
+ throw new PersistenceResourceConflictError();
241
+ });
242
+ }
243
+ async deleteAndDetach(collectionId, userId) {
244
+ return (changes((await this.database.query('DELETE FROM knowledge_collections WHERE id = $1 AND user_id = $2', [collectionId, userId])).rowCount) > 0);
245
+ }
246
+ }
247
+ class PostgresNoteRepository {
248
+ constructor(database) {
249
+ this.database = database;
250
+ }
251
+ async listByOwner(userId, maximum) {
252
+ const result = await this.database.query(`SELECT * FROM notes
253
+ WHERE user_id = $1
254
+ ORDER BY updated_at DESC
255
+ LIMIT $2`, [userId, maximum]);
256
+ return result.rows.map(note);
257
+ }
258
+ async findByOwner(noteId, userId) {
259
+ const result = await this.database.query('SELECT * FROM notes WHERE id = $1 AND user_id = $2', [noteId, userId]);
260
+ return result.rows[0] ? note(result.rows[0]) : null;
261
+ }
262
+ async replaceWithLimit(value, maximum) {
263
+ await this.database.transaction(async (client) => {
264
+ await lockOwner(client, value.user_id);
265
+ const existing = await client.query('SELECT user_id FROM notes WHERE id = $1 FOR UPDATE', [value.id]);
266
+ if (existing.rows[0] && existing.rows[0].user_id !== value.user_id) {
267
+ throw new PersistenceResourceConflictError();
268
+ }
269
+ if (!existing.rows[0]) {
270
+ const count = await client.query('SELECT COUNT(*)::text AS count FROM notes WHERE user_id = $1', [value.user_id]);
271
+ if (Number(count.rows[0]?.count || 0) >= maximum) {
272
+ throw new PersistenceResourceLimitError('note', maximum);
273
+ }
274
+ }
275
+ const result = await client.query(`INSERT INTO notes (id, user_id, title, content, created_at, updated_at)
276
+ VALUES ($1, $2, $3, $4, $5, $6)
277
+ ON CONFLICT (id) DO UPDATE SET
278
+ title = EXCLUDED.title,
279
+ content = EXCLUDED.content,
280
+ updated_at = EXCLUDED.updated_at
281
+ WHERE notes.user_id = EXCLUDED.user_id`, [
282
+ value.id,
283
+ value.user_id,
284
+ value.title,
285
+ value.content,
286
+ value.created_at,
287
+ value.updated_at,
288
+ ]);
289
+ if (result.rowCount !== 1)
290
+ throw new PersistenceResourceConflictError();
291
+ });
292
+ }
293
+ async patchByOwner(noteId, userId, patch) {
294
+ const assignments = [];
295
+ const values = [];
296
+ const assign = (column, value) => {
297
+ values.push(value);
298
+ assignments.push(`${column} = $${values.length}`);
299
+ };
300
+ if (patch.title !== undefined)
301
+ assign('title', patch.title);
302
+ if (patch.content !== undefined)
303
+ assign('content', patch.content);
304
+ assign('updated_at', patch.updated_at);
305
+ values.push(noteId, userId);
306
+ const result = await this.database.query(`UPDATE notes SET ${assignments.join(', ')}
307
+ WHERE id = $${values.length - 1} AND user_id = $${values.length}
308
+ RETURNING *`, values);
309
+ return result.rows[0] ? note(result.rows[0]) : null;
310
+ }
311
+ async deleteByOwner(noteId, userId) {
312
+ return (changes((await this.database.query('DELETE FROM notes WHERE id = $1 AND user_id = $2', [noteId, userId])).rowCount) > 0);
313
+ }
314
+ }
315
+ class PostgresSessionFolderRepository {
316
+ constructor(database) {
317
+ this.database = database;
318
+ }
319
+ async listByOwner(userId, maximum) {
320
+ const result = await this.database.query(`SELECT * FROM session_folders
321
+ WHERE user_id = $1
322
+ ORDER BY lower(name), name
323
+ LIMIT $2`, [userId, maximum]);
324
+ return result.rows.map(namedResource);
325
+ }
326
+ async replaceWithLimit(folder, maximum) {
327
+ await this.database.transaction(async (client) => {
328
+ await lockOwner(client, folder.user_id);
329
+ const existing = await client.query('SELECT user_id FROM session_folders WHERE id = $1 FOR UPDATE', [folder.id]);
330
+ if (existing.rows[0] && existing.rows[0].user_id !== folder.user_id) {
331
+ throw new PersistenceResourceConflictError();
332
+ }
333
+ if (!existing.rows[0]) {
334
+ const count = await client.query('SELECT COUNT(*)::text AS count FROM session_folders WHERE user_id = $1', [folder.user_id]);
335
+ if (Number(count.rows[0]?.count || 0) >= maximum) {
336
+ throw new PersistenceResourceLimitError('session-folder', maximum);
337
+ }
338
+ }
339
+ const result = await client.query(`INSERT INTO session_folders (id, user_id, name, created_at, updated_at)
340
+ VALUES ($1, $2, $3, $4, $5)
341
+ ON CONFLICT (id) DO UPDATE SET
342
+ name = EXCLUDED.name,
343
+ updated_at = EXCLUDED.updated_at
344
+ WHERE session_folders.user_id = EXCLUDED.user_id`, [
345
+ folder.id,
346
+ folder.user_id,
347
+ folder.name,
348
+ folder.created_at,
349
+ folder.updated_at,
350
+ ]);
351
+ if (result.rowCount !== 1)
352
+ throw new PersistenceResourceConflictError();
353
+ });
354
+ }
355
+ async deleteAndDetach(folderId, userId) {
356
+ return (changes((await this.database.query('DELETE FROM session_folders WHERE id = $1 AND user_id = $2', [folderId, userId])).rowCount) > 0);
357
+ }
358
+ }
359
+ class PostgresPreferenceRepository {
360
+ constructor(database) {
361
+ this.database = database;
362
+ }
363
+ async resolveOwner(userId) {
364
+ if (userId)
365
+ return userId;
366
+ const result = await this.database.query('SELECT id FROM users ORDER BY created_at ASC, id ASC LIMIT 1');
367
+ return result.rows[0]?.id ?? null;
368
+ }
369
+ async listByOwner(userId) {
370
+ const result = await this.database.query('SELECT key, value FROM user_preferences WHERE user_id = $1 ORDER BY key ASC', [userId]);
371
+ return result.rows;
372
+ }
373
+ async mutateAll(userId, timestamp, mutation) {
374
+ return this.database.transaction(async (client) => {
375
+ const owner = userId
376
+ ? await client.query('SELECT id FROM users WHERE id = $1 FOR UPDATE', [userId])
377
+ : await client.query(`SELECT id FROM users
378
+ ORDER BY created_at ASC, id ASC
379
+ LIMIT 1
380
+ FOR UPDATE`);
381
+ const ownerId = owner.rows[0]?.id;
382
+ if (!ownerId) {
383
+ if (userId)
384
+ throw new Error('Resource owner does not exist');
385
+ return null;
386
+ }
387
+ // READ COMMITTED gives a writer that waited for the owner lock a fresh
388
+ // snapshot here, including the preceding writer's committed rows.
389
+ const current = await client.query(`SELECT key, value FROM user_preferences
390
+ WHERE user_id = $1
391
+ ORDER BY key ASC`, [ownerId]);
392
+ const requested = mutation(current.rows);
393
+ if (requested === undefined) {
394
+ return { userId: ownerId, preferences: current.rows };
395
+ }
396
+ const preferences = [...requested].sort((left, right) => left.key < right.key ? -1 : left.key > right.key ? 1 : 0);
397
+ if (new Set(preferences.map(preference => preference.key)).size !==
398
+ preferences.length) {
399
+ throw new Error('Preference mutation returned duplicate keys');
400
+ }
401
+ await client.query('DELETE FROM user_preferences WHERE user_id = $1', [
402
+ ownerId,
403
+ ]);
404
+ for (const preference of preferences) {
405
+ await client.query(`INSERT INTO user_preferences
406
+ (id, user_id, key, value, created_at, updated_at)
407
+ VALUES ($1, $2, $3, $4, $5, $6)`, [
408
+ uuidv4(),
409
+ ownerId,
410
+ preference.key,
411
+ preference.value,
412
+ timestamp,
413
+ timestamp,
414
+ ]);
415
+ }
416
+ return { userId: ownerId, preferences };
417
+ }, { isolationLevel: 'read committed' });
418
+ }
419
+ async replaceAll(userId, preferences, timestamp) {
420
+ await this.mutateAll(userId, timestamp, () => preferences);
421
+ }
422
+ async deleteKeys(userId, keys) {
423
+ if (keys.length === 0)
424
+ return 0;
425
+ return changes((await this.database.query('DELETE FROM user_preferences WHERE user_id = $1 AND key = ANY($2::text[])', [userId, [...keys]])).rowCount);
426
+ }
427
+ }
428
+ class PostgresSystemSettingRepository {
429
+ constructor(database) {
430
+ this.database = database;
431
+ }
432
+ async get(key) {
433
+ const result = await this.database.query('SELECT value FROM system_settings WHERE key = $1', [key]);
434
+ return result.rows[0]?.value ?? null;
435
+ }
436
+ async getMany(keys) {
437
+ if (keys.length === 0)
438
+ return {};
439
+ const result = await this.database.query('SELECT key, value FROM system_settings WHERE key = ANY($1::text[])', [[...keys]]);
440
+ return Object.fromEntries(result.rows.map(row => [row.key, row.value]));
441
+ }
442
+ async upsert(key, value, updatedAt) {
443
+ await this.database.query(`INSERT INTO system_settings (key, value, updated_at)
444
+ VALUES ($1, $2, $3)
445
+ ON CONFLICT (key) DO UPDATE SET
446
+ value = EXCLUDED.value,
447
+ updated_at = EXCLUDED.updated_at`, [key, value, updatedAt]);
448
+ }
449
+ async upsertMany(values, updatedAt) {
450
+ await this.database.transaction(async (client) => {
451
+ for (const [key, value] of Object.entries(values)) {
452
+ await client.query(`INSERT INTO system_settings (key, value, updated_at)
453
+ VALUES ($1, $2, $3)
454
+ ON CONFLICT (key) DO UPDATE SET
455
+ value = EXCLUDED.value,
456
+ updated_at = EXCLUDED.updated_at`, [key, value, updatedAt]);
457
+ }
458
+ });
459
+ }
460
+ }
461
+ const ARCHIVE_TABLES = {
462
+ session: 'sessions',
463
+ 'session-folder': 'session_folders',
464
+ note: 'notes',
465
+ 'knowledge-collection': 'knowledge_collections',
466
+ document: 'documents',
467
+ persona: 'personas',
468
+ };
469
+ class PostgresDataArchiveRepository {
470
+ constructor(database) {
471
+ this.database = database;
472
+ }
473
+ async ownerOf(resource, id) {
474
+ // The table name is selected only from this closed server-owned map.
475
+ const result = await this.database.query(`SELECT user_id FROM ${ARCHIVE_TABLES[resource]} WHERE id = $1`, [id]);
476
+ return result.rows[0]?.user_id ?? null;
477
+ }
478
+ async nestedOwnerOf(resource, id) {
479
+ const definition = resource === 'session-message'
480
+ ? {
481
+ child: 'session_messages',
482
+ owner: 'sessions',
483
+ parent: 'session_id',
484
+ }
485
+ : {
486
+ child: 'document_chunks',
487
+ owner: 'documents',
488
+ parent: 'document_id',
489
+ };
490
+ const result = await this.database.query(`SELECT owner.user_id, child.${definition.parent} AS parent_id
491
+ FROM ${definition.child} child
492
+ JOIN ${definition.owner} owner ON owner.id = child.${definition.parent}
493
+ WHERE child.id = $1`, [id]);
494
+ const row = result.rows[0];
495
+ return row ? { userId: row.user_id, parentId: row.parent_id } : null;
496
+ }
497
+ async countByOwner(resource, userId) {
498
+ const table = resource === 'session-folder' ? 'session_folders' : 'notes';
499
+ const result = await this.database.query(`SELECT COUNT(*)::text AS count FROM ${table} WHERE user_id = $1`, [userId]);
500
+ return number(result.rows[0]?.count || '0', 'archive resource count');
501
+ }
502
+ async resourceDeletionReserved(resource, id) {
503
+ const result = await this.database.query(`SELECT 1 FROM platform_resource_deletion_tombstones
504
+ WHERE resource_type = $1 AND resource_id = $2`, [resource, id]);
505
+ return result.rowCount === 1;
506
+ }
507
+ async applyImport(plan) {
508
+ await this.database.transaction(async (client) => {
509
+ await lockOwner(client, plan.userId);
510
+ const shouldWrite = async (table, id) => {
511
+ const result = await client.query(`SELECT user_id FROM ${table} WHERE id = $1 FOR UPDATE`, [id]);
512
+ const existing = result.rows[0];
513
+ if (existing && existing.user_id !== plan.userId) {
514
+ throw new PersistenceResourceConflictError();
515
+ }
516
+ return !existing || plan.strategy === 'overwrite';
517
+ };
518
+ const enforceLimit = async (table, maximum) => {
519
+ const result = await client.query(`SELECT COUNT(*)::text AS count FROM ${table} WHERE user_id = $1`, [plan.userId]);
520
+ if (Number(result.rows[0]?.count || 0) >= maximum) {
521
+ throw new PersistenceResourceLimitError(table === 'notes' ? 'note' : 'session-folder', maximum);
522
+ }
523
+ };
524
+ const currentPreferences = await client.query(`SELECT key, value FROM user_preferences
525
+ WHERE user_id = $1
526
+ ORDER BY key ASC`, [plan.userId]);
527
+ const preferences = typeof plan.preferences === 'function'
528
+ ? [...plan.preferences(currentPreferences.rows)]
529
+ : plan.preferences;
530
+ await client.query('DELETE FROM user_preferences WHERE user_id = $1', [
531
+ plan.userId,
532
+ ]);
533
+ for (const preference of preferences) {
534
+ await client.query(`INSERT INTO user_preferences
535
+ (id, user_id, key, value, created_at, updated_at)
536
+ VALUES ($1, $2, $3, $4, $5, $6)`, [
537
+ uuidv4(),
538
+ plan.userId,
539
+ preference.key,
540
+ preference.value,
541
+ plan.timestamp,
542
+ plan.timestamp,
543
+ ]);
544
+ }
545
+ for (const folder of plan.sessionFolders) {
546
+ const write = await shouldWrite('session_folders', folder.id);
547
+ if (!write)
548
+ continue;
549
+ const existing = await client.query('SELECT 1 FROM session_folders WHERE id = $1', [folder.id]);
550
+ if (existing.rowCount === 0) {
551
+ await enforceLimit('session_folders', plan.maximumSessionFolders);
552
+ }
553
+ const result = await client.query(`INSERT INTO session_folders
554
+ (id, user_id, name, created_at, updated_at)
555
+ VALUES ($1, $2, $3, $4, $5)
556
+ ON CONFLICT (id) DO UPDATE SET
557
+ name = EXCLUDED.name,
558
+ updated_at = EXCLUDED.updated_at
559
+ WHERE session_folders.user_id = EXCLUDED.user_id`, [
560
+ folder.id,
561
+ plan.userId,
562
+ folder.name,
563
+ folder.created_at,
564
+ folder.updated_at,
565
+ ]);
566
+ if (result.rowCount !== 1)
567
+ throw new PersistenceResourceConflictError();
568
+ }
569
+ for (const note of plan.notes) {
570
+ const write = await shouldWrite('notes', note.id);
571
+ if (!write)
572
+ continue;
573
+ const existing = await client.query('SELECT 1 FROM notes WHERE id = $1', [note.id]);
574
+ if (existing.rowCount === 0) {
575
+ await enforceLimit('notes', plan.maximumNotes);
576
+ }
577
+ const result = await client.query(`INSERT INTO notes
578
+ (id, user_id, title, content, created_at, updated_at)
579
+ VALUES ($1, $2, $3, $4, $5, $6)
580
+ ON CONFLICT (id) DO UPDATE SET
581
+ title = EXCLUDED.title,
582
+ content = EXCLUDED.content,
583
+ updated_at = EXCLUDED.updated_at
584
+ WHERE notes.user_id = EXCLUDED.user_id`, [
585
+ note.id,
586
+ plan.userId,
587
+ note.title,
588
+ note.content,
589
+ note.created_at,
590
+ note.updated_at,
591
+ ]);
592
+ if (result.rowCount !== 1)
593
+ throw new PersistenceResourceConflictError();
594
+ }
595
+ for (const collection of plan.knowledgeCollections) {
596
+ if (!(await shouldWrite('knowledge_collections', collection.id))) {
597
+ continue;
598
+ }
599
+ const result = await client.query(`INSERT INTO knowledge_collections
600
+ (id, user_id, name, created_at, updated_at)
601
+ VALUES ($1, $2, $3, $4, $5)
602
+ ON CONFLICT (id) DO UPDATE SET
603
+ name = EXCLUDED.name,
604
+ updated_at = EXCLUDED.updated_at
605
+ WHERE knowledge_collections.user_id = EXCLUDED.user_id`, [
606
+ collection.id,
607
+ plan.userId,
608
+ collection.name,
609
+ collection.created_at,
610
+ collection.updated_at,
611
+ ]);
612
+ if (result.rowCount !== 1)
613
+ throw new PersistenceResourceConflictError();
614
+ }
615
+ for (const aggregate of plan.sessions) {
616
+ const { session } = aggregate;
617
+ if (!(await shouldWrite('sessions', session.id)))
618
+ continue;
619
+ const result = await client.query(`INSERT INTO sessions
620
+ (id, user_id, title, model, persona_id, provider_type, provider_id,
621
+ created_at, updated_at, archived, settings, folder_id, pinned)
622
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
623
+ ON CONFLICT (id) DO UPDATE SET
624
+ title = EXCLUDED.title,
625
+ model = EXCLUDED.model,
626
+ persona_id = EXCLUDED.persona_id,
627
+ provider_type = EXCLUDED.provider_type,
628
+ provider_id = EXCLUDED.provider_id,
629
+ updated_at = EXCLUDED.updated_at,
630
+ archived = EXCLUDED.archived,
631
+ settings = EXCLUDED.settings,
632
+ folder_id = EXCLUDED.folder_id,
633
+ pinned = EXCLUDED.pinned
634
+ WHERE sessions.user_id = EXCLUDED.user_id`, [
635
+ session.id,
636
+ plan.userId,
637
+ session.title,
638
+ session.model,
639
+ session.persona_id,
640
+ session.provider_type,
641
+ session.provider_id,
642
+ session.created_at,
643
+ session.updated_at,
644
+ session.archived,
645
+ session.settings,
646
+ session.folder_id,
647
+ session.pinned,
648
+ ]);
649
+ if (result.rowCount !== 1)
650
+ throw new PersistenceResourceConflictError();
651
+ await client.query('DELETE FROM session_messages WHERE session_id = $1', [session.id]);
652
+ for (const message of aggregate.messages) {
653
+ if (message.session_id !== session.id) {
654
+ throw new Error('A chat message does not belong to its aggregate');
655
+ }
656
+ await client.query(`INSERT INTO session_messages
657
+ (id, session_id, role, content, thinking, timestamp,
658
+ message_index, model, provider_metadata, images, statistics,
659
+ artifacts, parent_id, branch_index, is_active, rating)
660
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12,
661
+ NULL, $13, $14, $15)`, [
662
+ message.id,
663
+ message.session_id,
664
+ message.role,
665
+ message.content,
666
+ message.thinking,
667
+ message.timestamp,
668
+ message.message_index,
669
+ message.model,
670
+ message.provider_metadata,
671
+ message.images,
672
+ message.statistics,
673
+ message.artifacts,
674
+ message.branch_index,
675
+ message.is_active,
676
+ message.rating,
677
+ ]);
678
+ }
679
+ for (const message of aggregate.messages) {
680
+ if (message.parent_id) {
681
+ await client.query(`UPDATE session_messages
682
+ SET parent_id = $1
683
+ WHERE id = $2 AND session_id = $3`, [message.parent_id, message.id, session.id]);
684
+ }
685
+ }
686
+ }
687
+ for (const aggregate of plan.documents) {
688
+ const { document } = aggregate;
689
+ await client.query('SELECT pg_advisory_xact_lock(hashtextextended($1, 0))', [JSON.stringify(['libre-resource-v1', 'document', document.id])]);
690
+ const reserved = await client.query(`SELECT 1 FROM platform_resource_deletion_tombstones
691
+ WHERE resource_type = 'document' AND resource_id = $1`, [document.id]);
692
+ if (reserved.rowCount) {
693
+ throw new PersistenceResourceDeletionReservedError(document.id);
694
+ }
695
+ if (!(await shouldWrite('documents', document.id)))
696
+ continue;
697
+ const result = await client.query(`INSERT INTO documents
698
+ (id, user_id, filename, title, content, file_type, size,
699
+ session_id, collection_id, metadata, uploaded_at, created_at,
700
+ updated_at)
701
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
702
+ ON CONFLICT (id) DO UPDATE SET
703
+ filename = EXCLUDED.filename,
704
+ title = EXCLUDED.title,
705
+ content = EXCLUDED.content,
706
+ file_type = EXCLUDED.file_type,
707
+ size = EXCLUDED.size,
708
+ session_id = EXCLUDED.session_id,
709
+ collection_id = EXCLUDED.collection_id,
710
+ metadata = EXCLUDED.metadata,
711
+ uploaded_at = EXCLUDED.uploaded_at,
712
+ updated_at = EXCLUDED.updated_at
713
+ WHERE documents.user_id = EXCLUDED.user_id`, [
714
+ document.id,
715
+ plan.userId,
716
+ document.filename,
717
+ document.title,
718
+ document.content,
719
+ document.file_type,
720
+ document.size,
721
+ document.session_id,
722
+ document.collection_id,
723
+ document.metadata,
724
+ document.uploaded_at,
725
+ document.created_at,
726
+ document.updated_at,
727
+ ]);
728
+ if (result.rowCount !== 1)
729
+ throw new PersistenceResourceConflictError();
730
+ await client.query('DELETE FROM document_chunks WHERE document_id = $1', [document.id]);
731
+ for (const chunk of aggregate.chunks) {
732
+ if (chunk.document_id !== document.id) {
733
+ throw new Error('A document chunk does not belong to its aggregate');
734
+ }
735
+ await client.query(`INSERT INTO document_chunks
736
+ (id, document_id, chunk_index, content, start_char, end_char,
737
+ embedding, created_at)
738
+ VALUES ($1, $2, $3, $4, $5, $6, NULL, $7)`, [
739
+ chunk.id,
740
+ chunk.document_id,
741
+ chunk.chunk_index,
742
+ chunk.content,
743
+ chunk.start_char,
744
+ chunk.end_char,
745
+ chunk.created_at,
746
+ ]);
747
+ }
748
+ }
749
+ },
750
+ // Every owner-scoped archive and preference mutation takes the users row
751
+ // lock first. READ COMMITTED lets a transaction that waited for that
752
+ // lock reread the preceding writer's committed preferences before merge.
753
+ {
754
+ isolationLevel: 'read committed',
755
+ beforeCommit: plan.assertCanCommit,
756
+ });
757
+ }
758
+ }
759
+ export const createPostgresResourceRepositories = (database) => ({
760
+ chatSessions: new PostgresChatSessionRepository(database),
761
+ knowledgeCollections: new PostgresKnowledgeCollectionRepository(database),
762
+ notes: new PostgresNoteRepository(database),
763
+ sessionFolders: new PostgresSessionFolderRepository(database),
764
+ preferences: new PostgresPreferenceRepository(database),
765
+ systemSettings: new PostgresSystemSettingRepository(database),
766
+ archive: new PostgresDataArchiveRepository(database),
767
+ });
768
+ /** Create transaction-scoped repositories over one pinned pooled client. */
769
+ export const createPostgresTransactionalResourceRepositories = (database, client) => {
770
+ const transactionDatabase = {
771
+ query: client.query.bind(client),
772
+ transaction: async (operation) => operation(client),
773
+ };
774
+ return createPostgresResourceRepositories(transactionDatabase);
775
+ };
776
+ //# sourceMappingURL=postgresResourceRepositories.js.map