@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,783 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file PlanningEngine.ts
|
|
3
|
+
* @description Implementation of the AgentOS Planning Engine.
|
|
4
|
+
* Provides autonomous goal pursuit, task decomposition, and self-correcting plans
|
|
5
|
+
* using ReAct (Reasoning + Acting) and other cognitive patterns.
|
|
6
|
+
*
|
|
7
|
+
* @module AgentOS/Planning
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { PlanningEngine } from '../../core/planning/index.js';
|
|
13
|
+
*
|
|
14
|
+
* const engine = new PlanningEngine({
|
|
15
|
+
* llmProvider: aiModelProviderManager,
|
|
16
|
+
* defaultModelId: 'gpt-4-turbo',
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* const plan = await engine.generatePlan('Build a web scraper', {
|
|
20
|
+
* strategy: 'react',
|
|
21
|
+
* maxSteps: 10,
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import { uuidv4 } from '../../utils/uuid.js';
|
|
26
|
+
/**
|
|
27
|
+
* Prompt templates for planning operations.
|
|
28
|
+
*/
|
|
29
|
+
const PLANNING_PROMPTS = {
|
|
30
|
+
generatePlan: `You are an expert planning agent. Generate a detailed step-by-step plan to achieve the following goal.
|
|
31
|
+
|
|
32
|
+
GOAL: {goal}
|
|
33
|
+
|
|
34
|
+
CONTEXT:
|
|
35
|
+
{context}
|
|
36
|
+
|
|
37
|
+
AVAILABLE TOOLS:
|
|
38
|
+
{tools}
|
|
39
|
+
|
|
40
|
+
CONSTRAINTS:
|
|
41
|
+
- Maximum {maxSteps} steps
|
|
42
|
+
- Strategy: {strategy}
|
|
43
|
+
- {additionalConstraints}
|
|
44
|
+
|
|
45
|
+
Generate a plan in the following JSON format:
|
|
46
|
+
{
|
|
47
|
+
"reasoning": "Your chain-of-thought reasoning for the plan",
|
|
48
|
+
"steps": [
|
|
49
|
+
{
|
|
50
|
+
"action": {
|
|
51
|
+
"type": "tool_call|reasoning|information_gathering|synthesis|validation",
|
|
52
|
+
"toolId": "tool_name (if tool_call)",
|
|
53
|
+
"toolArgs": { "arg": "value" },
|
|
54
|
+
"content": "description of the action"
|
|
55
|
+
},
|
|
56
|
+
"reasoning": "Why this step is needed",
|
|
57
|
+
"expectedOutcome": "What this step should produce",
|
|
58
|
+
"dependsOn": ["step_ids"],
|
|
59
|
+
"estimatedTokens": 100,
|
|
60
|
+
"confidence": 0.85
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"overallConfidence": 0.8
|
|
64
|
+
}`,
|
|
65
|
+
decomposeTask: `Decompose the following complex task into simpler subtasks that can be executed independently or in sequence.
|
|
66
|
+
|
|
67
|
+
TASK: {task}
|
|
68
|
+
|
|
69
|
+
Provide a decomposition in JSON format:
|
|
70
|
+
{
|
|
71
|
+
"reasoning": "How you broke down the task",
|
|
72
|
+
"subtasks": [
|
|
73
|
+
{
|
|
74
|
+
"description": "Subtask description",
|
|
75
|
+
"complexity": 1-10,
|
|
76
|
+
"dependsOn": ["subtask_ids"],
|
|
77
|
+
"estimatedTokens": 100,
|
|
78
|
+
"parallelizable": true|false
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"executionOrder": ["subtask_ids in order"]
|
|
82
|
+
}`,
|
|
83
|
+
reflect: `Reflect on the current execution state and provide insights.
|
|
84
|
+
|
|
85
|
+
GOAL: {goal}
|
|
86
|
+
PLAN: {plan}
|
|
87
|
+
COMPLETED STEPS: {completedSteps}
|
|
88
|
+
CURRENT RESULTS: {results}
|
|
89
|
+
ISSUES ENCOUNTERED: {issues}
|
|
90
|
+
|
|
91
|
+
Analyze the execution and provide:
|
|
92
|
+
{
|
|
93
|
+
"insights": ["Key observations"],
|
|
94
|
+
"issues": ["Problems identified"],
|
|
95
|
+
"adjustments": [
|
|
96
|
+
{
|
|
97
|
+
"type": "add_step|remove_step|modify_step|reorder",
|
|
98
|
+
"targetStepId": "id",
|
|
99
|
+
"reason": "Why this change"
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"confidenceAdjustment": 0.1 (positive or negative),
|
|
103
|
+
"recommendation": "continue|adjust|replan|abort"
|
|
104
|
+
}`,
|
|
105
|
+
reactStep: `You are executing a plan step using the ReAct pattern.
|
|
106
|
+
|
|
107
|
+
GOAL: {goal}
|
|
108
|
+
CURRENT STEP: {step}
|
|
109
|
+
PREVIOUS RESULTS: {previousResults}
|
|
110
|
+
CONTEXT: {context}
|
|
111
|
+
|
|
112
|
+
Think through this step:
|
|
113
|
+
1. THOUGHT: What needs to be done and why
|
|
114
|
+
2. ACTION: The specific action to take
|
|
115
|
+
3. OBSERVATION: (Will be filled after execution)
|
|
116
|
+
|
|
117
|
+
Respond with your thought and action plan in JSON:
|
|
118
|
+
{
|
|
119
|
+
"thought": "Your reasoning",
|
|
120
|
+
"action": {
|
|
121
|
+
"type": "tool_call|reasoning|synthesis",
|
|
122
|
+
"details": { ... }
|
|
123
|
+
},
|
|
124
|
+
"expectedObservation": "What you expect to see"
|
|
125
|
+
}`,
|
|
126
|
+
};
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// PlanningEngine Implementation
|
|
129
|
+
// ============================================================================
|
|
130
|
+
/**
|
|
131
|
+
* Implementation of the AgentOS Planning Engine.
|
|
132
|
+
*
|
|
133
|
+
* Features:
|
|
134
|
+
* - ReAct (Reasoning + Acting) pattern for interleaved planning and execution
|
|
135
|
+
* - Plan-and-Execute for upfront planning
|
|
136
|
+
* - Tree-of-Thought for exploring multiple reasoning paths
|
|
137
|
+
* - Self-reflection and plan refinement
|
|
138
|
+
* - Checkpoint and rollback support
|
|
139
|
+
* - Human-in-the-loop integration points
|
|
140
|
+
*
|
|
141
|
+
* @implements {IPlanningEngine}
|
|
142
|
+
*/
|
|
143
|
+
export class PlanningEngine {
|
|
144
|
+
/**
|
|
145
|
+
* Creates a new PlanningEngine instance.
|
|
146
|
+
*
|
|
147
|
+
* @param config - Engine configuration
|
|
148
|
+
*/
|
|
149
|
+
constructor(config) {
|
|
150
|
+
/** Active execution states keyed by planId */
|
|
151
|
+
this.executionStates = new Map();
|
|
152
|
+
/** Saved checkpoints keyed by checkpointId */
|
|
153
|
+
this.checkpoints = new Map();
|
|
154
|
+
this.llmProvider = config.llmProvider;
|
|
155
|
+
this.defaultModelId = config.defaultModelId ?? 'gpt-4-turbo';
|
|
156
|
+
this.defaultProviderId = config.defaultProviderId;
|
|
157
|
+
this.logger = config.logger;
|
|
158
|
+
this.defaultOptions = {
|
|
159
|
+
maxSteps: 15,
|
|
160
|
+
maxIterations: 5,
|
|
161
|
+
minConfidence: 0.6,
|
|
162
|
+
allowToolUse: true,
|
|
163
|
+
strategy: 'react',
|
|
164
|
+
enableCheckpoints: true,
|
|
165
|
+
checkpointFrequency: 5,
|
|
166
|
+
maxTotalTokens: 100000,
|
|
167
|
+
planningTimeoutMs: 60000,
|
|
168
|
+
...config.defaultOptions,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// ==========================================================================
|
|
172
|
+
// Plan Generation
|
|
173
|
+
// ==========================================================================
|
|
174
|
+
/**
|
|
175
|
+
* Generates a multi-step execution plan from a high-level goal.
|
|
176
|
+
*
|
|
177
|
+
* @param goal - The high-level goal to achieve
|
|
178
|
+
* @param context - Additional context for planning
|
|
179
|
+
* @param options - Planning configuration options
|
|
180
|
+
* @returns Generated execution plan
|
|
181
|
+
*/
|
|
182
|
+
async generatePlan(goal, context, options) {
|
|
183
|
+
const opts = { ...this.defaultOptions, ...options };
|
|
184
|
+
const startTime = Date.now();
|
|
185
|
+
this.logger?.info?.('Generating execution plan', { goal, strategy: opts.strategy });
|
|
186
|
+
try {
|
|
187
|
+
// Build the planning prompt
|
|
188
|
+
const prompt = this.buildPlanningPrompt(goal, context, opts);
|
|
189
|
+
// Generate plan using LLM
|
|
190
|
+
const response = await this.callLLM(prompt, { jsonMode: true });
|
|
191
|
+
const planData = JSON.parse(response);
|
|
192
|
+
// Build the execution plan
|
|
193
|
+
const plan = this.buildExecutionPlan(goal, planData, opts, startTime);
|
|
194
|
+
// Validate the generated plan
|
|
195
|
+
const validation = await this.validatePlan(plan);
|
|
196
|
+
if (!validation.isValid) {
|
|
197
|
+
this.logger?.warn?.('Generated plan has validation issues', {
|
|
198
|
+
planId: plan.planId,
|
|
199
|
+
issues: validation.issues,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
this.logger?.info?.('Plan generated successfully', {
|
|
203
|
+
planId: plan.planId,
|
|
204
|
+
steps: plan.steps.length,
|
|
205
|
+
confidence: plan.confidenceScore,
|
|
206
|
+
});
|
|
207
|
+
return plan;
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
211
|
+
this.logger?.error?.('Failed to generate plan', { goal, error: errorMessage });
|
|
212
|
+
throw new Error(`Planning failed: ${errorMessage}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Decomposes a complex task into simpler subtasks.
|
|
217
|
+
*
|
|
218
|
+
* @param task - The task description to decompose
|
|
219
|
+
* @param depth - Maximum decomposition depth
|
|
220
|
+
* @returns Task decomposition result
|
|
221
|
+
*/
|
|
222
|
+
async decomposeTask(task, depth = 3) {
|
|
223
|
+
this.logger?.debug?.('Decomposing task', { task, depth });
|
|
224
|
+
const prompt = PLANNING_PROMPTS.decomposeTask.replace('{task}', task);
|
|
225
|
+
const response = await this.callLLM(prompt, { jsonMode: true });
|
|
226
|
+
const data = JSON.parse(response);
|
|
227
|
+
const subtasks = data.subtasks.map((st, idx) => ({
|
|
228
|
+
subtaskId: `subtask-${idx}-${uuidv4().slice(0, 8)}`,
|
|
229
|
+
description: st.description,
|
|
230
|
+
complexity: st.complexity,
|
|
231
|
+
dependsOn: st.dependsOn ?? [],
|
|
232
|
+
estimatedTokens: st.estimatedTokens ?? 500,
|
|
233
|
+
parallelizable: st.parallelizable ?? false,
|
|
234
|
+
}));
|
|
235
|
+
return {
|
|
236
|
+
originalTask: task,
|
|
237
|
+
subtasks,
|
|
238
|
+
reasoning: data.reasoning,
|
|
239
|
+
isComplete: true,
|
|
240
|
+
executionOrder: data.executionOrder ?? subtasks.map((st) => st.subtaskId),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Validates a plan for feasibility and completeness.
|
|
245
|
+
*
|
|
246
|
+
* @param plan - Plan to validate
|
|
247
|
+
* @returns Validation result with any issues found
|
|
248
|
+
*/
|
|
249
|
+
async validatePlan(plan) {
|
|
250
|
+
const issues = [];
|
|
251
|
+
const suggestions = [];
|
|
252
|
+
// Check for empty plan
|
|
253
|
+
if (plan.steps.length === 0) {
|
|
254
|
+
issues.push({
|
|
255
|
+
severity: 'error',
|
|
256
|
+
message: 'Plan has no steps',
|
|
257
|
+
suggestedFix: 'Regenerate plan with clearer goal',
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
// Check for circular dependencies
|
|
261
|
+
const visited = new Set();
|
|
262
|
+
const recursionStack = new Set();
|
|
263
|
+
const hasCycle = (stepId) => {
|
|
264
|
+
if (recursionStack.has(stepId))
|
|
265
|
+
return true;
|
|
266
|
+
if (visited.has(stepId))
|
|
267
|
+
return false;
|
|
268
|
+
visited.add(stepId);
|
|
269
|
+
recursionStack.add(stepId);
|
|
270
|
+
const deps = plan.dependencies.get(stepId) ?? [];
|
|
271
|
+
for (const dep of deps) {
|
|
272
|
+
if (hasCycle(dep))
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
275
|
+
recursionStack.delete(stepId);
|
|
276
|
+
return false;
|
|
277
|
+
};
|
|
278
|
+
for (const step of plan.steps) {
|
|
279
|
+
if (hasCycle(step.stepId)) {
|
|
280
|
+
issues.push({
|
|
281
|
+
severity: 'error',
|
|
282
|
+
stepId: step.stepId,
|
|
283
|
+
message: 'Circular dependency detected',
|
|
284
|
+
suggestedFix: 'Remove or restructure dependent steps',
|
|
285
|
+
});
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// Check confidence scores
|
|
290
|
+
const lowConfidenceSteps = plan.steps.filter((s) => s.confidence < 0.5);
|
|
291
|
+
if (lowConfidenceSteps.length > 0) {
|
|
292
|
+
issues.push({
|
|
293
|
+
severity: 'warning',
|
|
294
|
+
message: `${lowConfidenceSteps.length} steps have low confidence (<0.5)`,
|
|
295
|
+
suggestedFix: 'Consider adding validation steps or gathering more context',
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
// Check for missing tool references
|
|
299
|
+
for (const step of plan.steps) {
|
|
300
|
+
if (step.action.type === 'tool_call' && !step.action.toolId) {
|
|
301
|
+
issues.push({
|
|
302
|
+
severity: 'error',
|
|
303
|
+
stepId: step.stepId,
|
|
304
|
+
message: 'Tool call step missing toolId',
|
|
305
|
+
suggestedFix: 'Specify the tool to be called',
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// Suggestions
|
|
310
|
+
if (plan.steps.length > 10) {
|
|
311
|
+
suggestions.push('Consider breaking this plan into phases for better manageability');
|
|
312
|
+
}
|
|
313
|
+
if (plan.confidenceScore < 0.7) {
|
|
314
|
+
suggestions.push('Overall confidence is moderate - consider adding validation checkpoints');
|
|
315
|
+
}
|
|
316
|
+
return {
|
|
317
|
+
isValid: issues.filter((i) => i.severity === 'error').length === 0,
|
|
318
|
+
issues,
|
|
319
|
+
suggestions,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
// ==========================================================================
|
|
323
|
+
// Plan Refinement
|
|
324
|
+
// ==========================================================================
|
|
325
|
+
/**
|
|
326
|
+
* Refines an existing plan based on execution feedback.
|
|
327
|
+
*
|
|
328
|
+
* @param plan - Original plan to refine
|
|
329
|
+
* @param feedback - Feedback from execution
|
|
330
|
+
* @returns Refined execution plan
|
|
331
|
+
*/
|
|
332
|
+
async refinePlan(plan, feedback) {
|
|
333
|
+
this.logger?.info?.('Refining plan based on feedback', {
|
|
334
|
+
planId: plan.planId,
|
|
335
|
+
feedbackType: feedback.feedbackType,
|
|
336
|
+
});
|
|
337
|
+
// Get current execution state
|
|
338
|
+
const state = this.executionStates.get(plan.planId);
|
|
339
|
+
// Perform reflection
|
|
340
|
+
const reflection = await this.reflect(plan, state ?? this.createInitialState(plan));
|
|
341
|
+
// Apply adjustments based on reflection
|
|
342
|
+
let refinedPlan = { ...plan };
|
|
343
|
+
for (const adjustment of reflection.adjustments) {
|
|
344
|
+
refinedPlan = this.applyAdjustment(refinedPlan, adjustment);
|
|
345
|
+
}
|
|
346
|
+
// Update confidence
|
|
347
|
+
refinedPlan.confidenceScore = Math.max(0.1, Math.min(1.0, refinedPlan.confidenceScore + reflection.confidenceAdjustment));
|
|
348
|
+
// Update metadata
|
|
349
|
+
refinedPlan.metadata.iterations++;
|
|
350
|
+
this.logger?.info?.('Plan refined', {
|
|
351
|
+
planId: refinedPlan.planId,
|
|
352
|
+
adjustments: reflection.adjustments.length,
|
|
353
|
+
newConfidence: refinedPlan.confidenceScore,
|
|
354
|
+
});
|
|
355
|
+
return refinedPlan;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Performs self-reflection on plan execution state.
|
|
359
|
+
*
|
|
360
|
+
* @param plan - Current plan
|
|
361
|
+
* @param executionState - Current execution state
|
|
362
|
+
* @returns Reflection insights and suggested adjustments
|
|
363
|
+
*/
|
|
364
|
+
async reflect(plan, executionState) {
|
|
365
|
+
const completedSteps = plan.steps.filter((s) => executionState.completedSteps.includes(s.stepId));
|
|
366
|
+
const failedSteps = plan.steps.filter((s) => executionState.failedSteps.includes(s.stepId));
|
|
367
|
+
const resultsStr = Array.from(executionState.results.entries())
|
|
368
|
+
.map(([id, result]) => `${id}: ${result.success ? 'Success' : 'Failed'} - ${JSON.stringify(result.output)}`)
|
|
369
|
+
.join('\n');
|
|
370
|
+
const prompt = PLANNING_PROMPTS.reflect
|
|
371
|
+
.replace('{goal}', plan.goal)
|
|
372
|
+
.replace('{plan}', JSON.stringify(plan.steps.map((s) => s.action)))
|
|
373
|
+
.replace('{completedSteps}', completedSteps.map((s) => s.stepId).join(', '))
|
|
374
|
+
.replace('{results}', resultsStr)
|
|
375
|
+
.replace('{issues}', failedSteps.map((s) => `Step ${s.stepId} failed`).join(', '));
|
|
376
|
+
const response = await this.callLLM(prompt, { jsonMode: true });
|
|
377
|
+
const data = JSON.parse(response);
|
|
378
|
+
return {
|
|
379
|
+
insights: data.insights ?? [],
|
|
380
|
+
issues: data.issues ?? [],
|
|
381
|
+
adjustments: (data.adjustments ?? []).map((adj) => ({
|
|
382
|
+
type: adj.type,
|
|
383
|
+
targetStepId: adj.targetStepId,
|
|
384
|
+
reason: adj.reason,
|
|
385
|
+
})),
|
|
386
|
+
confidenceAdjustment: data.confidenceAdjustment ?? 0,
|
|
387
|
+
recommendation: data.recommendation ?? 'continue',
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
// ==========================================================================
|
|
391
|
+
// Execution
|
|
392
|
+
// ==========================================================================
|
|
393
|
+
/**
|
|
394
|
+
* Executes a single plan step.
|
|
395
|
+
*
|
|
396
|
+
* @param step - Step to execute
|
|
397
|
+
* @param context - Execution context
|
|
398
|
+
* @returns Step execution result
|
|
399
|
+
*/
|
|
400
|
+
async executeStep(step, context) {
|
|
401
|
+
const startTime = Date.now();
|
|
402
|
+
this.logger?.debug?.('Executing step', { stepId: step.stepId, action: step.action.type });
|
|
403
|
+
try {
|
|
404
|
+
let output;
|
|
405
|
+
const tokensUsed = 0;
|
|
406
|
+
const observations = [];
|
|
407
|
+
switch (step.action.type) {
|
|
408
|
+
case 'tool_call':
|
|
409
|
+
if (step.action.toolId && context?.tools) {
|
|
410
|
+
const tool = context.tools.find((t) => t.id === step.action.toolId);
|
|
411
|
+
if (tool) {
|
|
412
|
+
const toolResult = await tool.execute(step.action.toolArgs ?? {}, {
|
|
413
|
+
gmiId: 'planning-engine',
|
|
414
|
+
personaId: 'planner',
|
|
415
|
+
userContext: { userId: 'system' },
|
|
416
|
+
});
|
|
417
|
+
output = toolResult.output;
|
|
418
|
+
observations.push(`Tool ${tool.name} executed: ${toolResult.success ? 'success' : 'failed'}`);
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
throw new Error(`Tool ${step.action.toolId} not found`);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
break;
|
|
425
|
+
case 'reasoning': {
|
|
426
|
+
const reasoningPrompt = `Reason through: ${step.action.content}\n\nPrevious context: ${JSON.stringify(context?.previousResults)}`;
|
|
427
|
+
output = await this.callLLM(reasoningPrompt);
|
|
428
|
+
observations.push('Reasoning step completed');
|
|
429
|
+
break;
|
|
430
|
+
}
|
|
431
|
+
case 'information_gathering':
|
|
432
|
+
if (context?.retrieve && step.action.query) {
|
|
433
|
+
const retrieved = await context.retrieve(step.action.query);
|
|
434
|
+
output = retrieved;
|
|
435
|
+
observations.push(`Retrieved ${retrieved.length} relevant items`);
|
|
436
|
+
}
|
|
437
|
+
break;
|
|
438
|
+
case 'synthesis': {
|
|
439
|
+
const synthesisPrompt = `Synthesize the following results into a coherent output:\n${JSON.stringify(context?.previousResults)}\n\nContext: ${step.action.content}`;
|
|
440
|
+
output = await this.callLLM(synthesisPrompt);
|
|
441
|
+
observations.push('Synthesis completed');
|
|
442
|
+
break;
|
|
443
|
+
}
|
|
444
|
+
case 'validation': {
|
|
445
|
+
const validationPrompt = `Validate the following output against expected criteria:\nOutput: ${JSON.stringify(context?.previousResults)}\nCriteria: ${step.action.content}`;
|
|
446
|
+
output = await this.callLLM(validationPrompt, { jsonMode: true });
|
|
447
|
+
observations.push('Validation completed');
|
|
448
|
+
break;
|
|
449
|
+
}
|
|
450
|
+
default:
|
|
451
|
+
output = { message: 'Step type not implemented', type: step.action.type };
|
|
452
|
+
}
|
|
453
|
+
return {
|
|
454
|
+
success: true,
|
|
455
|
+
output,
|
|
456
|
+
tokensUsed,
|
|
457
|
+
durationMs: Date.now() - startTime,
|
|
458
|
+
observations,
|
|
459
|
+
};
|
|
460
|
+
}
|
|
461
|
+
catch (error) {
|
|
462
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
463
|
+
this.logger?.error?.('Step execution failed', { stepId: step.stepId, error: errorMessage });
|
|
464
|
+
return {
|
|
465
|
+
success: false,
|
|
466
|
+
output: null,
|
|
467
|
+
error: errorMessage,
|
|
468
|
+
tokensUsed: 0,
|
|
469
|
+
durationMs: Date.now() - startTime,
|
|
470
|
+
observations: [`Error: ${errorMessage}`],
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Runs an autonomous goal pursuit loop.
|
|
476
|
+
*
|
|
477
|
+
* @param goal - Goal to pursue
|
|
478
|
+
* @param options - Loop configuration
|
|
479
|
+
* @yields Progress updates
|
|
480
|
+
* @returns Final execution summary
|
|
481
|
+
*/
|
|
482
|
+
async *runAutonomousLoop(goal, options) {
|
|
483
|
+
const opts = {
|
|
484
|
+
maxIterations: options?.maxIterations ?? 20,
|
|
485
|
+
goalConfidenceThreshold: options?.goalConfidenceThreshold ?? 0.9,
|
|
486
|
+
enableReflection: options?.enableReflection ?? true,
|
|
487
|
+
reflectionFrequency: options?.reflectionFrequency ?? 3,
|
|
488
|
+
requireApprovalFor: options?.requireApprovalFor ?? ['human_input'],
|
|
489
|
+
onProgress: options?.onProgress ?? (() => { }),
|
|
490
|
+
onApprovalRequired: options?.onApprovalRequired ?? (async () => true),
|
|
491
|
+
};
|
|
492
|
+
const startTime = Date.now();
|
|
493
|
+
let tokensUsed = 0;
|
|
494
|
+
const allObservations = [];
|
|
495
|
+
let iteration = 0;
|
|
496
|
+
let goalConfidence = 0;
|
|
497
|
+
let currentPlan = null;
|
|
498
|
+
this.logger?.info?.('Starting autonomous loop', { goal, maxIterations: opts.maxIterations });
|
|
499
|
+
try {
|
|
500
|
+
// Generate initial plan
|
|
501
|
+
currentPlan = await this.generatePlan(goal, {}, { strategy: 'react' });
|
|
502
|
+
const state = this.createInitialState(currentPlan);
|
|
503
|
+
this.executionStates.set(currentPlan.planId, state);
|
|
504
|
+
while (iteration < opts.maxIterations && goalConfidence < opts.goalConfidenceThreshold) {
|
|
505
|
+
iteration++;
|
|
506
|
+
// Get next ready step
|
|
507
|
+
const nextStep = this.getNextReadyStep(currentPlan, state);
|
|
508
|
+
if (!nextStep) {
|
|
509
|
+
// All steps complete or blocked
|
|
510
|
+
goalConfidence = currentPlan.confidenceScore;
|
|
511
|
+
break;
|
|
512
|
+
}
|
|
513
|
+
// Check if approval required
|
|
514
|
+
if (opts.requireApprovalFor.includes(nextStep.action.type)) {
|
|
515
|
+
const approved = await opts.onApprovalRequired({
|
|
516
|
+
requestId: uuidv4(),
|
|
517
|
+
step: nextStep,
|
|
518
|
+
reason: `Action type ${nextStep.action.type} requires approval`,
|
|
519
|
+
suggestedAction: 'approve',
|
|
520
|
+
timeoutMs: 30000,
|
|
521
|
+
});
|
|
522
|
+
if (!approved) {
|
|
523
|
+
state.failedSteps.push(nextStep.stepId);
|
|
524
|
+
continue;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
// Execute step
|
|
528
|
+
const result = await this.executeStep(nextStep, {
|
|
529
|
+
previousResults: state.results,
|
|
530
|
+
tools: [],
|
|
531
|
+
});
|
|
532
|
+
// Update state
|
|
533
|
+
state.results.set(nextStep.stepId, result);
|
|
534
|
+
if (result.success) {
|
|
535
|
+
state.completedSteps.push(nextStep.stepId);
|
|
536
|
+
}
|
|
537
|
+
else {
|
|
538
|
+
state.failedSteps.push(nextStep.stepId);
|
|
539
|
+
}
|
|
540
|
+
state.tokensUsed += result.tokensUsed;
|
|
541
|
+
tokensUsed += result.tokensUsed;
|
|
542
|
+
allObservations.push(...result.observations);
|
|
543
|
+
state.lastUpdatedAt = new Date();
|
|
544
|
+
// Calculate progress
|
|
545
|
+
const progress = state.completedSteps.length / currentPlan.steps.length;
|
|
546
|
+
goalConfidence = progress * currentPlan.confidenceScore;
|
|
547
|
+
// Yield progress
|
|
548
|
+
const loopProgress = {
|
|
549
|
+
iteration,
|
|
550
|
+
currentStep: nextStep,
|
|
551
|
+
progress,
|
|
552
|
+
observations: allObservations,
|
|
553
|
+
goalConfidence,
|
|
554
|
+
tokensUsed,
|
|
555
|
+
};
|
|
556
|
+
opts.onProgress(loopProgress);
|
|
557
|
+
yield loopProgress;
|
|
558
|
+
// Reflection at intervals
|
|
559
|
+
if (opts.enableReflection && iteration % opts.reflectionFrequency === 0) {
|
|
560
|
+
const reflection = await this.reflect(currentPlan, state);
|
|
561
|
+
if (reflection.recommendation === 'replan') {
|
|
562
|
+
currentPlan = await this.generatePlan(goal, {
|
|
563
|
+
failedApproaches: state.failedSteps.map((id) => `Step ${id} failed`),
|
|
564
|
+
});
|
|
565
|
+
state.currentStepIndex = 0;
|
|
566
|
+
}
|
|
567
|
+
else if (reflection.recommendation === 'abort') {
|
|
568
|
+
break;
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
// Generate final summary
|
|
573
|
+
const summary = {
|
|
574
|
+
goalAchieved: goalConfidence >= opts.goalConfidenceThreshold,
|
|
575
|
+
finalConfidence: goalConfidence,
|
|
576
|
+
iterations: iteration,
|
|
577
|
+
totalTokensUsed: tokensUsed,
|
|
578
|
+
totalDurationMs: Date.now() - startTime,
|
|
579
|
+
outcomes: allObservations.slice(-10),
|
|
580
|
+
unresolvedIssues: state.failedSteps.map((id) => `Step ${id} failed`),
|
|
581
|
+
};
|
|
582
|
+
this.logger?.info?.('Autonomous loop completed', summary);
|
|
583
|
+
return summary;
|
|
584
|
+
}
|
|
585
|
+
catch (error) {
|
|
586
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
587
|
+
this.logger?.error?.('Autonomous loop failed', { goal, error: errorMessage });
|
|
588
|
+
return {
|
|
589
|
+
goalAchieved: false,
|
|
590
|
+
finalConfidence: 0,
|
|
591
|
+
iterations: iteration,
|
|
592
|
+
totalTokensUsed: tokensUsed,
|
|
593
|
+
totalDurationMs: Date.now() - startTime,
|
|
594
|
+
outcomes: [],
|
|
595
|
+
unresolvedIssues: [errorMessage],
|
|
596
|
+
};
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
// ==========================================================================
|
|
600
|
+
// State Management
|
|
601
|
+
// ==========================================================================
|
|
602
|
+
/**
|
|
603
|
+
* Saves current execution state for checkpointing.
|
|
604
|
+
*
|
|
605
|
+
* @param plan - Plan being executed
|
|
606
|
+
* @param state - Current execution state
|
|
607
|
+
* @returns Checkpoint identifier
|
|
608
|
+
*/
|
|
609
|
+
async saveCheckpoint(plan, state) {
|
|
610
|
+
const checkpointId = `checkpoint-${plan.planId}-${Date.now()}`;
|
|
611
|
+
this.checkpoints.set(checkpointId, {
|
|
612
|
+
plan: JSON.parse(JSON.stringify(plan)),
|
|
613
|
+
state: {
|
|
614
|
+
...state,
|
|
615
|
+
results: new Map(state.results),
|
|
616
|
+
},
|
|
617
|
+
});
|
|
618
|
+
this.logger?.debug?.('Checkpoint saved', { checkpointId, planId: plan.planId });
|
|
619
|
+
return checkpointId;
|
|
620
|
+
}
|
|
621
|
+
/**
|
|
622
|
+
* Restores execution state from a checkpoint.
|
|
623
|
+
*
|
|
624
|
+
* @param checkpointId - Checkpoint to restore
|
|
625
|
+
* @returns Restored plan and state
|
|
626
|
+
*/
|
|
627
|
+
async restoreCheckpoint(checkpointId) {
|
|
628
|
+
const checkpoint = this.checkpoints.get(checkpointId);
|
|
629
|
+
if (!checkpoint) {
|
|
630
|
+
throw new Error(`Checkpoint ${checkpointId} not found`);
|
|
631
|
+
}
|
|
632
|
+
this.logger?.debug?.('Checkpoint restored', { checkpointId });
|
|
633
|
+
return {
|
|
634
|
+
plan: JSON.parse(JSON.stringify(checkpoint.plan)),
|
|
635
|
+
state: {
|
|
636
|
+
...checkpoint.state,
|
|
637
|
+
results: new Map(checkpoint.state.results),
|
|
638
|
+
},
|
|
639
|
+
};
|
|
640
|
+
}
|
|
641
|
+
/**
|
|
642
|
+
* Gets the current execution state for a plan.
|
|
643
|
+
*
|
|
644
|
+
* @param planId - Plan identifier
|
|
645
|
+
* @returns Current execution state or null
|
|
646
|
+
*/
|
|
647
|
+
getExecutionState(planId) {
|
|
648
|
+
return this.executionStates.get(planId) ?? null;
|
|
649
|
+
}
|
|
650
|
+
// ==========================================================================
|
|
651
|
+
// Private Helpers
|
|
652
|
+
// ==========================================================================
|
|
653
|
+
buildPlanningPrompt(goal, context, options) {
|
|
654
|
+
const toolsStr = options.availableTools
|
|
655
|
+
? options.availableTools.map((t) => `- ${t.name}: ${t.description}`).join('\n')
|
|
656
|
+
: 'No tools available';
|
|
657
|
+
const contextStr = [
|
|
658
|
+
context?.conversationHistory && `Conversation: ${context.conversationHistory}`,
|
|
659
|
+
context?.retrievedContext && `Retrieved Context: ${context.retrievedContext}`,
|
|
660
|
+
context?.domainContext && `Domain: ${context.domainContext}`,
|
|
661
|
+
context?.userConstraints?.length && `Constraints: ${context.userConstraints.join(', ')}`,
|
|
662
|
+
]
|
|
663
|
+
.filter(Boolean)
|
|
664
|
+
.join('\n');
|
|
665
|
+
return PLANNING_PROMPTS.generatePlan
|
|
666
|
+
.replace('{goal}', goal)
|
|
667
|
+
.replace('{context}', contextStr || 'No additional context')
|
|
668
|
+
.replace('{tools}', toolsStr)
|
|
669
|
+
.replace('{maxSteps}', String(options.maxSteps))
|
|
670
|
+
.replace('{strategy}', options.strategy ?? 'react')
|
|
671
|
+
.replace('{additionalConstraints}', options.allowToolUse ? 'Tool use is allowed' : 'No tool use');
|
|
672
|
+
}
|
|
673
|
+
buildExecutionPlan(goal, planData, options, startTime) {
|
|
674
|
+
const planId = `plan-${uuidv4()}`;
|
|
675
|
+
const steps = [];
|
|
676
|
+
const dependencies = new Map();
|
|
677
|
+
const rawSteps = planData.steps;
|
|
678
|
+
let totalEstimatedTokens = 0;
|
|
679
|
+
for (let i = 0; i < rawSteps.length; i++) {
|
|
680
|
+
const rawStep = rawSteps[i];
|
|
681
|
+
const stepId = `step-${i}-${uuidv4().slice(0, 8)}`;
|
|
682
|
+
const action = rawStep.action;
|
|
683
|
+
const step = {
|
|
684
|
+
stepId,
|
|
685
|
+
index: i,
|
|
686
|
+
action: {
|
|
687
|
+
type: action.type ?? 'reasoning',
|
|
688
|
+
toolId: action.toolId,
|
|
689
|
+
toolArgs: action.toolArgs,
|
|
690
|
+
content: action.content ?? '',
|
|
691
|
+
},
|
|
692
|
+
reasoning: rawStep.reasoning ?? '',
|
|
693
|
+
expectedOutcome: rawStep.expectedOutcome ?? '',
|
|
694
|
+
dependsOn: rawStep.dependsOn ?? [],
|
|
695
|
+
estimatedTokens: rawStep.estimatedTokens ?? 500,
|
|
696
|
+
confidence: rawStep.confidence ?? 0.7,
|
|
697
|
+
requiresHumanApproval: action.type === 'human_input',
|
|
698
|
+
status: 'pending',
|
|
699
|
+
};
|
|
700
|
+
steps.push(step);
|
|
701
|
+
dependencies.set(stepId, step.dependsOn);
|
|
702
|
+
totalEstimatedTokens += step.estimatedTokens;
|
|
703
|
+
}
|
|
704
|
+
return {
|
|
705
|
+
planId,
|
|
706
|
+
goal,
|
|
707
|
+
steps,
|
|
708
|
+
dependencies,
|
|
709
|
+
estimatedTokens: totalEstimatedTokens,
|
|
710
|
+
confidenceScore: planData.overallConfidence ?? 0.7,
|
|
711
|
+
createdAt: new Date(),
|
|
712
|
+
strategy: options.strategy ?? 'react',
|
|
713
|
+
metadata: {
|
|
714
|
+
modelId: this.defaultModelId,
|
|
715
|
+
iterations: 1,
|
|
716
|
+
planningDurationMs: Date.now() - startTime,
|
|
717
|
+
alternativesConsidered: 1,
|
|
718
|
+
},
|
|
719
|
+
};
|
|
720
|
+
}
|
|
721
|
+
createInitialState(plan) {
|
|
722
|
+
return {
|
|
723
|
+
planId: plan.planId,
|
|
724
|
+
currentStepIndex: 0,
|
|
725
|
+
completedSteps: [],
|
|
726
|
+
failedSteps: [],
|
|
727
|
+
results: new Map(),
|
|
728
|
+
tokensUsed: 0,
|
|
729
|
+
startedAt: new Date(),
|
|
730
|
+
lastUpdatedAt: new Date(),
|
|
731
|
+
};
|
|
732
|
+
}
|
|
733
|
+
getNextReadyStep(plan, state) {
|
|
734
|
+
for (const step of plan.steps) {
|
|
735
|
+
if (state.completedSteps.includes(step.stepId))
|
|
736
|
+
continue;
|
|
737
|
+
if (state.failedSteps.includes(step.stepId))
|
|
738
|
+
continue;
|
|
739
|
+
// Check if dependencies are met
|
|
740
|
+
const depsmet = step.dependsOn.every((depId) => state.completedSteps.includes(depId));
|
|
741
|
+
if (depsmet) {
|
|
742
|
+
return step;
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
return null;
|
|
746
|
+
}
|
|
747
|
+
applyAdjustment(plan, adjustment) {
|
|
748
|
+
const newPlan = { ...plan, steps: [...plan.steps] };
|
|
749
|
+
switch (adjustment.type) {
|
|
750
|
+
case 'remove_step':
|
|
751
|
+
if (adjustment.targetStepId) {
|
|
752
|
+
newPlan.steps = newPlan.steps.filter((s) => s.stepId !== adjustment.targetStepId);
|
|
753
|
+
}
|
|
754
|
+
break;
|
|
755
|
+
case 'modify_step':
|
|
756
|
+
if (adjustment.targetStepId && adjustment.newStepData) {
|
|
757
|
+
const idx = newPlan.steps.findIndex((s) => s.stepId === adjustment.targetStepId);
|
|
758
|
+
if (idx >= 0) {
|
|
759
|
+
newPlan.steps[idx] = { ...newPlan.steps[idx], ...adjustment.newStepData };
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
break;
|
|
763
|
+
// Add other adjustment types as needed
|
|
764
|
+
}
|
|
765
|
+
return newPlan;
|
|
766
|
+
}
|
|
767
|
+
async callLLM(prompt, options) {
|
|
768
|
+
const messages = [{ role: 'user', content: prompt }];
|
|
769
|
+
const providerId = this.defaultProviderId ?? 'openai';
|
|
770
|
+
const provider = this.llmProvider.getProvider(providerId);
|
|
771
|
+
if (!provider) {
|
|
772
|
+
throw new Error(`Provider "${providerId}" not found`);
|
|
773
|
+
}
|
|
774
|
+
const response = await provider.generateCompletion(this.defaultModelId, messages, {
|
|
775
|
+
temperature: 0.7,
|
|
776
|
+
maxTokens: 4000,
|
|
777
|
+
responseFormat: options?.jsonMode ? { type: 'json_object' } : undefined,
|
|
778
|
+
});
|
|
779
|
+
const content = response.choices?.[0]?.message?.content;
|
|
780
|
+
return typeof content === 'string' ? content : '';
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
//# sourceMappingURL=PlanningEngine.js.map
|