@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.
- package/README.md +21 -0
- package/dist/api/agency.d.ts.map +1 -1
- package/dist/api/agency.js +227 -84
- package/dist/api/agency.js.map +1 -1
- package/dist/api/analyzeVideo.d.ts +127 -0
- package/dist/api/analyzeVideo.d.ts.map +1 -0
- package/dist/api/analyzeVideo.js +136 -0
- package/dist/api/analyzeVideo.js.map +1 -0
- package/dist/api/detectScenes.d.ts +82 -0
- package/dist/api/detectScenes.d.ts.map +1 -0
- package/dist/api/detectScenes.js +67 -0
- package/dist/api/detectScenes.js.map +1 -0
- package/dist/api/generateImage.d.ts +7 -0
- package/dist/api/generateImage.d.ts.map +1 -1
- package/dist/api/generateImage.js +133 -9
- package/dist/api/generateImage.js.map +1 -1
- package/dist/api/generateMusic.d.ts +98 -0
- package/dist/api/generateMusic.d.ts.map +1 -0
- package/dist/api/generateMusic.js +319 -0
- package/dist/api/generateMusic.js.map +1 -0
- package/dist/api/generateSFX.d.ts +96 -0
- package/dist/api/generateSFX.d.ts.map +1 -0
- package/dist/api/generateSFX.js +317 -0
- package/dist/api/generateSFX.js.map +1 -0
- package/dist/api/generateVideo.d.ts +113 -0
- package/dist/api/generateVideo.d.ts.map +1 -0
- package/dist/api/generateVideo.js +342 -0
- package/dist/api/generateVideo.js.map +1 -0
- package/dist/api/model.d.ts.map +1 -1
- package/dist/api/model.js +8 -4
- package/dist/api/model.js.map +1 -1
- package/dist/api/performOCR.d.ts +169 -0
- package/dist/api/performOCR.d.ts.map +1 -0
- package/dist/api/performOCR.js +198 -0
- package/dist/api/performOCR.js.map +1 -0
- package/dist/api/provider-defaults.d.ts +7 -5
- package/dist/api/provider-defaults.d.ts.map +1 -1
- package/dist/api/provider-defaults.js +32 -10
- package/dist/api/provider-defaults.js.map +1 -1
- package/dist/api/strategies/debate.d.ts.map +1 -1
- package/dist/api/strategies/debate.js +1 -0
- package/dist/api/strategies/debate.js.map +1 -1
- package/dist/api/strategies/graph.d.ts.map +1 -1
- package/dist/api/strategies/graph.js +69 -13
- package/dist/api/strategies/graph.js.map +1 -1
- package/dist/api/strategies/hierarchical.d.ts.map +1 -1
- package/dist/api/strategies/hierarchical.js +1 -0
- package/dist/api/strategies/hierarchical.js.map +1 -1
- package/dist/api/strategies/parallel.d.ts.map +1 -1
- package/dist/api/strategies/parallel.js +1 -0
- package/dist/api/strategies/parallel.js.map +1 -1
- package/dist/api/strategies/review-loop.d.ts.map +1 -1
- package/dist/api/strategies/review-loop.js +1 -0
- package/dist/api/strategies/review-loop.js.map +1 -1
- package/dist/api/strategies/sequential.d.ts.map +1 -1
- package/dist/api/strategies/sequential.js +54 -48
- package/dist/api/strategies/sequential.js.map +1 -1
- package/dist/api/streamBuffer.d.ts +20 -0
- package/dist/api/streamBuffer.d.ts.map +1 -0
- package/dist/api/streamBuffer.js +81 -0
- package/dist/api/streamBuffer.js.map +1 -0
- package/dist/api/types.d.ts +145 -5
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/types.js.map +1 -1
- package/dist/channels/adapters/RedditChannelAdapter.js.map +1 -1
- package/dist/core/audio/AudioProcessor.d.ts.map +1 -1
- package/dist/core/audio/AudioProcessor.js +1 -0
- package/dist/core/audio/AudioProcessor.js.map +1 -1
- package/dist/core/audio/EnvironmentalCalibrator.d.ts.map +1 -1
- package/dist/core/audio/EnvironmentalCalibrator.js +1 -0
- package/dist/core/audio/EnvironmentalCalibrator.js.map +1 -1
- package/dist/core/audio/FallbackAudioProxy.d.ts +169 -0
- package/dist/core/audio/FallbackAudioProxy.d.ts.map +1 -0
- package/dist/core/audio/FallbackAudioProxy.js +236 -0
- package/dist/core/audio/FallbackAudioProxy.js.map +1 -0
- package/dist/core/audio/IAudioGenerator.d.ts +103 -0
- package/dist/core/audio/IAudioGenerator.d.ts.map +1 -0
- package/dist/core/audio/IAudioGenerator.js +24 -0
- package/dist/core/audio/IAudioGenerator.js.map +1 -0
- package/dist/core/audio/index.d.ts +54 -0
- package/dist/core/audio/index.d.ts.map +1 -1
- package/dist/core/audio/index.js +93 -0
- package/dist/core/audio/index.js.map +1 -1
- package/dist/core/audio/providers/AudioGenLocalProvider.d.ts +136 -0
- package/dist/core/audio/providers/AudioGenLocalProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/AudioGenLocalProvider.js +235 -0
- package/dist/core/audio/providers/AudioGenLocalProvider.js.map +1 -0
- package/dist/core/audio/providers/ElevenLabsSFXProvider.d.ts +107 -0
- package/dist/core/audio/providers/ElevenLabsSFXProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/ElevenLabsSFXProvider.js +154 -0
- package/dist/core/audio/providers/ElevenLabsSFXProvider.js.map +1 -0
- package/dist/core/audio/providers/FalAudioProvider.d.ts +207 -0
- package/dist/core/audio/providers/FalAudioProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/FalAudioProvider.js +315 -0
- package/dist/core/audio/providers/FalAudioProvider.js.map +1 -0
- package/dist/core/audio/providers/MusicGenLocalProvider.d.ts +136 -0
- package/dist/core/audio/providers/MusicGenLocalProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/MusicGenLocalProvider.js +235 -0
- package/dist/core/audio/providers/MusicGenLocalProvider.js.map +1 -0
- package/dist/core/audio/providers/ReplicateAudioProvider.d.ts +200 -0
- package/dist/core/audio/providers/ReplicateAudioProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/ReplicateAudioProvider.js +346 -0
- package/dist/core/audio/providers/ReplicateAudioProvider.js.map +1 -0
- package/dist/core/audio/providers/StableAudioProvider.d.ts +138 -0
- package/dist/core/audio/providers/StableAudioProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/StableAudioProvider.js +192 -0
- package/dist/core/audio/providers/StableAudioProvider.js.map +1 -0
- package/dist/core/audio/providers/SunoProvider.d.ts +182 -0
- package/dist/core/audio/providers/SunoProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/SunoProvider.js +312 -0
- package/dist/core/audio/providers/SunoProvider.js.map +1 -0
- package/dist/core/audio/providers/UdioProvider.d.ts +177 -0
- package/dist/core/audio/providers/UdioProvider.d.ts.map +1 -0
- package/dist/core/audio/providers/UdioProvider.js +305 -0
- package/dist/core/audio/providers/UdioProvider.js.map +1 -0
- package/dist/core/audio/types.d.ts +257 -0
- package/dist/core/audio/types.d.ts.map +1 -0
- package/dist/core/audio/types.js +21 -0
- package/dist/core/audio/types.js.map +1 -0
- package/dist/core/images/FallbackImageProxy.d.ts +183 -0
- package/dist/core/images/FallbackImageProxy.d.ts.map +1 -0
- package/dist/core/images/FallbackImageProxy.js +283 -0
- package/dist/core/images/FallbackImageProxy.js.map +1 -0
- package/dist/core/images/IImageProvider.d.ts +1 -1
- package/dist/core/images/IImageProvider.d.ts.map +1 -1
- package/dist/core/images/index.d.ts +1 -0
- package/dist/core/images/index.d.ts.map +1 -1
- package/dist/core/images/index.js +1 -0
- package/dist/core/images/index.js.map +1 -1
- package/dist/core/llm/providers/AIModelProviderManager.d.ts +3 -1
- package/dist/core/llm/providers/AIModelProviderManager.d.ts.map +1 -1
- package/dist/core/llm/providers/AIModelProviderManager.js +8 -0
- package/dist/core/llm/providers/AIModelProviderManager.js.map +1 -1
- package/dist/core/llm/providers/errors/ClaudeCodeProviderError.d.ts +52 -0
- package/dist/core/llm/providers/errors/ClaudeCodeProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/ClaudeCodeProviderError.js +36 -0
- package/dist/core/llm/providers/errors/ClaudeCodeProviderError.js.map +1 -0
- package/dist/core/llm/providers/errors/GeminiCLIProviderError.d.ts +32 -0
- package/dist/core/llm/providers/errors/GeminiCLIProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/GeminiCLIProviderError.js +27 -0
- package/dist/core/llm/providers/errors/GeminiCLIProviderError.js.map +1 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.d.ts +38 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.js +128 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeCLIBridge.js.map +1 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeProvider.d.ts +107 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeProvider.js +504 -0
- package/dist/core/llm/providers/implementations/ClaudeCodeProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/GeminiCLIBridge.d.ts +60 -0
- package/dist/core/llm/providers/implementations/GeminiCLIBridge.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/GeminiCLIBridge.js +177 -0
- package/dist/core/llm/providers/implementations/GeminiCLIBridge.js.map +1 -0
- package/dist/core/llm/providers/implementations/GeminiCLIProvider.d.ts +55 -0
- package/dist/core/llm/providers/implementations/GeminiCLIProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/GeminiCLIProvider.js +447 -0
- package/dist/core/llm/providers/implementations/GeminiCLIProvider.js.map +1 -0
- package/dist/core/media/ProviderPreferences.d.ts +158 -0
- package/dist/core/media/ProviderPreferences.d.ts.map +1 -0
- package/dist/core/media/ProviderPreferences.js +183 -0
- package/dist/core/media/ProviderPreferences.js.map +1 -0
- package/dist/core/subprocess/CLIRegistry.d.ts +71 -0
- package/dist/core/subprocess/CLIRegistry.d.ts.map +1 -0
- package/dist/core/subprocess/CLIRegistry.js +210 -0
- package/dist/core/subprocess/CLIRegistry.js.map +1 -0
- package/dist/core/subprocess/CLISubprocessBridge.d.ts +117 -0
- package/dist/core/subprocess/CLISubprocessBridge.d.ts.map +1 -0
- package/dist/core/subprocess/CLISubprocessBridge.js +199 -0
- package/dist/core/subprocess/CLISubprocessBridge.js.map +1 -0
- package/dist/core/subprocess/errors.d.ts +76 -0
- package/dist/core/subprocess/errors.d.ts.map +1 -0
- package/dist/core/subprocess/errors.js +75 -0
- package/dist/core/subprocess/errors.js.map +1 -0
- package/dist/core/subprocess/index.d.ts +11 -0
- package/dist/core/subprocess/index.d.ts.map +1 -0
- package/dist/core/subprocess/index.js +10 -0
- package/dist/core/subprocess/index.js.map +1 -0
- package/dist/core/subprocess/types.d.ts +100 -0
- package/dist/core/subprocess/types.d.ts.map +1 -0
- package/dist/core/subprocess/types.js +9 -0
- package/dist/core/subprocess/types.js.map +1 -0
- package/dist/core/video/FallbackVideoProxy.d.ts +166 -0
- package/dist/core/video/FallbackVideoProxy.d.ts.map +1 -0
- package/dist/core/video/FallbackVideoProxy.js +228 -0
- package/dist/core/video/FallbackVideoProxy.js.map +1 -0
- package/dist/core/video/IVideoAnalyzer.d.ts +29 -0
- package/dist/core/video/IVideoAnalyzer.d.ts.map +1 -0
- package/dist/core/video/IVideoAnalyzer.js +12 -0
- package/dist/core/video/IVideoAnalyzer.js.map +1 -0
- package/dist/core/video/IVideoGenerator.d.ts +76 -0
- package/dist/core/video/IVideoGenerator.d.ts.map +1 -0
- package/dist/core/video/IVideoGenerator.js +13 -0
- package/dist/core/video/IVideoGenerator.js.map +1 -0
- package/dist/core/video/VideoAnalyzer.d.ts +278 -0
- package/dist/core/video/VideoAnalyzer.d.ts.map +1 -0
- package/dist/core/video/VideoAnalyzer.js +648 -0
- package/dist/core/video/VideoAnalyzer.js.map +1 -0
- package/dist/core/video/index.d.ts +55 -0
- package/dist/core/video/index.d.ts.map +1 -0
- package/dist/core/video/index.js +78 -0
- package/dist/core/video/index.js.map +1 -0
- package/dist/core/video/providers/FalVideoProvider.d.ts +195 -0
- package/dist/core/video/providers/FalVideoProvider.d.ts.map +1 -0
- package/dist/core/video/providers/FalVideoProvider.js +322 -0
- package/dist/core/video/providers/FalVideoProvider.js.map +1 -0
- package/dist/core/video/providers/ReplicateVideoProvider.d.ts +194 -0
- package/dist/core/video/providers/ReplicateVideoProvider.d.ts.map +1 -0
- package/dist/core/video/providers/ReplicateVideoProvider.js +356 -0
- package/dist/core/video/providers/ReplicateVideoProvider.js.map +1 -0
- package/dist/core/video/providers/RunwayVideoProvider.d.ts +175 -0
- package/dist/core/video/providers/RunwayVideoProvider.d.ts.map +1 -0
- package/dist/core/video/providers/RunwayVideoProvider.js +293 -0
- package/dist/core/video/providers/RunwayVideoProvider.js.map +1 -0
- package/dist/core/video/types.d.ts +441 -0
- package/dist/core/video/types.d.ts.map +1 -0
- package/dist/core/video/types.js +10 -0
- package/dist/core/video/types.js.map +1 -0
- package/dist/core/vision/SceneDetector.d.ts +180 -0
- package/dist/core/vision/SceneDetector.d.ts.map +1 -0
- package/dist/core/vision/SceneDetector.js +366 -0
- package/dist/core/vision/SceneDetector.js.map +1 -0
- package/dist/core/vision/index.d.ts +2 -1
- package/dist/core/vision/index.d.ts.map +1 -1
- package/dist/core/vision/index.js +1 -0
- package/dist/core/vision/index.js.map +1 -1
- package/dist/core/vision/types.d.ts +125 -0
- package/dist/core/vision/types.d.ts.map +1 -1
- package/dist/discovery/CapabilityDiscoveryEngine.d.ts +32 -0
- package/dist/discovery/CapabilityDiscoveryEngine.d.ts.map +1 -1
- package/dist/discovery/CapabilityDiscoveryEngine.js +46 -0
- package/dist/discovery/CapabilityDiscoveryEngine.js.map +1 -1
- package/dist/extensions/MultiRegistryLoader.js.map +1 -1
- package/dist/index.d.ts +17 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/CognitiveMemoryManager.d.ts +40 -0
- package/dist/memory/CognitiveMemoryManager.d.ts.map +1 -1
- package/dist/memory/CognitiveMemoryManager.js +54 -1
- package/dist/memory/CognitiveMemoryManager.js.map +1 -1
- package/dist/memory/facade/Memory.d.ts +4 -0
- package/dist/memory/facade/Memory.d.ts.map +1 -1
- package/dist/memory/facade/Memory.js +140 -4
- package/dist/memory/facade/Memory.js.map +1 -1
- package/dist/memory/facade/types.d.ts +30 -2
- package/dist/memory/facade/types.d.ts.map +1 -1
- package/dist/memory/index.d.ts +1 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/store/HnswSidecar.d.ts +115 -0
- package/dist/memory/store/HnswSidecar.d.ts.map +1 -0
- package/dist/memory/store/HnswSidecar.js +256 -0
- package/dist/memory/store/HnswSidecar.js.map +1 -0
- package/dist/memory/types.d.ts +15 -0
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/query-router/QueryClassifier.d.ts +192 -21
- package/dist/query-router/QueryClassifier.d.ts.map +1 -1
- package/dist/query-router/QueryClassifier.js +604 -23
- package/dist/query-router/QueryClassifier.js.map +1 -1
- package/dist/query-router/QueryDispatcher.d.ts +106 -8
- package/dist/query-router/QueryDispatcher.d.ts.map +1 -1
- package/dist/query-router/QueryDispatcher.js +387 -8
- package/dist/query-router/QueryDispatcher.js.map +1 -1
- package/dist/query-router/QueryRouter.d.ts +198 -14
- package/dist/query-router/QueryRouter.d.ts.map +1 -1
- package/dist/query-router/QueryRouter.js +738 -50
- package/dist/query-router/QueryRouter.js.map +1 -1
- package/dist/query-router/index.d.ts +1 -1
- package/dist/query-router/index.d.ts.map +1 -1
- package/dist/query-router/index.js +1 -1
- package/dist/query-router/index.js.map +1 -1
- package/dist/query-router/types.d.ts +396 -3
- package/dist/query-router/types.d.ts.map +1 -1
- package/dist/query-router/types.js +35 -0
- package/dist/query-router/types.js.map +1 -1
- package/dist/rag/HydeRetriever.d.ts +108 -0
- package/dist/rag/HydeRetriever.d.ts.map +1 -1
- package/dist/rag/HydeRetriever.js +184 -0
- package/dist/rag/HydeRetriever.js.map +1 -1
- package/dist/rag/IRetrievalAugmentor.d.ts +15 -0
- package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -1
- package/dist/rag/RetrievalAugmentor.d.ts +58 -0
- package/dist/rag/RetrievalAugmentor.d.ts.map +1 -1
- package/dist/rag/RetrievalAugmentor.js +200 -32
- package/dist/rag/RetrievalAugmentor.js.map +1 -1
- package/dist/rag/VectorStoreManager.js +1 -1
- package/dist/rag/audit/RAGAuditCollector.d.ts +7 -0
- package/dist/rag/audit/RAGAuditCollector.d.ts.map +1 -1
- package/dist/rag/audit/RAGAuditCollector.js +10 -0
- package/dist/rag/audit/RAGAuditCollector.js.map +1 -1
- package/dist/rag/audit/RAGAuditTypes.d.ts +10 -1
- package/dist/rag/audit/RAGAuditTypes.d.ts.map +1 -1
- package/dist/rag/chunking/SemanticChunker.d.ts +210 -0
- package/dist/rag/chunking/SemanticChunker.d.ts.map +1 -0
- package/dist/rag/chunking/SemanticChunker.js +460 -0
- package/dist/rag/chunking/SemanticChunker.js.map +1 -0
- package/dist/rag/chunking/index.d.ts +10 -0
- package/dist/rag/chunking/index.d.ts.map +1 -0
- package/dist/rag/chunking/index.js +10 -0
- package/dist/rag/chunking/index.js.map +1 -0
- package/dist/rag/implementations/vector_stores/PineconeVectorStore.d.ts +103 -0
- package/dist/rag/implementations/vector_stores/PineconeVectorStore.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/PineconeVectorStore.js +315 -0
- package/dist/rag/implementations/vector_stores/PineconeVectorStore.js.map +1 -0
- package/dist/rag/implementations/vector_stores/PostgresVectorStore.d.ts +107 -0
- package/dist/rag/implementations/vector_stores/PostgresVectorStore.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/PostgresVectorStore.js +438 -0
- package/dist/rag/implementations/vector_stores/PostgresVectorStore.js.map +1 -0
- package/dist/rag/index.d.ts +15 -1
- package/dist/rag/index.d.ts.map +1 -1
- package/dist/rag/index.js +32 -0
- package/dist/rag/index.js.map +1 -1
- package/dist/rag/migration/MigrationEngine.d.ts +47 -0
- package/dist/rag/migration/MigrationEngine.d.ts.map +1 -0
- package/dist/rag/migration/MigrationEngine.js +168 -0
- package/dist/rag/migration/MigrationEngine.js.map +1 -0
- package/dist/rag/migration/adapters/PineconeSourceAdapter.d.ts +23 -0
- package/dist/rag/migration/adapters/PineconeSourceAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/PineconeSourceAdapter.js +63 -0
- package/dist/rag/migration/adapters/PineconeSourceAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/PostgresSourceAdapter.d.ts +30 -0
- package/dist/rag/migration/adapters/PostgresSourceAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/PostgresSourceAdapter.js +71 -0
- package/dist/rag/migration/adapters/PostgresSourceAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/PostgresTargetAdapter.d.ts +38 -0
- package/dist/rag/migration/adapters/PostgresTargetAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/PostgresTargetAdapter.js +114 -0
- package/dist/rag/migration/adapters/PostgresTargetAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/QdrantSourceAdapter.d.ts +36 -0
- package/dist/rag/migration/adapters/QdrantSourceAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/QdrantSourceAdapter.js +109 -0
- package/dist/rag/migration/adapters/QdrantSourceAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/QdrantTargetAdapter.d.ts +35 -0
- package/dist/rag/migration/adapters/QdrantTargetAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/QdrantTargetAdapter.js +110 -0
- package/dist/rag/migration/adapters/QdrantTargetAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/SqliteSourceAdapter.d.ts +37 -0
- package/dist/rag/migration/adapters/SqliteSourceAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/SqliteSourceAdapter.js +72 -0
- package/dist/rag/migration/adapters/SqliteSourceAdapter.js.map +1 -0
- package/dist/rag/migration/adapters/SqliteTargetAdapter.d.ts +47 -0
- package/dist/rag/migration/adapters/SqliteTargetAdapter.d.ts.map +1 -0
- package/dist/rag/migration/adapters/SqliteTargetAdapter.js +93 -0
- package/dist/rag/migration/adapters/SqliteTargetAdapter.js.map +1 -0
- package/dist/rag/migration/types.d.ts +108 -0
- package/dist/rag/migration/types.d.ts.map +1 -0
- package/dist/rag/migration/types.js +11 -0
- package/dist/rag/migration/types.js.map +1 -0
- package/dist/rag/multimodal/MultimodalIndexer.d.ts +35 -0
- package/dist/rag/multimodal/MultimodalIndexer.d.ts.map +1 -1
- package/dist/rag/multimodal/MultimodalIndexer.js +66 -1
- package/dist/rag/multimodal/MultimodalIndexer.js.map +1 -1
- package/dist/rag/multimodal/types.d.ts +24 -0
- package/dist/rag/multimodal/types.d.ts.map +1 -1
- package/dist/rag/raptor/RaptorTree.d.ts +268 -0
- package/dist/rag/raptor/RaptorTree.d.ts.map +1 -0
- package/dist/rag/raptor/RaptorTree.js +443 -0
- package/dist/rag/raptor/RaptorTree.js.map +1 -0
- package/dist/rag/raptor/index.d.ts +11 -0
- package/dist/rag/raptor/index.d.ts.map +1 -0
- package/dist/rag/raptor/index.js +11 -0
- package/dist/rag/raptor/index.js.map +1 -0
- package/dist/rag/reranking/providers/CohereReranker.js.map +1 -1
- package/dist/rag/search/BM25Index.d.ts +282 -0
- package/dist/rag/search/BM25Index.d.ts.map +1 -0
- package/dist/rag/search/BM25Index.js +344 -0
- package/dist/rag/search/BM25Index.js.map +1 -0
- package/dist/rag/search/HybridSearcher.d.ts +198 -0
- package/dist/rag/search/HybridSearcher.d.ts.map +1 -0
- package/dist/rag/search/HybridSearcher.js +316 -0
- package/dist/rag/search/HybridSearcher.js.map +1 -0
- package/dist/rag/search/index.d.ts +12 -0
- package/dist/rag/search/index.d.ts.map +1 -0
- package/dist/rag/search/index.js +12 -0
- package/dist/rag/search/index.js.map +1 -0
- package/dist/rag/setup/DockerDetector.d.ts +67 -0
- package/dist/rag/setup/DockerDetector.d.ts.map +1 -0
- package/dist/rag/setup/DockerDetector.js +125 -0
- package/dist/rag/setup/DockerDetector.js.map +1 -0
- package/dist/rag/setup/PostgresSetup.d.ts +20 -0
- package/dist/rag/setup/PostgresSetup.d.ts.map +1 -0
- package/dist/rag/setup/PostgresSetup.js +133 -0
- package/dist/rag/setup/PostgresSetup.js.map +1 -0
- package/dist/rag/setup/QdrantSetup.d.ts +26 -0
- package/dist/rag/setup/QdrantSetup.d.ts.map +1 -0
- package/dist/rag/setup/QdrantSetup.js +96 -0
- package/dist/rag/setup/QdrantSetup.js.map +1 -0
- package/dist/rag/setup/types.d.ts +55 -0
- package/dist/rag/setup/types.d.ts.map +1 -0
- package/dist/rag/setup/types.js +6 -0
- package/dist/rag/setup/types.js.map +1 -0
- package/dist/rag/unified/UnifiedRetriever.d.ts +472 -0
- package/dist/rag/unified/UnifiedRetriever.d.ts.map +1 -0
- package/dist/rag/unified/UnifiedRetriever.js +887 -0
- package/dist/rag/unified/UnifiedRetriever.js.map +1 -0
- package/dist/rag/unified/index.d.ts +24 -0
- package/dist/rag/unified/index.d.ts.map +1 -0
- package/dist/rag/unified/index.js +23 -0
- package/dist/rag/unified/index.js.map +1 -0
- package/dist/rag/unified/types.d.ts +546 -0
- package/dist/rag/unified/types.d.ts.map +1 -0
- package/dist/rag/unified/types.js +177 -0
- package/dist/rag/unified/types.js.map +1 -0
- package/dist/speech/providers/AssemblyAISTTProvider.js.map +1 -1
- package/dist/speech/providers/AzureSpeechSTTProvider.js.map +1 -1
- package/dist/speech/providers/BuiltInAdaptiveVadProvider.d.ts +1 -1
- package/dist/speech/providers/DeepgramBatchSTTProvider.js.map +1 -1
- 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":"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"}
|