libre-webui 0.25.0 → 0.27.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 (588) hide show
  1. package/README.md +32 -22
  2. package/backend/dist/index.d.ts.map +1 -1
  3. package/backend/dist/index.js +33 -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/postgresMfaPushRecoveryMigration.d.ts +9 -0
  44. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.d.ts.map +1 -0
  45. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.js +107 -0
  46. package/backend/dist/persistence/postgresMfaPushRecoveryMigration.js.map +1 -0
  47. package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -1
  48. package/backend/dist/persistence/postgresMigrationRegistry.js +12 -0
  49. package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -1
  50. package/backend/dist/persistence/postgresNotesV2Migration.d.ts +4 -0
  51. package/backend/dist/persistence/postgresNotesV2Migration.d.ts.map +1 -0
  52. package/backend/dist/persistence/postgresNotesV2Migration.js +57 -0
  53. package/backend/dist/persistence/postgresNotesV2Migration.js.map +1 -0
  54. package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -1
  55. package/backend/dist/persistence/postgresResourceRepositories.js +1930 -133
  56. package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -1
  57. package/backend/dist/persistence/postgresSecurityRepositories.d.ts.map +1 -1
  58. package/backend/dist/persistence/postgresSecurityRepositories.js +150 -0
  59. package/backend/dist/persistence/postgresSecurityRepositories.js.map +1 -1
  60. package/backend/dist/persistence/postgresSkillFilesMigration.d.ts +9 -0
  61. package/backend/dist/persistence/postgresSkillFilesMigration.d.ts.map +1 -0
  62. package/backend/dist/persistence/postgresSkillFilesMigration.js +50 -0
  63. package/backend/dist/persistence/postgresSkillFilesMigration.js.map +1 -0
  64. package/backend/dist/persistence/postgresTeamCollaborationMigration.d.ts +10 -0
  65. package/backend/dist/persistence/postgresTeamCollaborationMigration.d.ts.map +1 -0
  66. package/backend/dist/persistence/postgresTeamCollaborationMigration.js +161 -0
  67. package/backend/dist/persistence/postgresTeamCollaborationMigration.js.map +1 -0
  68. package/backend/dist/persistence/resourceTypes.d.ts +600 -3
  69. package/backend/dist/persistence/resourceTypes.d.ts.map +1 -1
  70. package/backend/dist/persistence/resourceTypes.js.map +1 -1
  71. package/backend/dist/persistence/securityTypes.d.ts +59 -0
  72. package/backend/dist/persistence/securityTypes.d.ts.map +1 -1
  73. package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -1
  74. package/backend/dist/persistence/sqliteExtensionRepositories.js +26 -4
  75. package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -1
  76. package/backend/dist/persistence/sqliteMigrations.d.ts +10 -0
  77. package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -1
  78. package/backend/dist/persistence/sqliteMigrations.js +1492 -131
  79. package/backend/dist/persistence/sqliteMigrations.js.map +1 -1
  80. package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -1
  81. package/backend/dist/persistence/sqliteResourceRepositories.js +1657 -134
  82. package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -1
  83. package/backend/dist/persistence/sqliteSecurityRepositories.d.ts.map +1 -1
  84. package/backend/dist/persistence/sqliteSecurityRepositories.js +134 -0
  85. package/backend/dist/persistence/sqliteSecurityRepositories.js.map +1 -1
  86. package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -1
  87. package/backend/dist/persistence/sqliteToPostgresMigration.js +302 -3
  88. package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -1
  89. package/backend/dist/platform/jobs/domainJobContracts.d.ts +10 -0
  90. package/backend/dist/platform/jobs/domainJobContracts.d.ts.map +1 -1
  91. package/backend/dist/platform/jobs/domainJobContracts.js +10 -0
  92. package/backend/dist/platform/jobs/domainJobContracts.js.map +1 -1
  93. package/backend/dist/platform/jobs/domainJobHandlers.d.ts.map +1 -1
  94. package/backend/dist/platform/jobs/domainJobHandlers.js +374 -4
  95. package/backend/dist/platform/jobs/domainJobHandlers.js.map +1 -1
  96. package/backend/dist/platform/jobs/embeddedDurableJobWorker.d.ts.map +1 -1
  97. package/backend/dist/platform/jobs/embeddedDurableJobWorker.js +4 -2
  98. package/backend/dist/platform/jobs/embeddedDurableJobWorker.js.map +1 -1
  99. package/backend/dist/platform/jobs/postgresDurableJobWorker.d.ts.map +1 -1
  100. package/backend/dist/platform/jobs/postgresDurableJobWorker.js +4 -2
  101. package/backend/dist/platform/jobs/postgresDurableJobWorker.js.map +1 -1
  102. package/backend/dist/platform/storage/pgVectorStore.d.ts +2 -1
  103. package/backend/dist/platform/storage/pgVectorStore.d.ts.map +1 -1
  104. package/backend/dist/platform/storage/pgVectorStore.js +51 -0
  105. package/backend/dist/platform/storage/pgVectorStore.js.map +1 -1
  106. package/backend/dist/platform/storage/platformDomainRepositories.d.ts +8 -2
  107. package/backend/dist/platform/storage/platformDomainRepositories.d.ts.map +1 -1
  108. package/backend/dist/platform/storage/postgresPlatformDomainRepositories.d.ts.map +1 -1
  109. package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js +25 -4
  110. package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js.map +1 -1
  111. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts +2 -1
  112. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts.map +1 -1
  113. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js +35 -0
  114. package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js.map +1 -1
  115. package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.d.ts.map +1 -1
  116. package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js +26 -3
  117. package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js.map +1 -1
  118. package/backend/dist/platform/storage/vectorStore.d.ts +14 -0
  119. package/backend/dist/platform/storage/vectorStore.d.ts.map +1 -1
  120. package/backend/dist/platform/storage/vectorStore.js.map +1 -1
  121. package/backend/dist/routes/access.d.ts.map +1 -1
  122. package/backend/dist/routes/access.js +84 -3
  123. package/backend/dist/routes/access.js.map +1 -1
  124. package/backend/dist/routes/auth.d.ts.map +1 -1
  125. package/backend/dist/routes/auth.js +419 -1
  126. package/backend/dist/routes/auth.js.map +1 -1
  127. package/backend/dist/routes/calendar.d.ts.map +1 -1
  128. package/backend/dist/routes/calendar.js +125 -22
  129. package/backend/dist/routes/calendar.js.map +1 -1
  130. package/backend/dist/routes/channels.d.ts +3 -0
  131. package/backend/dist/routes/channels.d.ts.map +1 -0
  132. package/backend/dist/routes/channels.js +447 -0
  133. package/backend/dist/routes/channels.js.map +1 -0
  134. package/backend/dist/routes/chat.d.ts.map +1 -1
  135. package/backend/dist/routes/chat.js +195 -7
  136. package/backend/dist/routes/chat.js.map +1 -1
  137. package/backend/dist/routes/costs.d.ts +3 -0
  138. package/backend/dist/routes/costs.d.ts.map +1 -0
  139. package/backend/dist/routes/costs.js +191 -0
  140. package/backend/dist/routes/costs.js.map +1 -0
  141. package/backend/dist/routes/documents.d.ts.map +1 -1
  142. package/backend/dist/routes/documents.js +68 -21
  143. package/backend/dist/routes/documents.js.map +1 -1
  144. package/backend/dist/routes/evaluations.d.ts +3 -0
  145. package/backend/dist/routes/evaluations.d.ts.map +1 -0
  146. package/backend/dist/routes/evaluations.js +352 -0
  147. package/backend/dist/routes/evaluations.js.map +1 -0
  148. package/backend/dist/routes/imageGen.d.ts.map +1 -1
  149. package/backend/dist/routes/imageGen.js +2 -1
  150. package/backend/dist/routes/imageGen.js.map +1 -1
  151. package/backend/dist/routes/media.d.ts.map +1 -1
  152. package/backend/dist/routes/media.js +228 -7
  153. package/backend/dist/routes/media.js.map +1 -1
  154. package/backend/dist/routes/notes.d.ts.map +1 -1
  155. package/backend/dist/routes/notes.js +149 -36
  156. package/backend/dist/routes/notes.js.map +1 -1
  157. package/backend/dist/routes/notifications.d.ts +3 -0
  158. package/backend/dist/routes/notifications.d.ts.map +1 -0
  159. package/backend/dist/routes/notifications.js +213 -0
  160. package/backend/dist/routes/notifications.js.map +1 -0
  161. package/backend/dist/routes/openaiCompat.d.ts +3 -0
  162. package/backend/dist/routes/openaiCompat.d.ts.map +1 -0
  163. package/backend/dist/routes/openaiCompat.js +314 -0
  164. package/backend/dist/routes/openaiCompat.js.map +1 -0
  165. package/backend/dist/routes/personas.js +1 -1
  166. package/backend/dist/routes/personas.js.map +1 -1
  167. package/backend/dist/routes/prompts.d.ts +3 -0
  168. package/backend/dist/routes/prompts.d.ts.map +1 -0
  169. package/backend/dist/routes/prompts.js +173 -0
  170. package/backend/dist/routes/prompts.js.map +1 -0
  171. package/backend/dist/routes/push.d.ts +3 -0
  172. package/backend/dist/routes/push.d.ts.map +1 -0
  173. package/backend/dist/routes/push.js +105 -0
  174. package/backend/dist/routes/push.js.map +1 -0
  175. package/backend/dist/routes/recovery.d.ts +3 -0
  176. package/backend/dist/routes/recovery.d.ts.map +1 -0
  177. package/backend/dist/routes/recovery.js +83 -0
  178. package/backend/dist/routes/recovery.js.map +1 -0
  179. package/backend/dist/routes/search.d.ts.map +1 -1
  180. package/backend/dist/routes/search.js +29 -1
  181. package/backend/dist/routes/search.js.map +1 -1
  182. package/backend/dist/routes/skills.d.ts +3 -0
  183. package/backend/dist/routes/skills.d.ts.map +1 -0
  184. package/backend/dist/routes/skills.js +246 -0
  185. package/backend/dist/routes/skills.js.map +1 -0
  186. package/backend/dist/routes/stt.d.ts.map +1 -1
  187. package/backend/dist/routes/stt.js +2 -1
  188. package/backend/dist/routes/stt.js.map +1 -1
  189. package/backend/dist/routes/tools.d.ts +3 -0
  190. package/backend/dist/routes/tools.d.ts.map +1 -0
  191. package/backend/dist/routes/tools.js +359 -0
  192. package/backend/dist/routes/tools.js.map +1 -0
  193. package/backend/dist/routes/tts.d.ts.map +1 -1
  194. package/backend/dist/routes/tts.js +63 -8
  195. package/backend/dist/routes/tts.js.map +1 -1
  196. package/backend/dist/routes/users.d.ts.map +1 -1
  197. package/backend/dist/routes/users.js +35 -0
  198. package/backend/dist/routes/users.js.map +1 -1
  199. package/backend/dist/routes/voiceAccess.d.ts +3 -0
  200. package/backend/dist/routes/voiceAccess.d.ts.map +1 -0
  201. package/backend/dist/routes/voiceAccess.js +102 -0
  202. package/backend/dist/routes/voiceAccess.js.map +1 -0
  203. package/backend/dist/services/apiTokenService.d.ts +2 -2
  204. package/backend/dist/services/apiTokenService.d.ts.map +1 -1
  205. package/backend/dist/services/apiTokenService.js +7 -0
  206. package/backend/dist/services/apiTokenService.js.map +1 -1
  207. package/backend/dist/services/authService.d.ts +6 -0
  208. package/backend/dist/services/authService.d.ts.map +1 -1
  209. package/backend/dist/services/authService.js +9 -0
  210. package/backend/dist/services/authService.js.map +1 -1
  211. package/backend/dist/services/authorizationService.d.ts +8 -4
  212. package/backend/dist/services/authorizationService.d.ts.map +1 -1
  213. package/backend/dist/services/authorizationService.js +31 -1
  214. package/backend/dist/services/authorizationService.js.map +1 -1
  215. package/backend/dist/services/automationSchedulerService.d.ts.map +1 -1
  216. package/backend/dist/services/automationSchedulerService.js +40 -3
  217. package/backend/dist/services/automationSchedulerService.js.map +1 -1
  218. package/backend/dist/services/automationService.d.ts +4 -1
  219. package/backend/dist/services/automationService.d.ts.map +1 -1
  220. package/backend/dist/services/automationService.js +25 -2
  221. package/backend/dist/services/automationService.js.map +1 -1
  222. package/backend/dist/services/builtinToolsService.d.ts +20 -0
  223. package/backend/dist/services/builtinToolsService.d.ts.map +1 -0
  224. package/backend/dist/services/builtinToolsService.js +661 -0
  225. package/backend/dist/services/builtinToolsService.js.map +1 -0
  226. package/backend/dist/services/calendarService.d.ts +74 -0
  227. package/backend/dist/services/calendarService.d.ts.map +1 -0
  228. package/backend/dist/services/calendarService.js +339 -0
  229. package/backend/dist/services/calendarService.js.map +1 -0
  230. package/backend/dist/services/channelService.d.ts +195 -0
  231. package/backend/dist/services/channelService.d.ts.map +1 -0
  232. package/backend/dist/services/channelService.js +1057 -0
  233. package/backend/dist/services/channelService.js.map +1 -0
  234. package/backend/dist/services/chatRequestService.d.ts.map +1 -1
  235. package/backend/dist/services/chatRequestService.js +29 -1
  236. package/backend/dist/services/chatRequestService.js.map +1 -1
  237. package/backend/dist/services/chatService.d.ts +61 -1
  238. package/backend/dist/services/chatService.d.ts.map +1 -1
  239. package/backend/dist/services/chatService.js +218 -1
  240. package/backend/dist/services/chatService.js.map +1 -1
  241. package/backend/dist/services/chatToolRuntimeService.d.ts +55 -0
  242. package/backend/dist/services/chatToolRuntimeService.d.ts.map +1 -0
  243. package/backend/dist/services/chatToolRuntimeService.js +389 -0
  244. package/backend/dist/services/chatToolRuntimeService.js.map +1 -0
  245. package/backend/dist/services/costGovernanceService.d.ts +102 -0
  246. package/backend/dist/services/costGovernanceService.d.ts.map +1 -0
  247. package/backend/dist/services/costGovernanceService.js +463 -0
  248. package/backend/dist/services/costGovernanceService.js.map +1 -0
  249. package/backend/dist/services/dataArchiveService.d.ts +6 -0
  250. package/backend/dist/services/dataArchiveService.d.ts.map +1 -1
  251. package/backend/dist/services/dataArchiveService.js +26 -4
  252. package/backend/dist/services/dataArchiveService.js.map +1 -1
  253. package/backend/dist/services/documentMediaExtractionService.d.ts +40 -0
  254. package/backend/dist/services/documentMediaExtractionService.d.ts.map +1 -0
  255. package/backend/dist/services/documentMediaExtractionService.js +157 -0
  256. package/backend/dist/services/documentMediaExtractionService.js.map +1 -0
  257. package/backend/dist/services/documentService.d.ts +64 -1
  258. package/backend/dist/services/documentService.d.ts.map +1 -1
  259. package/backend/dist/services/documentService.js +342 -83
  260. package/backend/dist/services/documentService.js.map +1 -1
  261. package/backend/dist/services/durableChatGenerationService.d.ts +9 -0
  262. package/backend/dist/services/durableChatGenerationService.d.ts.map +1 -1
  263. package/backend/dist/services/durableChatGenerationService.js +152 -11
  264. package/backend/dist/services/durableChatGenerationService.js.map +1 -1
  265. package/backend/dist/services/encryptionService.d.ts +6 -0
  266. package/backend/dist/services/encryptionService.d.ts.map +1 -1
  267. package/backend/dist/services/encryptionService.js +12 -0
  268. package/backend/dist/services/encryptionService.js.map +1 -1
  269. package/backend/dist/services/evaluationService.d.ts +111 -0
  270. package/backend/dist/services/evaluationService.d.ts.map +1 -0
  271. package/backend/dist/services/evaluationService.js +403 -0
  272. package/backend/dist/services/evaluationService.js.map +1 -0
  273. package/backend/dist/services/galleryService.d.ts +6 -0
  274. package/backend/dist/services/galleryService.d.ts.map +1 -1
  275. package/backend/dist/services/galleryService.js +26 -0
  276. package/backend/dist/services/galleryService.js.map +1 -1
  277. package/backend/dist/services/mcpClientService.d.ts +29 -0
  278. package/backend/dist/services/mcpClientService.d.ts.map +1 -0
  279. package/backend/dist/services/mcpClientService.js +189 -0
  280. package/backend/dist/services/mcpClientService.js.map +1 -0
  281. package/backend/dist/services/mfaService.d.ts +64 -0
  282. package/backend/dist/services/mfaService.d.ts.map +1 -0
  283. package/backend/dist/services/mfaService.js +263 -0
  284. package/backend/dist/services/mfaService.js.map +1 -0
  285. package/backend/dist/services/noteService.d.ts +71 -0
  286. package/backend/dist/services/noteService.d.ts.map +1 -0
  287. package/backend/dist/services/noteService.js +397 -0
  288. package/backend/dist/services/noteService.js.map +1 -0
  289. package/backend/dist/services/notificationService.d.ts +60 -0
  290. package/backend/dist/services/notificationService.d.ts.map +1 -0
  291. package/backend/dist/services/notificationService.js +340 -0
  292. package/backend/dist/services/notificationService.js.map +1 -0
  293. package/backend/dist/services/openApiToolService.d.ts +38 -0
  294. package/backend/dist/services/openApiToolService.d.ts.map +1 -0
  295. package/backend/dist/services/openApiToolService.js +254 -0
  296. package/backend/dist/services/openApiToolService.js.map +1 -0
  297. package/backend/dist/services/personaService.d.ts +18 -2
  298. package/backend/dist/services/personaService.d.ts.map +1 -1
  299. package/backend/dist/services/personaService.js +113 -4
  300. package/backend/dist/services/personaService.js.map +1 -1
  301. package/backend/dist/services/pluginImageGenerationService.d.ts +19 -0
  302. package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
  303. package/backend/dist/services/pluginImageGenerationService.js +121 -0
  304. package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
  305. package/backend/dist/services/pluginService.d.ts +7 -0
  306. package/backend/dist/services/pluginService.d.ts.map +1 -1
  307. package/backend/dist/services/pluginService.js +8 -2
  308. package/backend/dist/services/pluginService.js.map +1 -1
  309. package/backend/dist/services/preferencesService.d.ts +1 -1
  310. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  311. package/backend/dist/services/preferencesService.js +1 -0
  312. package/backend/dist/services/preferencesService.js.map +1 -1
  313. package/backend/dist/services/promptService.d.ts +74 -0
  314. package/backend/dist/services/promptService.d.ts.map +1 -0
  315. package/backend/dist/services/promptService.js +513 -0
  316. package/backend/dist/services/promptService.js.map +1 -0
  317. package/backend/dist/services/recoveryDrillService.d.ts +57 -0
  318. package/backend/dist/services/recoveryDrillService.d.ts.map +1 -0
  319. package/backend/dist/services/recoveryDrillService.js +363 -0
  320. package/backend/dist/services/recoveryDrillService.js.map +1 -0
  321. package/backend/dist/services/resourceGrantService.d.ts.map +1 -1
  322. package/backend/dist/services/resourceGrantService.js +62 -17
  323. package/backend/dist/services/resourceGrantService.js.map +1 -1
  324. package/backend/dist/services/searchService.d.ts +29 -0
  325. package/backend/dist/services/searchService.d.ts.map +1 -0
  326. package/backend/dist/services/searchService.js +0 -0
  327. package/backend/dist/services/searchService.js.map +1 -0
  328. package/backend/dist/services/securityAuditService.d.ts.map +1 -1
  329. package/backend/dist/services/securityAuditService.js +2 -1
  330. package/backend/dist/services/securityAuditService.js.map +1 -1
  331. package/backend/dist/services/sharedResourceAccess.d.ts +25 -0
  332. package/backend/dist/services/sharedResourceAccess.d.ts.map +1 -0
  333. package/backend/dist/services/sharedResourceAccess.js +59 -0
  334. package/backend/dist/services/sharedResourceAccess.js.map +1 -0
  335. package/backend/dist/services/skillService.d.ts +137 -0
  336. package/backend/dist/services/skillService.d.ts.map +1 -0
  337. package/backend/dist/services/skillService.js +852 -0
  338. package/backend/dist/services/skillService.js.map +1 -0
  339. package/backend/dist/services/toolAccessService.d.ts +9 -0
  340. package/backend/dist/services/toolAccessService.d.ts.map +1 -0
  341. package/backend/dist/services/toolAccessService.js +60 -0
  342. package/backend/dist/services/toolAccessService.js.map +1 -0
  343. package/backend/dist/services/toolApprovalService.d.ts +34 -0
  344. package/backend/dist/services/toolApprovalService.d.ts.map +1 -0
  345. package/backend/dist/services/toolApprovalService.js +188 -0
  346. package/backend/dist/services/toolApprovalService.js.map +1 -0
  347. package/backend/dist/services/toolGatewayService.d.ts +53 -0
  348. package/backend/dist/services/toolGatewayService.d.ts.map +1 -0
  349. package/backend/dist/services/toolGatewayService.js +249 -0
  350. package/backend/dist/services/toolGatewayService.js.map +1 -0
  351. package/backend/dist/services/toolServerService.d.ts +57 -0
  352. package/backend/dist/services/toolServerService.d.ts.map +1 -0
  353. package/backend/dist/services/toolServerService.js +521 -0
  354. package/backend/dist/services/toolServerService.js.map +1 -0
  355. package/backend/dist/services/voiceAccessService.d.ts +10 -0
  356. package/backend/dist/services/voiceAccessService.d.ts.map +1 -0
  357. package/backend/dist/services/voiceAccessService.js +74 -0
  358. package/backend/dist/services/voiceAccessService.js.map +1 -0
  359. package/backend/dist/services/voiceProfileService.d.ts +20 -0
  360. package/backend/dist/services/voiceProfileService.d.ts.map +1 -1
  361. package/backend/dist/services/voiceProfileService.js +60 -0
  362. package/backend/dist/services/voiceProfileService.js.map +1 -1
  363. package/backend/dist/services/webPushService.d.ts +71 -0
  364. package/backend/dist/services/webPushService.d.ts.map +1 -0
  365. package/backend/dist/services/webPushService.js +328 -0
  366. package/backend/dist/services/webPushService.js.map +1 -0
  367. package/backend/dist/services/webauthnService.d.ts +58 -0
  368. package/backend/dist/services/webauthnService.d.ts.map +1 -0
  369. package/backend/dist/services/webauthnService.js +300 -0
  370. package/backend/dist/services/webauthnService.js.map +1 -0
  371. package/backend/dist/storage.d.ts +28 -1
  372. package/backend/dist/storage.d.ts.map +1 -1
  373. package/backend/dist/storage.js +100 -1
  374. package/backend/dist/storage.js.map +1 -1
  375. package/backend/dist/storageMappers.d.ts +2 -2
  376. package/backend/dist/storageMappers.d.ts.map +1 -1
  377. package/backend/dist/storageMappers.js.map +1 -1
  378. package/backend/dist/types/index.d.ts +199 -3
  379. package/backend/dist/types/index.d.ts.map +1 -1
  380. package/backend/dist/types/index.js.map +1 -1
  381. package/backend/dist/types/tools.d.ts +137 -0
  382. package/backend/dist/types/tools.d.ts.map +1 -0
  383. package/backend/dist/types/tools.js +25 -0
  384. package/backend/dist/types/tools.js.map +1 -0
  385. package/backend/dist/utils/chatDocumentContext.d.ts +26 -1
  386. package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -1
  387. package/backend/dist/utils/chatDocumentContext.js +87 -18
  388. package/backend/dist/utils/chatDocumentContext.js.map +1 -1
  389. package/backend/dist/utils/documentExtraction.d.ts +97 -0
  390. package/backend/dist/utils/documentExtraction.d.ts.map +1 -0
  391. package/backend/dist/utils/documentExtraction.js +651 -0
  392. package/backend/dist/utils/documentExtraction.js.map +1 -0
  393. package/backend/dist/utils/hybridRetrieval.d.ts +34 -0
  394. package/backend/dist/utils/hybridRetrieval.d.ts.map +1 -0
  395. package/backend/dist/utils/hybridRetrieval.js +119 -0
  396. package/backend/dist/utils/hybridRetrieval.js.map +1 -0
  397. package/backend/dist/utils/icsCalendar.d.ts +27 -0
  398. package/backend/dist/utils/icsCalendar.d.ts.map +1 -0
  399. package/backend/dist/utils/icsCalendar.js +313 -0
  400. package/backend/dist/utils/icsCalendar.js.map +1 -0
  401. package/backend/dist/utils/imageEditUpload.d.ts +29 -0
  402. package/backend/dist/utils/imageEditUpload.d.ts.map +1 -0
  403. package/backend/dist/utils/imageEditUpload.js +82 -0
  404. package/backend/dist/utils/imageEditUpload.js.map +1 -0
  405. package/backend/dist/utils/logRedaction.d.ts +2 -0
  406. package/backend/dist/utils/logRedaction.d.ts.map +1 -0
  407. package/backend/dist/utils/logRedaction.js +66 -0
  408. package/backend/dist/utils/logRedaction.js.map +1 -0
  409. package/backend/dist/utils/logger.d.ts +3 -0
  410. package/backend/dist/utils/logger.d.ts.map +1 -1
  411. package/backend/dist/utils/logger.js +63 -20
  412. package/backend/dist/utils/logger.js.map +1 -1
  413. package/backend/dist/utils/pluginChatAdapter.d.ts +5 -1
  414. package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
  415. package/backend/dist/utils/pluginChatAdapter.js +83 -0
  416. package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
  417. package/backend/dist/utils/pluginDefinitionTrust.js +1 -1
  418. package/backend/dist/utils/resourceLimits.d.ts +61 -2
  419. package/backend/dist/utils/resourceLimits.d.ts.map +1 -1
  420. package/backend/dist/utils/resourceLimits.js +59 -0
  421. package/backend/dist/utils/resourceLimits.js.map +1 -1
  422. package/backend/dist/utils/toolEgress.d.ts +23 -0
  423. package/backend/dist/utils/toolEgress.d.ts.map +1 -0
  424. package/backend/dist/utils/toolEgress.js +169 -0
  425. package/backend/dist/utils/toolEgress.js.map +1 -0
  426. package/backend/dist/utils/totp.d.ts +19 -0
  427. package/backend/dist/utils/totp.d.ts.map +1 -0
  428. package/backend/dist/utils/totp.js +117 -0
  429. package/backend/dist/utils/totp.js.map +1 -0
  430. package/backend/dist/utils/webauthn.d.ts +43 -0
  431. package/backend/dist/utils/webauthn.d.ts.map +1 -0
  432. package/backend/dist/utils/webauthn.js +294 -0
  433. package/backend/dist/utils/webauthn.js.map +1 -0
  434. package/backend/dist/utils/websocketMessages.d.ts +6 -0
  435. package/backend/dist/utils/websocketMessages.d.ts.map +1 -1
  436. package/backend/dist/utils/websocketMessages.js +8 -0
  437. package/backend/dist/utils/websocketMessages.js.map +1 -1
  438. package/backend/dist/utils/zipArchive.d.ts +32 -0
  439. package/backend/dist/utils/zipArchive.d.ts.map +1 -0
  440. package/backend/dist/utils/zipArchive.js +171 -0
  441. package/backend/dist/utils/zipArchive.js.map +1 -0
  442. package/backend/dist/websocketServer.d.ts.map +1 -1
  443. package/backend/dist/websocketServer.js +142 -35
  444. package/backend/dist/websocketServer.js.map +1 -1
  445. package/backend/package.json +1 -1
  446. package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
  447. package/frontend/dist/assets/index-DBAf_VaS.js +47 -0
  448. package/frontend/dist/assets/index-kn_Axjts.css +1 -0
  449. package/frontend/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
  450. package/frontend/dist/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
  451. package/frontend/dist/fonts/jetbrains-mono.css +24 -0
  452. package/frontend/dist/index.html +27 -20
  453. package/frontend/dist/js/ArtifactContainer-C9zNtCay.js +1 -0
  454. package/frontend/dist/js/{ArtifactDemoPage-BeNs3gHp.js → ArtifactDemoPage-C-EBFBCt.js} +1 -1
  455. package/frontend/dist/js/ArtifactSandboxFrame-CTA1j_d1.js +111 -0
  456. package/frontend/dist/js/ArtifactSlideOutPanel-BOENbOiv.js +1 -0
  457. package/frontend/dist/js/AutomationsPage-C58MQ4te.js +1 -0
  458. package/frontend/dist/js/{Button-BPf_pOxH.js → Button-C0r3J9G_.js} +1 -1
  459. package/frontend/dist/js/CalendarPage-BcdAZ292.js +1 -0
  460. package/frontend/dist/js/ChannelsPage-DPr9Yajs.js +1 -0
  461. package/frontend/dist/js/ChatPage-DsbB748s.js +14 -0
  462. package/frontend/dist/js/EvaluationsPage-FWIJu2fI.js +2 -0
  463. package/frontend/dist/js/FirstTimeSetup-Cy-w6xko.js +1 -0
  464. package/frontend/dist/js/GalleryPage-DDAtxM-x.js +1 -0
  465. package/frontend/dist/js/HomePage-DLKwmE7n.js +1 -0
  466. package/frontend/dist/js/LibreClawPage-vKOj-9w9.js +1 -0
  467. package/frontend/dist/js/{ModelManagerModals-DcLGYN3l.js → ModelManagerModals-BY5TK38_.js} +1 -1
  468. package/frontend/dist/js/ModelSelector-CoCS6MZ9.js +1 -0
  469. package/frontend/dist/js/NotesPage-BElIpXgA.js +3 -0
  470. package/frontend/dist/js/OptimizedSyntaxHighlighter-xgyE3dRA.js +1 -0
  471. package/frontend/dist/js/PersonasPage-P40jVbfU.js +13 -0
  472. package/frontend/dist/js/PluginUsagePage-CKUEPCJN.js +1 -0
  473. package/frontend/dist/js/RichMessageContent-Bm2WaEGi.js +3 -0
  474. package/frontend/dist/js/SettingsModal-DxSGzx9A.js +19 -0
  475. package/frontend/dist/js/{SettingsToggle-woG_WebF.js → SettingsToggle-BIVyfGjl.js} +1 -1
  476. package/frontend/dist/js/SystemPage-BT07dTMT.js +1 -0
  477. package/frontend/dist/js/UserManagementPage-B9Vz5cm3.js +1 -0
  478. package/frontend/dist/js/WorkPage-qoN_e_jK.js +6 -0
  479. package/frontend/dist/js/api-D7Ff5M2Q.js +14 -0
  480. package/frontend/dist/js/appStore-DmV5wqDz.js +2 -0
  481. package/frontend/dist/js/ar-YHHTVP8f.js +2 -0
  482. package/frontend/dist/js/artifactHtml-DDmfpcB0.js +41 -0
  483. package/frontend/dist/js/{authStore-DbMdvNgJ.js → authStore-BYW8-kP6.js} +3 -3
  484. package/frontend/dist/js/{babel-BsYoxD-7.js → babel-DSqqk5kt.js} +1 -1
  485. package/frontend/dist/js/bn-C8VTxBVl.js +2 -0
  486. package/frontend/dist/js/chatStore-D-NTlArO.js +3 -0
  487. package/frontend/dist/js/{config-DSOYQ9a3.js → config-BqZ5304Q.js} +1 -1
  488. package/frontend/dist/js/cs-CCngB5fC.js +2 -0
  489. package/frontend/dist/js/da-CM2PP2ma.js +2 -0
  490. package/frontend/dist/js/de-BqVkD-dw.js +2 -0
  491. package/frontend/dist/js/es-BtWsWBjZ.js +2 -0
  492. package/frontend/dist/js/{estree-BcnBcOAx.js → estree-DPkpBuOU.js} +3 -3
  493. package/frontend/dist/js/evaluationsApi-Dnf2dTd-.js +1 -0
  494. package/frontend/dist/js/fr-C68w9abT.js +2 -0
  495. package/frontend/dist/js/hi-DtBlcyXZ.js +2 -0
  496. package/frontend/dist/js/{html-DkY55Jys.js → html-BpGUXG8E.js} +2 -2
  497. package/frontend/dist/js/id-BWzIu8tn.js +2 -0
  498. package/frontend/dist/js/is-yeFwu4dJ.js +2 -0
  499. package/frontend/dist/js/it-AxEMG8Jg.js +2 -0
  500. package/frontend/dist/js/ja-B-VyokB8.js +2 -0
  501. package/frontend/dist/js/ko-CvwzYr9k.js +2 -0
  502. package/frontend/dist/js/{markdown-IZSI9DXw.js → markdown-DCBRWJSK.js} +3 -3
  503. package/frontend/dist/js/markdown-core-BK7WVOb7.js +32 -0
  504. package/frontend/dist/js/{markdown-math-DK846gXU.js → markdown-math-e1ByS3KY.js} +5 -5
  505. package/frontend/dist/js/messageCodeStyles-BQwf7sSz.js +2 -0
  506. package/frontend/dist/js/ms-BhEwb4b7.js +2 -0
  507. package/frontend/dist/js/nl-Dq-QRx1L.js +2 -0
  508. package/frontend/dist/js/pl-BNEy8mQm.js +2 -0
  509. package/frontend/dist/js/{postcss-BJ0okz7n.js → postcss-Bg15EcFE.js} +1 -1
  510. package/frontend/dist/js/pt-_3Jl3FdY.js +2 -0
  511. package/frontend/dist/js/{react-vendor-C5yShNlM.js → react-vendor-BG_HPV6X.js} +1 -1
  512. package/frontend/dist/js/router-vendor-CbexJIsv.js +1 -0
  513. package/frontend/dist/js/ru-IhQiJ8ta.js +2 -0
  514. package/frontend/dist/js/{standalone-Csw3jfJ_.js → standalone-BFrK0R2A.js} +3 -3
  515. package/frontend/dist/js/sv-DWunXUNz.js +2 -0
  516. package/frontend/dist/js/{syntax-highlight-3EEX6CGL.js → syntax-highlight-P2zo9o06.js} +4 -4
  517. package/frontend/dist/js/th-DVnW2yyh.js +2 -0
  518. package/frontend/dist/js/tr-Do8CFmhR.js +2 -0
  519. package/frontend/dist/js/{typescript-CnF4UVx7.js → typescript-DYVyvmm_.js} +1 -1
  520. package/frontend/dist/js/ui-db9meqAB.js +2 -0
  521. package/frontend/dist/js/ui-vendor-C0DZ8-Cm.js +177 -0
  522. package/frontend/dist/js/uk-BNPKIZga.js +2 -0
  523. package/frontend/dist/js/{useTranslation-Bho4HCyg.js → useTranslation-5b5UhAc9.js} +1 -1
  524. package/frontend/dist/js/{utils-D9W1Lnkn.js → utils-BGrdX9ie.js} +1 -1
  525. package/frontend/dist/js/{utils-vendor-DWh39_3x.js → utils-vendor-9bQ62WeD.js} +1 -1
  526. package/frontend/dist/js/vi-CZMFo9je.js +2 -0
  527. package/frontend/dist/js/{workApi-C3uy9EDT.js → workApi-CcprMH_1.js} +3 -3
  528. package/frontend/dist/js/{yaml-DzT5hBSH.js → yaml-DUeWcOOH.js} +2 -2
  529. package/frontend/dist/js/zh-Pg0881v0.js +2 -0
  530. package/frontend/dist/manifest.webmanifest +32 -0
  531. package/frontend/dist/sw.js +125 -0
  532. package/package.json +2 -2
  533. package/plugins/openai.json +52 -9
  534. package/frontend/dist/assets/index-6o-Hc2wS.js +0 -41
  535. package/frontend/dist/assets/index-D-pM957b.css +0 -1
  536. package/frontend/dist/js/ArtifactContainer-CpUi6ekF.js +0 -1
  537. package/frontend/dist/js/ArtifactSandboxFrame-qsj_Y3LV.js +0 -151
  538. package/frontend/dist/js/ArtifactSlideOutPanel-CSFRluWA.js +0 -1
  539. package/frontend/dist/js/AutomationsPage-KUeWoZNv.js +0 -1
  540. package/frontend/dist/js/CalendarPage-D9I972w8.js +0 -1
  541. package/frontend/dist/js/ChatPage-CmBx4oAL.js +0 -16
  542. package/frontend/dist/js/FirstTimeSetup-Df0YJni3.js +0 -1
  543. package/frontend/dist/js/GalleryPage-bLCrdJN_.js +0 -1
  544. package/frontend/dist/js/HomePage-Uc6PEg-U.js +0 -1
  545. package/frontend/dist/js/LibreClawPage-CG63DHg1.js +0 -1
  546. package/frontend/dist/js/ModelSelector-yxJC64rM.js +0 -1
  547. package/frontend/dist/js/ModelsPage-1R_TxgmJ.js +0 -2
  548. package/frontend/dist/js/NotesPage-L65j5HoW.js +0 -1
  549. package/frontend/dist/js/OptimizedSyntaxHighlighter-Dz7D1LPB.js +0 -1
  550. package/frontend/dist/js/PersonasPage-CKeBpHIH.js +0 -13
  551. package/frontend/dist/js/PluginUsagePage-BX1SKMbW.js +0 -1
  552. package/frontend/dist/js/RichMessageContent-DiySVYGB.js +0 -3
  553. package/frontend/dist/js/SettingsModal-68SG1uZ2.js +0 -1
  554. package/frontend/dist/js/SystemPage-CytpZiQV.js +0 -1
  555. package/frontend/dist/js/UserManagementPage-BzJBvZiS.js +0 -1
  556. package/frontend/dist/js/WorkPage-C8gr0QJe.js +0 -6
  557. package/frontend/dist/js/api-BDtqBtqw.js +0 -14
  558. package/frontend/dist/js/appStore-0JnCUlEq.js +0 -2
  559. package/frontend/dist/js/ar-CSpi37Gr.js +0 -2
  560. package/frontend/dist/js/bn-CyH1BeDD.js +0 -2
  561. package/frontend/dist/js/chatStore-CHQ2uINS.js +0 -3
  562. package/frontend/dist/js/cs-Cv2NfRK5.js +0 -2
  563. package/frontend/dist/js/da-D6D6IvPK.js +0 -2
  564. package/frontend/dist/js/de-BNoJJTrT.js +0 -2
  565. package/frontend/dist/js/es-kzo9C7q_.js +0 -2
  566. package/frontend/dist/js/fr-CjHYvJRp.js +0 -2
  567. package/frontend/dist/js/hi-BU98AdCQ.js +0 -2
  568. package/frontend/dist/js/id-CpdedejX.js +0 -2
  569. package/frontend/dist/js/is-Cp5dDWBH.js +0 -2
  570. package/frontend/dist/js/it-CuH_cK4U.js +0 -2
  571. package/frontend/dist/js/ja-BWXXXiHn.js +0 -2
  572. package/frontend/dist/js/ko-DQgv2M1t.js +0 -2
  573. package/frontend/dist/js/markdown-core-BmPPZiuD.js +0 -31
  574. package/frontend/dist/js/messageCodeStyles-BFNR9Wv6.js +0 -2
  575. package/frontend/dist/js/ms-DCcRoIcX.js +0 -2
  576. package/frontend/dist/js/nl-CbKR1_EU.js +0 -2
  577. package/frontend/dist/js/pl-CRyJZccn.js +0 -2
  578. package/frontend/dist/js/pt-BXYmHFGH.js +0 -2
  579. package/frontend/dist/js/router-vendor-DGFGM3EP.js +0 -1
  580. package/frontend/dist/js/ru-M9SyZG4b.js +0 -2
  581. package/frontend/dist/js/sv-DJ486LTU.js +0 -2
  582. package/frontend/dist/js/th-Ch7gKtZv.js +0 -2
  583. package/frontend/dist/js/tr-ClehWhSC.js +0 -2
  584. package/frontend/dist/js/ui-CC-K19wO.js +0 -2
  585. package/frontend/dist/js/ui-vendor-B1UgO3vd.js +0 -177
  586. package/frontend/dist/js/uk-BqAd5zHF.js +0 -2
  587. package/frontend/dist/js/vi-D9gjlDVB.js +0 -2
  588. package/frontend/dist/js/zh-DKTyHkiR.js +0 -2
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Shared tool-runtime types: registered tool servers, their normalized tool
3
+ * definitions, approval policy, and the versioned chat tool-event vocabulary
4
+ * used identically on the WebSocket, SSE, and durable event transports.
5
+ */
6
+ export type ToolServerKind = 'openapi' | 'mcp';
7
+ export type ToolServerAuthMode = 'none' | 'bearer' | 'header';
8
+ export type ToolServerAccessMode = 'admins-only' | 'all-users' | 'granted';
9
+ export interface ToolServer {
10
+ id: string;
11
+ name: string;
12
+ description?: string;
13
+ kind: ToolServerKind;
14
+ baseUrl: string;
15
+ specDigest?: string;
16
+ specRevision: number;
17
+ authMode: ToolServerAuthMode;
18
+ authHeader?: string;
19
+ accessMode: ToolServerAccessMode;
20
+ enabled: boolean;
21
+ timeoutMs: number;
22
+ maxResponseBytes: number;
23
+ createdAt: number;
24
+ updatedAt: number;
25
+ ownerUserId: string;
26
+ }
27
+ /** OpenAPI execution mapping pinned at registration time. */
28
+ export interface OpenApiOperationDetail {
29
+ method: string;
30
+ path: string;
31
+ parameters: Array<{
32
+ name: string;
33
+ in: 'query' | 'path' | 'header';
34
+ required: boolean;
35
+ }>;
36
+ hasBody: boolean;
37
+ bodyContentType?: string;
38
+ }
39
+ export interface ToolDefinition {
40
+ name: string;
41
+ description?: string;
42
+ /** JSON schema for the tool's arguments object. */
43
+ paramsSchema?: Record<string, unknown>;
44
+ sideEffect: boolean;
45
+ enabled: boolean;
46
+ detail?: OpenApiOperationDetail;
47
+ }
48
+ export type ToolSourceKind = 'builtin' | 'openapi' | 'mcp';
49
+ /**
50
+ * One entry of a user's effective tool catalog for a turn. `name` is the
51
+ * provider-visible identifier (namespaced for server tools); resolution back
52
+ * to the executing source uses this entry, never string parsing.
53
+ */
54
+ export interface EffectiveTool {
55
+ name: string;
56
+ description?: string;
57
+ paramsSchema?: Record<string, unknown>;
58
+ sideEffect: boolean;
59
+ source: ToolSourceKind;
60
+ serverId?: string;
61
+ serverName?: string;
62
+ /** Original tool name on the server, before namespacing. */
63
+ toolName: string;
64
+ }
65
+ export type ToolApprovalScope = 'once' | 'session' | 'always';
66
+ export type ToolApprovalStatus = 'pending' | 'approved' | 'denied' | 'expired';
67
+ export interface ToolApproval {
68
+ id: string;
69
+ sessionId?: string;
70
+ serverId?: string;
71
+ serverName?: string;
72
+ toolName: string;
73
+ callId?: string;
74
+ scope: ToolApprovalScope;
75
+ status: ToolApprovalStatus;
76
+ createdAt: number;
77
+ resolvedAt?: number;
78
+ expiresAt?: number;
79
+ }
80
+ export type ChatToolCallStatus = 'awaiting_approval' | 'running' | 'succeeded' | 'failed' | 'denied' | 'cancelled';
81
+ /** A tool call persisted on the assistant message that requested it. */
82
+ export interface ChatToolCall {
83
+ id: string;
84
+ name: string;
85
+ arguments: string;
86
+ source: ToolSourceKind;
87
+ serverId?: string;
88
+ serverName?: string;
89
+ sideEffect: boolean;
90
+ status: ChatToolCallStatus;
91
+ startedAt?: number;
92
+ finishedAt?: number;
93
+ error?: string;
94
+ /** Bounded result excerpt kept for display; never replayed to providers. */
95
+ resultPreview?: string;
96
+ isError?: boolean;
97
+ }
98
+ /** Persisted on a role:'tool' message alongside the result content. */
99
+ export interface ChatToolResultMetadata {
100
+ toolCallId: string;
101
+ toolName: string;
102
+ source: ToolSourceKind;
103
+ serverId?: string;
104
+ isError: boolean;
105
+ truncated: boolean;
106
+ }
107
+ /**
108
+ * Versioned normalized chat tool events. The same payload shapes flow over
109
+ * the private WebSocket path and the durable event gateway, so a client can
110
+ * replay either transport into identical state.
111
+ */
112
+ export declare const CHAT_TOOL_CALL_EVENT = "chat.tool-call.v1";
113
+ export declare const CHAT_TOOL_RESULT_EVENT = "chat.tool-result.v1";
114
+ export declare const CHAT_APPROVAL_EVENT = "chat.approval.v1";
115
+ export interface ChatToolCallEventPayload {
116
+ type: typeof CHAT_TOOL_CALL_EVENT;
117
+ messageId: string;
118
+ toolCall: ChatToolCall;
119
+ }
120
+ export interface ChatToolResultEventPayload {
121
+ type: typeof CHAT_TOOL_RESULT_EVENT;
122
+ messageId: string;
123
+ toolCallId: string;
124
+ status: ChatToolCallStatus;
125
+ /** Bounded preview of the result; the full result is persisted. */
126
+ preview?: string;
127
+ isError: boolean;
128
+ }
129
+ export interface ChatApprovalEventPayload {
130
+ type: typeof CHAT_APPROVAL_EVENT;
131
+ messageId: string;
132
+ approvalId: string;
133
+ toolCall: ChatToolCall;
134
+ expiresAt: number;
135
+ }
136
+ export type ChatToolEventPayload = ChatToolCallEventPayload | ChatToolResultEventPayload | ChatApprovalEventPayload;
137
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Libre WebUI
3
+ * Copyright (C) 2025 Kroonen AI, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at:
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Versioned normalized chat tool events. The same payload shapes flow over
19
+ * the private WebSocket path and the durable event gateway, so a client can
20
+ * replay either transport into identical state.
21
+ */
22
+ export const CHAT_TOOL_CALL_EVENT = 'chat.tool-call.v1';
23
+ export const CHAT_TOOL_RESULT_EVENT = 'chat.tool-result.v1';
24
+ export const CHAT_APPROVAL_EVENT = 'chat.approval.v1';
25
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA8HH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAC5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC"}
@@ -1,14 +1,39 @@
1
+ /** One cited excerpt of a source document. */
2
+ export interface ChatDocumentCitation {
3
+ chunkIndex: number;
4
+ /** Human-readable source location (page/slide/sheet/section). */
5
+ location?: string;
6
+ /** Retrieval score of this excerpt within the query's ranking. */
7
+ score?: number;
8
+ }
1
9
  export interface ChatDocumentSource {
2
10
  id: string;
3
11
  filename: string;
12
+ /** Present in retrieval mode: which excerpts contributed, best first. */
13
+ citations?: ChatDocumentCitation[];
14
+ /** True when the document's full content entered context. */
15
+ full?: boolean;
4
16
  }
5
17
  export interface ChatDocumentContext {
6
18
  documentContext: string;
7
19
  enhancedContent: string;
8
20
  hasRelevantContext: boolean;
9
- /** Documents that actually contributed chunks, deduplicated, best first. */
21
+ /** Documents that actually contributed, deduplicated, best first. */
10
22
  sources: ChatDocumentSource[];
23
+ /** How document context was assembled for this turn. */
24
+ mode: 'retrieval' | 'full';
25
+ /** Set when full-document mode was requested but exceeded the guard. */
26
+ fullContextSkipped?: {
27
+ estimatedTokens: number;
28
+ maxTokens: number;
29
+ };
11
30
  }
31
+ /**
32
+ * Full-document mode sends entire extracted sources instead of retrieved
33
+ * excerpts, so it needs a hard token guard. Deliberately conservative:
34
+ * most local models run 8k-128k contexts.
35
+ */
36
+ export declare const fullDocumentContextMaxTokens: () => number;
12
37
  export declare const EMPTY_CHAT_DOCUMENT_CONTEXT: (message: string) => ChatDocumentContext;
13
38
  export declare function buildChatDocumentContext(message: string, sessionId: string, userId: string, signal?: AbortSignal): Promise<ChatDocumentContext>;
14
39
  //# sourceMappingURL=chatDocumentContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatDocumentContext.d.ts","sourceRoot":"","sources":["../../src/utils/chatDocumentContext.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,4EAA4E;IAC5E,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,2BAA2B,YAC7B,MAAM,KACd,mBAKD,CAAC;AAEH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,mBAAmB,CAAC,CA6D9B"}
1
+ {"version":3,"file":"chatDocumentContext.d.ts","sourceRoot":"","sources":["../../src/utils/chatDocumentContext.ts"],"names":[],"mappings":"AAsBA,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACnC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,wDAAwD;IACxD,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,wEAAwE;IACxE,kBAAkB,CAAC,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAED;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,QAAO,MAU/C,CAAC;AAEF,eAAO,MAAM,2BAA2B,YAC7B,MAAM,KACd,mBAMD,CAAC;AA6DH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAkF9B"}
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Licensed under the Apache License, Version 2.0 (the "License");
6
6
  * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at:
7
+ * You may obtain a copy of the License at
8
8
  *
9
9
  * http://www.apache.org/licenses/LICENSE-2.0
10
10
  *
@@ -15,48 +15,115 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import documentService from '../services/documentService.js';
18
+ import { estimateTextTokens } from '../services/contextCompactionService.js';
18
19
  import storageService from '../storage.js';
19
20
  import { throwIfChatGenerationCancelled } from './chatCancellation.js';
21
+ /**
22
+ * Full-document mode sends entire extracted sources instead of retrieved
23
+ * excerpts, so it needs a hard token guard. Deliberately conservative:
24
+ * most local models run 8k-128k contexts.
25
+ */
26
+ export const fullDocumentContextMaxTokens = () => {
27
+ const raw = process.env.FULL_DOCUMENT_CONTEXT_MAX_TOKENS;
28
+ if (raw === undefined)
29
+ return 32000;
30
+ const value = Number.parseInt(raw, 10);
31
+ if (!Number.isSafeInteger(value) || value < 1000 || value > 2000000) {
32
+ throw new Error('FULL_DOCUMENT_CONTEXT_MAX_TOKENS must be between 1000 and 2000000');
33
+ }
34
+ return value;
35
+ };
20
36
  export const EMPTY_CHAT_DOCUMENT_CONTEXT = (message) => ({
21
37
  documentContext: '',
22
38
  enhancedContent: message,
23
39
  hasRelevantContext: false,
24
40
  sources: [],
41
+ mode: 'retrieval',
25
42
  });
43
+ const buildFullDocumentContext = async (message, sessionId, userId, knowledgeCollectionIds, signal) => {
44
+ const documents = (await documentService.getDocumentsInScope(userId, sessionId, knowledgeCollectionIds)).filter(document => (document.content ?? '').trim().length > 0);
45
+ throwIfChatGenerationCancelled(signal);
46
+ if (documents.length === 0) {
47
+ return { context: EMPTY_CHAT_DOCUMENT_CONTEXT(message) };
48
+ }
49
+ const maxTokens = fullDocumentContextMaxTokens();
50
+ const estimatedTokens = documents.reduce((total, document) => total + estimateTextTokens(document.content ?? ''), 0);
51
+ if (estimatedTokens > maxTokens) {
52
+ // Too large to send whole: fall back to retrieval, but tell the caller
53
+ // so the client can explain why full mode did not apply.
54
+ return { skipped: { estimatedTokens, maxTokens } };
55
+ }
56
+ const documentContext = '\n\n--- ATTACHED DOCUMENTS (full content) ---\n' +
57
+ documents
58
+ .map(document => `Document: ${document.filename}\n${document.content ?? ''}\n`)
59
+ .join('\n---\n') +
60
+ '\n--- END DOCUMENTS ---\n\n';
61
+ return {
62
+ context: {
63
+ documentContext,
64
+ enhancedContent: `${documentContext}User question: ${message}`,
65
+ hasRelevantContext: true,
66
+ sources: documents.map(document => ({
67
+ id: document.id,
68
+ filename: document.filename,
69
+ full: true,
70
+ })),
71
+ mode: 'full',
72
+ },
73
+ };
74
+ };
26
75
  export async function buildChatDocumentContext(message, sessionId, userId, signal) {
27
76
  throwIfChatGenerationCancelled(signal);
28
77
  // Documents from knowledge collections attached to this chat join the
29
78
  // session's own uploads and the user's standing uploads in the
30
- // searchable scope. searchDocuments picks semantic or keyword retrieval
79
+ // searchable scope. searchDocuments picks hybrid or keyword retrieval
31
80
  // by the embedding settings, so retrieval works either way.
32
- const knowledgeCollectionIds = (await storageService.getSession(sessionId, userId))?.settings?.knowledgeCollectionIds;
81
+ const settings = (await storageService.getSession(sessionId, userId))
82
+ ?.settings;
83
+ const knowledgeCollectionIds = settings?.knowledgeCollectionIds;
84
+ throwIfChatGenerationCancelled(signal);
85
+ let fullContextSkipped;
86
+ if (settings?.fullDocumentContext === true) {
87
+ const outcome = await buildFullDocumentContext(message, sessionId, userId, knowledgeCollectionIds, signal);
88
+ if (outcome.context)
89
+ return outcome.context;
90
+ fullContextSkipped = outcome.skipped;
91
+ }
33
92
  throwIfChatGenerationCancelled(signal);
34
93
  const relevantDocuments = await documentService.searchDocuments(message, userId, sessionId, 5, knowledgeCollectionIds, signal);
35
94
  throwIfChatGenerationCancelled(signal);
36
95
  if (relevantDocuments.length === 0) {
37
- return EMPTY_CHAT_DOCUMENT_CONTEXT(message);
96
+ return {
97
+ ...EMPTY_CHAT_DOCUMENT_CONTEXT(message),
98
+ ...(fullContextSkipped ? { fullContextSkipped } : {}),
99
+ };
38
100
  }
39
- const documentsMap = new Map();
40
- const sources = [];
101
+ const sourcesById = new Map();
41
102
  for (const chunk of relevantDocuments) {
42
103
  throwIfChatGenerationCancelled(signal);
43
- if (!documentsMap.has(chunk.documentId)) {
44
- const document = await documentService.getDocument(chunk.documentId, userId);
45
- throwIfChatGenerationCancelled(signal);
46
- documentsMap.set(chunk.documentId, document);
47
- sources.push({
104
+ let source = sourcesById.get(chunk.documentId);
105
+ if (!source) {
106
+ source = {
48
107
  id: chunk.documentId,
49
- filename: document?.filename || 'Unknown Document',
50
- });
108
+ filename: chunk.filename || 'Unknown Document',
109
+ citations: [],
110
+ };
111
+ sourcesById.set(chunk.documentId, source);
51
112
  }
113
+ source.citations.push({
114
+ chunkIndex: chunk.chunkIndex,
115
+ ...(chunk.location ? { location: chunk.location } : {}),
116
+ ...(chunk.score !== undefined ? { score: chunk.score } : {}),
117
+ });
52
118
  }
53
- throwIfChatGenerationCancelled(signal);
54
119
  const documentContext = '\n\n--- RELEVANT DOCUMENTS ---\n' +
55
120
  relevantDocuments
56
121
  .map((chunk, index) => {
57
- const doc = documentsMap.get(chunk.documentId);
58
- const docTitle = doc ? doc.filename : 'Unknown Document';
59
- return `Document ${index + 1}: ${docTitle} (chunk ${chunk.chunkIndex + 1})\n${chunk.content}\n`;
122
+ const docTitle = chunk.filename || 'Unknown Document';
123
+ const where = chunk.location
124
+ ? `chunk ${chunk.chunkIndex + 1}, ${chunk.location}`
125
+ : `chunk ${chunk.chunkIndex + 1}`;
126
+ return `Document ${index + 1}: ${docTitle} (${where})\n${chunk.content}\n`;
60
127
  })
61
128
  .join('\n---\n') +
62
129
  '\n--- END DOCUMENTS ---\n\n';
@@ -64,7 +131,9 @@ export async function buildChatDocumentContext(message, sessionId, userId, signa
64
131
  documentContext,
65
132
  enhancedContent: `${documentContext}User question: ${message}`,
66
133
  hasRelevantContext: true,
67
- sources,
134
+ sources: [...sourcesById.values()],
135
+ mode: 'retrieval',
136
+ ...(fullContextSkipped ? { fullContextSkipped } : {}),
68
137
  };
69
138
  }
70
139
  //# sourceMappingURL=chatDocumentContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatDocumentContext.js","sourceRoot":"","sources":["../../src/utils/chatDocumentContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAC7D,OAAO,cAAc,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AAevE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAAe,EACM,EAAE,CAAC,CAAC;IACzB,eAAe,EAAE,EAAE;IACnB,eAAe,EAAE,OAAO;IACxB,kBAAkB,EAAE,KAAK;IACzB,OAAO,EAAE,EAAE;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAe,EACf,SAAiB,EACjB,MAAc,EACd,MAAoB;IAEpB,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,sEAAsE;IACtE,+DAA+D;IAC/D,wEAAwE;IACxE,4DAA4D;IAC5D,MAAM,sBAAsB,GAAG,CAC7B,MAAM,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CACnD,EAAE,QAAQ,EAAE,sBAAsB,CAAC;IACpC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,eAAe,CAC7D,OAAO,EACP,MAAM,EACN,SAAS,EACT,CAAC,EACD,sBAAsB,EACtB,MAAM,CACP,CAAC;IACF,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,8BAA8B,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,CAChD,KAAK,CAAC,UAAU,EAChB,MAAM,CACP,CAAC;YACF,8BAA8B,CAAC,MAAM,CAAC,CAAC;YACvC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK,CAAC,UAAU;gBACpB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,kBAAkB;aACnD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,eAAe,GACnB,kCAAkC;QAClC,iBAAiB;aACd,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACpB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC;YACzD,OAAO,YAAY,KAAK,GAAG,CAAC,KAAK,QAAQ,WAAW,KAAK,CAAC,UAAU,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,IAAI,CAAC;QAClG,CAAC,CAAC;aACD,IAAI,CAAC,SAAS,CAAC;QAClB,6BAA6B,CAAC;IAEhC,OAAO;QACL,eAAe;QACf,eAAe,EAAE,GAAG,eAAe,kBAAkB,OAAO,EAAE;QAC9D,kBAAkB,EAAE,IAAI;QACxB,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"chatDocumentContext.js","sourceRoot":"","sources":["../../src/utils/chatDocumentContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import type { DocumentFileType } from '../types/index.js';
2
+ /**
3
+ * Document extraction for knowledge ingestion.
4
+ *
5
+ * Every supported upload type resolves to one canonical `DocumentFileType`
6
+ * and one extractor that returns plain text plus an optional segment map.
7
+ * Segments record where pages, slides, sheets, and Markdown sections start
8
+ * and end inside the extracted text, so retrieval can cite an exact source
9
+ * location without a second parse of the original file.
10
+ *
11
+ * OOXML formats are unpacked with the in-repo bounded ZIP reader and a
12
+ * narrow text-run scan of the document XML; the goal is faithful text for
13
+ * retrieval, not layout fidelity. Images and audio resolve to types here
14
+ * but extract in the document service through the owner's vision model and
15
+ * STT provider — this layer stays pure and offline. For scanned PDFs it
16
+ * contributes the bounded embedded-JPEG recovery below.
17
+ */
18
+ export type { DocumentFileType } from '../types/index.js';
19
+ export interface DocumentSegment {
20
+ kind: 'page' | 'slide' | 'sheet' | 'section';
21
+ label: string;
22
+ startChar: number;
23
+ endChar: number;
24
+ }
25
+ export interface ExtractedDocumentContent {
26
+ content: string;
27
+ segments: DocumentSegment[];
28
+ }
29
+ export declare class DocumentExtractionError extends Error {
30
+ constructor(message: string);
31
+ }
32
+ export declare const SUPPORTED_DOCUMENT_EXTENSIONS: readonly string[];
33
+ export declare const SUPPORTED_DOCUMENT_MIME_TYPES: readonly string[];
34
+ /**
35
+ * Resolves the canonical file type for an upload. The extension decides
36
+ * first because browsers report unreliable MIME types for Markdown, code,
37
+ * and OOXML files; the declared MIME type is the fallback for extensionless
38
+ * names. Returns null when neither identifies a supported type.
39
+ */
40
+ export declare const resolveDocumentFileType: (fileName: string, mimeType: string) => DocumentFileType | null;
41
+ /** Validates a stored document metadata segment map. */
42
+ export declare const readDocumentSegments: (metadata: Record<string, unknown> | undefined) => DocumentSegment[];
43
+ /**
44
+ * Human-readable location of a chunk inside its source, chosen as the
45
+ * segment with the greatest overlap of the chunk's character range.
46
+ * Offsets are approximate (chunking trims whitespace), so overlap rather
47
+ * than containment decides.
48
+ */
49
+ export declare const resolveSegmentLabel: (segments: readonly DocumentSegment[], startChar: number, endChar: number) => string | undefined;
50
+ /**
51
+ * Confirm an uploaded image really is one of the supported formats and
52
+ * report its actual MIME type from the magic bytes; the declared type and
53
+ * extension are advisory only.
54
+ */
55
+ export declare const detectImageMimeType: (buffer: Buffer) => string;
56
+ /** Bounds for scanned-PDF image recovery. */
57
+ export declare const PDF_EMBEDDED_IMAGE_LIMITS: Readonly<{
58
+ maxImages: 20;
59
+ /** Page-scan images below this are icons/decorations, not content. */
60
+ minBytesPerImage: number;
61
+ maxBytesPerImage: number;
62
+ }>;
63
+ /**
64
+ * Recover embedded JPEG page scans from a PDF with no extractable text.
65
+ * Scanned PDFs overwhelmingly store each page as one DCTDecode (JPEG)
66
+ * XObject whose stream bytes are a complete JPEG file, so a bounded scan of
67
+ * the raw objects recovers them without a rendering engine. Other image
68
+ * filters (Flate bitmaps, CCITT fax, JBIG2) are out of scope and simply
69
+ * yield nothing.
70
+ */
71
+ export declare const extractPdfEmbeddedJpegs: (buffer: Buffer, limits?: Readonly<{
72
+ maxImages: 20;
73
+ /** Page-scan images below this are icons/decorations, not content. */
74
+ minBytesPerImage: number;
75
+ maxBytesPerImage: number;
76
+ }>) => Buffer[];
77
+ export interface PdfExtractionApi {
78
+ getDocument(options: {
79
+ data: Uint8Array;
80
+ }): {
81
+ promise: Promise<{
82
+ numPages: number;
83
+ getPage(pageNumber: number): Promise<{
84
+ getTextContent(): Promise<{
85
+ items: unknown[];
86
+ }>;
87
+ }>;
88
+ }>;
89
+ };
90
+ }
91
+ export interface DocumentExtractionOptions {
92
+ signal?: AbortSignal;
93
+ /** Lazily loaded pdfjs module; required only for PDF extraction. */
94
+ pdfLib?: PdfExtractionApi;
95
+ }
96
+ export declare const extractDocumentContentByType: (buffer: Buffer, fileType: DocumentFileType, options?: DocumentExtractionOptions) => Promise<ExtractedDocumentContent>;
97
+ //# sourceMappingURL=documentExtraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentExtraction.d.ts","sourceRoot":"","sources":["../../src/utils/documentExtraction.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI1D;;;;;;;;;;;;;;;GAeG;AAEH,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAsHD,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAE1D,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAEzD,CAAC;AASH;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,aACxB,MAAM,YACN,MAAM,KACf,gBAAgB,GAAG,IAerB,CAAC;AAIF,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,aACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KAC5C,eAAe,EA0BjB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,aACpB,SAAS,eAAe,EAAE,aACzB,MAAM,WACR,MAAM,KACd,MAAM,GAAG,SAqBX,CAAC;AAwSF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WAAY,MAAM,KAAG,MAiCpD,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,yBAAyB;;IAEpC,sEAAsE;;;EAGtE,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,WAC1B,MAAM;;IAdd,sEAAsE;;;OAgBrE,MAAM,EA4CR,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG;QAC1C,OAAO,EAAE,OAAO,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;gBACnC,cAAc,IAAI,OAAO,CAAC;oBAAE,KAAK,EAAE,OAAO,EAAE,CAAA;iBAAE,CAAC,CAAC;aACjD,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC;CACH;AAgDD,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,oEAAoE;IACpE,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,eAAO,MAAM,4BAA4B,WAC/B,MAAM,YACJ,gBAAgB,YACjB,yBAAyB,KACjC,OAAO,CAAC,wBAAwB,CAmClC,CAAC"}