libre-webui 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/README.md +32 -22
  2. package/backend/dist/index.d.ts.map +1 -1
  3. package/backend/dist/index.js +26 -4
  4. package/backend/dist/index.js.map +1 -1
  5. package/backend/dist/middleware/auth.d.ts +7 -0
  6. package/backend/dist/middleware/auth.d.ts.map +1 -1
  7. package/backend/dist/middleware/auth.js +26 -0
  8. package/backend/dist/middleware/auth.js.map +1 -1
  9. package/backend/dist/middleware/index.d.ts +20 -0
  10. package/backend/dist/middleware/index.d.ts.map +1 -1
  11. package/backend/dist/middleware/index.js +105 -2
  12. package/backend/dist/middleware/index.js.map +1 -1
  13. package/backend/dist/models/personaModel.d.ts.map +1 -1
  14. package/backend/dist/models/personaModel.js +2 -0
  15. package/backend/dist/models/personaModel.js.map +1 -1
  16. package/backend/dist/observability/otel.d.ts +40 -0
  17. package/backend/dist/observability/otel.d.ts.map +1 -0
  18. package/backend/dist/observability/otel.js +337 -0
  19. package/backend/dist/observability/otel.js.map +1 -0
  20. package/backend/dist/observability/requestContext.d.ts +14 -0
  21. package/backend/dist/observability/requestContext.d.ts.map +1 -0
  22. package/backend/dist/observability/requestContext.js +21 -0
  23. package/backend/dist/observability/requestContext.js.map +1 -0
  24. package/backend/dist/persistence/chatGenerationTypes.d.ts +9 -0
  25. package/backend/dist/persistence/chatGenerationTypes.d.ts.map +1 -1
  26. package/backend/dist/persistence/extensionTypes.d.ts +13 -0
  27. package/backend/dist/persistence/extensionTypes.d.ts.map +1 -1
  28. package/backend/dist/persistence/extensionTypes.js.map +1 -1
  29. package/backend/dist/persistence/index.d.ts +1 -1
  30. package/backend/dist/persistence/index.d.ts.map +1 -1
  31. package/backend/dist/persistence/index.js.map +1 -1
  32. package/backend/dist/persistence/postgresAgentFoundationMigration.d.ts +9 -0
  33. package/backend/dist/persistence/postgresAgentFoundationMigration.d.ts.map +1 -0
  34. package/backend/dist/persistence/postgresAgentFoundationMigration.js +164 -0
  35. package/backend/dist/persistence/postgresAgentFoundationMigration.js.map +1 -0
  36. package/backend/dist/persistence/postgresExtensionRepositories.d.ts.map +1 -1
  37. package/backend/dist/persistence/postgresExtensionRepositories.js +46 -2
  38. package/backend/dist/persistence/postgresExtensionRepositories.js.map +1 -1
  39. package/backend/dist/persistence/postgresMediaEnterpriseOpsMigration.d.ts +10 -0
  40. package/backend/dist/persistence/postgresMediaEnterpriseOpsMigration.d.ts.map +1 -0
  41. package/backend/dist/persistence/postgresMediaEnterpriseOpsMigration.js +148 -0
  42. package/backend/dist/persistence/postgresMediaEnterpriseOpsMigration.js.map +1 -0
  43. package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -1
  44. package/backend/dist/persistence/postgresMigrationRegistry.js +10 -0
  45. package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -1
  46. package/backend/dist/persistence/postgresNotesV2Migration.d.ts +4 -0
  47. package/backend/dist/persistence/postgresNotesV2Migration.d.ts.map +1 -0
  48. package/backend/dist/persistence/postgresNotesV2Migration.js +57 -0
  49. package/backend/dist/persistence/postgresNotesV2Migration.js.map +1 -0
  50. package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -1
  51. package/backend/dist/persistence/postgresResourceRepositories.js +1646 -11
  52. package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -1
  53. package/backend/dist/persistence/postgresSkillFilesMigration.d.ts +9 -0
  54. package/backend/dist/persistence/postgresSkillFilesMigration.d.ts.map +1 -0
  55. package/backend/dist/persistence/postgresSkillFilesMigration.js +50 -0
  56. package/backend/dist/persistence/postgresSkillFilesMigration.js.map +1 -0
  57. package/backend/dist/persistence/postgresTeamCollaborationMigration.d.ts +10 -0
  58. package/backend/dist/persistence/postgresTeamCollaborationMigration.d.ts.map +1 -0
  59. package/backend/dist/persistence/postgresTeamCollaborationMigration.js +161 -0
  60. package/backend/dist/persistence/postgresTeamCollaborationMigration.js.map +1 -0
  61. package/backend/dist/persistence/resourceTypes.d.ts +541 -3
  62. package/backend/dist/persistence/resourceTypes.d.ts.map +1 -1
  63. package/backend/dist/persistence/resourceTypes.js.map +1 -1
  64. package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -1
  65. package/backend/dist/persistence/sqliteExtensionRepositories.js +26 -4
  66. package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -1
  67. package/backend/dist/persistence/sqliteMigrations.d.ts +9 -0
  68. package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -1
  69. package/backend/dist/persistence/sqliteMigrations.js +1196 -29
  70. package/backend/dist/persistence/sqliteMigrations.js.map +1 -1
  71. package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -1
  72. package/backend/dist/persistence/sqliteResourceRepositories.js +1523 -134
  73. package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -1
  74. package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -1
  75. package/backend/dist/persistence/sqliteToPostgresMigration.js +257 -3
  76. package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -1
  77. package/backend/dist/platform/jobs/domainJobContracts.d.ts +8 -0
  78. package/backend/dist/platform/jobs/domainJobContracts.d.ts.map +1 -1
  79. package/backend/dist/platform/jobs/domainJobContracts.js +8 -0
  80. package/backend/dist/platform/jobs/domainJobContracts.js.map +1 -1
  81. package/backend/dist/platform/jobs/domainJobHandlers.d.ts.map +1 -1
  82. package/backend/dist/platform/jobs/domainJobHandlers.js +310 -3
  83. package/backend/dist/platform/jobs/domainJobHandlers.js.map +1 -1
  84. package/backend/dist/platform/jobs/embeddedDurableJobWorker.d.ts.map +1 -1
  85. package/backend/dist/platform/jobs/embeddedDurableJobWorker.js +4 -2
  86. package/backend/dist/platform/jobs/embeddedDurableJobWorker.js.map +1 -1
  87. package/backend/dist/platform/jobs/postgresDurableJobWorker.d.ts.map +1 -1
  88. package/backend/dist/platform/jobs/postgresDurableJobWorker.js +4 -2
  89. package/backend/dist/platform/jobs/postgresDurableJobWorker.js.map +1 -1
  90. package/backend/dist/platform/storage/pgVectorStore.d.ts +2 -1
  91. package/backend/dist/platform/storage/pgVectorStore.d.ts.map +1 -1
  92. package/backend/dist/platform/storage/pgVectorStore.js +51 -0
  93. package/backend/dist/platform/storage/pgVectorStore.js.map +1 -1
  94. package/backend/dist/platform/storage/platformDomainRepositories.d.ts +8 -2
  95. package/backend/dist/platform/storage/platformDomainRepositories.d.ts.map +1 -1
  96. package/backend/dist/platform/storage/postgresPlatformDomainRepositories.d.ts.map +1 -1
  97. package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js +25 -4
  98. package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js.map +1 -1
  99. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts +2 -1
  100. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts.map +1 -1
  101. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js +35 -0
  102. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js.map +1 -1
  103. package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.d.ts.map +1 -1
  104. package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js +26 -3
  105. package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js.map +1 -1
  106. package/backend/dist/platform/storage/vectorStore.d.ts +14 -0
  107. package/backend/dist/platform/storage/vectorStore.d.ts.map +1 -1
  108. package/backend/dist/platform/storage/vectorStore.js.map +1 -1
  109. package/backend/dist/routes/access.d.ts.map +1 -1
  110. package/backend/dist/routes/access.js +84 -3
  111. package/backend/dist/routes/access.js.map +1 -1
  112. package/backend/dist/routes/calendar.d.ts.map +1 -1
  113. package/backend/dist/routes/calendar.js +125 -22
  114. package/backend/dist/routes/calendar.js.map +1 -1
  115. package/backend/dist/routes/channels.d.ts +3 -0
  116. package/backend/dist/routes/channels.d.ts.map +1 -0
  117. package/backend/dist/routes/channels.js +447 -0
  118. package/backend/dist/routes/channels.js.map +1 -0
  119. package/backend/dist/routes/chat.d.ts.map +1 -1
  120. package/backend/dist/routes/chat.js +195 -7
  121. package/backend/dist/routes/chat.js.map +1 -1
  122. package/backend/dist/routes/costs.d.ts +3 -0
  123. package/backend/dist/routes/costs.d.ts.map +1 -0
  124. package/backend/dist/routes/costs.js +191 -0
  125. package/backend/dist/routes/costs.js.map +1 -0
  126. package/backend/dist/routes/documents.d.ts.map +1 -1
  127. package/backend/dist/routes/documents.js +64 -21
  128. package/backend/dist/routes/documents.js.map +1 -1
  129. package/backend/dist/routes/evaluations.d.ts +3 -0
  130. package/backend/dist/routes/evaluations.d.ts.map +1 -0
  131. package/backend/dist/routes/evaluations.js +352 -0
  132. package/backend/dist/routes/evaluations.js.map +1 -0
  133. package/backend/dist/routes/imageGen.d.ts.map +1 -1
  134. package/backend/dist/routes/imageGen.js +2 -1
  135. package/backend/dist/routes/imageGen.js.map +1 -1
  136. package/backend/dist/routes/media.d.ts.map +1 -1
  137. package/backend/dist/routes/media.js +228 -7
  138. package/backend/dist/routes/media.js.map +1 -1
  139. package/backend/dist/routes/notes.d.ts.map +1 -1
  140. package/backend/dist/routes/notes.js +149 -36
  141. package/backend/dist/routes/notes.js.map +1 -1
  142. package/backend/dist/routes/notifications.d.ts +3 -0
  143. package/backend/dist/routes/notifications.d.ts.map +1 -0
  144. package/backend/dist/routes/notifications.js +213 -0
  145. package/backend/dist/routes/notifications.js.map +1 -0
  146. package/backend/dist/routes/openaiCompat.d.ts +3 -0
  147. package/backend/dist/routes/openaiCompat.d.ts.map +1 -0
  148. package/backend/dist/routes/openaiCompat.js +314 -0
  149. package/backend/dist/routes/openaiCompat.js.map +1 -0
  150. package/backend/dist/routes/personas.js +1 -1
  151. package/backend/dist/routes/personas.js.map +1 -1
  152. package/backend/dist/routes/prompts.d.ts +3 -0
  153. package/backend/dist/routes/prompts.d.ts.map +1 -0
  154. package/backend/dist/routes/prompts.js +173 -0
  155. package/backend/dist/routes/prompts.js.map +1 -0
  156. package/backend/dist/routes/search.d.ts.map +1 -1
  157. package/backend/dist/routes/search.js +29 -1
  158. package/backend/dist/routes/search.js.map +1 -1
  159. package/backend/dist/routes/skills.d.ts +3 -0
  160. package/backend/dist/routes/skills.d.ts.map +1 -0
  161. package/backend/dist/routes/skills.js +246 -0
  162. package/backend/dist/routes/skills.js.map +1 -0
  163. package/backend/dist/routes/stt.d.ts.map +1 -1
  164. package/backend/dist/routes/stt.js +2 -1
  165. package/backend/dist/routes/stt.js.map +1 -1
  166. package/backend/dist/routes/tools.d.ts +3 -0
  167. package/backend/dist/routes/tools.d.ts.map +1 -0
  168. package/backend/dist/routes/tools.js +359 -0
  169. package/backend/dist/routes/tools.js.map +1 -0
  170. package/backend/dist/routes/tts.d.ts.map +1 -1
  171. package/backend/dist/routes/tts.js +63 -8
  172. package/backend/dist/routes/tts.js.map +1 -1
  173. package/backend/dist/routes/voiceAccess.d.ts +3 -0
  174. package/backend/dist/routes/voiceAccess.d.ts.map +1 -0
  175. package/backend/dist/routes/voiceAccess.js +102 -0
  176. package/backend/dist/routes/voiceAccess.js.map +1 -0
  177. package/backend/dist/services/apiTokenService.d.ts +2 -2
  178. package/backend/dist/services/apiTokenService.d.ts.map +1 -1
  179. package/backend/dist/services/apiTokenService.js +7 -0
  180. package/backend/dist/services/apiTokenService.js.map +1 -1
  181. package/backend/dist/services/authorizationService.d.ts +8 -4
  182. package/backend/dist/services/authorizationService.d.ts.map +1 -1
  183. package/backend/dist/services/authorizationService.js +31 -1
  184. package/backend/dist/services/authorizationService.js.map +1 -1
  185. package/backend/dist/services/automationSchedulerService.d.ts.map +1 -1
  186. package/backend/dist/services/automationSchedulerService.js +33 -3
  187. package/backend/dist/services/automationSchedulerService.js.map +1 -1
  188. package/backend/dist/services/automationService.d.ts +4 -1
  189. package/backend/dist/services/automationService.d.ts.map +1 -1
  190. package/backend/dist/services/automationService.js +25 -2
  191. package/backend/dist/services/automationService.js.map +1 -1
  192. package/backend/dist/services/builtinToolsService.d.ts +20 -0
  193. package/backend/dist/services/builtinToolsService.d.ts.map +1 -0
  194. package/backend/dist/services/builtinToolsService.js +661 -0
  195. package/backend/dist/services/builtinToolsService.js.map +1 -0
  196. package/backend/dist/services/calendarService.d.ts +74 -0
  197. package/backend/dist/services/calendarService.d.ts.map +1 -0
  198. package/backend/dist/services/calendarService.js +339 -0
  199. package/backend/dist/services/calendarService.js.map +1 -0
  200. package/backend/dist/services/channelService.d.ts +195 -0
  201. package/backend/dist/services/channelService.d.ts.map +1 -0
  202. package/backend/dist/services/channelService.js +1057 -0
  203. package/backend/dist/services/channelService.js.map +1 -0
  204. package/backend/dist/services/chatRequestService.d.ts.map +1 -1
  205. package/backend/dist/services/chatRequestService.js +29 -1
  206. package/backend/dist/services/chatRequestService.js.map +1 -1
  207. package/backend/dist/services/chatService.d.ts +61 -1
  208. package/backend/dist/services/chatService.d.ts.map +1 -1
  209. package/backend/dist/services/chatService.js +218 -1
  210. package/backend/dist/services/chatService.js.map +1 -1
  211. package/backend/dist/services/chatToolRuntimeService.d.ts +55 -0
  212. package/backend/dist/services/chatToolRuntimeService.d.ts.map +1 -0
  213. package/backend/dist/services/chatToolRuntimeService.js +389 -0
  214. package/backend/dist/services/chatToolRuntimeService.js.map +1 -0
  215. package/backend/dist/services/costGovernanceService.d.ts +102 -0
  216. package/backend/dist/services/costGovernanceService.d.ts.map +1 -0
  217. package/backend/dist/services/costGovernanceService.js +463 -0
  218. package/backend/dist/services/costGovernanceService.js.map +1 -0
  219. package/backend/dist/services/dataArchiveService.d.ts +6 -0
  220. package/backend/dist/services/dataArchiveService.d.ts.map +1 -1
  221. package/backend/dist/services/dataArchiveService.js +23 -4
  222. package/backend/dist/services/dataArchiveService.js.map +1 -1
  223. package/backend/dist/services/documentService.d.ts +58 -1
  224. package/backend/dist/services/documentService.d.ts.map +1 -1
  225. package/backend/dist/services/documentService.js +289 -84
  226. package/backend/dist/services/documentService.js.map +1 -1
  227. package/backend/dist/services/durableChatGenerationService.d.ts +9 -0
  228. package/backend/dist/services/durableChatGenerationService.d.ts.map +1 -1
  229. package/backend/dist/services/durableChatGenerationService.js +152 -11
  230. package/backend/dist/services/durableChatGenerationService.js.map +1 -1
  231. package/backend/dist/services/evaluationService.d.ts +111 -0
  232. package/backend/dist/services/evaluationService.d.ts.map +1 -0
  233. package/backend/dist/services/evaluationService.js +403 -0
  234. package/backend/dist/services/evaluationService.js.map +1 -0
  235. package/backend/dist/services/galleryService.d.ts +6 -0
  236. package/backend/dist/services/galleryService.d.ts.map +1 -1
  237. package/backend/dist/services/galleryService.js +26 -0
  238. package/backend/dist/services/galleryService.js.map +1 -1
  239. package/backend/dist/services/mcpClientService.d.ts +29 -0
  240. package/backend/dist/services/mcpClientService.d.ts.map +1 -0
  241. package/backend/dist/services/mcpClientService.js +189 -0
  242. package/backend/dist/services/mcpClientService.js.map +1 -0
  243. package/backend/dist/services/noteService.d.ts +71 -0
  244. package/backend/dist/services/noteService.d.ts.map +1 -0
  245. package/backend/dist/services/noteService.js +397 -0
  246. package/backend/dist/services/noteService.js.map +1 -0
  247. package/backend/dist/services/notificationService.d.ts +55 -0
  248. package/backend/dist/services/notificationService.d.ts.map +1 -0
  249. package/backend/dist/services/notificationService.js +308 -0
  250. package/backend/dist/services/notificationService.js.map +1 -0
  251. package/backend/dist/services/openApiToolService.d.ts +38 -0
  252. package/backend/dist/services/openApiToolService.d.ts.map +1 -0
  253. package/backend/dist/services/openApiToolService.js +254 -0
  254. package/backend/dist/services/openApiToolService.js.map +1 -0
  255. package/backend/dist/services/personaService.d.ts +18 -2
  256. package/backend/dist/services/personaService.d.ts.map +1 -1
  257. package/backend/dist/services/personaService.js +113 -4
  258. package/backend/dist/services/personaService.js.map +1 -1
  259. package/backend/dist/services/pluginImageGenerationService.d.ts +19 -0
  260. package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
  261. package/backend/dist/services/pluginImageGenerationService.js +121 -0
  262. package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
  263. package/backend/dist/services/pluginService.d.ts +7 -0
  264. package/backend/dist/services/pluginService.d.ts.map +1 -1
  265. package/backend/dist/services/pluginService.js +8 -2
  266. package/backend/dist/services/pluginService.js.map +1 -1
  267. package/backend/dist/services/promptService.d.ts +74 -0
  268. package/backend/dist/services/promptService.d.ts.map +1 -0
  269. package/backend/dist/services/promptService.js +513 -0
  270. package/backend/dist/services/promptService.js.map +1 -0
  271. package/backend/dist/services/resourceGrantService.d.ts.map +1 -1
  272. package/backend/dist/services/resourceGrantService.js +62 -17
  273. package/backend/dist/services/resourceGrantService.js.map +1 -1
  274. package/backend/dist/services/searchService.d.ts +29 -0
  275. package/backend/dist/services/searchService.d.ts.map +1 -0
  276. package/backend/dist/services/searchService.js +0 -0
  277. package/backend/dist/services/searchService.js.map +1 -0
  278. package/backend/dist/services/securityAuditService.d.ts.map +1 -1
  279. package/backend/dist/services/securityAuditService.js +2 -1
  280. package/backend/dist/services/securityAuditService.js.map +1 -1
  281. package/backend/dist/services/sharedResourceAccess.d.ts +25 -0
  282. package/backend/dist/services/sharedResourceAccess.d.ts.map +1 -0
  283. package/backend/dist/services/sharedResourceAccess.js +59 -0
  284. package/backend/dist/services/sharedResourceAccess.js.map +1 -0
  285. package/backend/dist/services/skillService.d.ts +137 -0
  286. package/backend/dist/services/skillService.d.ts.map +1 -0
  287. package/backend/dist/services/skillService.js +852 -0
  288. package/backend/dist/services/skillService.js.map +1 -0
  289. package/backend/dist/services/toolAccessService.d.ts +9 -0
  290. package/backend/dist/services/toolAccessService.d.ts.map +1 -0
  291. package/backend/dist/services/toolAccessService.js +60 -0
  292. package/backend/dist/services/toolAccessService.js.map +1 -0
  293. package/backend/dist/services/toolApprovalService.d.ts +34 -0
  294. package/backend/dist/services/toolApprovalService.d.ts.map +1 -0
  295. package/backend/dist/services/toolApprovalService.js +188 -0
  296. package/backend/dist/services/toolApprovalService.js.map +1 -0
  297. package/backend/dist/services/toolGatewayService.d.ts +53 -0
  298. package/backend/dist/services/toolGatewayService.d.ts.map +1 -0
  299. package/backend/dist/services/toolGatewayService.js +249 -0
  300. package/backend/dist/services/toolGatewayService.js.map +1 -0
  301. package/backend/dist/services/toolServerService.d.ts +57 -0
  302. package/backend/dist/services/toolServerService.d.ts.map +1 -0
  303. package/backend/dist/services/toolServerService.js +521 -0
  304. package/backend/dist/services/toolServerService.js.map +1 -0
  305. package/backend/dist/services/voiceAccessService.d.ts +10 -0
  306. package/backend/dist/services/voiceAccessService.d.ts.map +1 -0
  307. package/backend/dist/services/voiceAccessService.js +74 -0
  308. package/backend/dist/services/voiceAccessService.js.map +1 -0
  309. package/backend/dist/services/voiceProfileService.d.ts +20 -0
  310. package/backend/dist/services/voiceProfileService.d.ts.map +1 -1
  311. package/backend/dist/services/voiceProfileService.js +60 -0
  312. package/backend/dist/services/voiceProfileService.js.map +1 -1
  313. package/backend/dist/storage.d.ts +28 -1
  314. package/backend/dist/storage.d.ts.map +1 -1
  315. package/backend/dist/storage.js +100 -1
  316. package/backend/dist/storage.js.map +1 -1
  317. package/backend/dist/storageMappers.d.ts +2 -2
  318. package/backend/dist/storageMappers.d.ts.map +1 -1
  319. package/backend/dist/storageMappers.js.map +1 -1
  320. package/backend/dist/types/index.d.ts +197 -2
  321. package/backend/dist/types/index.d.ts.map +1 -1
  322. package/backend/dist/types/index.js.map +1 -1
  323. package/backend/dist/types/tools.d.ts +137 -0
  324. package/backend/dist/types/tools.d.ts.map +1 -0
  325. package/backend/dist/types/tools.js +25 -0
  326. package/backend/dist/types/tools.js.map +1 -0
  327. package/backend/dist/utils/chatDocumentContext.d.ts +26 -1
  328. package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -1
  329. package/backend/dist/utils/chatDocumentContext.js +87 -18
  330. package/backend/dist/utils/chatDocumentContext.js.map +1 -1
  331. package/backend/dist/utils/documentExtraction.d.ts +69 -0
  332. package/backend/dist/utils/documentExtraction.d.ts.map +1 -0
  333. package/backend/dist/utils/documentExtraction.js +545 -0
  334. package/backend/dist/utils/documentExtraction.js.map +1 -0
  335. package/backend/dist/utils/hybridRetrieval.d.ts +34 -0
  336. package/backend/dist/utils/hybridRetrieval.d.ts.map +1 -0
  337. package/backend/dist/utils/hybridRetrieval.js +119 -0
  338. package/backend/dist/utils/hybridRetrieval.js.map +1 -0
  339. package/backend/dist/utils/icsCalendar.d.ts +27 -0
  340. package/backend/dist/utils/icsCalendar.d.ts.map +1 -0
  341. package/backend/dist/utils/icsCalendar.js +313 -0
  342. package/backend/dist/utils/icsCalendar.js.map +1 -0
  343. package/backend/dist/utils/imageEditUpload.d.ts +29 -0
  344. package/backend/dist/utils/imageEditUpload.d.ts.map +1 -0
  345. package/backend/dist/utils/imageEditUpload.js +82 -0
  346. package/backend/dist/utils/imageEditUpload.js.map +1 -0
  347. package/backend/dist/utils/logRedaction.d.ts +2 -0
  348. package/backend/dist/utils/logRedaction.d.ts.map +1 -0
  349. package/backend/dist/utils/logRedaction.js +66 -0
  350. package/backend/dist/utils/logRedaction.js.map +1 -0
  351. package/backend/dist/utils/logger.d.ts +3 -0
  352. package/backend/dist/utils/logger.d.ts.map +1 -1
  353. package/backend/dist/utils/logger.js +63 -20
  354. package/backend/dist/utils/logger.js.map +1 -1
  355. package/backend/dist/utils/pluginChatAdapter.d.ts +5 -1
  356. package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
  357. package/backend/dist/utils/pluginChatAdapter.js +83 -0
  358. package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
  359. package/backend/dist/utils/pluginDefinitionTrust.js +1 -1
  360. package/backend/dist/utils/resourceLimits.d.ts +61 -2
  361. package/backend/dist/utils/resourceLimits.d.ts.map +1 -1
  362. package/backend/dist/utils/resourceLimits.js +59 -0
  363. package/backend/dist/utils/resourceLimits.js.map +1 -1
  364. package/backend/dist/utils/toolEgress.d.ts +22 -0
  365. package/backend/dist/utils/toolEgress.d.ts.map +1 -0
  366. package/backend/dist/utils/toolEgress.js +157 -0
  367. package/backend/dist/utils/toolEgress.js.map +1 -0
  368. package/backend/dist/utils/websocketMessages.d.ts +6 -0
  369. package/backend/dist/utils/websocketMessages.d.ts.map +1 -1
  370. package/backend/dist/utils/websocketMessages.js +8 -0
  371. package/backend/dist/utils/websocketMessages.js.map +1 -1
  372. package/backend/dist/utils/zipArchive.d.ts +32 -0
  373. package/backend/dist/utils/zipArchive.d.ts.map +1 -0
  374. package/backend/dist/utils/zipArchive.js +171 -0
  375. package/backend/dist/utils/zipArchive.js.map +1 -0
  376. package/backend/dist/websocketServer.d.ts.map +1 -1
  377. package/backend/dist/websocketServer.js +142 -35
  378. package/backend/dist/websocketServer.js.map +1 -1
  379. package/backend/package.json +1 -1
  380. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  381. package/frontend/dist/assets/index-BPsH9FII.js +80 -0
  382. package/frontend/dist/assets/index-BtXF0Oxa.css +1 -0
  383. package/frontend/dist/index.html +18 -18
  384. package/frontend/dist/js/{ArtifactContainer-CpUi6ekF.js → ArtifactContainer-CIoFoMv8.js} +1 -1
  385. package/frontend/dist/js/{ArtifactDemoPage-BeNs3gHp.js → ArtifactDemoPage-D0JEIAbZ.js} +1 -1
  386. package/frontend/dist/js/{ArtifactSandboxFrame-qsj_Y3LV.js → ArtifactSandboxFrame-REazyIrx.js} +2 -2
  387. package/frontend/dist/js/ArtifactSlideOutPanel-A-i94ghF.js +1 -0
  388. package/frontend/dist/js/AutomationsPage-Dow_lbIf.js +1 -0
  389. package/frontend/dist/js/{Button-BPf_pOxH.js → Button-C0r3J9G_.js} +1 -1
  390. package/frontend/dist/js/CalendarPage-DLjasZOd.js +1 -0
  391. package/frontend/dist/js/ChannelsPage-C8hvTD7J.js +1 -0
  392. package/frontend/dist/js/ChatPage-BAgBHUES.js +16 -0
  393. package/frontend/dist/js/EvaluationsPage-Bm8FRoeX.js +2 -0
  394. package/frontend/dist/js/{FirstTimeSetup-Df0YJni3.js → FirstTimeSetup-BxJapNul.js} +1 -1
  395. package/frontend/dist/js/GalleryPage-DHz9DkK7.js +1 -0
  396. package/frontend/dist/js/HomePage-BqNy-FWX.js +1 -0
  397. package/frontend/dist/js/LibreClawPage-BDzDILjY.js +1 -0
  398. package/frontend/dist/js/{ModelManagerModals-DcLGYN3l.js → ModelManagerModals-DX9eT5r2.js} +1 -1
  399. package/frontend/dist/js/ModelSelector-ol8mK2ja.js +1 -0
  400. package/frontend/dist/js/NotesPage-DzHEx2O4.js +3 -0
  401. package/frontend/dist/js/{OptimizedSyntaxHighlighter-Dz7D1LPB.js → OptimizedSyntaxHighlighter-CZNPwN0i.js} +1 -1
  402. package/frontend/dist/js/PersonasPage-M_WKH2a9.js +13 -0
  403. package/frontend/dist/js/PluginUsagePage-Ctoka6JZ.js +1 -0
  404. package/frontend/dist/js/RichMessageContent-BqgafH4p.js +3 -0
  405. package/frontend/dist/js/SettingsModal-R9EDadAV.js +19 -0
  406. package/frontend/dist/js/{SettingsToggle-woG_WebF.js → SettingsToggle-BIVyfGjl.js} +1 -1
  407. package/frontend/dist/js/SystemPage-aOkrSuY7.js +1 -0
  408. package/frontend/dist/js/UserManagementPage-BOuaX3ay.js +1 -0
  409. package/frontend/dist/js/WorkPage-DxZISerQ.js +6 -0
  410. package/frontend/dist/js/api-6bSMtSNh.js +14 -0
  411. package/frontend/dist/js/{appStore-0JnCUlEq.js → appStore-CdObhQBb.js} +2 -2
  412. package/frontend/dist/js/ar-DT_VLBO3.js +2 -0
  413. package/frontend/dist/js/{authStore-DbMdvNgJ.js → authStore-DbqqrfZv.js} +3 -3
  414. package/frontend/dist/js/{babel-BsYoxD-7.js → babel-DSqqk5kt.js} +1 -1
  415. package/frontend/dist/js/bn-BrvEqhGA.js +2 -0
  416. package/frontend/dist/js/chatStore-DbZPJNsu.js +3 -0
  417. package/frontend/dist/js/{config-DSOYQ9a3.js → config-8KdgjtEx.js} +1 -1
  418. package/frontend/dist/js/cs-BthnM_YI.js +2 -0
  419. package/frontend/dist/js/da-DCth-6_j.js +2 -0
  420. package/frontend/dist/js/de-BBWt0gJ_.js +2 -0
  421. package/frontend/dist/js/es-DuslOPqM.js +2 -0
  422. package/frontend/dist/js/{estree-BcnBcOAx.js → estree-BU5-LV_1.js} +3 -3
  423. package/frontend/dist/js/evaluationsApi-CwZJsgeG.js +1 -0
  424. package/frontend/dist/js/fr-DZAeg46S.js +2 -0
  425. package/frontend/dist/js/hi-ijDSiY77.js +2 -0
  426. package/frontend/dist/js/{html-DkY55Jys.js → html-DeoAy2bo.js} +2 -2
  427. package/frontend/dist/js/id-BS6qS0oq.js +2 -0
  428. package/frontend/dist/js/is-CO2PMDte.js +2 -0
  429. package/frontend/dist/js/it-ChhxT4hs.js +2 -0
  430. package/frontend/dist/js/ja-cyeqUeJN.js +2 -0
  431. package/frontend/dist/js/ko-CfqHTLXj.js +2 -0
  432. package/frontend/dist/js/{markdown-IZSI9DXw.js → markdown-DOLsYkBY.js} +3 -3
  433. package/frontend/dist/js/markdown-core-BK7WVOb7.js +32 -0
  434. package/frontend/dist/js/{markdown-math-DK846gXU.js → markdown-math-e1ByS3KY.js} +5 -5
  435. package/frontend/dist/js/{messageCodeStyles-BFNR9Wv6.js → messageCodeStyles-DhVgizF-.js} +2 -2
  436. package/frontend/dist/js/ms-DZ5pACe1.js +2 -0
  437. package/frontend/dist/js/nl-BsRsnOVp.js +2 -0
  438. package/frontend/dist/js/pl-DXSTAW4M.js +2 -0
  439. package/frontend/dist/js/{postcss-BJ0okz7n.js → postcss-Bg15EcFE.js} +1 -1
  440. package/frontend/dist/js/pt-DmDx0JxB.js +2 -0
  441. package/frontend/dist/js/{react-vendor-C5yShNlM.js → react-vendor-BG_HPV6X.js} +1 -1
  442. package/frontend/dist/js/router-vendor-CbexJIsv.js +1 -0
  443. package/frontend/dist/js/ru-d2g8EWfY.js +2 -0
  444. package/frontend/dist/js/{standalone-Csw3jfJ_.js → standalone-BO5pzI8_.js} +3 -3
  445. package/frontend/dist/js/sv-CIhYUTVQ.js +2 -0
  446. package/frontend/dist/js/{syntax-highlight-3EEX6CGL.js → syntax-highlight-DcR9Vhb7.js} +3 -3
  447. package/frontend/dist/js/th-B3wSxanB.js +2 -0
  448. package/frontend/dist/js/tr-R4UGgPOY.js +2 -0
  449. package/frontend/dist/js/{typescript-CnF4UVx7.js → typescript-6GJ8APmn.js} +1 -1
  450. package/frontend/dist/js/ui-CV0LYmkM.js +2 -0
  451. package/frontend/dist/js/ui-vendor-CWjIBW-z.js +177 -0
  452. package/frontend/dist/js/uk-BzUF4Vkt.js +2 -0
  453. package/frontend/dist/js/{useTranslation-Bho4HCyg.js → useTranslation-5b5UhAc9.js} +1 -1
  454. package/frontend/dist/js/{utils-D9W1Lnkn.js → utils-BGrdX9ie.js} +1 -1
  455. package/frontend/dist/js/{utils-vendor-DWh39_3x.js → utils-vendor-9bQ62WeD.js} +1 -1
  456. package/frontend/dist/js/vi-CKc6Fg4h.js +2 -0
  457. package/frontend/dist/js/{workApi-C3uy9EDT.js → workApi-BruWTlHM.js} +3 -3
  458. package/frontend/dist/js/{yaml-DzT5hBSH.js → yaml-DUeWcOOH.js} +2 -2
  459. package/frontend/dist/js/zh-CXL-kDe8.js +2 -0
  460. package/package.json +2 -2
  461. package/plugins/openai.json +52 -9
  462. package/frontend/dist/assets/index-6o-Hc2wS.js +0 -41
  463. package/frontend/dist/assets/index-D-pM957b.css +0 -1
  464. package/frontend/dist/js/ArtifactSlideOutPanel-CSFRluWA.js +0 -1
  465. package/frontend/dist/js/AutomationsPage-KUeWoZNv.js +0 -1
  466. package/frontend/dist/js/CalendarPage-D9I972w8.js +0 -1
  467. package/frontend/dist/js/ChatPage-CmBx4oAL.js +0 -16
  468. package/frontend/dist/js/GalleryPage-bLCrdJN_.js +0 -1
  469. package/frontend/dist/js/HomePage-Uc6PEg-U.js +0 -1
  470. package/frontend/dist/js/LibreClawPage-CG63DHg1.js +0 -1
  471. package/frontend/dist/js/ModelSelector-yxJC64rM.js +0 -1
  472. package/frontend/dist/js/ModelsPage-1R_TxgmJ.js +0 -2
  473. package/frontend/dist/js/NotesPage-L65j5HoW.js +0 -1
  474. package/frontend/dist/js/PersonasPage-CKeBpHIH.js +0 -13
  475. package/frontend/dist/js/PluginUsagePage-BX1SKMbW.js +0 -1
  476. package/frontend/dist/js/RichMessageContent-DiySVYGB.js +0 -3
  477. package/frontend/dist/js/SettingsModal-68SG1uZ2.js +0 -1
  478. package/frontend/dist/js/SystemPage-CytpZiQV.js +0 -1
  479. package/frontend/dist/js/UserManagementPage-BzJBvZiS.js +0 -1
  480. package/frontend/dist/js/WorkPage-C8gr0QJe.js +0 -6
  481. package/frontend/dist/js/api-BDtqBtqw.js +0 -14
  482. package/frontend/dist/js/ar-CSpi37Gr.js +0 -2
  483. package/frontend/dist/js/bn-CyH1BeDD.js +0 -2
  484. package/frontend/dist/js/chatStore-CHQ2uINS.js +0 -3
  485. package/frontend/dist/js/cs-Cv2NfRK5.js +0 -2
  486. package/frontend/dist/js/da-D6D6IvPK.js +0 -2
  487. package/frontend/dist/js/de-BNoJJTrT.js +0 -2
  488. package/frontend/dist/js/es-kzo9C7q_.js +0 -2
  489. package/frontend/dist/js/fr-CjHYvJRp.js +0 -2
  490. package/frontend/dist/js/hi-BU98AdCQ.js +0 -2
  491. package/frontend/dist/js/id-CpdedejX.js +0 -2
  492. package/frontend/dist/js/is-Cp5dDWBH.js +0 -2
  493. package/frontend/dist/js/it-CuH_cK4U.js +0 -2
  494. package/frontend/dist/js/ja-BWXXXiHn.js +0 -2
  495. package/frontend/dist/js/ko-DQgv2M1t.js +0 -2
  496. package/frontend/dist/js/markdown-core-BmPPZiuD.js +0 -31
  497. package/frontend/dist/js/ms-DCcRoIcX.js +0 -2
  498. package/frontend/dist/js/nl-CbKR1_EU.js +0 -2
  499. package/frontend/dist/js/pl-CRyJZccn.js +0 -2
  500. package/frontend/dist/js/pt-BXYmHFGH.js +0 -2
  501. package/frontend/dist/js/router-vendor-DGFGM3EP.js +0 -1
  502. package/frontend/dist/js/ru-M9SyZG4b.js +0 -2
  503. package/frontend/dist/js/sv-DJ486LTU.js +0 -2
  504. package/frontend/dist/js/th-Ch7gKtZv.js +0 -2
  505. package/frontend/dist/js/tr-ClehWhSC.js +0 -2
  506. package/frontend/dist/js/ui-CC-K19wO.js +0 -2
  507. package/frontend/dist/js/ui-vendor-B1UgO3vd.js +0 -177
  508. package/frontend/dist/js/uk-BqAd5zHF.js +0 -2
  509. package/frontend/dist/js/vi-D9gjlDVB.js +0 -2
  510. package/frontend/dist/js/zh-DKTyHkiR.js +0 -2
@@ -60,6 +60,8 @@ export interface StoredNamedResourceRecord {
60
60
  }
61
61
  export interface KnowledgeCollectionRepository {
62
62
  listByOwner(userId: string): Promise<StoredNamedResourceRecord[]>;
63
+ /** Cross-owner read; callers must authorize before returning content. */
64
+ findById(collectionId: string): Promise<StoredNamedResourceRecord | null>;
63
65
  replace(collection: StoredNamedResourceRecord): Promise<void>;
64
66
  deleteAndDetach(collectionId: string, userId: string): Promise<boolean>;
65
67
  }
@@ -68,20 +70,50 @@ export interface StoredNoteRecord {
68
70
  user_id: string;
69
71
  title: string;
70
72
  content: string;
73
+ pinned: number;
71
74
  created_at: number;
72
75
  updated_at: number;
73
76
  }
74
77
  export interface StoredNotePatch {
75
78
  title?: string;
76
79
  content?: string;
80
+ pinned?: number;
77
81
  updated_at: number;
78
82
  }
83
+ export interface StoredNoteRevisionRecord {
84
+ id: string;
85
+ note_id: string;
86
+ title: string;
87
+ content: string;
88
+ created_at: number;
89
+ }
90
+ export interface StoredNoteAttachmentRecord {
91
+ id: string;
92
+ note_id: string;
93
+ blob_id: string;
94
+ filename: string;
95
+ content_type: string;
96
+ size: number;
97
+ created_at: number;
98
+ }
79
99
  export interface NoteRepository {
80
100
  listByOwner(userId: string, maximum: number): Promise<StoredNoteRecord[]>;
81
101
  findByOwner(noteId: string, userId: string): Promise<StoredNoteRecord | null>;
102
+ /** Cross-owner read; callers must authorize before returning content. */
103
+ findById(noteId: string): Promise<StoredNoteRecord | null>;
82
104
  replaceWithLimit(note: StoredNoteRecord, maximum: number): Promise<void>;
83
105
  patchByOwner(noteId: string, userId: string, patch: StoredNotePatch): Promise<StoredNoteRecord | null>;
106
+ /** Cross-owner patch; callers must authorize write before invoking. */
107
+ patchById(noteId: string, patch: StoredNotePatch): Promise<StoredNoteRecord | null>;
84
108
  deleteByOwner(noteId: string, userId: string): Promise<boolean>;
109
+ listRevisions(noteId: string, maximum: number): Promise<StoredNoteRevisionRecord[]>;
110
+ findRevision(revisionId: string): Promise<StoredNoteRevisionRecord | null>;
111
+ /** Inserts a revision and prunes the oldest beyond the per-note cap. */
112
+ insertRevision(revision: StoredNoteRevisionRecord, maximum: number): Promise<void>;
113
+ listAttachments(noteId: string): Promise<StoredNoteAttachmentRecord[]>;
114
+ findAttachment(attachmentId: string): Promise<StoredNoteAttachmentRecord | null>;
115
+ insertAttachmentWithLimit(attachment: StoredNoteAttachmentRecord, maximum: number): Promise<void>;
116
+ deleteAttachment(attachmentId: string): Promise<boolean>;
85
117
  }
86
118
  export interface StoredCalendarEventRecord {
87
119
  id: string;
@@ -92,16 +124,211 @@ export interface StoredCalendarEventRecord {
92
124
  end_at: number | null;
93
125
  all_day: number;
94
126
  recurrence: string | null;
127
+ calendar_id: string | null;
128
+ reminder_minutes: number | null;
129
+ last_reminded_occurrence: number | null;
95
130
  created_at: number;
96
131
  updated_at: number;
97
132
  }
133
+ export interface StoredCalendarRecord {
134
+ id: string;
135
+ user_id: string;
136
+ name: string;
137
+ color: string | null;
138
+ created_at: number;
139
+ updated_at: number;
140
+ }
141
+ export interface CalendarRepository {
142
+ listByOwner(userId: string, maximum: number): Promise<StoredCalendarRecord[]>;
143
+ findByOwner(calendarId: string, userId: string): Promise<StoredCalendarRecord | null>;
144
+ /** Cross-owner read; callers must authorize before returning content. */
145
+ findById(calendarId: string): Promise<StoredCalendarRecord | null>;
146
+ replaceWithLimit(calendar: StoredCalendarRecord, maximum: number): Promise<void>;
147
+ /** Deletes the calendar and detaches its events back to the default scope. */
148
+ deleteAndDetach(calendarId: string, userId: string): Promise<boolean>;
149
+ }
98
150
  export interface CalendarEventRepository {
99
151
  listByOwnerBetween(userId: string, from: number, to: number, maximum: number): Promise<StoredCalendarEventRecord[]>;
100
152
  listRecurringByOwner(userId: string, maximum: number): Promise<StoredCalendarEventRecord[]>;
153
+ /** Cross-owner reads for shared calendars; callers authorize per calendar. */
154
+ listByCalendarsBetween(calendarIds: readonly string[], from: number, to: number, maximum: number): Promise<StoredCalendarEventRecord[]>;
155
+ listRecurringByCalendars(calendarIds: readonly string[], maximum: number): Promise<StoredCalendarEventRecord[]>;
101
156
  findByOwner(eventId: string, userId: string): Promise<StoredCalendarEventRecord | null>;
157
+ /** Cross-owner read; callers must authorize before returning content. */
158
+ findById(eventId: string): Promise<StoredCalendarEventRecord | null>;
159
+ /** Events carrying a reminder offset, for the scheduler sweep. */
160
+ listWithReminders(maximum: number): Promise<StoredCalendarEventRecord[]>;
161
+ /**
162
+ * Record that a reminder fired for the given occurrence start. Only
163
+ * advances forward, so concurrent sweeps notify each occurrence once.
164
+ */
165
+ markReminded(eventId: string, occurrenceStart: number): Promise<boolean>;
102
166
  replaceWithLimit(event: StoredCalendarEventRecord, maximum: number): Promise<void>;
103
167
  deleteByOwner(eventId: string, userId: string): Promise<boolean>;
104
168
  }
169
+ export interface StoredChannelRecord {
170
+ id: string;
171
+ type: string;
172
+ name: string;
173
+ description: string | null;
174
+ dm_key: string | null;
175
+ created_by: string | null;
176
+ created_at: number;
177
+ updated_at: number;
178
+ archived_at: number | null;
179
+ }
180
+ export interface StoredChannelMemberRecord {
181
+ channel_id: string;
182
+ user_id: string;
183
+ role: string;
184
+ joined_at: number;
185
+ last_read_at: number;
186
+ }
187
+ export interface StoredChannelMembershipView {
188
+ channel: StoredChannelRecord;
189
+ member: StoredChannelMemberRecord;
190
+ }
191
+ export interface StoredChannelUnreadRow {
192
+ channel_id: string;
193
+ unread_count: number;
194
+ latest_message_at: number | null;
195
+ }
196
+ export interface StoredChannelMessageRecord {
197
+ id: string;
198
+ channel_id: string;
199
+ user_id: string | null;
200
+ parent_id: string | null;
201
+ author_kind: string;
202
+ model: string | null;
203
+ content: string;
204
+ metadata: string | null;
205
+ created_at: number;
206
+ updated_at: number;
207
+ edited_at: number | null;
208
+ deleted_at: number | null;
209
+ pinned_at: number | null;
210
+ pinned_by: string | null;
211
+ }
212
+ export interface StoredChannelReactionRecord {
213
+ id: string;
214
+ message_id: string;
215
+ user_id: string;
216
+ emoji: string;
217
+ created_at: number;
218
+ }
219
+ export interface StoredChannelAttachmentRecord {
220
+ id: string;
221
+ message_id: string;
222
+ channel_id: string;
223
+ blob_id: string;
224
+ filename: string;
225
+ content_type: string;
226
+ size: number;
227
+ created_by: string | null;
228
+ created_at: number;
229
+ }
230
+ export interface ChannelTimelineCursor {
231
+ created_at: number;
232
+ id: string;
233
+ }
234
+ export interface ChannelRepository {
235
+ /** Creates the channel and its owner membership atomically. */
236
+ insertWithOwner(channel: StoredChannelRecord, owner: StoredChannelMemberRecord, maximumPerUser: number): Promise<void>;
237
+ findById(channelId: string): Promise<StoredChannelRecord | null>;
238
+ findByDmKey(dmKey: string): Promise<StoredChannelRecord | null>;
239
+ listForUser(userId: string, maximum: number): Promise<StoredChannelMembershipView[]>;
240
+ listPublic(maximum: number): Promise<StoredChannelRecord[]>;
241
+ update(channel: StoredChannelRecord): Promise<void>;
242
+ delete(channelId: string): Promise<boolean>;
243
+ upsertMember(member: StoredChannelMemberRecord, maximumMembers: number): Promise<void>;
244
+ findMember(channelId: string, userId: string): Promise<StoredChannelMemberRecord | null>;
245
+ listMembers(channelId: string, maximum: number): Promise<StoredChannelMemberRecord[]>;
246
+ removeMember(channelId: string, userId: string): Promise<boolean>;
247
+ /** Advances the read cursor monotonically; never moves it backwards. */
248
+ advanceLastRead(channelId: string, userId: string, lastReadAt: number): Promise<boolean>;
249
+ /** Per-channel unread counts for every channel the user belongs to. */
250
+ unreadSummaryForUser(userId: string): Promise<StoredChannelUnreadRow[]>;
251
+ }
252
+ export interface ChannelMessageRepository {
253
+ /**
254
+ * Idempotent append: when the id already exists the stored row is
255
+ * returned unchanged and `inserted` is false, so client retries and
256
+ * duplicate deliveries never duplicate timeline entries.
257
+ */
258
+ insertIfAbsent(message: StoredChannelMessageRecord, attachments: readonly StoredChannelAttachmentRecord[], maximumPerChannel: number): Promise<{
259
+ stored: StoredChannelMessageRecord;
260
+ inserted: boolean;
261
+ }>;
262
+ findById(messageId: string): Promise<StoredChannelMessageRecord | null>;
263
+ listPage(channelId: string, options: {
264
+ before?: ChannelTimelineCursor;
265
+ after?: ChannelTimelineCursor;
266
+ parentId?: string | null;
267
+ limit: number;
268
+ }): Promise<StoredChannelMessageRecord[]>;
269
+ listThread(parentId: string, maximum: number): Promise<StoredChannelMessageRecord[]>;
270
+ countThreadReplies(parentIds: readonly string[]): Promise<Record<string, number>>;
271
+ /** Cross-owner patch; callers must authorize before invoking. */
272
+ update(message: StoredChannelMessageRecord): Promise<void>;
273
+ listPinned(channelId: string, maximum: number): Promise<StoredChannelMessageRecord[]>;
274
+ /** Recent decryptable candidates for in-process search scoring. */
275
+ listRecentForChannels(channelIds: readonly string[], maximum: number): Promise<StoredChannelMessageRecord[]>;
276
+ addReaction(reaction: StoredChannelReactionRecord, maximumPerMessage: number): Promise<boolean>;
277
+ removeReaction(messageId: string, userId: string, emoji: string): Promise<boolean>;
278
+ listReactionsForMessages(messageIds: readonly string[]): Promise<StoredChannelReactionRecord[]>;
279
+ findAttachment(attachmentId: string): Promise<StoredChannelAttachmentRecord | null>;
280
+ listAttachmentsForMessages(messageIds: readonly string[]): Promise<StoredChannelAttachmentRecord[]>;
281
+ /** Blob references of a channel's attachments, for deletion hygiene. */
282
+ listAttachmentBlobIds(channelId: string): Promise<Array<{
283
+ blob_id: string;
284
+ created_by: string | null;
285
+ }>>;
286
+ }
287
+ export interface StoredNotificationRecord {
288
+ id: string;
289
+ user_id: string;
290
+ type: string;
291
+ title: string;
292
+ body: string | null;
293
+ href: string | null;
294
+ source_key: string | null;
295
+ created_at: number;
296
+ read_at: number | null;
297
+ }
298
+ export interface NotificationRepository {
299
+ /**
300
+ * Inserts unless the (user, source_key) pair already exists; prunes the
301
+ * oldest rows beyond the per-user cap in the same transaction. Returns
302
+ * false when deduplicated.
303
+ */
304
+ insertWithLimit(notification: StoredNotificationRecord, maximumPerUser: number): Promise<boolean>;
305
+ listByOwner(userId: string, options: {
306
+ before?: number;
307
+ limit: number;
308
+ unreadOnly?: boolean;
309
+ }): Promise<StoredNotificationRecord[]>;
310
+ countUnread(userId: string): Promise<number>;
311
+ markRead(notificationId: string, userId: string, readAt: number): Promise<boolean>;
312
+ markAllRead(userId: string, readAt: number): Promise<number>;
313
+ deleteByOwner(notificationId: string, userId: string): Promise<boolean>;
314
+ }
315
+ export interface StoredWebhookTargetRecord {
316
+ id: string;
317
+ name: string;
318
+ url: string;
319
+ secret: string | null;
320
+ events: string;
321
+ enabled: number;
322
+ created_by: string | null;
323
+ created_at: number;
324
+ updated_at: number;
325
+ }
326
+ export interface WebhookTargetRepository {
327
+ list(maximum: number): Promise<StoredWebhookTargetRecord[]>;
328
+ findById(targetId: string): Promise<StoredWebhookTargetRecord | null>;
329
+ replaceWithLimit(target: StoredWebhookTargetRecord, maximum: number): Promise<void>;
330
+ delete(targetId: string): Promise<boolean>;
331
+ }
105
332
  export interface StoredAutomationRecord {
106
333
  id: string;
107
334
  user_id: string;
@@ -161,6 +388,173 @@ export interface AutomationRunRepository {
161
388
  countUnseenFinished(userId: string): Promise<number>;
162
389
  markSeenBefore(userId: string, seenAt: number): Promise<number>;
163
390
  }
391
+ export interface StoredToolServerRecord {
392
+ id: string;
393
+ user_id: string;
394
+ name: string;
395
+ description: string | null;
396
+ kind: string;
397
+ base_url: string;
398
+ spec: string | null;
399
+ spec_digest: string | null;
400
+ spec_revision: number;
401
+ auth_mode: string;
402
+ auth_header: string | null;
403
+ access_mode: string;
404
+ enabled: number;
405
+ timeout_ms: number;
406
+ max_response_bytes: number;
407
+ created_at: number;
408
+ updated_at: number;
409
+ }
410
+ export interface StoredToolServerToolRecord {
411
+ id: string;
412
+ server_id: string;
413
+ name: string;
414
+ description: string | null;
415
+ params_schema: string | null;
416
+ detail: string | null;
417
+ side_effect: number;
418
+ enabled: number;
419
+ created_at: number;
420
+ updated_at: number;
421
+ }
422
+ export interface StoredToolServerCredentialRecord {
423
+ id: string;
424
+ server_id: string;
425
+ user_id: string;
426
+ secret: string;
427
+ created_at: number;
428
+ updated_at: number;
429
+ }
430
+ export interface StoredToolApprovalRecord {
431
+ id: string;
432
+ user_id: string;
433
+ session_id: string | null;
434
+ server_id: string | null;
435
+ tool_name: string;
436
+ call_id: string | null;
437
+ arguments_digest: string | null;
438
+ scope: string;
439
+ status: string;
440
+ created_at: number;
441
+ resolved_at: number | null;
442
+ expires_at: number | null;
443
+ }
444
+ export interface ToolServerRepository {
445
+ list(maximum: number): Promise<StoredToolServerRecord[]>;
446
+ findById(serverId: string): Promise<StoredToolServerRecord | null>;
447
+ replaceWithLimit(server: StoredToolServerRecord, maximum: number): Promise<void>;
448
+ delete(serverId: string): Promise<boolean>;
449
+ }
450
+ export interface ToolServerToolRepository {
451
+ listByServer(serverId: string): Promise<StoredToolServerToolRecord[]>;
452
+ /** Re-pin a server's tool inventory atomically, preserving admin overrides by tool name. */
453
+ replaceAllForServer(serverId: string, tools: readonly StoredToolServerToolRecord[]): Promise<void>;
454
+ updateOverrides(serverId: string, toolName: string, overrides: {
455
+ enabled?: number;
456
+ side_effect?: number;
457
+ }, updatedAt: number): Promise<StoredToolServerToolRecord | null>;
458
+ }
459
+ export interface ToolServerCredentialRepository {
460
+ find(serverId: string, userId: string): Promise<StoredToolServerCredentialRecord | null>;
461
+ upsert(credential: StoredToolServerCredentialRecord): Promise<void>;
462
+ delete(serverId: string, userId: string): Promise<boolean>;
463
+ }
464
+ export interface ToolApprovalRepository {
465
+ insert(approval: StoredToolApprovalRecord): Promise<void>;
466
+ findByOwner(approvalId: string, userId: string): Promise<StoredToolApprovalRecord | null>;
467
+ /**
468
+ * Find a standing decision covering this tool: an approved `always` grant,
469
+ * or an approved `session` grant bound to the given session.
470
+ */
471
+ findStanding(userId: string, serverId: string | null, toolName: string, sessionId: string | null): Promise<StoredToolApprovalRecord | null>;
472
+ /** Resolve a pending approval exactly once; returns null when it is no longer pending. */
473
+ resolvePending(approvalId: string, userId: string, status: string, scope: string, resolvedAt: number): Promise<StoredToolApprovalRecord | null>;
474
+ listPendingByOwner(userId: string, maximum: number): Promise<StoredToolApprovalRecord[]>;
475
+ listStandingByOwner(userId: string, maximum: number): Promise<StoredToolApprovalRecord[]>;
476
+ expirePending(now: number): Promise<number>;
477
+ deleteByOwner(approvalId: string, userId: string): Promise<boolean>;
478
+ }
479
+ export interface StoredPromptRecord {
480
+ id: string;
481
+ user_id: string;
482
+ slug: string;
483
+ title: string;
484
+ description: string | null;
485
+ content: string;
486
+ variables: string | null;
487
+ tags: string | null;
488
+ version: number;
489
+ created_at: number;
490
+ updated_at: number;
491
+ }
492
+ export interface StoredPromptVersionRecord {
493
+ id: string;
494
+ prompt_id: string;
495
+ version: number;
496
+ content: string;
497
+ variables: string | null;
498
+ created_at: number;
499
+ }
500
+ export interface PromptRepository {
501
+ listByOwner(userId: string, maximum: number): Promise<StoredPromptRecord[]>;
502
+ findByOwner(promptId: string, userId: string): Promise<StoredPromptRecord | null>;
503
+ findById(promptId: string): Promise<StoredPromptRecord | null>;
504
+ findBySlug(userId: string, slug: string): Promise<StoredPromptRecord | null>;
505
+ /** Upsert the prompt and archive the given prior revision in one transaction. */
506
+ replaceWithLimit(prompt: StoredPromptRecord, maximum: number, archivedVersion: StoredPromptVersionRecord | null): Promise<void>;
507
+ listVersions(promptId: string, maximum: number): Promise<StoredPromptVersionRecord[]>;
508
+ findVersion(promptId: string, version: number): Promise<StoredPromptVersionRecord | null>;
509
+ deleteByOwner(promptId: string, userId: string): Promise<boolean>;
510
+ }
511
+ export interface StoredSkillRecord {
512
+ id: string;
513
+ user_id: string;
514
+ slug: string;
515
+ name: string;
516
+ description: string;
517
+ instructions: string;
518
+ enabled: number;
519
+ version: number;
520
+ created_at: number;
521
+ updated_at: number;
522
+ }
523
+ export interface StoredSkillVersionRecord {
524
+ id: string;
525
+ skill_id: string;
526
+ version: number;
527
+ instructions: string;
528
+ created_at: number;
529
+ }
530
+ export interface StoredSkillFileRecord {
531
+ id: string;
532
+ skill_id: string;
533
+ path: string;
534
+ content: string;
535
+ size: number;
536
+ created_at: number;
537
+ updated_at: number;
538
+ }
539
+ export interface SkillFileRepository {
540
+ listBySkill(skillId: string): Promise<StoredSkillFileRecord[]>;
541
+ find(skillId: string, path: string): Promise<StoredSkillFileRecord | null>;
542
+ upsert(file: StoredSkillFileRecord, maximumPerSkill: number): Promise<void>;
543
+ /** Replace a skill's whole bundle atomically (imports and full saves). */
544
+ replaceAllForSkill(skillId: string, files: readonly StoredSkillFileRecord[]): Promise<void>;
545
+ delete(skillId: string, path: string): Promise<boolean>;
546
+ }
547
+ export interface SkillRepository {
548
+ listByOwner(userId: string, maximum: number): Promise<StoredSkillRecord[]>;
549
+ findByOwner(skillId: string, userId: string): Promise<StoredSkillRecord | null>;
550
+ findById(skillId: string): Promise<StoredSkillRecord | null>;
551
+ findBySlug(userId: string, slug: string): Promise<StoredSkillRecord | null>;
552
+ /** Upsert the skill and archive the given prior revision in one transaction. */
553
+ replaceWithLimit(skill: StoredSkillRecord, maximum: number, archivedVersion: StoredSkillVersionRecord | null): Promise<void>;
554
+ listVersions(skillId: string, maximum: number): Promise<StoredSkillVersionRecord[]>;
555
+ findVersion(skillId: string, version: number): Promise<StoredSkillVersionRecord | null>;
556
+ deleteByOwner(skillId: string, userId: string): Promise<boolean>;
557
+ }
164
558
  export interface SessionFolderRepository {
165
559
  listByOwner(userId: string, maximum: number): Promise<StoredNamedResourceRecord[]>;
166
560
  replaceWithLimit(folder: StoredNamedResourceRecord, maximum: number): Promise<void>;
@@ -195,6 +589,13 @@ export interface SystemSettingRepository {
195
589
  }
196
590
  export type ArchiveOwnedResource = 'session' | 'session-folder' | 'note' | 'knowledge-collection' | 'document' | 'persona';
197
591
  export type ArchiveNestedResource = 'session-message' | 'document-chunk';
592
+ /**
593
+ * Resources that can carry access grants. Archive-owned resources are always
594
+ * grantable; prompts, skills, and tool servers are grantable without being
595
+ * part of the portable user archive (tool servers are instance-level, and
596
+ * prompt/skill portability uses their dedicated import/export surfaces).
597
+ */
598
+ export type GrantableResource = ArchiveOwnedResource | 'prompt' | 'skill' | 'tool-server' | 'calendar';
198
599
  export interface ArchiveNestedOwner {
199
600
  userId: string;
200
601
  parentId: string;
@@ -254,24 +655,161 @@ export interface DataArchiveApplyPlan {
254
655
  documents: StoredArchiveDocumentAggregate[];
255
656
  }
256
657
  export interface DataArchiveRepository {
257
- ownerOf(resource: ArchiveOwnedResource, id: string): Promise<string | null>;
658
+ ownerOf(resource: GrantableResource, id: string): Promise<string | null>;
258
659
  nestedOwnerOf(resource: ArchiveNestedResource, id: string): Promise<ArchiveNestedOwner | null>;
259
660
  countByOwner(resource: 'session-folder' | 'note', userId: string): Promise<number>;
260
661
  resourceDeletionReserved(resource: 'document', id: string): Promise<boolean>;
261
662
  /** Apply every included archive section in one database transaction. */
262
663
  applyImport(plan: DataArchiveApplyPlan): Promise<void>;
263
664
  }
665
+ export interface StoredModelTariffRecord {
666
+ id: string;
667
+ plugin_id: string;
668
+ model: string | null;
669
+ input_per_million: number | null;
670
+ output_per_million: number | null;
671
+ unit_price: number | null;
672
+ currency: string;
673
+ effective_from: number;
674
+ created_by: string | null;
675
+ created_at: number;
676
+ }
677
+ export interface ModelTariffRepository {
678
+ listAll(maximum: number): Promise<StoredModelTariffRecord[]>;
679
+ insert(tariff: StoredModelTariffRecord): Promise<void>;
680
+ deleteById(tariffId: string): Promise<boolean>;
681
+ }
682
+ export interface StoredUsageBudgetRecord {
683
+ id: string;
684
+ name: string;
685
+ principal_type: 'instance' | 'user' | 'group';
686
+ principal_id: string | null;
687
+ period: 'daily' | 'weekly' | 'monthly';
688
+ amount_usd: number;
689
+ mode: 'observe' | 'soft' | 'hard';
690
+ created_by: string | null;
691
+ created_at: number;
692
+ updated_at: number;
693
+ }
694
+ export interface UsageBudgetRepository {
695
+ listAll(maximum: number): Promise<StoredUsageBudgetRecord[]>;
696
+ findById(budgetId: string): Promise<StoredUsageBudgetRecord | null>;
697
+ replace(budget: StoredUsageBudgetRecord): Promise<void>;
698
+ deleteById(budgetId: string): Promise<boolean>;
699
+ }
700
+ export interface StoredMessageFeedbackRecord {
701
+ id: string;
702
+ user_id: string;
703
+ session_id: string;
704
+ message_id: string;
705
+ rating: number;
706
+ /** Plain JSON array of short topic tags. */
707
+ tags: string | null;
708
+ /** Encrypted free-text comment. */
709
+ comment: string | null;
710
+ model: string | null;
711
+ plugin_id: string | null;
712
+ /** Encrypted JSON snapshot of the rated exchange. */
713
+ snapshot: string | null;
714
+ created_at: number;
715
+ updated_at: number;
716
+ }
717
+ export interface MessageFeedbackRepository {
718
+ /** Insert or update the caller's feedback for one message. */
719
+ upsertByMessage(feedback: StoredMessageFeedbackRecord): Promise<void>;
720
+ deleteByMessage(userId: string, messageId: string): Promise<boolean>;
721
+ listByOwner(userId: string, maximum: number): Promise<StoredMessageFeedbackRecord[]>;
722
+ /** Instance-wide feedback for administrators, newest first. */
723
+ listAll(maximum: number): Promise<StoredMessageFeedbackRecord[]>;
724
+ }
725
+ export interface StoredArenaVoteRecord {
726
+ id: string;
727
+ user_id: string;
728
+ compare_group: string;
729
+ model_a: string;
730
+ model_b: string;
731
+ winner: 'a' | 'b' | 'tie' | 'both-bad';
732
+ created_at: number;
733
+ }
734
+ export interface ArenaVoteRepository {
735
+ /** Returns false when this user already voted on the comparison. */
736
+ insertOnce(vote: StoredArenaVoteRecord): Promise<boolean>;
737
+ /** Deterministic replay order (created_at, id) for rating computation. */
738
+ listAllOrdered(maximum: number): Promise<StoredArenaVoteRecord[]>;
739
+ }
740
+ export interface StoredEvalSetRecord {
741
+ id: string;
742
+ user_id: string;
743
+ name: string;
744
+ description: string | null;
745
+ /** Encrypted JSON array of evaluation items. */
746
+ items: string;
747
+ created_at: number;
748
+ updated_at: number;
749
+ }
750
+ export interface EvalSetRepository {
751
+ listByOwner(userId: string, maximum: number): Promise<StoredEvalSetRecord[]>;
752
+ findByOwner(setId: string, userId: string): Promise<StoredEvalSetRecord | null>;
753
+ replaceWithLimit(set: StoredEvalSetRecord, maximum: number): Promise<void>;
754
+ deleteByOwner(setId: string, userId: string): Promise<boolean>;
755
+ }
756
+ export interface StoredEvalRunRecord {
757
+ id: string;
758
+ set_id: string;
759
+ user_id: string;
760
+ label: string | null;
761
+ plugin_id: string | null;
762
+ model: string;
763
+ status: 'queued' | 'running' | 'completed' | 'failed' | 'cancelled';
764
+ /** Encrypted JSON array of per-item results. */
765
+ results: string | null;
766
+ error: string | null;
767
+ created_at: number;
768
+ updated_at: number;
769
+ completed_at: number | null;
770
+ }
771
+ export interface EvalRunRepository {
772
+ listByOwner(userId: string, maximum: number): Promise<StoredEvalRunRecord[]>;
773
+ listBySet(setId: string, userId: string, maximum: number): Promise<StoredEvalRunRecord[]>;
774
+ findByOwner(runId: string, userId: string): Promise<StoredEvalRunRecord | null>;
775
+ insert(run: StoredEvalRunRecord): Promise<void>;
776
+ update(runId: string, userId: string, changes: {
777
+ status: StoredEvalRunRecord['status'];
778
+ results?: string | null;
779
+ error?: string | null;
780
+ updated_at: number;
781
+ completed_at?: number | null;
782
+ }): Promise<boolean>;
783
+ }
264
784
  export interface ApplicationResourceRepositories {
265
785
  chatSessions: ChatSessionRepository;
266
786
  knowledgeCollections: KnowledgeCollectionRepository;
267
787
  notes: NoteRepository;
788
+ calendars: CalendarRepository;
268
789
  calendarEvents: CalendarEventRepository;
790
+ channels: ChannelRepository;
791
+ channelMessages: ChannelMessageRepository;
792
+ notifications: NotificationRepository;
793
+ webhookTargets: WebhookTargetRepository;
269
794
  automations: AutomationRepository;
270
795
  automationRuns: AutomationRunRepository;
796
+ toolServers: ToolServerRepository;
797
+ toolServerTools: ToolServerToolRepository;
798
+ toolServerCredentials: ToolServerCredentialRepository;
799
+ toolApprovals: ToolApprovalRepository;
800
+ prompts: PromptRepository;
801
+ skills: SkillRepository;
802
+ skillFiles: SkillFileRepository;
271
803
  sessionFolders: SessionFolderRepository;
272
804
  preferences: PreferenceRepository;
273
805
  systemSettings: SystemSettingRepository;
274
806
  archive: DataArchiveRepository;
807
+ modelTariffs: ModelTariffRepository;
808
+ usageBudgets: UsageBudgetRepository;
809
+ messageFeedback: MessageFeedbackRepository;
810
+ arenaVotes: ArenaVoteRepository;
811
+ evalSets: EvalSetRepository;
812
+ evalRuns: EvalRunRepository;
275
813
  }
276
814
  export declare class PersistenceResourceConflictError extends Error {
277
815
  constructor();
@@ -281,8 +819,8 @@ export declare class PersistenceResourceDeletionReservedError extends Error {
281
819
  constructor(resourceId: string);
282
820
  }
283
821
  export declare class PersistenceResourceLimitError extends Error {
284
- readonly resource: 'note' | 'session-folder' | 'calendar-event' | 'automation';
822
+ readonly resource: 'note' | 'session-folder' | 'calendar-event' | 'calendar' | 'automation' | 'tool-server' | 'prompt' | 'skill' | 'skill-file' | 'note-attachment' | 'channel' | 'channel-member' | 'channel-message' | 'channel-reaction' | 'notification' | 'webhook-target' | 'eval-set';
285
823
  readonly maximum: number;
286
- constructor(resource: 'note' | 'session-folder' | 'calendar-event' | 'automation', maximum: number);
824
+ constructor(resource: 'note' | 'session-folder' | 'calendar-event' | 'calendar' | 'automation' | 'tool-server' | 'prompt' | 'skill' | 'skill-file' | 'note-attachment' | 'channel' | 'channel-member' | 'channel-message' | 'channel-reaction' | 'notification' | 'webhook-target' | 'eval-set', maximum: number);
287
825
  }
288
826
  //# sourceMappingURL=resourceTypes.d.ts.map