@framers/agentos 0.1.6 → 0.1.8

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 (287) hide show
  1. package/README.md +19 -0
  2. package/dist/api/AgentOS.d.ts +12 -0
  3. package/dist/api/AgentOS.d.ts.map +1 -1
  4. package/dist/api/AgentOS.js +100 -2
  5. package/dist/api/AgentOS.js.map +1 -1
  6. package/dist/api/AgentOSOrchestrator.d.ts +45 -0
  7. package/dist/api/AgentOSOrchestrator.d.ts.map +1 -1
  8. package/dist/api/AgentOSOrchestrator.js +470 -6
  9. package/dist/api/AgentOSOrchestrator.js.map +1 -1
  10. package/dist/api/types/AgentOSInput.d.ts +8 -0
  11. package/dist/api/types/AgentOSInput.d.ts.map +1 -1
  12. package/dist/api/types/AgentOSResponse.d.ts +22 -2
  13. package/dist/api/types/AgentOSResponse.d.ts.map +1 -1
  14. package/dist/api/types/AgentOSResponse.js +1 -0
  15. package/dist/api/types/AgentOSResponse.js.map +1 -1
  16. package/dist/channels/ChannelRouter.d.ts +150 -0
  17. package/dist/channels/ChannelRouter.d.ts.map +1 -0
  18. package/dist/channels/ChannelRouter.js +309 -0
  19. package/dist/channels/ChannelRouter.js.map +1 -0
  20. package/dist/channels/IChannelAdapter.d.ts +113 -0
  21. package/dist/channels/IChannelAdapter.d.ts.map +1 -0
  22. package/dist/channels/IChannelAdapter.js +17 -0
  23. package/dist/channels/IChannelAdapter.js.map +1 -0
  24. package/dist/channels/index.d.ts +9 -0
  25. package/dist/channels/index.d.ts.map +1 -0
  26. package/dist/channels/index.js +7 -0
  27. package/dist/channels/index.js.map +1 -0
  28. package/dist/channels/types.d.ts +257 -0
  29. package/dist/channels/types.d.ts.map +1 -0
  30. package/dist/channels/types.js +12 -0
  31. package/dist/channels/types.js.map +1 -0
  32. package/dist/cognitive_substrate/GMI.d.ts +139 -0
  33. package/dist/cognitive_substrate/GMI.d.ts.map +1 -1
  34. package/dist/cognitive_substrate/GMI.js +680 -14
  35. package/dist/cognitive_substrate/GMI.js.map +1 -1
  36. package/dist/cognitive_substrate/GMIEvent.d.ts +151 -0
  37. package/dist/cognitive_substrate/GMIEvent.d.ts.map +1 -0
  38. package/dist/cognitive_substrate/GMIEvent.js +79 -0
  39. package/dist/cognitive_substrate/GMIEvent.js.map +1 -0
  40. package/dist/cognitive_substrate/IGMI.d.ts +22 -0
  41. package/dist/cognitive_substrate/IGMI.d.ts.map +1 -1
  42. package/dist/cognitive_substrate/IGMI.js.map +1 -1
  43. package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts +92 -0
  44. package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts.map +1 -1
  45. package/dist/cognitive_substrate/personas/PersonaLoader.d.ts.map +1 -1
  46. package/dist/cognitive_substrate/personas/PersonaLoader.js +21 -0
  47. package/dist/cognitive_substrate/personas/PersonaLoader.js.map +1 -1
  48. package/dist/cognitive_substrate/personas/metaprompt_presets.d.ts +86 -0
  49. package/dist/cognitive_substrate/personas/metaprompt_presets.d.ts.map +1 -0
  50. package/dist/cognitive_substrate/personas/metaprompt_presets.js +457 -0
  51. package/dist/cognitive_substrate/personas/metaprompt_presets.js.map +1 -0
  52. package/dist/config/RetrievalAugmentorConfiguration.d.ts +21 -0
  53. package/dist/config/RetrievalAugmentorConfiguration.d.ts.map +1 -1
  54. package/dist/config/RetrievalAugmentorConfiguration.js.map +1 -1
  55. package/dist/config/VectorStoreConfiguration.d.ts +2 -1
  56. package/dist/config/VectorStoreConfiguration.d.ts.map +1 -1
  57. package/dist/config/VectorStoreConfiguration.js.map +1 -1
  58. package/dist/config/extension-secrets.json +360 -0
  59. package/dist/core/agents/AgentCore.d.ts +8 -0
  60. package/dist/core/agents/AgentCore.d.ts.map +1 -1
  61. package/dist/core/agents/AgentCore.js.map +1 -1
  62. package/dist/core/conversation/ConversationManager.d.ts.map +1 -1
  63. package/dist/core/conversation/ConversationManager.js +2 -4
  64. package/dist/core/conversation/ConversationManager.js.map +1 -1
  65. package/dist/core/conversation/ILongTermMemoryRetriever.d.ts +30 -0
  66. package/dist/core/conversation/ILongTermMemoryRetriever.d.ts.map +1 -0
  67. package/dist/core/conversation/ILongTermMemoryRetriever.js +2 -0
  68. package/dist/core/conversation/ILongTermMemoryRetriever.js.map +1 -0
  69. package/dist/core/conversation/IRollingSummaryMemorySink.d.ts +44 -0
  70. package/dist/core/conversation/IRollingSummaryMemorySink.d.ts.map +1 -0
  71. package/dist/core/conversation/IRollingSummaryMemorySink.js +9 -0
  72. package/dist/core/conversation/IRollingSummaryMemorySink.js.map +1 -0
  73. package/dist/core/conversation/LongTermMemoryPolicy.d.ts +53 -0
  74. package/dist/core/conversation/LongTermMemoryPolicy.d.ts.map +1 -0
  75. package/dist/core/conversation/LongTermMemoryPolicy.js +84 -0
  76. package/dist/core/conversation/LongTermMemoryPolicy.js.map +1 -0
  77. package/dist/core/conversation/RollingSummaryCompactor.d.ts +61 -0
  78. package/dist/core/conversation/RollingSummaryCompactor.d.ts.map +1 -0
  79. package/dist/core/conversation/RollingSummaryCompactor.js +255 -0
  80. package/dist/core/conversation/RollingSummaryCompactor.js.map +1 -0
  81. package/dist/core/llm/PromptEngine.d.ts.map +1 -1
  82. package/dist/core/llm/PromptEngine.js +10 -1
  83. package/dist/core/llm/PromptEngine.js.map +1 -1
  84. package/dist/core/orchestration/AgentOrchestrator.d.ts +40 -0
  85. package/dist/core/orchestration/AgentOrchestrator.d.ts.map +1 -1
  86. package/dist/core/orchestration/AgentOrchestrator.js +324 -2
  87. package/dist/core/orchestration/AgentOrchestrator.js.map +1 -1
  88. package/dist/core/prompting/PromptProfileRouter.d.ts +74 -0
  89. package/dist/core/prompting/PromptProfileRouter.d.ts.map +1 -0
  90. package/dist/core/prompting/PromptProfileRouter.js +270 -0
  91. package/dist/core/prompting/PromptProfileRouter.js.map +1 -0
  92. package/dist/core/provenance/anchoring/AnchorManager.d.ts +86 -0
  93. package/dist/core/provenance/anchoring/AnchorManager.d.ts.map +1 -0
  94. package/dist/core/provenance/anchoring/AnchorManager.js +244 -0
  95. package/dist/core/provenance/anchoring/AnchorManager.js.map +1 -0
  96. package/dist/core/provenance/anchoring/providers/CompositeAnchorProvider.d.ts +20 -0
  97. package/dist/core/provenance/anchoring/providers/CompositeAnchorProvider.d.ts.map +1 -0
  98. package/dist/core/provenance/anchoring/providers/CompositeAnchorProvider.js +62 -0
  99. package/dist/core/provenance/anchoring/providers/CompositeAnchorProvider.js.map +1 -0
  100. package/dist/core/provenance/anchoring/providers/NoneProvider.d.ts +15 -0
  101. package/dist/core/provenance/anchoring/providers/NoneProvider.d.ts.map +1 -0
  102. package/dist/core/provenance/anchoring/providers/NoneProvider.js +21 -0
  103. package/dist/core/provenance/anchoring/providers/NoneProvider.js.map +1 -0
  104. package/dist/core/provenance/anchoring/providers/createAnchorProvider.d.ts +38 -0
  105. package/dist/core/provenance/anchoring/providers/createAnchorProvider.d.ts.map +1 -0
  106. package/dist/core/provenance/anchoring/providers/createAnchorProvider.js +67 -0
  107. package/dist/core/provenance/anchoring/providers/createAnchorProvider.js.map +1 -0
  108. package/dist/core/provenance/anchoring/providers/index.d.ts +12 -0
  109. package/dist/core/provenance/anchoring/providers/index.d.ts.map +1 -0
  110. package/dist/core/provenance/anchoring/providers/index.js +12 -0
  111. package/dist/core/provenance/anchoring/providers/index.js.map +1 -0
  112. package/dist/core/provenance/config/PolicyProfiles.d.ts +60 -0
  113. package/dist/core/provenance/config/PolicyProfiles.d.ts.map +1 -0
  114. package/dist/core/provenance/config/PolicyProfiles.js +144 -0
  115. package/dist/core/provenance/config/PolicyProfiles.js.map +1 -0
  116. package/dist/core/provenance/crypto/AgentKeyManager.d.ts +48 -0
  117. package/dist/core/provenance/crypto/AgentKeyManager.d.ts.map +1 -0
  118. package/dist/core/provenance/crypto/AgentKeyManager.js +162 -0
  119. package/dist/core/provenance/crypto/AgentKeyManager.js.map +1 -0
  120. package/dist/core/provenance/crypto/HashChain.d.ts +58 -0
  121. package/dist/core/provenance/crypto/HashChain.d.ts.map +1 -0
  122. package/dist/core/provenance/crypto/HashChain.js +86 -0
  123. package/dist/core/provenance/crypto/HashChain.js.map +1 -0
  124. package/dist/core/provenance/crypto/MerkleTree.d.ts +41 -0
  125. package/dist/core/provenance/crypto/MerkleTree.d.ts.map +1 -0
  126. package/dist/core/provenance/crypto/MerkleTree.js +86 -0
  127. package/dist/core/provenance/crypto/MerkleTree.js.map +1 -0
  128. package/dist/core/provenance/enforcement/AutonomyGuard.d.ts +37 -0
  129. package/dist/core/provenance/enforcement/AutonomyGuard.d.ts.map +1 -0
  130. package/dist/core/provenance/enforcement/AutonomyGuard.js +120 -0
  131. package/dist/core/provenance/enforcement/AutonomyGuard.js.map +1 -0
  132. package/dist/core/provenance/enforcement/ProvenanceStorageHooks.d.ts +43 -0
  133. package/dist/core/provenance/enforcement/ProvenanceStorageHooks.d.ts.map +1 -0
  134. package/dist/core/provenance/enforcement/ProvenanceStorageHooks.js +193 -0
  135. package/dist/core/provenance/enforcement/ProvenanceStorageHooks.js.map +1 -0
  136. package/dist/core/provenance/enforcement/RevisionManager.d.ts +41 -0
  137. package/dist/core/provenance/enforcement/RevisionManager.d.ts.map +1 -0
  138. package/dist/core/provenance/enforcement/RevisionManager.js +105 -0
  139. package/dist/core/provenance/enforcement/RevisionManager.js.map +1 -0
  140. package/dist/core/provenance/enforcement/TombstoneManager.d.ts +47 -0
  141. package/dist/core/provenance/enforcement/TombstoneManager.d.ts.map +1 -0
  142. package/dist/core/provenance/enforcement/TombstoneManager.js +121 -0
  143. package/dist/core/provenance/enforcement/TombstoneManager.js.map +1 -0
  144. package/dist/core/provenance/index.d.ts +34 -0
  145. package/dist/core/provenance/index.d.ts.map +1 -0
  146. package/dist/core/provenance/index.js +39 -0
  147. package/dist/core/provenance/index.js.map +1 -0
  148. package/dist/core/provenance/ledger/EventTypes.d.ts +123 -0
  149. package/dist/core/provenance/ledger/EventTypes.d.ts.map +1 -0
  150. package/dist/core/provenance/ledger/EventTypes.js +9 -0
  151. package/dist/core/provenance/ledger/EventTypes.js.map +1 -0
  152. package/dist/core/provenance/ledger/SignedEventLedger.d.ts +75 -0
  153. package/dist/core/provenance/ledger/SignedEventLedger.d.ts.map +1 -0
  154. package/dist/core/provenance/ledger/SignedEventLedger.js +210 -0
  155. package/dist/core/provenance/ledger/SignedEventLedger.js.map +1 -0
  156. package/dist/core/provenance/schema/provenance-schema.d.ts +17 -0
  157. package/dist/core/provenance/schema/provenance-schema.d.ts.map +1 -0
  158. package/dist/core/provenance/schema/provenance-schema.js +104 -0
  159. package/dist/core/provenance/schema/provenance-schema.js.map +1 -0
  160. package/dist/core/provenance/types.d.ts +261 -0
  161. package/dist/core/provenance/types.d.ts.map +1 -0
  162. package/dist/core/provenance/types.js +21 -0
  163. package/dist/core/provenance/types.js.map +1 -0
  164. package/dist/core/provenance/verification/BundleExporter.d.ts +50 -0
  165. package/dist/core/provenance/verification/BundleExporter.d.ts.map +1 -0
  166. package/dist/core/provenance/verification/BundleExporter.js +240 -0
  167. package/dist/core/provenance/verification/BundleExporter.js.map +1 -0
  168. package/dist/core/provenance/verification/ChainVerifier.d.ts +39 -0
  169. package/dist/core/provenance/verification/ChainVerifier.d.ts.map +1 -0
  170. package/dist/core/provenance/verification/ChainVerifier.js +204 -0
  171. package/dist/core/provenance/verification/ChainVerifier.js.map +1 -0
  172. package/dist/core/provenance/verification/ConversationVerifier.d.ts +56 -0
  173. package/dist/core/provenance/verification/ConversationVerifier.d.ts.map +1 -0
  174. package/dist/core/provenance/verification/ConversationVerifier.js +109 -0
  175. package/dist/core/provenance/verification/ConversationVerifier.js.map +1 -0
  176. package/dist/extensions/ExtensionManager.d.ts +8 -0
  177. package/dist/extensions/ExtensionManager.d.ts.map +1 -1
  178. package/dist/extensions/ExtensionManager.js +58 -3
  179. package/dist/extensions/ExtensionManager.js.map +1 -1
  180. package/dist/extensions/MessagingChannelPayload.d.ts +39 -0
  181. package/dist/extensions/MessagingChannelPayload.d.ts.map +1 -0
  182. package/dist/extensions/MessagingChannelPayload.js +12 -0
  183. package/dist/extensions/MessagingChannelPayload.js.map +1 -0
  184. package/dist/extensions/manifest.d.ts +3 -1
  185. package/dist/extensions/manifest.d.ts.map +1 -1
  186. package/dist/extensions/packs/provenance-pack.d.ts +66 -0
  187. package/dist/extensions/packs/provenance-pack.d.ts.map +1 -0
  188. package/dist/extensions/packs/provenance-pack.js +162 -0
  189. package/dist/extensions/packs/provenance-pack.js.map +1 -0
  190. package/dist/extensions/types.d.ts +23 -0
  191. package/dist/extensions/types.d.ts.map +1 -1
  192. package/dist/extensions/types.js +4 -0
  193. package/dist/extensions/types.js.map +1 -1
  194. package/dist/index.d.ts +8 -0
  195. package/dist/index.d.ts.map +1 -1
  196. package/dist/index.js +12 -0
  197. package/dist/index.js.map +1 -1
  198. package/dist/rag/IRetrievalAugmentor.d.ts +22 -1
  199. package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -1
  200. package/dist/rag/RetrievalAugmentor.d.ts +37 -0
  201. package/dist/rag/RetrievalAugmentor.d.ts.map +1 -1
  202. package/dist/rag/RetrievalAugmentor.js +82 -6
  203. package/dist/rag/RetrievalAugmentor.js.map +1 -1
  204. package/dist/rag/VectorStoreManager.d.ts.map +1 -1
  205. package/dist/rag/VectorStoreManager.js +5 -0
  206. package/dist/rag/VectorStoreManager.js.map +1 -1
  207. package/dist/rag/graphrag/GraphRAGEngine.d.ts +100 -0
  208. package/dist/rag/graphrag/GraphRAGEngine.d.ts.map +1 -0
  209. package/dist/rag/graphrag/GraphRAGEngine.js +1146 -0
  210. package/dist/rag/graphrag/GraphRAGEngine.js.map +1 -0
  211. package/dist/rag/graphrag/IGraphRAG.d.ts +198 -0
  212. package/dist/rag/graphrag/IGraphRAG.d.ts.map +1 -0
  213. package/dist/rag/graphrag/IGraphRAG.js +11 -0
  214. package/dist/rag/graphrag/IGraphRAG.js.map +1 -0
  215. package/dist/rag/graphrag/index.d.ts +12 -0
  216. package/dist/rag/graphrag/index.d.ts.map +1 -0
  217. package/dist/rag/graphrag/index.js +11 -0
  218. package/dist/rag/graphrag/index.js.map +1 -0
  219. package/dist/rag/implementations/vector_stores/HnswlibVectorStore.d.ts +72 -0
  220. package/dist/rag/implementations/vector_stores/HnswlibVectorStore.d.ts.map +1 -0
  221. package/dist/rag/implementations/vector_stores/HnswlibVectorStore.js +463 -0
  222. package/dist/rag/implementations/vector_stores/HnswlibVectorStore.js.map +1 -0
  223. package/dist/rag/implementations/vector_stores/index.d.ts +1 -0
  224. package/dist/rag/implementations/vector_stores/index.d.ts.map +1 -1
  225. package/dist/rag/implementations/vector_stores/index.js +2 -0
  226. package/dist/rag/implementations/vector_stores/index.js.map +1 -1
  227. package/dist/rag/index.d.ts +3 -0
  228. package/dist/rag/index.d.ts.map +1 -1
  229. package/dist/rag/index.js +5 -0
  230. package/dist/rag/index.js.map +1 -1
  231. package/dist/rag/reranking/IRerankerService.d.ts +163 -0
  232. package/dist/rag/reranking/IRerankerService.d.ts.map +1 -0
  233. package/dist/rag/reranking/IRerankerService.js +9 -0
  234. package/dist/rag/reranking/IRerankerService.js.map +1 -0
  235. package/dist/rag/reranking/RerankerService.d.ts +107 -0
  236. package/dist/rag/reranking/RerankerService.d.ts.map +1 -0
  237. package/dist/rag/reranking/RerankerService.js +194 -0
  238. package/dist/rag/reranking/RerankerService.js.map +1 -0
  239. package/dist/rag/reranking/index.d.ts +55 -0
  240. package/dist/rag/reranking/index.d.ts.map +1 -0
  241. package/dist/rag/reranking/index.js +56 -0
  242. package/dist/rag/reranking/index.js.map +1 -0
  243. package/dist/rag/reranking/providers/CohereReranker.d.ts +66 -0
  244. package/dist/rag/reranking/providers/CohereReranker.d.ts.map +1 -0
  245. package/dist/rag/reranking/providers/CohereReranker.js +141 -0
  246. package/dist/rag/reranking/providers/CohereReranker.js.map +1 -0
  247. package/dist/rag/reranking/providers/LocalCrossEncoderReranker.d.ts +105 -0
  248. package/dist/rag/reranking/providers/LocalCrossEncoderReranker.d.ts.map +1 -0
  249. package/dist/rag/reranking/providers/LocalCrossEncoderReranker.js +214 -0
  250. package/dist/rag/reranking/providers/LocalCrossEncoderReranker.js.map +1 -0
  251. package/dist/rag/reranking/providers/index.d.ts +7 -0
  252. package/dist/rag/reranking/providers/index.d.ts.map +1 -0
  253. package/dist/rag/reranking/providers/index.js +7 -0
  254. package/dist/rag/reranking/providers/index.js.map +1 -0
  255. package/dist/rag/reranking/tests/index.d.ts +6 -0
  256. package/dist/rag/reranking/tests/index.d.ts.map +1 -0
  257. package/dist/rag/reranking/tests/index.js +11 -0
  258. package/dist/rag/reranking/tests/index.js.map +1 -0
  259. package/dist/types/optionalDependencies.d.ts +5 -0
  260. package/dist/types/optionalDependencies.d.ts.map +1 -0
  261. package/dist/types/optionalDependencies.js +4 -0
  262. package/dist/types/optionalDependencies.js.map +1 -0
  263. package/dist/voice/CallManager.d.ts +116 -0
  264. package/dist/voice/CallManager.d.ts.map +1 -0
  265. package/dist/voice/CallManager.js +426 -0
  266. package/dist/voice/CallManager.js.map +1 -0
  267. package/dist/voice/IVoiceCallProvider.d.ts +137 -0
  268. package/dist/voice/IVoiceCallProvider.d.ts.map +1 -0
  269. package/dist/voice/IVoiceCallProvider.js +11 -0
  270. package/dist/voice/IVoiceCallProvider.js.map +1 -0
  271. package/dist/voice/index.d.ts +10 -0
  272. package/dist/voice/index.d.ts.map +1 -0
  273. package/dist/voice/index.js +8 -0
  274. package/dist/voice/index.js.map +1 -0
  275. package/dist/voice/providers/mock.d.ts +74 -0
  276. package/dist/voice/providers/mock.d.ts.map +1 -0
  277. package/dist/voice/providers/mock.js +199 -0
  278. package/dist/voice/providers/mock.js.map +1 -0
  279. package/dist/voice/telephony-audio.d.ts +42 -0
  280. package/dist/voice/telephony-audio.d.ts.map +1 -0
  281. package/dist/voice/telephony-audio.js +150 -0
  282. package/dist/voice/telephony-audio.js.map +1 -0
  283. package/dist/voice/types.d.ts +260 -0
  284. package/dist/voice/types.d.ts.map +1 -0
  285. package/dist/voice/types.js +36 -0
  286. package/dist/voice/types.js.map +1 -0
  287. package/package.json +22 -6
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @fileoverview Cohere Rerank API provider implementation.
3
+ * Uses Cohere's cloud-based cross-encoder reranking service.
4
+ *
5
+ * @module backend/agentos/rag/reranking/providers/CohereReranker
6
+ * @see https://docs.cohere.com/reference/rerank
7
+ */
8
+ import type { IRerankerProvider, RerankerInput, RerankerOutput, RerankerRequestConfig, RerankerProviderConfig } from '../IRerankerService';
9
+ /**
10
+ * Cohere-specific provider configuration.
11
+ */
12
+ export interface CohereRerankerConfig extends RerankerProviderConfig {
13
+ providerId: 'cohere';
14
+ /** Cohere API key (required) */
15
+ apiKey: string;
16
+ /** Base URL for Cohere API. Default: 'https://api.cohere.ai' */
17
+ baseUrl?: string;
18
+ }
19
+ /**
20
+ * Available Cohere reranker models.
21
+ */
22
+ export declare const COHERE_RERANKER_MODELS: readonly ["rerank-english-v3.0", "rerank-multilingual-v3.0", "rerank-english-v2.0", "rerank-multilingual-v2.0"];
23
+ export type CohereRerankerModel = (typeof COHERE_RERANKER_MODELS)[number];
24
+ /**
25
+ * Cohere Rerank API provider.
26
+ *
27
+ * Cloud-based cross-encoder reranking using Cohere's Rerank models.
28
+ * Provides high-quality relevance scoring with low latency (~100ms for 50 docs).
29
+ *
30
+ * **Pricing**: ~$0.10 per 1,000 search queries (as of 2024)
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const reranker = new CohereReranker({
35
+ * providerId: 'cohere',
36
+ * apiKey: process.env.COHERE_API_KEY!,
37
+ * defaultModelId: 'rerank-english-v3.0'
38
+ * });
39
+ *
40
+ * const result = await reranker.rerank(
41
+ * { query: 'machine learning', documents: [...] },
42
+ * { providerId: 'cohere', modelId: 'rerank-english-v3.0', topN: 5 }
43
+ * );
44
+ * ```
45
+ */
46
+ export declare class CohereReranker implements IRerankerProvider {
47
+ readonly providerId: "cohere";
48
+ private readonly apiKey;
49
+ private readonly baseUrl;
50
+ private readonly defaultModelId;
51
+ private readonly defaultTimeoutMs;
52
+ constructor(config: CohereRerankerConfig);
53
+ /**
54
+ * Check if the Cohere API is accessible.
55
+ */
56
+ isAvailable(): Promise<boolean>;
57
+ /**
58
+ * Get supported Cohere reranker models.
59
+ */
60
+ getSupportedModels(): string[];
61
+ /**
62
+ * Rerank documents using Cohere's Rerank API.
63
+ */
64
+ rerank(input: RerankerInput, config: RerankerRequestConfig): Promise<RerankerOutput>;
65
+ }
66
+ //# sourceMappingURL=CohereReranker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CohereReranker.d.ts","sourceRoot":"","sources":["../../../../src/rag/reranking/providers/CohereReranker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;IAClE,UAAU,EAAE,QAAQ,CAAC;IACrB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiBD;;GAEG;AACH,eAAO,MAAM,sBAAsB,iHAKzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IACtD,SAAgB,UAAU,EAAG,QAAQ,CAAU;IAE/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,MAAM,EAAE,oBAAoB;IAQxC;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS5C;;OAEG;IACI,kBAAkB,IAAI,MAAM,EAAE;IAIrC;;OAEG;IACU,MAAM,CACjB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,cAAc,CAAC;CAiF3B"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * @fileoverview Cohere Rerank API provider implementation.
3
+ * Uses Cohere's cloud-based cross-encoder reranking service.
4
+ *
5
+ * @module backend/agentos/rag/reranking/providers/CohereReranker
6
+ * @see https://docs.cohere.com/reference/rerank
7
+ */
8
+ /**
9
+ * Available Cohere reranker models.
10
+ */
11
+ export const COHERE_RERANKER_MODELS = [
12
+ 'rerank-english-v3.0',
13
+ 'rerank-multilingual-v3.0',
14
+ 'rerank-english-v2.0',
15
+ 'rerank-multilingual-v2.0',
16
+ ];
17
+ /**
18
+ * Cohere Rerank API provider.
19
+ *
20
+ * Cloud-based cross-encoder reranking using Cohere's Rerank models.
21
+ * Provides high-quality relevance scoring with low latency (~100ms for 50 docs).
22
+ *
23
+ * **Pricing**: ~$0.10 per 1,000 search queries (as of 2024)
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const reranker = new CohereReranker({
28
+ * providerId: 'cohere',
29
+ * apiKey: process.env.COHERE_API_KEY!,
30
+ * defaultModelId: 'rerank-english-v3.0'
31
+ * });
32
+ *
33
+ * const result = await reranker.rerank(
34
+ * { query: 'machine learning', documents: [...] },
35
+ * { providerId: 'cohere', modelId: 'rerank-english-v3.0', topN: 5 }
36
+ * );
37
+ * ```
38
+ */
39
+ export class CohereReranker {
40
+ constructor(config) {
41
+ this.providerId = 'cohere';
42
+ // Allow empty apiKey for graceful isAvailable() checks
43
+ this.apiKey = config.apiKey || '';
44
+ this.baseUrl = config.baseUrl ?? 'https://api.cohere.ai';
45
+ this.defaultModelId = config.defaultModelId ?? 'rerank-english-v3.0';
46
+ this.defaultTimeoutMs = config.defaultTimeoutMs ?? 30000;
47
+ }
48
+ /**
49
+ * Check if the Cohere API is accessible.
50
+ */
51
+ async isAvailable() {
52
+ try {
53
+ // Simple check - verify API key format
54
+ return this.apiKey.length > 0;
55
+ }
56
+ catch {
57
+ return false;
58
+ }
59
+ }
60
+ /**
61
+ * Get supported Cohere reranker models.
62
+ */
63
+ getSupportedModels() {
64
+ return [...COHERE_RERANKER_MODELS];
65
+ }
66
+ /**
67
+ * Rerank documents using Cohere's Rerank API.
68
+ */
69
+ async rerank(input, config) {
70
+ if (!this.apiKey) {
71
+ throw new Error('CohereReranker: apiKey is required for reranking');
72
+ }
73
+ const modelId = config.modelId || this.defaultModelId;
74
+ const timeoutMs = config.timeoutMs ?? this.defaultTimeoutMs;
75
+ const startTime = Date.now();
76
+ // Prepare request body
77
+ const requestBody = {
78
+ model: modelId,
79
+ query: input.query,
80
+ documents: input.documents.map((d) => d.content),
81
+ top_n: config.topN ?? input.documents.length,
82
+ return_documents: false,
83
+ ...config.params,
84
+ };
85
+ // Create abort controller for timeout
86
+ const controller = new AbortController();
87
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
88
+ try {
89
+ const response = await fetch(`${this.baseUrl}/v1/rerank`, {
90
+ method: 'POST',
91
+ headers: {
92
+ 'Authorization': `Bearer ${this.apiKey}`,
93
+ 'Content-Type': 'application/json',
94
+ 'X-Client-Name': 'agentos',
95
+ },
96
+ body: JSON.stringify(requestBody),
97
+ signal: controller.signal,
98
+ });
99
+ clearTimeout(timeoutId);
100
+ if (!response.ok) {
101
+ const errorText = await response.text();
102
+ throw new Error(`Cohere API error (${response.status}): ${errorText}`);
103
+ }
104
+ const data = await response.json();
105
+ const latencyMs = Date.now() - startTime;
106
+ // Map results back to documents (Cohere returns indices)
107
+ const results = data.results.map((r) => {
108
+ const doc = input.documents[r.index];
109
+ return {
110
+ id: doc.id,
111
+ content: doc.content,
112
+ relevanceScore: r.relevance_score,
113
+ originalScore: doc.originalScore,
114
+ metadata: doc.metadata,
115
+ };
116
+ });
117
+ return {
118
+ results,
119
+ diagnostics: {
120
+ modelId,
121
+ providerId: this.providerId,
122
+ latencyMs,
123
+ documentsProcessed: input.documents.length,
124
+ tokensUsed: data.meta?.billed_units?.search_units,
125
+ providerMetrics: {
126
+ cohereRequestId: data.id,
127
+ apiVersion: data.meta?.api_version?.version,
128
+ },
129
+ },
130
+ };
131
+ }
132
+ catch (error) {
133
+ clearTimeout(timeoutId);
134
+ if (error instanceof Error && error.name === 'AbortError') {
135
+ throw new Error(`CohereReranker: Request timed out after ${timeoutMs}ms`);
136
+ }
137
+ throw error;
138
+ }
139
+ }
140
+ }
141
+ //# sourceMappingURL=CohereReranker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CohereReranker.js","sourceRoot":"","sources":["../../../../src/rag/reranking/providers/CohereReranker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @fileoverview Local cross-encoder reranker using transformers.js or ONNX runtime.
3
+ * Runs reranking models locally without external API calls.
4
+ *
5
+ * @module backend/agentos/rag/reranking/providers/LocalCrossEncoderReranker
6
+ */
7
+ import type { IRerankerProvider, RerankerInput, RerankerOutput, RerankerRequestConfig, RerankerProviderConfig } from '../IRerankerService';
8
+ /**
9
+ * Local reranker configuration.
10
+ */
11
+ export interface LocalCrossEncoderConfig extends RerankerProviderConfig {
12
+ providerId: 'local';
13
+ /**
14
+ * Model ID from Hugging Face Hub.
15
+ * Default: 'cross-encoder/ms-marco-MiniLM-L-6-v2'
16
+ */
17
+ defaultModelId?: string;
18
+ /**
19
+ * Device to run inference on.
20
+ * - 'cpu': Use CPU (default, most compatible)
21
+ * - 'gpu': Use GPU if available (requires CUDA/WebGPU)
22
+ * - 'auto': Automatically select best available
23
+ */
24
+ device?: 'cpu' | 'gpu' | 'auto';
25
+ /**
26
+ * Maximum sequence length for the model.
27
+ * Default: 512
28
+ */
29
+ maxSequenceLength?: number;
30
+ /**
31
+ * Batch size for inference.
32
+ * Default: 32
33
+ */
34
+ batchSize?: number;
35
+ /**
36
+ * Path to cache downloaded models.
37
+ * Default: system cache directory
38
+ */
39
+ cacheDir?: string;
40
+ }
41
+ /**
42
+ * Available local cross-encoder models (Hugging Face model IDs).
43
+ */
44
+ export declare const LOCAL_RERANKER_MODELS: readonly ["cross-encoder/ms-marco-MiniLM-L-6-v2", "cross-encoder/ms-marco-MiniLM-L-12-v2", "BAAI/bge-reranker-base", "BAAI/bge-reranker-large", "sentence-transformers/ce-ms-marco-TinyBERT-L-4"];
45
+ export type LocalRerankerModel = (typeof LOCAL_RERANKER_MODELS)[number];
46
+ /**
47
+ * Local cross-encoder reranker.
48
+ *
49
+ * Runs cross-encoder models locally using transformers.js for Node.js/browser
50
+ * or ONNX runtime. No API calls, fully offline capable.
51
+ *
52
+ * **Performance**: ~200-500ms for 50 documents on CPU (varies by model/hardware)
53
+ *
54
+ * **Note**: First run downloads the model (~100-500MB depending on model).
55
+ * Subsequent runs use cached model.
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const reranker = new LocalCrossEncoderReranker({
60
+ * providerId: 'local',
61
+ * defaultModelId: 'cross-encoder/ms-marco-MiniLM-L-6-v2',
62
+ * device: 'cpu',
63
+ * batchSize: 32
64
+ * });
65
+ *
66
+ * await reranker.initialize(); // Downloads model if not cached
67
+ *
68
+ * const result = await reranker.rerank(
69
+ * { query: 'machine learning', documents: [...] },
70
+ * { providerId: 'local', modelId: 'cross-encoder/ms-marco-MiniLM-L-6-v2' }
71
+ * );
72
+ * ```
73
+ */
74
+ export declare class LocalCrossEncoderReranker implements IRerankerProvider {
75
+ readonly providerId: "local";
76
+ private readonly config;
77
+ private pipeline;
78
+ private isInitialized;
79
+ private initializationPromise;
80
+ constructor(config: LocalCrossEncoderConfig);
81
+ /**
82
+ * Initialize the model pipeline.
83
+ * Call this before first use or let rerank() handle lazy initialization.
84
+ */
85
+ initialize(modelId?: string): Promise<void>;
86
+ private _doInitialize;
87
+ /**
88
+ * Check if the local reranker is available.
89
+ */
90
+ isAvailable(): Promise<boolean>;
91
+ /**
92
+ * Get supported local reranker models.
93
+ */
94
+ getSupportedModels(): string[];
95
+ /**
96
+ * Rerank documents using a local cross-encoder model.
97
+ */
98
+ rerank(input: RerankerInput, config: RerankerRequestConfig): Promise<RerankerOutput>;
99
+ /**
100
+ * Unload the model from memory.
101
+ * Call this when you're done with the reranker to free resources.
102
+ */
103
+ dispose(): Promise<void>;
104
+ }
105
+ //# sourceMappingURL=LocalCrossEncoderReranker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalCrossEncoderReranker.d.ts","sourceRoot":"","sources":["../../../../src/rag/reranking/providers/LocalCrossEncoderReranker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAChC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,mMAMxB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;IACjE,SAAgB,UAAU,EAAG,OAAO,CAAU;IAE9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,qBAAqB,CAA8B;gBAE/C,MAAM,EAAE,uBAAuB;IAU3C;;;OAGG;IACU,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAgB1C,aAAa;IAkC3B;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAU5C;;OAEG;IACI,kBAAkB,IAAI,MAAM,EAAE;IAIrC;;OAEG;IACU,MAAM,CACjB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,cAAc,CAAC;IAwF1B;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAOtC"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * @fileoverview Local cross-encoder reranker using transformers.js or ONNX runtime.
3
+ * Runs reranking models locally without external API calls.
4
+ *
5
+ * @module backend/agentos/rag/reranking/providers/LocalCrossEncoderReranker
6
+ */
7
+ /**
8
+ * Available local cross-encoder models (Hugging Face model IDs).
9
+ */
10
+ export const LOCAL_RERANKER_MODELS = [
11
+ 'cross-encoder/ms-marco-MiniLM-L-6-v2', // Fast, good quality
12
+ 'cross-encoder/ms-marco-MiniLM-L-12-v2', // Better quality, slower
13
+ 'BAAI/bge-reranker-base', // BGE reranker (smaller)
14
+ 'BAAI/bge-reranker-large', // BGE reranker (larger, better)
15
+ 'sentence-transformers/ce-ms-marco-TinyBERT-L-4', // Tiny, fastest
16
+ ];
17
+ /**
18
+ * Local cross-encoder reranker.
19
+ *
20
+ * Runs cross-encoder models locally using transformers.js for Node.js/browser
21
+ * or ONNX runtime. No API calls, fully offline capable.
22
+ *
23
+ * **Performance**: ~200-500ms for 50 documents on CPU (varies by model/hardware)
24
+ *
25
+ * **Note**: First run downloads the model (~100-500MB depending on model).
26
+ * Subsequent runs use cached model.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const reranker = new LocalCrossEncoderReranker({
31
+ * providerId: 'local',
32
+ * defaultModelId: 'cross-encoder/ms-marco-MiniLM-L-6-v2',
33
+ * device: 'cpu',
34
+ * batchSize: 32
35
+ * });
36
+ *
37
+ * await reranker.initialize(); // Downloads model if not cached
38
+ *
39
+ * const result = await reranker.rerank(
40
+ * { query: 'machine learning', documents: [...] },
41
+ * { providerId: 'local', modelId: 'cross-encoder/ms-marco-MiniLM-L-6-v2' }
42
+ * );
43
+ * ```
44
+ */
45
+ export class LocalCrossEncoderReranker {
46
+ constructor(config) {
47
+ this.providerId = 'local';
48
+ this.pipeline = null;
49
+ this.isInitialized = false;
50
+ this.initializationPromise = null;
51
+ this.config = {
52
+ ...config,
53
+ defaultModelId: config.defaultModelId ?? 'cross-encoder/ms-marco-MiniLM-L-6-v2',
54
+ device: config.device ?? 'cpu',
55
+ maxSequenceLength: config.maxSequenceLength ?? 512,
56
+ batchSize: config.batchSize ?? 32,
57
+ };
58
+ }
59
+ /**
60
+ * Initialize the model pipeline.
61
+ * Call this before first use or let rerank() handle lazy initialization.
62
+ */
63
+ async initialize(modelId) {
64
+ if (this.isInitialized && !modelId) {
65
+ return;
66
+ }
67
+ // Prevent multiple concurrent initializations
68
+ if (this.initializationPromise) {
69
+ await this.initializationPromise;
70
+ return;
71
+ }
72
+ this.initializationPromise = this._doInitialize(modelId ?? this.config.defaultModelId);
73
+ await this.initializationPromise;
74
+ this.initializationPromise = null;
75
+ }
76
+ async _doInitialize(modelId) {
77
+ try {
78
+ // Dynamic import to avoid bundling issues and allow optional dependency
79
+ const { pipeline, env } = await import('@xenova/transformers');
80
+ // Configure cache directory if specified
81
+ if (this.config.cacheDir) {
82
+ env.cacheDir = this.config.cacheDir;
83
+ }
84
+ // Configure device
85
+ if (this.config.device === 'gpu') {
86
+ env.backends.onnx.wasm.numThreads = 1; // Use GPU
87
+ }
88
+ // Load the cross-encoder pipeline
89
+ // For cross-encoders, we use 'text-classification' pipeline
90
+ // since they output a relevance score
91
+ this.pipeline = await pipeline('text-classification', modelId, {
92
+ quantized: true, // Use quantized model for faster inference
93
+ });
94
+ this.isInitialized = true;
95
+ }
96
+ catch (error) {
97
+ if (error instanceof Error && error.message.includes('Cannot find module')) {
98
+ throw new Error('LocalCrossEncoderReranker: @xenova/transformers is not installed. ' +
99
+ 'Install it with: pnpm add @xenova/transformers');
100
+ }
101
+ throw error;
102
+ }
103
+ }
104
+ /**
105
+ * Check if the local reranker is available.
106
+ */
107
+ async isAvailable() {
108
+ try {
109
+ // Check if transformers.js is available
110
+ await import('@xenova/transformers');
111
+ return true;
112
+ }
113
+ catch {
114
+ return false;
115
+ }
116
+ }
117
+ /**
118
+ * Get supported local reranker models.
119
+ */
120
+ getSupportedModels() {
121
+ return [...LOCAL_RERANKER_MODELS];
122
+ }
123
+ /**
124
+ * Rerank documents using a local cross-encoder model.
125
+ */
126
+ async rerank(input, config) {
127
+ const modelId = config.modelId || this.config.defaultModelId;
128
+ const startTime = Date.now();
129
+ // Lazy initialization
130
+ if (!this.isInitialized) {
131
+ await this.initialize(modelId);
132
+ }
133
+ // Cross-encoders take query-document pairs and output relevance scores
134
+ // Format: "query [SEP] document" or as separate inputs depending on model
135
+ const pairs = input.documents.map((doc) => ({
136
+ text: input.query,
137
+ text_pair: doc.content,
138
+ }));
139
+ // Process in batches
140
+ const batchSize = this.config.batchSize;
141
+ const scores = [];
142
+ for (let i = 0; i < pairs.length; i += batchSize) {
143
+ const batch = pairs.slice(i, i + batchSize);
144
+ // Run inference
145
+ // Most cross-encoders output a single score (or logits that we convert to score)
146
+ for (const pair of batch) {
147
+ try {
148
+ // transformers.js text-classification returns array of {label, score}
149
+ // For cross-encoders, we typically want the positive class score
150
+ const result = await this.pipeline(`${pair.text} [SEP] ${pair.text_pair}`, {
151
+ truncation: true,
152
+ max_length: this.config.maxSequenceLength,
153
+ });
154
+ // Handle different output formats
155
+ let score;
156
+ if (Array.isArray(result) && result.length > 0) {
157
+ // Standard text-classification output
158
+ // For binary classifiers: find LABEL_1 or positive class
159
+ const positiveResult = result.find((r) => r.label === 'LABEL_1' || r.label === 'POSITIVE' || r.label === '1');
160
+ score = positiveResult?.score ?? result[0].score;
161
+ }
162
+ else if (typeof result === 'number') {
163
+ score = result;
164
+ }
165
+ else {
166
+ score = 0;
167
+ }
168
+ scores.push(score);
169
+ }
170
+ catch (error) {
171
+ console.warn(`LocalCrossEncoderReranker: Error scoring document, using 0:`, error);
172
+ scores.push(0);
173
+ }
174
+ }
175
+ }
176
+ const latencyMs = Date.now() - startTime;
177
+ // Combine scores with documents and sort by score descending
178
+ const scoredDocs = input.documents.map((doc, idx) => ({
179
+ id: doc.id,
180
+ content: doc.content,
181
+ relevanceScore: scores[idx],
182
+ originalScore: doc.originalScore,
183
+ metadata: doc.metadata,
184
+ }));
185
+ scoredDocs.sort((a, b) => b.relevanceScore - a.relevanceScore);
186
+ // Apply topN if specified
187
+ const results = config.topN ? scoredDocs.slice(0, config.topN) : scoredDocs;
188
+ return {
189
+ results,
190
+ diagnostics: {
191
+ modelId,
192
+ providerId: this.providerId,
193
+ latencyMs,
194
+ documentsProcessed: input.documents.length,
195
+ providerMetrics: {
196
+ batchSize: this.config.batchSize,
197
+ device: this.config.device,
198
+ },
199
+ },
200
+ };
201
+ }
202
+ /**
203
+ * Unload the model from memory.
204
+ * Call this when you're done with the reranker to free resources.
205
+ */
206
+ async dispose() {
207
+ if (this.pipeline && typeof this.pipeline.dispose === 'function') {
208
+ await this.pipeline.dispose();
209
+ }
210
+ this.pipeline = null;
211
+ this.isInitialized = false;
212
+ }
213
+ }
214
+ //# sourceMappingURL=LocalCrossEncoderReranker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalCrossEncoderReranker.js","sourceRoot":"","sources":["../../../../src/rag/reranking/providers/LocalCrossEncoderReranker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview Reranker provider implementations.
3
+ * @module backend/agentos/rag/reranking/providers
4
+ */
5
+ export { CohereReranker, type CohereRerankerConfig, COHERE_RERANKER_MODELS, type CohereRerankerModel } from './CohereReranker';
6
+ export { LocalCrossEncoderReranker, type LocalCrossEncoderConfig, LOCAL_RERANKER_MODELS, type LocalRerankerModel } from './LocalCrossEncoderReranker';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/rag/reranking/providers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC/H,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview Reranker provider implementations.
3
+ * @module backend/agentos/rag/reranking/providers
4
+ */
5
+ export { CohereReranker, COHERE_RERANKER_MODELS } from './CohereReranker.js';
6
+ export { LocalCrossEncoderReranker, LOCAL_RERANKER_MODELS } from './LocalCrossEncoderReranker.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rag/reranking/providers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAA6B,sBAAsB,EAA4B,MAAM,kBAAkB,CAAC;AAC/H,OAAO,EAAE,yBAAyB,EAAgC,qBAAqB,EAA2B,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Reranking module test suite index
3
+ * @module backend/agentos/rag/reranking/tests
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/rag/reranking/tests/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @fileoverview Reranking module test suite index
3
+ * @module backend/agentos/rag/reranking/tests
4
+ */
5
+ export {};
6
+ // Test utilities and fixtures for reranking tests
7
+ // Import individual test files to run the suite:
8
+ // - RerankerService.test.ts
9
+ // - CohereReranker.test.ts
10
+ // - LocalCrossEncoderReranker.test.ts
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rag/reranking/tests/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAIH,kDAAkD;AAClD,iDAAiD;AACjD,4BAA4B;AAC5B,2BAA2B;AAC3B,sCAAsC"}
@@ -0,0 +1,5 @@
1
+ declare module '@xenova/transformers' {
2
+ const env: any;
3
+ const pipeline: any;
4
+ }
5
+ //# sourceMappingURL=optionalDependencies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optionalDependencies.d.ts","sourceRoot":"","sources":["../../src/types/optionalDependencies.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,sBAAsB,CAAC;IAE7B,MAAM,GAAG,EAAE,GAAG,CAAC;IACf,MAAM,QAAQ,EAAE,GAAG,CAAC;CAC5B"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Optional dependency shims for TypeScript builds.
3
+ // These modules are loaded dynamically at runtime when installed.
4
+ //# sourceMappingURL=optionalDependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optionalDependencies.js","sourceRoot":"","sources":["../../src/types/optionalDependencies.ts"],"names":[],"mappings":";AAAA,mDAAmD;AACnD,kEAAkE"}