@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,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Implements the StreamingManager, a core component responsible for
|
|
3
|
+
* managing real-time data streams within AgentOS. It handles the lifecycle of streams,
|
|
4
|
+
* registration of clients to streams, and distribution of data chunks to subscribed clients.
|
|
5
|
+
* This manager is designed for robustness, scalability (conceptual), and clear error handling.
|
|
6
|
+
*
|
|
7
|
+
* @module backend/core/streaming/StreamingManager
|
|
8
|
+
* @see ./IStreamClient.ts For the client contract.
|
|
9
|
+
* @see ../../api/types/AgentOSResponse.ts For the data chunk structure.
|
|
10
|
+
*/
|
|
11
|
+
import { AgentOSResponse } from '../../api/types/AgentOSResponse';
|
|
12
|
+
import { IStreamClient, StreamClientId } from './IStreamClient';
|
|
13
|
+
import { GMIError, GMIErrorCode } from '../../utils/errors';
|
|
14
|
+
/**
|
|
15
|
+
* Represents a unique identifier for a data stream.
|
|
16
|
+
* @typedef {string} StreamId
|
|
17
|
+
*/
|
|
18
|
+
export type StreamId = string;
|
|
19
|
+
/**
|
|
20
|
+
* Configuration options for the StreamingManager.
|
|
21
|
+
* @interface StreamingManagerConfig
|
|
22
|
+
*/
|
|
23
|
+
export interface StreamingManagerConfig {
|
|
24
|
+
/**
|
|
25
|
+
* Maximum number of concurrent active streams allowed.
|
|
26
|
+
* If set to 0 or a negative number, it implies no limit (not recommended for production).
|
|
27
|
+
* @type {number}
|
|
28
|
+
* @default 1000
|
|
29
|
+
*/
|
|
30
|
+
maxConcurrentStreams?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Default timeout in milliseconds for a stream if no activity is detected.
|
|
33
|
+
* If set to 0, streams do not time out automatically. (Conceptual, requires active tracking)
|
|
34
|
+
* @type {number}
|
|
35
|
+
* @default 300000 (5 minutes)
|
|
36
|
+
*/
|
|
37
|
+
defaultStreamInactivityTimeoutMs?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Maximum number of clients allowed to subscribe to a single stream.
|
|
40
|
+
* If set to 0 or a negative number, it implies no limit.
|
|
41
|
+
* @type {number}
|
|
42
|
+
* @default 10
|
|
43
|
+
*/
|
|
44
|
+
maxClientsPerStream?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Optional: Defines the behavior when trying to push a chunk to a client whose `sendChunk` method fails.
|
|
47
|
+
* - 'log_and_continue': Logs the error and continues sending to other clients. (Default)
|
|
48
|
+
* - 'deregister_client': Logs the error, attempts to deregister the failing client, and continues.
|
|
49
|
+
* - 'throw': Throws an error, potentially stopping the push operation for the current chunk to other clients.
|
|
50
|
+
* @type {'log_and_continue' | 'deregister_client' | 'throw'}
|
|
51
|
+
* @default 'log_and_continue'
|
|
52
|
+
*/
|
|
53
|
+
onClientSendErrorBehavior?: 'log_and_continue' | 'deregister_client' | 'throw';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Custom error class for errors originating from the StreamingManager.
|
|
57
|
+
* @class StreamError
|
|
58
|
+
* @extends {GMIError}
|
|
59
|
+
*/
|
|
60
|
+
export declare class StreamError extends GMIError {
|
|
61
|
+
/**
|
|
62
|
+
* The ID of the stream involved in the error, if applicable.
|
|
63
|
+
* @public
|
|
64
|
+
* @readonly
|
|
65
|
+
* @type {StreamId | undefined}
|
|
66
|
+
*/
|
|
67
|
+
readonly streamId?: StreamId;
|
|
68
|
+
/**
|
|
69
|
+
* The ID of the client involved in the error, if applicable.
|
|
70
|
+
* @public
|
|
71
|
+
* @readonly
|
|
72
|
+
* @type {StreamClientId | undefined}
|
|
73
|
+
*/
|
|
74
|
+
readonly clientId?: StreamClientId;
|
|
75
|
+
/**
|
|
76
|
+
* Creates an instance of StreamError.
|
|
77
|
+
* @param {string} message - The human-readable error message.
|
|
78
|
+
* @param {GMIErrorCode | string} code - A specific error code (can be from GMIErrorCode or custom).
|
|
79
|
+
* @param {StreamId} [streamId] - The ID of the stream involved.
|
|
80
|
+
* @param {StreamClientId} [clientId] - The ID of the client involved.
|
|
81
|
+
* @param {any} [details] - Optional additional context or the underlying error.
|
|
82
|
+
*/
|
|
83
|
+
constructor(message: string, code: GMIErrorCode | string, streamId?: StreamId, clientId?: StreamClientId, details?: any);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* @interface IStreamingManager
|
|
87
|
+
* @description Defines the contract for the StreamingManager service.
|
|
88
|
+
* This service is responsible for creating, managing, and terminating data streams,
|
|
89
|
+
* as well as handling client subscriptions and data distribution.
|
|
90
|
+
*/
|
|
91
|
+
export interface IStreamingManager {
|
|
92
|
+
/**
|
|
93
|
+
* Initializes the StreamingManager with its configuration.
|
|
94
|
+
* This method must be called successfully before any other operations.
|
|
95
|
+
*
|
|
96
|
+
* @public
|
|
97
|
+
* @async
|
|
98
|
+
* @param {StreamingManagerConfig} config - The configuration for the manager.
|
|
99
|
+
* @returns {Promise<void>} A promise that resolves upon successful initialization.
|
|
100
|
+
* @throws {GMIError} If configuration is invalid or initialization fails.
|
|
101
|
+
*/
|
|
102
|
+
initialize(config: StreamingManagerConfig): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Creates a new data stream and returns its unique ID.
|
|
105
|
+
*
|
|
106
|
+
* @public
|
|
107
|
+
* @param {StreamId} [requestedStreamId] - Optional. If provided, attempts to use this ID.
|
|
108
|
+
* If not provided or if the ID already exists, a new unique ID will be generated.
|
|
109
|
+
* @returns {Promise<StreamId>} A promise resolving to the unique ID of the created stream.
|
|
110
|
+
* @throws {StreamError} If the maximum number of concurrent streams is reached,
|
|
111
|
+
* or if a `requestedStreamId` is provided but already in use (and regeneration is not supported/fails).
|
|
112
|
+
*/
|
|
113
|
+
createStream(requestedStreamId?: StreamId): Promise<StreamId>;
|
|
114
|
+
/**
|
|
115
|
+
* Registers a client to a specific stream to receive data chunks.
|
|
116
|
+
*
|
|
117
|
+
* @public
|
|
118
|
+
* @async
|
|
119
|
+
* @param {StreamId} streamId - The ID of the stream to subscribe to.
|
|
120
|
+
* @param {IStreamClient} client - The client instance that implements `IStreamClient`.
|
|
121
|
+
* @returns {Promise<void>} A promise that resolves when the client is successfully registered.
|
|
122
|
+
* @throws {StreamError} If the stream does not exist, if the client is already registered,
|
|
123
|
+
* or if the maximum number of clients for the stream is reached.
|
|
124
|
+
*/
|
|
125
|
+
registerClient(streamId: StreamId, client: IStreamClient): Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* Deregisters a client from a specific stream.
|
|
128
|
+
* The client will no longer receive data chunks for this stream.
|
|
129
|
+
*
|
|
130
|
+
* @public
|
|
131
|
+
* @async
|
|
132
|
+
* @param {StreamId} streamId - The ID of the stream to unsubscribe from.
|
|
133
|
+
* @param {StreamClientId} clientId - The ID of the client to deregister.
|
|
134
|
+
* @returns {Promise<void>} A promise that resolves when the client is successfully deregistered.
|
|
135
|
+
* @throws {StreamError} If the stream or client does not exist within that stream.
|
|
136
|
+
*/
|
|
137
|
+
deregisterClient(streamId: StreamId, clientId: StreamClientId): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Pushes a data chunk to all clients currently subscribed to the specified stream.
|
|
140
|
+
*
|
|
141
|
+
* @public
|
|
142
|
+
* @async
|
|
143
|
+
* @param {StreamId} streamId - The ID of the stream to push data to.
|
|
144
|
+
* @param {AgentOSResponse} chunk - The data chunk to distribute.
|
|
145
|
+
* @returns {Promise<void>} A promise that resolves when the chunk has been pushed to all
|
|
146
|
+
* active clients of the stream (or attempted, based on `onClientSendErrorBehavior`).
|
|
147
|
+
* @throws {StreamError} If the stream does not exist, or if `onClientSendErrorBehavior` is 'throw'
|
|
148
|
+
* and a client send fails.
|
|
149
|
+
*/
|
|
150
|
+
pushChunk(streamId: StreamId, chunk: AgentOSResponse): Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* Closes a specific stream. All subscribed clients will be notified and subsequently deregistered.
|
|
153
|
+
* No further data can be pushed to a closed stream.
|
|
154
|
+
*
|
|
155
|
+
* @public
|
|
156
|
+
* @async
|
|
157
|
+
* @param {StreamId} streamId - The ID of the stream to close.
|
|
158
|
+
* @param {string} [reason] - An optional reason for closing the stream.
|
|
159
|
+
* @returns {Promise<void>} A promise that resolves when the stream is closed and clients are notified.
|
|
160
|
+
* @throws {StreamError} If the stream does not exist.
|
|
161
|
+
*/
|
|
162
|
+
closeStream(streamId: StreamId, reason?: string): Promise<void>;
|
|
163
|
+
/**
|
|
164
|
+
* Handles an error that occurred on a specific stream.
|
|
165
|
+
* This might involve notifying clients with an error chunk and/or closing the stream.
|
|
166
|
+
*
|
|
167
|
+
* @public
|
|
168
|
+
* @async
|
|
169
|
+
* @param {StreamId} streamId - The ID of the stream where the error occurred.
|
|
170
|
+
* @param {Error} error - The error object.
|
|
171
|
+
* @param {boolean} [terminateStream=true] - If true, the stream will be closed after processing the error.
|
|
172
|
+
* @returns {Promise<void>} A promise that resolves when the error has been handled.
|
|
173
|
+
* @throws {StreamError} If the stream does not exist.
|
|
174
|
+
*/
|
|
175
|
+
handleStreamError(streamId: StreamId, error: Error, terminateStream?: boolean): Promise<void>;
|
|
176
|
+
/**
|
|
177
|
+
* Retrieves a list of IDs for all currently active streams.
|
|
178
|
+
*
|
|
179
|
+
* @public
|
|
180
|
+
* @returns {Promise<StreamId[]>} A promise resolving to an array of active stream IDs.
|
|
181
|
+
*/
|
|
182
|
+
getActiveStreamIds(): Promise<StreamId[]>;
|
|
183
|
+
/**
|
|
184
|
+
* Retrieves the number of clients currently subscribed to a specific stream.
|
|
185
|
+
*
|
|
186
|
+
* @public
|
|
187
|
+
* @async
|
|
188
|
+
* @param {StreamId} streamId - The ID of the stream.
|
|
189
|
+
* @returns {Promise<number>} A promise resolving to the number of clients.
|
|
190
|
+
* @throws {StreamError} If the stream does not exist.
|
|
191
|
+
*/
|
|
192
|
+
getClientCountForStream(streamId: StreamId): Promise<number>;
|
|
193
|
+
/**
|
|
194
|
+
* Gracefully shuts down the StreamingManager, closing all active streams
|
|
195
|
+
* and releasing any resources.
|
|
196
|
+
*
|
|
197
|
+
* @public
|
|
198
|
+
* @async
|
|
199
|
+
* @returns {Promise<void>} A promise that resolves when shutdown is complete.
|
|
200
|
+
*/
|
|
201
|
+
shutdown(): Promise<void>;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* @class StreamingManager
|
|
205
|
+
* @implements {IStreamingManager}
|
|
206
|
+
* Manages real-time data streams for AgentOS, handling client subscriptions
|
|
207
|
+
* and chunk distribution.
|
|
208
|
+
*/
|
|
209
|
+
export declare class StreamingManager implements IStreamingManager {
|
|
210
|
+
private config;
|
|
211
|
+
private activeStreams;
|
|
212
|
+
private isInitialized;
|
|
213
|
+
readonly managerId: string;
|
|
214
|
+
constructor();
|
|
215
|
+
/** @inheritdoc */
|
|
216
|
+
initialize(config: StreamingManagerConfig): Promise<void>;
|
|
217
|
+
/**
|
|
218
|
+
* Ensures the manager has been properly initialized before any operations.
|
|
219
|
+
* @private
|
|
220
|
+
* @throws {StreamError} If the engine is not initialized.
|
|
221
|
+
*/
|
|
222
|
+
private ensureInitialized;
|
|
223
|
+
/** @inheritdoc */
|
|
224
|
+
createStream(requestedStreamId?: StreamId): Promise<StreamId>;
|
|
225
|
+
/** @inheritdoc */
|
|
226
|
+
registerClient(streamId: StreamId, client: IStreamClient): Promise<void>;
|
|
227
|
+
/** @inheritdoc */
|
|
228
|
+
deregisterClient(streamId: StreamId, clientId: StreamClientId): Promise<void>;
|
|
229
|
+
/** @inheritdoc */
|
|
230
|
+
pushChunk(streamId: StreamId, chunk: AgentOSResponse): Promise<void>;
|
|
231
|
+
/** @inheritdoc */
|
|
232
|
+
closeStream(streamId: StreamId, reason?: string): Promise<void>;
|
|
233
|
+
/** @inheritdoc */
|
|
234
|
+
handleStreamError(streamId: StreamId, error: Error, terminateStream?: boolean): Promise<void>;
|
|
235
|
+
/** @inheritdoc */
|
|
236
|
+
getActiveStreamIds(): Promise<StreamId[]>;
|
|
237
|
+
/** @inheritdoc */
|
|
238
|
+
getClientCountForStream(streamId: StreamId): Promise<number>;
|
|
239
|
+
/** @inheritdoc */
|
|
240
|
+
shutdown(isReinitializing?: boolean): Promise<void>;
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=StreamingManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingManager.d.ts","sourceRoot":"","sources":["../../../src/core/streaming/StreamingManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
// File: src/core/streaming/StreamingManager.ts
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Implements the StreamingManager, a core component responsible for
|
|
4
|
+
* managing real-time data streams within AgentOS. It handles the lifecycle of streams,
|
|
5
|
+
* registration of clients to streams, and distribution of data chunks to subscribed clients.
|
|
6
|
+
* This manager is designed for robustness, scalability (conceptual), and clear error handling.
|
|
7
|
+
*
|
|
8
|
+
* @module backend/core/streaming/StreamingManager
|
|
9
|
+
* @see ./IStreamClient.ts For the client contract.
|
|
10
|
+
* @see ../../api/types/AgentOSResponse.ts For the data chunk structure.
|
|
11
|
+
*/
|
|
12
|
+
import { uuidv4 } from '../../utils/uuid.js';
|
|
13
|
+
import { AgentOSResponseChunkType } from '../../api/types/AgentOSResponse.js';
|
|
14
|
+
import { GMIError, GMIErrorCode } from '../../utils/errors.js'; // Corrected path
|
|
15
|
+
/**
|
|
16
|
+
* Custom error class for errors originating from the StreamingManager.
|
|
17
|
+
* @class StreamError
|
|
18
|
+
* @extends {GMIError}
|
|
19
|
+
*/
|
|
20
|
+
export class StreamError extends GMIError {
|
|
21
|
+
/**
|
|
22
|
+
* Creates an instance of StreamError.
|
|
23
|
+
* @param {string} message - The human-readable error message.
|
|
24
|
+
* @param {GMIErrorCode | string} code - A specific error code (can be from GMIErrorCode or custom).
|
|
25
|
+
* @param {StreamId} [streamId] - The ID of the stream involved.
|
|
26
|
+
* @param {StreamClientId} [clientId] - The ID of the client involved.
|
|
27
|
+
* @param {any} [details] - Optional additional context or the underlying error.
|
|
28
|
+
*/
|
|
29
|
+
constructor(message, code, streamId, clientId, details) {
|
|
30
|
+
super(message, code, details);
|
|
31
|
+
this.name = 'StreamError'; // This is standard for custom errors extending Error
|
|
32
|
+
this.streamId = streamId;
|
|
33
|
+
this.clientId = clientId;
|
|
34
|
+
Object.setPrototypeOf(this, StreamError.prototype);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @class StreamingManager
|
|
39
|
+
* @implements {IStreamingManager}
|
|
40
|
+
* Manages real-time data streams for AgentOS, handling client subscriptions
|
|
41
|
+
* and chunk distribution.
|
|
42
|
+
*/
|
|
43
|
+
export class StreamingManager {
|
|
44
|
+
constructor() {
|
|
45
|
+
this.isInitialized = false;
|
|
46
|
+
this.managerId = `streaming-mgr-${uuidv4()}`;
|
|
47
|
+
this.activeStreams = new Map();
|
|
48
|
+
}
|
|
49
|
+
/** @inheritdoc */
|
|
50
|
+
async initialize(config) {
|
|
51
|
+
if (this.isInitialized) {
|
|
52
|
+
console.warn(`StreamingManager (ID: ${this.managerId}) already initialized. Re-initializing.`);
|
|
53
|
+
await this.shutdown(true);
|
|
54
|
+
}
|
|
55
|
+
this.config = Object.freeze({
|
|
56
|
+
maxConcurrentStreams: config.maxConcurrentStreams === undefined || config.maxConcurrentStreams <= 0 ? Infinity : config.maxConcurrentStreams,
|
|
57
|
+
defaultStreamInactivityTimeoutMs: config.defaultStreamInactivityTimeoutMs === undefined ? 300000 : config.defaultStreamInactivityTimeoutMs,
|
|
58
|
+
maxClientsPerStream: config.maxClientsPerStream === undefined || config.maxClientsPerStream <= 0 ? Infinity : config.maxClientsPerStream,
|
|
59
|
+
onClientSendErrorBehavior: config.onClientSendErrorBehavior || 'log_and_continue',
|
|
60
|
+
});
|
|
61
|
+
this.isInitialized = true;
|
|
62
|
+
console.log(`StreamingManager (ID: ${this.managerId}) initialized. Config:`, JSON.stringify(this.config));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Ensures the manager has been properly initialized before any operations.
|
|
66
|
+
* @private
|
|
67
|
+
* @throws {StreamError} If the engine is not initialized.
|
|
68
|
+
*/
|
|
69
|
+
ensureInitialized() {
|
|
70
|
+
if (!this.isInitialized) {
|
|
71
|
+
throw new StreamError(`StreamingManager (ID: ${this.managerId}) is not initialized. Call initialize() first.`, GMIErrorCode.NOT_INITIALIZED);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** @inheritdoc */
|
|
75
|
+
async createStream(requestedStreamId) {
|
|
76
|
+
this.ensureInitialized();
|
|
77
|
+
if (this.activeStreams.size >= this.config.maxConcurrentStreams) {
|
|
78
|
+
throw new StreamError('Maximum number of concurrent streams reached.', GMIErrorCode.RATE_LIMIT_EXCEEDED, undefined, undefined, { maxStreams: this.config.maxConcurrentStreams });
|
|
79
|
+
}
|
|
80
|
+
let streamId = requestedStreamId || uuidv4();
|
|
81
|
+
if (this.activeStreams.has(streamId)) {
|
|
82
|
+
if (requestedStreamId) {
|
|
83
|
+
throw new StreamError(`Stream with requested ID '${streamId}' already exists.`, GMIErrorCode.RESOURCE_ALREADY_EXISTS, streamId);
|
|
84
|
+
}
|
|
85
|
+
streamId = uuidv4();
|
|
86
|
+
}
|
|
87
|
+
const now = Date.now();
|
|
88
|
+
const newStream = {
|
|
89
|
+
id: streamId,
|
|
90
|
+
clients: new Map(),
|
|
91
|
+
createdAt: now,
|
|
92
|
+
lastActivityAt: now,
|
|
93
|
+
metadata: {}, // Initialize empty metadata
|
|
94
|
+
};
|
|
95
|
+
this.activeStreams.set(streamId, newStream);
|
|
96
|
+
console.log(`StreamingManager (ID: ${this.managerId}): Stream '${streamId}' created.`);
|
|
97
|
+
return streamId;
|
|
98
|
+
}
|
|
99
|
+
/** @inheritdoc */
|
|
100
|
+
async registerClient(streamId, client) {
|
|
101
|
+
this.ensureInitialized();
|
|
102
|
+
const stream = this.activeStreams.get(streamId);
|
|
103
|
+
if (!stream) {
|
|
104
|
+
throw new StreamError(`Stream with ID '${streamId}' not found. Cannot register client.`, GMIErrorCode.RESOURCE_NOT_FOUND, streamId);
|
|
105
|
+
}
|
|
106
|
+
if (stream.clients.has(client.id)) {
|
|
107
|
+
console.warn(`StreamingManager (ID: ${this.managerId}): Client '${client.id}' is already registered to stream '${streamId}'. Ignoring.`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (stream.clients.size >= this.config.maxClientsPerStream) {
|
|
111
|
+
throw new StreamError(`Maximum number of clients reached for stream '${streamId}'.`, GMIErrorCode.RATE_LIMIT_EXCEEDED, streamId, client.id, { maxClients: this.config.maxClientsPerStream });
|
|
112
|
+
}
|
|
113
|
+
stream.clients.set(client.id, client);
|
|
114
|
+
stream.lastActivityAt = Date.now();
|
|
115
|
+
console.log(`StreamingManager (ID: ${this.managerId}): Client '${client.id}' registered to stream '${streamId}'. Total clients: ${stream.clients.size}.`);
|
|
116
|
+
}
|
|
117
|
+
/** @inheritdoc */
|
|
118
|
+
async deregisterClient(streamId, clientId) {
|
|
119
|
+
this.ensureInitialized();
|
|
120
|
+
const stream = this.activeStreams.get(streamId);
|
|
121
|
+
if (!stream) {
|
|
122
|
+
console.warn(`StreamingManager (ID: ${this.managerId}): Stream '${streamId}' not found during deregisterClient for client '${clientId}'. Client is effectively deregistered.`);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (!stream.clients.has(clientId)) {
|
|
126
|
+
console.warn(`StreamingManager (ID: ${this.managerId}): Client '${clientId}' not found in stream '${streamId}' during deregistration attempt.`);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const clientInstance = stream.clients.get(clientId);
|
|
130
|
+
stream.clients.delete(clientId);
|
|
131
|
+
stream.lastActivityAt = Date.now();
|
|
132
|
+
console.log(`StreamingManager (ID: ${this.managerId}): Client '${clientId}' deregistered from stream '${streamId}'. Remaining clients: ${stream.clients.size}.`);
|
|
133
|
+
if (clientInstance?.close && typeof clientInstance.close === 'function') {
|
|
134
|
+
try {
|
|
135
|
+
await clientInstance.close('Deregistered by StreamingManager.');
|
|
136
|
+
}
|
|
137
|
+
catch (closeError) {
|
|
138
|
+
console.error(`StreamingManager (ID: ${this.managerId}): Error closing client '${clientId}' during deregistration: ${closeError.message}`, closeError);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** @inheritdoc */
|
|
143
|
+
async pushChunk(streamId, chunk) {
|
|
144
|
+
this.ensureInitialized();
|
|
145
|
+
const stream = this.activeStreams.get(streamId);
|
|
146
|
+
if (!stream) {
|
|
147
|
+
console.warn(`StreamingManager (ID: ${this.managerId}): Attempted to push chunk to closed/non-existent stream '${streamId}'. Chunk type=${chunk.type}.`);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
stream.lastActivityAt = Date.now();
|
|
151
|
+
// Update stream metadata if chunk contains relevant info (e.g., GMI instance ID)
|
|
152
|
+
if (chunk.gmiInstanceId && stream.metadata && !stream.metadata.gmiInstanceId) {
|
|
153
|
+
stream.metadata.gmiInstanceId = chunk.gmiInstanceId;
|
|
154
|
+
}
|
|
155
|
+
if (chunk.personaId && stream.metadata && !stream.metadata.personaId) {
|
|
156
|
+
stream.metadata.personaId = chunk.personaId;
|
|
157
|
+
}
|
|
158
|
+
const deliveryPromises = [];
|
|
159
|
+
const failedClientIds = [];
|
|
160
|
+
for (const [clientId, client] of stream.clients.entries()) {
|
|
161
|
+
if (client.isActive()) {
|
|
162
|
+
const sendPromise = client.sendChunk(chunk)
|
|
163
|
+
.catch(async (error) => {
|
|
164
|
+
console.error(`StreamingManager (ID: ${this.managerId}): Failed to send chunk to client '${clientId}' on stream '${streamId}'. Behavior: '${this.config.onClientSendErrorBehavior}'. Error: ${error.message}`, error);
|
|
165
|
+
failedClientIds.push(clientId);
|
|
166
|
+
if (this.config.onClientSendErrorBehavior === 'throw') {
|
|
167
|
+
throw new StreamError(`Failed to send chunk to client '${clientId}'. Original error: ${error.message}`, GMIErrorCode.STREAM_ERROR, streamId, clientId, error);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
deliveryPromises.push(sendPromise);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
console.warn(`StreamingManager (ID: ${this.managerId}): Client '${clientId}' on stream '${streamId}' is inactive. Marking for potential deregistration.`);
|
|
174
|
+
failedClientIds.push(clientId);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
await Promise.allSettled(deliveryPromises);
|
|
178
|
+
if ((this.config.onClientSendErrorBehavior === 'deregister_client' || this.config.onClientSendErrorBehavior === 'log_and_continue') && failedClientIds.length > 0) {
|
|
179
|
+
for (const clientId of failedClientIds) {
|
|
180
|
+
if (stream.clients.has(clientId)) {
|
|
181
|
+
console.log(`StreamingManager (ID: ${this.managerId}): Deregistering client '${clientId}' from stream '${streamId}' due to send error/inactivity.`);
|
|
182
|
+
await this.deregisterClient(streamId, clientId).catch(deregError => {
|
|
183
|
+
console.error(`StreamingManager (ID: ${this.managerId}): Error auto-deregistering client '${clientId}': ${deregError.message}`, deregError);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/** @inheritdoc */
|
|
190
|
+
async closeStream(streamId, reason) {
|
|
191
|
+
this.ensureInitialized();
|
|
192
|
+
const stream = this.activeStreams.get(streamId);
|
|
193
|
+
if (!stream) {
|
|
194
|
+
console.warn(`StreamingManager (ID: ${this.managerId}): Attempted to close non-existent stream '${streamId}'.`);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
console.log(`StreamingManager (ID: ${this.managerId}): Closing stream '${streamId}'. Reason: ${reason || 'N/A'}. Notifying ${stream.clients.size} clients.`);
|
|
198
|
+
const clientNotificationPromises = [];
|
|
199
|
+
for (const client of stream.clients.values()) {
|
|
200
|
+
clientNotificationPromises.push(client.notifyStreamClosed(reason)
|
|
201
|
+
.catch(error => console.error(`StreamingManager (ID: ${this.managerId}): Error notifying client '${client.id}' about stream '${streamId}' closure: ${error.message}`, error)));
|
|
202
|
+
if (client.close && typeof client.close === 'function') {
|
|
203
|
+
clientNotificationPromises.push(client.close(`Stream '${streamId}' closed: ${reason || 'No reason provided.'}`)
|
|
204
|
+
.catch(closeError => console.error(`StreamingManager (ID: ${this.managerId}): Error closing client connection '${client.id}' for stream '${streamId}': ${closeError.message}`, closeError)));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
await Promise.allSettled(clientNotificationPromises);
|
|
208
|
+
this.activeStreams.delete(streamId);
|
|
209
|
+
console.log(`StreamingManager (ID: ${this.managerId}): Stream '${streamId}' and its client references removed.`);
|
|
210
|
+
}
|
|
211
|
+
/** @inheritdoc */
|
|
212
|
+
async handleStreamError(streamId, error, terminateStream = true) {
|
|
213
|
+
this.ensureInitialized();
|
|
214
|
+
const stream = this.activeStreams.get(streamId);
|
|
215
|
+
if (!stream) {
|
|
216
|
+
console.error(`StreamingManager (ID: ${this.managerId}): Received error for non-existent stream '${streamId}'. Error: ${error.message}`, error);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
console.error(`StreamingManager (ID: ${this.managerId}): Handling error on stream '${streamId}'. Error: ${error.message}. Terminate: ${terminateStream}`, error);
|
|
220
|
+
const errorChunk = {
|
|
221
|
+
type: AgentOSResponseChunkType.ERROR,
|
|
222
|
+
streamId: streamId,
|
|
223
|
+
gmiInstanceId: stream.metadata?.gmiInstanceId || 'unknown_gmi',
|
|
224
|
+
personaId: stream.metadata?.personaId || 'unknown_persona',
|
|
225
|
+
isFinal: true,
|
|
226
|
+
timestamp: new Date().toISOString(),
|
|
227
|
+
// Accessing error.code is fine if error is GMIError, but not if it's a base Error.
|
|
228
|
+
// The type guard correctly handles this.
|
|
229
|
+
code: (error instanceof GMIError) ? error.code : GMIErrorCode.STREAM_ERROR,
|
|
230
|
+
message: error.message,
|
|
231
|
+
// Accessing error.details is fine if error is GMIError.
|
|
232
|
+
// The type guard handles this. The fallback for details for a generic Error is also fine.
|
|
233
|
+
details: (error instanceof GMIError) ? error.details : { name: error.name, stack: error.stack },
|
|
234
|
+
};
|
|
235
|
+
try {
|
|
236
|
+
await this.pushChunk(streamId, errorChunk);
|
|
237
|
+
}
|
|
238
|
+
catch (pushError) {
|
|
239
|
+
console.error(`StreamingManager (ID: ${this.managerId}): Failed to push error chunk to clients of stream '${streamId}'. Push error: ${pushError.message}`, pushError);
|
|
240
|
+
}
|
|
241
|
+
if (terminateStream) {
|
|
242
|
+
await this.closeStream(streamId, `Stream terminated due to error: ${error.message}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/** @inheritdoc */
|
|
246
|
+
async getActiveStreamIds() {
|
|
247
|
+
this.ensureInitialized();
|
|
248
|
+
return Array.from(this.activeStreams.keys());
|
|
249
|
+
}
|
|
250
|
+
/** @inheritdoc */
|
|
251
|
+
async getClientCountForStream(streamId) {
|
|
252
|
+
this.ensureInitialized();
|
|
253
|
+
const stream = this.activeStreams.get(streamId);
|
|
254
|
+
if (!stream) {
|
|
255
|
+
throw new StreamError(`Stream with ID '${streamId}' not found.`, GMIErrorCode.RESOURCE_NOT_FOUND, streamId);
|
|
256
|
+
}
|
|
257
|
+
return stream.clients.size;
|
|
258
|
+
}
|
|
259
|
+
/** @inheritdoc */
|
|
260
|
+
async shutdown(isReinitializing = false) {
|
|
261
|
+
if (!this.isInitialized && !isReinitializing) {
|
|
262
|
+
console.warn(`StreamingManager (ID: ${this.managerId}) shutdown called but was not initialized or already shut down.`);
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
console.log(`StreamingManager (ID: ${this.managerId}): Shutting down... Closing ${this.activeStreams.size} active streams.`);
|
|
266
|
+
const streamIdsToClose = Array.from(this.activeStreams.keys());
|
|
267
|
+
for (const streamId of streamIdsToClose) {
|
|
268
|
+
try {
|
|
269
|
+
await this.closeStream(streamId, 'StreamingManager is shutting down.');
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
console.error(`StreamingManager (ID: ${this.managerId}): Error closing stream '${streamId}' during shutdown: ${error.message}`, error);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
this.activeStreams.clear();
|
|
276
|
+
if (!isReinitializing) {
|
|
277
|
+
this.isInitialized = false;
|
|
278
|
+
}
|
|
279
|
+
console.log(`StreamingManager (ID: ${this.managerId}): Shutdown complete. All streams closed and cache cleared.`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=StreamingManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingManager.js","sourceRoot":"","sources":["../../../src/core/streaming/StreamingManager.ts"],"names":[],"mappings":"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"}
|