@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,136 @@
1
+ /**
2
+ * @module core/audio/providers/AudioGenLocalProvider
3
+ *
4
+ * Local sound effect generation provider using Meta's AudioGen model via
5
+ * the `@huggingface/transformers` library.
6
+ *
7
+ * AudioGen runs entirely on the local machine without any API keys or
8
+ * network requests. The model is loaded lazily on first use through the
9
+ * `pipeline('text-to-audio', ...)` API from HuggingFace Transformers.js.
10
+ *
11
+ * ## Requirements
12
+ *
13
+ * - `@huggingface/transformers` must be installed as a peer dependency.
14
+ * If not installed, the provider throws a helpful error message.
15
+ * - Sufficient RAM/VRAM for model inference (Xenova/audiogen-medium ~2GB).
16
+ *
17
+ * ## Supported models
18
+ *
19
+ * | Model ID | Description |
20
+ * |-----------------------------|------------------------------------|
21
+ * | `Xenova/audiogen-medium` | AudioGen Medium — default, ~2GB |
22
+ *
23
+ * ## API flow (local inference)
24
+ *
25
+ * 1. **Load** — `pipeline('text-to-audio', modelId)` (lazy, cached).
26
+ * 2. **Generate** — `pipeline(prompt, { max_new_tokens })` returns audio tensor.
27
+ * 3. **Encode** — Convert raw audio data to WAV format.
28
+ *
29
+ * @see {@link IAudioGenerator} for the provider interface contract.
30
+ * @see {@link MusicGenLocalProvider} for the music counterpart.
31
+ */
32
+ import type { IAudioGenerator } from '../IAudioGenerator.js';
33
+ import type { MusicGenerateRequest, SFXGenerateRequest, AudioResult } from '../types.js';
34
+ /**
35
+ * Configuration for the AudioGen local provider.
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const config: AudioGenLocalProviderConfig = {
40
+ * modelId: 'Xenova/audiogen-medium',
41
+ * };
42
+ * ```
43
+ */
44
+ export interface AudioGenLocalProviderConfig {
45
+ /**
46
+ * HuggingFace model ID for the AudioGen model.
47
+ * @default 'Xenova/audiogen-medium'
48
+ */
49
+ modelId?: string;
50
+ }
51
+ /**
52
+ * Local sound effect generation provider using Meta's AudioGen model.
53
+ *
54
+ * Runs inference entirely on the local machine via `@huggingface/transformers`.
55
+ * The model is loaded lazily on first call to `generateSFX()` or
56
+ * explicitly via `initialize()`.
57
+ *
58
+ * @implements {IAudioGenerator}
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const provider = new AudioGenLocalProvider();
63
+ * await provider.initialize({ modelId: 'Xenova/audiogen-medium' });
64
+ *
65
+ * const result = await provider.generateSFX({
66
+ * prompt: 'Dog barking loudly in a park',
67
+ * durationSec: 5,
68
+ * });
69
+ * console.log(result.audio[0].base64?.substring(0, 50) + '...');
70
+ * ```
71
+ */
72
+ export declare class AudioGenLocalProvider implements IAudioGenerator {
73
+ /** @inheritdoc */
74
+ readonly providerId = "audiogen-local";
75
+ /** @inheritdoc */
76
+ isInitialized: boolean;
77
+ /** @inheritdoc */
78
+ defaultModelId?: string;
79
+ /** The loaded text-to-audio pipeline instance. */
80
+ private _pipeline;
81
+ /** The resolved model ID. */
82
+ private _modelId;
83
+ /**
84
+ * Initialize the provider and optionally pre-load the model.
85
+ *
86
+ * The model is loaded lazily on first generation call. Calling initialize
87
+ * sets the configuration but does not load the model unless the pipeline
88
+ * was already created.
89
+ *
90
+ * @param config - Configuration object with optional `modelId`.
91
+ */
92
+ initialize(config: Record<string, unknown>): Promise<void>;
93
+ /**
94
+ * Music generation is not supported by AudioGen.
95
+ *
96
+ * @throws {Error} Always throws — use {@link MusicGenLocalProvider} instead.
97
+ */
98
+ generateMusic(_request: MusicGenerateRequest): Promise<AudioResult>;
99
+ /**
100
+ * Generate a sound effect from a text prompt using the local AudioGen model.
101
+ *
102
+ * On first call, loads the model pipeline (may take several seconds).
103
+ * Subsequent calls reuse the cached pipeline instance.
104
+ *
105
+ * @param request - SFX generation request with prompt and optional params.
106
+ * @returns The generated audio result envelope with base64-encoded WAV data.
107
+ *
108
+ * @throws {Error} If the provider is not initialized.
109
+ * @throws {Error} If `@huggingface/transformers` is not installed.
110
+ */
111
+ generateSFX(request: SFXGenerateRequest): Promise<AudioResult>;
112
+ /**
113
+ * AudioGen supports SFX generation only.
114
+ *
115
+ * @param capability - The capability to check.
116
+ * @returns `true` only for `'sfx'`; `false` for `'music'`.
117
+ */
118
+ supports(capability: 'music' | 'sfx'): boolean;
119
+ /**
120
+ * Release model resources and reset initialization state.
121
+ */
122
+ shutdown(): Promise<void>;
123
+ /**
124
+ * Ensure the text-to-audio pipeline is loaded, creating it lazily if needed.
125
+ *
126
+ * Uses dynamic `import()` to load `@huggingface/transformers` as an optional
127
+ * peer dependency. Throws a helpful error if the package is not installed.
128
+ *
129
+ * @returns The loaded pipeline callable.
130
+ *
131
+ * @throws {Error} If `@huggingface/transformers` is not installed.
132
+ * @internal
133
+ */
134
+ private _ensurePipeline;
135
+ }
136
+ //# sourceMappingURL=AudioGenLocalProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioGenLocalProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/audio/providers/AudioGenLocalProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAMzF;;;;;;;;;GASG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4DD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,kBAAkB;IAClB,SAAgB,UAAU,oBAAoB;IAE9C,kBAAkB;IACX,aAAa,UAAS;IAE7B,kBAAkB;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IAE/B,kDAAkD;IAClD,OAAO,CAAC,SAAS,CAAiB;IAElC,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAA4B;IAM5C;;;;;;;;OAQG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAahE;;;;OAIG;IACG,aAAa,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAMzE;;;;;;;;;;;OAWG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IA0CpE;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO;IAI9C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B;;;;;;;;;;OAUG;YACW,eAAe;CAgB9B"}
@@ -0,0 +1,235 @@
1
+ /**
2
+ * @module core/audio/providers/AudioGenLocalProvider
3
+ *
4
+ * Local sound effect generation provider using Meta's AudioGen model via
5
+ * the `@huggingface/transformers` library.
6
+ *
7
+ * AudioGen runs entirely on the local machine without any API keys or
8
+ * network requests. The model is loaded lazily on first use through the
9
+ * `pipeline('text-to-audio', ...)` API from HuggingFace Transformers.js.
10
+ *
11
+ * ## Requirements
12
+ *
13
+ * - `@huggingface/transformers` must be installed as a peer dependency.
14
+ * If not installed, the provider throws a helpful error message.
15
+ * - Sufficient RAM/VRAM for model inference (Xenova/audiogen-medium ~2GB).
16
+ *
17
+ * ## Supported models
18
+ *
19
+ * | Model ID | Description |
20
+ * |-----------------------------|------------------------------------|
21
+ * | `Xenova/audiogen-medium` | AudioGen Medium — default, ~2GB |
22
+ *
23
+ * ## API flow (local inference)
24
+ *
25
+ * 1. **Load** — `pipeline('text-to-audio', modelId)` (lazy, cached).
26
+ * 2. **Generate** — `pipeline(prompt, { max_new_tokens })` returns audio tensor.
27
+ * 3. **Encode** — Convert raw audio data to WAV format.
28
+ *
29
+ * @see {@link IAudioGenerator} for the provider interface contract.
30
+ * @see {@link MusicGenLocalProvider} for the music counterpart.
31
+ */
32
+ // ---------------------------------------------------------------------------
33
+ // Helpers
34
+ // ---------------------------------------------------------------------------
35
+ /**
36
+ * Encode raw PCM float32 audio samples into a WAV file buffer.
37
+ *
38
+ * Creates a minimal WAV header (44 bytes) followed by 16-bit PCM samples
39
+ * at the specified sample rate.
40
+ *
41
+ * @param samples - Float32 audio samples (range -1 to 1).
42
+ * @param sampleRate - Sample rate in Hz (e.g. 16000).
43
+ * @returns A Buffer containing valid WAV file data.
44
+ * @internal
45
+ */
46
+ function encodeWav(samples, sampleRate) {
47
+ const numChannels = 1;
48
+ const bitsPerSample = 16;
49
+ const byteRate = sampleRate * numChannels * (bitsPerSample / 8);
50
+ const blockAlign = numChannels * (bitsPerSample / 8);
51
+ const dataSize = samples.length * (bitsPerSample / 8);
52
+ const headerSize = 44;
53
+ const buffer = Buffer.alloc(headerSize + dataSize);
54
+ // RIFF header
55
+ buffer.write('RIFF', 0);
56
+ buffer.writeUInt32LE(36 + dataSize, 4);
57
+ buffer.write('WAVE', 8);
58
+ // fmt sub-chunk
59
+ buffer.write('fmt ', 12);
60
+ buffer.writeUInt32LE(16, 16);
61
+ buffer.writeUInt16LE(1, 20); // PCM format
62
+ buffer.writeUInt16LE(numChannels, 22);
63
+ buffer.writeUInt32LE(sampleRate, 24);
64
+ buffer.writeUInt32LE(byteRate, 28);
65
+ buffer.writeUInt16LE(blockAlign, 32);
66
+ buffer.writeUInt16LE(bitsPerSample, 34);
67
+ // data sub-chunk
68
+ buffer.write('data', 36);
69
+ buffer.writeUInt32LE(dataSize, 40);
70
+ // Write 16-bit PCM samples
71
+ for (let i = 0; i < samples.length; i++) {
72
+ const clamped = Math.max(-1, Math.min(1, samples[i]));
73
+ const int16 = clamped < 0 ? clamped * 0x8000 : clamped * 0x7FFF;
74
+ buffer.writeInt16LE(Math.round(int16), headerSize + i * 2);
75
+ }
76
+ return buffer;
77
+ }
78
+ // ---------------------------------------------------------------------------
79
+ // Implementation
80
+ // ---------------------------------------------------------------------------
81
+ /**
82
+ * Local sound effect generation provider using Meta's AudioGen model.
83
+ *
84
+ * Runs inference entirely on the local machine via `@huggingface/transformers`.
85
+ * The model is loaded lazily on first call to `generateSFX()` or
86
+ * explicitly via `initialize()`.
87
+ *
88
+ * @implements {IAudioGenerator}
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const provider = new AudioGenLocalProvider();
93
+ * await provider.initialize({ modelId: 'Xenova/audiogen-medium' });
94
+ *
95
+ * const result = await provider.generateSFX({
96
+ * prompt: 'Dog barking loudly in a park',
97
+ * durationSec: 5,
98
+ * });
99
+ * console.log(result.audio[0].base64?.substring(0, 50) + '...');
100
+ * ```
101
+ */
102
+ export class AudioGenLocalProvider {
103
+ constructor() {
104
+ /** @inheritdoc */
105
+ this.providerId = 'audiogen-local';
106
+ /** @inheritdoc */
107
+ this.isInitialized = false;
108
+ /** The loaded text-to-audio pipeline instance. */
109
+ this._pipeline = null;
110
+ /** The resolved model ID. */
111
+ this._modelId = 'Xenova/audiogen-medium';
112
+ }
113
+ // -------------------------------------------------------------------------
114
+ // Lifecycle
115
+ // -------------------------------------------------------------------------
116
+ /**
117
+ * Initialize the provider and optionally pre-load the model.
118
+ *
119
+ * The model is loaded lazily on first generation call. Calling initialize
120
+ * sets the configuration but does not load the model unless the pipeline
121
+ * was already created.
122
+ *
123
+ * @param config - Configuration object with optional `modelId`.
124
+ */
125
+ async initialize(config) {
126
+ if (typeof config.modelId === 'string' && config.modelId.trim()) {
127
+ this._modelId = config.modelId.trim();
128
+ }
129
+ this.defaultModelId = this._modelId;
130
+ this.isInitialized = true;
131
+ }
132
+ // -------------------------------------------------------------------------
133
+ // Generation
134
+ // -------------------------------------------------------------------------
135
+ /**
136
+ * Music generation is not supported by AudioGen.
137
+ *
138
+ * @throws {Error} Always throws — use {@link MusicGenLocalProvider} instead.
139
+ */
140
+ async generateMusic(_request) {
141
+ throw new Error('AudioGen local provider does not support music generation. Use MusicGenLocalProvider instead.');
142
+ }
143
+ /**
144
+ * Generate a sound effect from a text prompt using the local AudioGen model.
145
+ *
146
+ * On first call, loads the model pipeline (may take several seconds).
147
+ * Subsequent calls reuse the cached pipeline instance.
148
+ *
149
+ * @param request - SFX generation request with prompt and optional params.
150
+ * @returns The generated audio result envelope with base64-encoded WAV data.
151
+ *
152
+ * @throws {Error} If the provider is not initialized.
153
+ * @throws {Error} If `@huggingface/transformers` is not installed.
154
+ */
155
+ async generateSFX(request) {
156
+ if (!this.isInitialized) {
157
+ throw new Error('AudioGen local provider is not initialized. Call initialize() first.');
158
+ }
159
+ const pipe = await this._ensurePipeline();
160
+ const modelId = request.modelId || this._modelId;
161
+ // Estimate max_new_tokens from duration. AudioGen generates at ~50 tokens/second.
162
+ const durationSec = request.durationSec ?? 5;
163
+ const maxNewTokens = Math.ceil(durationSec * 50);
164
+ const output = await pipe(request.prompt, { max_new_tokens: maxNewTokens });
165
+ // The pipeline returns { audio: Float32Array, sampling_rate: number }
166
+ const audioData = output;
167
+ const wavBuffer = encodeWav(audioData.audio, audioData.sampling_rate);
168
+ const base64 = wavBuffer.toString('base64');
169
+ return {
170
+ created: Math.floor(Date.now() / 1000),
171
+ modelId,
172
+ providerId: this.providerId,
173
+ audio: [{
174
+ base64,
175
+ mimeType: 'audio/wav',
176
+ durationSec,
177
+ providerMetadata: {
178
+ sampleRate: audioData.sampling_rate,
179
+ totalSamples: audioData.audio.length,
180
+ },
181
+ }],
182
+ usage: {
183
+ totalAudioClips: 1,
184
+ },
185
+ };
186
+ }
187
+ // -------------------------------------------------------------------------
188
+ // Capability query
189
+ // -------------------------------------------------------------------------
190
+ /**
191
+ * AudioGen supports SFX generation only.
192
+ *
193
+ * @param capability - The capability to check.
194
+ * @returns `true` only for `'sfx'`; `false` for `'music'`.
195
+ */
196
+ supports(capability) {
197
+ return capability === 'sfx';
198
+ }
199
+ /**
200
+ * Release model resources and reset initialization state.
201
+ */
202
+ async shutdown() {
203
+ this._pipeline = null;
204
+ this.isInitialized = false;
205
+ }
206
+ // -------------------------------------------------------------------------
207
+ // Private helpers
208
+ // -------------------------------------------------------------------------
209
+ /**
210
+ * Ensure the text-to-audio pipeline is loaded, creating it lazily if needed.
211
+ *
212
+ * Uses dynamic `import()` to load `@huggingface/transformers` as an optional
213
+ * peer dependency. Throws a helpful error if the package is not installed.
214
+ *
215
+ * @returns The loaded pipeline callable.
216
+ *
217
+ * @throws {Error} If `@huggingface/transformers` is not installed.
218
+ * @internal
219
+ */
220
+ async _ensurePipeline() {
221
+ if (this._pipeline)
222
+ return this._pipeline;
223
+ let transformers;
224
+ try {
225
+ transformers = await import('@huggingface/transformers');
226
+ }
227
+ catch {
228
+ throw new Error('AudioGen local provider requires @huggingface/transformers. '
229
+ + 'Install it with: npm install @huggingface/transformers');
230
+ }
231
+ this._pipeline = await transformers.pipeline('text-to-audio', this._modelId);
232
+ return this._pipeline;
233
+ }
234
+ }
235
+ //# sourceMappingURL=AudioGenLocalProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioGenLocalProvider.js","sourceRoot":"","sources":["../../../../src/core/audio/providers/AudioGenLocalProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @module core/audio/providers/ElevenLabsSFXProvider
3
+ *
4
+ * Sound effect generation provider for the ElevenLabs Sound Generation API.
5
+ *
6
+ * ElevenLabs offers a dedicated sound effects endpoint that generates
7
+ * short audio clips from text descriptions. This provider is SFX-only;
8
+ * it does not support music generation.
9
+ *
10
+ * ## API flow (synchronous)
11
+ *
12
+ * 1. **Generate** — `POST ${baseURL}/sound-generation` with text prompt,
13
+ * duration, and prompt influence. Returns audio data directly.
14
+ *
15
+ * ## Authentication
16
+ *
17
+ * Requires an `ELEVENLABS_API_KEY`. Sent as `xi-api-key: ${apiKey}`.
18
+ *
19
+ * @see {@link IAudioGenerator} for the provider interface contract.
20
+ */
21
+ import type { IAudioGenerator } from '../IAudioGenerator.js';
22
+ import type { MusicGenerateRequest, SFXGenerateRequest, AudioResult } from '../types.js';
23
+ /**
24
+ * Configuration for the ElevenLabs SFX generation provider.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const config: ElevenLabsSFXProviderConfig = {
29
+ * apiKey: process.env.ELEVENLABS_API_KEY!,
30
+ * };
31
+ * ```
32
+ */
33
+ export interface ElevenLabsSFXProviderConfig {
34
+ /** ElevenLabs API key. Sent as `xi-api-key: ${apiKey}`. */
35
+ apiKey: string;
36
+ /**
37
+ * Base URL for the ElevenLabs API. Override for testing or proxy setups.
38
+ * @default 'https://api.elevenlabs.io/v1'
39
+ */
40
+ baseURL?: string;
41
+ }
42
+ /**
43
+ * Sound effect generation provider connecting to the ElevenLabs API.
44
+ *
45
+ * Implements a synchronous request pattern: a single POST request returns
46
+ * the generated audio data directly. Only supports SFX generation — music
47
+ * generation is not available through this endpoint.
48
+ *
49
+ * @implements {IAudioGenerator}
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const provider = new ElevenLabsSFXProvider();
54
+ * await provider.initialize({ apiKey: process.env.ELEVENLABS_API_KEY! });
55
+ *
56
+ * const result = await provider.generateSFX({
57
+ * prompt: 'Thunder crack followed by heavy rain',
58
+ * durationSec: 5,
59
+ * });
60
+ * console.log(result.audio[0].base64);
61
+ * ```
62
+ */
63
+ export declare class ElevenLabsSFXProvider implements IAudioGenerator {
64
+ /** @inheritdoc */
65
+ readonly providerId = "elevenlabs-sfx";
66
+ /** @inheritdoc */
67
+ isInitialized: boolean;
68
+ /** @inheritdoc */
69
+ defaultModelId?: string;
70
+ /** Internal resolved configuration. */
71
+ private _config;
72
+ /**
73
+ * Initialize the provider with API credentials and optional configuration.
74
+ *
75
+ * @param config - Configuration object. Must include `apiKey`.
76
+ * @throws {Error} If `apiKey` is missing or empty.
77
+ */
78
+ initialize(config: Record<string, unknown>): Promise<void>;
79
+ /**
80
+ * Music generation is not supported by the ElevenLabs SFX endpoint.
81
+ *
82
+ * @throws {Error} Always throws — use a music-capable provider instead.
83
+ */
84
+ generateMusic(_request: MusicGenerateRequest): Promise<AudioResult>;
85
+ /**
86
+ * Generate a sound effect from a text prompt using the ElevenLabs API.
87
+ *
88
+ * @param request - SFX generation request with prompt and optional params.
89
+ * @returns The generated audio result envelope.
90
+ *
91
+ * @throws {Error} If the provider is not initialized.
92
+ * @throws {Error} If the API returns an error.
93
+ */
94
+ generateSFX(request: SFXGenerateRequest): Promise<AudioResult>;
95
+ /**
96
+ * ElevenLabs SFX provider only supports sound effect generation.
97
+ *
98
+ * @param capability - The capability to check.
99
+ * @returns `true` only for `'sfx'`; `false` for `'music'`.
100
+ */
101
+ supports(capability: 'music' | 'sfx'): boolean;
102
+ /**
103
+ * Release any resources held by the provider. No-op for HTTP-only providers.
104
+ */
105
+ shutdown(): Promise<void>;
106
+ }
107
+ //# sourceMappingURL=ElevenLabsSFXProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElevenLabsSFXProvider.d.ts","sourceRoot":"","sources":["../../../../src/core/audio/providers/ElevenLabsSFXProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAMzF;;;;;;;;;GASG;AACH,MAAM,WAAW,2BAA2B;IAC1C,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,kBAAkB;IAClB,SAAgB,UAAU,oBAAoB;IAE9C,kBAAkB;IACX,aAAa,UAAS;IAE7B,kBAAkB;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IAE/B,uCAAuC;IACvC,OAAO,CAAC,OAAO,CAAqE;IAMpF;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBhE;;;;OAIG;IACG,aAAa,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAMzE;;;;;;;;OAQG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAoDpE;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO;IAI9C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * @module core/audio/providers/ElevenLabsSFXProvider
3
+ *
4
+ * Sound effect generation provider for the ElevenLabs Sound Generation API.
5
+ *
6
+ * ElevenLabs offers a dedicated sound effects endpoint that generates
7
+ * short audio clips from text descriptions. This provider is SFX-only;
8
+ * it does not support music generation.
9
+ *
10
+ * ## API flow (synchronous)
11
+ *
12
+ * 1. **Generate** — `POST ${baseURL}/sound-generation` with text prompt,
13
+ * duration, and prompt influence. Returns audio data directly.
14
+ *
15
+ * ## Authentication
16
+ *
17
+ * Requires an `ELEVENLABS_API_KEY`. Sent as `xi-api-key: ${apiKey}`.
18
+ *
19
+ * @see {@link IAudioGenerator} for the provider interface contract.
20
+ */
21
+ // ---------------------------------------------------------------------------
22
+ // Implementation
23
+ // ---------------------------------------------------------------------------
24
+ /**
25
+ * Sound effect generation provider connecting to the ElevenLabs API.
26
+ *
27
+ * Implements a synchronous request pattern: a single POST request returns
28
+ * the generated audio data directly. Only supports SFX generation — music
29
+ * generation is not available through this endpoint.
30
+ *
31
+ * @implements {IAudioGenerator}
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const provider = new ElevenLabsSFXProvider();
36
+ * await provider.initialize({ apiKey: process.env.ELEVENLABS_API_KEY! });
37
+ *
38
+ * const result = await provider.generateSFX({
39
+ * prompt: 'Thunder crack followed by heavy rain',
40
+ * durationSec: 5,
41
+ * });
42
+ * console.log(result.audio[0].base64);
43
+ * ```
44
+ */
45
+ export class ElevenLabsSFXProvider {
46
+ constructor() {
47
+ /** @inheritdoc */
48
+ this.providerId = 'elevenlabs-sfx';
49
+ /** @inheritdoc */
50
+ this.isInitialized = false;
51
+ }
52
+ // -------------------------------------------------------------------------
53
+ // Lifecycle
54
+ // -------------------------------------------------------------------------
55
+ /**
56
+ * Initialize the provider with API credentials and optional configuration.
57
+ *
58
+ * @param config - Configuration object. Must include `apiKey`.
59
+ * @throws {Error} If `apiKey` is missing or empty.
60
+ */
61
+ async initialize(config) {
62
+ const apiKey = typeof config.apiKey === 'string' ? config.apiKey.trim() : '';
63
+ if (!apiKey) {
64
+ throw new Error('ElevenLabs SFX provider requires apiKey (ELEVENLABS_API_KEY).');
65
+ }
66
+ this._config = {
67
+ apiKey,
68
+ baseURL: typeof config.baseURL === 'string' && config.baseURL.trim()
69
+ ? config.baseURL.trim()
70
+ : 'https://api.elevenlabs.io/v1',
71
+ };
72
+ this.isInitialized = true;
73
+ }
74
+ // -------------------------------------------------------------------------
75
+ // Generation
76
+ // -------------------------------------------------------------------------
77
+ /**
78
+ * Music generation is not supported by the ElevenLabs SFX endpoint.
79
+ *
80
+ * @throws {Error} Always throws — use a music-capable provider instead.
81
+ */
82
+ async generateMusic(_request) {
83
+ throw new Error('ElevenLabs SFX provider does not support music generation. Use a music-capable provider.');
84
+ }
85
+ /**
86
+ * Generate a sound effect from a text prompt using the ElevenLabs API.
87
+ *
88
+ * @param request - SFX generation request with prompt and optional params.
89
+ * @returns The generated audio result envelope.
90
+ *
91
+ * @throws {Error} If the provider is not initialized.
92
+ * @throws {Error} If the API returns an error.
93
+ */
94
+ async generateSFX(request) {
95
+ if (!this.isInitialized) {
96
+ throw new Error('ElevenLabs SFX provider is not initialized. Call initialize() first.');
97
+ }
98
+ const url = `${this._config.baseURL}/sound-generation`;
99
+ const body = {
100
+ text: request.prompt,
101
+ prompt_influence: 0.3,
102
+ };
103
+ if (request.durationSec !== undefined)
104
+ body.duration_seconds = request.durationSec;
105
+ const response = await fetch(url, {
106
+ method: 'POST',
107
+ headers: {
108
+ 'xi-api-key': this._config.apiKey,
109
+ 'Content-Type': 'application/json',
110
+ },
111
+ body: JSON.stringify(body),
112
+ });
113
+ if (!response.ok) {
114
+ const errorText = await response.text();
115
+ throw new Error(`ElevenLabs SFX generation failed (${response.status}): ${errorText}`);
116
+ }
117
+ // The API returns raw audio bytes. Convert to base64 for the result envelope.
118
+ const arrayBuffer = await response.arrayBuffer();
119
+ const base64 = Buffer.from(arrayBuffer).toString('base64');
120
+ return {
121
+ created: Math.floor(Date.now() / 1000),
122
+ modelId: 'elevenlabs-sound-generation',
123
+ providerId: this.providerId,
124
+ audio: [{
125
+ base64,
126
+ mimeType: 'audio/mpeg',
127
+ durationSec: request.durationSec,
128
+ providerMetadata: {},
129
+ }],
130
+ usage: {
131
+ totalAudioClips: 1,
132
+ },
133
+ };
134
+ }
135
+ // -------------------------------------------------------------------------
136
+ // Capability query
137
+ // -------------------------------------------------------------------------
138
+ /**
139
+ * ElevenLabs SFX provider only supports sound effect generation.
140
+ *
141
+ * @param capability - The capability to check.
142
+ * @returns `true` only for `'sfx'`; `false` for `'music'`.
143
+ */
144
+ supports(capability) {
145
+ return capability === 'sfx';
146
+ }
147
+ /**
148
+ * Release any resources held by the provider. No-op for HTTP-only providers.
149
+ */
150
+ async shutdown() {
151
+ this.isInitialized = false;
152
+ }
153
+ }
154
+ //# sourceMappingURL=ElevenLabsSFXProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElevenLabsSFXProvider.js","sourceRoot":"","sources":["../../../../src/core/audio/providers/ElevenLabsSFXProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AA8BH,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,qBAAqB;IAAlC;QACE,kBAAkB;QACF,eAAU,GAAG,gBAAgB,CAAC;QAE9C,kBAAkB;QACX,kBAAa,GAAG,KAAK,CAAC;IA+H/B,CAAC;IAvHC,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAE5E;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,MAA+B;QAC9C,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,OAAO,GAAG;YACb,MAAM;YACN,OAAO,EACL,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;gBACzD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;gBACvB,CAAC,CAAC,8BAA8B;SACrC,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,QAA8B;QAChD,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,WAAW,CAAC,OAA2B;QAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC;QAEvD,MAAM,IAAI,GAA4B;YACpC,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,gBAAgB,EAAE,GAAG;SACtB,CAAC;QAEF,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;QAEnF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBACjC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,8EAA8E;QAC9E,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE3D,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACtC,OAAO,EAAE,6BAA6B;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,CAAC;oBACN,MAAM;oBACN,QAAQ,EAAE,YAAY;oBACtB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,gBAAgB,EAAE,EAAE;iBACrB,CAAC;YACF,KAAK,EAAE;gBACL,eAAe,EAAE,CAAC;aACnB;SACF,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,mBAAmB;IACnB,4EAA4E;IAE5E;;;;;OAKG;IACH,QAAQ,CAAC,UAA2B;QAClC,OAAO,UAAU,KAAK,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;CACF"}