@framers/agentos 0.1.0
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/LICENSE +98 -0
- package/README.md +576 -0
- package/dist/api/AgentOS.d.ts +451 -0
- package/dist/api/AgentOS.d.ts.map +1 -0
- package/dist/api/AgentOS.js +1157 -0
- package/dist/api/AgentOS.js.map +1 -0
- package/dist/api/AgentOSOrchestrator.d.ts +157 -0
- package/dist/api/AgentOSOrchestrator.d.ts.map +1 -0
- package/dist/api/AgentOSOrchestrator.js +679 -0
- package/dist/api/AgentOSOrchestrator.js.map +1 -0
- package/dist/api/interfaces/IAgentOS.d.ts +138 -0
- package/dist/api/interfaces/IAgentOS.d.ts.map +1 -0
- package/dist/api/interfaces/IAgentOS.js +11 -0
- package/dist/api/interfaces/IAgentOS.js.map +1 -0
- package/dist/api/interfaces/IUnifiedAgent.d.ts +126 -0
- package/dist/api/interfaces/IUnifiedAgent.d.ts.map +1 -0
- package/dist/api/interfaces/IUnifiedAgent.js +3 -0
- package/dist/api/interfaces/IUnifiedAgent.js.map +1 -0
- package/dist/api/types/AgentOSInput.d.ts +114 -0
- package/dist/api/types/AgentOSInput.d.ts.map +1 -0
- package/dist/api/types/AgentOSInput.js +13 -0
- package/dist/api/types/AgentOSInput.js.map +1 -0
- package/dist/api/types/AgentOSResponse.d.ts +170 -0
- package/dist/api/types/AgentOSResponse.d.ts.map +1 -0
- package/dist/api/types/AgentOSResponse.js +25 -0
- package/dist/api/types/AgentOSResponse.js.map +1 -0
- package/dist/cognitive_substrate/GMI.d.ts +148 -0
- package/dist/cognitive_substrate/GMI.d.ts.map +1 -0
- package/dist/cognitive_substrate/GMI.js +1003 -0
- package/dist/cognitive_substrate/GMI.js.map +1 -0
- package/dist/cognitive_substrate/GMIManager.d.ts +98 -0
- package/dist/cognitive_substrate/GMIManager.d.ts.map +1 -0
- package/dist/cognitive_substrate/GMIManager.js +517 -0
- package/dist/cognitive_substrate/GMIManager.js.map +1 -0
- package/dist/cognitive_substrate/IGMI.d.ts +469 -0
- package/dist/cognitive_substrate/IGMI.d.ts.map +1 -0
- package/dist/cognitive_substrate/IGMI.js +111 -0
- package/dist/cognitive_substrate/IGMI.js.map +1 -0
- package/dist/cognitive_substrate/memory/IWorkingMemory.d.ts +139 -0
- package/dist/cognitive_substrate/memory/IWorkingMemory.d.ts.map +1 -0
- package/dist/cognitive_substrate/memory/IWorkingMemory.js +14 -0
- package/dist/cognitive_substrate/memory/IWorkingMemory.js.map +1 -0
- package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.d.ts +143 -0
- package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.d.ts.map +1 -0
- package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.js +186 -0
- package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.js.map +1 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.d.ts +33 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.d.ts.map +1 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.js +138 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.js.map +1 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.d.ts +32 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.d.ts.map +1 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.js +2 -0
- package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.js.map +1 -0
- package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts +336 -0
- package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts.map +1 -0
- package/dist/cognitive_substrate/personas/IPersonaDefinition.js +8 -0
- package/dist/cognitive_substrate/personas/IPersonaDefinition.js.map +1 -0
- package/dist/cognitive_substrate/personas/IPersonaLoader.d.ts +78 -0
- package/dist/cognitive_substrate/personas/IPersonaLoader.d.ts.map +1 -0
- package/dist/cognitive_substrate/personas/IPersonaLoader.js +9 -0
- package/dist/cognitive_substrate/personas/IPersonaLoader.js.map +1 -0
- package/dist/cognitive_substrate/personas/PersonaLoader.d.ts +60 -0
- package/dist/cognitive_substrate/personas/PersonaLoader.d.ts.map +1 -0
- package/dist/cognitive_substrate/personas/PersonaLoader.js +138 -0
- package/dist/cognitive_substrate/personas/PersonaLoader.js.map +1 -0
- package/dist/cognitive_substrate/personas/PersonaValidation.d.ts +139 -0
- package/dist/cognitive_substrate/personas/PersonaValidation.d.ts.map +1 -0
- package/dist/cognitive_substrate/personas/PersonaValidation.js +277 -0
- package/dist/cognitive_substrate/personas/PersonaValidation.js.map +1 -0
- package/dist/cognitive_substrate/personas/definitions/atlas_systems_architect.json +29 -0
- package/dist/cognitive_substrate/personas/definitions/default_assistant_persona.json +346 -0
- package/dist/cognitive_substrate/personas/definitions/default_free_assistant.json +13 -0
- package/dist/cognitive_substrate/personas/definitions/index.d.ts +14 -0
- package/dist/cognitive_substrate/personas/definitions/index.d.ts.map +1 -0
- package/dist/cognitive_substrate/personas/definitions/index.js +35 -0
- package/dist/cognitive_substrate/personas/definitions/index.js.map +1 -0
- package/dist/cognitive_substrate/personas/definitions/nerf_generalist.json +11 -0
- package/dist/cognitive_substrate/personas/definitions/v_researcher.json +11 -0
- package/dist/config/AgentOSConfig.d.ts +74 -0
- package/dist/config/AgentOSConfig.d.ts.map +1 -0
- package/dist/config/AgentOSConfig.js +399 -0
- package/dist/config/AgentOSConfig.js.map +1 -0
- package/dist/config/EmbeddingManagerConfiguration.d.ts +190 -0
- package/dist/config/EmbeddingManagerConfiguration.d.ts.map +1 -0
- package/dist/config/EmbeddingManagerConfiguration.js +16 -0
- package/dist/config/EmbeddingManagerConfiguration.js.map +1 -0
- package/dist/config/MemoryLifecycleManagerConfiguration.d.ts +165 -0
- package/dist/config/MemoryLifecycleManagerConfiguration.d.ts.map +1 -0
- package/dist/config/MemoryLifecycleManagerConfiguration.js +69 -0
- package/dist/config/MemoryLifecycleManagerConfiguration.js.map +1 -0
- package/dist/config/RetrievalAugmentorConfiguration.d.ts +98 -0
- package/dist/config/RetrievalAugmentorConfiguration.d.ts.map +1 -0
- package/dist/config/RetrievalAugmentorConfiguration.js +47 -0
- package/dist/config/RetrievalAugmentorConfiguration.js.map +1 -0
- package/dist/config/ToolOrchestratorConfig.d.ts +69 -0
- package/dist/config/ToolOrchestratorConfig.d.ts.map +1 -0
- package/dist/config/ToolOrchestratorConfig.js +11 -0
- package/dist/config/ToolOrchestratorConfig.js.map +1 -0
- package/dist/config/VectorStoreConfiguration.d.ts +223 -0
- package/dist/config/VectorStoreConfiguration.d.ts.map +1 -0
- package/dist/config/VectorStoreConfiguration.js +59 -0
- package/dist/config/VectorStoreConfiguration.js.map +1 -0
- package/dist/config/extension-secrets.json +38 -0
- package/dist/config/extensionSecrets.d.ts +13 -0
- package/dist/config/extensionSecrets.d.ts.map +1 -0
- package/dist/config/extensionSecrets.js +24 -0
- package/dist/config/extensionSecrets.js.map +1 -0
- package/dist/core/agency/AgencyMemoryManager.d.ts +300 -0
- package/dist/core/agency/AgencyMemoryManager.d.ts.map +1 -0
- package/dist/core/agency/AgencyMemoryManager.js +657 -0
- package/dist/core/agency/AgencyMemoryManager.js.map +1 -0
- package/dist/core/agency/AgencyRegistry.d.ts +100 -0
- package/dist/core/agency/AgencyRegistry.d.ts.map +1 -0
- package/dist/core/agency/AgencyRegistry.js +209 -0
- package/dist/core/agency/AgencyRegistry.js.map +1 -0
- package/dist/core/agency/AgencyTypes.d.ts +200 -0
- package/dist/core/agency/AgencyTypes.d.ts.map +1 -0
- package/dist/core/agency/AgencyTypes.js +7 -0
- package/dist/core/agency/AgencyTypes.js.map +1 -0
- package/dist/core/agency/AgentCommunicationBus.d.ts +150 -0
- package/dist/core/agency/AgentCommunicationBus.d.ts.map +1 -0
- package/dist/core/agency/AgentCommunicationBus.js +568 -0
- package/dist/core/agency/AgentCommunicationBus.js.map +1 -0
- package/dist/core/agency/IAgentCommunicationBus.d.ts +469 -0
- package/dist/core/agency/IAgentCommunicationBus.d.ts.map +1 -0
- package/dist/core/agency/IAgentCommunicationBus.js +40 -0
- package/dist/core/agency/IAgentCommunicationBus.js.map +1 -0
- package/dist/core/agency/index.d.ts +18 -0
- package/dist/core/agency/index.d.ts.map +1 -0
- package/dist/core/agency/index.js +18 -0
- package/dist/core/agency/index.js.map +1 -0
- package/dist/core/agents/AgentCore.d.ts +385 -0
- package/dist/core/agents/AgentCore.d.ts.map +1 -0
- package/dist/core/agents/AgentCore.js +527 -0
- package/dist/core/agents/AgentCore.js.map +1 -0
- package/dist/core/agents/AgentFactory.d.ts +123 -0
- package/dist/core/agents/AgentFactory.d.ts.map +1 -0
- package/dist/core/agents/AgentFactory.js +232 -0
- package/dist/core/agents/AgentFactory.js.map +1 -0
- package/dist/core/agents/AgentPoolAgent.d.ts +244 -0
- package/dist/core/agents/AgentPoolAgent.d.ts.map +1 -0
- package/dist/core/agents/AgentPoolAgent.js +697 -0
- package/dist/core/agents/AgentPoolAgent.js.map +1 -0
- package/dist/core/agents/AgentPoolConfig.d.ts +191 -0
- package/dist/core/agents/AgentPoolConfig.d.ts.map +1 -0
- package/dist/core/agents/AgentPoolConfig.js +58 -0
- package/dist/core/agents/AgentPoolConfig.js.map +1 -0
- package/dist/core/agents/IAgent.d.ts +226 -0
- package/dist/core/agents/IAgent.d.ts.map +1 -0
- package/dist/core/agents/IAgent.js +14 -0
- package/dist/core/agents/IAgent.js.map +1 -0
- package/dist/core/agents/IAgentFactory.d.ts +137 -0
- package/dist/core/agents/IAgentFactory.d.ts.map +1 -0
- package/dist/core/agents/IAgentFactory.js +13 -0
- package/dist/core/agents/IAgentFactory.js.map +1 -0
- package/dist/core/agents/tools/Tool.d.ts +17 -0
- package/dist/core/agents/tools/Tool.d.ts.map +1 -0
- package/dist/core/agents/tools/Tool.js +8 -0
- package/dist/core/agents/tools/Tool.js.map +1 -0
- package/dist/core/ai_utilities/HybridUtilityAI.d.ts +1 -0
- package/dist/core/ai_utilities/HybridUtilityAI.d.ts.map +1 -0
- package/dist/core/ai_utilities/HybridUtilityAI.js +2 -0
- package/dist/core/ai_utilities/HybridUtilityAI.js.map +1 -0
- package/dist/core/ai_utilities/IUtilityAI.d.ts +212 -0
- package/dist/core/ai_utilities/IUtilityAI.d.ts.map +1 -0
- package/dist/core/ai_utilities/IUtilityAI.js +11 -0
- package/dist/core/ai_utilities/IUtilityAI.js.map +1 -0
- package/dist/core/ai_utilities/LLMUtilityAI.d.ts +94 -0
- package/dist/core/ai_utilities/LLMUtilityAI.d.ts.map +1 -0
- package/dist/core/ai_utilities/LLMUtilityAI.js +434 -0
- package/dist/core/ai_utilities/LLMUtilityAI.js.map +1 -0
- package/dist/core/ai_utilities/StatisticalUtilityAI.d.ts +102 -0
- package/dist/core/ai_utilities/StatisticalUtilityAI.d.ts.map +1 -0
- package/dist/core/ai_utilities/StatisticalUtilityAI.js +617 -0
- package/dist/core/ai_utilities/StatisticalUtilityAI.js.map +1 -0
- package/dist/core/conversation/ConversationContext.d.ts +259 -0
- package/dist/core/conversation/ConversationContext.d.ts.map +1 -0
- package/dist/core/conversation/ConversationContext.js +450 -0
- package/dist/core/conversation/ConversationContext.js.map +1 -0
- package/dist/core/conversation/ConversationManager.d.ts +223 -0
- package/dist/core/conversation/ConversationManager.d.ts.map +1 -0
- package/dist/core/conversation/ConversationManager.js +558 -0
- package/dist/core/conversation/ConversationManager.js.map +1 -0
- package/dist/core/conversation/ConversationMessage.d.ts +184 -0
- package/dist/core/conversation/ConversationMessage.d.ts.map +1 -0
- package/dist/core/conversation/ConversationMessage.js +66 -0
- package/dist/core/conversation/ConversationMessage.js.map +1 -0
- package/dist/core/evaluation/Evaluator.d.ts +28 -0
- package/dist/core/evaluation/Evaluator.d.ts.map +1 -0
- package/dist/core/evaluation/Evaluator.js +490 -0
- package/dist/core/evaluation/Evaluator.js.map +1 -0
- package/dist/core/evaluation/IEvaluator.d.ts +309 -0
- package/dist/core/evaluation/IEvaluator.d.ts.map +1 -0
- package/dist/core/evaluation/IEvaluator.js +12 -0
- package/dist/core/evaluation/IEvaluator.js.map +1 -0
- package/dist/core/evaluation/LLMJudge.d.ts +105 -0
- package/dist/core/evaluation/LLMJudge.d.ts.map +1 -0
- package/dist/core/evaluation/LLMJudge.js +229 -0
- package/dist/core/evaluation/LLMJudge.js.map +1 -0
- package/dist/core/evaluation/index.d.ts +9 -0
- package/dist/core/evaluation/index.d.ts.map +1 -0
- package/dist/core/evaluation/index.js +9 -0
- package/dist/core/evaluation/index.js.map +1 -0
- package/dist/core/guardrails/IGuardrailService.d.ts +142 -0
- package/dist/core/guardrails/IGuardrailService.d.ts.map +1 -0
- package/dist/core/guardrails/IGuardrailService.js +24 -0
- package/dist/core/guardrails/IGuardrailService.js.map +1 -0
- package/dist/core/guardrails/guardrailDispatcher.d.ts +36 -0
- package/dist/core/guardrails/guardrailDispatcher.d.ts.map +1 -0
- package/dist/core/guardrails/guardrailDispatcher.js +240 -0
- package/dist/core/guardrails/guardrailDispatcher.js.map +1 -0
- package/dist/core/hitl/HumanInteractionManager.d.ts +146 -0
- package/dist/core/hitl/HumanInteractionManager.d.ts.map +1 -0
- package/dist/core/hitl/HumanInteractionManager.js +491 -0
- package/dist/core/hitl/HumanInteractionManager.js.map +1 -0
- package/dist/core/hitl/IHumanInteractionManager.d.ts +521 -0
- package/dist/core/hitl/IHumanInteractionManager.d.ts.map +1 -0
- package/dist/core/hitl/IHumanInteractionManager.js +33 -0
- package/dist/core/hitl/IHumanInteractionManager.js.map +1 -0
- package/dist/core/hitl/index.d.ts +17 -0
- package/dist/core/hitl/index.d.ts.map +1 -0
- package/dist/core/hitl/index.js +17 -0
- package/dist/core/hitl/index.js.map +1 -0
- package/dist/core/knowledge/IKnowledgeGraph.d.ts +351 -0
- package/dist/core/knowledge/IKnowledgeGraph.d.ts.map +1 -0
- package/dist/core/knowledge/IKnowledgeGraph.js +10 -0
- package/dist/core/knowledge/IKnowledgeGraph.js.map +1 -0
- package/dist/core/knowledge/KnowledgeGraph.d.ts +93 -0
- package/dist/core/knowledge/KnowledgeGraph.d.ts.map +1 -0
- package/dist/core/knowledge/KnowledgeGraph.js +601 -0
- package/dist/core/knowledge/KnowledgeGraph.js.map +1 -0
- package/dist/core/knowledge/index.d.ts +8 -0
- package/dist/core/knowledge/index.d.ts.map +1 -0
- package/dist/core/knowledge/index.js +8 -0
- package/dist/core/knowledge/index.js.map +1 -0
- package/dist/core/language/LanguageService.d.ts +77 -0
- package/dist/core/language/LanguageService.d.ts.map +1 -0
- package/dist/core/language/LanguageService.js +305 -0
- package/dist/core/language/LanguageService.js.map +1 -0
- package/dist/core/language/index.d.ts +6 -0
- package/dist/core/language/index.d.ts.map +1 -0
- package/dist/core/language/index.js +6 -0
- package/dist/core/language/index.js.map +1 -0
- package/dist/core/language/interfaces.d.ts +168 -0
- package/dist/core/language/interfaces.d.ts.map +1 -0
- package/dist/core/language/interfaces.js +37 -0
- package/dist/core/language/interfaces.js.map +1 -0
- package/dist/core/language/providers/DeepLTranslationProvider.d.ts +16 -0
- package/dist/core/language/providers/DeepLTranslationProvider.d.ts.map +1 -0
- package/dist/core/language/providers/DeepLTranslationProvider.js +28 -0
- package/dist/core/language/providers/DeepLTranslationProvider.js.map +1 -0
- package/dist/core/language/providers/OpenAITranslationProvider.d.ts +17 -0
- package/dist/core/language/providers/OpenAITranslationProvider.d.ts.map +1 -0
- package/dist/core/language/providers/OpenAITranslationProvider.js +34 -0
- package/dist/core/language/providers/OpenAITranslationProvider.js.map +1 -0
- package/dist/core/language/providers/WhisperDetectionProvider.d.ts +16 -0
- package/dist/core/language/providers/WhisperDetectionProvider.d.ts.map +1 -0
- package/dist/core/language/providers/WhisperDetectionProvider.js +15 -0
- package/dist/core/language/providers/WhisperDetectionProvider.js.map +1 -0
- package/dist/core/llm/IPromptEngine.d.ts +627 -0
- package/dist/core/llm/IPromptEngine.d.ts.map +1 -0
- package/dist/core/llm/IPromptEngine.js +81 -0
- package/dist/core/llm/IPromptEngine.js.map +1 -0
- package/dist/core/llm/PromptEngine.d.ts +108 -0
- package/dist/core/llm/PromptEngine.d.ts.map +1 -0
- package/dist/core/llm/PromptEngine.js +872 -0
- package/dist/core/llm/PromptEngine.js.map +1 -0
- package/dist/core/llm/providers/AIModelProviderManager.d.ts +74 -0
- package/dist/core/llm/providers/AIModelProviderManager.d.ts.map +1 -0
- package/dist/core/llm/providers/AIModelProviderManager.js +263 -0
- package/dist/core/llm/providers/AIModelProviderManager.js.map +1 -0
- package/dist/core/llm/providers/IProvider.d.ts +327 -0
- package/dist/core/llm/providers/IProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/IProvider.js +39 -0
- package/dist/core/llm/providers/IProvider.js.map +1 -0
- package/dist/core/llm/providers/errors/OllamaProviderError.d.ts +36 -0
- package/dist/core/llm/providers/errors/OllamaProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/OllamaProviderError.js +40 -0
- package/dist/core/llm/providers/errors/OllamaProviderError.js.map +1 -0
- package/dist/core/llm/providers/errors/OpenAIProviderError.d.ts +42 -0
- package/dist/core/llm/providers/errors/OpenAIProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/OpenAIProviderError.js +44 -0
- package/dist/core/llm/providers/errors/OpenAIProviderError.js.map +1 -0
- package/dist/core/llm/providers/errors/OpenRouterProviderError.d.ts +39 -0
- package/dist/core/llm/providers/errors/OpenRouterProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/OpenRouterProviderError.js +42 -0
- package/dist/core/llm/providers/errors/OpenRouterProviderError.js.map +1 -0
- package/dist/core/llm/providers/errors/ProviderError.d.ts +37 -0
- package/dist/core/llm/providers/errors/ProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/ProviderError.js +36 -0
- package/dist/core/llm/providers/errors/ProviderError.js.map +1 -0
- package/dist/core/llm/providers/implementations/OllamaProvider.d.ts +80 -0
- package/dist/core/llm/providers/implementations/OllamaProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/OllamaProvider.js +473 -0
- package/dist/core/llm/providers/implementations/OllamaProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts +160 -0
- package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/OpenAIProvider.js +672 -0
- package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/OpenRouterProvider.d.ts +51 -0
- package/dist/core/llm/providers/implementations/OpenRouterProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/OpenRouterProvider.js +499 -0
- package/dist/core/llm/providers/implementations/OpenRouterProvider.js.map +1 -0
- package/dist/core/llm/routing/IModelRouter.d.ts +129 -0
- package/dist/core/llm/routing/IModelRouter.d.ts.map +1 -0
- package/dist/core/llm/routing/IModelRouter.js +14 -0
- package/dist/core/llm/routing/IModelRouter.js.map +1 -0
- package/dist/core/llm/routing/ModelRouter.d.ts +157 -0
- package/dist/core/llm/routing/ModelRouter.d.ts.map +1 -0
- package/dist/core/llm/routing/ModelRouter.js +190 -0
- package/dist/core/llm/routing/ModelRouter.js.map +1 -0
- package/dist/core/llm/streaming/StreamingBatcher.d.ts +54 -0
- package/dist/core/llm/streaming/StreamingBatcher.d.ts.map +1 -0
- package/dist/core/llm/streaming/StreamingBatcher.js +173 -0
- package/dist/core/llm/streaming/StreamingBatcher.js.map +1 -0
- package/dist/core/llm/streaming/StreamingReconstructor.d.ts +69 -0
- package/dist/core/llm/streaming/StreamingReconstructor.d.ts.map +1 -0
- package/dist/core/llm/streaming/StreamingReconstructor.js +102 -0
- package/dist/core/llm/streaming/StreamingReconstructor.js.map +1 -0
- package/dist/core/marketplace/IMarketplace.d.ts +500 -0
- package/dist/core/marketplace/IMarketplace.d.ts.map +1 -0
- package/dist/core/marketplace/IMarketplace.js +10 -0
- package/dist/core/marketplace/IMarketplace.js.map +1 -0
- package/dist/core/marketplace/Marketplace.d.ts +122 -0
- package/dist/core/marketplace/Marketplace.d.ts.map +1 -0
- package/dist/core/marketplace/Marketplace.js +591 -0
- package/dist/core/marketplace/Marketplace.js.map +1 -0
- package/dist/core/marketplace/index.d.ts +8 -0
- package/dist/core/marketplace/index.d.ts.map +1 -0
- package/dist/core/marketplace/index.js +8 -0
- package/dist/core/marketplace/index.js.map +1 -0
- package/dist/core/observability/ITracer.d.ts +317 -0
- package/dist/core/observability/ITracer.d.ts.map +1 -0
- package/dist/core/observability/ITracer.js +55 -0
- package/dist/core/observability/ITracer.js.map +1 -0
- package/dist/core/observability/Tracer.d.ts +76 -0
- package/dist/core/observability/Tracer.d.ts.map +1 -0
- package/dist/core/observability/Tracer.js +360 -0
- package/dist/core/observability/Tracer.js.map +1 -0
- package/dist/core/observability/index.d.ts +9 -0
- package/dist/core/observability/index.d.ts.map +1 -0
- package/dist/core/observability/index.js +8 -0
- package/dist/core/observability/index.js.map +1 -0
- package/dist/core/orchestration/AgentOrchestrator.d.ts +243 -0
- package/dist/core/orchestration/AgentOrchestrator.d.ts.map +1 -0
- package/dist/core/orchestration/AgentOrchestrator.js +648 -0
- package/dist/core/orchestration/AgentOrchestrator.js.map +1 -0
- package/dist/core/orchestration/IAgentOrchestrator.d.ts +44 -0
- package/dist/core/orchestration/IAgentOrchestrator.d.ts.map +1 -0
- package/dist/core/orchestration/IAgentOrchestrator.js +4 -0
- package/dist/core/orchestration/IAgentOrchestrator.js.map +1 -0
- package/dist/core/orchestration/helpers.d.ts +12 -0
- package/dist/core/orchestration/helpers.d.ts.map +1 -0
- package/dist/core/orchestration/helpers.js +36 -0
- package/dist/core/orchestration/helpers.js.map +1 -0
- package/dist/core/planning/IPlanningEngine.d.ts +524 -0
- package/dist/core/planning/IPlanningEngine.d.ts.map +1 -0
- package/dist/core/planning/IPlanningEngine.js +32 -0
- package/dist/core/planning/IPlanningEngine.js.map +1 -0
- package/dist/core/planning/PlanningEngine.d.ts +161 -0
- package/dist/core/planning/PlanningEngine.d.ts.map +1 -0
- package/dist/core/planning/PlanningEngine.js +783 -0
- package/dist/core/planning/PlanningEngine.js.map +1 -0
- package/dist/core/planning/index.d.ts +25 -0
- package/dist/core/planning/index.d.ts.map +1 -0
- package/dist/core/planning/index.js +25 -0
- package/dist/core/planning/index.js.map +1 -0
- package/dist/core/sandbox/CodeSandbox.d.ts +86 -0
- package/dist/core/sandbox/CodeSandbox.d.ts.map +1 -0
- package/dist/core/sandbox/CodeSandbox.js +475 -0
- package/dist/core/sandbox/CodeSandbox.js.map +1 -0
- package/dist/core/sandbox/ICodeSandbox.d.ts +249 -0
- package/dist/core/sandbox/ICodeSandbox.d.ts.map +1 -0
- package/dist/core/sandbox/ICodeSandbox.js +24 -0
- package/dist/core/sandbox/ICodeSandbox.js.map +1 -0
- package/dist/core/sandbox/index.d.ts +9 -0
- package/dist/core/sandbox/index.d.ts.map +1 -0
- package/dist/core/sandbox/index.js +8 -0
- package/dist/core/sandbox/index.js.map +1 -0
- package/dist/core/storage/IStorageAdapter.d.ts +483 -0
- package/dist/core/storage/IStorageAdapter.d.ts.map +1 -0
- package/dist/core/storage/IStorageAdapter.js +19 -0
- package/dist/core/storage/IStorageAdapter.js.map +1 -0
- package/dist/core/storage/InMemoryStorageAdapter.d.ts +192 -0
- package/dist/core/storage/InMemoryStorageAdapter.d.ts.map +1 -0
- package/dist/core/storage/InMemoryStorageAdapter.js +343 -0
- package/dist/core/storage/InMemoryStorageAdapter.js.map +1 -0
- package/dist/core/storage/SqlStorageAdapter.d.ts +262 -0
- package/dist/core/storage/SqlStorageAdapter.d.ts.map +1 -0
- package/dist/core/storage/SqlStorageAdapter.js +485 -0
- package/dist/core/storage/SqlStorageAdapter.js.map +1 -0
- package/dist/core/storage/index.d.ts +14 -0
- package/dist/core/storage/index.d.ts.map +1 -0
- package/dist/core/storage/index.js +14 -0
- package/dist/core/storage/index.js.map +1 -0
- package/dist/core/streaming/IStreamClient.d.ts +72 -0
- package/dist/core/streaming/IStreamClient.d.ts.map +1 -0
- package/dist/core/streaming/IStreamClient.js +12 -0
- package/dist/core/streaming/IStreamClient.js.map +1 -0
- package/dist/core/streaming/StreamingManager.d.ts +242 -0
- package/dist/core/streaming/StreamingManager.d.ts.map +1 -0
- package/dist/core/streaming/StreamingManager.js +282 -0
- package/dist/core/streaming/StreamingManager.js.map +1 -0
- package/dist/core/structured/IStructuredOutputManager.d.ts +701 -0
- package/dist/core/structured/IStructuredOutputManager.d.ts.map +1 -0
- package/dist/core/structured/IStructuredOutputManager.js +74 -0
- package/dist/core/structured/IStructuredOutputManager.js.map +1 -0
- package/dist/core/structured/StructuredOutputManager.d.ts +140 -0
- package/dist/core/structured/StructuredOutputManager.d.ts.map +1 -0
- package/dist/core/structured/StructuredOutputManager.js +1015 -0
- package/dist/core/structured/StructuredOutputManager.js.map +1 -0
- package/dist/core/structured/index.d.ts +34 -0
- package/dist/core/structured/index.d.ts.map +1 -0
- package/dist/core/structured/index.js +34 -0
- package/dist/core/structured/index.js.map +1 -0
- package/dist/core/tools/ITool.d.ts +228 -0
- package/dist/core/tools/ITool.d.ts.map +1 -0
- package/dist/core/tools/ITool.js +11 -0
- package/dist/core/tools/ITool.js.map +1 -0
- package/dist/core/tools/IToolOrchestrator.d.ts +131 -0
- package/dist/core/tools/IToolOrchestrator.d.ts.map +1 -0
- package/dist/core/tools/IToolOrchestrator.js +14 -0
- package/dist/core/tools/IToolOrchestrator.js.map +1 -0
- package/dist/core/tools/ToolExecutor.d.ts +143 -0
- package/dist/core/tools/ToolExecutor.d.ts.map +1 -0
- package/dist/core/tools/ToolExecutor.js +364 -0
- package/dist/core/tools/ToolExecutor.js.map +1 -0
- package/dist/core/tools/ToolOrchestrator.d.ts +142 -0
- package/dist/core/tools/ToolOrchestrator.d.ts.map +1 -0
- package/dist/core/tools/ToolOrchestrator.js +373 -0
- package/dist/core/tools/ToolOrchestrator.js.map +1 -0
- package/dist/core/tools/permissions/IToolPermissionManager.d.ts +195 -0
- package/dist/core/tools/permissions/IToolPermissionManager.d.ts.map +1 -0
- package/dist/core/tools/permissions/IToolPermissionManager.js +14 -0
- package/dist/core/tools/permissions/IToolPermissionManager.js.map +1 -0
- package/dist/core/tools/permissions/ToolPermissionManager.d.ts +203 -0
- package/dist/core/tools/permissions/ToolPermissionManager.d.ts.map +1 -0
- package/dist/core/tools/permissions/ToolPermissionManager.js +298 -0
- package/dist/core/tools/permissions/ToolPermissionManager.js.map +1 -0
- package/dist/core/ui/IUIComponent.d.ts +11 -0
- package/dist/core/ui/IUIComponent.d.ts.map +1 -0
- package/dist/core/ui/IUIComponent.js +2 -0
- package/dist/core/ui/IUIComponent.js.map +1 -0
- package/dist/core/usage/UsageLedger.d.ts +81 -0
- package/dist/core/usage/UsageLedger.d.ts.map +1 -0
- package/dist/core/usage/UsageLedger.js +135 -0
- package/dist/core/usage/UsageLedger.js.map +1 -0
- package/dist/core/workflows/IWorkflowEngine.d.ts +42 -0
- package/dist/core/workflows/IWorkflowEngine.d.ts.map +1 -0
- package/dist/core/workflows/IWorkflowEngine.js +2 -0
- package/dist/core/workflows/IWorkflowEngine.js.map +1 -0
- package/dist/core/workflows/WorkflowEngine.d.ts +28 -0
- package/dist/core/workflows/WorkflowEngine.d.ts.map +1 -0
- package/dist/core/workflows/WorkflowEngine.js +309 -0
- package/dist/core/workflows/WorkflowEngine.js.map +1 -0
- package/dist/core/workflows/WorkflowTypes.d.ts +180 -0
- package/dist/core/workflows/WorkflowTypes.d.ts.map +1 -0
- package/dist/core/workflows/WorkflowTypes.js +26 -0
- package/dist/core/workflows/WorkflowTypes.js.map +1 -0
- package/dist/core/workflows/runtime/WorkflowRuntime.d.ts +70 -0
- package/dist/core/workflows/runtime/WorkflowRuntime.d.ts.map +1 -0
- package/dist/core/workflows/runtime/WorkflowRuntime.js +566 -0
- package/dist/core/workflows/runtime/WorkflowRuntime.js.map +1 -0
- package/dist/core/workflows/storage/IWorkflowStore.d.ts +75 -0
- package/dist/core/workflows/storage/IWorkflowStore.d.ts.map +1 -0
- package/dist/core/workflows/storage/IWorkflowStore.js +2 -0
- package/dist/core/workflows/storage/IWorkflowStore.js.map +1 -0
- package/dist/core/workflows/storage/InMemoryWorkflowStore.d.ts +14 -0
- package/dist/core/workflows/storage/InMemoryWorkflowStore.d.ts.map +1 -0
- package/dist/core/workflows/storage/InMemoryWorkflowStore.js +130 -0
- package/dist/core/workflows/storage/InMemoryWorkflowStore.js.map +1 -0
- package/dist/extensions/ExtensionLoader.d.ts +119 -0
- package/dist/extensions/ExtensionLoader.d.ts.map +1 -0
- package/dist/extensions/ExtensionLoader.js +297 -0
- package/dist/extensions/ExtensionLoader.js.map +1 -0
- package/dist/extensions/ExtensionManager.d.ts +49 -0
- package/dist/extensions/ExtensionManager.d.ts.map +1 -0
- package/dist/extensions/ExtensionManager.js +197 -0
- package/dist/extensions/ExtensionManager.js.map +1 -0
- package/dist/extensions/ExtensionRegistry.d.ts +39 -0
- package/dist/extensions/ExtensionRegistry.d.ts.map +1 -0
- package/dist/extensions/ExtensionRegistry.js +103 -0
- package/dist/extensions/ExtensionRegistry.js.map +1 -0
- package/dist/extensions/MultiRegistryLoader.d.ts +61 -0
- package/dist/extensions/MultiRegistryLoader.d.ts.map +1 -0
- package/dist/extensions/MultiRegistryLoader.js +169 -0
- package/dist/extensions/MultiRegistryLoader.js.map +1 -0
- package/dist/extensions/RegistryConfig.d.ts +86 -0
- package/dist/extensions/RegistryConfig.d.ts.map +1 -0
- package/dist/extensions/RegistryConfig.js +99 -0
- package/dist/extensions/RegistryConfig.js.map +1 -0
- package/dist/extensions/events.d.ts +19 -0
- package/dist/extensions/events.d.ts.map +1 -0
- package/dist/extensions/events.js +2 -0
- package/dist/extensions/events.js.map +1 -0
- package/dist/extensions/index.d.ts +9 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +9 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/manifest.d.ts +52 -0
- package/dist/extensions/manifest.d.ts.map +1 -0
- package/dist/extensions/manifest.js +2 -0
- package/dist/extensions/manifest.js.map +1 -0
- package/dist/extensions/types.d.ts +294 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +12 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/ILogger.d.ts +8 -0
- package/dist/logging/ILogger.d.ts.map +1 -0
- package/dist/logging/ILogger.js +2 -0
- package/dist/logging/ILogger.js.map +1 -0
- package/dist/logging/PinoLogger.d.ts +12 -0
- package/dist/logging/PinoLogger.d.ts.map +1 -0
- package/dist/logging/PinoLogger.js +22 -0
- package/dist/logging/PinoLogger.js.map +1 -0
- package/dist/logging/loggerFactory.d.ts +6 -0
- package/dist/logging/loggerFactory.d.ts.map +1 -0
- package/dist/logging/loggerFactory.js +14 -0
- package/dist/logging/loggerFactory.js.map +1 -0
- package/dist/rag/EmbeddingManager.d.ts +81 -0
- package/dist/rag/EmbeddingManager.d.ts.map +1 -0
- package/dist/rag/EmbeddingManager.js +412 -0
- package/dist/rag/EmbeddingManager.js.map +1 -0
- package/dist/rag/IEmbeddingManager.d.ts +277 -0
- package/dist/rag/IEmbeddingManager.d.ts.map +1 -0
- package/dist/rag/IEmbeddingManager.js +19 -0
- package/dist/rag/IEmbeddingManager.js.map +1 -0
- package/dist/rag/IRetrievalAugmentor.d.ts +208 -0
- package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -0
- package/dist/rag/IRetrievalAugmentor.js +21 -0
- package/dist/rag/IRetrievalAugmentor.js.map +1 -0
- package/dist/rag/IVectorStore.d.ts +351 -0
- package/dist/rag/IVectorStore.d.ts.map +1 -0
- package/dist/rag/IVectorStore.js +15 -0
- package/dist/rag/IVectorStore.js.map +1 -0
- package/dist/rag/IVectorStoreManager.d.ts +121 -0
- package/dist/rag/IVectorStoreManager.d.ts.map +1 -0
- package/dist/rag/IVectorStoreManager.js +13 -0
- package/dist/rag/IVectorStoreManager.js.map +1 -0
- package/dist/rag/RetrievalAugmentor.d.ts +99 -0
- package/dist/rag/RetrievalAugmentor.d.ts.map +1 -0
- package/dist/rag/RetrievalAugmentor.js +674 -0
- package/dist/rag/RetrievalAugmentor.js.map +1 -0
- package/dist/rag/VectorStoreManager.d.ts +90 -0
- package/dist/rag/VectorStoreManager.d.ts.map +1 -0
- package/dist/rag/VectorStoreManager.js +283 -0
- package/dist/rag/VectorStoreManager.js.map +1 -0
- package/dist/rag/implementations/index.d.ts +9 -0
- package/dist/rag/implementations/index.d.ts.map +1 -0
- package/dist/rag/implementations/index.js +9 -0
- package/dist/rag/implementations/index.js.map +1 -0
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.d.ts +132 -0
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.js +539 -0
- package/dist/rag/implementations/vector_stores/InMemoryVectorStore.js.map +1 -0
- package/dist/rag/implementations/vector_stores/SqlVectorStore.d.ts +265 -0
- package/dist/rag/implementations/vector_stores/SqlVectorStore.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/SqlVectorStore.js +755 -0
- package/dist/rag/implementations/vector_stores/SqlVectorStore.js.map +1 -0
- package/dist/rag/implementations/vector_stores/index.d.ts +10 -0
- package/dist/rag/implementations/vector_stores/index.d.ts.map +1 -0
- package/dist/rag/implementations/vector_stores/index.js +12 -0
- package/dist/rag/implementations/vector_stores/index.js.map +1 -0
- package/dist/rag/index.d.ts +95 -0
- package/dist/rag/index.d.ts.map +1 -0
- package/dist/rag/index.js +97 -0
- package/dist/rag/index.js.map +1 -0
- package/dist/services/user_auth/AuthService.d.ts +13 -0
- package/dist/services/user_auth/AuthService.d.ts.map +1 -0
- package/dist/services/user_auth/AuthService.js +24 -0
- package/dist/services/user_auth/AuthService.js.map +1 -0
- package/dist/services/user_auth/SubscriptionService.d.ts +14 -0
- package/dist/services/user_auth/SubscriptionService.d.ts.map +1 -0
- package/dist/services/user_auth/SubscriptionService.js +34 -0
- package/dist/services/user_auth/SubscriptionService.js.map +1 -0
- package/dist/services/user_auth/types.d.ts +30 -0
- package/dist/services/user_auth/types.d.ts.map +1 -0
- package/dist/services/user_auth/types.js +2 -0
- package/dist/services/user_auth/types.js.map +1 -0
- package/dist/stubs/prismaClient.d.ts +35 -0
- package/dist/stubs/prismaClient.d.ts.map +1 -0
- package/dist/stubs/prismaClient.js +47 -0
- package/dist/stubs/prismaClient.js.map +1 -0
- package/dist/types/rateLimitTypes.d.ts +70 -0
- package/dist/types/rateLimitTypes.d.ts.map +1 -0
- package/dist/types/rateLimitTypes.js +55 -0
- package/dist/types/rateLimitTypes.js.map +1 -0
- package/dist/utils/errors.d.ts +80 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +201 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/uuid.d.ts +11 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/uuid.js +64 -0
- package/dist/utils/uuid.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Defines the interface for the Model Router in AgentOS.
|
|
3
|
+
* The Model Router is responsible for intelligently selecting the most appropriate
|
|
4
|
+
* AI model and provider for a given task or query, based on a variety of criteria
|
|
5
|
+
* such as task requirements, persona preferences, user context, model capabilities,
|
|
6
|
+
* cost, and performance.
|
|
7
|
+
*
|
|
8
|
+
* Implementations of this interface can range from simple rule-based routers
|
|
9
|
+
* to more sophisticated LLM-driven or learning-based routing systems.
|
|
10
|
+
* @module backend/agentos/core/llm/routing/IModelRouter
|
|
11
|
+
*/
|
|
12
|
+
import { IProvider, ModelInfo } from '../providers/IProvider';
|
|
13
|
+
import { IPersonaDefinition } from '../../../cognitive_substrate/personas/IPersonaDefinition';
|
|
14
|
+
import type { ISubscriptionTier } from '../../../services/user_auth/types';
|
|
15
|
+
/**
|
|
16
|
+
* Parameters provided to the model router to aid in its selection process.
|
|
17
|
+
* This context allows the router to make informed decisions.
|
|
18
|
+
*/
|
|
19
|
+
export interface ModelRouteParams {
|
|
20
|
+
/** A hint or classification of the current task (e.g., "code_generation", "summarization", "general_chat"). */
|
|
21
|
+
taskHint: string;
|
|
22
|
+
/** The ID of the GMI or agent instance making the request. */
|
|
23
|
+
requestingAgentId?: string;
|
|
24
|
+
/** The ID of the active persona guiding the interaction. */
|
|
25
|
+
personaId?: string;
|
|
26
|
+
/** The full active persona definition. */
|
|
27
|
+
activePersona?: IPersonaDefinition;
|
|
28
|
+
/** The ID of the user initiating the request. */
|
|
29
|
+
userId?: string;
|
|
30
|
+
/** The subscription tier of the user, which might affect model availability or preference. */
|
|
31
|
+
userSubscriptionTier?: ISubscriptionTier;
|
|
32
|
+
/** The user's query or the primary input text for the task. */
|
|
33
|
+
query?: string;
|
|
34
|
+
/** The target language for the model's output (e.g., "en", "es", "ja"). */
|
|
35
|
+
language?: string;
|
|
36
|
+
/**
|
|
37
|
+
* A preference for optimizing model selection (e.g., for speed, cost, or quality).
|
|
38
|
+
* This can guide the router if multiple suitable models are found.
|
|
39
|
+
*/
|
|
40
|
+
optimizationPreference?: 'cost' | 'speed' | 'quality' | 'balanced';
|
|
41
|
+
/**
|
|
42
|
+
* Explicitly required capabilities for the model (e.g., "tool_use", "vision_input", "json_mode").
|
|
43
|
+
* The router must ensure the selected model supports all listed capabilities.
|
|
44
|
+
*/
|
|
45
|
+
requiredCapabilities?: string[];
|
|
46
|
+
/**
|
|
47
|
+
* A list of preferred model IDs, if any. The router should try to use one of these if suitable.
|
|
48
|
+
*/
|
|
49
|
+
preferredModelIds?: string[];
|
|
50
|
+
/**
|
|
51
|
+
* A list of preferred provider IDs, if any.
|
|
52
|
+
*/
|
|
53
|
+
preferredProviderIds?: string[];
|
|
54
|
+
/**
|
|
55
|
+
* A list of model IDs that should be excluded from consideration.
|
|
56
|
+
*/
|
|
57
|
+
excludedModelIds?: string[];
|
|
58
|
+
/**
|
|
59
|
+
* Maximum acceptable cost per 1000 input tokens (in USD), if cost is a critical factor.
|
|
60
|
+
*/
|
|
61
|
+
maxCostPerKInputTokens?: number;
|
|
62
|
+
/**
|
|
63
|
+
* Maximum acceptable cost per 1000 output tokens (in USD).
|
|
64
|
+
*/
|
|
65
|
+
maxCostPerKOutputTokens?: number;
|
|
66
|
+
/** User-provided API keys for specific providers, which might enable access to certain models. */
|
|
67
|
+
userApiKeys?: Record<string, string>;
|
|
68
|
+
/** Additional custom parameters or context to aid routing decisions. */
|
|
69
|
+
customContext?: Record<string, any>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The result of a model routing decision.
|
|
73
|
+
* It specifies the selected provider, model, and provides reasoning for the choice.
|
|
74
|
+
*/
|
|
75
|
+
export interface ModelRouteResult {
|
|
76
|
+
/** The selected AI model provider instance. */
|
|
77
|
+
provider: IProvider;
|
|
78
|
+
/** The ID of the selected model on the chosen provider. */
|
|
79
|
+
modelId: string;
|
|
80
|
+
/** Detailed information about the selected model. */
|
|
81
|
+
modelInfo: ModelInfo;
|
|
82
|
+
/** A human-readable explanation of why this model and provider were chosen. */
|
|
83
|
+
reasoning: string;
|
|
84
|
+
/**
|
|
85
|
+
* A confidence score (0.0 to 1.0) indicating the router's certainty in this selection.
|
|
86
|
+
* Higher values mean higher confidence.
|
|
87
|
+
*/
|
|
88
|
+
confidence: number;
|
|
89
|
+
/** An optional classification of the estimated cost tier for this model (e.g., "low", "medium", "high"). */
|
|
90
|
+
estimatedCostTier?: 'low' | 'medium' | 'high' | string;
|
|
91
|
+
/** Any additional metadata related to the routing decision (e.g., matched rule ID, performance estimates). */
|
|
92
|
+
metadata?: Record<string, any>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Interface for the Model Router.
|
|
96
|
+
* Implementations are responsible for selecting an appropriate AI model and provider
|
|
97
|
+
* based on the given parameters and context.
|
|
98
|
+
*/
|
|
99
|
+
export interface IModelRouter {
|
|
100
|
+
/** A unique identifier for this specific router implementation. */
|
|
101
|
+
readonly routerId: string;
|
|
102
|
+
/**
|
|
103
|
+
* Initializes the model router with its configuration and necessary dependencies,
|
|
104
|
+
* such as the AIModelProviderManager for accessing information about available models and providers.
|
|
105
|
+
*
|
|
106
|
+
* @async
|
|
107
|
+
* @param {Record<string, any>} config - Router-specific configuration (e.g., rules, model preferences).
|
|
108
|
+
* @param {any} providerManager - An instance of AIModelProviderManager or a similar service
|
|
109
|
+
* that provides access to available models and providers.
|
|
110
|
+
* @param {any} [promptEngine] - Optional: An instance of PromptEngine, if the router uses LLM-based routing decisions.
|
|
111
|
+
* @returns {Promise<void>} A promise that resolves upon successful initialization.
|
|
112
|
+
* @throws {Error} If initialization fails (e.g., invalid configuration).
|
|
113
|
+
*/
|
|
114
|
+
initialize(config: Record<string, any>, providerManager: any, // Should be AIModelProviderManager
|
|
115
|
+
promptEngine?: any): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Selects an AI model and provider based on the provided parameters and the router's internal logic.
|
|
118
|
+
*
|
|
119
|
+
* @async
|
|
120
|
+
* @param {ModelRouteParams} params - The parameters and context for the routing decision.
|
|
121
|
+
* @param {ModelInfo[]} [availableModels] - Optional: A pre-fetched list of available models. If not provided,
|
|
122
|
+
* the router may need to fetch this list from its `providerManager`.
|
|
123
|
+
* @returns {Promise<ModelRouteResult | null>} A promise that resolves with the routing decision,
|
|
124
|
+
* or null if no suitable model/provider could be found that meets the criteria.
|
|
125
|
+
* @throws {Error} If a critical error occurs during the selection process.
|
|
126
|
+
*/
|
|
127
|
+
selectModel(params: ModelRouteParams, availableModels?: ModelInfo[]): Promise<ModelRouteResult | null>;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=IModelRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IModelRouter.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/routing/IModelRouter.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAC;AAC9F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+GAA+G;IAC/G,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,iBAAiB,CAAC;IACzC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IACnE;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,kGAAkG;IAClG,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,QAAQ,EAAE,SAAS,CAAC;IACpB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,SAAS,EAAE,SAAS,CAAC;IACrB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,4GAA4G;IAC5G,iBAAiB,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACvD,8GAA8G;IAC9G,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;;;OAWG;IACH,UAAU,CACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,eAAe,EAAE,GAAG,EAAE,mCAAmC;IACzD,YAAY,CAAC,EAAE,GAAG,GACjB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;;;;OAUG;IACH,WAAW,CACT,MAAM,EAAE,gBAAgB,EACxB,eAAe,CAAC,EAAE,SAAS,EAAE,GAC5B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CACrC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// File: backend/agentos/core/llm/routing/IModelRouter.ts
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Defines the interface for the Model Router in AgentOS.
|
|
4
|
+
* The Model Router is responsible for intelligently selecting the most appropriate
|
|
5
|
+
* AI model and provider for a given task or query, based on a variety of criteria
|
|
6
|
+
* such as task requirements, persona preferences, user context, model capabilities,
|
|
7
|
+
* cost, and performance.
|
|
8
|
+
*
|
|
9
|
+
* Implementations of this interface can range from simple rule-based routers
|
|
10
|
+
* to more sophisticated LLM-driven or learning-based routing systems.
|
|
11
|
+
* @module backend/agentos/core/llm/routing/IModelRouter
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=IModelRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IModelRouter.js","sourceRoot":"","sources":["../../../../src/core/llm/routing/IModelRouter.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Implements a rule-based model router for AgentOS.
|
|
3
|
+
* This router selects an AI model and provider by evaluating a prioritized list of configurable rules
|
|
4
|
+
* against the provided `ModelRouteParams`. It supports conditions based on task hints,
|
|
5
|
+
* agent IDs, required capabilities, optimization preferences, language, and custom evaluators.
|
|
6
|
+
* If no rules match, it falls back to a configured default model and provider.
|
|
7
|
+
*
|
|
8
|
+
* This implementation aims for clarity, extensibility through custom conditions, and adherence
|
|
9
|
+
* to the `IModelRouter` interface.
|
|
10
|
+
*
|
|
11
|
+
* @module backend/agentos/core/llm/routing/ModelRouter
|
|
12
|
+
* @implements {IModelRouter}
|
|
13
|
+
*/
|
|
14
|
+
import { IModelRouter, ModelRouteParams, ModelRouteResult } from './IModelRouter';
|
|
15
|
+
import { ModelInfo } from '../providers/IProvider';
|
|
16
|
+
import { AIModelProviderManager } from '../providers/AIModelProviderManager';
|
|
17
|
+
/**
|
|
18
|
+
* Custom error class for ModelRouter specific operational errors.
|
|
19
|
+
* @class ModelRouterError
|
|
20
|
+
* @extends {Error}
|
|
21
|
+
*/
|
|
22
|
+
export declare class ModelRouterError extends Error {
|
|
23
|
+
/**
|
|
24
|
+
* A unique code identifying the type of error.
|
|
25
|
+
* @example 'INITIALIZATION_FAILED', 'RULE_EVALUATION_ERROR', 'NO_MODEL_MATCHED'
|
|
26
|
+
*/
|
|
27
|
+
readonly code: string;
|
|
28
|
+
/** Optional details or context about the error. */
|
|
29
|
+
readonly details?: unknown;
|
|
30
|
+
/**
|
|
31
|
+
* Creates an instance of ModelRouterError.
|
|
32
|
+
* @param {string} message - A human-readable description of the error.
|
|
33
|
+
* @param {string} code - A unique code identifying the type of error.
|
|
34
|
+
* @param {unknown} [details] - Optional details or context about the error.
|
|
35
|
+
*/
|
|
36
|
+
constructor(message: string, code: string, details?: unknown);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Defines a single routing rule that determines model selection based on conditions.
|
|
40
|
+
* Rules are evaluated in order of priority.
|
|
41
|
+
*/
|
|
42
|
+
export interface RoutingRule {
|
|
43
|
+
/** A unique identifier for the rule, useful for logging and debugging. */
|
|
44
|
+
id: string;
|
|
45
|
+
/** An optional description of the rule's purpose and logic. */
|
|
46
|
+
description?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Priority of the rule. Lower numbers are evaluated first.
|
|
49
|
+
* @default 0
|
|
50
|
+
*/
|
|
51
|
+
priority?: number;
|
|
52
|
+
/**
|
|
53
|
+
* A set of conditions that must ALL be met for this rule's action to be applied.
|
|
54
|
+
* If a condition field is omitted, it is not checked.
|
|
55
|
+
*/
|
|
56
|
+
conditions: {
|
|
57
|
+
/** Keywords or regex patterns to match in `ModelRouteParams.query` or `ModelRouteParams.taskHint`. Case-insensitive. */
|
|
58
|
+
queryOrTaskHintContains?: string[];
|
|
59
|
+
/** Matches `ModelRouteParams.requestingAgentId`. */
|
|
60
|
+
requestingAgentId?: string;
|
|
61
|
+
/** Matches `ModelRouteParams.personaId`. */
|
|
62
|
+
personaId?: string;
|
|
63
|
+
/**
|
|
64
|
+
* All specified capabilities must be present in the candidate model's `ModelInfo.capabilities`.
|
|
65
|
+
* @example ["tool_use", "json_mode"]
|
|
66
|
+
*/
|
|
67
|
+
requiredCapabilities?: string[];
|
|
68
|
+
/** Matches `ModelRouteParams.optimizationPreference`. */
|
|
69
|
+
optimizationPreference?: ModelRouteParams['optimizationPreference'];
|
|
70
|
+
/** Matches `ModelRouteParams.language`. */
|
|
71
|
+
language?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Name of a custom condition evaluator function registered with the router.
|
|
74
|
+
* Allows for complex, programmatic condition checking.
|
|
75
|
+
* @example "isUserPremiumTier"
|
|
76
|
+
*/
|
|
77
|
+
customCondition?: string;
|
|
78
|
+
/** Parameters to be passed to the `customCondition` evaluator function. */
|
|
79
|
+
customConditionParams?: Record<string, unknown>;
|
|
80
|
+
};
|
|
81
|
+
/** The action to take if all conditions are met, specifying the target model and provider. */
|
|
82
|
+
action: {
|
|
83
|
+
/** ID of the provider to use (must be configured in `AIModelProviderManager`). */
|
|
84
|
+
providerId: string;
|
|
85
|
+
/** ID of the model to use on that provider. */
|
|
86
|
+
modelId: string;
|
|
87
|
+
/** Optional reasoning for this choice, to be included in `ModelRouteResult.reasoning`. */
|
|
88
|
+
reasoning?: string;
|
|
89
|
+
/** Optional classification of the estimated cost tier (e.g., "low", "medium", "high"). */
|
|
90
|
+
estimatedCostTier?: ModelRouteResult['estimatedCostTier'];
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Configuration for the `ModelRouter`.
|
|
95
|
+
*/
|
|
96
|
+
export interface ModelRouterConfig {
|
|
97
|
+
/**
|
|
98
|
+
* An array of routing rules. These are sorted by priority before evaluation.
|
|
99
|
+
* @see {@link RoutingRule}
|
|
100
|
+
*/
|
|
101
|
+
rules: RoutingRule[];
|
|
102
|
+
/**
|
|
103
|
+
* Default provider ID to use if no rules match or if a matched rule's provider is unavailable.
|
|
104
|
+
* This provider must be configured in the `AIModelProviderManager`.
|
|
105
|
+
*/
|
|
106
|
+
defaultProviderId: string;
|
|
107
|
+
/**
|
|
108
|
+
* Default model ID to use if no rules match.
|
|
109
|
+
* This model must be available on the `defaultProviderId`.
|
|
110
|
+
*/
|
|
111
|
+
defaultModelId: string;
|
|
112
|
+
/** Optional reasoning to use when the default model is selected. */
|
|
113
|
+
defaultReasoning?: string;
|
|
114
|
+
/**
|
|
115
|
+
* A map of custom condition evaluator functions.
|
|
116
|
+
* The key is the `customCondition` string specified in a rule's conditions,
|
|
117
|
+
* and the value is the evaluator function.
|
|
118
|
+
* The function receives `ModelRouteParams` and the rule's `customConditionParams`,
|
|
119
|
+
* and should return `true` if the condition is met, `false` otherwise.
|
|
120
|
+
* @example
|
|
121
|
+
* customConditionEvaluators: {
|
|
122
|
+
* "isUserPremiumTier": async (params, ruleParams) => params.userSubscriptionTier?.isPremium || false
|
|
123
|
+
* }
|
|
124
|
+
*/
|
|
125
|
+
customConditionEvaluators?: Record<string, (params: ModelRouteParams, conditionParams: Record<string, unknown>) => Promise<boolean> | boolean>;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* @class ModelRouter
|
|
129
|
+
* @implements {IModelRouter}
|
|
130
|
+
* A rule-based implementation of `IModelRouter`. It selects an AI model by evaluating
|
|
131
|
+
* a configured set of rules in order of priority. This router is designed to be
|
|
132
|
+
* flexible and extensible through declarative rules and custom condition evaluators.
|
|
133
|
+
*/
|
|
134
|
+
export declare class ModelRouter implements IModelRouter {
|
|
135
|
+
/** @inheritdoc */
|
|
136
|
+
readonly routerId = "rule_based_router_v1.1";
|
|
137
|
+
private config;
|
|
138
|
+
private providerManager;
|
|
139
|
+
private isInitialized;
|
|
140
|
+
/**
|
|
141
|
+
* Constructs a ModelRouter instance.
|
|
142
|
+
* The router must be initialized via `initialize()` before use.
|
|
143
|
+
*/
|
|
144
|
+
constructor();
|
|
145
|
+
/**
|
|
146
|
+
* Ensures the router has been properly initialized.
|
|
147
|
+
* @private
|
|
148
|
+
* @throws {ModelRouterError} If not initialized.
|
|
149
|
+
*/
|
|
150
|
+
private ensureInitialized;
|
|
151
|
+
/** @inheritdoc */
|
|
152
|
+
initialize(config: ModelRouterConfig, // Using the more specific ModelRouterConfig
|
|
153
|
+
providerManager: AIModelProviderManager, _promptEngine?: any): Promise<void>;
|
|
154
|
+
/** @inheritdoc */
|
|
155
|
+
selectModel(params: ModelRouteParams, availableModels?: ModelInfo[]): Promise<ModelRouteResult | null>;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=ModelRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelRouter.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/routing/ModelRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// File: backend/agentos/core/llm/routing/ModelRouter.ts
|
|
2
|
+
/**
|
|
3
|
+
* Custom error class for ModelRouter specific operational errors.
|
|
4
|
+
* @class ModelRouterError
|
|
5
|
+
* @extends {Error}
|
|
6
|
+
*/
|
|
7
|
+
export class ModelRouterError extends Error {
|
|
8
|
+
/**
|
|
9
|
+
* Creates an instance of ModelRouterError.
|
|
10
|
+
* @param {string} message - A human-readable description of the error.
|
|
11
|
+
* @param {string} code - A unique code identifying the type of error.
|
|
12
|
+
* @param {unknown} [details] - Optional details or context about the error.
|
|
13
|
+
*/
|
|
14
|
+
constructor(message, code, details) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.name = 'ModelRouterError';
|
|
17
|
+
this.code = code;
|
|
18
|
+
this.details = details;
|
|
19
|
+
Object.setPrototypeOf(this, ModelRouterError.prototype);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @class ModelRouter
|
|
24
|
+
* @implements {IModelRouter}
|
|
25
|
+
* A rule-based implementation of `IModelRouter`. It selects an AI model by evaluating
|
|
26
|
+
* a configured set of rules in order of priority. This router is designed to be
|
|
27
|
+
* flexible and extensible through declarative rules and custom condition evaluators.
|
|
28
|
+
*/
|
|
29
|
+
export class ModelRouter {
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a ModelRouter instance.
|
|
32
|
+
* The router must be initialized via `initialize()` before use.
|
|
33
|
+
*/
|
|
34
|
+
constructor() {
|
|
35
|
+
/** @inheritdoc */
|
|
36
|
+
this.routerId = 'rule_based_router_v1.1'; // Version incremented
|
|
37
|
+
this.isInitialized = false;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Ensures the router has been properly initialized.
|
|
41
|
+
* @private
|
|
42
|
+
* @throws {ModelRouterError} If not initialized.
|
|
43
|
+
*/
|
|
44
|
+
ensureInitialized() {
|
|
45
|
+
if (!this.isInitialized) {
|
|
46
|
+
throw new ModelRouterError('ModelRouter is not initialized. Call initialize() first.', 'NOT_INITIALIZED');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** @inheritdoc */
|
|
50
|
+
async initialize(config, // Using the more specific ModelRouterConfig
|
|
51
|
+
providerManager,
|
|
52
|
+
// PromptEngine is not used by this rule-based router implementation, but kept for interface compliance if needed elsewhere.
|
|
53
|
+
_promptEngine) {
|
|
54
|
+
if (!config) {
|
|
55
|
+
throw new ModelRouterError("Configuration object is required for ModelRouter initialization.", 'INIT_CONFIG_MISSING');
|
|
56
|
+
}
|
|
57
|
+
if (!config.rules || !Array.isArray(config.rules)) {
|
|
58
|
+
throw new ModelRouterError("Configuration 'rules' array is required.", 'INIT_RULES_MISSING');
|
|
59
|
+
}
|
|
60
|
+
if (!config.defaultProviderId || !config.defaultModelId) {
|
|
61
|
+
throw new ModelRouterError("Configuration requires 'defaultProviderId' and 'defaultModelId'.", 'INIT_DEFAULTS_MISSING');
|
|
62
|
+
}
|
|
63
|
+
if (!providerManager) {
|
|
64
|
+
throw new ModelRouterError('AIModelProviderManager instance is required for ModelRouter initialization.', 'INIT_PROVIDER_MANAGER_MISSING');
|
|
65
|
+
}
|
|
66
|
+
this.config = {
|
|
67
|
+
...config,
|
|
68
|
+
rules: [...config.rules].sort((a, b) => (a.priority || 0) - (b.priority || 0)), // Sort rules by priority
|
|
69
|
+
customConditionEvaluators: config.customConditionEvaluators || {},
|
|
70
|
+
defaultReasoning: config.defaultReasoning || 'Default model selection as no specific rules matched.',
|
|
71
|
+
};
|
|
72
|
+
this.providerManager = providerManager;
|
|
73
|
+
this.isInitialized = true;
|
|
74
|
+
console.log(`ModelRouter (${this.routerId}) initialized with ${this.config.rules.length} rules.`);
|
|
75
|
+
}
|
|
76
|
+
/** @inheritdoc */
|
|
77
|
+
async selectModel(params, availableModels // Router can use this or fetch its own
|
|
78
|
+
) {
|
|
79
|
+
this.ensureInitialized();
|
|
80
|
+
const allKnownModels = availableModels || await this.providerManager.listAllAvailableModels();
|
|
81
|
+
if (allKnownModels.length === 0) {
|
|
82
|
+
console.warn("ModelRouter: No models available from AIModelProviderManager. Cannot route.");
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const contextQuery = params.query?.toLowerCase() || '';
|
|
86
|
+
const contextTaskHint = params.taskHint?.toLowerCase() || '';
|
|
87
|
+
const combinedSearchText = `${contextQuery} ${contextTaskHint}`.trim();
|
|
88
|
+
for (const rule of this.config.rules) {
|
|
89
|
+
let conditionsMet = true;
|
|
90
|
+
// Check queryOrTaskHintContains
|
|
91
|
+
if (rule.conditions.queryOrTaskHintContains) {
|
|
92
|
+
if (!combinedSearchText || !rule.conditions.queryOrTaskHintContains.some(keyword => combinedSearchText.includes(keyword.toLowerCase()))) {
|
|
93
|
+
conditionsMet = false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Check requestingAgentId
|
|
97
|
+
if (conditionsMet && rule.conditions.requestingAgentId && rule.conditions.requestingAgentId !== params.requestingAgentId) {
|
|
98
|
+
conditionsMet = false;
|
|
99
|
+
}
|
|
100
|
+
// Check personaId
|
|
101
|
+
if (conditionsMet && rule.conditions.personaId && rule.conditions.personaId !== params.personaId) {
|
|
102
|
+
conditionsMet = false;
|
|
103
|
+
}
|
|
104
|
+
// Check optimizationPreference
|
|
105
|
+
if (conditionsMet && rule.conditions.optimizationPreference && rule.conditions.optimizationPreference !== params.optimizationPreference) {
|
|
106
|
+
conditionsMet = false;
|
|
107
|
+
}
|
|
108
|
+
// Check language
|
|
109
|
+
if (conditionsMet && rule.conditions.language && rule.conditions.language.toLowerCase() !== params.language?.toLowerCase()) {
|
|
110
|
+
conditionsMet = false;
|
|
111
|
+
}
|
|
112
|
+
// If basic conditions met, fetch target model info to check capabilities
|
|
113
|
+
let targetModelInfo;
|
|
114
|
+
if (conditionsMet) {
|
|
115
|
+
targetModelInfo = allKnownModels.find(m => m.modelId === rule.action.modelId && m.providerId === rule.action.providerId);
|
|
116
|
+
if (!targetModelInfo) {
|
|
117
|
+
conditionsMet = false; // Target model specified in rule not found/available
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Check requiredCapabilities against the targetModelInfo
|
|
121
|
+
if (conditionsMet && targetModelInfo && rule.conditions.requiredCapabilities) {
|
|
122
|
+
if (!rule.conditions.requiredCapabilities.every(reqCap => targetModelInfo.capabilities.includes(reqCap))) {
|
|
123
|
+
conditionsMet = false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Check customCondition
|
|
127
|
+
if (conditionsMet && rule.conditions.customCondition) {
|
|
128
|
+
const evaluator = this.config.customConditionEvaluators[rule.conditions.customCondition];
|
|
129
|
+
if (evaluator) {
|
|
130
|
+
try {
|
|
131
|
+
if (!(await evaluator(params, rule.conditions.customConditionParams || {}))) {
|
|
132
|
+
conditionsMet = false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (evalError) {
|
|
136
|
+
console.error(`ModelRouter: Error evaluating custom condition '${rule.conditions.customCondition}' for rule '${rule.id}':`, evalError);
|
|
137
|
+
conditionsMet = false; // Treat evaluation error as condition not met
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.warn(`ModelRouter: Custom condition evaluator '${rule.conditions.customCondition}' not found for rule '${rule.id}'. Rule skipped.`);
|
|
142
|
+
conditionsMet = false; // Skip rule if evaluator is missing
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (conditionsMet && targetModelInfo) {
|
|
146
|
+
const provider = this.providerManager.getProvider(targetModelInfo.providerId);
|
|
147
|
+
if (provider?.isInitialized) {
|
|
148
|
+
console.log(`ModelRouter (${this.routerId}): Rule '${rule.id}' matched. Selecting model '${targetModelInfo.modelId}' on provider '${targetModelInfo.providerId}'.`);
|
|
149
|
+
return {
|
|
150
|
+
provider: provider,
|
|
151
|
+
modelId: targetModelInfo.modelId,
|
|
152
|
+
modelInfo: targetModelInfo,
|
|
153
|
+
reasoning: rule.action.reasoning || rule.description || `Matched rule '${rule.id}'`,
|
|
154
|
+
estimatedCostTier: rule.action.estimatedCostTier,
|
|
155
|
+
confidence: 0.9, // High confidence for explicit rule match
|
|
156
|
+
metadata: { matchedRuleId: rule.id, source: this.routerId },
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.warn(`ModelRouter (${this.routerId}): Rule '${rule.id}' matched, but provider '${targetModelInfo.providerId}' for model '${targetModelInfo.modelId}' is not available or initialized.`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// If no rules matched, use defaults
|
|
165
|
+
const defaultProvider = this.providerManager.getProvider(this.config.defaultProviderId);
|
|
166
|
+
if (defaultProvider?.isInitialized) {
|
|
167
|
+
const defaultModelInfo = allKnownModels.find(m => m.modelId === this.config.defaultModelId && m.providerId === this.config.defaultProviderId);
|
|
168
|
+
if (defaultModelInfo) {
|
|
169
|
+
console.log(`ModelRouter (${this.routerId}): No specific rules matched. Using default model '${defaultModelInfo.modelId}' on provider '${defaultModelInfo.providerId}'.`);
|
|
170
|
+
return {
|
|
171
|
+
provider: defaultProvider,
|
|
172
|
+
modelId: defaultModelInfo.modelId,
|
|
173
|
+
modelInfo: defaultModelInfo,
|
|
174
|
+
reasoning: this.config.defaultReasoning,
|
|
175
|
+
confidence: 0.5, // Lower confidence for default
|
|
176
|
+
metadata: { usingDefaults: true, source: this.routerId },
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
console.warn(`ModelRouter (${this.routerId}): Default model '${this.config.defaultModelId}' on provider '${this.config.defaultProviderId}' not found in available models.`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
console.warn(`ModelRouter (${this.routerId}): Default provider '${this.config.defaultProviderId}' not found or not initialized.`);
|
|
185
|
+
}
|
|
186
|
+
console.error(`ModelRouter (${this.routerId}): No rules matched AND default model/provider configuration is invalid or unavailable. Cannot select a model.`);
|
|
187
|
+
return null; // No model could be selected
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=ModelRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelRouter.js","sourceRoot":"","sources":["../../../../src/core/llm/routing/ModelRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Backpressure batching wrapper for provider streaming chunks (`ModelCompletionResponse`).
|
|
3
|
+
* Combines small, high-frequency deltas into larger aggregated chunks to reduce downstream
|
|
4
|
+
* dispatch overhead (websocket emissions, DOM updates, etc.) while preserving core invariants:
|
|
5
|
+
* - Text remains append-only (merged into a single `responseTextDelta` per batch).
|
|
6
|
+
* - Tool/function argument deltas merged per (choiceIndex, toolCallId) into single consolidated delta.
|
|
7
|
+
* - Exactly one terminal chunk with `isFinal: true` (forwarded from original final chunk).
|
|
8
|
+
* - Usage & error surfaced only when FINAL chunk encountered (or if intermediate provider error semantics change).
|
|
9
|
+
*
|
|
10
|
+
* Flush Triggers (any):
|
|
11
|
+
* 1. Latency: maxLatencyMs elapsed since first unflushed chunk arrival.
|
|
12
|
+
* 2. Size: accumulated text delta length >= maxTextDeltaChars.
|
|
13
|
+
* 3. Chunk Count: buffer size >= maxChunksPerBatch.
|
|
14
|
+
* 4. Explicit final provider chunk.
|
|
15
|
+
* 5. Manual tool argument size threshold (maxToolArgumentChars) exceeded.
|
|
16
|
+
*
|
|
17
|
+
* Design Choices:
|
|
18
|
+
* - Aggregated batch `id` composed from first chunk id + suffix `-batch-{sequence}` for traceability.
|
|
19
|
+
* - `choices` taken verbatim from first chunk in batch (providers do not mutate choice metadata mid-stream except deltas).
|
|
20
|
+
* - Non-final batches omit `usage` & `error` to keep semantics consistent. (If provider emits an error chunk mid-stream
|
|
21
|
+
* with `isFinal: true`, it will be flushed immediately as its own batch.)
|
|
22
|
+
* - Tool call reconstruction at batch granularity only (full stream reconstruction still delegated to `StreamingReconstructor`).
|
|
23
|
+
*
|
|
24
|
+
* NOTE: This is an optional optimization layer. Consumers requiring raw per-token latency should bypass batching.
|
|
25
|
+
*/
|
|
26
|
+
import { ModelCompletionResponse } from '../providers/IProvider';
|
|
27
|
+
/** Configuration options for StreamingBatcher. */
|
|
28
|
+
export interface StreamingBatcherOptions {
|
|
29
|
+
/** Max wall-clock latency before forcing a flush (milliseconds). */
|
|
30
|
+
maxLatencyMs?: number;
|
|
31
|
+
/** Max accumulated text delta characters before flush. */
|
|
32
|
+
maxTextDeltaChars?: number;
|
|
33
|
+
/** Max accumulated tool argument characters (combined per tool call) before flush. */
|
|
34
|
+
maxToolArgumentChars?: number;
|
|
35
|
+
/** Max number of provider chunks to accumulate before flush. */
|
|
36
|
+
maxChunksPerBatch?: number;
|
|
37
|
+
/** If true, include batchSequence on emitted chunk object for diagnostics. */
|
|
38
|
+
annotateBatches?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Batches an async stream of `ModelCompletionResponse` chunks according to `StreamingBatcherOptions`.
|
|
42
|
+
* @param stream Underlying provider async generator.
|
|
43
|
+
* @param options Optional batching thresholds.
|
|
44
|
+
* @returns AsyncGenerator<ModelCompletionResponse>
|
|
45
|
+
*/
|
|
46
|
+
export declare function batchStream(stream: AsyncGenerator<ModelCompletionResponse, void, undefined>, options?: StreamingBatcherOptions): AsyncGenerator<ModelCompletionResponse, void, undefined>;
|
|
47
|
+
/** Convenience OO wrapper for imperative control (mirrors functional batchStream). */
|
|
48
|
+
export declare class StreamingBatcher {
|
|
49
|
+
private opts;
|
|
50
|
+
constructor(options?: StreamingBatcherOptions);
|
|
51
|
+
batch(stream: AsyncGenerator<ModelCompletionResponse, void, undefined>): AsyncGenerator<ModelCompletionResponse, void, undefined>;
|
|
52
|
+
}
|
|
53
|
+
export default StreamingBatcher;
|
|
54
|
+
//# sourceMappingURL=StreamingBatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingBatcher.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/streaming/StreamingBatcher.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,kDAAkD;AAClD,MAAM,WAAW,uBAAuB;IACtC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAmGD;;;;;GAKG;AACH,wBAAuB,WAAW,CAChC,MAAM,EAAE,cAAc,CAAC,uBAAuB,EAAE,IAAI,EAAE,SAAS,CAAC,EAChE,OAAO,GAAE,uBAA4B,GACpC,cAAc,CAAC,uBAAuB,EAAE,IAAI,EAAE,SAAS,CAAC,CA0E1D;AAED,sFAAsF;AACtF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAoC;gBACpC,OAAO,GAAE,uBAA4B;IAGjD,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,uBAAuB,EAAE,IAAI,EAAE,SAAS,CAAC;CAGvE;AAED,eAAe,gBAAgB,CAAC"}
|