agentic-flow 1.10.1 → 1.10.2
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/CHANGELOG.md +25 -1338
- package/dist/.tsbuildinfo +1 -0
- package/dist/agentdb/index.d.ts +26 -0
- package/dist/agentdb/index.d.ts.map +1 -0
- package/dist/agentdb/index.js +1 -0
- package/dist/agentdb/index.js.map +1 -0
- package/dist/agentdb/validate-frontier.cjs +416 -0
- package/dist/agentdb/validate-frontier.cjs.map +1 -0
- package/dist/agentdb/validate-frontier.d.cts +2 -0
- package/dist/agentdb/validate-frontier.d.cts.map +1 -0
- package/dist/agents/claudeAgent.d.ts +6 -0
- package/dist/agents/claudeAgent.d.ts.map +1 -0
- package/dist/agents/claudeAgent.js +22 -3
- package/dist/agents/claudeAgent.js.map +1 -0
- package/dist/agents/claudeAgentDirect.d.ts +6 -0
- package/dist/agents/claudeAgentDirect.d.ts.map +1 -0
- package/dist/agents/claudeAgentDirect.js +1 -0
- package/dist/agents/claudeAgentDirect.js.map +1 -0
- package/dist/agents/claudeFlowAgent.d.ts +32 -0
- package/dist/agents/claudeFlowAgent.d.ts.map +1 -0
- package/dist/agents/claudeFlowAgent.js +1 -0
- package/dist/agents/claudeFlowAgent.js.map +1 -0
- package/dist/agents/codeReviewAgent.d.ts +4 -0
- package/dist/agents/codeReviewAgent.d.ts.map +1 -0
- package/dist/agents/codeReviewAgent.js +1 -0
- package/dist/agents/codeReviewAgent.js.map +1 -0
- package/dist/agents/dataAgent.d.ts +4 -0
- package/dist/agents/dataAgent.d.ts.map +1 -0
- package/dist/agents/dataAgent.js +1 -0
- package/dist/agents/dataAgent.js.map +1 -0
- package/dist/agents/directApiAgent.d.ts +10 -0
- package/dist/agents/directApiAgent.d.ts.map +1 -0
- package/dist/agents/directApiAgent.js +1 -0
- package/dist/agents/directApiAgent.js.map +1 -0
- package/dist/agents/webResearchAgent.d.ts +4 -0
- package/dist/agents/webResearchAgent.d.ts.map +1 -0
- package/dist/agents/webResearchAgent.js +1 -0
- package/dist/agents/webResearchAgent.js.map +1 -0
- package/dist/cli/agent-manager.d.ts +57 -0
- package/dist/cli/agent-manager.d.ts.map +1 -0
- package/dist/cli/agent-manager.js +1 -0
- package/dist/cli/agent-manager.js.map +1 -0
- package/dist/cli/claude-code-wrapper.d.ts +21 -0
- package/dist/cli/claude-code-wrapper.d.ts.map +1 -0
- package/dist/cli/claude-code-wrapper.js +1 -0
- package/dist/cli/claude-code-wrapper.js.map +1 -0
- package/dist/cli/config-wizard.d.ts +21 -0
- package/dist/cli/config-wizard.d.ts.map +1 -0
- package/dist/cli/config-wizard.js +1 -0
- package/dist/cli/config-wizard.js.map +1 -0
- package/dist/cli/federation-cli.d.ts +1 -0
- package/dist/cli/federation-cli.d.ts.map +1 -0
- package/dist/cli/federation-cli.js +1 -0
- package/dist/cli/federation-cli.js.map +1 -0
- package/dist/cli/mcp-manager.d.ts +12 -0
- package/dist/cli/mcp-manager.d.ts.map +1 -0
- package/dist/cli/mcp-manager.js +1 -0
- package/dist/cli/mcp-manager.js.map +1 -0
- package/dist/cli/mcp.d.ts +11 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +1 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli-proxy.d.ts +7 -0
- package/dist/cli-proxy.d.ts.map +1 -0
- package/dist/cli-proxy.js +1 -0
- package/dist/cli-proxy.js.map +1 -0
- package/dist/cli-standalone-proxy.d.ts +17 -0
- package/dist/cli-standalone-proxy.d.ts.map +1 -0
- package/dist/cli-standalone-proxy.js +1 -0
- package/dist/cli-standalone-proxy.js.map +1 -0
- package/dist/config/claudeFlow.d.ts +33 -0
- package/dist/config/claudeFlow.d.ts.map +1 -0
- package/dist/config/claudeFlow.js +1 -0
- package/dist/config/claudeFlow.js.map +1 -0
- package/dist/config/quic.d.ts +58 -0
- package/dist/config/quic.d.ts.map +1 -0
- package/dist/config/quic.js +1 -0
- package/dist/config/quic.js.map +1 -0
- package/dist/config/tools.d.ts +17 -0
- package/dist/config/tools.d.ts.map +1 -0
- package/dist/config/tools.js +1 -0
- package/dist/config/tools.js.map +1 -0
- package/dist/core/long-running-agent.d.ts +92 -0
- package/dist/core/long-running-agent.d.ts.map +1 -0
- package/dist/core/long-running-agent.js +1 -0
- package/dist/core/long-running-agent.js.map +1 -0
- package/dist/core/provider-manager.d.ts +145 -0
- package/dist/core/provider-manager.d.ts.map +1 -0
- package/dist/core/provider-manager.js +1 -0
- package/dist/core/provider-manager.js.map +1 -0
- package/dist/examples/multi-agent-orchestration.d.ts +3 -0
- package/dist/examples/multi-agent-orchestration.d.ts.map +1 -0
- package/dist/examples/multi-agent-orchestration.js +1 -0
- package/dist/examples/multi-agent-orchestration.js.map +1 -0
- package/dist/examples/use-goal-planner.d.ts +3 -0
- package/dist/examples/use-goal-planner.d.ts.map +1 -0
- package/dist/examples/use-goal-planner.js +1 -0
- package/dist/examples/use-goal-planner.js.map +1 -0
- package/dist/examples/use-provider-fallback.d.ts +13 -0
- package/dist/examples/use-provider-fallback.d.ts.map +1 -0
- package/dist/examples/use-provider-fallback.js +1 -0
- package/dist/examples/use-provider-fallback.js.map +1 -0
- package/dist/federation/EphemeralAgent.d.ts +84 -0
- package/dist/federation/EphemeralAgent.d.ts.map +1 -0
- package/dist/federation/EphemeralAgent.js +1 -0
- package/dist/federation/EphemeralAgent.js.map +1 -0
- package/dist/federation/FederationHub.d.ts +89 -0
- package/dist/federation/FederationHub.d.ts.map +1 -0
- package/dist/federation/FederationHub.js +1 -0
- package/dist/federation/FederationHub.js.map +1 -0
- package/dist/federation/FederationHubClient.d.ts +70 -0
- package/dist/federation/FederationHubClient.d.ts.map +1 -0
- package/dist/federation/FederationHubClient.js +1 -0
- package/dist/federation/FederationHubClient.js.map +1 -0
- package/dist/federation/FederationHubServer.d.ts +100 -0
- package/dist/federation/FederationHubServer.d.ts.map +1 -0
- package/dist/federation/FederationHubServer.js +1 -0
- package/dist/federation/FederationHubServer.js.map +1 -0
- package/dist/federation/SecurityManager.d.ts +80 -0
- package/dist/federation/SecurityManager.d.ts.map +1 -0
- package/dist/federation/SecurityManager.js +1 -0
- package/dist/federation/SecurityManager.js.map +1 -0
- package/dist/federation/debug/agent-debug-stream.d.ts +171 -0
- package/dist/federation/debug/agent-debug-stream.d.ts.map +1 -0
- package/dist/federation/debug/agent-debug-stream.js +1 -0
- package/dist/federation/debug/agent-debug-stream.js.map +1 -0
- package/dist/federation/debug/debug-stream.d.ts +157 -0
- package/dist/federation/debug/debug-stream.d.ts.map +1 -0
- package/dist/federation/debug/debug-stream.js +1 -0
- package/dist/federation/debug/debug-stream.js.map +1 -0
- package/dist/federation/index.d.ts +13 -0
- package/dist/federation/index.d.ts.map +1 -0
- package/dist/federation/index.js +1 -0
- package/dist/federation/index.js.map +1 -0
- package/dist/federation/integrations/realtime-federation.d.ts +144 -0
- package/dist/federation/integrations/realtime-federation.d.ts.map +1 -0
- package/dist/federation/integrations/realtime-federation.js +1 -0
- package/dist/federation/integrations/realtime-federation.js.map +1 -0
- package/dist/federation/integrations/supabase-adapter-debug.d.ts +91 -0
- package/dist/federation/integrations/supabase-adapter-debug.d.ts.map +1 -0
- package/dist/federation/integrations/supabase-adapter-debug.js +1 -0
- package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -0
- package/dist/federation/integrations/supabase-adapter.d.ts +89 -0
- package/dist/federation/integrations/supabase-adapter.d.ts.map +1 -0
- package/dist/federation/integrations/supabase-adapter.js +1 -0
- package/dist/federation/integrations/supabase-adapter.js.map +1 -0
- package/dist/health.d.ts +28 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +1 -0
- package/dist/health.js.map +1 -0
- package/dist/hooks/parallel-validation.d.ts +51 -0
- package/dist/hooks/parallel-validation.d.ts.map +1 -0
- package/dist/hooks/parallel-validation.js +1 -0
- package/dist/hooks/parallel-validation.js.map +1 -0
- package/dist/hooks/swarm-learning-optimizer.d.ts +89 -0
- package/dist/hooks/swarm-learning-optimizer.d.ts.map +1 -0
- package/dist/hooks/swarm-learning-optimizer.js +1 -0
- package/dist/hooks/swarm-learning-optimizer.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/claudeFlowSdkServer.d.ts +6 -0
- package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -0
- package/dist/mcp/claudeFlowSdkServer.js +1 -0
- package/dist/mcp/claudeFlowSdkServer.js.map +1 -0
- package/dist/mcp/fastmcp/servers/claude-flow-sdk.d.ts +3 -0
- package/dist/mcp/fastmcp/servers/claude-flow-sdk.d.ts.map +1 -0
- package/dist/mcp/fastmcp/servers/claude-flow-sdk.js +1 -0
- package/dist/mcp/fastmcp/servers/claude-flow-sdk.js.map +1 -0
- package/dist/mcp/fastmcp/servers/http-sse.d.ts +3 -0
- package/dist/mcp/fastmcp/servers/http-sse.d.ts.map +1 -0
- package/dist/mcp/fastmcp/servers/http-sse.js +1 -0
- package/dist/mcp/fastmcp/servers/http-sse.js.map +1 -0
- package/dist/mcp/fastmcp/servers/http-streaming-updated.d.ts +3 -0
- package/dist/mcp/fastmcp/servers/http-streaming-updated.d.ts.map +1 -0
- package/dist/mcp/fastmcp/servers/http-streaming-updated.js +1 -0
- package/dist/mcp/fastmcp/servers/http-streaming-updated.js.map +1 -0
- package/dist/mcp/fastmcp/servers/poc-stdio.d.ts +3 -0
- package/dist/mcp/fastmcp/servers/poc-stdio.d.ts.map +1 -0
- package/dist/mcp/fastmcp/servers/poc-stdio.js +1 -0
- package/dist/mcp/fastmcp/servers/poc-stdio.js.map +1 -0
- package/dist/mcp/fastmcp/servers/stdio-full.d.ts +3 -0
- package/dist/mcp/fastmcp/servers/stdio-full.d.ts.map +1 -0
- package/dist/mcp/fastmcp/servers/stdio-full.js +1 -0
- package/dist/mcp/fastmcp/servers/stdio-full.js.map +1 -0
- package/dist/mcp/fastmcp/tools/agent/add-agent.d.ts +3 -0
- package/dist/mcp/fastmcp/tools/agent/add-agent.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/agent/add-agent.js +1 -0
- package/dist/mcp/fastmcp/tools/agent/add-agent.js.map +1 -0
- package/dist/mcp/fastmcp/tools/agent/add-command.d.ts +3 -0
- package/dist/mcp/fastmcp/tools/agent/add-command.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/agent/add-command.js +1 -0
- package/dist/mcp/fastmcp/tools/agent/add-command.js.map +1 -0
- package/dist/mcp/fastmcp/tools/agent/execute.d.ts +3 -0
- package/dist/mcp/fastmcp/tools/agent/execute.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/agent/execute.js +1 -0
- package/dist/mcp/fastmcp/tools/agent/execute.js.map +1 -0
- package/dist/mcp/fastmcp/tools/agent/list.d.ts +3 -0
- package/dist/mcp/fastmcp/tools/agent/list.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/agent/list.js +1 -0
- package/dist/mcp/fastmcp/tools/agent/list.js.map +1 -0
- package/dist/mcp/fastmcp/tools/agent/parallel.d.ts +3 -0
- package/dist/mcp/fastmcp/tools/agent/parallel.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/agent/parallel.js +1 -0
- package/dist/mcp/fastmcp/tools/agent/parallel.js.map +1 -0
- package/dist/mcp/fastmcp/tools/swarm/init.d.ts +3 -0
- package/dist/mcp/fastmcp/tools/swarm/init.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/swarm/init.js +1 -0
- package/dist/mcp/fastmcp/tools/swarm/init.js.map +1 -0
- package/dist/mcp/fastmcp/tools/swarm/orchestrate.d.ts +3 -0
- package/dist/mcp/fastmcp/tools/swarm/orchestrate.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/swarm/orchestrate.js +1 -0
- package/dist/mcp/fastmcp/tools/swarm/orchestrate.js.map +1 -0
- package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts +3 -0
- package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/swarm/spawn.js +1 -0
- package/dist/mcp/fastmcp/tools/swarm/spawn.js.map +1 -0
- package/dist/mcp/fastmcp/types/index.d.ts +33 -0
- package/dist/mcp/fastmcp/types/index.d.ts.map +1 -0
- package/dist/mcp/fastmcp/types/index.js +1 -0
- package/dist/mcp/fastmcp/types/index.js.map +1 -0
- package/dist/mcp/standalone-stdio.d.ts +3 -0
- package/dist/mcp/standalone-stdio.d.ts.map +1 -0
- package/dist/mcp/standalone-stdio.js +1 -0
- package/dist/mcp/standalone-stdio.js.map +1 -0
- package/dist/memory/SharedMemoryPool.d.ts +116 -0
- package/dist/memory/SharedMemoryPool.d.ts.map +1 -0
- package/dist/memory/SharedMemoryPool.js +1 -0
- package/dist/memory/SharedMemoryPool.js.map +1 -0
- package/dist/memory/index.d.ts +8 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +1 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/proxy/adaptive-proxy.d.ts +51 -0
- package/dist/proxy/adaptive-proxy.d.ts.map +1 -0
- package/dist/proxy/adaptive-proxy.js +1 -0
- package/dist/proxy/adaptive-proxy.js.map +1 -0
- package/dist/proxy/anthropic-to-gemini.d.ts +20 -0
- package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -0
- package/dist/proxy/anthropic-to-gemini.js +1 -0
- package/dist/proxy/anthropic-to-gemini.js.map +1 -0
- package/dist/proxy/anthropic-to-onnx.d.ts +17 -0
- package/dist/proxy/anthropic-to-onnx.d.ts.map +1 -0
- package/dist/proxy/anthropic-to-onnx.js +1 -0
- package/dist/proxy/anthropic-to-onnx.js.map +1 -0
- package/dist/proxy/anthropic-to-openrouter.d.ts +28 -0
- package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -0
- package/dist/proxy/anthropic-to-openrouter.js +1 -0
- package/dist/proxy/anthropic-to-openrouter.js.map +1 -0
- package/dist/proxy/anthropic-to-requesty.d.ts +33 -0
- package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -0
- package/dist/proxy/anthropic-to-requesty.js +1 -0
- package/dist/proxy/anthropic-to-requesty.js.map +1 -0
- package/dist/proxy/http2-proxy-optimized.d.ts +63 -0
- package/dist/proxy/http2-proxy-optimized.d.ts.map +1 -0
- package/dist/proxy/http2-proxy-optimized.js +1 -0
- package/dist/proxy/http2-proxy-optimized.js.map +1 -0
- package/dist/proxy/http2-proxy.d.ts +43 -0
- package/dist/proxy/http2-proxy.d.ts.map +1 -0
- package/dist/proxy/http2-proxy.js +1 -0
- package/dist/proxy/http2-proxy.js.map +1 -0
- package/dist/proxy/http3-proxy.d.ts +18 -0
- package/dist/proxy/http3-proxy.d.ts.map +1 -0
- package/dist/proxy/http3-proxy.js +1 -0
- package/dist/proxy/http3-proxy.js.map +1 -0
- package/dist/proxy/provider-instructions.d.ts +37 -0
- package/dist/proxy/provider-instructions.d.ts.map +1 -0
- package/dist/proxy/provider-instructions.js +1 -0
- package/dist/proxy/provider-instructions.js.map +1 -0
- package/dist/proxy/quic-proxy.d.ts +58 -0
- package/dist/proxy/quic-proxy.d.ts.map +1 -0
- package/dist/proxy/quic-proxy.js +1 -0
- package/dist/proxy/quic-proxy.js.map +1 -0
- package/dist/proxy/tool-emulation.d.ts +121 -0
- package/dist/proxy/tool-emulation.d.ts.map +1 -0
- package/dist/proxy/tool-emulation.js +1 -0
- package/dist/proxy/tool-emulation.js.map +1 -0
- package/dist/proxy/websocket-proxy.d.ts +39 -0
- package/dist/proxy/websocket-proxy.d.ts.map +1 -0
- package/dist/proxy/websocket-proxy.js +1 -0
- package/dist/proxy/websocket-proxy.js.map +1 -0
- package/dist/reasoningbank/AdvancedMemory.d.ts +120 -0
- package/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -0
- package/dist/reasoningbank/AdvancedMemory.js +1 -0
- package/dist/reasoningbank/AdvancedMemory.js.map +1 -0
- package/dist/reasoningbank/HybridBackend.d.ts +99 -0
- package/dist/reasoningbank/HybridBackend.d.ts.map +1 -0
- package/dist/reasoningbank/HybridBackend.js +1 -0
- package/dist/reasoningbank/HybridBackend.js.map +1 -0
- package/dist/reasoningbank/backend-selector.d.ts +79 -0
- package/dist/reasoningbank/backend-selector.d.ts.map +1 -0
- package/dist/reasoningbank/backend-selector.js +1 -0
- package/dist/reasoningbank/backend-selector.js.map +1 -0
- package/dist/reasoningbank/benchmark.d.ts +14 -0
- package/dist/reasoningbank/benchmark.d.ts.map +1 -0
- package/dist/reasoningbank/benchmark.js +1 -0
- package/dist/reasoningbank/benchmark.js.map +1 -0
- package/dist/reasoningbank/config/reasoningbank-types.d.ts +57 -0
- package/dist/reasoningbank/config/reasoningbank-types.d.ts.map +1 -0
- package/dist/reasoningbank/config/reasoningbank-types.js +1 -0
- package/dist/reasoningbank/config/reasoningbank-types.js.map +1 -0
- package/dist/reasoningbank/core/consolidate.d.ts +21 -0
- package/dist/reasoningbank/core/consolidate.d.ts.map +1 -0
- package/dist/reasoningbank/core/consolidate.js +1 -0
- package/dist/reasoningbank/core/consolidate.js.map +1 -0
- package/dist/reasoningbank/core/distill.d.ts +22 -0
- package/dist/reasoningbank/core/distill.d.ts.map +1 -0
- package/dist/reasoningbank/core/distill.js +1 -0
- package/dist/reasoningbank/core/distill.js.map +1 -0
- package/dist/reasoningbank/core/judge.d.ts +17 -0
- package/dist/reasoningbank/core/judge.d.ts.map +1 -0
- package/dist/reasoningbank/core/judge.js +1 -0
- package/dist/reasoningbank/core/judge.js.map +1 -0
- package/dist/reasoningbank/core/matts.d.ts +46 -0
- package/dist/reasoningbank/core/matts.d.ts.map +1 -0
- package/dist/reasoningbank/core/matts.js +1 -0
- package/dist/reasoningbank/core/matts.js.map +1 -0
- package/dist/reasoningbank/core/retrieve.d.ts +35 -0
- package/dist/reasoningbank/core/retrieve.d.ts.map +1 -0
- package/dist/reasoningbank/core/retrieve.js +1 -0
- package/dist/reasoningbank/core/retrieve.js.map +1 -0
- package/dist/reasoningbank/db/queries.d.ts +88 -0
- package/dist/reasoningbank/db/queries.d.ts.map +1 -0
- package/dist/reasoningbank/db/queries.js +1 -0
- package/dist/reasoningbank/db/queries.js.map +1 -0
- package/dist/reasoningbank/db/schema.d.ts +81 -0
- package/dist/reasoningbank/db/schema.d.ts.map +1 -0
- package/dist/reasoningbank/db/schema.js +1 -0
- package/dist/reasoningbank/db/schema.js.map +1 -0
- package/dist/reasoningbank/demo-comparison.d.ts +10 -0
- package/dist/reasoningbank/demo-comparison.d.ts.map +1 -0
- package/dist/reasoningbank/demo-comparison.js +1 -0
- package/dist/reasoningbank/demo-comparison.js.map +1 -0
- package/dist/reasoningbank/hooks/post-task.d.ts +9 -0
- package/dist/reasoningbank/hooks/post-task.d.ts.map +1 -0
- package/dist/reasoningbank/hooks/post-task.js +1 -0
- package/dist/reasoningbank/hooks/post-task.js.map +1 -0
- package/dist/reasoningbank/hooks/pre-task.d.ts +9 -0
- package/dist/reasoningbank/hooks/pre-task.d.ts.map +1 -0
- package/dist/reasoningbank/hooks/pre-task.js +1 -0
- package/dist/reasoningbank/hooks/pre-task.js.map +1 -0
- package/dist/reasoningbank/index-new.d.ts +49 -0
- package/dist/reasoningbank/index-new.d.ts.map +1 -0
- package/dist/reasoningbank/index-new.js +1 -0
- package/dist/reasoningbank/index-new.js.map +1 -0
- package/dist/reasoningbank/index.d.ts +50 -0
- package/dist/reasoningbank/index.d.ts.map +1 -0
- package/dist/reasoningbank/index.js +1 -0
- package/dist/reasoningbank/index.js.map +1 -0
- package/dist/reasoningbank/test-integration.d.ts +7 -0
- package/dist/reasoningbank/test-integration.d.ts.map +1 -0
- package/dist/reasoningbank/test-integration.js +1 -0
- package/dist/reasoningbank/test-integration.js.map +1 -0
- package/dist/reasoningbank/test-retrieval.d.ts +6 -0
- package/dist/reasoningbank/test-retrieval.d.ts.map +1 -0
- package/dist/reasoningbank/test-retrieval.js +1 -0
- package/dist/reasoningbank/test-retrieval.js.map +1 -0
- package/dist/reasoningbank/test-validation.d.ts +7 -0
- package/dist/reasoningbank/test-validation.d.ts.map +1 -0
- package/dist/reasoningbank/test-validation.js +1 -0
- package/dist/reasoningbank/test-validation.js.map +1 -0
- package/dist/reasoningbank/types/index.d.ts +123 -0
- package/dist/reasoningbank/types/index.d.ts.map +1 -0
- package/dist/reasoningbank/types/index.js +1 -0
- package/dist/reasoningbank/types/index.js.map +1 -0
- package/dist/reasoningbank/utils/config.d.ts +61 -0
- package/dist/reasoningbank/utils/config.d.ts.map +1 -0
- package/dist/reasoningbank/utils/config.js +1 -0
- package/dist/reasoningbank/utils/config.js.map +1 -0
- package/dist/reasoningbank/utils/embeddings.d.ts +21 -0
- package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -0
- package/dist/reasoningbank/utils/embeddings.js +1 -0
- package/dist/reasoningbank/utils/embeddings.js.map +1 -0
- package/dist/reasoningbank/utils/mmr.d.ts +23 -0
- package/dist/reasoningbank/utils/mmr.d.ts.map +1 -0
- package/dist/reasoningbank/utils/mmr.js +1 -0
- package/dist/reasoningbank/utils/mmr.js.map +1 -0
- package/dist/reasoningbank/utils/pii-scrubber.d.ts +46 -0
- package/dist/reasoningbank/utils/pii-scrubber.d.ts.map +1 -0
- package/dist/reasoningbank/utils/pii-scrubber.js +1 -0
- package/dist/reasoningbank/utils/pii-scrubber.js.map +1 -0
- package/dist/reasoningbank/wasm-adapter.d.ts +104 -0
- package/dist/reasoningbank/wasm-adapter.d.ts.map +1 -0
- package/dist/reasoningbank/wasm-adapter.js +1 -0
- package/dist/reasoningbank/wasm-adapter.js.map +1 -0
- package/dist/router/model-mapping.d.ts +31 -0
- package/dist/router/model-mapping.d.ts.map +1 -0
- package/dist/router/model-mapping.js +1 -0
- package/dist/router/model-mapping.js.map +1 -0
- package/dist/router/providers/anthropic.d.ts +17 -0
- package/dist/router/providers/anthropic.d.ts.map +1 -0
- package/dist/router/providers/anthropic.js +1 -0
- package/dist/router/providers/anthropic.js.map +1 -0
- package/dist/router/providers/gemini.d.ts +17 -0
- package/dist/router/providers/gemini.d.ts.map +1 -0
- package/dist/router/providers/gemini.js +1 -0
- package/dist/router/providers/gemini.js.map +1 -0
- package/dist/router/providers/onnx-local-optimized.d.ts +71 -0
- package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -0
- package/dist/router/providers/onnx-local-optimized.js +1 -0
- package/dist/router/providers/onnx-local-optimized.js.map +1 -0
- package/dist/router/providers/onnx-local.d.ts +75 -0
- package/dist/router/providers/onnx-local.d.ts.map +1 -0
- package/dist/router/providers/onnx-local.js +1 -0
- package/dist/router/providers/onnx-local.js.map +1 -0
- package/dist/router/providers/onnx-phi4.d.ts +64 -0
- package/dist/router/providers/onnx-phi4.d.ts.map +1 -0
- package/dist/router/providers/onnx-phi4.js +1 -0
- package/dist/router/providers/onnx-phi4.js.map +1 -0
- package/dist/router/providers/onnx.d.ts +65 -0
- package/dist/router/providers/onnx.d.ts.map +1 -0
- package/dist/router/providers/onnx.js +1 -0
- package/dist/router/providers/onnx.js.map +1 -0
- package/dist/router/providers/openrouter.d.ts +21 -0
- package/dist/router/providers/openrouter.d.ts.map +1 -0
- package/dist/router/providers/openrouter.js +1 -0
- package/dist/router/providers/openrouter.js.map +1 -0
- package/dist/router/router.d.ts +26 -0
- package/dist/router/router.d.ts.map +1 -0
- package/dist/router/router.js +1 -0
- package/dist/router/router.js.map +1 -0
- package/dist/router/test-integration.d.ts +13 -0
- package/dist/router/test-integration.d.ts.map +1 -0
- package/dist/router/test-integration.js +1 -0
- package/dist/router/test-integration.js.map +1 -0
- package/dist/router/test-onnx-benchmark.d.ts +7 -0
- package/dist/router/test-onnx-benchmark.d.ts.map +1 -0
- package/dist/router/test-onnx-benchmark.js +1 -0
- package/dist/router/test-onnx-benchmark.js.map +1 -0
- package/dist/router/test-onnx-integration.d.ts +8 -0
- package/dist/router/test-onnx-integration.d.ts.map +1 -0
- package/dist/router/test-onnx-integration.js +1 -0
- package/dist/router/test-onnx-integration.js.map +1 -0
- package/dist/router/test-onnx-local.d.ts +6 -0
- package/dist/router/test-onnx-local.d.ts.map +1 -0
- package/dist/router/test-onnx-local.js +1 -0
- package/dist/router/test-onnx-local.js.map +1 -0
- package/dist/router/test-onnx.d.ts +7 -0
- package/dist/router/test-onnx.d.ts.map +1 -0
- package/dist/router/test-onnx.js +1 -0
- package/dist/router/test-onnx.js.map +1 -0
- package/dist/router/test-openrouter.d.ts +3 -0
- package/dist/router/test-openrouter.d.ts.map +1 -0
- package/dist/router/test-openrouter.js +1 -0
- package/dist/router/test-openrouter.js.map +1 -0
- package/dist/router/test-phi4.d.ts +6 -0
- package/dist/router/test-phi4.d.ts.map +1 -0
- package/dist/router/test-phi4.js +1 -0
- package/dist/router/test-phi4.js.map +1 -0
- package/dist/router/types.d.ts +209 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +1 -0
- package/dist/router/types.js.map +1 -0
- package/dist/swarm/index.d.ts +51 -0
- package/dist/swarm/index.d.ts.map +1 -0
- package/dist/swarm/index.js +1 -0
- package/dist/swarm/index.js.map +1 -0
- package/dist/swarm/quic-coordinator.d.ts +149 -0
- package/dist/swarm/quic-coordinator.d.ts.map +1 -0
- package/dist/swarm/quic-coordinator.js +1 -0
- package/dist/swarm/quic-coordinator.js.map +1 -0
- package/dist/swarm/transport-router.d.ts +124 -0
- package/dist/swarm/transport-router.d.ts.map +1 -0
- package/dist/swarm/transport-router.js +1 -0
- package/dist/swarm/transport-router.js.map +1 -0
- package/dist/transport/index.d.ts +2 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +1 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/quic-handshake.d.ts +66 -0
- package/dist/transport/quic-handshake.d.ts.map +1 -0
- package/dist/transport/quic-handshake.js +1 -0
- package/dist/transport/quic-handshake.js.map +1 -0
- package/dist/transport/quic.d.ts +184 -0
- package/dist/transport/quic.d.ts.map +1 -0
- package/dist/transport/quic.js +1 -0
- package/dist/transport/quic.js.map +1 -0
- package/dist/utils/agentBoosterPreprocessor.d.ts +72 -0
- package/dist/utils/agentBoosterPreprocessor.d.ts.map +1 -0
- package/dist/utils/agentBoosterPreprocessor.js +1 -0
- package/dist/utils/agentBoosterPreprocessor.js.map +1 -0
- package/dist/utils/agentLoader.d.ts +22 -0
- package/dist/utils/agentLoader.d.ts.map +1 -0
- package/dist/utils/agentLoader.js +1 -0
- package/dist/utils/agentLoader.js.map +1 -0
- package/dist/utils/agentdb-runtime-patch.d.ts +28 -0
- package/dist/utils/agentdb-runtime-patch.d.ts.map +1 -0
- package/dist/utils/agentdb-runtime-patch.js +1 -0
- package/dist/utils/agentdb-runtime-patch.js.map +1 -0
- package/dist/utils/auth.d.ts +13 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +1 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/cli.d.ts +31 -0
- package/dist/utils/cli.d.ts.map +1 -0
- package/dist/utils/cli.js +1 -0
- package/dist/utils/cli.js.map +1 -0
- package/dist/utils/compression-middleware.d.ts +55 -0
- package/dist/utils/compression-middleware.d.ts.map +1 -0
- package/dist/utils/compression-middleware.js +1 -0
- package/dist/utils/compression-middleware.js.map +1 -0
- package/dist/utils/connection-pool.d.ts +30 -0
- package/dist/utils/connection-pool.d.ts.map +1 -0
- package/dist/utils/connection-pool.js +1 -0
- package/dist/utils/connection-pool.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/math.d.ts +12 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +1 -0
- package/dist/utils/math.js.map +1 -0
- package/dist/utils/mcpCommands.d.ts +2 -0
- package/dist/utils/mcpCommands.d.ts.map +1 -0
- package/dist/utils/mcpCommands.js +1 -0
- package/dist/utils/mcpCommands.js.map +1 -0
- package/dist/utils/model-downloader.d.ts +63 -0
- package/dist/utils/model-downloader.d.ts.map +1 -0
- package/dist/utils/model-downloader.js +1 -0
- package/dist/utils/model-downloader.js.map +1 -0
- package/dist/utils/modelCapabilities.d.ts +30 -0
- package/dist/utils/modelCapabilities.d.ts.map +1 -0
- package/dist/utils/modelCapabilities.js +1 -0
- package/dist/utils/modelCapabilities.js.map +1 -0
- package/dist/utils/modelOptimizer.d.ts +207 -0
- package/dist/utils/modelOptimizer.d.ts.map +1 -0
- package/dist/utils/modelOptimizer.js +1 -0
- package/dist/utils/modelOptimizer.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +17 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +1 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/reasoningbankCommands.d.ts +6 -0
- package/dist/utils/reasoningbankCommands.d.ts.map +1 -0
- package/dist/utils/reasoningbankCommands.js +1 -0
- package/dist/utils/reasoningbankCommands.js.map +1 -0
- package/dist/utils/response-cache.d.ts +94 -0
- package/dist/utils/response-cache.d.ts.map +1 -0
- package/dist/utils/response-cache.js +1 -0
- package/dist/utils/response-cache.js.map +1 -0
- package/dist/utils/retry.d.ts +9 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +1 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/streaming-optimizer.d.ts +37 -0
- package/dist/utils/streaming-optimizer.d.ts.map +1 -0
- package/dist/utils/streaming-optimizer.js +1 -0
- package/dist/utils/streaming-optimizer.js.map +1 -0
- package/package.json +1 -1
- package/docs/PHASE2-IMPLEMENTATION-SUMMARY.md +0 -275
- package/docs/PHASE2-PHASE3-COMPLETE-SUMMARY.md +0 -453
- package/docs/PHASE3-IMPLEMENTATION-SUMMARY.md +0 -357
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Standalone Frontier Features Validation
|
|
4
|
+
*
|
|
5
|
+
* Tests all frontier features without requiring full build infrastructure.
|
|
6
|
+
* Validates:
|
|
7
|
+
* 1. CausalMemoryGraph - causal edges, experiments, uplift calculation
|
|
8
|
+
* 2. ExplainableRecall - certificates, Merkle proofs, provenance
|
|
9
|
+
* 3. CausalRecall - utility-based reranking
|
|
10
|
+
* 4. NightlyLearner - automated causal discovery
|
|
11
|
+
*/
|
|
12
|
+
const Database = require('better-sqlite3');
|
|
13
|
+
const fs = require('fs');
|
|
14
|
+
const path = require('path');
|
|
15
|
+
const crypto = require('crypto');
|
|
16
|
+
// Color codes for output
|
|
17
|
+
const colors = {
|
|
18
|
+
reset: '\x1b[0m',
|
|
19
|
+
green: '\x1b[32m',
|
|
20
|
+
red: '\x1b[31m',
|
|
21
|
+
yellow: '\x1b[33m',
|
|
22
|
+
blue: '\x1b[34m',
|
|
23
|
+
cyan: '\x1b[36m'
|
|
24
|
+
};
|
|
25
|
+
function log(message, color = 'reset') {
|
|
26
|
+
console.log(`${colors[color]}${message}${colors.reset}`);
|
|
27
|
+
}
|
|
28
|
+
function assert(condition, message) {
|
|
29
|
+
if (!condition) {
|
|
30
|
+
throw new Error(`Assertion failed: ${message}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
class FrontierValidator {
|
|
34
|
+
constructor() {
|
|
35
|
+
// Create in-memory database
|
|
36
|
+
this.db = new Database(':memory:');
|
|
37
|
+
// Load schemas
|
|
38
|
+
this.loadSchemas();
|
|
39
|
+
this.testsRun = 0;
|
|
40
|
+
this.testsPassed = 0;
|
|
41
|
+
this.testsFailed = 0;
|
|
42
|
+
}
|
|
43
|
+
loadSchemas() {
|
|
44
|
+
log('\n📦 Loading database schemas...', 'cyan');
|
|
45
|
+
// Load core schema
|
|
46
|
+
const coreSchema = fs.readFileSync(path.join(__dirname, 'schemas/schema.sql'), 'utf-8');
|
|
47
|
+
this.db.exec(coreSchema);
|
|
48
|
+
// Load frontier schema
|
|
49
|
+
const frontierSchema = fs.readFileSync(path.join(__dirname, 'schemas/frontier-schema.sql'), 'utf-8');
|
|
50
|
+
this.db.exec(frontierSchema);
|
|
51
|
+
log('✓ Schemas loaded successfully', 'green');
|
|
52
|
+
}
|
|
53
|
+
runTest(name, testFn) {
|
|
54
|
+
this.testsRun++;
|
|
55
|
+
try {
|
|
56
|
+
log(`\n🧪 ${name}`, 'blue');
|
|
57
|
+
testFn();
|
|
58
|
+
this.testsPassed++;
|
|
59
|
+
log(' ✅ PASSED', 'green');
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
this.testsFailed++;
|
|
63
|
+
log(` ❌ FAILED: ${error.message}`, 'red');
|
|
64
|
+
console.error(error);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// ========================================================================
|
|
68
|
+
// CausalMemoryGraph Tests
|
|
69
|
+
// ========================================================================
|
|
70
|
+
testCausalEdgeInsertion() {
|
|
71
|
+
this.runTest('Causal Edge Insertion', () => {
|
|
72
|
+
// Insert test episodes
|
|
73
|
+
const stmt = this.db.prepare(`
|
|
74
|
+
INSERT INTO episodes (session_id, task, reward, success)
|
|
75
|
+
VALUES (?, ?, ?, ?)
|
|
76
|
+
`);
|
|
77
|
+
stmt.run('session1', 'task1', 0.8, 1);
|
|
78
|
+
stmt.run('session1', 'task2', 0.9, 1);
|
|
79
|
+
// Insert causal edge
|
|
80
|
+
const edgeStmt = this.db.prepare(`
|
|
81
|
+
INSERT INTO causal_edges (
|
|
82
|
+
from_memory_id, from_memory_type, to_memory_id, to_memory_type,
|
|
83
|
+
similarity, uplift, confidence, sample_size, mechanism
|
|
84
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
85
|
+
`);
|
|
86
|
+
const result = edgeStmt.run(1, 'episode', 2, 'episode', 0.85, 0.15, 0.9, 100, 'test mechanism');
|
|
87
|
+
const edgeId = result.lastInsertRowid;
|
|
88
|
+
assert(edgeId > 0, 'Edge should be inserted');
|
|
89
|
+
// Verify
|
|
90
|
+
const edge = this.db.prepare('SELECT * FROM causal_edges WHERE id = ?').get(edgeId);
|
|
91
|
+
assert(edge.from_memory_id === 1, 'From ID should match');
|
|
92
|
+
assert(edge.to_memory_id === 2, 'To ID should match');
|
|
93
|
+
assert(edge.similarity === 0.85, 'Similarity should match');
|
|
94
|
+
assert(edge.uplift === 0.15, 'Uplift should match');
|
|
95
|
+
assert(edge.confidence === 0.9, 'Confidence should match');
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
testABExperiment() {
|
|
99
|
+
this.runTest('A/B Experiment and Uplift Calculation', () => {
|
|
100
|
+
// Insert episodes for experiment
|
|
101
|
+
const epStmt = this.db.prepare(`
|
|
102
|
+
INSERT INTO episodes (session_id, task, reward, success)
|
|
103
|
+
VALUES (?, ?, ?, ?)
|
|
104
|
+
`);
|
|
105
|
+
for (let i = 1; i <= 10; i++) {
|
|
106
|
+
epStmt.run(`session${i}`, `task${i}`, 0.7 + Math.random() * 0.2, 1);
|
|
107
|
+
}
|
|
108
|
+
// Create experiment
|
|
109
|
+
const expStmt = this.db.prepare(`
|
|
110
|
+
INSERT INTO causal_experiments (
|
|
111
|
+
name, hypothesis, treatment_id, treatment_type, start_time, sample_size, status
|
|
112
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
113
|
+
`);
|
|
114
|
+
const expResult = expStmt.run('Test Experiment', 'Treatment improves outcome', 1, 'episode', Date.now(), 0, 'running');
|
|
115
|
+
const expId = expResult.lastInsertRowid;
|
|
116
|
+
assert(expId > 0, 'Experiment should be created');
|
|
117
|
+
// Record observations
|
|
118
|
+
const obsStmt = this.db.prepare(`
|
|
119
|
+
INSERT INTO causal_observations (
|
|
120
|
+
experiment_id, episode_id, is_treatment, outcome_value, outcome_type
|
|
121
|
+
) VALUES (?, ?, ?, ?, ?)
|
|
122
|
+
`);
|
|
123
|
+
// Treatment group (higher rewards)
|
|
124
|
+
for (let i = 0; i < 50; i++) {
|
|
125
|
+
obsStmt.run(expId, (i % 10) + 1, 1, 0.75 + Math.random() * 0.1, 'reward');
|
|
126
|
+
}
|
|
127
|
+
// Control group (lower rewards)
|
|
128
|
+
for (let i = 0; i < 50; i++) {
|
|
129
|
+
obsStmt.run(expId, (i % 10) + 1, 0, 0.55 + Math.random() * 0.1, 'reward');
|
|
130
|
+
}
|
|
131
|
+
// Check observations recorded
|
|
132
|
+
const obs = this.db.prepare('SELECT COUNT(*) as count FROM causal_observations WHERE experiment_id = ?').get(expId);
|
|
133
|
+
assert(obs.count === 100, 'Should have 100 observations');
|
|
134
|
+
// Calculate uplift (simplified inline calculation)
|
|
135
|
+
const treatmentObs = this.db.prepare(`
|
|
136
|
+
SELECT outcome_value FROM causal_observations
|
|
137
|
+
WHERE experiment_id = ? AND is_treatment = 1
|
|
138
|
+
`).all(expId);
|
|
139
|
+
const controlObs = this.db.prepare(`
|
|
140
|
+
SELECT outcome_value FROM causal_observations
|
|
141
|
+
WHERE experiment_id = ? AND is_treatment = 0
|
|
142
|
+
`).all(expId);
|
|
143
|
+
const treatmentMean = treatmentObs.reduce((sum, o) => sum + o.outcome_value, 0) / treatmentObs.length;
|
|
144
|
+
const controlMean = controlObs.reduce((sum, o) => sum + o.outcome_value, 0) / controlObs.length;
|
|
145
|
+
const uplift = treatmentMean - controlMean;
|
|
146
|
+
assert(uplift > 0.1, 'Uplift should be positive and significant');
|
|
147
|
+
log(` Uplift: ${uplift.toFixed(3)}, Treatment: ${treatmentMean.toFixed(3)}, Control: ${controlMean.toFixed(3)}`, 'cyan');
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
testCausalQuery() {
|
|
151
|
+
this.runTest('Causal Effect Query', () => {
|
|
152
|
+
// Insert test data
|
|
153
|
+
const epStmt = this.db.prepare(`
|
|
154
|
+
INSERT INTO episodes (session_id, task, reward, success)
|
|
155
|
+
VALUES (?, ?, ?, ?)
|
|
156
|
+
`);
|
|
157
|
+
for (let i = 1; i <= 5; i++) {
|
|
158
|
+
epStmt.run(`session${i}`, `task${i}`, 0.8, 1);
|
|
159
|
+
}
|
|
160
|
+
// Insert causal edges
|
|
161
|
+
const edgeStmt = this.db.prepare(`
|
|
162
|
+
INSERT INTO causal_edges (
|
|
163
|
+
from_memory_id, from_memory_type, to_memory_id, to_memory_type,
|
|
164
|
+
similarity, uplift, confidence
|
|
165
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
166
|
+
`);
|
|
167
|
+
edgeStmt.run(1, 'episode', 2, 'episode', 0.8, 0.2, 0.9);
|
|
168
|
+
edgeStmt.run(1, 'episode', 3, 'episode', 0.75, 0.15, 0.85);
|
|
169
|
+
edgeStmt.run(1, 'episode', 4, 'episode', 0.7, 0.05, 0.95); // Low uplift
|
|
170
|
+
edgeStmt.run(1, 'episode', 5, 'episode', 0.85, 0.25, 0.5); // Low confidence
|
|
171
|
+
// Query with filters
|
|
172
|
+
const effects = this.db.prepare(`
|
|
173
|
+
SELECT * FROM causal_edges
|
|
174
|
+
WHERE from_memory_id = ?
|
|
175
|
+
AND confidence >= ?
|
|
176
|
+
AND ABS(uplift) >= ?
|
|
177
|
+
ORDER BY ABS(uplift) * confidence DESC
|
|
178
|
+
`).all(1, 0.8, 0.1);
|
|
179
|
+
assert(effects.length === 2, 'Should find 2 high-confidence, high-uplift edges');
|
|
180
|
+
assert(effects[0].to_memory_id === 2, 'Highest impact should be first');
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
// ========================================================================
|
|
184
|
+
// ExplainableRecall Tests
|
|
185
|
+
// ========================================================================
|
|
186
|
+
testCertificateCreation() {
|
|
187
|
+
this.runTest('Certificate Creation and Storage', () => {
|
|
188
|
+
// Insert test episodes
|
|
189
|
+
const epStmt = this.db.prepare(`
|
|
190
|
+
INSERT INTO episodes (session_id, task, reward, success)
|
|
191
|
+
VALUES (?, ?, ?, ?)
|
|
192
|
+
`);
|
|
193
|
+
for (let i = 1; i <= 5; i++) {
|
|
194
|
+
epStmt.run(`session${i}`, `task${i}`, 0.8, 1);
|
|
195
|
+
}
|
|
196
|
+
// Create certificate
|
|
197
|
+
const certId = crypto.randomUUID();
|
|
198
|
+
const chunkIds = ['1', '2', '3', '4'];
|
|
199
|
+
const minimalWhy = ['1', '2']; // Minimal hitting set
|
|
200
|
+
const merkleRoot = crypto.createHash('sha256').update('test').digest('hex');
|
|
201
|
+
const certStmt = this.db.prepare(`
|
|
202
|
+
INSERT INTO recall_certificates (
|
|
203
|
+
id, query_id, query_text, chunk_ids, chunk_types,
|
|
204
|
+
minimal_why, redundancy_ratio, completeness_score,
|
|
205
|
+
merkle_root, source_hashes, access_level, latency_ms
|
|
206
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
207
|
+
`);
|
|
208
|
+
certStmt.run(certId, 'q1', 'Test query', JSON.stringify(chunkIds), JSON.stringify(['episode', 'episode', 'episode', 'episode']), JSON.stringify(minimalWhy), chunkIds.length / minimalWhy.length, // redundancy ratio = 2
|
|
209
|
+
1.0, // completeness
|
|
210
|
+
merkleRoot, JSON.stringify([merkleRoot, merkleRoot, merkleRoot, merkleRoot]), 'internal', 10);
|
|
211
|
+
// Verify
|
|
212
|
+
const cert = this.db.prepare('SELECT * FROM recall_certificates WHERE id = ?').get(certId);
|
|
213
|
+
assert(cert !== null, 'Certificate should exist');
|
|
214
|
+
assert(cert.query_id === 'q1', 'Query ID should match');
|
|
215
|
+
assert(JSON.parse(cert.chunk_ids).length === 4, 'Should have 4 chunks');
|
|
216
|
+
assert(JSON.parse(cert.minimal_why).length === 2, 'Minimal set should be 2');
|
|
217
|
+
assert(cert.redundancy_ratio === 2, 'Redundancy ratio should be 2');
|
|
218
|
+
assert(cert.completeness_score === 1.0, 'Completeness should be 1.0');
|
|
219
|
+
assert(cert.merkle_root === merkleRoot, 'Merkle root should match');
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
testMerkleProofGeneration() {
|
|
223
|
+
this.runTest('Merkle Proof Generation and Verification', () => {
|
|
224
|
+
// Create Merkle tree
|
|
225
|
+
const leaves = ['chunk1', 'chunk2', 'chunk3', 'chunk4'].map(content => crypto.createHash('sha256').update(content).digest('hex'));
|
|
226
|
+
// Build tree (simplified 2-level tree)
|
|
227
|
+
const level1 = [];
|
|
228
|
+
for (let i = 0; i < leaves.length; i += 2) {
|
|
229
|
+
const combined = leaves[i] + (leaves[i + 1] || leaves[i]);
|
|
230
|
+
level1.push(crypto.createHash('sha256').update(combined).digest('hex'));
|
|
231
|
+
}
|
|
232
|
+
const root = crypto.createHash('sha256')
|
|
233
|
+
.update(level1[0] + (level1[1] || level1[0]))
|
|
234
|
+
.digest('hex');
|
|
235
|
+
assert(root.length === 64, 'Merkle root should be 64 hex characters');
|
|
236
|
+
assert(/^[0-9a-f]{64}$/.test(root), 'Merkle root should be valid SHA-256 hash');
|
|
237
|
+
log(` Merkle root: ${root.substring(0, 16)}...`, 'cyan');
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
testProvenanceTracking() {
|
|
241
|
+
this.runTest('Provenance Source Tracking', () => {
|
|
242
|
+
// Insert test episodes
|
|
243
|
+
const epStmt = this.db.prepare(`
|
|
244
|
+
INSERT INTO episodes (session_id, task, reward, success)
|
|
245
|
+
VALUES (?, ?, ?, ?)
|
|
246
|
+
`);
|
|
247
|
+
for (let i = 1; i <= 3; i++) {
|
|
248
|
+
epStmt.run(`session${i}`, `task${i}`, 0.8, 1);
|
|
249
|
+
}
|
|
250
|
+
// Create provenance sources
|
|
251
|
+
const provStmt = this.db.prepare(`
|
|
252
|
+
INSERT INTO provenance_sources (
|
|
253
|
+
source_type, source_id, content_hash, creator
|
|
254
|
+
) VALUES (?, ?, ?, ?)
|
|
255
|
+
`);
|
|
256
|
+
const hash1 = crypto.createHash('sha256').update('content1').digest('hex');
|
|
257
|
+
const hash2 = crypto.createHash('sha256').update('content2').digest('hex');
|
|
258
|
+
const result1 = provStmt.run('episode', 1, hash1, 'test_user');
|
|
259
|
+
const result2 = provStmt.run('episode', 2, hash2, 'test_user');
|
|
260
|
+
assert(result1.lastInsertRowid > 0, 'First provenance should be inserted');
|
|
261
|
+
assert(result2.lastInsertRowid > 0, 'Second provenance should be inserted');
|
|
262
|
+
// Query lineage
|
|
263
|
+
const lineage = this.db.prepare(`
|
|
264
|
+
SELECT * FROM provenance_sources
|
|
265
|
+
WHERE content_hash = ?
|
|
266
|
+
`).get(hash1);
|
|
267
|
+
assert(lineage !== null, 'Lineage should exist');
|
|
268
|
+
assert(lineage.source_type === 'episode', 'Source type should match');
|
|
269
|
+
assert(lineage.creator === 'test_user', 'Creator should match');
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
testJustificationPaths() {
|
|
273
|
+
this.runTest('Justification Paths', () => {
|
|
274
|
+
// Create certificate first
|
|
275
|
+
const certId = crypto.randomUUID();
|
|
276
|
+
this.db.prepare(`
|
|
277
|
+
INSERT INTO recall_certificates (
|
|
278
|
+
id, query_id, query_text, chunk_ids, chunk_types,
|
|
279
|
+
minimal_why, redundancy_ratio, completeness_score,
|
|
280
|
+
merkle_root, source_hashes, access_level
|
|
281
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
282
|
+
`).run(certId, 'q2', 'Test query', JSON.stringify(['1', '2']), JSON.stringify(['episode', 'episode']), JSON.stringify(['1']), 2, 1.0, 'hash', JSON.stringify(['hash1', 'hash2']), 'internal');
|
|
283
|
+
// Add justification paths
|
|
284
|
+
const justStmt = this.db.prepare(`
|
|
285
|
+
INSERT INTO justification_paths (
|
|
286
|
+
certificate_id, chunk_id, chunk_type, reason, necessity_score, path_elements
|
|
287
|
+
) VALUES (?, ?, ?, ?, ?, ?)
|
|
288
|
+
`);
|
|
289
|
+
justStmt.run(certId, '1', 'episode', 'semantic_match', 0.9, JSON.stringify(['query', 'chunk1']));
|
|
290
|
+
justStmt.run(certId, '2', 'episode', 'causal_link', 0.7, JSON.stringify(['query', 'chunk1', 'chunk2']));
|
|
291
|
+
// Query justifications
|
|
292
|
+
const justifications = this.db.prepare(`
|
|
293
|
+
SELECT * FROM justification_paths
|
|
294
|
+
WHERE certificate_id = ?
|
|
295
|
+
`).all(certId);
|
|
296
|
+
assert(justifications.length === 2, 'Should have 2 justification paths');
|
|
297
|
+
assert(justifications[0].reason === 'semantic_match', 'First reason should match');
|
|
298
|
+
assert(justifications[1].reason === 'causal_link', 'Second reason should match');
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
// ========================================================================
|
|
302
|
+
// Integration Tests
|
|
303
|
+
// ========================================================================
|
|
304
|
+
testCausalRecallIntegration() {
|
|
305
|
+
this.runTest('Causal Recall Integration', () => {
|
|
306
|
+
// Insert episodes with embeddings
|
|
307
|
+
const epStmt = this.db.prepare(`
|
|
308
|
+
INSERT INTO episodes (session_id, task, reward, success, latency_ms)
|
|
309
|
+
VALUES (?, ?, ?, ?, ?)
|
|
310
|
+
`);
|
|
311
|
+
for (let i = 1; i <= 10; i++) {
|
|
312
|
+
epStmt.run(`session${i}`, `task${i}`, 0.7 + i * 0.02, 1, 50 + i * 5);
|
|
313
|
+
}
|
|
314
|
+
// Add embeddings
|
|
315
|
+
const embStmt = this.db.prepare(`
|
|
316
|
+
INSERT INTO episode_embeddings (episode_id, embedding)
|
|
317
|
+
VALUES (?, ?)
|
|
318
|
+
`);
|
|
319
|
+
for (let i = 1; i <= 10; i++) {
|
|
320
|
+
// Create mock embedding
|
|
321
|
+
const embedding = new Float32Array(384);
|
|
322
|
+
for (let j = 0; j < 384; j++) {
|
|
323
|
+
embedding[j] = Math.random();
|
|
324
|
+
}
|
|
325
|
+
embStmt.run(i, JSON.stringify(Array.from(embedding)));
|
|
326
|
+
}
|
|
327
|
+
// Add causal edges
|
|
328
|
+
const edgeStmt = this.db.prepare(`
|
|
329
|
+
INSERT INTO causal_edges (
|
|
330
|
+
from_memory_id, from_memory_type, to_memory_id, to_memory_type,
|
|
331
|
+
similarity, uplift, confidence
|
|
332
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
333
|
+
`);
|
|
334
|
+
edgeStmt.run(1, 'episode', 2, 'episode', 0.8, 0.15, 0.9);
|
|
335
|
+
edgeStmt.run(2, 'episode', 3, 'episode', 0.75, 0.2, 0.85);
|
|
336
|
+
// Verify integration
|
|
337
|
+
const episodes = this.db.prepare('SELECT COUNT(*) as count FROM episodes').get();
|
|
338
|
+
const embeddings = this.db.prepare('SELECT COUNT(*) as count FROM episode_embeddings').get();
|
|
339
|
+
const edges = this.db.prepare('SELECT COUNT(*) as count FROM causal_edges').get();
|
|
340
|
+
assert(episodes.count === 10, 'Should have 10 episodes');
|
|
341
|
+
assert(embeddings.count === 10, 'Should have 10 embeddings');
|
|
342
|
+
assert(edges.count === 2, 'Should have 2 causal edges');
|
|
343
|
+
log(` Episodes: ${episodes.count}, Embeddings: ${embeddings.count}, Edges: ${edges.count}`, 'cyan');
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
testDatabasePerformance() {
|
|
347
|
+
this.runTest('Database Performance', () => {
|
|
348
|
+
// Insert many episodes for performance test
|
|
349
|
+
const start = Date.now();
|
|
350
|
+
this.db.transaction(() => {
|
|
351
|
+
const stmt = this.db.prepare(`
|
|
352
|
+
INSERT INTO episodes (session_id, task, reward, success)
|
|
353
|
+
VALUES (?, ?, ?, ?)
|
|
354
|
+
`);
|
|
355
|
+
for (let i = 1; i <= 1000; i++) {
|
|
356
|
+
stmt.run(`session${i}`, `task${i}`, Math.random(), 1);
|
|
357
|
+
}
|
|
358
|
+
})();
|
|
359
|
+
const insertTime = Date.now() - start;
|
|
360
|
+
// Query performance
|
|
361
|
+
const queryStart = Date.now();
|
|
362
|
+
const results = this.db.prepare('SELECT * FROM episodes WHERE reward > 0.5 LIMIT 100').all();
|
|
363
|
+
const queryTime = Date.now() - queryStart;
|
|
364
|
+
assert(results.length > 0, 'Should find episodes with reward > 0.5');
|
|
365
|
+
assert(insertTime < 1000, 'Bulk insert should be fast (< 1s for 1000 records)');
|
|
366
|
+
assert(queryTime < 50, 'Query should be fast (< 50ms)');
|
|
367
|
+
log(` Insert 1000: ${insertTime}ms, Query: ${queryTime}ms`, 'cyan');
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
// ========================================================================
|
|
371
|
+
// Summary
|
|
372
|
+
// ========================================================================
|
|
373
|
+
runAll() {
|
|
374
|
+
log('\n═══════════════════════════════════════════════════════════', 'cyan');
|
|
375
|
+
log(' AgentDB Frontier Features Validation', 'cyan');
|
|
376
|
+
log('═══════════════════════════════════════════════════════════', 'cyan');
|
|
377
|
+
// CausalMemoryGraph tests
|
|
378
|
+
log('\n📊 Testing CausalMemoryGraph', 'yellow');
|
|
379
|
+
this.testCausalEdgeInsertion();
|
|
380
|
+
this.testABExperiment();
|
|
381
|
+
this.testCausalQuery();
|
|
382
|
+
// ExplainableRecall tests
|
|
383
|
+
log('\n🔍 Testing ExplainableRecall', 'yellow');
|
|
384
|
+
this.testCertificateCreation();
|
|
385
|
+
this.testMerkleProofGeneration();
|
|
386
|
+
this.testProvenanceTracking();
|
|
387
|
+
this.testJustificationPaths();
|
|
388
|
+
// Integration tests
|
|
389
|
+
log('\n🔗 Testing Integration', 'yellow');
|
|
390
|
+
this.testCausalRecallIntegration();
|
|
391
|
+
this.testDatabasePerformance();
|
|
392
|
+
// Print summary
|
|
393
|
+
log('\n═══════════════════════════════════════════════════════════', 'cyan');
|
|
394
|
+
log(' Summary', 'cyan');
|
|
395
|
+
log('═══════════════════════════════════════════════════════════', 'cyan');
|
|
396
|
+
log(`\n Total Tests: ${this.testsRun}`, 'cyan');
|
|
397
|
+
log(` Passed: ${this.testsPassed}`, 'green');
|
|
398
|
+
log(` Failed: ${this.testsFailed}`, this.testsFailed > 0 ? 'red' : 'cyan');
|
|
399
|
+
const passRate = ((this.testsPassed / this.testsRun) * 100).toFixed(1);
|
|
400
|
+
log(` Pass Rate: ${passRate}%`, passRate === '100.0' ? 'green' : 'yellow');
|
|
401
|
+
if (this.testsFailed === 0) {
|
|
402
|
+
log('\n✅ ALL TESTS PASSED - FRONTIER FEATURES VALIDATED', 'green');
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
log(`\n❌ ${this.testsFailed} TEST(S) FAILED`, 'red');
|
|
406
|
+
}
|
|
407
|
+
log('═══════════════════════════════════════════════════════════\n', 'cyan');
|
|
408
|
+
this.db.close();
|
|
409
|
+
return this.testsFailed === 0 ? 0 : 1;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
// Run validation
|
|
413
|
+
const validator = new FrontierValidator();
|
|
414
|
+
const exitCode = validator.runAll();
|
|
415
|
+
process.exit(exitCode);
|
|
416
|
+
//# sourceMappingURL=validate-frontier.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-frontier.cjs","sourceRoot":"","sources":["../../src/agentdb/validate-frontier.cjs"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjC,yBAAyB;AACzB,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO;IACnC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,MAAM,CAAC,SAAS,EAAE,OAAO;IAChC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,MAAM,iBAAiB;IACrB;QACE,4BAA4B;QAC5B,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEnC,eAAe;QACf,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,WAAW;QACT,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;QAEhD,mBAAmB;QACnB,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAC1C,OAAO,CACR,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzB,uBAAuB;QACvB,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CACpC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,EACnD,OAAO,CACR,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE7B,GAAG,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,MAAM;QAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;YAC5B,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,GAAG,CAAC,eAAe,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,0BAA0B;IAC1B,2EAA2E;IAE3E,uBAAuB;QACrB,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACzC,uBAAuB;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG5B,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAEtC,qBAAqB;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAKhC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;YAChG,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;YAEtC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAC;YAE9C,SAAS;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpF,MAAM,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,sBAAsB,CAAC,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,oBAAoB,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,yBAAyB,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,qBAAqB,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,OAAO,CAAC,uCAAuC,EAAE,GAAG,EAAE;YACzD,iCAAiC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;YAED,oBAAoB;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAI/B,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAC3B,iBAAiB,EACjB,4BAA4B,EAC5B,CAAC,EACD,SAAS,EACT,IAAI,CAAC,GAAG,EAAE,EACV,CAAC,EACD,SAAS,CACV,CAAC;YAEF,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC;YACxC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,8BAA8B,CAAC,CAAC;YAElD,sBAAsB;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAI/B,CAAC,CAAC;YAEH,mCAAmC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5E,CAAC;YAED,gCAAgC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5E,CAAC;YAED,8BAA8B;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpH,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,EAAE,8BAA8B,CAAC,CAAC;YAE1D,mDAAmD;YACnD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGpC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEd,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGlC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEd,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;YACtG,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;YAChG,MAAM,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC;YAE3C,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,2CAA2C,CAAC,CAAC;YAClE,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9H,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACvC,mBAAmB;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,sBAAsB;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAKhC,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACxD,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3D,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;YACxE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB;YAE5E,qBAAqB;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;OAM/B,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAEpB,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,kDAAkD,CAAC,CAAC;YACjF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,0BAA0B;IAC1B,2EAA2E;IAE3E,uBAAuB;QACrB,IAAI,CAAC,OAAO,CAAC,kCAAkC,EAAE,GAAG,EAAE;YACpD,uBAAuB;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,qBAAqB;YACrB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;YACrD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE5E,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;OAMhC,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CACV,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxB,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAC5D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAC1B,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,uBAAuB;YAC5D,GAAG,EAAE,eAAe;YACpB,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,EAChE,UAAU,EACV,EAAE,CACH,CAAC;YAEF,SAAS;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3F,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,0BAA0B,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,uBAAuB,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,sBAAsB,CAAC,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,yBAAyB,CAAC,CAAC;YAC7E,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE,8BAA8B,CAAC,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,kBAAkB,KAAK,GAAG,EAAE,4BAA4B,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;QACvB,IAAI,CAAC,OAAO,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAC5D,qBAAqB;YACrB,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CACzD,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACrE,CAAC;YAEF,uCAAuC;YACvC,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;iBACrC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5C,MAAM,CAAC,KAAK,CAAC,CAAC;YAEjB,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,yCAAyC,CAAC,CAAC;YACtE,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,0CAA0C,CAAC,CAAC;YAEhF,GAAG,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAC9C,uBAAuB;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,4BAA4B;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAIhC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE3E,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE/D,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE,qCAAqC,CAAC,CAAC;YAC3E,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE,sCAAsC,CAAC,CAAC;YAE5E,gBAAgB;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG/B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEd,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,sBAAsB,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,0BAA0B,CAAC,CAAC;YACtE,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,WAAW,EAAE,sBAAsB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACvC,2BAA2B;YAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;OAMf,CAAC,CAAC,GAAG,CACJ,MAAM,EAAE,IAAI,EAAE,YAAY,EAC1B,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC1B,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EACtC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EACrB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,CAC/D,CAAC;YAEF,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAIhC,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAExG,uBAAuB;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGtC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEf,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,mCAAmC,CAAC,CAAC;YACzE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;YACnF,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,EAAE,4BAA4B,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,oBAAoB;IACpB,2EAA2E;IAE3E,2BAA2B;QACzB,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,GAAG,EAAE;YAC7C,kCAAkC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,iBAAiB;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG/B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,wBAAwB;gBACxB,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;gBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC/B,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;YAED,mBAAmB;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAKhC,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACzD,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAE1D,qBAAqB;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAE,CAAC;YACjF,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,EAAE,CAAC;YAElF,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;YACzD,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,4BAA4B,CAAC,CAAC;YAExD,GAAG,CAAC,iBAAiB,QAAQ,CAAC,KAAK,iBAAiB,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,EAAE;YACxC,4CAA4C;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEzB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;SAG5B,CAAC,CAAC;gBAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAEtC,oBAAoB;YACpB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;YAE1C,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,wCAAwC,CAAC,CAAC;YACrE,MAAM,CAAC,UAAU,GAAG,IAAI,EAAE,oDAAoD,CAAC,CAAC;YAChF,MAAM,CAAC,SAAS,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAC;YAExD,GAAG,CAAC,oBAAoB,UAAU,cAAc,SAAS,IAAI,EAAE,MAAM,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,UAAU;IACV,2EAA2E;IAE3E,MAAM;QACJ,GAAG,CAAC,+DAA+D,EAAE,MAAM,CAAC,CAAC;QAC7E,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;QACtD,GAAG,CAAC,6DAA6D,EAAE,MAAM,CAAC,CAAC;QAE3E,0BAA0B;QAC1B,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,0BAA0B;QAC1B,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,oBAAoB;QACpB,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,gBAAgB;QAChB,GAAG,CAAC,+DAA+D,EAAE,MAAM,CAAC,CAAC;QAC7E,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACzB,GAAG,CAAC,6DAA6D,EAAE,MAAM,CAAC,CAAC;QAC3E,GAAG,CAAC,oBAAoB,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;QACjD,GAAG,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9C,GAAG,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAE5E,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvE,GAAG,CAAC,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,oDAAoD,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,OAAO,IAAI,CAAC,WAAW,iBAAiB,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,GAAG,CAAC,+DAA+D,EAAE,MAAM,CAAC,CAAC;QAE7E,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAEhB,OAAO,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;CACF;AAED,iBAAiB;AACjB,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;AACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC","sourcesContent":["/**\n * Standalone Frontier Features Validation\n *\n * Tests all frontier features without requiring full build infrastructure.\n * Validates:\n * 1. CausalMemoryGraph - causal edges, experiments, uplift calculation\n * 2. ExplainableRecall - certificates, Merkle proofs, provenance\n * 3. CausalRecall - utility-based reranking\n * 4. NightlyLearner - automated causal discovery\n */\n\nconst Database = require('better-sqlite3');\nconst fs = require('fs');\nconst path = require('path');\nconst crypto = require('crypto');\n\n// Color codes for output\nconst colors = {\n reset: '\\x1b[0m',\n green: '\\x1b[32m',\n red: '\\x1b[31m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m'\n};\n\nfunction log(message, color = 'reset') {\n console.log(`${colors[color]}${message}${colors.reset}`);\n}\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(`Assertion failed: ${message}`);\n }\n}\n\nclass FrontierValidator {\n constructor() {\n // Create in-memory database\n this.db = new Database(':memory:');\n\n // Load schemas\n this.loadSchemas();\n\n this.testsRun = 0;\n this.testsPassed = 0;\n this.testsFailed = 0;\n }\n\n loadSchemas() {\n log('\\n📦 Loading database schemas...', 'cyan');\n\n // Load core schema\n const coreSchema = fs.readFileSync(\n path.join(__dirname, 'schemas/schema.sql'),\n 'utf-8'\n );\n this.db.exec(coreSchema);\n\n // Load frontier schema\n const frontierSchema = fs.readFileSync(\n path.join(__dirname, 'schemas/frontier-schema.sql'),\n 'utf-8'\n );\n this.db.exec(frontierSchema);\n\n log('✓ Schemas loaded successfully', 'green');\n }\n\n runTest(name, testFn) {\n this.testsRun++;\n try {\n log(`\\n🧪 ${name}`, 'blue');\n testFn();\n this.testsPassed++;\n log(' ✅ PASSED', 'green');\n } catch (error) {\n this.testsFailed++;\n log(` ❌ FAILED: ${error.message}`, 'red');\n console.error(error);\n }\n }\n\n // ========================================================================\n // CausalMemoryGraph Tests\n // ========================================================================\n\n testCausalEdgeInsertion() {\n this.runTest('Causal Edge Insertion', () => {\n // Insert test episodes\n const stmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n stmt.run('session1', 'task1', 0.8, 1);\n stmt.run('session1', 'task2', 0.9, 1);\n\n // Insert causal edge\n const edgeStmt = this.db.prepare(`\n INSERT INTO causal_edges (\n from_memory_id, from_memory_type, to_memory_id, to_memory_type,\n similarity, uplift, confidence, sample_size, mechanism\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n const result = edgeStmt.run(1, 'episode', 2, 'episode', 0.85, 0.15, 0.9, 100, 'test mechanism');\n const edgeId = result.lastInsertRowid;\n\n assert(edgeId > 0, 'Edge should be inserted');\n\n // Verify\n const edge = this.db.prepare('SELECT * FROM causal_edges WHERE id = ?').get(edgeId);\n assert(edge.from_memory_id === 1, 'From ID should match');\n assert(edge.to_memory_id === 2, 'To ID should match');\n assert(edge.similarity === 0.85, 'Similarity should match');\n assert(edge.uplift === 0.15, 'Uplift should match');\n assert(edge.confidence === 0.9, 'Confidence should match');\n });\n }\n\n testABExperiment() {\n this.runTest('A/B Experiment and Uplift Calculation', () => {\n // Insert episodes for experiment\n const epStmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 10; i++) {\n epStmt.run(`session${i}`, `task${i}`, 0.7 + Math.random() * 0.2, 1);\n }\n\n // Create experiment\n const expStmt = this.db.prepare(`\n INSERT INTO causal_experiments (\n name, hypothesis, treatment_id, treatment_type, start_time, sample_size, status\n ) VALUES (?, ?, ?, ?, ?, ?, ?)\n `);\n\n const expResult = expStmt.run(\n 'Test Experiment',\n 'Treatment improves outcome',\n 1,\n 'episode',\n Date.now(),\n 0,\n 'running'\n );\n\n const expId = expResult.lastInsertRowid;\n assert(expId > 0, 'Experiment should be created');\n\n // Record observations\n const obsStmt = this.db.prepare(`\n INSERT INTO causal_observations (\n experiment_id, episode_id, is_treatment, outcome_value, outcome_type\n ) VALUES (?, ?, ?, ?, ?)\n `);\n\n // Treatment group (higher rewards)\n for (let i = 0; i < 50; i++) {\n obsStmt.run(expId, (i % 10) + 1, 1, 0.75 + Math.random() * 0.1, 'reward');\n }\n\n // Control group (lower rewards)\n for (let i = 0; i < 50; i++) {\n obsStmt.run(expId, (i % 10) + 1, 0, 0.55 + Math.random() * 0.1, 'reward');\n }\n\n // Check observations recorded\n const obs = this.db.prepare('SELECT COUNT(*) as count FROM causal_observations WHERE experiment_id = ?').get(expId);\n assert(obs.count === 100, 'Should have 100 observations');\n\n // Calculate uplift (simplified inline calculation)\n const treatmentObs = this.db.prepare(`\n SELECT outcome_value FROM causal_observations\n WHERE experiment_id = ? AND is_treatment = 1\n `).all(expId);\n\n const controlObs = this.db.prepare(`\n SELECT outcome_value FROM causal_observations\n WHERE experiment_id = ? AND is_treatment = 0\n `).all(expId);\n\n const treatmentMean = treatmentObs.reduce((sum, o) => sum + o.outcome_value, 0) / treatmentObs.length;\n const controlMean = controlObs.reduce((sum, o) => sum + o.outcome_value, 0) / controlObs.length;\n const uplift = treatmentMean - controlMean;\n\n assert(uplift > 0.1, 'Uplift should be positive and significant');\n log(` Uplift: ${uplift.toFixed(3)}, Treatment: ${treatmentMean.toFixed(3)}, Control: ${controlMean.toFixed(3)}`, 'cyan');\n });\n }\n\n testCausalQuery() {\n this.runTest('Causal Effect Query', () => {\n // Insert test data\n const epStmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 5; i++) {\n epStmt.run(`session${i}`, `task${i}`, 0.8, 1);\n }\n\n // Insert causal edges\n const edgeStmt = this.db.prepare(`\n INSERT INTO causal_edges (\n from_memory_id, from_memory_type, to_memory_id, to_memory_type,\n similarity, uplift, confidence\n ) VALUES (?, ?, ?, ?, ?, ?, ?)\n `);\n\n edgeStmt.run(1, 'episode', 2, 'episode', 0.8, 0.2, 0.9);\n edgeStmt.run(1, 'episode', 3, 'episode', 0.75, 0.15, 0.85);\n edgeStmt.run(1, 'episode', 4, 'episode', 0.7, 0.05, 0.95); // Low uplift\n edgeStmt.run(1, 'episode', 5, 'episode', 0.85, 0.25, 0.5); // Low confidence\n\n // Query with filters\n const effects = this.db.prepare(`\n SELECT * FROM causal_edges\n WHERE from_memory_id = ?\n AND confidence >= ?\n AND ABS(uplift) >= ?\n ORDER BY ABS(uplift) * confidence DESC\n `).all(1, 0.8, 0.1);\n\n assert(effects.length === 2, 'Should find 2 high-confidence, high-uplift edges');\n assert(effects[0].to_memory_id === 2, 'Highest impact should be first');\n });\n }\n\n // ========================================================================\n // ExplainableRecall Tests\n // ========================================================================\n\n testCertificateCreation() {\n this.runTest('Certificate Creation and Storage', () => {\n // Insert test episodes\n const epStmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 5; i++) {\n epStmt.run(`session${i}`, `task${i}`, 0.8, 1);\n }\n\n // Create certificate\n const certId = crypto.randomUUID();\n const chunkIds = ['1', '2', '3', '4'];\n const minimalWhy = ['1', '2']; // Minimal hitting set\n const merkleRoot = crypto.createHash('sha256').update('test').digest('hex');\n\n const certStmt = this.db.prepare(`\n INSERT INTO recall_certificates (\n id, query_id, query_text, chunk_ids, chunk_types,\n minimal_why, redundancy_ratio, completeness_score,\n merkle_root, source_hashes, access_level, latency_ms\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n certStmt.run(\n certId,\n 'q1',\n 'Test query',\n JSON.stringify(chunkIds),\n JSON.stringify(['episode', 'episode', 'episode', 'episode']),\n JSON.stringify(minimalWhy),\n chunkIds.length / minimalWhy.length, // redundancy ratio = 2\n 1.0, // completeness\n merkleRoot,\n JSON.stringify([merkleRoot, merkleRoot, merkleRoot, merkleRoot]),\n 'internal',\n 10\n );\n\n // Verify\n const cert = this.db.prepare('SELECT * FROM recall_certificates WHERE id = ?').get(certId);\n assert(cert !== null, 'Certificate should exist');\n assert(cert.query_id === 'q1', 'Query ID should match');\n assert(JSON.parse(cert.chunk_ids).length === 4, 'Should have 4 chunks');\n assert(JSON.parse(cert.minimal_why).length === 2, 'Minimal set should be 2');\n assert(cert.redundancy_ratio === 2, 'Redundancy ratio should be 2');\n assert(cert.completeness_score === 1.0, 'Completeness should be 1.0');\n assert(cert.merkle_root === merkleRoot, 'Merkle root should match');\n });\n }\n\n testMerkleProofGeneration() {\n this.runTest('Merkle Proof Generation and Verification', () => {\n // Create Merkle tree\n const leaves = ['chunk1', 'chunk2', 'chunk3', 'chunk4'].map(\n content => crypto.createHash('sha256').update(content).digest('hex')\n );\n\n // Build tree (simplified 2-level tree)\n const level1 = [];\n for (let i = 0; i < leaves.length; i += 2) {\n const combined = leaves[i] + (leaves[i + 1] || leaves[i]);\n level1.push(crypto.createHash('sha256').update(combined).digest('hex'));\n }\n\n const root = crypto.createHash('sha256')\n .update(level1[0] + (level1[1] || level1[0]))\n .digest('hex');\n\n assert(root.length === 64, 'Merkle root should be 64 hex characters');\n assert(/^[0-9a-f]{64}$/.test(root), 'Merkle root should be valid SHA-256 hash');\n\n log(` Merkle root: ${root.substring(0, 16)}...`, 'cyan');\n });\n }\n\n testProvenanceTracking() {\n this.runTest('Provenance Source Tracking', () => {\n // Insert test episodes\n const epStmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 3; i++) {\n epStmt.run(`session${i}`, `task${i}`, 0.8, 1);\n }\n\n // Create provenance sources\n const provStmt = this.db.prepare(`\n INSERT INTO provenance_sources (\n source_type, source_id, content_hash, creator\n ) VALUES (?, ?, ?, ?)\n `);\n\n const hash1 = crypto.createHash('sha256').update('content1').digest('hex');\n const hash2 = crypto.createHash('sha256').update('content2').digest('hex');\n\n const result1 = provStmt.run('episode', 1, hash1, 'test_user');\n const result2 = provStmt.run('episode', 2, hash2, 'test_user');\n\n assert(result1.lastInsertRowid > 0, 'First provenance should be inserted');\n assert(result2.lastInsertRowid > 0, 'Second provenance should be inserted');\n\n // Query lineage\n const lineage = this.db.prepare(`\n SELECT * FROM provenance_sources\n WHERE content_hash = ?\n `).get(hash1);\n\n assert(lineage !== null, 'Lineage should exist');\n assert(lineage.source_type === 'episode', 'Source type should match');\n assert(lineage.creator === 'test_user', 'Creator should match');\n });\n }\n\n testJustificationPaths() {\n this.runTest('Justification Paths', () => {\n // Create certificate first\n const certId = crypto.randomUUID();\n this.db.prepare(`\n INSERT INTO recall_certificates (\n id, query_id, query_text, chunk_ids, chunk_types,\n minimal_why, redundancy_ratio, completeness_score,\n merkle_root, source_hashes, access_level\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `).run(\n certId, 'q2', 'Test query',\n JSON.stringify(['1', '2']),\n JSON.stringify(['episode', 'episode']),\n JSON.stringify(['1']),\n 2, 1.0, 'hash', JSON.stringify(['hash1', 'hash2']), 'internal'\n );\n\n // Add justification paths\n const justStmt = this.db.prepare(`\n INSERT INTO justification_paths (\n certificate_id, chunk_id, chunk_type, reason, necessity_score, path_elements\n ) VALUES (?, ?, ?, ?, ?, ?)\n `);\n\n justStmt.run(certId, '1', 'episode', 'semantic_match', 0.9, JSON.stringify(['query', 'chunk1']));\n justStmt.run(certId, '2', 'episode', 'causal_link', 0.7, JSON.stringify(['query', 'chunk1', 'chunk2']));\n\n // Query justifications\n const justifications = this.db.prepare(`\n SELECT * FROM justification_paths\n WHERE certificate_id = ?\n `).all(certId);\n\n assert(justifications.length === 2, 'Should have 2 justification paths');\n assert(justifications[0].reason === 'semantic_match', 'First reason should match');\n assert(justifications[1].reason === 'causal_link', 'Second reason should match');\n });\n }\n\n // ========================================================================\n // Integration Tests\n // ========================================================================\n\n testCausalRecallIntegration() {\n this.runTest('Causal Recall Integration', () => {\n // Insert episodes with embeddings\n const epStmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success, latency_ms)\n VALUES (?, ?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 10; i++) {\n epStmt.run(`session${i}`, `task${i}`, 0.7 + i * 0.02, 1, 50 + i * 5);\n }\n\n // Add embeddings\n const embStmt = this.db.prepare(`\n INSERT INTO episode_embeddings (episode_id, embedding)\n VALUES (?, ?)\n `);\n\n for (let i = 1; i <= 10; i++) {\n // Create mock embedding\n const embedding = new Float32Array(384);\n for (let j = 0; j < 384; j++) {\n embedding[j] = Math.random();\n }\n embStmt.run(i, JSON.stringify(Array.from(embedding)));\n }\n\n // Add causal edges\n const edgeStmt = this.db.prepare(`\n INSERT INTO causal_edges (\n from_memory_id, from_memory_type, to_memory_id, to_memory_type,\n similarity, uplift, confidence\n ) VALUES (?, ?, ?, ?, ?, ?, ?)\n `);\n\n edgeStmt.run(1, 'episode', 2, 'episode', 0.8, 0.15, 0.9);\n edgeStmt.run(2, 'episode', 3, 'episode', 0.75, 0.2, 0.85);\n\n // Verify integration\n const episodes = this.db.prepare('SELECT COUNT(*) as count FROM episodes').get();\n const embeddings = this.db.prepare('SELECT COUNT(*) as count FROM episode_embeddings').get();\n const edges = this.db.prepare('SELECT COUNT(*) as count FROM causal_edges').get();\n\n assert(episodes.count === 10, 'Should have 10 episodes');\n assert(embeddings.count === 10, 'Should have 10 embeddings');\n assert(edges.count === 2, 'Should have 2 causal edges');\n\n log(` Episodes: ${episodes.count}, Embeddings: ${embeddings.count}, Edges: ${edges.count}`, 'cyan');\n });\n }\n\n testDatabasePerformance() {\n this.runTest('Database Performance', () => {\n // Insert many episodes for performance test\n const start = Date.now();\n\n this.db.transaction(() => {\n const stmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 1000; i++) {\n stmt.run(`session${i}`, `task${i}`, Math.random(), 1);\n }\n })();\n\n const insertTime = Date.now() - start;\n\n // Query performance\n const queryStart = Date.now();\n const results = this.db.prepare('SELECT * FROM episodes WHERE reward > 0.5 LIMIT 100').all();\n const queryTime = Date.now() - queryStart;\n\n assert(results.length > 0, 'Should find episodes with reward > 0.5');\n assert(insertTime < 1000, 'Bulk insert should be fast (< 1s for 1000 records)');\n assert(queryTime < 50, 'Query should be fast (< 50ms)');\n\n log(` Insert 1000: ${insertTime}ms, Query: ${queryTime}ms`, 'cyan');\n });\n }\n\n // ========================================================================\n // Summary\n // ========================================================================\n\n runAll() {\n log('\\n═══════════════════════════════════════════════════════════', 'cyan');\n log(' AgentDB Frontier Features Validation', 'cyan');\n log('═══════════════════════════════════════════════════════════', 'cyan');\n\n // CausalMemoryGraph tests\n log('\\n📊 Testing CausalMemoryGraph', 'yellow');\n this.testCausalEdgeInsertion();\n this.testABExperiment();\n this.testCausalQuery();\n\n // ExplainableRecall tests\n log('\\n🔍 Testing ExplainableRecall', 'yellow');\n this.testCertificateCreation();\n this.testMerkleProofGeneration();\n this.testProvenanceTracking();\n this.testJustificationPaths();\n\n // Integration tests\n log('\\n🔗 Testing Integration', 'yellow');\n this.testCausalRecallIntegration();\n this.testDatabasePerformance();\n\n // Print summary\n log('\\n═══════════════════════════════════════════════════════════', 'cyan');\n log(' Summary', 'cyan');\n log('═══════════════════════════════════════════════════════════', 'cyan');\n log(`\\n Total Tests: ${this.testsRun}`, 'cyan');\n log(` Passed: ${this.testsPassed}`, 'green');\n log(` Failed: ${this.testsFailed}`, this.testsFailed > 0 ? 'red' : 'cyan');\n\n const passRate = ((this.testsPassed / this.testsRun) * 100).toFixed(1);\n log(` Pass Rate: ${passRate}%`, passRate === '100.0' ? 'green' : 'yellow');\n\n if (this.testsFailed === 0) {\n log('\\n✅ ALL TESTS PASSED - FRONTIER FEATURES VALIDATED', 'green');\n } else {\n log(`\\n❌ ${this.testsFailed} TEST(S) FAILED`, 'red');\n }\n\n log('═══════════════════════════════════════════════════════════\\n', 'cyan');\n\n this.db.close();\n\n return this.testsFailed === 0 ? 0 : 1;\n }\n}\n\n// Run validation\nconst validator = new FrontierValidator();\nconst exitCode = validator.runAll();\nprocess.exit(exitCode);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-frontier.d.cts","sourceRoot":"","sources":["../../src/agentdb/validate-frontier.cjs"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AgentDefinition } from "../utils/agentLoader.js";
|
|
2
|
+
export declare function claudeAgent(agent: AgentDefinition, input: string, onStream?: (chunk: string) => void, modelOverride?: string): Promise<{
|
|
3
|
+
output: string;
|
|
4
|
+
agent: string;
|
|
5
|
+
}>;
|
|
6
|
+
//# sourceMappingURL=claudeAgent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeAgent.d.ts","sourceRoot":"","sources":["../../src/agents/claudeAgent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AA6F1D,wBAAsB,WAAW,CAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAClC,aAAa,CAAC,EAAE,MAAM;;;GA8RvB"}
|
|
@@ -22,21 +22,39 @@ function getCurrentProvider() {
|
|
|
22
22
|
function getModelForProvider(provider) {
|
|
23
23
|
switch (provider) {
|
|
24
24
|
case 'gemini':
|
|
25
|
+
const geminiKey = process.env.GOOGLE_GEMINI_API_KEY;
|
|
26
|
+
if (!geminiKey) {
|
|
27
|
+
throw new Error('GOOGLE_GEMINI_API_KEY is required for Gemini provider.\n' +
|
|
28
|
+
'Set it via environment variable or use --provider anthropic for Claude models.\n' +
|
|
29
|
+
'Get your API key at: https://makersuite.google.com/app/apikey');
|
|
30
|
+
}
|
|
25
31
|
return {
|
|
26
32
|
model: process.env.COMPLETION_MODEL || 'gemini-2.0-flash-exp',
|
|
27
|
-
apiKey:
|
|
33
|
+
apiKey: geminiKey,
|
|
28
34
|
baseURL: process.env.PROXY_URL || undefined
|
|
29
35
|
};
|
|
30
36
|
case 'requesty':
|
|
37
|
+
const requestyKey = process.env.REQUESTY_API_KEY;
|
|
38
|
+
if (!requestyKey) {
|
|
39
|
+
throw new Error('REQUESTY_API_KEY is required for Requesty provider.\n' +
|
|
40
|
+
'Set it via environment variable or use --provider anthropic for Claude models.\n' +
|
|
41
|
+
'Get your API key at: https://requesty.ai');
|
|
42
|
+
}
|
|
31
43
|
return {
|
|
32
44
|
model: process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat',
|
|
33
|
-
apiKey:
|
|
45
|
+
apiKey: requestyKey,
|
|
34
46
|
baseURL: process.env.PROXY_URL || undefined
|
|
35
47
|
};
|
|
36
48
|
case 'openrouter':
|
|
49
|
+
const openrouterKey = process.env.OPENROUTER_API_KEY;
|
|
50
|
+
if (!openrouterKey) {
|
|
51
|
+
throw new Error('OPENROUTER_API_KEY is required for OpenRouter provider.\n' +
|
|
52
|
+
'Set it via environment variable or use --provider anthropic for Claude models.\n' +
|
|
53
|
+
'Get your API key at: https://openrouter.ai/keys');
|
|
54
|
+
}
|
|
37
55
|
return {
|
|
38
56
|
model: process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat',
|
|
39
|
-
apiKey:
|
|
57
|
+
apiKey: openrouterKey,
|
|
40
58
|
baseURL: process.env.PROXY_URL || undefined
|
|
41
59
|
};
|
|
42
60
|
case 'onnx':
|
|
@@ -315,3 +333,4 @@ export async function claudeAgent(agent, input, onStream, modelOverride) {
|
|
|
315
333
|
}
|
|
316
334
|
});
|
|
317
335
|
}
|
|
336
|
+
//# sourceMappingURL=claudeAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeAgent.js","sourceRoot":"","sources":["../../src/agents/claudeAgent.ts"],"names":[],"mappings":"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","sourcesContent":["// Generic agent that uses .claude/agents definitions with multi-provider SDK routing\nimport { query } from \"@anthropic-ai/claude-agent-sdk\";\nimport { logger } from \"../utils/logger.js\";\nimport { withRetry } from \"../utils/retry.js\";\nimport { AgentDefinition } from \"../utils/agentLoader.js\";\nimport { claudeFlowSdkServer } from \"../mcp/claudeFlowSdkServer.js\";\n\nfunction getCurrentProvider(): string {\n // Determine provider from environment\n if (process.env.PROVIDER === 'gemini' || process.env.USE_GEMINI === 'true') {\n return 'gemini';\n }\n if (process.env.PROVIDER === 'requesty' || process.env.USE_REQUESTY === 'true') {\n return 'requesty';\n }\n if (process.env.PROVIDER === 'openrouter' || process.env.USE_OPENROUTER === 'true') {\n return 'openrouter';\n }\n if (process.env.PROVIDER === 'onnx' || process.env.USE_ONNX === 'true') {\n return 'onnx';\n }\n return 'anthropic'; // Default\n}\n\nfunction getModelForProvider(provider: string): {\n model: string;\n apiKey: string;\n baseURL?: string;\n} {\n switch (provider) {\n case 'gemini':\n const geminiKey = process.env.GOOGLE_GEMINI_API_KEY;\n if (!geminiKey) {\n throw new Error(\n 'GOOGLE_GEMINI_API_KEY is required for Gemini provider.\\n' +\n 'Set it via environment variable or use --provider anthropic for Claude models.\\n' +\n 'Get your API key at: https://makersuite.google.com/app/apikey'\n );\n }\n return {\n model: process.env.COMPLETION_MODEL || 'gemini-2.0-flash-exp',\n apiKey: geminiKey,\n baseURL: process.env.PROXY_URL || undefined\n };\n\n case 'requesty':\n const requestyKey = process.env.REQUESTY_API_KEY;\n if (!requestyKey) {\n throw new Error(\n 'REQUESTY_API_KEY is required for Requesty provider.\\n' +\n 'Set it via environment variable or use --provider anthropic for Claude models.\\n' +\n 'Get your API key at: https://requesty.ai'\n );\n }\n return {\n model: process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat',\n apiKey: requestyKey,\n baseURL: process.env.PROXY_URL || undefined\n };\n\n case 'openrouter':\n const openrouterKey = process.env.OPENROUTER_API_KEY;\n if (!openrouterKey) {\n throw new Error(\n 'OPENROUTER_API_KEY is required for OpenRouter provider.\\n' +\n 'Set it via environment variable or use --provider anthropic for Claude models.\\n' +\n 'Get your API key at: https://openrouter.ai/keys'\n );\n }\n return {\n model: process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat',\n apiKey: openrouterKey,\n baseURL: process.env.PROXY_URL || undefined\n };\n\n case 'onnx':\n return {\n model: 'onnx-local',\n apiKey: 'local',\n baseURL: process.env.PROXY_URL || undefined\n };\n\n case 'anthropic':\n default:\n // For anthropic provider, require ANTHROPIC_API_KEY\n const apiKey = process.env.ANTHROPIC_API_KEY;\n if (!apiKey) {\n throw new Error('ANTHROPIC_API_KEY is required but not set for Anthropic provider');\n }\n return {\n model: process.env.COMPLETION_MODEL || 'claude-sonnet-4-5-20250929',\n apiKey,\n // No baseURL for direct Anthropic\n };\n }\n}\n\nexport async function claudeAgent(\n agent: AgentDefinition,\n input: string,\n onStream?: (chunk: string) => void,\n modelOverride?: string\n) {\n const startTime = Date.now();\n const provider = getCurrentProvider();\n\n logger.info('Starting Claude Agent SDK with multi-provider support', {\n agent: agent.name,\n provider,\n input: input.substring(0, 100),\n model: modelOverride || 'default'\n });\n\n return withRetry(async () => {\n // Get model configuration for the selected provider\n const modelConfig = getModelForProvider(provider);\n const finalModel = modelOverride || modelConfig.model;\n\n // Configure environment for Claude Agent SDK with proxy routing\n // The SDK internally uses Anthropic client which reads ANTHROPIC_BASE_URL and ANTHROPIC_API_KEY\n const envOverrides: Record<string, string> = {};\n\n if (provider === 'gemini' && process.env.GOOGLE_GEMINI_API_KEY) {\n // Use ANTHROPIC_BASE_URL if already set by CLI (proxy mode)\n envOverrides.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY || 'proxy-key';\n envOverrides.ANTHROPIC_BASE_URL = process.env.ANTHROPIC_BASE_URL || process.env.GEMINI_PROXY_URL || 'http://localhost:3000';\n\n logger.info('Using Gemini proxy', {\n proxyUrl: envOverrides.ANTHROPIC_BASE_URL,\n model: finalModel\n });\n } else if (provider === 'requesty' && process.env.REQUESTY_API_KEY) {\n // Use ANTHROPIC_BASE_URL if already set by CLI (proxy mode)\n envOverrides.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY || 'proxy-key';\n envOverrides.ANTHROPIC_BASE_URL = process.env.ANTHROPIC_BASE_URL || process.env.REQUESTY_PROXY_URL || 'http://localhost:3000';\n\n logger.info('Using Requesty proxy', {\n proxyUrl: envOverrides.ANTHROPIC_BASE_URL,\n model: finalModel\n });\n } else if (provider === 'openrouter' && process.env.OPENROUTER_API_KEY) {\n // Use ANTHROPIC_BASE_URL if already set by CLI (proxy mode)\n envOverrides.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY || 'proxy-key';\n envOverrides.ANTHROPIC_BASE_URL = process.env.ANTHROPIC_BASE_URL || process.env.OPENROUTER_PROXY_URL || 'http://localhost:3000';\n\n logger.info('Using OpenRouter proxy', {\n proxyUrl: envOverrides.ANTHROPIC_BASE_URL,\n model: finalModel\n });\n } else if (provider === 'onnx') {\n // For ONNX: Use ANTHROPIC_BASE_URL if already set by CLI (proxy mode)\n envOverrides.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY || 'sk-ant-onnx-local-key';\n envOverrides.ANTHROPIC_BASE_URL = process.env.ANTHROPIC_BASE_URL || process.env.ONNX_PROXY_URL || 'http://localhost:3001';\n\n logger.info('Using ONNX local proxy', {\n proxyUrl: envOverrides.ANTHROPIC_BASE_URL,\n model: finalModel\n });\n }\n // For Anthropic provider, use existing ANTHROPIC_API_KEY (no proxy needed)\n\n logger.info('Multi-provider configuration', {\n provider,\n model: finalModel,\n hasApiKey: !!envOverrides.ANTHROPIC_API_KEY || !!process.env.ANTHROPIC_API_KEY,\n hasBaseURL: !!envOverrides.ANTHROPIC_BASE_URL\n });\n\n try {\n // MCP server setup - enable in-SDK server and optional external servers\n const mcpServers: any = {};\n\n // CRITICAL FIX: Disable all MCP servers for Requesty provider\n // The Claude SDK hangs when trying to initialize MCP servers with Requesty\n // This is a fundamental incompatibility - SDK initialization fails before API call\n if (provider === 'requesty') {\n logger.info('⚠️ Requesty provider detected - disabling all MCP servers to prevent hang');\n console.log('⚠️ Requesty: MCP tools disabled (SDK incompatibility)');\n // Skip all MCP server initialization for Requesty\n // Continue with empty mcpServers object\n } else {\n // Enable in-SDK MCP server for custom tools (enabled by default)\n if (process.env.ENABLE_CLAUDE_FLOW_SDK !== 'false') {\n mcpServers['claude-flow-sdk'] = claudeFlowSdkServer;\n }\n\n // External MCP servers (enabled by default for full 213-tool access)\n // Disable by setting ENABLE_CLAUDE_FLOW_MCP=false\n if (process.env.ENABLE_CLAUDE_FLOW_MCP !== 'false') {\n mcpServers['claude-flow'] = {\n type: 'stdio',\n command: 'npx',\n args: ['claude-flow@alpha', 'mcp', 'start'],\n env: {\n ...process.env,\n MCP_AUTO_START: 'true',\n PROVIDER: provider\n }\n };\n }\n\n if (process.env.ENABLE_FLOW_NEXUS_MCP !== 'false') {\n mcpServers['flow-nexus'] = {\n type: 'stdio',\n command: 'npx',\n args: ['flow-nexus@latest', 'mcp', 'start'],\n env: {\n ...process.env,\n FLOW_NEXUS_AUTO_START: 'true'\n }\n };\n }\n\n if (process.env.ENABLE_AGENTIC_PAYMENTS_MCP !== 'false') {\n mcpServers['agentic-payments'] = {\n type: 'stdio',\n command: 'npx',\n args: ['-y', 'agentic-payments', 'mcp'],\n env: {\n ...process.env,\n AGENTIC_PAYMENTS_AUTO_START: 'true'\n }\n };\n }\n\n // Load MCP servers from user config file (~/.agentic-flow/mcp-config.json)\n try {\n const fs = await import('fs');\n const path = await import('path');\n const os = await import('os');\n\n const configPath = path.join(os.homedir(), '.agentic-flow', 'mcp-config.json');\n\n if (fs.existsSync(configPath)) {\n const configContent = fs.readFileSync(configPath, 'utf-8');\n const config = JSON.parse(configContent);\n\n // Add enabled user-configured servers\n for (const [name, server] of Object.entries(config.servers || {})) {\n const serverConfig = server as any;\n if (serverConfig.enabled) {\n mcpServers[name] = {\n type: 'stdio',\n command: serverConfig.command,\n args: serverConfig.args || [],\n env: {\n ...process.env,\n ...serverConfig.env\n }\n };\n console.log(`[agentic-flow] Loaded MCP server: ${name}`);\n }\n }\n }\n } catch (error) {\n // Silently fail if config doesn't exist or can't be read\n console.log('[agentic-flow] No user MCP config found (this is normal)');\n }\n } // End of provider !== 'requesty' check\n\n const queryOptions: any = {\n systemPrompt: agent.systemPrompt,\n model: finalModel, // Claude Agent SDK handles model selection\n permissionMode: 'bypassPermissions', // Auto-approve all tool usage for Docker automation\n // Enable all built-in tools by default (Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch)\n // Based on SDK types, allowedTools and disallowedTools control which tools are available\n // If not specified, all tools are enabled by default\n allowedTools: [\n 'Read',\n 'Write',\n 'Edit',\n 'Bash',\n 'Glob',\n 'Grep',\n 'WebFetch',\n 'WebSearch',\n 'NotebookEdit',\n 'TodoWrite'\n ],\n // Add MCP servers if configured\n mcpServers: Object.keys(mcpServers).length > 0 ? mcpServers : undefined\n };\n\n // Add environment overrides if present\n if (Object.keys(envOverrides).length > 0) {\n queryOptions.env = {\n ...process.env,\n ...envOverrides\n };\n }\n\n const result = query({\n prompt: input,\n options: queryOptions\n });\n\n let output = '';\n let toolCallCount = 0;\n\n for await (const msg of result) {\n const msgAny = msg as any; // Use any to handle different event types from SDK\n\n // Debug: Log message structure to understand SDK events\n if (process.env.DEBUG_STREAMING === 'true') {\n console.error(`[DEBUG] Message type: ${msg.type}, keys: ${Object.keys(msg).join(', ')}`);\n }\n\n // Handle assistant text messages\n if (msg.type === 'assistant') {\n const chunk = msg.message.content?.map((c: any) => c.type === 'text' ? c.text : '').join('') || '';\n output += chunk;\n\n if (onStream && chunk) {\n onStream(chunk);\n }\n\n // Check for tool use in message content blocks\n const toolBlocks = msg.message.content?.filter((c: any) => c.type === 'tool_use') || [];\n for (const toolBlock of toolBlocks) {\n toolCallCount++;\n const toolName = (toolBlock as any).name || 'unknown';\n const timestamp = new Date().toISOString().split('T')[1].split('.')[0];\n const progressMsg = `\\n[${timestamp}] 🔍 Tool call #${toolCallCount}: ${toolName}\\n`;\n process.stderr.write(progressMsg);\n\n if (onStream) {\n onStream(progressMsg);\n }\n }\n }\n\n // Handle stream events that contain tool information\n if (msgAny.streamEvent) {\n const event = msgAny.streamEvent;\n\n // Tool use event (content_block_start with tool_use)\n if (event.type === 'content_block_start' && event.content_block?.type === 'tool_use') {\n toolCallCount++;\n const toolName = event.content_block.name || 'unknown';\n const timestamp = new Date().toISOString().split('T')[1].split('.')[0];\n const progressMsg = `\\n[${timestamp}] 🔍 Tool call #${toolCallCount}: ${toolName}\\n`;\n process.stderr.write(progressMsg);\n\n if (onStream) {\n onStream(progressMsg);\n }\n }\n\n // Tool result event (content_block_stop)\n if (event.type === 'content_block_stop') {\n const timestamp = new Date().toISOString().split('T')[1].split('.')[0];\n const resultMsg = `[${timestamp}] ✅ Tool completed\\n`;\n process.stderr.write(resultMsg);\n\n if (onStream) {\n onStream(resultMsg);\n }\n }\n }\n\n // Flush output to ensure immediate visibility\n if (process.stderr.uncork) {\n process.stderr.uncork();\n }\n if (process.stdout.uncork) {\n process.stdout.uncork();\n }\n }\n\n const duration = Date.now() - startTime;\n logger.info('Claude Agent SDK completed', {\n agent: agent.name,\n provider,\n duration,\n outputLength: output.length\n });\n\n return { output, agent: agent.name };\n } catch (error: any) {\n logger.error('Claude Agent SDK execution failed', {\n provider,\n model: finalModel,\n error: error.message\n });\n throw error;\n }\n });\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AgentDefinition } from "../utils/agentLoader.js";
|
|
2
|
+
export declare function claudeAgentDirect(agent: AgentDefinition, input: string, onStream?: (chunk: string) => void, modelOverride?: string): Promise<{
|
|
3
|
+
output: string;
|
|
4
|
+
agent: string;
|
|
5
|
+
}>;
|
|
6
|
+
//# sourceMappingURL=claudeAgentDirect.d.ts.map
|