@framers/agentos 0.1.120 → 0.1.122
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/emergent/AdaptPersonalityTool.d.ts +158 -0
- package/dist/emergent/AdaptPersonalityTool.d.ts.map +1 -0
- package/dist/emergent/AdaptPersonalityTool.js +190 -0
- package/dist/emergent/AdaptPersonalityTool.js.map +1 -0
- package/dist/emergent/CreateWorkflowTool.d.ts +181 -0
- package/dist/emergent/CreateWorkflowTool.d.ts.map +1 -0
- package/dist/emergent/CreateWorkflowTool.js +307 -0
- package/dist/emergent/CreateWorkflowTool.js.map +1 -0
- package/dist/emergent/ManageSkillsTool.d.ts +154 -0
- package/dist/emergent/ManageSkillsTool.d.ts.map +1 -0
- package/dist/emergent/ManageSkillsTool.js +241 -0
- package/dist/emergent/ManageSkillsTool.js.map +1 -0
- package/dist/emergent/PersonalityMutationStore.d.ts +183 -0
- package/dist/emergent/PersonalityMutationStore.d.ts.map +1 -0
- package/dist/emergent/PersonalityMutationStore.js +222 -0
- package/dist/emergent/PersonalityMutationStore.js.map +1 -0
- package/dist/emergent/SelfEvaluateTool.d.ts +189 -0
- package/dist/emergent/SelfEvaluateTool.d.ts.map +1 -0
- package/dist/emergent/SelfEvaluateTool.js +353 -0
- package/dist/emergent/SelfEvaluateTool.js.map +1 -0
- package/dist/emergent/SelfImprovementConfig.d.ts +166 -0
- package/dist/emergent/SelfImprovementConfig.d.ts.map +1 -0
- package/dist/emergent/SelfImprovementConfig.js +43 -0
- package/dist/emergent/SelfImprovementConfig.js.map +1 -0
- package/dist/emergent/index.d.ts +1 -0
- package/dist/emergent/index.d.ts.map +1 -1
- package/dist/emergent/index.js +1 -0
- package/dist/emergent/index.js.map +1 -1
- package/dist/emergent/types.d.ts +9 -0
- package/dist/emergent/types.d.ts.map +1 -1
- package/dist/emergent/types.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/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 -2
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { VideoAnalyzer } from '../core/video/VideoAnalyzer.js';
|
|
2
|
+
import { createVisionPipeline } from '../core/vision/index.js';
|
|
3
|
+
import { recordAgentOSUsage } from './usageLedger.js';
|
|
4
|
+
import { recordAgentOSTurnMetrics, withAgentOSSpan } from '../core/observability/otel.js';
|
|
5
|
+
async function createAutoSpeechToTextProvider() {
|
|
6
|
+
if (process.env.OPENAI_API_KEY) {
|
|
7
|
+
const { OpenAIWhisperSpeechToTextProvider } = await import('../speech/providers/OpenAIWhisperSpeechToTextProvider.js');
|
|
8
|
+
return new OpenAIWhisperSpeechToTextProvider({
|
|
9
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
if (process.env.DEEPGRAM_API_KEY) {
|
|
13
|
+
const { DeepgramBatchSTTProvider } = await import('../speech/providers/DeepgramBatchSTTProvider.js');
|
|
14
|
+
return new DeepgramBatchSTTProvider({
|
|
15
|
+
apiKey: process.env.DEEPGRAM_API_KEY,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
if (process.env.ASSEMBLYAI_API_KEY) {
|
|
19
|
+
const { AssemblyAISTTProvider } = await import('../speech/providers/AssemblyAISTTProvider.js');
|
|
20
|
+
return new AssemblyAISTTProvider({
|
|
21
|
+
apiKey: process.env.ASSEMBLYAI_API_KEY,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
if (process.env.AZURE_SPEECH_KEY && process.env.AZURE_SPEECH_REGION) {
|
|
25
|
+
const { AzureSpeechSTTProvider } = await import('../speech/providers/AzureSpeechSTTProvider.js');
|
|
26
|
+
return new AzureSpeechSTTProvider({
|
|
27
|
+
key: process.env.AZURE_SPEECH_KEY,
|
|
28
|
+
region: process.env.AZURE_SPEECH_REGION,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Main API function
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
/**
|
|
37
|
+
* Analyses a video and returns structured understanding results.
|
|
38
|
+
*
|
|
39
|
+
* Creates a {@link VideoAnalyzer} (backed by auto-detected
|
|
40
|
+
* VisionPipeline + STT when available), dispatches the analysis
|
|
41
|
+
* request, and returns a normalised {@link AnalyzeVideoResult}.
|
|
42
|
+
*
|
|
43
|
+
* @param opts - Video analysis options.
|
|
44
|
+
* @returns A promise resolving to the analysis result with description,
|
|
45
|
+
* scenes, objects, text, and optional RAG indexing metadata.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* const analysis = await analyzeVideo({
|
|
50
|
+
* videoUrl: 'https://example.com/demo.mp4',
|
|
51
|
+
* prompt: 'What products are shown in this video?',
|
|
52
|
+
* transcribeAudio: true,
|
|
53
|
+
* descriptionDetail: 'detailed',
|
|
54
|
+
* });
|
|
55
|
+
* console.log(analysis.description);
|
|
56
|
+
* for (const scene of analysis.scenes ?? []) {
|
|
57
|
+
* console.log(`[${scene.startSec}s] ${scene.description}`);
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export async function analyzeVideo(opts) {
|
|
62
|
+
const startedAt = Date.now();
|
|
63
|
+
let metricStatus = 'ok';
|
|
64
|
+
if (!opts.videoUrl && !opts.videoBuffer) {
|
|
65
|
+
throw new Error('Either videoUrl or videoBuffer is required for video analysis.');
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
return await withAgentOSSpan('agentos.api.analyze_video', async (span) => {
|
|
69
|
+
if (opts.model)
|
|
70
|
+
span?.setAttribute('llm.model', opts.model);
|
|
71
|
+
const [visionPipeline, sttProvider] = await Promise.all([
|
|
72
|
+
createVisionPipeline(opts.model
|
|
73
|
+
? { cloudModel: opts.model }
|
|
74
|
+
: undefined),
|
|
75
|
+
opts.transcribeAudio === false
|
|
76
|
+
? Promise.resolve(undefined)
|
|
77
|
+
: createAutoSpeechToTextProvider(),
|
|
78
|
+
]);
|
|
79
|
+
if (sttProvider) {
|
|
80
|
+
span?.setAttribute('agentos.api.stt_provider', sttProvider.id);
|
|
81
|
+
}
|
|
82
|
+
const analyzer = new VideoAnalyzer({
|
|
83
|
+
visionPipeline,
|
|
84
|
+
...(sttProvider ? { sttProvider } : {}),
|
|
85
|
+
});
|
|
86
|
+
const result = await analyzer.analyze({
|
|
87
|
+
video: opts.videoBuffer ?? opts.videoUrl,
|
|
88
|
+
prompt: opts.prompt,
|
|
89
|
+
sceneThreshold: opts.sceneThreshold,
|
|
90
|
+
transcribeAudio: opts.transcribeAudio,
|
|
91
|
+
descriptionDetail: opts.descriptionDetail,
|
|
92
|
+
maxFrames: opts.maxFrames,
|
|
93
|
+
maxScenes: opts.maxScenes,
|
|
94
|
+
indexForRAG: opts.indexForRAG,
|
|
95
|
+
onProgress: opts.onProgress,
|
|
96
|
+
});
|
|
97
|
+
span?.setAttribute('agentos.api.scene_count', result.scenes.length);
|
|
98
|
+
return {
|
|
99
|
+
description: result.summary,
|
|
100
|
+
scenes: result.scenes,
|
|
101
|
+
durationSec: result.durationSec,
|
|
102
|
+
model: opts.model,
|
|
103
|
+
provider: 'agentos-video-analyzer',
|
|
104
|
+
text: result.fullTranscript ? [result.fullTranscript] : undefined,
|
|
105
|
+
fullTranscript: result.fullTranscript,
|
|
106
|
+
ragChunkIds: result.ragChunkIds,
|
|
107
|
+
providerMetadata: {
|
|
108
|
+
...result.metadata,
|
|
109
|
+
sttProviderId: sttProvider?.id,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
metricStatus = 'error';
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
try {
|
|
120
|
+
await recordAgentOSUsage({
|
|
121
|
+
options: {
|
|
122
|
+
...opts.usageLedger,
|
|
123
|
+
source: opts.usageLedger?.source ?? 'analyzeVideo',
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// Usage persistence is best-effort.
|
|
129
|
+
}
|
|
130
|
+
recordAgentOSTurnMetrics({
|
|
131
|
+
durationMs: Date.now() - startedAt,
|
|
132
|
+
status: metricStatus,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=analyzeVideo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeVideo.js","sourceRoot":"","sources":["../../src/api/analyzeVideo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { Frame, SceneBoundary, SceneDetectionMethod } from '../core/vision/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Options for a {@link detectScenes} call.
|
|
4
|
+
*
|
|
5
|
+
* At minimum, a `frames` async iterable must be provided. All other
|
|
6
|
+
* options are optional and map to {@link SceneDetectorConfig} fields.
|
|
7
|
+
*/
|
|
8
|
+
export interface DetectScenesOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Async iterable of decoded video frames in time order.
|
|
11
|
+
* Each frame must contain a raw RGB pixel buffer, a timestamp,
|
|
12
|
+
* and a sequential index.
|
|
13
|
+
*/
|
|
14
|
+
frames: AsyncIterable<Frame>;
|
|
15
|
+
/**
|
|
16
|
+
* Detection methods to use. Multiple methods are combined by
|
|
17
|
+
* taking the maximum diff score across all methods.
|
|
18
|
+
* @default ['histogram', 'ssim']
|
|
19
|
+
*/
|
|
20
|
+
methods?: SceneDetectionMethod[];
|
|
21
|
+
/**
|
|
22
|
+
* Diff score threshold above which a frame transition is classified
|
|
23
|
+
* as a hard cut. Applied to histogram chi-squared distance (0-1).
|
|
24
|
+
* @default 0.3
|
|
25
|
+
*/
|
|
26
|
+
hardCutThreshold?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Diff score threshold for gradual transitions (dissolves, fades).
|
|
29
|
+
* Transitions with scores between this and `hardCutThreshold`
|
|
30
|
+
* are classified as gradual cuts.
|
|
31
|
+
* @default 0.15
|
|
32
|
+
*/
|
|
33
|
+
gradualThreshold?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Minimum scene duration in seconds. Scene boundaries that would
|
|
36
|
+
* create scenes shorter than this are suppressed.
|
|
37
|
+
* @default 1.0
|
|
38
|
+
*/
|
|
39
|
+
minSceneDurationSec?: number;
|
|
40
|
+
/**
|
|
41
|
+
* CLIP embedding provider for semantic scene detection.
|
|
42
|
+
* Only used when `methods` includes `'clip'`.
|
|
43
|
+
* @default 'local'
|
|
44
|
+
*/
|
|
45
|
+
clipProvider?: 'local' | 'openai';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Detects scene boundaries in a stream of video frames.
|
|
49
|
+
*
|
|
50
|
+
* Creates a {@link SceneDetector} with the supplied configuration and
|
|
51
|
+
* yields {@link SceneBoundary} objects as visual discontinuities are
|
|
52
|
+
* detected. The generator completes when the input frame stream is
|
|
53
|
+
* exhausted.
|
|
54
|
+
*
|
|
55
|
+
* Suitable for both pre-recorded video (extract frames via ffmpeg, then
|
|
56
|
+
* pipe as an async iterable) and live streams (webcam, security camera,
|
|
57
|
+
* screen capture).
|
|
58
|
+
*
|
|
59
|
+
* @param opts - Scene detection options including the frame source.
|
|
60
|
+
* @returns An AsyncGenerator yielding scene boundaries as they are detected.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* // Pre-recorded video
|
|
65
|
+
* const boundaries: SceneBoundary[] = [];
|
|
66
|
+
* for await (const boundary of detectScenes({ frames: extractFrames('video.mp4') })) {
|
|
67
|
+
* console.log(`Scene ${boundary.index} at ${boundary.startTimeSec}s (${boundary.cutType})`);
|
|
68
|
+
* boundaries.push(boundary);
|
|
69
|
+
* }
|
|
70
|
+
*
|
|
71
|
+
* // Live webcam with custom thresholds
|
|
72
|
+
* for await (const boundary of detectScenes({
|
|
73
|
+
* frames: webcamFrameStream,
|
|
74
|
+
* hardCutThreshold: 0.4,
|
|
75
|
+
* minSceneDurationSec: 2.0,
|
|
76
|
+
* })) {
|
|
77
|
+
* console.log(`Motion detected at ${boundary.startTimeSec}s`);
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare function detectScenes(opts: DetectScenesOptions): AsyncGenerator<SceneBoundary>;
|
|
82
|
+
//# sourceMappingURL=detectScenes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectScenes.d.ts","sourceRoot":"","sources":["../../src/api/detectScenes.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EAEb,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAMjC;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAE7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAEjC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACnC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAuB,YAAY,CACjC,IAAI,EAAE,mBAAmB,GACxB,cAAc,CAAC,aAAa,CAAC,CAY/B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file detectScenes.ts
|
|
3
|
+
* Provider-agnostic scene detection for the AgentOS high-level API.
|
|
4
|
+
*
|
|
5
|
+
* Creates a {@link SceneDetector} with the supplied configuration and
|
|
6
|
+
* returns an AsyncGenerator that yields {@link SceneBoundary} objects
|
|
7
|
+
* as visual discontinuities are detected in the frame stream.
|
|
8
|
+
*
|
|
9
|
+
* This is the high-level companion to the lower-level
|
|
10
|
+
* {@link SceneDetector.detectScenes} method. It handles construction
|
|
11
|
+
* and configuration so callers only need to supply frames and optional
|
|
12
|
+
* thresholds.
|
|
13
|
+
*/
|
|
14
|
+
import { SceneDetector } from '../core/vision/SceneDetector.js';
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Main API function
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
/**
|
|
19
|
+
* Detects scene boundaries in a stream of video frames.
|
|
20
|
+
*
|
|
21
|
+
* Creates a {@link SceneDetector} with the supplied configuration and
|
|
22
|
+
* yields {@link SceneBoundary} objects as visual discontinuities are
|
|
23
|
+
* detected. The generator completes when the input frame stream is
|
|
24
|
+
* exhausted.
|
|
25
|
+
*
|
|
26
|
+
* Suitable for both pre-recorded video (extract frames via ffmpeg, then
|
|
27
|
+
* pipe as an async iterable) and live streams (webcam, security camera,
|
|
28
|
+
* screen capture).
|
|
29
|
+
*
|
|
30
|
+
* @param opts - Scene detection options including the frame source.
|
|
31
|
+
* @returns An AsyncGenerator yielding scene boundaries as they are detected.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* // Pre-recorded video
|
|
36
|
+
* const boundaries: SceneBoundary[] = [];
|
|
37
|
+
* for await (const boundary of detectScenes({ frames: extractFrames('video.mp4') })) {
|
|
38
|
+
* console.log(`Scene ${boundary.index} at ${boundary.startTimeSec}s (${boundary.cutType})`);
|
|
39
|
+
* boundaries.push(boundary);
|
|
40
|
+
* }
|
|
41
|
+
*
|
|
42
|
+
* // Live webcam with custom thresholds
|
|
43
|
+
* for await (const boundary of detectScenes({
|
|
44
|
+
* frames: webcamFrameStream,
|
|
45
|
+
* hardCutThreshold: 0.4,
|
|
46
|
+
* minSceneDurationSec: 2.0,
|
|
47
|
+
* })) {
|
|
48
|
+
* console.log(`Motion detected at ${boundary.startTimeSec}s`);
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export async function* detectScenes(opts) {
|
|
53
|
+
const config = {};
|
|
54
|
+
if (opts.methods !== undefined)
|
|
55
|
+
config.methods = opts.methods;
|
|
56
|
+
if (opts.hardCutThreshold !== undefined)
|
|
57
|
+
config.hardCutThreshold = opts.hardCutThreshold;
|
|
58
|
+
if (opts.gradualThreshold !== undefined)
|
|
59
|
+
config.gradualThreshold = opts.gradualThreshold;
|
|
60
|
+
if (opts.minSceneDurationSec !== undefined)
|
|
61
|
+
config.minSceneDurationSec = opts.minSceneDurationSec;
|
|
62
|
+
if (opts.clipProvider !== undefined)
|
|
63
|
+
config.clipProvider = opts.clipProvider;
|
|
64
|
+
const detector = new SceneDetector(config);
|
|
65
|
+
yield* detector.detectScenes(opts.frames);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=detectScenes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectScenes.js","sourceRoot":"","sources":["../../src/api/detectScenes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AA+DhE,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,YAAY,CACjC,IAAyB;IAEzB,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9D,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;QAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACzF,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;QAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACzF,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS;QAAE,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IAClG,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IAE7E,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAE3C,KAAK,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { GeneratedImage, ImageGenerationResult, ImageProviderOptionBag, ImageResponseFormat, ImageBackground, ImageModality, ImageOutputFormat } from '../core/images/IImageProvider.js';
|
|
2
|
+
import { type MediaProviderPreference } from '../core/media/ProviderPreferences.js';
|
|
2
3
|
import { type AgentOSUsageLedgerOptions } from './usageLedger.js';
|
|
3
4
|
/**
|
|
4
5
|
* Options for a {@link generateImage} call.
|
|
@@ -50,6 +51,12 @@ export interface GenerateImageOptions {
|
|
|
50
51
|
negativePrompt?: string;
|
|
51
52
|
/** Arbitrary provider-specific options not covered by the standard fields. */
|
|
52
53
|
providerOptions?: ImageProviderOptionBag | Record<string, unknown>;
|
|
54
|
+
/**
|
|
55
|
+
* Provider preferences for reordering or filtering the fallback chain.
|
|
56
|
+
* When supplied, the available image providers are reordered according to
|
|
57
|
+
* `preferred` and filtered by `blocked` before building the chain.
|
|
58
|
+
*/
|
|
59
|
+
providerPreferences?: MediaProviderPreference;
|
|
53
60
|
/** Optional durable usage ledger configuration for helper-level accounting. */
|
|
54
61
|
usageLedger?: AgentOSUsageLedgerOptions;
|
|
55
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateImage.d.ts","sourceRoot":"","sources":["../../src/api/generateImage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generateImage.d.ts","sourceRoot":"","sources":["../../src/api/generateImage.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAEV,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAiHtF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,wEAAwE;IACxE,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,qEAAqE;IACrE,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnE;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,+EAA+E;IAC/E,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,qEAAqE;IACrE,KAAK,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA4H5F"}
|
|
@@ -5,12 +5,121 @@
|
|
|
5
5
|
* Parses a `provider:model` string, resolves media-provider credentials, and
|
|
6
6
|
* dispatches the request to the appropriate image provider implementation
|
|
7
7
|
* (e.g. OpenAI DALL-E, Stability AI, Replicate).
|
|
8
|
+
*
|
|
9
|
+
* When multiple image-capable providers are configured (via env vars), the
|
|
10
|
+
* primary provider is wrapped in a {@link FallbackImageProxy} so that a
|
|
11
|
+
* transient failure automatically retries on the next available provider.
|
|
8
12
|
*/
|
|
9
|
-
import {
|
|
13
|
+
import { EventEmitter } from 'events';
|
|
14
|
+
import { createImageProvider, hasImageProviderFactory } from '../core/images/index.js';
|
|
15
|
+
import { FallbackImageProxy } from '../core/images/FallbackImageProxy.js';
|
|
10
16
|
import { resolveModelOption, resolveMediaProvider } from './model.js';
|
|
17
|
+
import { resolveProviderChain, resolveProviderOrder, } from '../core/media/ProviderPreferences.js';
|
|
11
18
|
import { attachUsageAttributes, toTurnMetricUsage } from './observability.js';
|
|
12
19
|
import { recordAgentOSUsage } from './usageLedger.js';
|
|
13
20
|
import { recordAgentOSTurnMetrics, withAgentOSSpan } from '../core/observability/otel.js';
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Image provider fallback chain builder
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
/**
|
|
25
|
+
* Env-var to provider-id mapping used to detect which image providers have
|
|
26
|
+
* credentials configured in the current environment. Order determines
|
|
27
|
+
* fallback priority (first = highest priority).
|
|
28
|
+
*/
|
|
29
|
+
const IMAGE_PROVIDER_ENV_MAP = [
|
|
30
|
+
{ envKey: 'OPENAI_API_KEY', providerId: 'openai' },
|
|
31
|
+
{ envKey: 'STABILITY_API_KEY', providerId: 'stability' },
|
|
32
|
+
{ envKey: 'REPLICATE_API_TOKEN', providerId: 'replicate' },
|
|
33
|
+
{ envKey: 'BFL_API_KEY', providerId: 'bfl' },
|
|
34
|
+
{ envKey: 'FAL_API_KEY', providerId: 'fal' },
|
|
35
|
+
{ envKey: 'OPENROUTER_API_KEY', providerId: 'openrouter' },
|
|
36
|
+
{ envKey: 'STABLE_DIFFUSION_LOCAL_BASE_URL', providerId: 'stable-diffusion-local' },
|
|
37
|
+
];
|
|
38
|
+
/** Shared emitter for image fallback events (singleton per process). */
|
|
39
|
+
const imageFallbackEmitter = new EventEmitter();
|
|
40
|
+
/**
|
|
41
|
+
* Detects all image providers with valid credentials in the environment
|
|
42
|
+
* and returns their provider IDs in priority order, excluding the primary.
|
|
43
|
+
*
|
|
44
|
+
* @param primaryProviderId - The provider that was explicitly selected; it
|
|
45
|
+
* is excluded from the fallback list since it is already the first in line.
|
|
46
|
+
* @returns An array of provider IDs suitable for fallback, in priority order.
|
|
47
|
+
*/
|
|
48
|
+
function detectFallbackImageProviders(primaryProviderId) {
|
|
49
|
+
const fallbacks = [];
|
|
50
|
+
for (const { envKey, providerId } of IMAGE_PROVIDER_ENV_MAP) {
|
|
51
|
+
if (providerId === primaryProviderId)
|
|
52
|
+
continue;
|
|
53
|
+
if (!process.env[envKey])
|
|
54
|
+
continue;
|
|
55
|
+
if (!hasImageProviderFactory(providerId))
|
|
56
|
+
continue;
|
|
57
|
+
fallbacks.push(providerId);
|
|
58
|
+
}
|
|
59
|
+
return fallbacks;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Detects all image providers with valid credentials in the environment.
|
|
63
|
+
*
|
|
64
|
+
* @returns Provider IDs in priority order.
|
|
65
|
+
*/
|
|
66
|
+
function detectAvailableImageProviders() {
|
|
67
|
+
const available = [];
|
|
68
|
+
for (const { envKey, providerId } of IMAGE_PROVIDER_ENV_MAP) {
|
|
69
|
+
if (!process.env[envKey])
|
|
70
|
+
continue;
|
|
71
|
+
if (!hasImageProviderFactory(providerId))
|
|
72
|
+
continue;
|
|
73
|
+
available.push(providerId);
|
|
74
|
+
}
|
|
75
|
+
return available;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Creates an {@link IImageProvider} for the resolved primary provider,
|
|
79
|
+
* optionally wrapped in a {@link FallbackImageProxy} when an ordered
|
|
80
|
+
* provider chain contains additional image-capable fallbacks.
|
|
81
|
+
*
|
|
82
|
+
* @param resolved - The primary resolved provider credentials.
|
|
83
|
+
* @param providerChain - Optional ordered provider IDs with the primary first.
|
|
84
|
+
* @returns An initialised image provider (possibly a fallback proxy).
|
|
85
|
+
*/
|
|
86
|
+
async function createImageProviderWithFallback(resolved, providerChain) {
|
|
87
|
+
const primary = createImageProvider(resolved.providerId);
|
|
88
|
+
await primary.initialize({
|
|
89
|
+
apiKey: resolved.apiKey,
|
|
90
|
+
baseURL: resolved.baseUrl,
|
|
91
|
+
defaultModelId: resolved.modelId,
|
|
92
|
+
});
|
|
93
|
+
const fallbackIds = providerChain
|
|
94
|
+
? providerChain.filter((id) => id !== resolved.providerId)
|
|
95
|
+
: detectFallbackImageProviders(resolved.providerId);
|
|
96
|
+
if (fallbackIds.length === 0) {
|
|
97
|
+
return primary;
|
|
98
|
+
}
|
|
99
|
+
// Build and initialise fallback providers. Failures during init are
|
|
100
|
+
// silently skipped — the provider simply won't be part of the chain.
|
|
101
|
+
const chain = [primary];
|
|
102
|
+
for (const fbId of fallbackIds) {
|
|
103
|
+
try {
|
|
104
|
+
const { modelId: fallbackModelId } = resolveModelOption({ provider: fbId }, 'image');
|
|
105
|
+
const fbResolved = resolveMediaProvider(fbId, fallbackModelId);
|
|
106
|
+
const fb = createImageProvider(fbId);
|
|
107
|
+
await fb.initialize({
|
|
108
|
+
apiKey: fbResolved.apiKey,
|
|
109
|
+
baseURL: fbResolved.baseUrl,
|
|
110
|
+
defaultModelId: fbResolved.modelId,
|
|
111
|
+
});
|
|
112
|
+
chain.push(fb);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Skip providers that fail to initialise (missing creds, etc.).
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (chain.length <= 1) {
|
|
119
|
+
return primary;
|
|
120
|
+
}
|
|
121
|
+
return new FallbackImageProxy(chain, imageFallbackEmitter);
|
|
122
|
+
}
|
|
14
123
|
/**
|
|
15
124
|
* Generates one or more images using a provider-agnostic `provider:model` string.
|
|
16
125
|
*
|
|
@@ -38,7 +147,25 @@ export async function generateImage(opts) {
|
|
|
38
147
|
let metricModelId;
|
|
39
148
|
try {
|
|
40
149
|
return await withAgentOSSpan('agentos.api.generate_image', async (span) => {
|
|
41
|
-
|
|
150
|
+
let providerChain;
|
|
151
|
+
let providerId;
|
|
152
|
+
let modelId;
|
|
153
|
+
if (!opts.provider && !opts.model) {
|
|
154
|
+
providerChain = resolveProviderChain(detectAvailableImageProviders(), opts.providerPreferences);
|
|
155
|
+
if (providerChain.length === 0) {
|
|
156
|
+
throw new Error('No image provider configured. Set OPENAI_API_KEY, STABILITY_API_KEY, REPLICATE_API_TOKEN, BFL_API_KEY, FAL_API_KEY, OPENROUTER_API_KEY, or STABLE_DIFFUSION_LOCAL_BASE_URL.');
|
|
157
|
+
}
|
|
158
|
+
({ providerId, modelId } = resolveModelOption({ provider: providerChain[0] }, 'image'));
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
({ providerId, modelId } = resolveModelOption(opts, 'image'));
|
|
162
|
+
let fallbackIds = detectFallbackImageProviders(providerId);
|
|
163
|
+
if (opts.providerPreferences) {
|
|
164
|
+
const ordered = resolveProviderOrder([providerId, ...fallbackIds], opts.providerPreferences);
|
|
165
|
+
fallbackIds = ordered.filter((id) => id !== providerId);
|
|
166
|
+
}
|
|
167
|
+
providerChain = [providerId, ...fallbackIds];
|
|
168
|
+
}
|
|
42
169
|
const resolved = resolveMediaProvider(providerId, modelId, {
|
|
43
170
|
apiKey: opts.apiKey,
|
|
44
171
|
baseUrl: opts.baseUrl,
|
|
@@ -47,14 +174,11 @@ export async function generateImage(opts) {
|
|
|
47
174
|
metricModelId = resolved.modelId;
|
|
48
175
|
span?.setAttribute('llm.provider', resolved.providerId);
|
|
49
176
|
span?.setAttribute('llm.model', resolved.modelId);
|
|
50
|
-
const provider =
|
|
51
|
-
await provider.initialize({
|
|
52
|
-
apiKey: resolved.apiKey,
|
|
53
|
-
baseURL: resolved.baseUrl,
|
|
54
|
-
defaultModelId: resolved.modelId,
|
|
55
|
-
});
|
|
177
|
+
const provider = await createImageProviderWithFallback(resolved, providerChain);
|
|
56
178
|
const result = await provider.generateImage({
|
|
57
|
-
modelId:
|
|
179
|
+
modelId: provider instanceof FallbackImageProxy
|
|
180
|
+
? undefined
|
|
181
|
+
: resolved.modelId,
|
|
58
182
|
prompt: opts.prompt,
|
|
59
183
|
modalities: opts.modalities,
|
|
60
184
|
n: opts.n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateImage.js","sourceRoot":"","sources":["../../src/api/generateImage.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generateImage.js","sourceRoot":"","sources":["../../src/api/generateImage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { AudioResult, AudioOutputFormat, AudioProgressEvent } from '../core/audio/types.js';
|
|
2
|
+
import { type MediaProviderPreference } from '../core/media/ProviderPreferences.js';
|
|
3
|
+
import { type AgentOSUsageLedgerOptions } from './usageLedger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Options for a {@link generateMusic} call.
|
|
6
|
+
*
|
|
7
|
+
* At minimum, a `prompt` is required. The provider is resolved from
|
|
8
|
+
* `opts.provider`, `opts.apiKey`, or the first music-capable env var found
|
|
9
|
+
* (`SUNO_API_KEY` -> `STABILITY_API_KEY` -> `REPLICATE_API_TOKEN` ->
|
|
10
|
+
* `FAL_API_KEY` -> local MusicGen).
|
|
11
|
+
*/
|
|
12
|
+
export interface GenerateMusicOptions {
|
|
13
|
+
/** Text prompt describing the desired musical composition. */
|
|
14
|
+
prompt: string;
|
|
15
|
+
/**
|
|
16
|
+
* Explicit provider identifier (e.g. `"suno"`, `"stable-audio"`, `"musicgen-local"`).
|
|
17
|
+
* When omitted, auto-detection from environment variables is used.
|
|
18
|
+
*/
|
|
19
|
+
provider?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Model identifier within the provider (e.g. `"suno-v3.5"`,
|
|
22
|
+
* `"stable-audio-open-1.0"`). When omitted, the provider's default
|
|
23
|
+
* model is used.
|
|
24
|
+
*/
|
|
25
|
+
model?: string;
|
|
26
|
+
/** Desired output duration in seconds. Provider limits vary. */
|
|
27
|
+
durationSec?: number;
|
|
28
|
+
/** Negative prompt describing musical elements to avoid. */
|
|
29
|
+
negativePrompt?: string;
|
|
30
|
+
/** Output audio format (e.g. `"mp3"`, `"wav"`). Defaults to provider default. */
|
|
31
|
+
outputFormat?: AudioOutputFormat;
|
|
32
|
+
/** Random seed for reproducible generation (provider-dependent). */
|
|
33
|
+
seed?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Maximum time in milliseconds to wait for generation to complete.
|
|
36
|
+
* Provider-dependent — polling providers enforce this directly.
|
|
37
|
+
*/
|
|
38
|
+
timeoutMs?: number;
|
|
39
|
+
/** Number of audio clips to generate. Defaults to 1. */
|
|
40
|
+
n?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Optional progress callback invoked during long-running generation.
|
|
43
|
+
* Called with an {@link AudioProgressEvent} at each status transition.
|
|
44
|
+
*/
|
|
45
|
+
onProgress?: (event: AudioProgressEvent) => void;
|
|
46
|
+
/** Override the provider API key instead of reading from env vars. */
|
|
47
|
+
apiKey?: string;
|
|
48
|
+
/** Optional user identifier forwarded to the provider for billing. */
|
|
49
|
+
userId?: string;
|
|
50
|
+
/** Arbitrary provider-specific options. */
|
|
51
|
+
providerOptions?: Record<string, unknown>;
|
|
52
|
+
/**
|
|
53
|
+
* Provider preferences for reordering or filtering the fallback chain.
|
|
54
|
+
* When supplied, the available providers are reordered according to
|
|
55
|
+
* `preferred` and filtered by `blocked` before building the chain.
|
|
56
|
+
*/
|
|
57
|
+
providerPreferences?: MediaProviderPreference;
|
|
58
|
+
/** Optional durable usage ledger configuration for accounting. */
|
|
59
|
+
usageLedger?: AgentOSUsageLedgerOptions;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The result returned by {@link generateMusic}.
|
|
63
|
+
*
|
|
64
|
+
* Wraps the core {@link AudioResult} with a simpler, AI-SDK-style shape.
|
|
65
|
+
*/
|
|
66
|
+
export interface GenerateMusicResult {
|
|
67
|
+
/** Model identifier reported by the provider. */
|
|
68
|
+
model: string;
|
|
69
|
+
/** Provider identifier (e.g. `"suno"`, `"stable-audio"`). */
|
|
70
|
+
provider: string;
|
|
71
|
+
/** Unix timestamp (seconds) when the audio was created. */
|
|
72
|
+
created: number;
|
|
73
|
+
/** Array of generated audio objects containing URLs or base64 data. */
|
|
74
|
+
audio: AudioResult['audio'];
|
|
75
|
+
/** Usage / billing information, if available. */
|
|
76
|
+
usage?: AudioResult['usage'];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Generates music using a provider-agnostic interface.
|
|
80
|
+
*
|
|
81
|
+
* Resolves provider credentials via explicit options or environment variable
|
|
82
|
+
* auto-detection, initialises the matching audio provider (optionally wrapped
|
|
83
|
+
* in a fallback chain), and returns a normalised {@link GenerateMusicResult}.
|
|
84
|
+
*
|
|
85
|
+
* @param opts - Music generation options.
|
|
86
|
+
* @returns A promise resolving to the generation result with audio data and metadata.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* const result = await generateMusic({
|
|
91
|
+
* prompt: 'Upbeat lo-fi hip hop beat with vinyl crackle and mellow piano',
|
|
92
|
+
* durationSec: 60,
|
|
93
|
+
* });
|
|
94
|
+
* console.log(result.audio[0].url);
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function generateMusic(opts: GenerateMusicOptions): Promise<GenerateMusicResult>;
|
|
98
|
+
//# sourceMappingURL=generateMusic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateMusic.d.ts","sourceRoot":"","sources":["../../src/api/generateMusic.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAyKtF;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,iFAAiF;IACjF,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAEjC,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAEjD,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE1C;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAE9C,kEAAkE;IAClE,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,iDAAiD;IACjD,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC9B;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoJ5F"}
|