@framers/agentos 0.1.120 → 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 (405) 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/types.d.ts +15 -0
  252. package/dist/memory/types.d.ts.map +1 -1
  253. package/dist/query-router/QueryClassifier.d.ts +192 -21
  254. package/dist/query-router/QueryClassifier.d.ts.map +1 -1
  255. package/dist/query-router/QueryClassifier.js +604 -23
  256. package/dist/query-router/QueryClassifier.js.map +1 -1
  257. package/dist/query-router/QueryDispatcher.d.ts +106 -8
  258. package/dist/query-router/QueryDispatcher.d.ts.map +1 -1
  259. package/dist/query-router/QueryDispatcher.js +387 -8
  260. package/dist/query-router/QueryDispatcher.js.map +1 -1
  261. package/dist/query-router/QueryRouter.d.ts +198 -14
  262. package/dist/query-router/QueryRouter.d.ts.map +1 -1
  263. package/dist/query-router/QueryRouter.js +738 -50
  264. package/dist/query-router/QueryRouter.js.map +1 -1
  265. package/dist/query-router/index.d.ts +1 -1
  266. package/dist/query-router/index.d.ts.map +1 -1
  267. package/dist/query-router/index.js +1 -1
  268. package/dist/query-router/index.js.map +1 -1
  269. package/dist/query-router/types.d.ts +396 -3
  270. package/dist/query-router/types.d.ts.map +1 -1
  271. package/dist/query-router/types.js +35 -0
  272. package/dist/query-router/types.js.map +1 -1
  273. package/dist/rag/HydeRetriever.d.ts +108 -0
  274. package/dist/rag/HydeRetriever.d.ts.map +1 -1
  275. package/dist/rag/HydeRetriever.js +184 -0
  276. package/dist/rag/HydeRetriever.js.map +1 -1
  277. package/dist/rag/IRetrievalAugmentor.d.ts +15 -0
  278. package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -1
  279. package/dist/rag/RetrievalAugmentor.d.ts +58 -0
  280. package/dist/rag/RetrievalAugmentor.d.ts.map +1 -1
  281. package/dist/rag/RetrievalAugmentor.js +200 -32
  282. package/dist/rag/RetrievalAugmentor.js.map +1 -1
  283. package/dist/rag/VectorStoreManager.js +1 -1
  284. package/dist/rag/audit/RAGAuditCollector.d.ts +7 -0
  285. package/dist/rag/audit/RAGAuditCollector.d.ts.map +1 -1
  286. package/dist/rag/audit/RAGAuditCollector.js +10 -0
  287. package/dist/rag/audit/RAGAuditCollector.js.map +1 -1
  288. package/dist/rag/audit/RAGAuditTypes.d.ts +10 -1
  289. package/dist/rag/audit/RAGAuditTypes.d.ts.map +1 -1
  290. package/dist/rag/chunking/SemanticChunker.d.ts +210 -0
  291. package/dist/rag/chunking/SemanticChunker.d.ts.map +1 -0
  292. package/dist/rag/chunking/SemanticChunker.js +460 -0
  293. package/dist/rag/chunking/SemanticChunker.js.map +1 -0
  294. package/dist/rag/chunking/index.d.ts +10 -0
  295. package/dist/rag/chunking/index.d.ts.map +1 -0
  296. package/dist/rag/chunking/index.js +10 -0
  297. package/dist/rag/chunking/index.js.map +1 -0
  298. package/dist/rag/implementations/vector_stores/PineconeVectorStore.d.ts +103 -0
  299. package/dist/rag/implementations/vector_stores/PineconeVectorStore.d.ts.map +1 -0
  300. package/dist/rag/implementations/vector_stores/PineconeVectorStore.js +315 -0
  301. package/dist/rag/implementations/vector_stores/PineconeVectorStore.js.map +1 -0
  302. package/dist/rag/implementations/vector_stores/PostgresVectorStore.d.ts +107 -0
  303. package/dist/rag/implementations/vector_stores/PostgresVectorStore.d.ts.map +1 -0
  304. package/dist/rag/implementations/vector_stores/PostgresVectorStore.js +438 -0
  305. package/dist/rag/implementations/vector_stores/PostgresVectorStore.js.map +1 -0
  306. package/dist/rag/index.d.ts +15 -1
  307. package/dist/rag/index.d.ts.map +1 -1
  308. package/dist/rag/index.js +32 -0
  309. package/dist/rag/index.js.map +1 -1
  310. package/dist/rag/migration/MigrationEngine.d.ts +47 -0
  311. package/dist/rag/migration/MigrationEngine.d.ts.map +1 -0
  312. package/dist/rag/migration/MigrationEngine.js +168 -0
  313. package/dist/rag/migration/MigrationEngine.js.map +1 -0
  314. package/dist/rag/migration/adapters/PineconeSourceAdapter.d.ts +23 -0
  315. package/dist/rag/migration/adapters/PineconeSourceAdapter.d.ts.map +1 -0
  316. package/dist/rag/migration/adapters/PineconeSourceAdapter.js +63 -0
  317. package/dist/rag/migration/adapters/PineconeSourceAdapter.js.map +1 -0
  318. package/dist/rag/migration/adapters/PostgresSourceAdapter.d.ts +30 -0
  319. package/dist/rag/migration/adapters/PostgresSourceAdapter.d.ts.map +1 -0
  320. package/dist/rag/migration/adapters/PostgresSourceAdapter.js +71 -0
  321. package/dist/rag/migration/adapters/PostgresSourceAdapter.js.map +1 -0
  322. package/dist/rag/migration/adapters/PostgresTargetAdapter.d.ts +38 -0
  323. package/dist/rag/migration/adapters/PostgresTargetAdapter.d.ts.map +1 -0
  324. package/dist/rag/migration/adapters/PostgresTargetAdapter.js +114 -0
  325. package/dist/rag/migration/adapters/PostgresTargetAdapter.js.map +1 -0
  326. package/dist/rag/migration/adapters/QdrantSourceAdapter.d.ts +36 -0
  327. package/dist/rag/migration/adapters/QdrantSourceAdapter.d.ts.map +1 -0
  328. package/dist/rag/migration/adapters/QdrantSourceAdapter.js +109 -0
  329. package/dist/rag/migration/adapters/QdrantSourceAdapter.js.map +1 -0
  330. package/dist/rag/migration/adapters/QdrantTargetAdapter.d.ts +35 -0
  331. package/dist/rag/migration/adapters/QdrantTargetAdapter.d.ts.map +1 -0
  332. package/dist/rag/migration/adapters/QdrantTargetAdapter.js +110 -0
  333. package/dist/rag/migration/adapters/QdrantTargetAdapter.js.map +1 -0
  334. package/dist/rag/migration/adapters/SqliteSourceAdapter.d.ts +37 -0
  335. package/dist/rag/migration/adapters/SqliteSourceAdapter.d.ts.map +1 -0
  336. package/dist/rag/migration/adapters/SqliteSourceAdapter.js +72 -0
  337. package/dist/rag/migration/adapters/SqliteSourceAdapter.js.map +1 -0
  338. package/dist/rag/migration/adapters/SqliteTargetAdapter.d.ts +47 -0
  339. package/dist/rag/migration/adapters/SqliteTargetAdapter.d.ts.map +1 -0
  340. package/dist/rag/migration/adapters/SqliteTargetAdapter.js +93 -0
  341. package/dist/rag/migration/adapters/SqliteTargetAdapter.js.map +1 -0
  342. package/dist/rag/migration/types.d.ts +108 -0
  343. package/dist/rag/migration/types.d.ts.map +1 -0
  344. package/dist/rag/migration/types.js +11 -0
  345. package/dist/rag/migration/types.js.map +1 -0
  346. package/dist/rag/multimodal/MultimodalIndexer.d.ts +35 -0
  347. package/dist/rag/multimodal/MultimodalIndexer.d.ts.map +1 -1
  348. package/dist/rag/multimodal/MultimodalIndexer.js +66 -1
  349. package/dist/rag/multimodal/MultimodalIndexer.js.map +1 -1
  350. package/dist/rag/multimodal/types.d.ts +24 -0
  351. package/dist/rag/multimodal/types.d.ts.map +1 -1
  352. package/dist/rag/raptor/RaptorTree.d.ts +268 -0
  353. package/dist/rag/raptor/RaptorTree.d.ts.map +1 -0
  354. package/dist/rag/raptor/RaptorTree.js +443 -0
  355. package/dist/rag/raptor/RaptorTree.js.map +1 -0
  356. package/dist/rag/raptor/index.d.ts +11 -0
  357. package/dist/rag/raptor/index.d.ts.map +1 -0
  358. package/dist/rag/raptor/index.js +11 -0
  359. package/dist/rag/raptor/index.js.map +1 -0
  360. package/dist/rag/reranking/providers/CohereReranker.js.map +1 -1
  361. package/dist/rag/search/BM25Index.d.ts +282 -0
  362. package/dist/rag/search/BM25Index.d.ts.map +1 -0
  363. package/dist/rag/search/BM25Index.js +344 -0
  364. package/dist/rag/search/BM25Index.js.map +1 -0
  365. package/dist/rag/search/HybridSearcher.d.ts +198 -0
  366. package/dist/rag/search/HybridSearcher.d.ts.map +1 -0
  367. package/dist/rag/search/HybridSearcher.js +316 -0
  368. package/dist/rag/search/HybridSearcher.js.map +1 -0
  369. package/dist/rag/search/index.d.ts +12 -0
  370. package/dist/rag/search/index.d.ts.map +1 -0
  371. package/dist/rag/search/index.js +12 -0
  372. package/dist/rag/search/index.js.map +1 -0
  373. package/dist/rag/setup/DockerDetector.d.ts +67 -0
  374. package/dist/rag/setup/DockerDetector.d.ts.map +1 -0
  375. package/dist/rag/setup/DockerDetector.js +125 -0
  376. package/dist/rag/setup/DockerDetector.js.map +1 -0
  377. package/dist/rag/setup/PostgresSetup.d.ts +20 -0
  378. package/dist/rag/setup/PostgresSetup.d.ts.map +1 -0
  379. package/dist/rag/setup/PostgresSetup.js +133 -0
  380. package/dist/rag/setup/PostgresSetup.js.map +1 -0
  381. package/dist/rag/setup/QdrantSetup.d.ts +26 -0
  382. package/dist/rag/setup/QdrantSetup.d.ts.map +1 -0
  383. package/dist/rag/setup/QdrantSetup.js +96 -0
  384. package/dist/rag/setup/QdrantSetup.js.map +1 -0
  385. package/dist/rag/setup/types.d.ts +55 -0
  386. package/dist/rag/setup/types.d.ts.map +1 -0
  387. package/dist/rag/setup/types.js +6 -0
  388. package/dist/rag/setup/types.js.map +1 -0
  389. package/dist/rag/unified/UnifiedRetriever.d.ts +472 -0
  390. package/dist/rag/unified/UnifiedRetriever.d.ts.map +1 -0
  391. package/dist/rag/unified/UnifiedRetriever.js +887 -0
  392. package/dist/rag/unified/UnifiedRetriever.js.map +1 -0
  393. package/dist/rag/unified/index.d.ts +24 -0
  394. package/dist/rag/unified/index.d.ts.map +1 -0
  395. package/dist/rag/unified/index.js +23 -0
  396. package/dist/rag/unified/index.js.map +1 -0
  397. package/dist/rag/unified/types.d.ts +546 -0
  398. package/dist/rag/unified/types.d.ts.map +1 -0
  399. package/dist/rag/unified/types.js +177 -0
  400. package/dist/rag/unified/types.js.map +1 -0
  401. package/dist/speech/providers/AssemblyAISTTProvider.js.map +1 -1
  402. package/dist/speech/providers/AzureSpeechSTTProvider.js.map +1 -1
  403. package/dist/speech/providers/BuiltInAdaptiveVadProvider.d.ts +1 -1
  404. package/dist/speech/providers/DeepgramBatchSTTProvider.js.map +1 -1
  405. package/package.json +5 -2
@@ -0,0 +1,183 @@
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
+ // resolveProviderOrder
54
+ // ---------------------------------------------------------------------------
55
+ /**
56
+ * Filter and reorder an "available" provider list according to user
57
+ * preferences.
58
+ *
59
+ * Resolution rules (applied in order):
60
+ *
61
+ * 1. If `preferences` is `undefined` or empty, return `available` unchanged.
62
+ * 2. If `preferred` is set, keep only providers that appear in **both**
63
+ * `available` and `preferred`, preserving the order of `preferred`.
64
+ * 3. If `blocked` is set, remove any provider whose ID appears in `blocked`.
65
+ *
66
+ * The result is never longer than `available` and never contains duplicates.
67
+ *
68
+ * @param available - Provider IDs currently available in the system.
69
+ * @param preferences - Optional preference configuration.
70
+ * @returns Filtered and reordered provider ID list.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * resolveProviderOrder(['a', 'b', 'c'], { preferred: ['c', 'a'] });
75
+ * // => ['c', 'a']
76
+ *
77
+ * resolveProviderOrder(['a', 'b', 'c'], { blocked: ['b'] });
78
+ * // => ['a', 'c']
79
+ * ```
80
+ */
81
+ export function resolveProviderOrder(available, preferences) {
82
+ if (!preferences) {
83
+ return available;
84
+ }
85
+ const blockedSet = new Set(preferences.blocked ?? []);
86
+ // When preferred is specified, reorder to preferred order and keep only
87
+ // providers that are actually available.
88
+ let ordered;
89
+ if (preferences.preferred && preferences.preferred.length > 0) {
90
+ const availableSet = new Set(available);
91
+ ordered = preferences.preferred.filter((id) => availableSet.has(id));
92
+ }
93
+ else {
94
+ ordered = [...available];
95
+ }
96
+ // Remove blocked providers.
97
+ if (blockedSet.size > 0) {
98
+ ordered = ordered.filter((id) => !blockedSet.has(id));
99
+ }
100
+ return ordered;
101
+ }
102
+ // ---------------------------------------------------------------------------
103
+ // resolveProviderChain
104
+ // ---------------------------------------------------------------------------
105
+ /**
106
+ * Resolve a full provider chain from the available providers and preferences.
107
+ *
108
+ * This combines deterministic filtering/reordering via
109
+ * {@link resolveProviderOrder} with optional weighted primary selection via
110
+ * {@link selectWeightedProvider}. When `weights` are present, a single primary
111
+ * provider is chosen from the ordered list and moved to the front while the
112
+ * remaining providers preserve their relative order as fallbacks.
113
+ *
114
+ * @param available - Provider IDs currently available in the system.
115
+ * @param preferences - Optional preference configuration.
116
+ * @returns Ordered provider chain with the chosen primary first.
117
+ */
118
+ export function resolveProviderChain(available, preferences) {
119
+ const ordered = resolveProviderOrder(available, preferences);
120
+ if (ordered.length <= 1 || !preferences?.weights) {
121
+ return ordered;
122
+ }
123
+ const primary = selectWeightedProvider(ordered, preferences.weights);
124
+ return [primary, ...ordered.filter((id) => id !== primary)];
125
+ }
126
+ // ---------------------------------------------------------------------------
127
+ // selectWeightedProvider
128
+ // ---------------------------------------------------------------------------
129
+ /**
130
+ * Select a single provider from a list using optional per-provider weights.
131
+ *
132
+ * Selection rules:
133
+ *
134
+ * - If `providers` is empty, throws an `Error`.
135
+ * - If `weights` is `undefined` or `providers` has exactly one entry, the
136
+ * first provider is returned deterministically.
137
+ * - Otherwise a weighted random selection is performed: each provider's
138
+ * weight is looked up in `weights` (defaulting to `1` for unlisted
139
+ * providers), weights are summed, and a random value in `[0, sum)` picks
140
+ * the winner proportionally.
141
+ *
142
+ * @param providers - Non-empty list of provider IDs to choose from.
143
+ * @param weights - Optional weight map. Providers not listed get weight `1`.
144
+ * @returns The selected provider ID.
145
+ * @throws {Error} When `providers` is empty.
146
+ *
147
+ * @example
148
+ * ```ts
149
+ * // 90% suno, 10% udio (approximately)
150
+ * selectWeightedProvider(['suno', 'udio'], { suno: 9, udio: 1 });
151
+ * ```
152
+ */
153
+ export function selectWeightedProvider(providers, weights) {
154
+ if (providers.length === 0) {
155
+ throw new Error('Cannot select from an empty provider list');
156
+ }
157
+ if (!weights || providers.length === 1) {
158
+ return providers[0];
159
+ }
160
+ const resolved = providers
161
+ .map((id) => {
162
+ const weight = weights[id] ?? 1;
163
+ if (!Number.isFinite(weight) || weight < 0) {
164
+ throw new Error(`Invalid weight for provider "${id}". Expected a finite non-negative number.`);
165
+ }
166
+ return { id, weight };
167
+ })
168
+ .filter(({ weight }) => weight > 0);
169
+ if (resolved.length === 0) {
170
+ throw new Error('Cannot select from providers with zero total weight');
171
+ }
172
+ const totalWeight = resolved.reduce((sum, p) => sum + p.weight, 0);
173
+ let random = Math.random() * totalWeight;
174
+ for (const { id, weight } of resolved) {
175
+ random -= weight;
176
+ if (random <= 0) {
177
+ return id;
178
+ }
179
+ }
180
+ // Floating-point edge case — return the last provider.
181
+ return providers[providers.length - 1];
182
+ }
183
+ //# sourceMappingURL=ProviderPreferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderPreferences.js","sourceRoot":"","sources":["../../../src/core/media/ProviderPreferences.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @fileoverview CLI discovery registry — scans PATH for known binaries
3
+ * so AgentOS can auto-detect available tools, LLM CLIs, and utilities.
4
+ *
5
+ * Providers and extensions register their CLI dependencies at startup.
6
+ * A curated set of well-known CLIs ships as defaults.
7
+ *
8
+ * @module agentos/core/subprocess/CLIRegistry
9
+ */
10
+ import type { CLIDescriptor, CLIScanResult } from './types';
11
+ /**
12
+ * Curated set of well-known CLIs that AgentOS scans for by default.
13
+ * Extensions and providers can register additional descriptors at runtime.
14
+ */
15
+ export declare const WELL_KNOWN_CLIS: CLIDescriptor[];
16
+ /**
17
+ * Registry of known CLI binaries with PATH scanning capabilities.
18
+ *
19
+ * Usage:
20
+ * 1. Create a registry and register well-known CLIs (done automatically if using defaults).
21
+ * 2. Providers/extensions register additional CLIs via {@link register}.
22
+ * 3. Call {@link scan} to discover what's installed on the user's machine.
23
+ * 4. Results feed into `wunderland doctor`, capability discovery, and provider auto-detection.
24
+ *
25
+ * @example
26
+ * const registry = new CLIRegistry();
27
+ * registry.registerAll(WELL_KNOWN_CLIS);
28
+ * registry.register({ binaryName: 'my-tool', ... });
29
+ *
30
+ * const results = await registry.scan();
31
+ * for (const r of results) {
32
+ * console.log(`${r.displayName}: ${r.installed ? `v${r.version}` : 'not installed'}`);
33
+ * }
34
+ */
35
+ export declare class CLIRegistry {
36
+ private descriptors;
37
+ /**
38
+ * Create a registry, optionally pre-populated with well-known CLIs.
39
+ * @param loadDefaults — whether to register {@link WELL_KNOWN_CLIS} (default true)
40
+ */
41
+ constructor(loadDefaults?: boolean);
42
+ /** Register a single CLI descriptor. Overwrites existing entry for the same binaryName. */
43
+ register(descriptor: CLIDescriptor): void;
44
+ /** Register multiple descriptors at once. */
45
+ registerAll(descriptors: CLIDescriptor[]): void;
46
+ /** Remove a descriptor by binary name. */
47
+ unregister(binaryName: string): boolean;
48
+ /**
49
+ * Scan PATH for all registered CLIs.
50
+ * Runs `which` + `--version` for each descriptor in parallel.
51
+ * @returns scan results for every registered CLI (installed or not)
52
+ */
53
+ scan(): Promise<CLIScanResult[]>;
54
+ /**
55
+ * Check a single binary by name.
56
+ * @param binaryName — the binary to look for (must be registered)
57
+ * @returns scan result with installation status, path, and version
58
+ */
59
+ check(binaryName: string): Promise<CLIScanResult>;
60
+ /** Get all registered descriptors (installed or not). */
61
+ list(): CLIDescriptor[];
62
+ /** Get only installed CLIs. */
63
+ installed(): Promise<CLIScanResult[]>;
64
+ /** Get CLIs by category. */
65
+ byCategory(category: string): Promise<CLIScanResult[]>;
66
+ /** Check if a binary is registered (not whether it's installed). */
67
+ has(binaryName: string): boolean;
68
+ /** Get a descriptor by binary name. */
69
+ get(binaryName: string): CLIDescriptor | undefined;
70
+ }
71
+ //# sourceMappingURL=CLIRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CLIRegistry.d.ts","sourceRoot":"","sources":["../../../src/core/subprocess/CLIRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAM5D;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EA6E1C,CAAC;AAMF;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAyC;IAE5D;;;OAGG;gBACS,YAAY,GAAE,OAAc;IAMxC,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI;IAIzC,6CAA6C;IAC7C,WAAW,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI;IAI/C,0CAA0C;IAC1C,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIvC;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAMtC;;;;OAIG;IACG,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCvD,yDAAyD;IACzD,IAAI,IAAI,aAAa,EAAE;IAIvB,+BAA+B;IACzB,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3C,4BAA4B;IACtB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAK5D,oEAAoE;IACpE,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIhC,uCAAuC;IACvC,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;CAGnD"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * @fileoverview CLI discovery registry — scans PATH for known binaries
3
+ * so AgentOS can auto-detect available tools, LLM CLIs, and utilities.
4
+ *
5
+ * Providers and extensions register their CLI dependencies at startup.
6
+ * A curated set of well-known CLIs ships as defaults.
7
+ *
8
+ * @module agentos/core/subprocess/CLIRegistry
9
+ */
10
+ import { execa } from 'execa';
11
+ /* ------------------------------------------------------------------ */
12
+ /* Well-known CLIs */
13
+ /* ------------------------------------------------------------------ */
14
+ /**
15
+ * Curated set of well-known CLIs that AgentOS scans for by default.
16
+ * Extensions and providers can register additional descriptors at runtime.
17
+ */
18
+ export const WELL_KNOWN_CLIS = [
19
+ // ── LLM CLIs ──
20
+ {
21
+ binaryName: 'claude',
22
+ displayName: 'Claude Code',
23
+ description: 'Anthropic Claude via Max subscription — no API key required',
24
+ category: 'llm',
25
+ installGuidance: 'npm install -g @anthropic-ai/claude-code — or download from https://claude.ai/download',
26
+ },
27
+ {
28
+ binaryName: 'gemini',
29
+ displayName: 'Gemini CLI',
30
+ description: 'Google Gemini via Google account login — no API key required',
31
+ category: 'llm',
32
+ installGuidance: 'npm install -g @google/gemini-cli',
33
+ },
34
+ // ── Dev tools ──
35
+ {
36
+ binaryName: 'git',
37
+ displayName: 'Git',
38
+ description: 'Distributed version control system',
39
+ category: 'devtools',
40
+ installGuidance: 'https://git-scm.com/downloads',
41
+ },
42
+ {
43
+ binaryName: 'gh',
44
+ displayName: 'GitHub CLI',
45
+ description: 'GitHub API from the terminal — PRs, issues, actions',
46
+ category: 'devtools',
47
+ installGuidance: 'https://cli.github.com/',
48
+ },
49
+ {
50
+ binaryName: 'docker',
51
+ displayName: 'Docker',
52
+ description: 'Container runtime for building and running applications',
53
+ category: 'devtools',
54
+ installGuidance: 'https://docs.docker.com/get-docker/',
55
+ },
56
+ // ── Runtimes ──
57
+ {
58
+ binaryName: 'node',
59
+ displayName: 'Node.js',
60
+ description: 'JavaScript runtime built on V8',
61
+ category: 'runtime',
62
+ installGuidance: 'https://nodejs.org/',
63
+ },
64
+ {
65
+ binaryName: 'python3',
66
+ displayName: 'Python 3',
67
+ description: 'Python interpreter',
68
+ category: 'runtime',
69
+ installGuidance: 'https://www.python.org/downloads/',
70
+ },
71
+ // ── Media ──
72
+ {
73
+ binaryName: 'ffmpeg',
74
+ displayName: 'FFmpeg',
75
+ description: 'Audio/video processing and conversion toolkit',
76
+ category: 'media',
77
+ installGuidance: 'https://ffmpeg.org/download.html',
78
+ },
79
+ // ── Cloud ──
80
+ {
81
+ binaryName: 'gcloud',
82
+ displayName: 'Google Cloud SDK',
83
+ description: 'Google Cloud resource management',
84
+ category: 'cloud',
85
+ installGuidance: 'https://cloud.google.com/sdk/docs/install',
86
+ versionFlag: '--version',
87
+ },
88
+ {
89
+ binaryName: 'aws',
90
+ displayName: 'AWS CLI',
91
+ description: 'Amazon Web Services resource management',
92
+ category: 'cloud',
93
+ installGuidance: 'https://aws.amazon.com/cli/',
94
+ },
95
+ ];
96
+ /* ------------------------------------------------------------------ */
97
+ /* Registry */
98
+ /* ------------------------------------------------------------------ */
99
+ /**
100
+ * Registry of known CLI binaries with PATH scanning capabilities.
101
+ *
102
+ * Usage:
103
+ * 1. Create a registry and register well-known CLIs (done automatically if using defaults).
104
+ * 2. Providers/extensions register additional CLIs via {@link register}.
105
+ * 3. Call {@link scan} to discover what's installed on the user's machine.
106
+ * 4. Results feed into `wunderland doctor`, capability discovery, and provider auto-detection.
107
+ *
108
+ * @example
109
+ * const registry = new CLIRegistry();
110
+ * registry.registerAll(WELL_KNOWN_CLIS);
111
+ * registry.register({ binaryName: 'my-tool', ... });
112
+ *
113
+ * const results = await registry.scan();
114
+ * for (const r of results) {
115
+ * console.log(`${r.displayName}: ${r.installed ? `v${r.version}` : 'not installed'}`);
116
+ * }
117
+ */
118
+ export class CLIRegistry {
119
+ /**
120
+ * Create a registry, optionally pre-populated with well-known CLIs.
121
+ * @param loadDefaults — whether to register {@link WELL_KNOWN_CLIS} (default true)
122
+ */
123
+ constructor(loadDefaults = true) {
124
+ this.descriptors = new Map();
125
+ if (loadDefaults) {
126
+ this.registerAll(WELL_KNOWN_CLIS);
127
+ }
128
+ }
129
+ /** Register a single CLI descriptor. Overwrites existing entry for the same binaryName. */
130
+ register(descriptor) {
131
+ this.descriptors.set(descriptor.binaryName, descriptor);
132
+ }
133
+ /** Register multiple descriptors at once. */
134
+ registerAll(descriptors) {
135
+ for (const d of descriptors)
136
+ this.register(d);
137
+ }
138
+ /** Remove a descriptor by binary name. */
139
+ unregister(binaryName) {
140
+ return this.descriptors.delete(binaryName);
141
+ }
142
+ /**
143
+ * Scan PATH for all registered CLIs.
144
+ * Runs `which` + `--version` for each descriptor in parallel.
145
+ * @returns scan results for every registered CLI (installed or not)
146
+ */
147
+ async scan() {
148
+ return Promise.all(Array.from(this.descriptors.values()).map(d => this.check(d.binaryName)));
149
+ }
150
+ /**
151
+ * Check a single binary by name.
152
+ * @param binaryName — the binary to look for (must be registered)
153
+ * @returns scan result with installation status, path, and version
154
+ */
155
+ async check(binaryName) {
156
+ const descriptor = this.descriptors.get(binaryName);
157
+ if (!descriptor) {
158
+ return {
159
+ binaryName,
160
+ displayName: binaryName,
161
+ description: '',
162
+ category: 'unknown',
163
+ installGuidance: '',
164
+ installed: false,
165
+ };
166
+ }
167
+ try {
168
+ const whichResult = await execa('which', [binaryName]);
169
+ const binaryPath = whichResult.stdout.trim();
170
+ const versionFlag = descriptor.versionFlag ?? '--version';
171
+ let version = 'unknown';
172
+ try {
173
+ const versionResult = await execa(binaryName, [versionFlag]);
174
+ const pattern = descriptor.versionPattern ?? /(\d+\.\d+\.\d+)/;
175
+ const match = versionResult.stdout.match(pattern);
176
+ version = match ? match[1] : 'unknown';
177
+ }
178
+ catch {
179
+ /* version check failed — binary still exists though */
180
+ }
181
+ return { ...descriptor, installed: true, binaryPath, version };
182
+ }
183
+ catch {
184
+ return { ...descriptor, installed: false };
185
+ }
186
+ }
187
+ /** Get all registered descriptors (installed or not). */
188
+ list() {
189
+ return Array.from(this.descriptors.values());
190
+ }
191
+ /** Get only installed CLIs. */
192
+ async installed() {
193
+ const results = await this.scan();
194
+ return results.filter(r => r.installed);
195
+ }
196
+ /** Get CLIs by category. */
197
+ async byCategory(category) {
198
+ const results = await this.scan();
199
+ return results.filter(r => r.category === category);
200
+ }
201
+ /** Check if a binary is registered (not whether it's installed). */
202
+ has(binaryName) {
203
+ return this.descriptors.has(binaryName);
204
+ }
205
+ /** Get a descriptor by binary name. */
206
+ get(binaryName) {
207
+ return this.descriptors.get(binaryName);
208
+ }
209
+ }
210
+ //# sourceMappingURL=CLIRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CLIRegistry.js","sourceRoot":"","sources":["../../../src/core/subprocess/CLIRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @fileoverview Abstract base class for CLI subprocess bridges.
3
+ * Uses the template method pattern: owns subprocess lifecycle (spawn, pipe,
4
+ * parse NDJSON, timeout/abort) while subclasses implement CLI-specific
5
+ * flag assembly, error classification, and stream event parsing.
6
+ *
7
+ * This is a first-class AgentOS core capability — any provider, extension,
8
+ * tool, or skill can extend this to manage external CLI binaries.
9
+ *
10
+ * @module agentos/core/subprocess/CLISubprocessBridge
11
+ * @see ClaudeCodeCLIBridge
12
+ */
13
+ import { CLISubprocessError } from './errors';
14
+ import type { BridgeOptions, BridgeResult, StreamEvent, OutputFormat, InstallCheckResult } from './types';
15
+ /**
16
+ * Abstract base class for managing CLI subprocesses via execa.
17
+ *
18
+ * Subclasses implement four methods:
19
+ * - {@link binaryName} — the CLI binary on PATH
20
+ * - {@link buildArgs} — CLI-specific flag assembly
21
+ * - {@link classifyError} — error classification with guidance
22
+ * - {@link parseStreamEvent} — stream-json event parsing
23
+ *
24
+ * The base class handles:
25
+ * - Binary installation detection (`which` + version parsing)
26
+ * - Authentication health checks
27
+ * - Non-streaming execution with JSON result parsing
28
+ * - Streaming execution with NDJSON line splitting
29
+ * - Timeout and abort signal management
30
+ *
31
+ * @example
32
+ * class MyToolBridge extends CLISubprocessBridge {
33
+ * protected readonly binaryName = 'mytool';
34
+ * protected buildArgs(opts, fmt) { return ['-p', '--format', fmt]; }
35
+ * protected classifyError(err) { return new CLISubprocessError(...); }
36
+ * protected parseStreamEvent(raw) { return { type: 'text_delta', text: raw.text }; }
37
+ * }
38
+ */
39
+ export declare abstract class CLISubprocessBridge {
40
+ /** The CLI binary name on PATH (e.g. 'claude', 'gemini', 'ffmpeg'). */
41
+ protected abstract readonly binaryName: string;
42
+ /**
43
+ * Build the CLI argument array for a given call.
44
+ * Called by {@link execute} and {@link stream} with the appropriate output format.
45
+ *
46
+ * @param options — caller-provided bridge options
47
+ * @param format — 'json' for execute(), 'stream-json' for stream()
48
+ * @returns array of CLI arguments
49
+ */
50
+ protected abstract buildArgs(options: BridgeOptions, format: OutputFormat): string[];
51
+ /**
52
+ * Classify a subprocess error into a typed {@link CLISubprocessError}.
53
+ * Examines stderr, exit code, error.code to produce actionable guidance.
54
+ *
55
+ * @param error — the raw error from execa
56
+ * @returns a CLISubprocessError (or subclass) with guidance and recoverability
57
+ */
58
+ protected abstract classifyError(error: any): CLISubprocessError;
59
+ /**
60
+ * Parse a raw JSON object from stream-json output into a typed {@link StreamEvent}.
61
+ * Returns null for events that should be skipped (progress spinners, etc.).
62
+ *
63
+ * @param raw — a parsed JSON object from one line of NDJSON stdout
64
+ * @returns a typed StreamEvent, or null to skip
65
+ */
66
+ protected abstract parseStreamEvent(raw: any): StreamEvent | null;
67
+ /**
68
+ * Parse the JSON stdout from `--output-format json`.
69
+ * Default implementation: JSON.parse with graceful fallback to raw text.
70
+ * Override if your CLI's JSON output has a different shape.
71
+ */
72
+ protected parseJsonResult(stdout: string, durationMs: number): BridgeResult;
73
+ /**
74
+ * Build args and stdin for the lightweight authentication check.
75
+ * Override for CLI-specific flags (e.g. Claude needs --bare --max-turns 1).
76
+ */
77
+ protected buildAuthCheckArgs(): {
78
+ args: string[];
79
+ stdin: string;
80
+ };
81
+ /**
82
+ * Parse a version string from the CLI's --version output.
83
+ * Default: extracts first semver-like pattern (/\d+\.\d+\.\d+/).
84
+ */
85
+ protected parseVersion(stdout: string): string;
86
+ /**
87
+ * Check if the binary is installed and on PATH.
88
+ * Returns the resolved path and parsed version string if found.
89
+ */
90
+ checkBinaryInstalled(): Promise<InstallCheckResult>;
91
+ /**
92
+ * Check if the CLI is authenticated via a lightweight ping.
93
+ * Uses {@link buildAuthCheckArgs} for CLI-specific flags.
94
+ */
95
+ checkAuthenticated(): Promise<boolean>;
96
+ /**
97
+ * Non-streaming execution.
98
+ * Spawns the binary with `--output-format json`, pipes prompt via stdin,
99
+ * and returns the parsed result.
100
+ *
101
+ * @param options — bridge options (prompt, system prompt, model, etc.)
102
+ * @returns parsed result with text, session ID, usage, and timing
103
+ * @throws {CLISubprocessError} on subprocess failure (via {@link classifyError})
104
+ */
105
+ execute(options: BridgeOptions): Promise<BridgeResult>;
106
+ /**
107
+ * Streaming execution.
108
+ * Spawns the binary with `--output-format stream-json` and yields
109
+ * {@link StreamEvent}s parsed from newline-delimited JSON on stdout.
110
+ *
111
+ * @param options — bridge options
112
+ * @yields typed stream events (text_delta, result, error, system)
113
+ * @throws {CLISubprocessError} on subprocess failure (via {@link classifyError})
114
+ */
115
+ stream(options: BridgeOptions): AsyncGenerator<StreamEvent, void, undefined>;
116
+ }
117
+ //# sourceMappingURL=CLISubprocessBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CLISubprocessBridge.d.ts","sourceRoot":"","sources":["../../../src/core/subprocess/CLISubprocessBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAKjB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,mBAAmB;IAIvC,uEAAuE;IACvE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE/C;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE;IAEpF;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,kBAAkB;IAEhE;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,GAAG,IAAI;IAIjE;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY;IAiB3E;;;OAGG;IACH,SAAS,CAAC,kBAAkB,IAAI;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAOjE;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAO9C;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAczD;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAU5C;;;;;;;;OAQG;IACG,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAmB5D;;;;;;;;OAQG;IACI,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC;CAkDpF"}