libre-webui 0.21.3 → 0.22.1

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 (945) 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 +617 -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 +83 -0
  376. package/backend/dist/platform/storage/storageFactory.d.ts.map +1 -0
  377. package/backend/dist/platform/storage/storageFactory.js +530 -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 +134 -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 +126 -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 +62 -31
  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 +833 -275
  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 +1 -1
  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 +14 -4
  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-Jtx9Amhz.js +16 -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 +18 -18
  828. package/frontend/dist/js/{ArtifactContainer-Dy2Q0iIL.js → ArtifactContainer-fZegtmva.js} +1 -1
  829. package/frontend/dist/js/{ArtifactDemoPage-K79dWshB.js → ArtifactDemoPage-BDBXYv9l.js} +1 -1
  830. package/frontend/dist/js/{ArtifactSandboxFrame-DhqLNUtY.js → ArtifactSandboxFrame-BN16NtKe.js} +3 -3
  831. package/frontend/dist/js/{ArtifactSlideOutPanel-Cl8JG7bz.js → ArtifactSlideOutPanel-x1fS85Ww.js} +1 -1
  832. package/frontend/dist/js/{Button-CTXHujOd.js → Button-BV44cTnj.js} +1 -1
  833. package/frontend/dist/js/ChatPage-C_pXh7WN.js +23 -0
  834. package/frontend/dist/js/{FirstTimeSetup-kHhRzGJ8.js → FirstTimeSetup-oRrlZnBm.js} +1 -1
  835. package/frontend/dist/js/GalleryPage-CV_vbE7X.js +1 -0
  836. package/frontend/dist/js/{HomePage-C1L8WAXL.js → HomePage-P-e7Huco.js} +1 -1
  837. package/frontend/dist/js/{LibreClawPage-Dyua8IUu.js → LibreClawPage-Cee06SUM.js} +1 -1
  838. package/frontend/dist/js/{ModelManagerModals-CuMRGUd-.js → ModelManagerModals-D7jIT3v1.js} +1 -1
  839. package/frontend/dist/js/{ModelSelector-CqHc-Ln4.js → ModelSelector-DXucbvrz.js} +1 -1
  840. package/frontend/dist/js/ModelsPage-C3_fZpMM.js +2 -0
  841. package/frontend/dist/js/NotesPage-rEIPWGIb.js +1 -0
  842. package/frontend/dist/js/{OptimizedSyntaxHighlighter-CWYUn9Oe.js → OptimizedSyntaxHighlighter-XwqZEoTf.js} +1 -1
  843. package/frontend/dist/js/{PersonasPage-D_6WBCH5.js → PersonasPage-BXtepFuD.js} +2 -2
  844. package/frontend/dist/js/PluginUsagePage-hhu8cxsu.js +1 -0
  845. package/frontend/dist/js/RichMessageContent-DkiEvdSg.js +3 -0
  846. package/frontend/dist/js/SettingsModal-BNxCtJ51.js +1 -0
  847. package/frontend/dist/js/{SettingsToggle-DLHlCDBl.js → SettingsToggle-WTa0rgvY.js} +1 -1
  848. package/frontend/dist/js/{SystemPage-BMWEet9e.js → SystemPage-BvvKFuoG.js} +1 -1
  849. package/frontend/dist/js/UserManagementPage-BccyR7si.js +1 -0
  850. package/frontend/dist/js/WorkPage-BgxrvY3I.js +6 -0
  851. package/frontend/dist/js/api-BvPDxsUQ.js +14 -0
  852. package/frontend/dist/js/appStore-DRSSjaHn.js +2 -0
  853. package/frontend/dist/js/ar-xTSvTq05.js +2 -0
  854. package/frontend/dist/js/authStore-BVykIRec.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-UPp5TV_t.js +3 -0
  858. package/frontend/dist/js/{config-DkV1ka7I.js → config-BTlPm-cZ.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-D5KP-qbw.js → estree-CfYahF_d.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-Cm9c2akd.js → html-BJsDX1UZ.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-B2u7CnKN.js → markdown-GLyuUNig.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-DalG2j6U.js → messageCodeStyles-BHddEFP1.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-Dwm1daef.js → standalone-Dh56V0YW.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-CwieSptM.js → typescript-DRy7A9w4.js} +1 -1
  890. package/frontend/dist/js/{ui-BnDZpjfc.js → ui-CuY4IifA.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-CXY69qNk.js → useTranslation-C3ei3mJq.js} +1 -1
  894. package/frontend/dist/js/{utils-BM0_0iFj.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-BOS7crs9.js → workApi-DHuYNHLf.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-BBpNbfKW.js +0 -16
  906. package/frontend/dist/assets/index-BLATyFmD.css +0 -1
  907. package/frontend/dist/js/ChatPage-BBayfMLS.js +0 -16
  908. package/frontend/dist/js/GalleryPage-By8VI39Q.js +0 -1
  909. package/frontend/dist/js/ModelsPage-ODeXhDDk.js +0 -2
  910. package/frontend/dist/js/NotesPage-CApzDjOq.js +0 -1
  911. package/frontend/dist/js/PluginUsagePage-kutS6SOd.js +0 -1
  912. package/frontend/dist/js/RichMessageContent-g6WT75Te.js +0 -3
  913. package/frontend/dist/js/SettingsModal-B7z51BCx.js +0 -1
  914. package/frontend/dist/js/UserManagementPage-D08lM51c.js +0 -1
  915. package/frontend/dist/js/WorkPage-DdVLefsK.js +0 -6
  916. package/frontend/dist/js/api-CLEmGcEh.js +0 -14
  917. package/frontend/dist/js/appStore-CGdhvp9P.js +0 -2
  918. package/frontend/dist/js/ar-BTmB2WVm.js +0 -2
  919. package/frontend/dist/js/authStore-Dh3beEOq.js +0 -4
  920. package/frontend/dist/js/bn-CQnH7YVT.js +0 -2
  921. package/frontend/dist/js/chatStore-CDeYWL_q.js +0 -3
  922. package/frontend/dist/js/cs-oTTZkQXr.js +0 -2
  923. package/frontend/dist/js/da-Br0gB6J6.js +0 -2
  924. package/frontend/dist/js/de-DE2iztTF.js +0 -2
  925. package/frontend/dist/js/es-DgthfVtl.js +0 -2
  926. package/frontend/dist/js/fr-BjxjFwPh.js +0 -2
  927. package/frontend/dist/js/hi-D1q7E-9N.js +0 -2
  928. package/frontend/dist/js/id-CDJZqLTF.js +0 -2
  929. package/frontend/dist/js/is-BU7Um_Tq.js +0 -2
  930. package/frontend/dist/js/it-CdAxr8P_.js +0 -2
  931. package/frontend/dist/js/ja-BLbQwz9u.js +0 -2
  932. package/frontend/dist/js/ko-CY5lpkAe.js +0 -2
  933. package/frontend/dist/js/markdown-core-DHnR5Hw8.js +0 -16
  934. package/frontend/dist/js/ms-tQ8AYXEQ.js +0 -2
  935. package/frontend/dist/js/nl-CRNi2oWT.js +0 -2
  936. package/frontend/dist/js/pl-CWtFRS_W.js +0 -2
  937. package/frontend/dist/js/pt-C7SPoLF8.js +0 -2
  938. package/frontend/dist/js/ru-Dz4AX8xc.js +0 -2
  939. package/frontend/dist/js/sv-ETy5-boa.js +0 -2
  940. package/frontend/dist/js/th-DpuMqvxU.js +0 -2
  941. package/frontend/dist/js/tr-C-1AYAqg.js +0 -2
  942. package/frontend/dist/js/ui-vendor-xUzKqAXI.js +0 -177
  943. package/frontend/dist/js/uk-CyS680gr.js +0 -2
  944. package/frontend/dist/js/vi-BG8HuiTz.js +0 -2
  945. package/frontend/dist/js/zh-NCs2mkHj.js +0 -2
@@ -1,28 +1,85 @@
1
1
  /*
2
2
  * Libre WebUI
3
3
  * Copyright (C) 2025 Kroonen AI, Inc.
4
- *
5
4
  * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at:
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
5
  */
17
- import { getDatabaseSafe } from '../db.js';
18
- import embeddingService from './embeddingService.js';
6
+ import crypto from 'node:crypto';
19
7
  import { v4 as uuidv4 } from 'uuid';
8
+ import { getPlatformStorageRuntime } from '../platform/storage/index.js';
9
+ import { assertPersonaMemoryStillReferenced } from '../platform/storage/personaMemoryIndexing.js';
20
10
  import { createLogger } from '../utils/logger.js';
21
- import { applyMemoryDecay, calculateEnhancedImportance, classifyMemoryType, cosineSimilarity, createConsolidatedContent, embeddingArrayToBuffer, embeddingBufferToArray, getMemoryColumnType, toPersonaMemoryEntry, } from './memoryUtils.js';
11
+ import embeddingService from './embeddingService.js';
12
+ import { applyMemoryDecay, calculateEnhancedImportance, classifyMemoryType, createConsolidatedContent, } from './memoryUtils.js';
22
13
  const logger = createLogger('memory');
14
+ const MEMORY_VECTOR_NAMESPACE = 'persona-memory';
15
+ const MEMORY_VECTOR_VERSION = 'v1';
16
+ const entryFromRecord = (record) => ({
17
+ id: record.id,
18
+ user_id: record.userId,
19
+ persona_id: record.personaId,
20
+ content: record.content,
21
+ timestamp: record.timestamp,
22
+ ...(record.context ? { context: record.context } : {}),
23
+ importance_score: record.importanceScore,
24
+ memory_type: record.memoryType,
25
+ access_count: record.accessCount,
26
+ ...(record.lastAccessed ? { last_accessed: record.lastAccessed } : {}),
27
+ decay_factor: record.decayFactor,
28
+ ...(record.consolidatedFrom
29
+ ? { consolidated_from: record.consolidatedFrom }
30
+ : {}),
31
+ });
32
+ const sourceRevision = (content) => crypto.createHash('sha256').update(content, 'utf8').digest('hex');
33
+ const deterministicMemoryId = (input) => {
34
+ const digest = crypto
35
+ .createHash('sha256')
36
+ .update(JSON.stringify([
37
+ 'libre-persona-memory-v1',
38
+ input.userId,
39
+ input.personaId,
40
+ input.content,
41
+ input.context ?? null,
42
+ input.importanceScore,
43
+ input.memoryType,
44
+ ]), 'utf8')
45
+ .digest()
46
+ .subarray(0, 16);
47
+ // RFC 9562 UUIDv8 reserves this version for application-defined hashes.
48
+ digest[6] = (digest[6] & 0x0f) | 0x80;
49
+ digest[8] = (digest[8] & 0x3f) | 0x80;
50
+ const hex = digest.toString('hex');
51
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
52
+ };
53
+ const sameMemoryIntent = (persisted, requested) => persisted.id === requested.id &&
54
+ persisted.userId === requested.userId &&
55
+ persisted.personaId === requested.personaId &&
56
+ persisted.content === requested.content &&
57
+ persisted.context === requested.context &&
58
+ persisted.memoryType === requested.memoryType;
59
+ const retainedOutcomeError = (message, cause) => {
60
+ const error = new Error(message);
61
+ Object.defineProperty(error, 'cause', {
62
+ value: cause,
63
+ enumerable: false,
64
+ });
65
+ return error;
66
+ };
67
+ const combinedOutcomeCause = (message, cause, relatedError) => {
68
+ const error = retainedOutcomeError(message, cause);
69
+ Object.defineProperty(error, 'relatedError', {
70
+ value: relatedError,
71
+ enumerable: false,
72
+ });
73
+ return error;
74
+ };
75
+ const validateImportance = (value) => {
76
+ if (!Number.isFinite(value) || value < 0 || value > 1) {
77
+ throw new Error('Memory importance must be between 0 and 1');
78
+ }
79
+ return value;
80
+ };
23
81
  export class MemoryService {
24
82
  constructor() {
25
- this.db = getDatabaseSafe();
26
83
  this.embeddingModels = [
27
84
  {
28
85
  id: 'nomic-embed-text',
@@ -48,7 +105,7 @@ export class MemoryService {
48
105
  {
49
106
  id: 'text-embedding-3-small',
50
107
  name: 'OpenAI Text Embedding 3 Small',
51
- description: "OpenAI's smaller, faster text embedding model",
108
+ description: "OpenAI's smaller, faster embedding model",
52
109
  provider: 'openai',
53
110
  dimensions: 1536,
54
111
  },
@@ -60,127 +117,22 @@ export class MemoryService {
60
117
  dimensions: 1024,
61
118
  },
62
119
  ];
63
- this.initializeTables();
64
- }
65
- /**
66
- * Ensure database is available
67
- */
68
- ensureDatabase() {
69
- if (!this.db) {
70
- throw new Error('Database not available');
71
- }
72
- return this.db;
73
120
  }
74
- initializeTables() {
75
- if (!this.db) {
76
- logger.warn('MemoryService: Database not available, skipping table initialization');
77
- return;
78
- }
79
- // Persona memories table - create with basic schema first
80
- this.db.exec(`
81
- CREATE TABLE IF NOT EXISTS persona_memories (
82
- id TEXT PRIMARY KEY,
83
- user_id TEXT NOT NULL,
84
- persona_id TEXT NOT NULL,
85
- content TEXT NOT NULL,
86
- embedding BLOB, -- Stored as binary for efficiency
87
- timestamp INTEGER NOT NULL,
88
- context TEXT,
89
- importance_score REAL DEFAULT 0.5,
90
- FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
91
- FOREIGN KEY (persona_id) REFERENCES personas(id) ON DELETE CASCADE
92
- )
93
- `);
94
- // Create basic indexes first (on columns that always exist)
95
- this.db.exec(`
96
- CREATE INDEX IF NOT EXISTS idx_persona_memories_user_persona ON persona_memories(user_id, persona_id);
97
- CREATE INDEX IF NOT EXISTS idx_persona_memories_timestamp ON persona_memories(timestamp);
98
- CREATE INDEX IF NOT EXISTS idx_persona_memories_importance ON persona_memories(importance_score);
99
- `);
100
- // Add new columns if they don't exist (migration for existing databases)
101
- // This MUST happen before creating indexes on new columns
102
- this.migrateDatabase();
103
- // Now create indexes on the new columns (after migration ensures they exist)
104
- try {
105
- this.db.exec(`
106
- CREATE INDEX IF NOT EXISTS idx_persona_memories_type ON persona_memories(memory_type);
107
- CREATE INDEX IF NOT EXISTS idx_persona_memories_last_accessed ON persona_memories(last_accessed);
108
- `);
109
- }
110
- catch (error) {
111
- // Indexes may already exist, ignore
112
- logger.warn('[MemoryService] Index creation:', error);
113
- }
114
- }
115
- /**
116
- * Migrate database to add new columns for existing tables
117
- */
118
- migrateDatabase() {
119
- if (!this.db)
120
- return;
121
- try {
122
- // Check if new columns exist and add them if not
123
- const columns = [
124
- 'memory_type',
125
- 'access_count',
126
- 'last_accessed',
127
- 'decay_factor',
128
- 'consolidated_from',
129
- ];
130
- const defaults = {
131
- memory_type: "'general'",
132
- access_count: '0',
133
- last_accessed: 'NULL',
134
- decay_factor: '1.0',
135
- consolidated_from: 'NULL',
136
- };
137
- for (const column of columns) {
138
- try {
139
- this.db.exec(`ALTER TABLE persona_memories ADD COLUMN ${column} ${getMemoryColumnType(column)} DEFAULT ${defaults[column]}`);
140
- logger.debug(`[MemoryService] Added column ${column} to persona_memories`);
141
- }
142
- catch {
143
- // Column likely already exists, ignore
144
- }
145
- }
146
- }
147
- catch (error) {
148
- logger.warn('[MemoryService] Migration check:', error);
149
- }
150
- }
151
- /**
152
- * Classify memory content into a type
153
- */
154
121
  classifyMemoryType(content) {
155
122
  return classifyMemoryType(content);
156
123
  }
157
- /**
158
- * Calculate enhanced importance score based on multiple factors
159
- */
160
124
  calculateEnhancedImportance(content, memoryType, _context) {
161
125
  return calculateEnhancedImportance(content, memoryType);
162
126
  }
163
- /**
164
- * Apply time-based decay to importance score
165
- */
166
127
  applyDecay(originalImportance, timestamp, accessCount = 0, lastAccessed) {
167
128
  return applyMemoryDecay(originalImportance, timestamp, accessCount, lastAccessed);
168
129
  }
169
- /**
170
- * Get available embedding models
171
- */
172
130
  getEmbeddingModels() {
173
- return this.embeddingModels;
131
+ return [...this.embeddingModels];
174
132
  }
175
- /**
176
- * Generate embedding for text using specified model
177
- */
178
133
  async generateEmbedding(text, model, userId) {
179
134
  try {
180
- const response = await embeddingService.generateEmbeddings({
181
- model,
182
- input: text,
183
- }, userId);
135
+ const response = await embeddingService.generateEmbeddings({ model, input: text }, userId);
184
136
  return response.embeddings[0] || null;
185
137
  }
186
138
  catch (error) {
@@ -188,513 +140,416 @@ export class MemoryService {
188
140
  return null;
189
141
  }
190
142
  }
191
- /**
192
- * Store a memory entry with embedding and automatic classification
193
- */
143
+ async indexRecord(record, embeddingModel, embedding) {
144
+ if (!embedding?.length)
145
+ return;
146
+ const platform = getPlatformStorageRuntime();
147
+ await platform.vectorStore.upsert({
148
+ actor: { userId: record.userId },
149
+ records: [
150
+ {
151
+ namespace: MEMORY_VECTOR_NAMESPACE,
152
+ id: record.id,
153
+ ownerUserId: record.userId,
154
+ resourceId: record.personaId,
155
+ model: embeddingModel,
156
+ dimensions: embedding.length,
157
+ version: MEMORY_VECTOR_VERSION,
158
+ sourceRevision: sourceRevision(record.content),
159
+ embedding,
160
+ attributes: { memoryType: record.memoryType },
161
+ },
162
+ ],
163
+ });
164
+ // Relational persona deletion and vector persistence cannot share one
165
+ // transaction. Recheck the authoritative memory row after the upsert so a
166
+ // delete that wins either side of that boundary cannot leave (or recreate)
167
+ // an orphan vector after resource.delete.v1 has already cleaned the
168
+ // persona namespace.
169
+ await assertPersonaMemoryStillReferenced(platform, record, MEMORY_VECTOR_NAMESPACE);
170
+ }
171
+ async hasAuthoritativeVector(record, embeddingModel, embedding) {
172
+ const hits = await getPlatformStorageRuntime().vectorStore.query({
173
+ actor: { userId: record.userId },
174
+ namespace: MEMORY_VECTOR_NAMESPACE,
175
+ model: embeddingModel,
176
+ dimensions: embedding.length,
177
+ version: MEMORY_VECTOR_VERSION,
178
+ embedding,
179
+ limit: 100,
180
+ minScore: 1 - 1e-6,
181
+ resourceIds: [record.personaId],
182
+ attributes: { memoryType: record.memoryType },
183
+ });
184
+ const expectedRevision = sourceRevision(record.content);
185
+ return hits.some(hit => hit.id === record.id &&
186
+ hit.ownerUserId === record.userId &&
187
+ hit.resourceId === record.personaId &&
188
+ hit.model === embeddingModel &&
189
+ hit.dimensions === embedding.length &&
190
+ hit.version === MEMORY_VECTOR_VERSION &&
191
+ hit.sourceRevision === expectedRevision &&
192
+ hit.attributes.memoryType === record.memoryType);
193
+ }
194
+ async backfillLegacy(records, embeddingModel) {
195
+ for (const record of records) {
196
+ if (!record.legacyEmbedding?.length)
197
+ continue;
198
+ await this.indexRecord(record, embeddingModel, record.legacyEmbedding);
199
+ }
200
+ }
194
201
  async storeMemory(userId, personaId, content, embeddingModel, context, importanceScore, memoryType) {
195
- const id = uuidv4();
196
- const timestamp = Date.now();
197
- // Auto-classify memory type if not provided
198
202
  const classifiedType = memoryType || this.classifyMemoryType(content);
199
- // Calculate enhanced importance if not provided
200
- const calculatedImportance = importanceScore !== undefined
201
- ? importanceScore
202
- : this.calculateEnhancedImportance(content, classifiedType, context);
203
- // Check for similar existing memories before storing
204
- const existingSimilar = await this.findSimilarMemories(userId, personaId, content, embeddingModel, 0.85 // High similarity threshold for deduplication
205
- );
206
- // If very similar memory exists, reinforce it instead of creating new
207
- if (existingSimilar.length > 0) {
208
- const mostSimilar = existingSimilar[0];
209
- logger.debug(`[MEMORY] Found similar memory (${(mostSimilar.similarity_score * 100).toFixed(1)}% similar), reinforcing instead of creating new`);
210
- await this.reinforceMemory(mostSimilar.entry.id);
211
- return mostSimilar.entry;
212
- }
213
- // Generate embedding
203
+ const calculatedImportance = validateImportance(importanceScore ??
204
+ this.calculateEnhancedImportance(content, classifiedType, context));
205
+ const normalizedContext = context || undefined;
214
206
  const embedding = await this.generateEmbedding(content, embeddingModel, userId);
215
- const db = this.ensureDatabase();
216
- const stmt = db.prepare(`
217
- INSERT INTO persona_memories (
218
- id, user_id, persona_id, content, embedding, timestamp, context, importance_score,
219
- memory_type, access_count, last_accessed, decay_factor
220
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
221
- `);
222
- stmt.run(id, userId, personaId, content, embedding ? embeddingArrayToBuffer(embedding) : null, timestamp, context || null, calculatedImportance, classifiedType, 0, // access_count
223
- null, // last_accessed
224
- 1.0 // decay_factor
225
- );
226
- logger.debug(`[MEMORY] Stored: type=${classifiedType}, importance=${calculatedImportance.toFixed(2)}, id=${id}, content="${content.substring(0, 50)}..."`);
227
- return {
228
- id,
229
- user_id: userId,
230
- persona_id: personaId,
207
+ if (embedding) {
208
+ const existing = await this.findSimilarMemories(userId, personaId, embedding, embeddingModel, 0.85);
209
+ if (existing[0]) {
210
+ await this.reinforceMemory(existing[0].entry.id, userId, personaId);
211
+ return existing[0].entry;
212
+ }
213
+ }
214
+ const requestedRecord = {
215
+ id: deterministicMemoryId({
216
+ userId,
217
+ personaId,
218
+ content,
219
+ ...(normalizedContext ? { context: normalizedContext } : {}),
220
+ importanceScore: calculatedImportance,
221
+ memoryType: classifiedType,
222
+ }),
223
+ userId,
224
+ personaId,
231
225
  content,
232
- embedding: embedding || undefined,
233
- timestamp,
234
- context,
235
- importance_score: calculatedImportance,
236
- memory_type: classifiedType,
237
- access_count: 0,
238
- decay_factor: 1.0,
226
+ timestamp: Date.now(),
227
+ ...(normalizedContext ? { context: normalizedContext } : {}),
228
+ importanceScore: calculatedImportance,
229
+ memoryType: classifiedType,
230
+ accessCount: 0,
231
+ decayFactor: 1,
239
232
  };
240
- }
241
- /**
242
- * Find similar memories (for deduplication)
243
- */
244
- async findSimilarMemories(userId, personaId, content, embeddingModel, minSimilarity) {
245
- const queryEmbedding = await this.generateEmbedding(content, embeddingModel, userId);
246
- if (!queryEmbedding)
247
- return [];
248
- const db = this.ensureDatabase();
249
- const stmt = db.prepare(`
250
- SELECT id, user_id, persona_id, content, embedding, timestamp, context, importance_score,
251
- memory_type, access_count, last_accessed, decay_factor
252
- FROM persona_memories
253
- WHERE user_id = ? AND persona_id = ? AND embedding IS NOT NULL
254
- ORDER BY timestamp DESC
255
- LIMIT 50
256
- `);
257
- const memories = stmt.all(userId, personaId);
258
- const results = [];
259
- for (const memory of memories) {
260
- if (!memory.embedding)
261
- continue;
262
- const embeddingArray = embeddingBufferToArray(memory.embedding);
263
- const similarity = cosineSimilarity(queryEmbedding, embeddingArray);
264
- if (similarity >= minSimilarity) {
265
- results.push({
266
- entry: {
267
- id: memory.id,
268
- user_id: memory.user_id,
269
- persona_id: memory.persona_id,
270
- content: memory.content,
271
- embedding: embeddingArray,
272
- timestamp: memory.timestamp,
273
- context: memory.context || undefined,
274
- importance_score: memory.importance_score,
275
- },
276
- similarity_score: similarity,
277
- relevance_rank: 0,
278
- });
233
+ const repository = getPlatformStorageRuntime().domains.memories;
234
+ let record = requestedRecord;
235
+ try {
236
+ await repository.insert(requestedRecord);
237
+ }
238
+ catch (insertError) {
239
+ let persisted;
240
+ try {
241
+ persisted = await repository.findByOwner(requestedRecord.id, userId, personaId);
242
+ }
243
+ catch (resolutionError) {
244
+ throw retainedOutcomeError('Could not resolve the persona memory insert outcome; retry with the same payload', combinedOutcomeCause('Persona memory insert and outcome resolution both failed', insertError, resolutionError));
245
+ }
246
+ if (!persisted)
247
+ throw insertError;
248
+ if (!sameMemoryIntent(persisted, requestedRecord)) {
249
+ throw retainedOutcomeError('The deterministic persona memory identifier belongs to another payload', insertError);
250
+ }
251
+ record = persisted;
252
+ }
253
+ if (embedding?.length) {
254
+ try {
255
+ await this.indexRecord(record, embeddingModel, embedding);
256
+ }
257
+ catch (indexError) {
258
+ let persisted;
259
+ try {
260
+ persisted = await repository.findByOwner(record.id, userId, personaId);
261
+ }
262
+ catch (resolutionError) {
263
+ throw retainedOutcomeError('Could not resolve the persona memory vector outcome; the relational memory was retained for idempotent retry', combinedOutcomeCause('Persona memory vector publication and outcome resolution both failed', indexError, resolutionError));
264
+ }
265
+ if (!persisted) {
266
+ try {
267
+ await getPlatformStorageRuntime().vectorStore.delete({
268
+ actor: { userId },
269
+ namespace: MEMORY_VECTOR_NAMESPACE,
270
+ ids: [record.id],
271
+ });
272
+ }
273
+ catch (cleanupError) {
274
+ throw retainedOutcomeError('Persona memory disappeared during indexing and vector cleanup failed', combinedOutcomeCause('Persona memory vector publication and cleanup both failed', indexError, cleanupError));
275
+ }
276
+ throw indexError;
277
+ }
278
+ if (!sameMemoryIntent(persisted, requestedRecord)) {
279
+ throw retainedOutcomeError('The persona memory changed while its vector outcome was being resolved', indexError);
280
+ }
281
+ let committed = false;
282
+ try {
283
+ committed = await this.hasAuthoritativeVector(persisted, embeddingModel, embedding);
284
+ }
285
+ catch (resolutionError) {
286
+ throw retainedOutcomeError('Could not resolve the persona memory vector outcome; the relational memory was retained for idempotent retry', combinedOutcomeCause('Persona memory vector publication and outcome resolution both failed', indexError, resolutionError));
287
+ }
288
+ if (!committed) {
289
+ throw retainedOutcomeError('Persona memory vector publication was not confirmed; the relational memory was retained for idempotent retry', indexError);
290
+ }
291
+ // The vector may have committed after its acknowledgement was lost.
292
+ // Recheck the SQL row once more so a concurrent persona deletion still
293
+ // wins and compensates the vector before this call reports success.
294
+ await assertPersonaMemoryStillReferenced(getPlatformStorageRuntime(), persisted, MEMORY_VECTOR_NAMESPACE);
295
+ record = persisted;
279
296
  }
280
297
  }
281
- return results.sort((a, b) => b.similarity_score - a.similarity_score);
298
+ return entryFromRecord(record);
282
299
  }
283
- /**
284
- * Reinforce a memory (increases importance and access count)
285
- */
286
- async reinforceMemory(memoryId) {
287
- const db = this.ensureDatabase();
288
- const stmt = db.prepare(`
289
- UPDATE persona_memories
290
- SET access_count = COALESCE(access_count, 0) + 1,
291
- last_accessed = ?,
292
- importance_score = MIN(1.0, COALESCE(importance_score, 0.5) + 0.05)
293
- WHERE id = ?
294
- `);
295
- const result = stmt.run(Date.now(), memoryId);
296
- return result.changes > 0;
300
+ async findSimilarMemories(userId, personaId, embedding, embeddingModel, minSimilarity) {
301
+ const repository = getPlatformStorageRuntime().domains.memories;
302
+ const records = await repository.listByOwner(userId, personaId, {
303
+ limit: 100,
304
+ });
305
+ await this.backfillLegacy(records, embeddingModel);
306
+ const byId = new Map(records.map(record => [record.id, record]));
307
+ const hits = await getPlatformStorageRuntime().vectorStore.query({
308
+ actor: { userId },
309
+ namespace: MEMORY_VECTOR_NAMESPACE,
310
+ model: embeddingModel,
311
+ dimensions: embedding.length,
312
+ version: MEMORY_VECTOR_VERSION,
313
+ embedding,
314
+ limit: 50,
315
+ minScore: minSimilarity,
316
+ resourceIds: [personaId],
317
+ });
318
+ return hits.flatMap((hit, index) => {
319
+ const record = byId.get(hit.id);
320
+ return record
321
+ ? [
322
+ {
323
+ entry: entryFromRecord(record),
324
+ similarity_score: hit.score,
325
+ relevance_rank: index + 1,
326
+ },
327
+ ]
328
+ : [];
329
+ });
330
+ }
331
+ async reinforceMemory(memoryId, userId, personaId) {
332
+ return getPlatformStorageRuntime().domains.memories.reinforce(memoryId, userId, personaId, Date.now());
297
333
  }
298
- /**
299
- * Search memories using semantic similarity with enhanced relevance scoring
300
- */
301
- async searchMemories(userId, personaId, query, embeddingModel, topK = 5, minSimilarity = 0.3, memoryTypes // Optional filter by memory types
302
- ) {
303
- // Generate embedding for query
304
- const queryEmbedding = await this.generateEmbedding(query, embeddingModel, userId);
305
- if (!queryEmbedding) {
334
+ async searchMemories(userId, personaId, query, embeddingModel, topK = 5, minSimilarity = 0.3, memoryTypes) {
335
+ const requestedTopK = Number.isFinite(topK) ? Math.trunc(topK) : 5;
336
+ const normalizedTopK = Math.min(Math.max(requestedTopK, 1), 100);
337
+ const embedding = await this.generateEmbedding(query, embeddingModel, userId);
338
+ if (!embedding)
306
339
  return [];
307
- }
308
- // Get all memories for this user/persona with embeddings
309
- const db = this.ensureDatabase();
310
- let sql = `
311
- SELECT id, user_id, persona_id, content, embedding, timestamp, context, importance_score,
312
- memory_type, access_count, last_accessed, decay_factor
313
- FROM persona_memories
314
- WHERE user_id = ? AND persona_id = ? AND embedding IS NOT NULL
315
- `;
316
- // Add memory type filter if specified
317
- if (memoryTypes && memoryTypes.length > 0) {
318
- sql += ` AND memory_type IN (${memoryTypes.map(() => '?').join(',')})`;
319
- }
320
- sql += ` ORDER BY timestamp DESC`;
321
- const stmt = db.prepare(sql);
322
- const params = memoryTypes
323
- ? [userId, personaId, ...memoryTypes]
324
- : [userId, personaId];
325
- const memories = stmt.all(...params);
326
- // Calculate enhanced relevance scores
327
- const results = [];
328
- for (const memory of memories) {
329
- // Convert buffer back to float array
330
- if (!memory.embedding)
331
- continue;
332
- const embeddingArray = embeddingBufferToArray(memory.embedding);
333
- const similarity = cosineSimilarity(queryEmbedding, embeddingArray);
334
- if (similarity >= minSimilarity) {
335
- // Calculate decayed importance
336
- const decayedImportance = this.applyDecay(memory.importance_score, memory.timestamp, memory.access_count || 0, memory.last_accessed || undefined);
337
- results.push({
338
- entry: {
339
- id: memory.id,
340
- user_id: memory.user_id,
341
- persona_id: memory.persona_id,
342
- content: memory.content,
343
- embedding: embeddingArray,
344
- timestamp: memory.timestamp,
345
- context: memory.context || undefined,
346
- importance_score: decayedImportance,
347
- },
348
- similarity_score: similarity,
349
- relevance_rank: 0, // Will be set after sorting
350
- });
351
- }
352
- }
353
- // Sort by composite relevance score
354
- results.sort((a, b) => {
355
- const now = Date.now();
356
- const ageA = (now - a.entry.timestamp) / (1000 * 60 * 60);
357
- const ageB = (now - b.entry.timestamp) / (1000 * 60 * 60);
358
- const recencyA = ageA < 24 ? 0.1 : ageA < 168 ? 0.05 : 0;
359
- const recencyB = ageB < 24 ? 0.1 : ageB < 168 ? 0.05 : 0;
360
- const scoreA = a.similarity_score * 0.5 +
361
- (a.entry.importance_score || 0.5) * 0.25 +
362
- recencyA;
363
- const scoreB = b.similarity_score * 0.5 +
364
- (b.entry.importance_score || 0.5) * 0.25 +
365
- recencyB;
366
- return scoreB - scoreA;
340
+ const records = await getPlatformStorageRuntime().domains.memories.listByOwner(userId, personaId, {
341
+ limit: 10000,
342
+ ...(memoryTypes?.length ? { types: memoryTypes } : {}),
367
343
  });
368
- // Update access count for returned memories
369
- const topResults = results.slice(0, topK);
370
- for (const result of topResults) {
371
- await this.updateMemoryAccess(result.entry.id);
372
- }
373
- // Set relevance ranks and return top-k
374
- return topResults.map((result, index) => ({
344
+ await this.backfillLegacy(records, embeddingModel);
345
+ const byId = new Map(records.map(record => [record.id, record]));
346
+ const hits = await getPlatformStorageRuntime().vectorStore.query({
347
+ actor: { userId },
348
+ namespace: MEMORY_VECTOR_NAMESPACE,
349
+ model: embeddingModel,
350
+ dimensions: embedding.length,
351
+ version: MEMORY_VECTOR_VERSION,
352
+ embedding,
353
+ limit: Math.min(normalizedTopK * 10, 100),
354
+ minScore: minSimilarity,
355
+ resourceIds: [personaId],
356
+ });
357
+ const now = Date.now();
358
+ const results = hits.flatMap(hit => {
359
+ const record = byId.get(hit.id);
360
+ if (!record)
361
+ return [];
362
+ const decayed = this.applyDecay(record.importanceScore, record.timestamp, record.accessCount, record.lastAccessed);
363
+ const ageHours = (now - record.timestamp) / (1000 * 60 * 60);
364
+ const recency = ageHours < 24 ? 0.1 : ageHours < 168 ? 0.05 : 0;
365
+ return [
366
+ {
367
+ entry: { ...entryFromRecord(record), importance_score: decayed },
368
+ similarity_score: hit.score,
369
+ relevance_rank: 0,
370
+ composite: hit.score * 0.5 + decayed * 0.25 + recency,
371
+ },
372
+ ];
373
+ });
374
+ results.sort((left, right) => right.composite - left.composite);
375
+ const top = results.slice(0, normalizedTopK);
376
+ await getPlatformStorageRuntime().domains.memories.markAccessed(top.map(item => item.entry.id), userId, personaId, now);
377
+ return top.map(({ composite: _composite, ...result }, index) => ({
375
378
  ...result,
376
379
  relevance_rank: index + 1,
377
380
  }));
378
381
  }
379
- /**
380
- * Update memory access tracking
381
- */
382
- async updateMemoryAccess(memoryId) {
383
- try {
384
- const db = this.ensureDatabase();
385
- const stmt = db.prepare(`
386
- UPDATE persona_memories
387
- SET access_count = COALESCE(access_count, 0) + 1,
388
- last_accessed = ?
389
- WHERE id = ?
390
- `);
391
- stmt.run(Date.now(), memoryId);
392
- }
393
- catch (error) {
394
- logger.warn('[MemoryService] Failed to update memory access:', error);
395
- }
396
- }
397
- /**
398
- * Get all memories for a persona
399
- */
400
382
  async getMemories(userId, personaId, limit = 100, offset = 0) {
401
- const db = this.ensureDatabase();
402
- const stmt = db.prepare(`
403
- SELECT id, user_id, persona_id, content, embedding, timestamp, context, importance_score
404
- FROM persona_memories
405
- WHERE user_id = ? AND persona_id = ?
406
- ORDER BY timestamp DESC
407
- LIMIT ? OFFSET ?
408
- `);
409
- const memories = stmt.all(userId, personaId, limit, offset);
410
- return memories.map(toPersonaMemoryEntry);
383
+ const records = await getPlatformStorageRuntime().domains.memories.listByOwner(userId, personaId, { limit, offset });
384
+ return records.map(entryFromRecord);
411
385
  }
412
- /**
413
- * Get memory count for a persona
414
- */
415
386
  async getMemoryCount(userId, personaId) {
416
- const db = this.ensureDatabase();
417
- const stmt = db.prepare(`
418
- SELECT COUNT(*) as count
419
- FROM persona_memories
420
- WHERE user_id = ? AND persona_id = ?
421
- `);
422
- const result = stmt.get(userId, personaId);
423
- return result.count;
387
+ return getPlatformStorageRuntime().domains.memories.countByOwner(userId, personaId);
424
388
  }
425
- /**
426
- * Get memory status for a persona
427
- */
428
389
  async getMemoryStatus(userId, personaId) {
429
- try {
430
- const memoryCount = await this.getMemoryCount(userId, personaId);
431
- // Calculate approximate memory size (rough estimate)
432
- const avgMemorySize = 1024; // Average bytes per memory entry
433
- const sizeMb = (memoryCount * avgMemorySize) / (1024 * 1024);
434
- return {
435
- memory_count: memoryCount,
436
- last_backup: undefined, // Could be implemented later
437
- size_mb: Math.round(sizeMb * 100) / 100, // Round to 2 decimal places
438
- };
439
- }
440
- catch (error) {
441
- logger.error('Error getting memory status:', error);
442
- throw new Error('Failed to get memory status');
443
- }
390
+ const count = await this.getMemoryCount(userId, personaId);
391
+ return {
392
+ memory_count: count,
393
+ last_backup: undefined,
394
+ size_mb: Math.round(((count * 1024) / (1024 * 1024)) * 100) / 100,
395
+ };
444
396
  }
445
- /**
446
- * Delete all memories for a persona (wipe)
447
- */
448
397
  async wipeMemories(userId, personaId) {
449
- const db = this.ensureDatabase();
450
- const stmt = db.prepare(`
451
- DELETE FROM persona_memories
452
- WHERE user_id = ? AND persona_id = ?
453
- `);
454
- const result = stmt.run(userId, personaId);
455
- return result.changes;
398
+ await getPlatformStorageRuntime().vectorStore.delete({
399
+ actor: { userId },
400
+ namespace: MEMORY_VECTOR_NAMESPACE,
401
+ resourceId: personaId,
402
+ });
403
+ return getPlatformStorageRuntime().domains.memories.deleteAllByOwner(userId, personaId);
456
404
  }
457
- /**
458
- * Export memories for backup
459
- */
460
405
  async exportMemories(userId, personaId) {
461
- return this.getMemories(userId, personaId, 10000); // Export all
406
+ return this.getMemories(userId, personaId, 10000, 0);
462
407
  }
463
- /**
464
- * Import memories from backup
465
- */
466
408
  async importMemories(memories, targetUserId) {
467
409
  let imported = 0;
468
- const db = this.ensureDatabase();
469
- const stmt = db.prepare(`
470
- INSERT INTO persona_memories (
471
- id, user_id, persona_id, content, embedding, timestamp, context, importance_score
472
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
473
- `);
410
+ const repository = getPlatformStorageRuntime().domains.memories;
474
411
  for (const memory of memories) {
412
+ const record = {
413
+ id: memory.id,
414
+ userId: targetUserId,
415
+ personaId: memory.persona_id,
416
+ content: memory.content,
417
+ timestamp: memory.timestamp,
418
+ ...(memory.context ? { context: memory.context } : {}),
419
+ importanceScore: validateImportance(memory.importance_score ?? 0.5),
420
+ memoryType: classifyMemoryType(memory.content),
421
+ accessCount: 0,
422
+ decayFactor: 1,
423
+ };
475
424
  try {
476
- stmt.run(memory.id, targetUserId, // Use target user ID
477
- memory.persona_id, memory.content, memory.embedding ? embeddingArrayToBuffer(memory.embedding) : null, memory.timestamp, memory.context || null, memory.importance_score || 0.5);
478
- imported++;
425
+ await repository.insert(record);
426
+ if (memory.embedding?.length) {
427
+ await this.indexRecord(record, 'legacy-import', memory.embedding);
428
+ }
429
+ imported += 1;
479
430
  }
480
431
  catch (error) {
481
432
  logger.error('Failed to import memory:', error);
482
- // Continue with next memory
483
433
  }
484
434
  }
485
435
  return imported;
486
436
  }
487
- /**
488
- * Update memory importance score
489
- */
490
- async updateMemoryImportance(memoryId, importanceScore) {
491
- const db = this.ensureDatabase();
492
- const stmt = db.prepare(`
493
- UPDATE persona_memories
494
- SET importance_score = ?
495
- WHERE id = ?
496
- `);
497
- const result = stmt.run(importanceScore, memoryId);
498
- return result.changes > 0;
437
+ async updateMemoryImportance(memoryId, userId, personaId, importanceScore) {
438
+ return getPlatformStorageRuntime().domains.memories.updateImportance(memoryId, userId, personaId, validateImportance(importanceScore));
499
439
  }
500
- /**
501
- * Delete old memories based on retention policy
502
- */
503
440
  async cleanupOldMemories(userId, personaId, retentionDays) {
504
- const cutoffTimestamp = Date.now() - retentionDays * 24 * 60 * 60 * 1000;
505
- const db = this.ensureDatabase();
506
- const stmt = db.prepare(`
507
- DELETE FROM persona_memories
508
- WHERE user_id = ? AND persona_id = ? AND timestamp < ?
509
- AND importance_score < 0.7
510
- `);
511
- const result = stmt.run(userId, personaId, cutoffTimestamp);
512
- return result.changes;
441
+ const repository = getPlatformStorageRuntime().domains.memories;
442
+ const ids = await repository.findOldLowImportanceIds(userId, personaId, Date.now() - retentionDays * 24 * 60 * 60 * 1000, 0.7);
443
+ if (ids.length) {
444
+ await getPlatformStorageRuntime().vectorStore.delete({
445
+ actor: { userId },
446
+ namespace: MEMORY_VECTOR_NAMESPACE,
447
+ ids,
448
+ });
449
+ await repository.deleteIds(ids, userId, personaId);
450
+ }
451
+ return ids.length;
513
452
  }
514
- /**
515
- * Consolidate similar memories to reduce redundancy and save space
516
- * This merges memories with high similarity into a single, more comprehensive memory
517
- */
518
453
  async consolidateMemories(userId, personaId, embeddingModel, similarityThreshold = 0.8) {
519
- const db = this.ensureDatabase();
454
+ const repository = getPlatformStorageRuntime().domains.memories;
455
+ const records = await repository.listByOwner(userId, personaId, {
456
+ limit: 10000,
457
+ });
458
+ const remaining = new Map(records.map(record => [record.id, record]));
520
459
  let consolidated = 0;
521
460
  let deleted = 0;
522
- try {
523
- // Get all memories with embeddings
524
- const stmt = db.prepare(`
525
- SELECT id, content, embedding, timestamp, importance_score, memory_type, access_count
526
- FROM persona_memories
527
- WHERE user_id = ? AND persona_id = ? AND embedding IS NOT NULL
528
- ORDER BY importance_score DESC, timestamp DESC
529
- `);
530
- const memories = stmt.all(userId, personaId);
531
- const processedIds = new Set();
532
- const toDelete = [];
533
- for (let i = 0; i < memories.length; i++) {
534
- const memory = memories[i];
535
- if (processedIds.has(memory.id))
536
- continue;
537
- const embeddingA = embeddingBufferToArray(memory.embedding);
538
- const similarMemories = [];
539
- // Find similar memories
540
- for (let j = i + 1; j < memories.length; j++) {
541
- const other = memories[j];
542
- if (processedIds.has(other.id))
543
- continue;
544
- const embeddingB = embeddingBufferToArray(other.embedding);
545
- const similarity = cosineSimilarity(embeddingA, embeddingB);
546
- if (similarity >= similarityThreshold) {
547
- similarMemories.push(other);
548
- processedIds.add(other.id);
549
- }
550
- }
551
- // If we found similar memories, consolidate them
552
- if (similarMemories.length > 0) {
553
- processedIds.add(memory.id);
554
- // Create consolidated content
555
- const allContent = [
556
- memory.content,
557
- ...similarMemories.map(m => m.content),
558
- ];
559
- const consolidatedContent = createConsolidatedContent(allContent);
560
- // Calculate combined importance (weighted average with boost)
561
- const allImportances = [
562
- memory.importance_score,
563
- ...similarMemories.map(m => m.importance_score),
564
- ];
565
- const avgImportance = allImportances.reduce((a, b) => a + b, 0) / allImportances.length;
566
- const consolidatedImportance = Math.min(1.0, avgImportance * 1.1); // 10% boost for consolidation
567
- // Use the most common memory type
568
- const types = [
569
- memory.memory_type,
570
- ...similarMemories.map(m => m.memory_type),
571
- ].filter(Boolean);
572
- const typeCount = {};
573
- types.forEach(t => {
574
- if (t)
575
- typeCount[t] = (typeCount[t] || 0) + 1;
576
- });
577
- const consolidatedType = Object.entries(typeCount).sort((a, b) => b[1] - a[1])[0]?.[0] ||
578
- 'general';
579
- // Generate new embedding for consolidated content
580
- const newEmbedding = await this.generateEmbedding(consolidatedContent, embeddingModel, userId);
581
- // Store consolidated memory
582
- const consolidatedFromIds = [
583
- memory.id,
584
- ...similarMemories.map(m => m.id),
585
- ];
586
- const insertStmt = db.prepare(`
587
- INSERT INTO persona_memories (
588
- id, user_id, persona_id, content, embedding, timestamp, context, importance_score,
589
- memory_type, access_count, last_accessed, decay_factor, consolidated_from
590
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
591
- `);
592
- insertStmt.run(uuidv4(), userId, personaId, consolidatedContent, newEmbedding ? embeddingArrayToBuffer(newEmbedding) : null, Date.now(), `Consolidated from ${consolidatedFromIds.length} memories`, consolidatedImportance, consolidatedType, similarMemories.reduce((sum, m) => sum + (m.access_count || 0), memory.access_count || 0), Date.now(), 1.0, JSON.stringify(consolidatedFromIds));
593
- // Mark original memories for deletion
594
- toDelete.push(...consolidatedFromIds);
595
- consolidated++;
596
- }
461
+ for (const record of records) {
462
+ if (!remaining.has(record.id))
463
+ continue;
464
+ const embedding = await this.generateEmbedding(record.content, embeddingModel, userId);
465
+ if (!embedding)
466
+ continue;
467
+ await this.indexRecord(record, embeddingModel, embedding);
468
+ const similar = await this.findSimilarMemories(userId, personaId, embedding, embeddingModel, similarityThreshold);
469
+ const matches = similar
470
+ .map(item => remaining.get(item.entry.id))
471
+ .filter((item) => Boolean(item && item.id !== record.id));
472
+ if (matches.length === 0)
473
+ continue;
474
+ const group = [record, ...matches];
475
+ const content = createConsolidatedContent(group.map(item => item.content));
476
+ const importance = Math.min(1, (group.reduce((sum, item) => sum + item.importanceScore, 0) /
477
+ group.length) *
478
+ 1.1);
479
+ const combinedEmbedding = await this.generateEmbedding(content, embeddingModel, userId);
480
+ const combinedRecord = {
481
+ id: uuidv4(),
482
+ userId,
483
+ personaId,
484
+ content,
485
+ timestamp: Date.now(),
486
+ context: `Consolidated from ${group.length} memories`,
487
+ importanceScore: importance,
488
+ memoryType: record.memoryType,
489
+ accessCount: 0,
490
+ decayFactor: 1,
491
+ consolidatedFrom: group.map(item => item.id),
492
+ };
493
+ await repository.insert(combinedRecord);
494
+ try {
495
+ await this.indexRecord(combinedRecord, embeddingModel, combinedEmbedding || undefined);
597
496
  }
598
- // Delete original memories that were consolidated
599
- if (toDelete.length > 0) {
600
- const deleteStmt = db.prepare(`
601
- DELETE FROM persona_memories WHERE id IN (${toDelete.map(() => '?').join(',')})
602
- `);
603
- deleteStmt.run(...toDelete);
604
- deleted = toDelete.length;
497
+ catch (error) {
498
+ await repository.deleteIds([combinedRecord.id], userId, personaId);
499
+ throw error;
605
500
  }
606
- logger.debug(`[MEMORY] Consolidation complete: ${consolidated} groups merged, ${deleted} memories deleted`);
607
- }
608
- catch (error) {
609
- logger.error('[MEMORY] Consolidation error:', error);
501
+ const ids = group.map(item => item.id);
502
+ await getPlatformStorageRuntime().vectorStore.delete({
503
+ actor: { userId },
504
+ namespace: MEMORY_VECTOR_NAMESPACE,
505
+ ids,
506
+ });
507
+ await repository.deleteIds(ids, userId, personaId);
508
+ for (const id of ids)
509
+ remaining.delete(id);
510
+ remaining.set(combinedRecord.id, combinedRecord);
511
+ consolidated += 1;
512
+ deleted += ids.length;
610
513
  }
611
514
  return { consolidated, deleted };
612
515
  }
613
- /**
614
- * Get memory statistics for a persona
615
- */
616
516
  async getMemoryStats(userId, personaId) {
617
- const db = this.ensureDatabase();
618
- // Get counts by type
619
- const typeStmt = db.prepare(`
620
- SELECT memory_type, COUNT(*) as count
621
- FROM persona_memories
622
- WHERE user_id = ? AND persona_id = ?
623
- GROUP BY memory_type
624
- `);
625
- const typeCounts = typeStmt.all(userId, personaId);
626
- // Get aggregate stats
627
- const statsStmt = db.prepare(`
628
- SELECT
629
- COUNT(*) as total_count,
630
- AVG(importance_score) as avg_importance,
631
- MIN(timestamp) as oldest_memory,
632
- MAX(timestamp) as newest_memory,
633
- SUM(COALESCE(access_count, 0)) as total_accesses
634
- FROM persona_memories
635
- WHERE user_id = ? AND persona_id = ?
636
- `);
637
- const stats = statsStmt.get(userId, personaId);
638
- const byType = {};
639
- typeCounts.forEach(({ memory_type, count }) => {
640
- byType[memory_type || 'general'] = count;
641
- });
517
+ const stats = await getPlatformStorageRuntime().domains.memories.statistics(userId, personaId);
642
518
  return {
643
- total_count: stats.total_count,
644
- by_type: byType,
645
- avg_importance: stats.avg_importance || 0.5,
646
- oldest_memory: stats.oldest_memory,
647
- newest_memory: stats.newest_memory,
648
- total_accesses: stats.total_accesses || 0,
519
+ total_count: stats.totalCount,
520
+ by_type: stats.byType,
521
+ avg_importance: stats.averageImportance,
522
+ oldest_memory: stats.oldestMemory,
523
+ newest_memory: stats.newestMemory,
524
+ total_accesses: stats.totalAccesses,
649
525
  };
650
526
  }
651
- /**
652
- * Apply decay to all memories (should be called periodically)
653
- */
654
527
  async applyGlobalDecay(userId, personaId) {
655
- const db = this.ensureDatabase();
656
- // Get all memories
657
- const selectStmt = db.prepare(`
658
- SELECT id, importance_score, timestamp, access_count, last_accessed
659
- FROM persona_memories
660
- WHERE user_id = ? AND persona_id = ?
661
- `);
662
- const memories = selectStmt.all(userId, personaId);
528
+ const repository = getPlatformStorageRuntime().domains.memories;
529
+ const records = await repository.listByOwner(userId, personaId, {
530
+ limit: 10000,
531
+ });
663
532
  let updated = 0;
664
- const updateStmt = db.prepare(`
665
- UPDATE persona_memories
666
- SET importance_score = ?, decay_factor = ?
667
- WHERE id = ?
668
- `);
669
- for (const memory of memories) {
670
- const newImportance = this.applyDecay(memory.importance_score, memory.timestamp, memory.access_count || 0, memory.last_accessed || undefined);
671
- // Only update if importance changed significantly
672
- if (Math.abs(newImportance - memory.importance_score) > 0.01) {
673
- const decayFactor = newImportance / memory.importance_score;
674
- updateStmt.run(newImportance, decayFactor, memory.id);
675
- updated++;
676
- }
533
+ for (const record of records) {
534
+ const importance = this.applyDecay(record.importanceScore, record.timestamp, record.accessCount, record.lastAccessed);
535
+ if (Math.abs(importance - record.importanceScore) <= 0.01)
536
+ continue;
537
+ await repository.updateImportance(record.id, userId, personaId, importance, record.importanceScore === 0 ? 1 : importance / record.importanceScore);
538
+ updated += 1;
677
539
  }
678
- logger.debug(`[MEMORY] Applied decay to ${updated} memories`);
679
540
  return updated;
680
541
  }
681
- /**
682
- * Get important memories (facts, preferences, instructions) that should always be included
683
- */
684
542
  async getCoreMemories(userId, personaId, limit = 5) {
685
- const db = this.ensureDatabase();
686
- const stmt = db.prepare(`
687
- SELECT id, user_id, persona_id, content, embedding, timestamp, context, importance_score,
688
- memory_type, access_count, last_accessed
689
- FROM persona_memories
690
- WHERE user_id = ? AND persona_id = ?
691
- AND memory_type IN ('fact', 'preference', 'instruction')
692
- AND importance_score >= 0.7
693
- ORDER BY importance_score DESC, access_count DESC
694
- LIMIT ?
695
- `);
696
- const memories = stmt.all(userId, personaId, limit);
697
- return memories.map(toPersonaMemoryEntry);
543
+ const records = await getPlatformStorageRuntime().domains.memories.listByOwner(userId, personaId, {
544
+ limit: Math.min(Math.max(limit, 1), 100),
545
+ types: ['fact', 'preference', 'instruction'],
546
+ minimumImportance: 0.7,
547
+ });
548
+ return records
549
+ .sort((left, right) => right.importanceScore - left.importanceScore ||
550
+ right.accessCount - left.accessCount)
551
+ .slice(0, limit)
552
+ .map(entryFromRecord);
698
553
  }
699
554
  }
700
555
  export const memoryService = new MemoryService();