@framers/agentos 0.1.119 → 0.1.121

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 (409) hide show
  1. package/README.md +21 -0
  2. package/dist/api/agency.d.ts.map +1 -1
  3. package/dist/api/agency.js +227 -84
  4. package/dist/api/agency.js.map +1 -1
  5. package/dist/api/analyzeVideo.d.ts +127 -0
  6. package/dist/api/analyzeVideo.d.ts.map +1 -0
  7. package/dist/api/analyzeVideo.js +136 -0
  8. package/dist/api/analyzeVideo.js.map +1 -0
  9. package/dist/api/detectScenes.d.ts +82 -0
  10. package/dist/api/detectScenes.d.ts.map +1 -0
  11. package/dist/api/detectScenes.js +67 -0
  12. package/dist/api/detectScenes.js.map +1 -0
  13. package/dist/api/generateImage.d.ts +7 -0
  14. package/dist/api/generateImage.d.ts.map +1 -1
  15. package/dist/api/generateImage.js +133 -9
  16. package/dist/api/generateImage.js.map +1 -1
  17. package/dist/api/generateMusic.d.ts +98 -0
  18. package/dist/api/generateMusic.d.ts.map +1 -0
  19. package/dist/api/generateMusic.js +319 -0
  20. package/dist/api/generateMusic.js.map +1 -0
  21. package/dist/api/generateSFX.d.ts +96 -0
  22. package/dist/api/generateSFX.d.ts.map +1 -0
  23. package/dist/api/generateSFX.js +317 -0
  24. package/dist/api/generateSFX.js.map +1 -0
  25. package/dist/api/generateVideo.d.ts +113 -0
  26. package/dist/api/generateVideo.d.ts.map +1 -0
  27. package/dist/api/generateVideo.js +342 -0
  28. package/dist/api/generateVideo.js.map +1 -0
  29. package/dist/api/model.d.ts.map +1 -1
  30. package/dist/api/model.js +8 -4
  31. package/dist/api/model.js.map +1 -1
  32. package/dist/api/performOCR.d.ts +169 -0
  33. package/dist/api/performOCR.d.ts.map +1 -0
  34. package/dist/api/performOCR.js +198 -0
  35. package/dist/api/performOCR.js.map +1 -0
  36. package/dist/api/provider-defaults.d.ts +7 -5
  37. package/dist/api/provider-defaults.d.ts.map +1 -1
  38. package/dist/api/provider-defaults.js +32 -10
  39. package/dist/api/provider-defaults.js.map +1 -1
  40. package/dist/api/strategies/debate.d.ts.map +1 -1
  41. package/dist/api/strategies/debate.js +1 -0
  42. package/dist/api/strategies/debate.js.map +1 -1
  43. package/dist/api/strategies/graph.d.ts.map +1 -1
  44. package/dist/api/strategies/graph.js +69 -13
  45. package/dist/api/strategies/graph.js.map +1 -1
  46. package/dist/api/strategies/hierarchical.d.ts.map +1 -1
  47. package/dist/api/strategies/hierarchical.js +1 -0
  48. package/dist/api/strategies/hierarchical.js.map +1 -1
  49. package/dist/api/strategies/parallel.d.ts.map +1 -1
  50. package/dist/api/strategies/parallel.js +1 -0
  51. package/dist/api/strategies/parallel.js.map +1 -1
  52. package/dist/api/strategies/review-loop.d.ts.map +1 -1
  53. package/dist/api/strategies/review-loop.js +1 -0
  54. package/dist/api/strategies/review-loop.js.map +1 -1
  55. package/dist/api/strategies/sequential.d.ts.map +1 -1
  56. package/dist/api/strategies/sequential.js +54 -48
  57. package/dist/api/strategies/sequential.js.map +1 -1
  58. package/dist/api/streamBuffer.d.ts +20 -0
  59. package/dist/api/streamBuffer.d.ts.map +1 -0
  60. package/dist/api/streamBuffer.js +81 -0
  61. package/dist/api/streamBuffer.js.map +1 -0
  62. package/dist/api/types.d.ts +145 -5
  63. package/dist/api/types.d.ts.map +1 -1
  64. package/dist/api/types.js.map +1 -1
  65. package/dist/channels/adapters/RedditChannelAdapter.js.map +1 -1
  66. package/dist/core/audio/AudioProcessor.d.ts.map +1 -1
  67. package/dist/core/audio/AudioProcessor.js +1 -0
  68. package/dist/core/audio/AudioProcessor.js.map +1 -1
  69. package/dist/core/audio/EnvironmentalCalibrator.d.ts.map +1 -1
  70. package/dist/core/audio/EnvironmentalCalibrator.js +1 -0
  71. package/dist/core/audio/EnvironmentalCalibrator.js.map +1 -1
  72. package/dist/core/audio/FallbackAudioProxy.d.ts +169 -0
  73. package/dist/core/audio/FallbackAudioProxy.d.ts.map +1 -0
  74. package/dist/core/audio/FallbackAudioProxy.js +236 -0
  75. package/dist/core/audio/FallbackAudioProxy.js.map +1 -0
  76. package/dist/core/audio/IAudioGenerator.d.ts +103 -0
  77. package/dist/core/audio/IAudioGenerator.d.ts.map +1 -0
  78. package/dist/core/audio/IAudioGenerator.js +24 -0
  79. package/dist/core/audio/IAudioGenerator.js.map +1 -0
  80. package/dist/core/audio/index.d.ts +54 -0
  81. package/dist/core/audio/index.d.ts.map +1 -1
  82. package/dist/core/audio/index.js +93 -0
  83. package/dist/core/audio/index.js.map +1 -1
  84. package/dist/core/audio/providers/AudioGenLocalProvider.d.ts +136 -0
  85. package/dist/core/audio/providers/AudioGenLocalProvider.d.ts.map +1 -0
  86. package/dist/core/audio/providers/AudioGenLocalProvider.js +235 -0
  87. package/dist/core/audio/providers/AudioGenLocalProvider.js.map +1 -0
  88. package/dist/core/audio/providers/ElevenLabsSFXProvider.d.ts +107 -0
  89. package/dist/core/audio/providers/ElevenLabsSFXProvider.d.ts.map +1 -0
  90. package/dist/core/audio/providers/ElevenLabsSFXProvider.js +154 -0
  91. package/dist/core/audio/providers/ElevenLabsSFXProvider.js.map +1 -0
  92. package/dist/core/audio/providers/FalAudioProvider.d.ts +207 -0
  93. package/dist/core/audio/providers/FalAudioProvider.d.ts.map +1 -0
  94. package/dist/core/audio/providers/FalAudioProvider.js +315 -0
  95. package/dist/core/audio/providers/FalAudioProvider.js.map +1 -0
  96. package/dist/core/audio/providers/MusicGenLocalProvider.d.ts +136 -0
  97. package/dist/core/audio/providers/MusicGenLocalProvider.d.ts.map +1 -0
  98. package/dist/core/audio/providers/MusicGenLocalProvider.js +235 -0
  99. package/dist/core/audio/providers/MusicGenLocalProvider.js.map +1 -0
  100. package/dist/core/audio/providers/ReplicateAudioProvider.d.ts +200 -0
  101. package/dist/core/audio/providers/ReplicateAudioProvider.d.ts.map +1 -0
  102. package/dist/core/audio/providers/ReplicateAudioProvider.js +346 -0
  103. package/dist/core/audio/providers/ReplicateAudioProvider.js.map +1 -0
  104. package/dist/core/audio/providers/StableAudioProvider.d.ts +138 -0
  105. package/dist/core/audio/providers/StableAudioProvider.d.ts.map +1 -0
  106. package/dist/core/audio/providers/StableAudioProvider.js +192 -0
  107. package/dist/core/audio/providers/StableAudioProvider.js.map +1 -0
  108. package/dist/core/audio/providers/SunoProvider.d.ts +182 -0
  109. package/dist/core/audio/providers/SunoProvider.d.ts.map +1 -0
  110. package/dist/core/audio/providers/SunoProvider.js +312 -0
  111. package/dist/core/audio/providers/SunoProvider.js.map +1 -0
  112. package/dist/core/audio/providers/UdioProvider.d.ts +177 -0
  113. package/dist/core/audio/providers/UdioProvider.d.ts.map +1 -0
  114. package/dist/core/audio/providers/UdioProvider.js +305 -0
  115. package/dist/core/audio/providers/UdioProvider.js.map +1 -0
  116. package/dist/core/audio/types.d.ts +257 -0
  117. package/dist/core/audio/types.d.ts.map +1 -0
  118. package/dist/core/audio/types.js +21 -0
  119. package/dist/core/audio/types.js.map +1 -0
  120. package/dist/core/images/FallbackImageProxy.d.ts +183 -0
  121. package/dist/core/images/FallbackImageProxy.d.ts.map +1 -0
  122. package/dist/core/images/FallbackImageProxy.js +283 -0
  123. package/dist/core/images/FallbackImageProxy.js.map +1 -0
  124. package/dist/core/images/IImageProvider.d.ts +1 -1
  125. package/dist/core/images/IImageProvider.d.ts.map +1 -1
  126. package/dist/core/images/index.d.ts +1 -0
  127. package/dist/core/images/index.d.ts.map +1 -1
  128. package/dist/core/images/index.js +1 -0
  129. package/dist/core/images/index.js.map +1 -1
  130. package/dist/core/llm/providers/AIModelProviderManager.d.ts +3 -1
  131. package/dist/core/llm/providers/AIModelProviderManager.d.ts.map +1 -1
  132. package/dist/core/llm/providers/AIModelProviderManager.js +8 -0
  133. package/dist/core/llm/providers/AIModelProviderManager.js.map +1 -1
  134. package/dist/core/llm/providers/errors/ClaudeCodeProviderError.d.ts +52 -0
  135. package/dist/core/llm/providers/errors/ClaudeCodeProviderError.d.ts.map +1 -0
  136. package/dist/core/llm/providers/errors/ClaudeCodeProviderError.js +36 -0
  137. package/dist/core/llm/providers/errors/ClaudeCodeProviderError.js.map +1 -0
  138. package/dist/core/llm/providers/errors/GeminiCLIProviderError.d.ts +32 -0
  139. package/dist/core/llm/providers/errors/GeminiCLIProviderError.d.ts.map +1 -0
  140. package/dist/core/llm/providers/errors/GeminiCLIProviderError.js +27 -0
  141. package/dist/core/llm/providers/errors/GeminiCLIProviderError.js.map +1 -0
  142. package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.d.ts +38 -0
  143. package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.d.ts.map +1 -0
  144. package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.js +128 -0
  145. package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.js.map +1 -0
  146. package/dist/core/llm/providers/implementations/ClaudeCodeProvider.d.ts +107 -0
  147. package/dist/core/llm/providers/implementations/ClaudeCodeProvider.d.ts.map +1 -0
  148. package/dist/core/llm/providers/implementations/ClaudeCodeProvider.js +504 -0
  149. package/dist/core/llm/providers/implementations/ClaudeCodeProvider.js.map +1 -0
  150. package/dist/core/llm/providers/implementations/GeminiCLIBridge.d.ts +60 -0
  151. package/dist/core/llm/providers/implementations/GeminiCLIBridge.d.ts.map +1 -0
  152. package/dist/core/llm/providers/implementations/GeminiCLIBridge.js +177 -0
  153. package/dist/core/llm/providers/implementations/GeminiCLIBridge.js.map +1 -0
  154. package/dist/core/llm/providers/implementations/GeminiCLIProvider.d.ts +55 -0
  155. package/dist/core/llm/providers/implementations/GeminiCLIProvider.d.ts.map +1 -0
  156. package/dist/core/llm/providers/implementations/GeminiCLIProvider.js +447 -0
  157. package/dist/core/llm/providers/implementations/GeminiCLIProvider.js.map +1 -0
  158. package/dist/core/media/ProviderPreferences.d.ts +158 -0
  159. package/dist/core/media/ProviderPreferences.d.ts.map +1 -0
  160. package/dist/core/media/ProviderPreferences.js +183 -0
  161. package/dist/core/media/ProviderPreferences.js.map +1 -0
  162. package/dist/core/subprocess/CLIRegistry.d.ts +71 -0
  163. package/dist/core/subprocess/CLIRegistry.d.ts.map +1 -0
  164. package/dist/core/subprocess/CLIRegistry.js +210 -0
  165. package/dist/core/subprocess/CLIRegistry.js.map +1 -0
  166. package/dist/core/subprocess/CLISubprocessBridge.d.ts +117 -0
  167. package/dist/core/subprocess/CLISubprocessBridge.d.ts.map +1 -0
  168. package/dist/core/subprocess/CLISubprocessBridge.js +199 -0
  169. package/dist/core/subprocess/CLISubprocessBridge.js.map +1 -0
  170. package/dist/core/subprocess/errors.d.ts +76 -0
  171. package/dist/core/subprocess/errors.d.ts.map +1 -0
  172. package/dist/core/subprocess/errors.js +75 -0
  173. package/dist/core/subprocess/errors.js.map +1 -0
  174. package/dist/core/subprocess/index.d.ts +11 -0
  175. package/dist/core/subprocess/index.d.ts.map +1 -0
  176. package/dist/core/subprocess/index.js +10 -0
  177. package/dist/core/subprocess/index.js.map +1 -0
  178. package/dist/core/subprocess/types.d.ts +100 -0
  179. package/dist/core/subprocess/types.d.ts.map +1 -0
  180. package/dist/core/subprocess/types.js +9 -0
  181. package/dist/core/subprocess/types.js.map +1 -0
  182. package/dist/core/video/FallbackVideoProxy.d.ts +166 -0
  183. package/dist/core/video/FallbackVideoProxy.d.ts.map +1 -0
  184. package/dist/core/video/FallbackVideoProxy.js +228 -0
  185. package/dist/core/video/FallbackVideoProxy.js.map +1 -0
  186. package/dist/core/video/IVideoAnalyzer.d.ts +29 -0
  187. package/dist/core/video/IVideoAnalyzer.d.ts.map +1 -0
  188. package/dist/core/video/IVideoAnalyzer.js +12 -0
  189. package/dist/core/video/IVideoAnalyzer.js.map +1 -0
  190. package/dist/core/video/IVideoGenerator.d.ts +76 -0
  191. package/dist/core/video/IVideoGenerator.d.ts.map +1 -0
  192. package/dist/core/video/IVideoGenerator.js +13 -0
  193. package/dist/core/video/IVideoGenerator.js.map +1 -0
  194. package/dist/core/video/VideoAnalyzer.d.ts +278 -0
  195. package/dist/core/video/VideoAnalyzer.d.ts.map +1 -0
  196. package/dist/core/video/VideoAnalyzer.js +648 -0
  197. package/dist/core/video/VideoAnalyzer.js.map +1 -0
  198. package/dist/core/video/index.d.ts +55 -0
  199. package/dist/core/video/index.d.ts.map +1 -0
  200. package/dist/core/video/index.js +78 -0
  201. package/dist/core/video/index.js.map +1 -0
  202. package/dist/core/video/providers/FalVideoProvider.d.ts +195 -0
  203. package/dist/core/video/providers/FalVideoProvider.d.ts.map +1 -0
  204. package/dist/core/video/providers/FalVideoProvider.js +322 -0
  205. package/dist/core/video/providers/FalVideoProvider.js.map +1 -0
  206. package/dist/core/video/providers/ReplicateVideoProvider.d.ts +194 -0
  207. package/dist/core/video/providers/ReplicateVideoProvider.d.ts.map +1 -0
  208. package/dist/core/video/providers/ReplicateVideoProvider.js +356 -0
  209. package/dist/core/video/providers/ReplicateVideoProvider.js.map +1 -0
  210. package/dist/core/video/providers/RunwayVideoProvider.d.ts +175 -0
  211. package/dist/core/video/providers/RunwayVideoProvider.d.ts.map +1 -0
  212. package/dist/core/video/providers/RunwayVideoProvider.js +293 -0
  213. package/dist/core/video/providers/RunwayVideoProvider.js.map +1 -0
  214. package/dist/core/video/types.d.ts +441 -0
  215. package/dist/core/video/types.d.ts.map +1 -0
  216. package/dist/core/video/types.js +10 -0
  217. package/dist/core/video/types.js.map +1 -0
  218. package/dist/core/vision/SceneDetector.d.ts +180 -0
  219. package/dist/core/vision/SceneDetector.d.ts.map +1 -0
  220. package/dist/core/vision/SceneDetector.js +366 -0
  221. package/dist/core/vision/SceneDetector.js.map +1 -0
  222. package/dist/core/vision/index.d.ts +2 -1
  223. package/dist/core/vision/index.d.ts.map +1 -1
  224. package/dist/core/vision/index.js +1 -0
  225. package/dist/core/vision/index.js.map +1 -1
  226. package/dist/core/vision/types.d.ts +125 -0
  227. package/dist/core/vision/types.d.ts.map +1 -1
  228. package/dist/discovery/CapabilityDiscoveryEngine.d.ts +32 -0
  229. package/dist/discovery/CapabilityDiscoveryEngine.d.ts.map +1 -1
  230. package/dist/discovery/CapabilityDiscoveryEngine.js +46 -0
  231. package/dist/discovery/CapabilityDiscoveryEngine.js.map +1 -1
  232. package/dist/extensions/MultiRegistryLoader.js.map +1 -1
  233. package/dist/index.d.ts +17 -2
  234. package/dist/index.d.ts.map +1 -1
  235. package/dist/index.js +12 -0
  236. package/dist/index.js.map +1 -1
  237. package/dist/memory/CognitiveMemoryManager.d.ts +40 -0
  238. package/dist/memory/CognitiveMemoryManager.d.ts.map +1 -1
  239. package/dist/memory/CognitiveMemoryManager.js +54 -1
  240. package/dist/memory/CognitiveMemoryManager.js.map +1 -1
  241. package/dist/memory/facade/Memory.d.ts +4 -0
  242. package/dist/memory/facade/Memory.d.ts.map +1 -1
  243. package/dist/memory/facade/Memory.js +140 -4
  244. package/dist/memory/facade/Memory.js.map +1 -1
  245. package/dist/memory/facade/types.d.ts +30 -2
  246. package/dist/memory/facade/types.d.ts.map +1 -1
  247. package/dist/memory/index.d.ts +1 -0
  248. package/dist/memory/index.d.ts.map +1 -1
  249. package/dist/memory/index.js +1 -0
  250. package/dist/memory/index.js.map +1 -1
  251. package/dist/memory/store/HnswSidecar.d.ts +115 -0
  252. package/dist/memory/store/HnswSidecar.d.ts.map +1 -0
  253. package/dist/memory/store/HnswSidecar.js +256 -0
  254. package/dist/memory/store/HnswSidecar.js.map +1 -0
  255. package/dist/memory/types.d.ts +15 -0
  256. package/dist/memory/types.d.ts.map +1 -1
  257. package/dist/query-router/QueryClassifier.d.ts +192 -21
  258. package/dist/query-router/QueryClassifier.d.ts.map +1 -1
  259. package/dist/query-router/QueryClassifier.js +604 -23
  260. package/dist/query-router/QueryClassifier.js.map +1 -1
  261. package/dist/query-router/QueryDispatcher.d.ts +106 -8
  262. package/dist/query-router/QueryDispatcher.d.ts.map +1 -1
  263. package/dist/query-router/QueryDispatcher.js +387 -8
  264. package/dist/query-router/QueryDispatcher.js.map +1 -1
  265. package/dist/query-router/QueryRouter.d.ts +198 -14
  266. package/dist/query-router/QueryRouter.d.ts.map +1 -1
  267. package/dist/query-router/QueryRouter.js +738 -50
  268. package/dist/query-router/QueryRouter.js.map +1 -1
  269. package/dist/query-router/index.d.ts +1 -1
  270. package/dist/query-router/index.d.ts.map +1 -1
  271. package/dist/query-router/index.js +1 -1
  272. package/dist/query-router/index.js.map +1 -1
  273. package/dist/query-router/types.d.ts +396 -3
  274. package/dist/query-router/types.d.ts.map +1 -1
  275. package/dist/query-router/types.js +35 -0
  276. package/dist/query-router/types.js.map +1 -1
  277. package/dist/rag/HydeRetriever.d.ts +108 -0
  278. package/dist/rag/HydeRetriever.d.ts.map +1 -1
  279. package/dist/rag/HydeRetriever.js +184 -0
  280. package/dist/rag/HydeRetriever.js.map +1 -1
  281. package/dist/rag/IRetrievalAugmentor.d.ts +15 -0
  282. package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -1
  283. package/dist/rag/RetrievalAugmentor.d.ts +58 -0
  284. package/dist/rag/RetrievalAugmentor.d.ts.map +1 -1
  285. package/dist/rag/RetrievalAugmentor.js +200 -32
  286. package/dist/rag/RetrievalAugmentor.js.map +1 -1
  287. package/dist/rag/VectorStoreManager.js +1 -1
  288. package/dist/rag/audit/RAGAuditCollector.d.ts +7 -0
  289. package/dist/rag/audit/RAGAuditCollector.d.ts.map +1 -1
  290. package/dist/rag/audit/RAGAuditCollector.js +10 -0
  291. package/dist/rag/audit/RAGAuditCollector.js.map +1 -1
  292. package/dist/rag/audit/RAGAuditTypes.d.ts +10 -1
  293. package/dist/rag/audit/RAGAuditTypes.d.ts.map +1 -1
  294. package/dist/rag/chunking/SemanticChunker.d.ts +210 -0
  295. package/dist/rag/chunking/SemanticChunker.d.ts.map +1 -0
  296. package/dist/rag/chunking/SemanticChunker.js +460 -0
  297. package/dist/rag/chunking/SemanticChunker.js.map +1 -0
  298. package/dist/rag/chunking/index.d.ts +10 -0
  299. package/dist/rag/chunking/index.d.ts.map +1 -0
  300. package/dist/rag/chunking/index.js +10 -0
  301. package/dist/rag/chunking/index.js.map +1 -0
  302. package/dist/rag/implementations/vector_stores/PineconeVectorStore.d.ts +103 -0
  303. package/dist/rag/implementations/vector_stores/PineconeVectorStore.d.ts.map +1 -0
  304. package/dist/rag/implementations/vector_stores/PineconeVectorStore.js +315 -0
  305. package/dist/rag/implementations/vector_stores/PineconeVectorStore.js.map +1 -0
  306. package/dist/rag/implementations/vector_stores/PostgresVectorStore.d.ts +107 -0
  307. package/dist/rag/implementations/vector_stores/PostgresVectorStore.d.ts.map +1 -0
  308. package/dist/rag/implementations/vector_stores/PostgresVectorStore.js +438 -0
  309. package/dist/rag/implementations/vector_stores/PostgresVectorStore.js.map +1 -0
  310. package/dist/rag/index.d.ts +15 -1
  311. package/dist/rag/index.d.ts.map +1 -1
  312. package/dist/rag/index.js +32 -0
  313. package/dist/rag/index.js.map +1 -1
  314. package/dist/rag/migration/MigrationEngine.d.ts +47 -0
  315. package/dist/rag/migration/MigrationEngine.d.ts.map +1 -0
  316. package/dist/rag/migration/MigrationEngine.js +168 -0
  317. package/dist/rag/migration/MigrationEngine.js.map +1 -0
  318. package/dist/rag/migration/adapters/PineconeSourceAdapter.d.ts +23 -0
  319. package/dist/rag/migration/adapters/PineconeSourceAdapter.d.ts.map +1 -0
  320. package/dist/rag/migration/adapters/PineconeSourceAdapter.js +63 -0
  321. package/dist/rag/migration/adapters/PineconeSourceAdapter.js.map +1 -0
  322. package/dist/rag/migration/adapters/PostgresSourceAdapter.d.ts +30 -0
  323. package/dist/rag/migration/adapters/PostgresSourceAdapter.d.ts.map +1 -0
  324. package/dist/rag/migration/adapters/PostgresSourceAdapter.js +71 -0
  325. package/dist/rag/migration/adapters/PostgresSourceAdapter.js.map +1 -0
  326. package/dist/rag/migration/adapters/PostgresTargetAdapter.d.ts +38 -0
  327. package/dist/rag/migration/adapters/PostgresTargetAdapter.d.ts.map +1 -0
  328. package/dist/rag/migration/adapters/PostgresTargetAdapter.js +114 -0
  329. package/dist/rag/migration/adapters/PostgresTargetAdapter.js.map +1 -0
  330. package/dist/rag/migration/adapters/QdrantSourceAdapter.d.ts +36 -0
  331. package/dist/rag/migration/adapters/QdrantSourceAdapter.d.ts.map +1 -0
  332. package/dist/rag/migration/adapters/QdrantSourceAdapter.js +109 -0
  333. package/dist/rag/migration/adapters/QdrantSourceAdapter.js.map +1 -0
  334. package/dist/rag/migration/adapters/QdrantTargetAdapter.d.ts +35 -0
  335. package/dist/rag/migration/adapters/QdrantTargetAdapter.d.ts.map +1 -0
  336. package/dist/rag/migration/adapters/QdrantTargetAdapter.js +110 -0
  337. package/dist/rag/migration/adapters/QdrantTargetAdapter.js.map +1 -0
  338. package/dist/rag/migration/adapters/SqliteSourceAdapter.d.ts +37 -0
  339. package/dist/rag/migration/adapters/SqliteSourceAdapter.d.ts.map +1 -0
  340. package/dist/rag/migration/adapters/SqliteSourceAdapter.js +72 -0
  341. package/dist/rag/migration/adapters/SqliteSourceAdapter.js.map +1 -0
  342. package/dist/rag/migration/adapters/SqliteTargetAdapter.d.ts +47 -0
  343. package/dist/rag/migration/adapters/SqliteTargetAdapter.d.ts.map +1 -0
  344. package/dist/rag/migration/adapters/SqliteTargetAdapter.js +93 -0
  345. package/dist/rag/migration/adapters/SqliteTargetAdapter.js.map +1 -0
  346. package/dist/rag/migration/types.d.ts +108 -0
  347. package/dist/rag/migration/types.d.ts.map +1 -0
  348. package/dist/rag/migration/types.js +11 -0
  349. package/dist/rag/migration/types.js.map +1 -0
  350. package/dist/rag/multimodal/MultimodalIndexer.d.ts +35 -0
  351. package/dist/rag/multimodal/MultimodalIndexer.d.ts.map +1 -1
  352. package/dist/rag/multimodal/MultimodalIndexer.js +66 -1
  353. package/dist/rag/multimodal/MultimodalIndexer.js.map +1 -1
  354. package/dist/rag/multimodal/types.d.ts +24 -0
  355. package/dist/rag/multimodal/types.d.ts.map +1 -1
  356. package/dist/rag/raptor/RaptorTree.d.ts +268 -0
  357. package/dist/rag/raptor/RaptorTree.d.ts.map +1 -0
  358. package/dist/rag/raptor/RaptorTree.js +443 -0
  359. package/dist/rag/raptor/RaptorTree.js.map +1 -0
  360. package/dist/rag/raptor/index.d.ts +11 -0
  361. package/dist/rag/raptor/index.d.ts.map +1 -0
  362. package/dist/rag/raptor/index.js +11 -0
  363. package/dist/rag/raptor/index.js.map +1 -0
  364. package/dist/rag/reranking/providers/CohereReranker.js.map +1 -1
  365. package/dist/rag/search/BM25Index.d.ts +282 -0
  366. package/dist/rag/search/BM25Index.d.ts.map +1 -0
  367. package/dist/rag/search/BM25Index.js +344 -0
  368. package/dist/rag/search/BM25Index.js.map +1 -0
  369. package/dist/rag/search/HybridSearcher.d.ts +198 -0
  370. package/dist/rag/search/HybridSearcher.d.ts.map +1 -0
  371. package/dist/rag/search/HybridSearcher.js +316 -0
  372. package/dist/rag/search/HybridSearcher.js.map +1 -0
  373. package/dist/rag/search/index.d.ts +12 -0
  374. package/dist/rag/search/index.d.ts.map +1 -0
  375. package/dist/rag/search/index.js +12 -0
  376. package/dist/rag/search/index.js.map +1 -0
  377. package/dist/rag/setup/DockerDetector.d.ts +67 -0
  378. package/dist/rag/setup/DockerDetector.d.ts.map +1 -0
  379. package/dist/rag/setup/DockerDetector.js +125 -0
  380. package/dist/rag/setup/DockerDetector.js.map +1 -0
  381. package/dist/rag/setup/PostgresSetup.d.ts +20 -0
  382. package/dist/rag/setup/PostgresSetup.d.ts.map +1 -0
  383. package/dist/rag/setup/PostgresSetup.js +133 -0
  384. package/dist/rag/setup/PostgresSetup.js.map +1 -0
  385. package/dist/rag/setup/QdrantSetup.d.ts +26 -0
  386. package/dist/rag/setup/QdrantSetup.d.ts.map +1 -0
  387. package/dist/rag/setup/QdrantSetup.js +96 -0
  388. package/dist/rag/setup/QdrantSetup.js.map +1 -0
  389. package/dist/rag/setup/types.d.ts +55 -0
  390. package/dist/rag/setup/types.d.ts.map +1 -0
  391. package/dist/rag/setup/types.js +6 -0
  392. package/dist/rag/setup/types.js.map +1 -0
  393. package/dist/rag/unified/UnifiedRetriever.d.ts +472 -0
  394. package/dist/rag/unified/UnifiedRetriever.d.ts.map +1 -0
  395. package/dist/rag/unified/UnifiedRetriever.js +887 -0
  396. package/dist/rag/unified/UnifiedRetriever.js.map +1 -0
  397. package/dist/rag/unified/index.d.ts +24 -0
  398. package/dist/rag/unified/index.d.ts.map +1 -0
  399. package/dist/rag/unified/index.js +23 -0
  400. package/dist/rag/unified/index.js.map +1 -0
  401. package/dist/rag/unified/types.d.ts +546 -0
  402. package/dist/rag/unified/types.d.ts.map +1 -0
  403. package/dist/rag/unified/types.js +177 -0
  404. package/dist/rag/unified/types.js.map +1 -0
  405. package/dist/speech/providers/AssemblyAISTTProvider.js.map +1 -1
  406. package/dist/speech/providers/AzureSpeechSTTProvider.js.map +1 -1
  407. package/dist/speech/providers/BuiltInAdaptiveVadProvider.d.ts +1 -1
  408. package/dist/speech/providers/DeepgramBatchSTTProvider.js.map +1 -1
  409. package/package.json +5 -1
@@ -0,0 +1,447 @@
1
+ /**
2
+ * @fileoverview IProvider implementation that invokes the Gemini CLI
3
+ * as a subprocess, allowing users to leverage their Google account
4
+ * (free / AI Pro / AI Ultra) without an API key. Completely separate
5
+ * from the `gemini` provider (which uses GEMINI_API_KEY).
6
+ *
7
+ * @module agentos/core/llm/providers/implementations/GeminiCLIProvider
8
+ * @see GeminiCLIBridge
9
+ */
10
+ import { GeminiCLIBridge } from './GeminiCLIBridge.js';
11
+ import { GeminiCLIProviderError } from '../errors/GeminiCLIProviderError.js';
12
+ /* ------------------------------------------------------------------ */
13
+ /* Static model catalog */
14
+ /* ------------------------------------------------------------------ */
15
+ const GEMINI_CLI_MODELS = [
16
+ {
17
+ modelId: 'gemini-2.5-pro',
18
+ providerId: 'gemini-cli',
19
+ displayName: 'Gemini 2.5 Pro',
20
+ description: 'Most capable Gemini model — deep reasoning and analysis',
21
+ capabilities: ['chat', 'vision_input', 'tool_use'],
22
+ contextWindowSize: 1000000,
23
+ inputTokenLimit: 1000000,
24
+ outputTokenLimit: 65536,
25
+ pricePer1MTokensInput: 0,
26
+ pricePer1MTokensOutput: 0,
27
+ supportsStreaming: true,
28
+ isDefaultModel: false,
29
+ },
30
+ {
31
+ modelId: 'gemini-2.5-flash',
32
+ providerId: 'gemini-cli',
33
+ displayName: 'Gemini 2.5 Flash',
34
+ description: 'Fast and capable — ideal for most tasks',
35
+ capabilities: ['chat', 'vision_input', 'tool_use'],
36
+ contextWindowSize: 1000000,
37
+ inputTokenLimit: 1000000,
38
+ outputTokenLimit: 65536,
39
+ pricePer1MTokensInput: 0,
40
+ pricePer1MTokensOutput: 0,
41
+ supportsStreaming: true,
42
+ isDefaultModel: true,
43
+ },
44
+ {
45
+ modelId: 'gemini-2.0-flash',
46
+ providerId: 'gemini-cli',
47
+ displayName: 'Gemini 2.0 Flash',
48
+ description: 'Previous-gen fast model with 1M context',
49
+ capabilities: ['chat', 'vision_input', 'tool_use'],
50
+ contextWindowSize: 1000000,
51
+ inputTokenLimit: 1000000,
52
+ outputTokenLimit: 8192,
53
+ pricePer1MTokensInput: 0,
54
+ pricePer1MTokensOutput: 0,
55
+ supportsStreaming: true,
56
+ isDefaultModel: false,
57
+ },
58
+ {
59
+ modelId: 'gemini-2.0-flash-lite',
60
+ providerId: 'gemini-cli',
61
+ displayName: 'Gemini 2.0 Flash Lite',
62
+ description: 'Lightest Gemini model — high throughput, low latency',
63
+ capabilities: ['chat', 'tool_use'],
64
+ contextWindowSize: 1000000,
65
+ inputTokenLimit: 1000000,
66
+ outputTokenLimit: 8192,
67
+ pricePer1MTokensInput: 0,
68
+ pricePer1MTokensOutput: 0,
69
+ supportsStreaming: true,
70
+ isDefaultModel: false,
71
+ },
72
+ ];
73
+ /* ------------------------------------------------------------------ */
74
+ /* Tool call XML parsing */
75
+ /* ------------------------------------------------------------------ */
76
+ /** Regex to extract tool_call blocks from Gemini's text response. */
77
+ const TOOL_CALL_REGEX = /<tool_call\s+id="([^"]+)"\s+name="([^"]+)">([\s\S]*?)<\/tool_call>/g;
78
+ /** Parse tool calls from raw text containing XML markers. */
79
+ function parseToolCallsFromText(text) {
80
+ const calls = [];
81
+ let match;
82
+ /* Reset regex state */
83
+ TOOL_CALL_REGEX.lastIndex = 0;
84
+ while ((match = TOOL_CALL_REGEX.exec(text)) !== null) {
85
+ try {
86
+ const args = JSON.parse(match[3].trim());
87
+ calls.push({ id: match[1], name: match[2], arguments: args });
88
+ }
89
+ catch {
90
+ /* Malformed JSON in tool call — skip this one */
91
+ }
92
+ }
93
+ return calls.length > 0 ? calls : null;
94
+ }
95
+ /* ------------------------------------------------------------------ */
96
+ /* Provider */
97
+ /* ------------------------------------------------------------------ */
98
+ /**
99
+ * LLM provider that wraps the locally-installed Gemini CLI.
100
+ * Users authenticate Gemini separately (via `gemini` in terminal);
101
+ * this provider detects that installation and uses it for completions.
102
+ *
103
+ * No API key required — the user's Google account handles access.
104
+ * `costUSD` is always 0 since there is no per-token charge.
105
+ */
106
+ export class GeminiCLIProvider {
107
+ constructor() {
108
+ this.providerId = 'gemini-cli';
109
+ this.isInitialized = false;
110
+ this.bridge = new GeminiCLIBridge();
111
+ }
112
+ /* ---- Lifecycle ------------------------------------------------- */
113
+ async initialize(config) {
114
+ this.config = {
115
+ defaultModelId: 'gemini-2.5-flash',
116
+ requestTimeout: 120000,
117
+ ...config,
118
+ };
119
+ this.defaultModelId = this.config.defaultModelId;
120
+ const installCheck = await this.bridge.checkBinaryInstalled();
121
+ if (!installCheck.installed) {
122
+ throw new GeminiCLIProviderError('Gemini CLI is not installed.', 'BINARY_NOT_FOUND', 'Install Gemini CLI: npm install -g @google/gemini-cli\n\nThen log in by running "gemini" in your terminal.\n\nAlternatively, switch to a different provider:\n wunderland login', false);
123
+ }
124
+ const isAuth = await this.bridge.checkAuthenticated();
125
+ if (!isAuth) {
126
+ throw new GeminiCLIProviderError('Gemini CLI is installed but not logged in.', 'NOT_AUTHENTICATED', 'Open your terminal and run:\n gemini\n\nComplete the Google account login flow, then restart your agent.', false);
127
+ }
128
+ this.isInitialized = true;
129
+ }
130
+ async shutdown() {
131
+ this.isInitialized = false;
132
+ }
133
+ /* ---- Completions ---------------------------------------------- */
134
+ async generateCompletion(modelId, messages, options) {
135
+ this.ensureInitialized();
136
+ const hasTools = options.tools && options.tools.length > 0 && options.toolChoice !== 'none';
137
+ const { systemPrompt, conversationPrompt } = this.formatMessages(messages);
138
+ const fullSystemPrompt = hasTools
139
+ ? this.injectToolSchemas(systemPrompt, options.tools, options.toolChoice)
140
+ : systemPrompt;
141
+ const bridgeOpts = {
142
+ prompt: conversationPrompt,
143
+ systemPrompt: fullSystemPrompt || undefined,
144
+ model: modelId,
145
+ timeout: this.config.requestTimeout,
146
+ abortSignal: options.abortSignal,
147
+ };
148
+ const result = await this.bridge.executeWithSystemPrompt(bridgeOpts);
149
+ if (result.isError) {
150
+ throw new GeminiCLIProviderError(`Gemini CLI returned an error: ${result.result}`, 'CRASHED', 'Try running "gemini -p test" manually to diagnose.', true);
151
+ }
152
+ /* Try parsing tool calls from XML markers */
153
+ if (hasTools) {
154
+ const toolCalls = parseToolCallsFromText(result.result);
155
+ if (toolCalls) {
156
+ return this.buildToolCallResponse(toolCalls, result, undefined, undefined, modelId);
157
+ }
158
+ /* No tool calls found — check if it's a text response or parse failure */
159
+ /* If text contains partial XML, retry without tools */
160
+ if (result.result.includes('<tool_call') && !result.result.includes('</tool_call>')) {
161
+ const retryOpts = { ...bridgeOpts, systemPrompt: systemPrompt || undefined };
162
+ const retryResult = await this.bridge.executeWithSystemPrompt(retryOpts);
163
+ return this.buildTextResponse(retryResult.result, retryResult, undefined, undefined, modelId);
164
+ }
165
+ }
166
+ return this.buildTextResponse(result.result, result, undefined, undefined, modelId);
167
+ }
168
+ async *generateCompletionStream(modelId, messages, options) {
169
+ this.ensureInitialized();
170
+ const hasTools = options.tools && options.tools.length > 0 && options.toolChoice !== 'none';
171
+ const { systemPrompt, conversationPrompt } = this.formatMessages(messages);
172
+ const fullSystemPrompt = hasTools
173
+ ? this.injectToolSchemas(systemPrompt, options.tools, options.toolChoice)
174
+ : systemPrompt;
175
+ const bridgeOpts = {
176
+ prompt: conversationPrompt,
177
+ systemPrompt: fullSystemPrompt || undefined,
178
+ model: modelId,
179
+ timeout: this.config.requestTimeout,
180
+ abortSignal: options.abortSignal,
181
+ };
182
+ let accumulatedText = '';
183
+ const responseId = `gc-${Date.now()}`;
184
+ let finalUsage;
185
+ let emittedFinal = false;
186
+ try {
187
+ for await (const event of this.bridge.streamWithSystemPrompt(bridgeOpts)) {
188
+ switch (event.type) {
189
+ case 'text_delta':
190
+ accumulatedText += event.text;
191
+ yield {
192
+ id: responseId,
193
+ object: 'chat.completion.chunk',
194
+ created: Date.now(),
195
+ modelId,
196
+ choices: [{
197
+ index: 0,
198
+ message: { role: 'assistant', content: accumulatedText },
199
+ finishReason: null,
200
+ }],
201
+ responseTextDelta: event.text,
202
+ isFinal: false,
203
+ };
204
+ break;
205
+ case 'result': {
206
+ const usage = event.usage;
207
+ finalUsage = usage
208
+ ? { promptTokens: usage.input_tokens, completionTokens: usage.output_tokens, totalTokens: usage.input_tokens + usage.output_tokens, costUSD: 0 }
209
+ : { totalTokens: 0, costUSD: 0 };
210
+ const finalText = event.result || accumulatedText;
211
+ /* Try parsing tool calls from final text */
212
+ if (hasTools) {
213
+ const toolCalls = parseToolCallsFromText(finalText);
214
+ if (toolCalls) {
215
+ emittedFinal = true;
216
+ yield this.buildToolCallResponse(toolCalls, { sessionId: event.sessionId, usage: event.usage }, responseId, finalUsage, modelId);
217
+ return;
218
+ }
219
+ }
220
+ emittedFinal = true;
221
+ yield this.buildTextResponse(finalText, { sessionId: event.sessionId, usage: event.usage }, responseId, finalUsage, modelId);
222
+ return;
223
+ }
224
+ case 'error':
225
+ emittedFinal = true;
226
+ yield this.buildStreamErrorResponse(`Gemini CLI stream error: ${event.error}`, modelId, responseId, finalUsage);
227
+ return;
228
+ }
229
+ }
230
+ }
231
+ catch (error) {
232
+ emittedFinal = true;
233
+ yield this.buildStreamErrorResponse(error?.message ?? 'Gemini CLI stream failed.', modelId, responseId, finalUsage, error?.code, error);
234
+ return;
235
+ }
236
+ if (!emittedFinal) {
237
+ yield this.buildTextResponse(accumulatedText, {}, responseId, finalUsage, modelId);
238
+ }
239
+ }
240
+ /* ---- Embeddings (not supported) -------------------------------- */
241
+ async generateEmbeddings(_modelId, _texts, _options) {
242
+ throw new GeminiCLIProviderError('Gemini CLI does not support embeddings. Use a different provider (OpenAI, Ollama, etc.) for embedding operations.', 'EMBEDDINGS_NOT_SUPPORTED', 'Configure an additional provider with embedding support: wunderland login', false);
243
+ }
244
+ /* ---- Model catalog -------------------------------------------- */
245
+ async listAvailableModels() {
246
+ return [...GEMINI_CLI_MODELS];
247
+ }
248
+ async getModelInfo(modelId) {
249
+ return GEMINI_CLI_MODELS.find(m => m.modelId === modelId);
250
+ }
251
+ /* ---- Health check --------------------------------------------- */
252
+ async checkHealth() {
253
+ const installCheck = await this.bridge.checkBinaryInstalled();
254
+ if (!installCheck.installed) {
255
+ return {
256
+ isHealthy: false,
257
+ details: {
258
+ cliInstalled: false,
259
+ error: 'BINARY_NOT_FOUND',
260
+ guidance: 'Install Gemini CLI: npm install -g @google/gemini-cli',
261
+ },
262
+ };
263
+ }
264
+ const isAuth = await this.bridge.checkAuthenticated();
265
+ return {
266
+ isHealthy: isAuth,
267
+ details: {
268
+ cliInstalled: true,
269
+ cliVersion: installCheck.version,
270
+ cliPath: installCheck.binaryPath,
271
+ authenticated: isAuth,
272
+ ...(isAuth ? {} : {
273
+ error: 'NOT_AUTHENTICATED',
274
+ guidance: 'Run "gemini" in your terminal to log in with your Google account.',
275
+ }),
276
+ },
277
+ };
278
+ }
279
+ /* ---- Private: message formatting ------------------------------ */
280
+ formatMessages(messages) {
281
+ let systemPrompt = '';
282
+ const nonSystemMessages = [];
283
+ for (const msg of messages) {
284
+ if (msg.role === 'system') {
285
+ systemPrompt += (typeof msg.content === 'string' ? msg.content : this.contentPartsToText(msg.content)) + '\n';
286
+ }
287
+ else {
288
+ nonSystemMessages.push(msg);
289
+ }
290
+ }
291
+ const conversationPrompt = this.serializeConversationXml(nonSystemMessages);
292
+ return { systemPrompt: systemPrompt.trim(), conversationPrompt };
293
+ }
294
+ serializeConversationXml(messages) {
295
+ if (messages.length === 0)
296
+ return '';
297
+ if (messages.length === 1 && messages[0].role === 'user') {
298
+ return typeof messages[0].content === 'string'
299
+ ? messages[0].content
300
+ : this.contentPartsToText(messages[0].content);
301
+ }
302
+ const lines = ['<conversation>'];
303
+ for (const msg of messages) {
304
+ const content = typeof msg.content === 'string'
305
+ ? msg.content
306
+ : this.contentPartsToText(msg.content);
307
+ if (msg.role === 'tool') {
308
+ lines.push(`<message role="tool" tool_call_id="${msg.tool_call_id ?? ''}">${content}</message>`);
309
+ }
310
+ else if (msg.role === 'assistant' && msg.tool_calls?.length) {
311
+ const toolCallXml = msg.tool_calls.map(tc => `<tool_call name="${tc.function.name}">${tc.function.arguments}</tool_call>`).join('');
312
+ lines.push(`<message role="assistant">${toolCallXml}</message>`);
313
+ }
314
+ else {
315
+ lines.push(`<message role="${msg.role}">${content}</message>`);
316
+ }
317
+ }
318
+ lines.push('</conversation>');
319
+ return lines.join('\n');
320
+ }
321
+ contentPartsToText(content) {
322
+ if (!content)
323
+ return '';
324
+ if (typeof content === 'string')
325
+ return content;
326
+ if (Array.isArray(content)) {
327
+ return content
328
+ .filter((p) => p.type === 'text')
329
+ .map((p) => p.text)
330
+ .join('');
331
+ }
332
+ return String(content);
333
+ }
334
+ /* ---- Private: tool schema injection --------------------------- */
335
+ injectToolSchemas(systemPrompt, tools, toolChoice) {
336
+ const toolsXml = tools.map(t => {
337
+ const fn = t.function ?? t;
338
+ return `<tool name="${fn.name}" description="${fn.description ?? ''}">\n <parameters>${JSON.stringify(fn.parameters ?? {})}</parameters>\n</tool>`;
339
+ }).join('\n');
340
+ const choiceInstruction = this.toolChoiceInstruction(toolChoice);
341
+ return `${systemPrompt}
342
+
343
+ <available_tools>
344
+ ${toolsXml}
345
+ </available_tools>
346
+
347
+ <response_format>
348
+ ${choiceInstruction}
349
+ When you want to call a tool, respond with XML:
350
+ <tool_call id="unique-id" name="tool_name">{"arg": "value"}</tool_call>
351
+ When responding with text, respond normally without XML tags.
352
+ You may include multiple tool_call blocks in one response.
353
+ Each tool_call must include id (unique string), name (tool name), and a JSON body matching the tool's parameters schema.
354
+ </response_format>`;
355
+ }
356
+ toolChoiceInstruction(toolChoice) {
357
+ if (!toolChoice || toolChoice === 'auto') {
358
+ return 'Use tools if helpful to answer the user, otherwise respond with text.';
359
+ }
360
+ if (toolChoice === 'required') {
361
+ return 'You MUST call at least one tool. Do not respond with text only.';
362
+ }
363
+ if (toolChoice === 'none') {
364
+ return 'Do not use any tools. Respond with text only.';
365
+ }
366
+ if (typeof toolChoice === 'object' && toolChoice.function?.name) {
367
+ return `You MUST call the tool named "${toolChoice.function.name}".`;
368
+ }
369
+ return 'Use tools if helpful to answer the user, otherwise respond with text.';
370
+ }
371
+ /* ---- Private: response builders ------------------------------- */
372
+ buildTextResponse(text, result, responseId, usage, modelId) {
373
+ const u = usage ?? this.buildUsage(result.usage);
374
+ return {
375
+ id: responseId ?? `gc-${result.sessionId ?? Date.now()}`,
376
+ object: 'chat.completion',
377
+ created: Date.now(),
378
+ modelId: modelId ?? this.defaultModelId ?? 'gemini-2.5-flash',
379
+ choices: [{
380
+ index: 0,
381
+ message: { role: 'assistant', content: text },
382
+ finishReason: 'stop',
383
+ }],
384
+ usage: u,
385
+ isFinal: true,
386
+ };
387
+ }
388
+ buildToolCallResponse(toolCalls, result, responseId, usage, modelId) {
389
+ const u = usage ?? this.buildUsage(result.usage);
390
+ return {
391
+ id: responseId ?? `gc-${result.sessionId ?? Date.now()}`,
392
+ object: 'chat.completion',
393
+ created: Date.now(),
394
+ modelId: modelId ?? this.defaultModelId ?? 'gemini-2.5-flash',
395
+ choices: [{
396
+ index: 0,
397
+ message: {
398
+ role: 'assistant',
399
+ content: null,
400
+ tool_calls: toolCalls.map(tc => ({
401
+ id: tc.id,
402
+ type: 'function',
403
+ function: {
404
+ name: tc.name,
405
+ arguments: typeof tc.arguments === 'string' ? tc.arguments : JSON.stringify(tc.arguments),
406
+ },
407
+ })),
408
+ },
409
+ finishReason: 'tool_calls',
410
+ }],
411
+ usage: u,
412
+ isFinal: true,
413
+ };
414
+ }
415
+ buildStreamErrorResponse(message, modelId, responseId, usage, code, details) {
416
+ return {
417
+ id: responseId,
418
+ object: 'chat.completion.chunk',
419
+ created: Date.now(),
420
+ modelId,
421
+ choices: [],
422
+ usage,
423
+ error: {
424
+ message,
425
+ ...(code === undefined ? {} : { code }),
426
+ ...(details === undefined ? {} : { details }),
427
+ },
428
+ isFinal: true,
429
+ };
430
+ }
431
+ buildUsage(raw) {
432
+ if (!raw)
433
+ return { totalTokens: 0, costUSD: 0 };
434
+ return {
435
+ promptTokens: raw.input_tokens,
436
+ completionTokens: raw.output_tokens,
437
+ totalTokens: raw.input_tokens + raw.output_tokens,
438
+ costUSD: 0,
439
+ };
440
+ }
441
+ ensureInitialized() {
442
+ if (!this.isInitialized) {
443
+ throw new GeminiCLIProviderError('GeminiCLIProvider is not initialized. Call initialize() first.', 'UNKNOWN', 'Ensure the provider is initialized before making API calls.', false);
444
+ }
445
+ }
446
+ }
447
+ //# sourceMappingURL=GeminiCLIProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiCLIProvider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/implementations/GeminiCLIProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * @file ProviderPreferences.ts
3
+ * Shared resolver for media provider selection across image, video, and audio
4
+ * subsystems.
5
+ *
6
+ * Provides two complementary mechanisms:
7
+ *
8
+ * 1. **Deterministic ordering** via {@link resolveProviderOrder} — filters and
9
+ * reorders an "available" list according to user preferences (preferred
10
+ * providers first, blocked providers removed).
11
+ *
12
+ * 2. **Weighted random selection** via {@link selectWeightedProvider} — picks a
13
+ * single provider from a resolved list using optional per-provider weights
14
+ * (useful for load-balancing or A/B testing across providers).
15
+ *
16
+ * These utilities are intentionally stateless and side-effect-free so they can
17
+ * be called from any subsystem without lifecycle concerns.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import {
22
+ * resolveProviderOrder,
23
+ * resolveProviderChain,
24
+ * selectWeightedProvider,
25
+ * } from './ProviderPreferences.js';
26
+ *
27
+ * const available = ['openai', 'stability', 'replicate'];
28
+ *
29
+ * // Deterministic: preferred order with blocklist
30
+ * const ordered = resolveProviderOrder(available, {
31
+ * preferred: ['replicate', 'openai'],
32
+ * blocked: ['stability'],
33
+ * });
34
+ * // => ['replicate', 'openai']
35
+ *
36
+ * // Weighted primary selection with deterministic fallback ordering
37
+ * const chain = resolveProviderChain(ordered, {
38
+ * weights: {
39
+ * replicate: 9,
40
+ * openai: 1,
41
+ * },
42
+ * });
43
+ * // => ['replicate', 'openai'] most of the time
44
+ *
45
+ * // Or pick a single weighted provider directly
46
+ * const chosen = selectWeightedProvider(chain, {
47
+ * replicate: 9,
48
+ * openai: 1,
49
+ * });
50
+ * ```
51
+ */
52
+ /**
53
+ * Per-modality provider preference configuration.
54
+ *
55
+ * - `preferred` — Ordered list of provider IDs to try first. Providers not in
56
+ * this list are excluded. When omitted the full available list is used.
57
+ * - `weights` — Optional weight map for weighted random selection. Providers
58
+ * not listed default to weight `1`.
59
+ * - `blocked` — Provider IDs to unconditionally exclude. Applied after the
60
+ * preferred filter so a provider can be both preferred *and* blocked (the
61
+ * block wins).
62
+ */
63
+ export interface MediaProviderPreference {
64
+ /** Ordered list of preferred provider IDs. */
65
+ preferred?: string[];
66
+ /** Weight map for weighted random selection (default weight is `1`). */
67
+ weights?: Record<string, number>;
68
+ /** Provider IDs to unconditionally exclude. */
69
+ blocked?: string[];
70
+ }
71
+ /**
72
+ * Top-level provider preferences grouped by media modality.
73
+ *
74
+ * Each modality can have its own independent preference configuration.
75
+ * Audio is further split into `music` and `sfx` sub-modalities since
76
+ * music generation and sound-effect generation often use different
77
+ * provider backends.
78
+ */
79
+ export interface ProviderPreferences {
80
+ /** Image generation provider preferences. */
81
+ image?: MediaProviderPreference;
82
+ /** Video generation provider preferences. */
83
+ video?: MediaProviderPreference;
84
+ /** Audio generation provider preferences, split by sub-modality. */
85
+ audio?: {
86
+ /** Music generation provider preferences. */
87
+ music?: MediaProviderPreference;
88
+ /** Sound-effect generation provider preferences. */
89
+ sfx?: MediaProviderPreference;
90
+ };
91
+ }
92
+ /**
93
+ * Filter and reorder an "available" provider list according to user
94
+ * preferences.
95
+ *
96
+ * Resolution rules (applied in order):
97
+ *
98
+ * 1. If `preferences` is `undefined` or empty, return `available` unchanged.
99
+ * 2. If `preferred` is set, keep only providers that appear in **both**
100
+ * `available` and `preferred`, preserving the order of `preferred`.
101
+ * 3. If `blocked` is set, remove any provider whose ID appears in `blocked`.
102
+ *
103
+ * The result is never longer than `available` and never contains duplicates.
104
+ *
105
+ * @param available - Provider IDs currently available in the system.
106
+ * @param preferences - Optional preference configuration.
107
+ * @returns Filtered and reordered provider ID list.
108
+ *
109
+ * @example
110
+ * ```ts
111
+ * resolveProviderOrder(['a', 'b', 'c'], { preferred: ['c', 'a'] });
112
+ * // => ['c', 'a']
113
+ *
114
+ * resolveProviderOrder(['a', 'b', 'c'], { blocked: ['b'] });
115
+ * // => ['a', 'c']
116
+ * ```
117
+ */
118
+ export declare function resolveProviderOrder(available: string[], preferences?: MediaProviderPreference): string[];
119
+ /**
120
+ * Resolve a full provider chain from the available providers and preferences.
121
+ *
122
+ * This combines deterministic filtering/reordering via
123
+ * {@link resolveProviderOrder} with optional weighted primary selection via
124
+ * {@link selectWeightedProvider}. When `weights` are present, a single primary
125
+ * provider is chosen from the ordered list and moved to the front while the
126
+ * remaining providers preserve their relative order as fallbacks.
127
+ *
128
+ * @param available - Provider IDs currently available in the system.
129
+ * @param preferences - Optional preference configuration.
130
+ * @returns Ordered provider chain with the chosen primary first.
131
+ */
132
+ export declare function resolveProviderChain(available: string[], preferences?: MediaProviderPreference): string[];
133
+ /**
134
+ * Select a single provider from a list using optional per-provider weights.
135
+ *
136
+ * Selection rules:
137
+ *
138
+ * - If `providers` is empty, throws an `Error`.
139
+ * - If `weights` is `undefined` or `providers` has exactly one entry, the
140
+ * first provider is returned deterministically.
141
+ * - Otherwise a weighted random selection is performed: each provider's
142
+ * weight is looked up in `weights` (defaulting to `1` for unlisted
143
+ * providers), weights are summed, and a random value in `[0, sum)` picks
144
+ * the winner proportionally.
145
+ *
146
+ * @param providers - Non-empty list of provider IDs to choose from.
147
+ * @param weights - Optional weight map. Providers not listed get weight `1`.
148
+ * @returns The selected provider ID.
149
+ * @throws {Error} When `providers` is empty.
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * // 90% suno, 10% udio (approximately)
154
+ * selectWeightedProvider(['suno', 'udio'], { suno: 9, udio: 1 });
155
+ * ```
156
+ */
157
+ export declare function selectWeightedProvider(providers: string[], weights?: Record<string, number>): string;
158
+ //# sourceMappingURL=ProviderPreferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderPreferences.d.ts","sourceRoot":"","sources":["../../../src/core/media/ProviderPreferences.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAMH;;;;;;;;;;GAUG;AACH,MAAM,WAAW,uBAAuB;IACtC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,uBAAuB,CAAC;IAChC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,uBAAuB,CAAC;IAChC,oEAAoE;IACpE,KAAK,CAAC,EAAE;QACN,6CAA6C;QAC7C,KAAK,CAAC,EAAE,uBAAuB,CAAC;QAChC,oDAAoD;QACpD,GAAG,CAAC,EAAE,uBAAuB,CAAC;KAC/B,CAAC;CACH;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,CAAC,EAAE,uBAAuB,GACpC,MAAM,EAAE,CAuBV;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,CAAC,EAAE,uBAAuB,GACpC,MAAM,EAAE,CAQV;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAqCR"}