@framers/agentos 0.1.112 → 0.1.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -5
- package/dist/api/AgentOS.d.ts +45 -12
- package/dist/api/AgentOS.d.ts.map +1 -1
- package/dist/api/AgentOS.js +225 -78
- package/dist/api/AgentOS.js.map +1 -1
- package/dist/api/AgentOSOrchestrator.d.ts +8 -0
- package/dist/api/AgentOSOrchestrator.d.ts.map +1 -1
- package/dist/api/AgentOSOrchestrator.js +350 -59
- package/dist/api/AgentOSOrchestrator.js.map +1 -1
- package/dist/api/StreamChunkEmitter.d.ts.map +1 -1
- package/dist/api/StreamChunkEmitter.js +2 -0
- package/dist/api/StreamChunkEmitter.js.map +1 -1
- package/dist/api/agency.d.ts.map +1 -1
- package/dist/api/agency.js +47 -1
- package/dist/api/agency.js.map +1 -1
- package/dist/api/agent.d.ts +18 -5
- package/dist/api/agent.d.ts.map +1 -1
- package/dist/api/agent.js +48 -9
- package/dist/api/agent.js.map +1 -1
- package/dist/api/agentExport.d.ts +202 -0
- package/dist/api/agentExport.d.ts.map +1 -0
- package/dist/api/agentExport.js +323 -0
- package/dist/api/agentExport.js.map +1 -0
- package/dist/api/editImage.d.ts +119 -0
- package/dist/api/editImage.d.ts.map +1 -0
- package/dist/api/editImage.js +150 -0
- package/dist/api/editImage.js.map +1 -0
- package/dist/api/embedText.d.ts +137 -0
- package/dist/api/embedText.d.ts.map +1 -0
- package/dist/api/embedText.js +229 -0
- package/dist/api/embedText.js.map +1 -0
- package/dist/api/externalToolRegistry.d.ts +44 -0
- package/dist/api/externalToolRegistry.d.ts.map +1 -0
- package/dist/api/externalToolRegistry.js +245 -0
- package/dist/api/externalToolRegistry.js.map +1 -0
- package/dist/api/generateImage.d.ts +1 -1
- package/dist/api/generateImage.d.ts.map +1 -1
- package/dist/api/generateImage.js +17 -13
- package/dist/api/generateImage.js.map +1 -1
- package/dist/api/generateObject.d.ts +185 -0
- package/dist/api/generateObject.d.ts.map +1 -0
- package/dist/api/generateObject.js +249 -0
- package/dist/api/generateObject.js.map +1 -0
- package/dist/api/generateText.d.ts +13 -3
- package/dist/api/generateText.d.ts.map +1 -1
- package/dist/api/generateText.js +20 -5
- package/dist/api/generateText.js.map +1 -1
- package/dist/api/interfaces/IAgentOS.d.ts +29 -1
- package/dist/api/interfaces/IAgentOS.d.ts.map +1 -1
- package/dist/api/model.d.ts +7 -7
- package/dist/api/model.d.ts.map +1 -1
- package/dist/api/model.js +22 -16
- package/dist/api/model.js.map +1 -1
- package/dist/api/processRequestWithExternalTools.d.ts +26 -0
- package/dist/api/processRequestWithExternalTools.d.ts.map +1 -0
- package/dist/api/processRequestWithExternalTools.js +52 -0
- package/dist/api/processRequestWithExternalTools.js.map +1 -0
- package/dist/api/processRequestWithRegisteredTools.d.ts +56 -0
- package/dist/api/processRequestWithRegisteredTools.d.ts.map +1 -0
- package/dist/api/processRequestWithRegisteredTools.js +125 -0
- package/dist/api/processRequestWithRegisteredTools.js.map +1 -0
- package/dist/api/provider-defaults.d.ts.map +1 -1
- package/dist/api/provider-defaults.js +28 -0
- package/dist/api/provider-defaults.js.map +1 -1
- package/dist/api/resumeExternalToolRequestWithRegisteredTools.d.ts +71 -0
- package/dist/api/resumeExternalToolRequestWithRegisteredTools.d.ts.map +1 -0
- package/dist/api/resumeExternalToolRequestWithRegisteredTools.js +159 -0
- package/dist/api/resumeExternalToolRequestWithRegisteredTools.js.map +1 -0
- package/dist/api/strategies/agentGraphBuilder.d.ts +170 -0
- package/dist/api/strategies/agentGraphBuilder.d.ts.map +1 -0
- package/dist/api/strategies/agentGraphBuilder.js +299 -0
- package/dist/api/strategies/agentGraphBuilder.js.map +1 -0
- package/dist/api/strategies/debate.d.ts +12 -1
- package/dist/api/strategies/debate.d.ts.map +1 -1
- package/dist/api/strategies/debate.js +41 -5
- package/dist/api/strategies/debate.js.map +1 -1
- package/dist/api/strategies/graphCompiler.d.ts +84 -0
- package/dist/api/strategies/graphCompiler.d.ts.map +1 -0
- package/dist/api/strategies/graphCompiler.js +617 -0
- package/dist/api/strategies/graphCompiler.js.map +1 -0
- package/dist/api/strategies/hierarchical.d.ts +15 -1
- package/dist/api/strategies/hierarchical.d.ts.map +1 -1
- package/dist/api/strategies/hierarchical.js +53 -8
- package/dist/api/strategies/hierarchical.js.map +1 -1
- package/dist/api/strategies/index.d.ts +29 -4
- package/dist/api/strategies/index.d.ts.map +1 -1
- package/dist/api/strategies/index.js +28 -4
- package/dist/api/strategies/index.js.map +1 -1
- package/dist/api/strategies/parallel.d.ts +15 -4
- package/dist/api/strategies/parallel.d.ts.map +1 -1
- package/dist/api/strategies/parallel.js +53 -16
- package/dist/api/strategies/parallel.js.map +1 -1
- package/dist/api/strategies/review-loop.d.ts +15 -1
- package/dist/api/strategies/review-loop.d.ts.map +1 -1
- package/dist/api/strategies/review-loop.js +36 -10
- package/dist/api/strategies/review-loop.js.map +1 -1
- package/dist/api/strategies/sequential.d.ts +11 -1
- package/dist/api/strategies/sequential.d.ts.map +1 -1
- package/dist/api/strategies/sequential.js +39 -8
- package/dist/api/strategies/sequential.js.map +1 -1
- package/dist/api/strategies/shared.d.ts +72 -8
- package/dist/api/strategies/shared.d.ts.map +1 -1
- package/dist/api/strategies/shared.js +92 -12
- package/dist/api/strategies/shared.js.map +1 -1
- package/dist/api/streamObject.d.ts +166 -0
- package/dist/api/streamObject.d.ts.map +1 -0
- package/dist/api/streamObject.js +268 -0
- package/dist/api/streamObject.js.map +1 -0
- package/dist/api/streamText.d.ts +1 -1
- package/dist/api/streamText.d.ts.map +1 -1
- package/dist/api/streamText.js +26 -8
- package/dist/api/streamText.js.map +1 -1
- package/dist/api/toolAdapter.d.ts +44 -8
- package/dist/api/toolAdapter.d.ts.map +1 -1
- package/dist/api/toolAdapter.js +224 -45
- package/dist/api/toolAdapter.js.map +1 -1
- package/dist/api/types/AgentOSExternalToolRequest.d.ts +35 -0
- package/dist/api/types/AgentOSExternalToolRequest.d.ts.map +1 -0
- package/dist/api/types/AgentOSExternalToolRequest.js +2 -0
- package/dist/api/types/AgentOSExternalToolRequest.js.map +1 -0
- package/dist/api/types/AgentOSResponse.d.ts +25 -0
- package/dist/api/types/AgentOSResponse.d.ts.map +1 -1
- package/dist/api/types/AgentOSResponse.js +20 -0
- package/dist/api/types/AgentOSResponse.js.map +1 -1
- package/dist/api/types/AgentOSToolResult.d.ts +11 -0
- package/dist/api/types/AgentOSToolResult.d.ts.map +1 -0
- package/dist/api/types/AgentOSToolResult.js +2 -0
- package/dist/api/types/AgentOSToolResult.js.map +1 -0
- package/dist/api/types.d.ts +81 -4
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/types.js.map +1 -1
- package/dist/api/upscaleImage.d.ts +92 -0
- package/dist/api/upscaleImage.d.ts.map +1 -0
- package/dist/api/upscaleImage.js +133 -0
- package/dist/api/upscaleImage.js.map +1 -0
- package/dist/api/variateImage.d.ts +102 -0
- package/dist/api/variateImage.d.ts.map +1 -0
- package/dist/api/variateImage.js +154 -0
- package/dist/api/variateImage.js.map +1 -0
- package/dist/cognitive_substrate/GMI.d.ts +16 -2
- package/dist/cognitive_substrate/GMI.d.ts.map +1 -1
- package/dist/cognitive_substrate/GMI.js +188 -56
- package/dist/cognitive_substrate/GMI.js.map +1 -1
- package/dist/cognitive_substrate/IGMI.d.ts +10 -0
- package/dist/cognitive_substrate/IGMI.d.ts.map +1 -1
- package/dist/cognitive_substrate/IGMI.js.map +1 -1
- package/dist/config/AgentOSConfig.d.ts +19 -2
- package/dist/config/AgentOSConfig.d.ts.map +1 -1
- package/dist/config/AgentOSConfig.js +46 -29
- package/dist/config/AgentOSConfig.js.map +1 -1
- package/dist/core/guardrails/IGuardrailService.d.ts +1 -1
- package/dist/core/images/IImageProvider.d.ts +93 -0
- package/dist/core/images/IImageProvider.d.ts.map +1 -1
- package/dist/core/images/IImageProvider.js.map +1 -1
- package/dist/core/images/ImageOperationError.d.ts +52 -0
- package/dist/core/images/ImageOperationError.d.ts.map +1 -0
- package/dist/core/images/ImageOperationError.js +58 -0
- package/dist/core/images/ImageOperationError.js.map +1 -0
- package/dist/core/images/imageToBuffer.d.ts +41 -0
- package/dist/core/images/imageToBuffer.d.ts.map +1 -0
- package/dist/core/images/imageToBuffer.js +95 -0
- package/dist/core/images/imageToBuffer.js.map +1 -0
- package/dist/core/images/index.d.ts +4 -0
- package/dist/core/images/index.d.ts.map +1 -1
- package/dist/core/images/index.js +8 -0
- package/dist/core/images/index.js.map +1 -1
- package/dist/core/images/providers/FalImageProvider.d.ts +208 -0
- package/dist/core/images/providers/FalImageProvider.d.ts.map +1 -0
- package/dist/core/images/providers/FalImageProvider.js +301 -0
- package/dist/core/images/providers/FalImageProvider.js.map +1 -0
- package/dist/core/images/providers/FluxImageProvider.d.ts +197 -0
- package/dist/core/images/providers/FluxImageProvider.d.ts.map +1 -0
- package/dist/core/images/providers/FluxImageProvider.js +271 -0
- package/dist/core/images/providers/FluxImageProvider.js.map +1 -0
- package/dist/core/images/providers/OpenAIImageProvider.d.ts +33 -1
- package/dist/core/images/providers/OpenAIImageProvider.d.ts.map +1 -1
- package/dist/core/images/providers/OpenAIImageProvider.js +125 -0
- package/dist/core/images/providers/OpenAIImageProvider.js.map +1 -1
- package/dist/core/images/providers/ReplicateImageProvider.d.ts +26 -1
- package/dist/core/images/providers/ReplicateImageProvider.d.ts.map +1 -1
- package/dist/core/images/providers/ReplicateImageProvider.js +118 -0
- package/dist/core/images/providers/ReplicateImageProvider.js.map +1 -1
- package/dist/core/images/providers/StabilityImageProvider.d.ts +41 -1
- package/dist/core/images/providers/StabilityImageProvider.d.ts.map +1 -1
- package/dist/core/images/providers/StabilityImageProvider.js +180 -7
- package/dist/core/images/providers/StabilityImageProvider.js.map +1 -1
- package/dist/core/images/providers/StableDiffusionLocalProvider.d.ts +29 -1
- package/dist/core/images/providers/StableDiffusionLocalProvider.d.ts.map +1 -1
- package/dist/core/images/providers/StableDiffusionLocalProvider.js +124 -0
- package/dist/core/images/providers/StableDiffusionLocalProvider.js.map +1 -1
- package/dist/core/llm/IPromptEngine.d.ts +2 -2
- package/dist/core/llm/IPromptEngine.d.ts.map +1 -1
- package/dist/core/llm/IPromptEngine.js +2 -2
- package/dist/core/llm/IPromptEngine.js.map +1 -1
- package/dist/core/llm/providers/AIModelProviderManager.d.ts +7 -1
- package/dist/core/llm/providers/AIModelProviderManager.d.ts.map +1 -1
- package/dist/core/llm/providers/AIModelProviderManager.js +24 -0
- package/dist/core/llm/providers/AIModelProviderManager.js.map +1 -1
- package/dist/core/llm/providers/errors/AnthropicProviderError.d.ts +42 -0
- package/dist/core/llm/providers/errors/AnthropicProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/AnthropicProviderError.js +45 -0
- package/dist/core/llm/providers/errors/AnthropicProviderError.js.map +1 -0
- package/dist/core/llm/providers/errors/GeminiProviderError.d.ts +45 -0
- package/dist/core/llm/providers/errors/GeminiProviderError.d.ts.map +1 -0
- package/dist/core/llm/providers/errors/GeminiProviderError.js +46 -0
- package/dist/core/llm/providers/errors/GeminiProviderError.js.map +1 -0
- package/dist/core/llm/providers/errors/OllamaProviderError.d.ts +1 -1
- package/dist/core/llm/providers/errors/OllamaProviderError.d.ts.map +1 -1
- package/dist/core/llm/providers/errors/OllamaProviderError.js +1 -1
- package/dist/core/llm/providers/errors/OllamaProviderError.js.map +1 -1
- package/dist/core/llm/providers/errors/OpenAIProviderError.d.ts +1 -1
- package/dist/core/llm/providers/errors/OpenAIProviderError.js +1 -1
- package/dist/core/llm/providers/errors/OpenRouterProviderError.d.ts +1 -1
- package/dist/core/llm/providers/errors/OpenRouterProviderError.js +1 -1
- package/dist/core/llm/providers/implementations/AnthropicProvider.d.ts +340 -0
- package/dist/core/llm/providers/implementations/AnthropicProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/AnthropicProvider.js +959 -0
- package/dist/core/llm/providers/implementations/AnthropicProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/GeminiProvider.d.ts +339 -0
- package/dist/core/llm/providers/implementations/GeminiProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/GeminiProvider.js +1004 -0
- package/dist/core/llm/providers/implementations/GeminiProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/GroqProvider.d.ts +105 -0
- package/dist/core/llm/providers/implementations/GroqProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/GroqProvider.js +134 -0
- package/dist/core/llm/providers/implementations/GroqProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/MistralProvider.d.ts +105 -0
- package/dist/core/llm/providers/implementations/MistralProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/MistralProvider.js +146 -0
- package/dist/core/llm/providers/implementations/MistralProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/TogetherProvider.d.ts +107 -0
- package/dist/core/llm/providers/implementations/TogetherProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/TogetherProvider.js +138 -0
- package/dist/core/llm/providers/implementations/TogetherProvider.js.map +1 -0
- package/dist/core/llm/providers/implementations/XAIProvider.d.ts +102 -0
- package/dist/core/llm/providers/implementations/XAIProvider.d.ts.map +1 -0
- package/dist/core/llm/providers/implementations/XAIProvider.js +123 -0
- package/dist/core/llm/providers/implementations/XAIProvider.js.map +1 -0
- package/dist/core/orchestration/AgentOrchestrator.d.ts.map +1 -1
- package/dist/core/orchestration/AgentOrchestrator.js +26 -5
- package/dist/core/orchestration/AgentOrchestrator.js.map +1 -1
- package/dist/core/tools/IToolOrchestrator.d.ts +2 -2
- package/dist/core/tools/IToolOrchestrator.d.ts.map +1 -1
- package/dist/core/tools/ToolExecutor.d.ts +3 -0
- package/dist/core/tools/ToolExecutor.d.ts.map +1 -1
- package/dist/core/tools/ToolExecutor.js +2 -1
- package/dist/core/tools/ToolExecutor.js.map +1 -1
- package/dist/core/tools/ToolOrchestrator.d.ts +7 -7
- package/dist/core/tools/ToolOrchestrator.d.ts.map +1 -1
- package/dist/core/tools/ToolOrchestrator.js +135 -36
- package/dist/core/tools/ToolOrchestrator.js.map +1 -1
- package/dist/core/tools/permissions/ToolPermissionManager.d.ts +6 -5
- package/dist/core/tools/permissions/ToolPermissionManager.d.ts.map +1 -1
- package/dist/core/tools/permissions/ToolPermissionManager.js +47 -21
- package/dist/core/tools/permissions/ToolPermissionManager.js.map +1 -1
- package/dist/core/vision/VisionPipeline.d.ts +437 -0
- package/dist/core/vision/VisionPipeline.d.ts.map +1 -0
- package/dist/core/vision/VisionPipeline.js +1113 -0
- package/dist/core/vision/VisionPipeline.js.map +1 -0
- package/dist/core/vision/index.d.ts +97 -0
- package/dist/core/vision/index.d.ts.map +1 -0
- package/dist/core/vision/index.js +182 -0
- package/dist/core/vision/index.js.map +1 -0
- package/dist/core/vision/providers/LLMVisionProvider.d.ts +135 -0
- package/dist/core/vision/providers/LLMVisionProvider.d.ts.map +1 -0
- package/dist/core/vision/providers/LLMVisionProvider.js +136 -0
- package/dist/core/vision/providers/LLMVisionProvider.js.map +1 -0
- package/dist/core/vision/providers/PipelineVisionProvider.d.ts +154 -0
- package/dist/core/vision/providers/PipelineVisionProvider.d.ts.map +1 -0
- package/dist/core/vision/providers/PipelineVisionProvider.js +160 -0
- package/dist/core/vision/providers/PipelineVisionProvider.js.map +1 -0
- package/dist/core/vision/types.d.ts +286 -0
- package/dist/core/vision/types.d.ts.map +1 -0
- package/dist/core/vision/types.js +24 -0
- package/dist/core/vision/types.js.map +1 -0
- package/dist/discovery/CapabilityDiscoveryEngine.d.ts +1 -1
- package/dist/discovery/CapabilityDiscoveryEngine.d.ts.map +1 -1
- package/dist/discovery/CapabilityDiscoveryEngine.js +1 -1
- package/dist/discovery/CapabilityDiscoveryEngine.js.map +1 -1
- package/dist/emergent/ComposableToolBuilder.d.ts +15 -4
- package/dist/emergent/ComposableToolBuilder.d.ts.map +1 -1
- package/dist/emergent/ComposableToolBuilder.js +29 -14
- package/dist/emergent/ComposableToolBuilder.js.map +1 -1
- package/dist/emergent/EmergentCapabilityEngine.d.ts +3 -3
- package/dist/emergent/EmergentCapabilityEngine.d.ts.map +1 -1
- package/dist/emergent/EmergentCapabilityEngine.js +15 -12
- package/dist/emergent/EmergentCapabilityEngine.js.map +1 -1
- package/dist/emergent/EmergentJudge.d.ts +20 -0
- package/dist/emergent/EmergentJudge.d.ts.map +1 -1
- package/dist/emergent/EmergentJudge.js +121 -26
- package/dist/emergent/EmergentJudge.js.map +1 -1
- package/dist/emergent/EmergentToolRegistry.d.ts +17 -0
- package/dist/emergent/EmergentToolRegistry.d.ts.map +1 -1
- package/dist/emergent/EmergentToolRegistry.js +26 -0
- package/dist/emergent/EmergentToolRegistry.js.map +1 -1
- package/dist/emergent/ForgeToolMetaTool.d.ts +1 -1
- package/dist/emergent/ForgeToolMetaTool.d.ts.map +1 -1
- package/dist/emergent/ForgeToolMetaTool.js +15 -2
- package/dist/emergent/ForgeToolMetaTool.js.map +1 -1
- package/dist/emergent/SandboxedToolForge.d.ts +2 -2
- package/dist/emergent/SandboxedToolForge.d.ts.map +1 -1
- package/dist/emergent/SandboxedToolForge.js +13 -23
- package/dist/emergent/SandboxedToolForge.js.map +1 -1
- package/dist/emergent/SkillExporter.d.ts +119 -0
- package/dist/emergent/SkillExporter.d.ts.map +1 -0
- package/dist/emergent/SkillExporter.js +344 -0
- package/dist/emergent/SkillExporter.js.map +1 -0
- package/dist/emergent/index.d.ts +1 -0
- package/dist/emergent/index.d.ts.map +1 -1
- package/dist/emergent/index.js +1 -0
- package/dist/emergent/index.js.map +1 -1
- package/dist/emergent/types.d.ts +4 -4
- package/dist/index.d.ts +30 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/dist/memory/facade/Memory.d.ts.map +1 -1
- package/dist/memory/facade/Memory.js +8 -0
- package/dist/memory/facade/Memory.js.map +1 -1
- package/dist/memory/facade/types.d.ts +10 -0
- package/dist/memory/facade/types.d.ts.map +1 -1
- package/dist/memory/index.d.ts +15 -7
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +7 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/ingestion/DoclingLoader.d.ts +3 -3
- package/dist/memory/ingestion/DoclingLoader.d.ts.map +1 -1
- package/dist/memory/ingestion/DoclingLoader.js +12 -8
- package/dist/memory/ingestion/DoclingLoader.js.map +1 -1
- package/dist/memory/ingestion/FolderScanner.d.ts +7 -7
- package/dist/memory/ingestion/FolderScanner.d.ts.map +1 -1
- package/dist/memory/ingestion/FolderScanner.js +6 -6
- package/dist/memory/ingestion/FolderScanner.js.map +1 -1
- package/dist/memory/ingestion/LoaderRegistry.d.ts +8 -8
- package/dist/memory/ingestion/LoaderRegistry.d.ts.map +1 -1
- package/dist/memory/ingestion/LoaderRegistry.js +9 -11
- package/dist/memory/ingestion/LoaderRegistry.js.map +1 -1
- package/dist/memory/ingestion/MultimodalAggregator.d.ts +1 -1
- package/dist/memory/ingestion/MultimodalAggregator.js +1 -1
- package/dist/memory/ingestion/OcrPdfLoader.d.ts +2 -2
- package/dist/memory/ingestion/OcrPdfLoader.d.ts.map +1 -1
- package/dist/memory/ingestion/OcrPdfLoader.js +12 -8
- package/dist/memory/ingestion/OcrPdfLoader.js.map +1 -1
- package/dist/memory/ingestion/PdfLoader.d.ts +8 -8
- package/dist/memory/ingestion/PdfLoader.d.ts.map +1 -1
- package/dist/memory/ingestion/PdfLoader.js +13 -10
- package/dist/memory/ingestion/PdfLoader.js.map +1 -1
- package/dist/memory/io/MarkdownExporter.d.ts +1 -1
- package/dist/memory/io/MarkdownExporter.d.ts.map +1 -1
- package/dist/memory/io/MarkdownExporter.js +1 -1
- package/dist/memory/io/MarkdownExporter.js.map +1 -1
- package/dist/memory/observation/MemoryObserver.d.ts +63 -1
- package/dist/memory/observation/MemoryObserver.d.ts.map +1 -1
- package/dist/memory/observation/MemoryObserver.js +115 -4
- package/dist/memory/observation/MemoryObserver.js.map +1 -1
- package/dist/memory/observation/ObservationCompressor.d.ts +88 -0
- package/dist/memory/observation/ObservationCompressor.d.ts.map +1 -0
- package/dist/memory/observation/ObservationCompressor.js +207 -0
- package/dist/memory/observation/ObservationCompressor.js.map +1 -0
- package/dist/memory/observation/ObservationReflector.d.ts +82 -0
- package/dist/memory/observation/ObservationReflector.d.ts.map +1 -0
- package/dist/memory/observation/ObservationReflector.js +212 -0
- package/dist/memory/observation/ObservationReflector.js.map +1 -0
- package/dist/memory/observation/temporal.d.ts +54 -0
- package/dist/memory/observation/temporal.d.ts.map +1 -0
- package/dist/memory/observation/temporal.js +115 -0
- package/dist/memory/observation/temporal.js.map +1 -0
- package/dist/memory/tools/MemoryAddTool.d.ts +2 -2
- package/dist/memory/tools/MemoryAddTool.d.ts.map +1 -1
- package/dist/memory/tools/MemoryAddTool.js +8 -3
- package/dist/memory/tools/MemoryAddTool.js.map +1 -1
- package/dist/memory/tools/MemorySearchTool.d.ts +3 -3
- package/dist/memory/tools/MemorySearchTool.d.ts.map +1 -1
- package/dist/memory/tools/MemorySearchTool.js +11 -9
- package/dist/memory/tools/MemorySearchTool.js.map +1 -1
- package/dist/memory/tools/scopeContext.d.ts +11 -0
- package/dist/memory/tools/scopeContext.d.ts.map +1 -0
- package/dist/memory/tools/scopeContext.js +46 -0
- package/dist/memory/tools/scopeContext.js.map +1 -0
- package/dist/orchestration/builders/AgentGraph.d.ts +12 -11
- package/dist/orchestration/builders/AgentGraph.d.ts.map +1 -1
- package/dist/orchestration/builders/AgentGraph.js +12 -11
- package/dist/orchestration/builders/AgentGraph.js.map +1 -1
- package/dist/orchestration/builders/VoiceNodeBuilder.d.ts +82 -25
- package/dist/orchestration/builders/VoiceNodeBuilder.d.ts.map +1 -1
- package/dist/orchestration/builders/VoiceNodeBuilder.js +86 -26
- package/dist/orchestration/builders/VoiceNodeBuilder.js.map +1 -1
- package/dist/orchestration/builders/WorkflowBuilder.d.ts +1 -1
- package/dist/orchestration/builders/WorkflowBuilder.d.ts.map +1 -1
- package/dist/orchestration/builders/WorkflowBuilder.js +1 -1
- package/dist/orchestration/builders/WorkflowBuilder.js.map +1 -1
- package/dist/orchestration/checkpoint/InMemoryCheckpointStore.d.ts +7 -54
- package/dist/orchestration/checkpoint/InMemoryCheckpointStore.d.ts.map +1 -1
- package/dist/orchestration/checkpoint/InMemoryCheckpointStore.js +8 -56
- package/dist/orchestration/checkpoint/InMemoryCheckpointStore.js.map +1 -1
- package/dist/orchestration/events/GraphEvent.d.ts +67 -5
- package/dist/orchestration/events/GraphEvent.d.ts.map +1 -1
- package/dist/orchestration/events/GraphEvent.js.map +1 -1
- package/dist/orchestration/runtime/GraphRuntime.d.ts.map +1 -1
- package/dist/orchestration/runtime/GraphRuntime.js +151 -1
- package/dist/orchestration/runtime/GraphRuntime.js.map +1 -1
- package/dist/orchestration/runtime/LoopController.d.ts +3 -3
- package/dist/orchestration/runtime/LoopController.d.ts.map +1 -1
- package/dist/orchestration/runtime/LoopController.js.map +1 -1
- package/dist/orchestration/runtime/StateManager.d.ts +3 -3
- package/dist/orchestration/runtime/StateManager.js +3 -3
- package/dist/orchestration/runtime/VoiceNodeExecutor.d.ts +103 -26
- package/dist/orchestration/runtime/VoiceNodeExecutor.d.ts.map +1 -1
- package/dist/orchestration/runtime/VoiceNodeExecutor.js +155 -43
- package/dist/orchestration/runtime/VoiceNodeExecutor.js.map +1 -1
- package/dist/orchestration/runtime/VoiceTransportAdapter.d.ts +95 -33
- package/dist/orchestration/runtime/VoiceTransportAdapter.d.ts.map +1 -1
- package/dist/orchestration/runtime/VoiceTransportAdapter.js +83 -29
- package/dist/orchestration/runtime/VoiceTransportAdapter.js.map +1 -1
- package/dist/orchestration/runtime/VoiceTurnCollector.d.ts +73 -20
- package/dist/orchestration/runtime/VoiceTurnCollector.d.ts.map +1 -1
- package/dist/orchestration/runtime/VoiceTurnCollector.js +84 -23
- package/dist/orchestration/runtime/VoiceTurnCollector.js.map +1 -1
- package/dist/query-router/KeywordFallback.d.ts +70 -0
- package/dist/query-router/KeywordFallback.d.ts.map +1 -0
- package/dist/query-router/KeywordFallback.js +132 -0
- package/dist/query-router/KeywordFallback.js.map +1 -0
- package/dist/query-router/QueryClassifier.d.ts +140 -0
- package/dist/query-router/QueryClassifier.d.ts.map +1 -0
- package/dist/query-router/QueryClassifier.js +223 -0
- package/dist/query-router/QueryClassifier.js.map +1 -0
- package/dist/query-router/QueryDispatcher.d.ts +139 -0
- package/dist/query-router/QueryDispatcher.d.ts.map +1 -0
- package/dist/query-router/QueryDispatcher.js +297 -0
- package/dist/query-router/QueryDispatcher.js.map +1 -0
- package/dist/query-router/QueryGenerator.d.ts +184 -0
- package/dist/query-router/QueryGenerator.d.ts.map +1 -0
- package/dist/query-router/QueryGenerator.js +241 -0
- package/dist/query-router/QueryGenerator.js.map +1 -0
- package/dist/query-router/QueryRouter.d.ts +292 -0
- package/dist/query-router/QueryRouter.d.ts.map +1 -0
- package/dist/query-router/QueryRouter.js +803 -0
- package/dist/query-router/QueryRouter.js.map +1 -0
- package/dist/query-router/TopicExtractor.d.ts +73 -0
- package/dist/query-router/TopicExtractor.d.ts.map +1 -0
- package/dist/query-router/TopicExtractor.js +95 -0
- package/dist/query-router/TopicExtractor.js.map +1 -0
- package/dist/query-router/index.d.ts +40 -0
- package/dist/query-router/index.d.ts.map +1 -0
- package/dist/query-router/index.js +46 -0
- package/dist/query-router/index.js.map +1 -0
- package/dist/query-router/types.d.ts +508 -0
- package/dist/query-router/types.d.ts.map +1 -0
- package/dist/query-router/types.js +39 -0
- package/dist/query-router/types.js.map +1 -0
- package/dist/rag/index.d.ts +5 -0
- package/dist/rag/index.d.ts.map +1 -1
- package/dist/rag/index.js +7 -0
- package/dist/rag/index.js.map +1 -1
- package/dist/rag/multimodal/LLMVisionAdapter.d.ts +43 -0
- package/dist/rag/multimodal/LLMVisionAdapter.d.ts.map +1 -0
- package/dist/rag/multimodal/LLMVisionAdapter.js +46 -0
- package/dist/rag/multimodal/LLMVisionAdapter.js.map +1 -0
- package/dist/rag/multimodal/MultimodalIndexer.d.ts +244 -0
- package/dist/rag/multimodal/MultimodalIndexer.d.ts.map +1 -0
- package/dist/rag/multimodal/MultimodalIndexer.js +411 -0
- package/dist/rag/multimodal/MultimodalIndexer.js.map +1 -0
- package/dist/rag/multimodal/MultimodalMemoryBridge.d.ts +448 -0
- package/dist/rag/multimodal/MultimodalMemoryBridge.d.ts.map +1 -0
- package/dist/rag/multimodal/MultimodalMemoryBridge.js +941 -0
- package/dist/rag/multimodal/MultimodalMemoryBridge.js.map +1 -0
- package/dist/rag/multimodal/SpeechProviderAdapter.d.ts +139 -0
- package/dist/rag/multimodal/SpeechProviderAdapter.d.ts.map +1 -0
- package/dist/rag/multimodal/SpeechProviderAdapter.js +143 -0
- package/dist/rag/multimodal/SpeechProviderAdapter.js.map +1 -0
- package/dist/rag/multimodal/createMultimodalIndexerFromResolver.d.ts +172 -0
- package/dist/rag/multimodal/createMultimodalIndexerFromResolver.d.ts.map +1 -0
- package/dist/rag/multimodal/createMultimodalIndexerFromResolver.js +152 -0
- package/dist/rag/multimodal/createMultimodalIndexerFromResolver.js.map +1 -0
- package/dist/rag/multimodal/index.d.ts +44 -0
- package/dist/rag/multimodal/index.d.ts.map +1 -0
- package/dist/rag/multimodal/index.js +42 -0
- package/dist/rag/multimodal/index.js.map +1 -0
- package/dist/rag/multimodal/types.d.ts +276 -0
- package/dist/rag/multimodal/types.d.ts.map +1 -0
- package/dist/rag/multimodal/types.js +26 -0
- package/dist/rag/multimodal/types.js.map +1 -0
- package/dist/social-posting/SocialPostManager.d.ts +3 -3
- package/dist/social-posting/SocialPostManager.d.ts.map +1 -1
- package/dist/social-posting/SocialPostManager.js +3 -5
- package/dist/social-posting/SocialPostManager.js.map +1 -1
- package/dist/speech/FallbackProxy.d.ts +6 -6
- package/dist/speech/FallbackProxy.d.ts.map +1 -1
- package/dist/speech/FallbackProxy.js +3 -3
- package/dist/speech/FallbackProxy.js.map +1 -1
- package/dist/speech/SpeechProviderResolver.d.ts +8 -8
- package/dist/speech/SpeechProviderResolver.d.ts.map +1 -1
- package/dist/speech/SpeechProviderResolver.js +22 -11
- package/dist/speech/SpeechProviderResolver.js.map +1 -1
- package/dist/speech/SpeechRuntime.d.ts +1 -5
- package/dist/speech/SpeechRuntime.d.ts.map +1 -1
- package/dist/speech/SpeechRuntime.js +17 -9
- package/dist/speech/SpeechRuntime.js.map +1 -1
- package/dist/speech/providers/AssemblyAISTTProvider.d.ts +4 -4
- package/dist/speech/providers/AssemblyAISTTProvider.js +4 -4
- package/dist/speech/providers/AzureSpeechTTSProvider.d.ts +3 -3
- package/dist/speech/providers/AzureSpeechTTSProvider.js +2 -2
- package/dist/speech/providers/AzureSpeechTTSProvider.js.map +1 -1
- package/dist/speech/providers/BuiltInAdaptiveVadProvider.d.ts +9 -9
- package/dist/speech/providers/BuiltInAdaptiveVadProvider.d.ts.map +1 -1
- package/dist/speech/providers/BuiltInAdaptiveVadProvider.js +5 -5
- package/dist/speech/providers/BuiltInAdaptiveVadProvider.js.map +1 -1
- package/dist/speech/providers/DeepgramBatchSTTProvider.d.ts +2 -2
- package/dist/speech/providers/DeepgramBatchSTTProvider.js +2 -2
- package/dist/speech/providers/OpenAITextToSpeechProvider.d.ts +3 -3
- package/dist/speech/providers/OpenAITextToSpeechProvider.js +2 -2
- package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.d.ts +1 -1
- package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.d.ts.map +1 -1
- package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.js +1 -1
- package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.js.map +1 -1
- package/dist/voice/TelephonyStreamTransport.d.ts +6 -6
- package/dist/voice/TelephonyStreamTransport.d.ts.map +1 -1
- package/dist/voice/TelephonyStreamTransport.js +5 -5
- package/dist/voice/TelephonyStreamTransport.js.map +1 -1
- package/dist/voice-pipeline/AcousticEndpointDetector.d.ts +4 -4
- package/dist/voice-pipeline/AcousticEndpointDetector.d.ts.map +1 -1
- package/dist/voice-pipeline/AcousticEndpointDetector.js +4 -4
- package/dist/voice-pipeline/AcousticEndpointDetector.js.map +1 -1
- package/dist/voice-pipeline/HardCutBargeinHandler.d.ts +3 -3
- package/dist/voice-pipeline/HardCutBargeinHandler.js +3 -3
- package/dist/voice-pipeline/HeuristicEndpointDetector.d.ts +3 -3
- package/dist/voice-pipeline/HeuristicEndpointDetector.d.ts.map +1 -1
- package/dist/voice-pipeline/HeuristicEndpointDetector.js +3 -3
- package/dist/voice-pipeline/HeuristicEndpointDetector.js.map +1 -1
- package/dist/voice-pipeline/SoftFadeBargeinHandler.d.ts +5 -5
- package/dist/voice-pipeline/SoftFadeBargeinHandler.js +1 -1
- package/dist/voice-pipeline/VoiceInterruptError.d.ts +6 -6
- package/dist/voice-pipeline/VoiceInterruptError.d.ts.map +1 -1
- package/dist/voice-pipeline/VoiceInterruptError.js +4 -4
- package/dist/voice-pipeline/VoiceInterruptError.js.map +1 -1
- package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts +9 -9
- package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts.map +1 -1
- package/dist/voice-pipeline/VoicePipelineOrchestrator.js +8 -8
- package/dist/voice-pipeline/VoicePipelineOrchestrator.js.map +1 -1
- package/dist/voice-pipeline/WebRTCStreamTransport.d.ts +421 -0
- package/dist/voice-pipeline/WebRTCStreamTransport.d.ts.map +1 -0
- package/dist/voice-pipeline/WebRTCStreamTransport.js +573 -0
- package/dist/voice-pipeline/WebRTCStreamTransport.js.map +1 -0
- package/dist/voice-pipeline/WebSocketStreamTransport.d.ts +8 -8
- package/dist/voice-pipeline/WebSocketStreamTransport.js +5 -5
- package/dist/voice-pipeline/index.d.ts +1 -0
- package/dist/voice-pipeline/index.d.ts.map +1 -1
- package/dist/voice-pipeline/index.js +2 -0
- package/dist/voice-pipeline/index.js.map +1 -1
- package/dist/voice-pipeline/types.d.ts +43 -43
- package/dist/voice-pipeline/types.d.ts.map +1 -1
- package/package.json +19 -1
|
@@ -7,6 +7,12 @@ import { resolveAgent, checkBeforeAgent } from './shared.js';
|
|
|
7
7
|
* When the response is not valid JSON, or lacks an `approved` boolean, the entire
|
|
8
8
|
* text is treated as feedback and the draft is considered not approved.
|
|
9
9
|
*
|
|
10
|
+
* ## Why parse gracefully?
|
|
11
|
+
*
|
|
12
|
+
* LLMs frequently wrap JSON in markdown code fences or add prose around it.
|
|
13
|
+
* By falling back to "not approved with full text as feedback", we ensure the
|
|
14
|
+
* loop always makes progress instead of crashing on malformed JSON.
|
|
15
|
+
*
|
|
10
16
|
* @param text - Raw reviewer output text.
|
|
11
17
|
* @returns Parsed review with approval status and feedback string.
|
|
12
18
|
*/
|
|
@@ -21,7 +27,7 @@ function parseReview(text) {
|
|
|
21
27
|
}
|
|
22
28
|
}
|
|
23
29
|
catch {
|
|
24
|
-
|
|
30
|
+
// Not valid JSON -- fall through to treat entire text as feedback.
|
|
25
31
|
}
|
|
26
32
|
return { approved: false, feedback: text };
|
|
27
33
|
}
|
|
@@ -35,16 +41,32 @@ function parseReview(text) {
|
|
|
35
41
|
* producer for revision, up to `maxRounds` iterations.
|
|
36
42
|
*
|
|
37
43
|
* @param agents - Named roster of agent configs or pre-built `Agent` instances.
|
|
38
|
-
* At least two agents are required (producer + reviewer).
|
|
44
|
+
* At least two agents are required (producer + reviewer). The first entry
|
|
45
|
+
* is the producer, the second is the reviewer.
|
|
39
46
|
* @param agencyConfig - Agency-level configuration providing fallback model/provider/tools.
|
|
40
47
|
* @returns A {@link CompiledStrategy} with `execute` and `stream` methods.
|
|
41
48
|
* @throws {AgencyConfigError} When fewer than two agents are provided.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* const strategy = compileReviewLoop(
|
|
53
|
+
* {
|
|
54
|
+
* writer: { instructions: 'Write a blog post.' },
|
|
55
|
+
* editor: { instructions: 'Review for clarity and accuracy.' },
|
|
56
|
+
* },
|
|
57
|
+
* { maxRounds: 3, agents: { ... } },
|
|
58
|
+
* );
|
|
59
|
+
* const result = await strategy.execute('Write about TypeScript generics.');
|
|
60
|
+
* // result.text is the final approved draft.
|
|
61
|
+
* ```
|
|
42
62
|
*/
|
|
43
63
|
export function compileReviewLoop(agents, agencyConfig) {
|
|
44
64
|
const entries = Object.entries(agents);
|
|
45
65
|
if (entries.length < 2) {
|
|
46
66
|
throw new AgencyConfigError('Review-loop strategy requires at least two agents (producer + reviewer).');
|
|
47
67
|
}
|
|
68
|
+
// Default to 3 rounds when not specified -- enough for meaningful revision
|
|
69
|
+
// without excessive back-and-forth.
|
|
48
70
|
const maxRounds = agencyConfig.maxRounds ?? 3;
|
|
49
71
|
const [producerName, producerConfig] = entries[0];
|
|
50
72
|
const [reviewerName, reviewerConfig] = entries[1];
|
|
@@ -57,13 +79,16 @@ export function compileReviewLoop(agents, agencyConfig) {
|
|
|
57
79
|
let draft = '';
|
|
58
80
|
let feedback = '';
|
|
59
81
|
for (let round = 0; round < maxRounds; round++) {
|
|
60
|
-
|
|
82
|
+
// ---- HITL: check beforeAgent gate for the producer ----
|
|
61
83
|
const prodDecision = await checkBeforeAgent(producerName, prompt, agentCalls, agencyConfig);
|
|
62
84
|
if (prodDecision && !prodDecision.approved) {
|
|
63
|
-
|
|
85
|
+
// Producer rejected -- terminate the loop early.
|
|
86
|
+
// The current draft (empty or from a prior round) becomes the final output.
|
|
64
87
|
break;
|
|
65
88
|
}
|
|
66
|
-
|
|
89
|
+
// ---- Producer creates or revises ----
|
|
90
|
+
// On the first round, the producer sees the original task.
|
|
91
|
+
// On subsequent rounds, it sees the task + its prior draft + reviewer feedback.
|
|
67
92
|
const prodPrompt = round === 0
|
|
68
93
|
? prompt
|
|
69
94
|
: `${prompt}\n\nYour previous draft:\n${draft}\n\nReviewer feedback:\n${feedback}\n\nRevise your work.`;
|
|
@@ -89,13 +114,13 @@ export function compileReviewLoop(agents, agencyConfig) {
|
|
|
89
114
|
totalUsage.promptTokens += prodUsage.promptTokens ?? 0;
|
|
90
115
|
totalUsage.completionTokens += prodUsage.completionTokens ?? 0;
|
|
91
116
|
totalUsage.totalTokens += prodUsage.totalTokens ?? 0;
|
|
92
|
-
|
|
117
|
+
// ---- HITL: check beforeAgent gate for the reviewer ----
|
|
93
118
|
const revDecision = await checkBeforeAgent(reviewerName, prompt, agentCalls, agencyConfig);
|
|
94
119
|
if (revDecision && !revDecision.approved) {
|
|
95
|
-
|
|
120
|
+
// Reviewer rejected -- accept the current draft and break.
|
|
96
121
|
break;
|
|
97
122
|
}
|
|
98
|
-
|
|
123
|
+
// ---- Reviewer evaluates ----
|
|
99
124
|
const revPrompt = `Review this work for the task: "${prompt}"\n\n` +
|
|
100
125
|
`Draft:\n${draft}\n\n` +
|
|
101
126
|
`Respond with JSON: { "approved": true/false, "feedback": "..." }`;
|
|
@@ -120,7 +145,8 @@ export function compileReviewLoop(agents, agencyConfig) {
|
|
|
120
145
|
totalUsage.promptTokens += revUsage.promptTokens ?? 0;
|
|
121
146
|
totalUsage.completionTokens += revUsage.completionTokens ?? 0;
|
|
122
147
|
totalUsage.totalTokens += revUsage.totalTokens ?? 0;
|
|
123
|
-
|
|
148
|
+
// Parse the review decision. If approved, exit the loop early.
|
|
149
|
+
// If not, capture feedback for the next producer revision.
|
|
124
150
|
const review = parseReview(revText);
|
|
125
151
|
if (review.approved)
|
|
126
152
|
break;
|
|
@@ -129,7 +155,7 @@ export function compileReviewLoop(agents, agencyConfig) {
|
|
|
129
155
|
return { text: draft, agentCalls, usage: totalUsage };
|
|
130
156
|
},
|
|
131
157
|
stream(prompt, opts) {
|
|
132
|
-
|
|
158
|
+
/**
|
|
133
159
|
* For v1: streaming delegates to execute() and wraps the resolved text
|
|
134
160
|
* as a single-chunk async iterable. A future version will stream the
|
|
135
161
|
* producer's output in real-time during the final round.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-loop.js","sourceRoot":"","sources":["../../../src/api/strategies/review-loop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-loop.js","sourceRoot":"","sources":["../../../src/api/strategies/review-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,21 @@ import type { AgencyOptions, CompiledStrategy, Agent, BaseAgentConfig } from '..
|
|
|
5
5
|
* Agents are invoked one-by-one in their declared iteration order. Each agent
|
|
6
6
|
* after the first receives a prompt that includes both the original task and
|
|
7
7
|
* the preceding agent's output, enabling progressive refinement chains such as
|
|
8
|
-
* researcher -> editor -> reviewer
|
|
8
|
+
* `researcher -> editor -> reviewer`.
|
|
9
9
|
*
|
|
10
10
|
* @param agents - Named roster of agent configs or pre-built `Agent` instances.
|
|
11
|
+
* Iteration order of `Object.entries()` determines execution order.
|
|
11
12
|
* @param agencyConfig - Agency-level configuration providing fallback model/provider/tools.
|
|
12
13
|
* @returns A {@link CompiledStrategy} with `execute` and `stream` methods.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const strategy = compileSequential(
|
|
18
|
+
* { researcher: { instructions: 'Find info.' }, writer: { instructions: 'Write summary.' } },
|
|
19
|
+
* agencyConfig,
|
|
20
|
+
* );
|
|
21
|
+
* const result = await strategy.execute('Summarise recent AI research.');
|
|
22
|
+
* ```
|
|
13
23
|
*/
|
|
14
24
|
export declare function compileSequential(agents: Record<string, BaseAgentConfig | Agent>, agencyConfig: AgencyOptions): CompiledStrategy;
|
|
15
25
|
//# sourceMappingURL=sequential.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequential.d.ts","sourceRoot":"","sources":["../../../src/api/strategies/sequential.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sequential.d.ts","sourceRoot":"","sources":["../../../src/api/strategies/sequential.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,KAAK,EACL,eAAe,EAIhB,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,KAAK,CAAC,EAC/C,YAAY,EAAE,aAAa,GAC1B,gBAAgB,CA2NlB"}
|
|
@@ -2,9 +2,24 @@
|
|
|
2
2
|
* @file sequential.ts
|
|
3
3
|
* Sequential strategy compiler for the Agency API.
|
|
4
4
|
*
|
|
5
|
+
* ## Execution model
|
|
6
|
+
*
|
|
5
7
|
* Iterates agents in declaration order. Each agent receives the previous
|
|
6
8
|
* agent's output as context, forming a chain where the final agent's response
|
|
7
9
|
* is the overall result. Token usage is aggregated across all agent calls.
|
|
10
|
+
*
|
|
11
|
+
* This is the simplest and most common strategy -- ideal for pipelines like
|
|
12
|
+
* `researcher -> editor -> reviewer` where each step builds on the previous.
|
|
13
|
+
*
|
|
14
|
+
* ## HITL integration
|
|
15
|
+
*
|
|
16
|
+
* Each agent is gated by {@link checkBeforeAgent} before invocation. If the
|
|
17
|
+
* HITL handler rejects an agent, it is skipped and the chain continues with
|
|
18
|
+
* the next agent using the same context (the rejected agent's contribution
|
|
19
|
+
* is simply omitted).
|
|
20
|
+
*
|
|
21
|
+
* @see {@link compileStrategy} -- the dispatcher that selects this compiler.
|
|
22
|
+
* @see {@link checkBeforeAgent} -- the HITL gate applied before each agent.
|
|
8
23
|
*/
|
|
9
24
|
import { agent as createAgent } from '../agent.js';
|
|
10
25
|
import { isAgent, mergeDefaults, checkBeforeAgent } from './shared.js';
|
|
@@ -14,11 +29,21 @@ import { isAgent, mergeDefaults, checkBeforeAgent } from './shared.js';
|
|
|
14
29
|
* Agents are invoked one-by-one in their declared iteration order. Each agent
|
|
15
30
|
* after the first receives a prompt that includes both the original task and
|
|
16
31
|
* the preceding agent's output, enabling progressive refinement chains such as
|
|
17
|
-
* researcher -> editor -> reviewer
|
|
32
|
+
* `researcher -> editor -> reviewer`.
|
|
18
33
|
*
|
|
19
34
|
* @param agents - Named roster of agent configs or pre-built `Agent` instances.
|
|
35
|
+
* Iteration order of `Object.entries()` determines execution order.
|
|
20
36
|
* @param agencyConfig - Agency-level configuration providing fallback model/provider/tools.
|
|
21
37
|
* @returns A {@link CompiledStrategy} with `execute` and `stream` methods.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* const strategy = compileSequential(
|
|
42
|
+
* { researcher: { instructions: 'Find info.' }, writer: { instructions: 'Write summary.' } },
|
|
43
|
+
* agencyConfig,
|
|
44
|
+
* );
|
|
45
|
+
* const result = await strategy.execute('Summarise recent AI research.');
|
|
46
|
+
* ```
|
|
22
47
|
*/
|
|
23
48
|
export function compileSequential(agents, agencyConfig) {
|
|
24
49
|
return {
|
|
@@ -28,16 +53,21 @@ export function compileSequential(agents, agencyConfig) {
|
|
|
28
53
|
let lastResult = null;
|
|
29
54
|
const totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
|
|
30
55
|
for (const [name, agentOrConfig] of Object.entries(agents)) {
|
|
31
|
-
|
|
56
|
+
// HITL: check beforeAgent gate before invoking this agent.
|
|
57
|
+
// Returns null when no gate applies; returns a decision when the
|
|
58
|
+
// agent is in the approval list.
|
|
32
59
|
const decision = await checkBeforeAgent(name, context, agentCalls, agencyConfig);
|
|
33
60
|
if (decision && !decision.approved) {
|
|
34
|
-
|
|
61
|
+
// Agent was rejected by HITL -- skip and continue to the next
|
|
62
|
+
// agent in the chain. The context remains unchanged.
|
|
35
63
|
continue;
|
|
36
64
|
}
|
|
37
65
|
const a = isAgent(agentOrConfig)
|
|
38
66
|
? agentOrConfig
|
|
39
67
|
: createAgent({ ...mergeDefaults(agentOrConfig, agencyConfig) });
|
|
40
|
-
|
|
68
|
+
// Apply instruction modifications from the approval decision if any.
|
|
69
|
+
// This allows the human reviewer to inject additional guidance into
|
|
70
|
+
// the agent's context without modifying the original prompt.
|
|
41
71
|
const effectiveContext = decision?.modifications?.instructions
|
|
42
72
|
? `${context}\n\n[Additional instructions]: ${decision.modifications.instructions}`
|
|
43
73
|
: context;
|
|
@@ -62,20 +92,21 @@ export function compileSequential(agents, agencyConfig) {
|
|
|
62
92
|
totalUsage.promptTokens += resultUsage.promptTokens ?? 0;
|
|
63
93
|
totalUsage.completionTokens += resultUsage.completionTokens ?? 0;
|
|
64
94
|
totalUsage.totalTokens += resultUsage.totalTokens ?? 0;
|
|
65
|
-
|
|
95
|
+
// Chain: subsequent agents see the original task plus previous output.
|
|
96
|
+
// This ensures each agent has full context without losing the original prompt.
|
|
66
97
|
context = `Original task: ${prompt}\n\nPrevious agent (${name}) output:\n${resultText}`;
|
|
67
98
|
lastResult = result;
|
|
68
99
|
}
|
|
69
100
|
return { ...lastResult, agentCalls, usage: totalUsage };
|
|
70
101
|
},
|
|
71
102
|
stream(prompt, opts) {
|
|
72
|
-
|
|
103
|
+
/**
|
|
73
104
|
* Real streaming for the sequential strategy: yields per-agent
|
|
74
105
|
* `agent-start` and `agent-end` events bracketing each agent's text
|
|
75
106
|
* tokens, plus agency-level start/end events wrapping the whole run.
|
|
76
107
|
*
|
|
77
108
|
* `fullStream` emits the full {@link AgencyStreamPart} union so callers
|
|
78
|
-
* can observe every agent transition.
|
|
109
|
+
* can observe every agent transition. `textStream` filters to just the
|
|
79
110
|
* `text` parts so the result stays compatible with `StreamTextResult`.
|
|
80
111
|
*
|
|
81
112
|
* Usage accounting is collected per-agent and summed into a final total.
|
|
@@ -147,7 +178,7 @@ export function compileSequential(agents, agencyConfig) {
|
|
|
147
178
|
durationMs: totalDurationMs,
|
|
148
179
|
};
|
|
149
180
|
}
|
|
150
|
-
|
|
181
|
+
/**
|
|
151
182
|
* Because an `AsyncGenerator` can only be iterated once, we materialise
|
|
152
183
|
* a single generator and share it between `fullStream`, `textStream`,
|
|
153
184
|
* `text`, and `usage` by buffering all events.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequential.js","sourceRoot":"","sources":["../../../src/api/strategies/sequential.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sequential.js","sourceRoot":"","sources":["../../../src/api/strategies/sequential.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,72 @@
|
|
|
1
1
|
import type { AgencyOptions, Agent, BaseAgentConfig, AgentCallRecord, ApprovalDecision } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Type guard that checks whether a value is a pre-built {@link Agent} instance
|
|
4
|
-
* (has a `generate` method) vs a raw
|
|
4
|
+
* (has a `generate` method) vs a raw `BaseAgentConfig` object.
|
|
5
|
+
*
|
|
6
|
+
* Uses duck-typing on the `generate` method rather than `instanceof` because
|
|
7
|
+
* Agent instances may come from different module copies (e.g. nested agencies
|
|
8
|
+
* created in separate compilation contexts). Duck-typing is more resilient
|
|
9
|
+
* to this scenario.
|
|
5
10
|
*
|
|
6
11
|
* @param value - Either a config object or a running agent.
|
|
7
|
-
* @returns `true` when the value is a pre-built `Agent`.
|
|
12
|
+
* @returns `true` when the value is a pre-built `Agent` with a callable `generate`.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const agentOrConfig: BaseAgentConfig | Agent = getFromRoster('worker');
|
|
17
|
+
* if (isAgent(agentOrConfig)) {
|
|
18
|
+
* // agentOrConfig.generate() is callable
|
|
19
|
+
* } else {
|
|
20
|
+
* // agentOrConfig is a raw config, needs agent() factory
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
8
23
|
*/
|
|
9
24
|
export declare function isAgent(value: BaseAgentConfig | Agent): value is Agent;
|
|
10
25
|
/**
|
|
11
26
|
* Merge agency-level defaults into an agent config.
|
|
12
27
|
*
|
|
13
|
-
* Agent-level values take precedence
|
|
14
|
-
* a base layer
|
|
28
|
+
* Agent-level values take precedence over agency-level defaults. Tools are
|
|
29
|
+
* merged additively: agency tools serve as a base layer and agent tools
|
|
30
|
+
* override on name collision. This lets an agency provide a shared tool
|
|
31
|
+
* set while individual agents can override or extend it.
|
|
15
32
|
*
|
|
16
|
-
* @param agentConfig - Per-agent configuration.
|
|
17
|
-
* @param agencyConfig - Agency-level fallback values.
|
|
33
|
+
* @param agentConfig - Per-agent configuration (takes precedence).
|
|
34
|
+
* @param agencyConfig - Agency-level fallback values (base layer).
|
|
18
35
|
* @returns A merged config suitable for passing to `agent()`.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const merged = mergeDefaults(
|
|
40
|
+
* { instructions: 'Write code.' },
|
|
41
|
+
* { model: 'openai:gpt-4o', tools: { search: searchTool } },
|
|
42
|
+
* );
|
|
43
|
+
* // merged.model === 'openai:gpt-4o' (agency default)
|
|
44
|
+
* // merged.instructions === 'Write code.' (agent override)
|
|
45
|
+
* // merged.tools contains `search` from agency
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @see {@link resolveAgent} -- calls this internally before creating an agent.
|
|
19
49
|
*/
|
|
20
50
|
export declare function mergeDefaults(agentConfig: BaseAgentConfig, agencyConfig: AgencyOptions): BaseAgentConfig;
|
|
21
51
|
/**
|
|
22
52
|
* Resolves an agent-or-config value into a usable {@link Agent} instance.
|
|
23
53
|
*
|
|
54
|
+
* If the value is already a pre-built Agent, it is returned as-is.
|
|
55
|
+
* If it is a raw BaseAgentConfig, agency defaults are merged and a new
|
|
56
|
+
* Agent is created via the `agent()` factory.
|
|
57
|
+
*
|
|
24
58
|
* @param agentOrConfig - Either a pre-built Agent or a raw BaseAgentConfig.
|
|
25
59
|
* @param agencyConfig - Agency-level fallback values for config merging.
|
|
26
60
|
* @returns A ready-to-call Agent instance.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* const agent = resolveAgent(roster['worker'], agencyConfig);
|
|
65
|
+
* const result = await agent.generate('Do the task.');
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* @see {@link isAgent} -- determines whether the value needs factory creation.
|
|
69
|
+
* @see {@link mergeDefaults} -- applies agency-level fallback values.
|
|
27
70
|
*/
|
|
28
71
|
export declare function resolveAgent(agentOrConfig: BaseAgentConfig | Agent, agencyConfig: AgencyOptions): Agent;
|
|
29
72
|
/**
|
|
@@ -32,13 +75,34 @@ export declare function resolveAgent(agentOrConfig: BaseAgentConfig | Agent, age
|
|
|
32
75
|
* When the agency-level `hitl.approvals.beforeAgent` list includes the agent
|
|
33
76
|
* name, this function invokes the HITL handler and returns the decision.
|
|
34
77
|
* If the agent name is not in the approval list, or no handler is configured,
|
|
35
|
-
* returns `null` (meaning "no gate
|
|
78
|
+
* returns `null` (meaning "no gate -- proceed normally").
|
|
79
|
+
*
|
|
80
|
+
* ## Why return `null` instead of `{ approved: true }`?
|
|
81
|
+
*
|
|
82
|
+
* Returning `null` lets callers distinguish between "no gate configured"
|
|
83
|
+
* (null -- proceed without any HITL overhead) and "gate evaluated, approved"
|
|
84
|
+
* (`{ approved: true }` -- proceed but may carry instruction modifications
|
|
85
|
+
* from the approver).
|
|
36
86
|
*
|
|
37
87
|
* @param name - The agent's declared name in the roster.
|
|
38
88
|
* @param context - The input/context string the agent would receive.
|
|
39
89
|
* @param agentCalls - Agent call records accumulated so far in this run.
|
|
40
|
-
*
|
|
90
|
+
* Included in the approval request for context.
|
|
91
|
+
* @param agencyConfig - The full agency configuration containing HITL settings.
|
|
41
92
|
* @returns The approval decision, or `null` when no gate applies.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* const decision = await checkBeforeAgent('researcher', prompt, calls, config);
|
|
97
|
+
* if (decision && !decision.approved) {
|
|
98
|
+
* // Agent was rejected by HITL -- skip or abort.
|
|
99
|
+
* return;
|
|
100
|
+
* }
|
|
101
|
+
* // Proceed with agent invocation.
|
|
102
|
+
* ```
|
|
103
|
+
*
|
|
104
|
+
* @see {@link HitlConfig} -- defines the approval triggers and handler.
|
|
105
|
+
* @see {@link ApprovalRequest} -- the shape passed to the handler.
|
|
42
106
|
*/
|
|
43
107
|
export declare function checkBeforeAgent(name: string, context: string, agentCalls: AgentCallRecord[], agencyConfig: AgencyOptions): Promise<ApprovalDecision | null>;
|
|
44
108
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/api/strategies/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/api/strategies/shared.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,eAAe,EACf,eAAe,EAEf,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,CAEtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,aAAa,GAC1B,eAAe,CAcjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,eAAe,GAAG,KAAK,EACtC,YAAY,EAAE,aAAa,GAC1B,KAAK,CAIP;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,EAAE,EAC7B,YAAY,EAAE,aAAa,GAC1B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAkClC"}
|
|
@@ -2,16 +2,37 @@
|
|
|
2
2
|
* @file shared.ts
|
|
3
3
|
* Shared utilities for strategy compilers.
|
|
4
4
|
*
|
|
5
|
-
* Centralises `mergeDefaults()`, `resolveAgent()`, and
|
|
6
|
-
* so every strategy compiler uses a single implementation.
|
|
5
|
+
* Centralises `isAgent()`, `mergeDefaults()`, `resolveAgent()`, and
|
|
6
|
+
* `checkBeforeAgent()` so every strategy compiler uses a single implementation.
|
|
7
|
+
* This avoids subtle divergence in how configs are merged or how HITL gates
|
|
8
|
+
* are evaluated across sequential, parallel, debate, review-loop, and
|
|
9
|
+
* hierarchical strategies.
|
|
10
|
+
*
|
|
11
|
+
* @see {@link compileStrategy} -- the dispatcher that selects and invokes strategy compilers.
|
|
7
12
|
*/
|
|
8
13
|
import { agent as createAgent } from '../agent.js';
|
|
14
|
+
import { mergeAdaptableTools } from '../toolAdapter.js';
|
|
9
15
|
/**
|
|
10
16
|
* Type guard that checks whether a value is a pre-built {@link Agent} instance
|
|
11
|
-
* (has a `generate` method) vs a raw
|
|
17
|
+
* (has a `generate` method) vs a raw `BaseAgentConfig` object.
|
|
18
|
+
*
|
|
19
|
+
* Uses duck-typing on the `generate` method rather than `instanceof` because
|
|
20
|
+
* Agent instances may come from different module copies (e.g. nested agencies
|
|
21
|
+
* created in separate compilation contexts). Duck-typing is more resilient
|
|
22
|
+
* to this scenario.
|
|
12
23
|
*
|
|
13
24
|
* @param value - Either a config object or a running agent.
|
|
14
|
-
* @returns `true` when the value is a pre-built `Agent`.
|
|
25
|
+
* @returns `true` when the value is a pre-built `Agent` with a callable `generate`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const agentOrConfig: BaseAgentConfig | Agent = getFromRoster('worker');
|
|
30
|
+
* if (isAgent(agentOrConfig)) {
|
|
31
|
+
* // agentOrConfig.generate() is callable
|
|
32
|
+
* } else {
|
|
33
|
+
* // agentOrConfig is a raw config, needs agent() factory
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
15
36
|
*/
|
|
16
37
|
export function isAgent(value) {
|
|
17
38
|
return typeof value.generate === 'function';
|
|
@@ -19,30 +40,62 @@ export function isAgent(value) {
|
|
|
19
40
|
/**
|
|
20
41
|
* Merge agency-level defaults into an agent config.
|
|
21
42
|
*
|
|
22
|
-
* Agent-level values take precedence
|
|
23
|
-
* a base layer
|
|
43
|
+
* Agent-level values take precedence over agency-level defaults. Tools are
|
|
44
|
+
* merged additively: agency tools serve as a base layer and agent tools
|
|
45
|
+
* override on name collision. This lets an agency provide a shared tool
|
|
46
|
+
* set while individual agents can override or extend it.
|
|
24
47
|
*
|
|
25
|
-
* @param agentConfig - Per-agent configuration.
|
|
26
|
-
* @param agencyConfig - Agency-level fallback values.
|
|
48
|
+
* @param agentConfig - Per-agent configuration (takes precedence).
|
|
49
|
+
* @param agencyConfig - Agency-level fallback values (base layer).
|
|
27
50
|
* @returns A merged config suitable for passing to `agent()`.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* const merged = mergeDefaults(
|
|
55
|
+
* { instructions: 'Write code.' },
|
|
56
|
+
* { model: 'openai:gpt-4o', tools: { search: searchTool } },
|
|
57
|
+
* );
|
|
58
|
+
* // merged.model === 'openai:gpt-4o' (agency default)
|
|
59
|
+
* // merged.instructions === 'Write code.' (agent override)
|
|
60
|
+
* // merged.tools contains `search` from agency
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* @see {@link resolveAgent} -- calls this internally before creating an agent.
|
|
28
64
|
*/
|
|
29
65
|
export function mergeDefaults(agentConfig, agencyConfig) {
|
|
30
66
|
return {
|
|
67
|
+
// Agency-level model/provider/apiKey/baseUrl serve as defaults.
|
|
68
|
+
// They are placed BEFORE the spread of agentConfig so that agent-level
|
|
69
|
+
// values override them when present.
|
|
31
70
|
model: agentConfig.model ?? agencyConfig.model,
|
|
32
71
|
provider: agentConfig.provider ?? agencyConfig.provider,
|
|
33
72
|
apiKey: agentConfig.apiKey ?? agencyConfig.apiKey,
|
|
34
73
|
baseUrl: agentConfig.baseUrl ?? agencyConfig.baseUrl,
|
|
35
74
|
...agentConfig,
|
|
36
|
-
|
|
37
|
-
|
|
75
|
+
// Tools are merged separately because we want additive merging
|
|
76
|
+
// (agency tools + agent tools) rather than wholesale replacement.
|
|
77
|
+
tools: mergeAdaptableTools(agencyConfig.tools, agentConfig.tools),
|
|
38
78
|
};
|
|
39
79
|
}
|
|
40
80
|
/**
|
|
41
81
|
* Resolves an agent-or-config value into a usable {@link Agent} instance.
|
|
42
82
|
*
|
|
83
|
+
* If the value is already a pre-built Agent, it is returned as-is.
|
|
84
|
+
* If it is a raw BaseAgentConfig, agency defaults are merged and a new
|
|
85
|
+
* Agent is created via the `agent()` factory.
|
|
86
|
+
*
|
|
43
87
|
* @param agentOrConfig - Either a pre-built Agent or a raw BaseAgentConfig.
|
|
44
88
|
* @param agencyConfig - Agency-level fallback values for config merging.
|
|
45
89
|
* @returns A ready-to-call Agent instance.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* const agent = resolveAgent(roster['worker'], agencyConfig);
|
|
94
|
+
* const result = await agent.generate('Do the task.');
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* @see {@link isAgent} -- determines whether the value needs factory creation.
|
|
98
|
+
* @see {@link mergeDefaults} -- applies agency-level fallback values.
|
|
46
99
|
*/
|
|
47
100
|
export function resolveAgent(agentOrConfig, agencyConfig) {
|
|
48
101
|
return isAgent(agentOrConfig)
|
|
@@ -55,20 +108,44 @@ export function resolveAgent(agentOrConfig, agencyConfig) {
|
|
|
55
108
|
* When the agency-level `hitl.approvals.beforeAgent` list includes the agent
|
|
56
109
|
* name, this function invokes the HITL handler and returns the decision.
|
|
57
110
|
* If the agent name is not in the approval list, or no handler is configured,
|
|
58
|
-
* returns `null` (meaning "no gate
|
|
111
|
+
* returns `null` (meaning "no gate -- proceed normally").
|
|
112
|
+
*
|
|
113
|
+
* ## Why return `null` instead of `{ approved: true }`?
|
|
114
|
+
*
|
|
115
|
+
* Returning `null` lets callers distinguish between "no gate configured"
|
|
116
|
+
* (null -- proceed without any HITL overhead) and "gate evaluated, approved"
|
|
117
|
+
* (`{ approved: true }` -- proceed but may carry instruction modifications
|
|
118
|
+
* from the approver).
|
|
59
119
|
*
|
|
60
120
|
* @param name - The agent's declared name in the roster.
|
|
61
121
|
* @param context - The input/context string the agent would receive.
|
|
62
122
|
* @param agentCalls - Agent call records accumulated so far in this run.
|
|
63
|
-
*
|
|
123
|
+
* Included in the approval request for context.
|
|
124
|
+
* @param agencyConfig - The full agency configuration containing HITL settings.
|
|
64
125
|
* @returns The approval decision, or `null` when no gate applies.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* const decision = await checkBeforeAgent('researcher', prompt, calls, config);
|
|
130
|
+
* if (decision && !decision.approved) {
|
|
131
|
+
* // Agent was rejected by HITL -- skip or abort.
|
|
132
|
+
* return;
|
|
133
|
+
* }
|
|
134
|
+
* // Proceed with agent invocation.
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
137
|
+
* @see {@link HitlConfig} -- defines the approval triggers and handler.
|
|
138
|
+
* @see {@link ApprovalRequest} -- the shape passed to the handler.
|
|
65
139
|
*/
|
|
66
140
|
export async function checkBeforeAgent(name, context, agentCalls, agencyConfig) {
|
|
67
141
|
const beforeAgent = agencyConfig.hitl?.approvals?.beforeAgent;
|
|
68
142
|
const handler = agencyConfig.hitl?.handler;
|
|
143
|
+
// Short-circuit: no gate configured or agent not in the approval list.
|
|
69
144
|
if (!beforeAgent?.includes(name) || !handler) {
|
|
70
145
|
return null;
|
|
71
146
|
}
|
|
147
|
+
// Build the approval request with full run context so the human reviewer
|
|
148
|
+
// can make an informed decision.
|
|
72
149
|
const request = {
|
|
73
150
|
id: crypto.randomUUID(),
|
|
74
151
|
type: 'agent',
|
|
@@ -83,8 +160,11 @@ export async function checkBeforeAgent(name, context, agentCalls, agencyConfig)
|
|
|
83
160
|
elapsedMs: 0,
|
|
84
161
|
},
|
|
85
162
|
};
|
|
163
|
+
// Fire the approvalRequested callback so event consumers (UI, logs)
|
|
164
|
+
// can display the pending approval.
|
|
86
165
|
agencyConfig.on?.approvalRequested?.(request);
|
|
87
166
|
const decision = await handler(request);
|
|
167
|
+
// Fire the approvalDecided callback so event consumers know the outcome.
|
|
88
168
|
agencyConfig.on?.approvalDecided?.(decision);
|
|
89
169
|
return decision;
|
|
90
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/api/strategies/shared.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/api/strategies/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAUxD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,OAAO,CAAC,KAA8B;IACpD,OAAO,OAAQ,KAAe,CAAC,QAAQ,KAAK,UAAU,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,aAAa,CAC3B,WAA4B,EAC5B,YAA2B;IAE3B,OAAO;QACL,gEAAgE;QAChE,uEAAuE;QACvE,qCAAqC;QACrC,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK;QAC9C,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ;QACvD,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM;QACjD,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO;QACpD,GAAG,WAAW;QACd,+DAA+D;QAC/D,kEAAkE;QAClE,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;KAClE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,YAAY,CAC1B,aAAsC,EACtC,YAA2B;IAE3B,OAAO,OAAO,CAAC,aAAa,CAAC;QAC3B,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,OAAe,EACf,UAA6B,EAC7B,YAA2B;IAE3B,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC;IAC9D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;IAE3C,uEAAuE;IACvE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,iCAAiC;IACjC,MAAM,OAAO,GAAoB;QAC/B,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;QACvB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,UAAU,IAAI,uBAAuB;QAClD,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAC3B,OAAO,EAAE;YACP,UAAU;YACV,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;SACb;KACF,CAAC;IAEF,oEAAoE;IACpE,oCAAoC;IACpC,YAAY,CAAC,EAAE,EAAE,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,yEAAyE;IACzE,YAAY,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;IAE7C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|