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,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Consolidation
|
|
3
|
+
* Algorithm 4 from ReasoningBank paper: Dedup, Contradict, Prune
|
|
4
|
+
*/
|
|
5
|
+
export interface ConsolidationResult {
|
|
6
|
+
itemsProcessed: number;
|
|
7
|
+
duplicatesFound: number;
|
|
8
|
+
contradictionsFound: number;
|
|
9
|
+
itemsPruned: number;
|
|
10
|
+
durationMs: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Run consolidation: deduplicate, detect contradictions, prune old memories
|
|
14
|
+
*/
|
|
15
|
+
export declare function consolidate(): Promise<ConsolidationResult>;
|
|
16
|
+
/**
|
|
17
|
+
* Check if consolidation should run
|
|
18
|
+
* Returns true if threshold of new memories is reached
|
|
19
|
+
*/
|
|
20
|
+
export declare function shouldConsolidate(): boolean;
|
|
21
|
+
//# sourceMappingURL=consolidate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidate.d.ts","sourceRoot":"","sources":["../../../src/reasoningbank/core/consolidate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAqDhE;AAuGD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidate.js","sourceRoot":"","sources":["../../../src/reasoningbank/core/consolidate.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Memory Consolidation\n * Algorithm 4 from ReasoningBank paper: Dedup, Contradict, Prune\n */\n\nimport { ulid } from 'ulid';\nimport { loadConfig } from '../utils/config.js';\nimport { cosineSimilarity } from '../utils/mmr.js';\nimport * as db from '../db/queries.js';\n\nexport interface ConsolidationResult {\n itemsProcessed: number;\n duplicatesFound: number;\n contradictionsFound: number;\n itemsPruned: number;\n durationMs: number;\n}\n\n/**\n * Run consolidation: deduplicate, detect contradictions, prune old memories\n */\nexport async function consolidate(): Promise<ConsolidationResult> {\n const config = loadConfig();\n const startTime = Date.now();\n\n console.log('[INFO] Starting memory consolidation...');\n\n const runId = ulid();\n const memories = db.getAllActiveMemories();\n\n console.log(`[INFO] Processing ${memories.length} active memories`);\n\n let duplicatesFound = 0;\n let contradictionsFound = 0;\n let itemsPruned = 0;\n\n // Step 1: Deduplicate similar memories\n duplicatesFound = await deduplicateMemories(memories, config.consolidate.duplicate_threshold);\n\n // Step 2: Detect contradictions\n contradictionsFound = await detectContradictions(memories, config.consolidate.contradiction_threshold);\n\n // Step 3: Prune old, unused memories\n itemsPruned = db.pruneOldMemories({\n maxAgeDays: config.consolidate.prune_age_days,\n minConfidence: config.consolidate.min_confidence_keep\n });\n\n const durationMs = Date.now() - startTime;\n\n // Store consolidation run\n db.storeConsolidationRun({\n run_id: runId,\n items_processed: memories.length,\n duplicates_found: duplicatesFound,\n contradictions_found: contradictionsFound,\n items_pruned: itemsPruned,\n duration_ms: durationMs\n });\n\n console.log(`[INFO] Consolidation complete: ${duplicatesFound} dupes, ${contradictionsFound} contradictions, ${itemsPruned} pruned in ${durationMs}ms`);\n\n db.logMetric('rb.consolidate.duration_ms', durationMs);\n db.logMetric('rb.consolidate.duplicates', duplicatesFound);\n db.logMetric('rb.consolidate.contradictions', contradictionsFound);\n db.logMetric('rb.consolidate.pruned', itemsPruned);\n\n return {\n itemsProcessed: memories.length,\n duplicatesFound,\n contradictionsFound,\n itemsPruned,\n durationMs\n };\n}\n\n/**\n * Deduplicate highly similar memories\n */\nasync function deduplicateMemories(\n memories: any[],\n threshold: number\n): Promise<number> {\n let duplicatesFound = 0;\n\n // Fetch embeddings for all memories\n const dbConn = db.getDb();\n const embeddingsMap = new Map<string, Float32Array>();\n\n for (const mem of memories) {\n const row = dbConn.prepare('SELECT vector FROM pattern_embeddings WHERE id = ?').get(mem.id) as { vector: Buffer } | undefined;\n if (row) {\n embeddingsMap.set(mem.id, new Float32Array(row.vector));\n }\n }\n\n // Compare all pairs\n for (let i = 0; i < memories.length; i++) {\n for (let j = i + 1; j < memories.length; j++) {\n const mem1 = memories[i];\n const mem2 = memories[j];\n\n const emb1 = embeddingsMap.get(mem1.id);\n const emb2 = embeddingsMap.get(mem2.id);\n\n if (!emb1 || !emb2) continue;\n\n const similarity = cosineSimilarity(emb1, emb2);\n\n if (similarity >= threshold) {\n // Mark as duplicate\n db.storeLink(mem1.id, mem2.id, 'duplicate_of', similarity);\n duplicatesFound++;\n\n // Merge: keep the one with higher usage\n if (mem1.usage_count < mem2.usage_count) {\n // Delete mem1 (lower usage)\n dbConn.prepare('DELETE FROM patterns WHERE id = ?').run(mem1.id);\n console.log(`[INFO] Merged duplicate: ${mem1.pattern_data.title} → ${mem2.pattern_data.title}`);\n }\n }\n }\n }\n\n return duplicatesFound;\n}\n\n/**\n * Detect contradicting memories\n * Uses embedding similarity + semantic analysis\n */\nasync function detectContradictions(\n memories: any[],\n threshold: number\n): Promise<number> {\n let contradictionsFound = 0;\n\n const dbConn = db.getDb();\n const embeddingsMap = new Map<string, Float32Array>();\n\n for (const mem of memories) {\n const row = dbConn.prepare('SELECT vector FROM pattern_embeddings WHERE id = ?').get(mem.id) as { vector: Buffer } | undefined;\n if (row) {\n embeddingsMap.set(mem.id, new Float32Array(row.vector));\n }\n }\n\n // Look for memories with high similarity but opposite outcomes\n for (let i = 0; i < memories.length; i++) {\n for (let j = i + 1; j < memories.length; j++) {\n const mem1 = memories[i];\n const mem2 = memories[j];\n\n const emb1 = embeddingsMap.get(mem1.id);\n const emb2 = embeddingsMap.get(mem2.id);\n\n if (!emb1 || !emb2) continue;\n\n const similarity = cosineSimilarity(emb1, emb2);\n\n // High similarity but different outcomes = potential contradiction\n if (similarity >= threshold) {\n const outcome1 = mem1.pattern_data.source?.outcome;\n const outcome2 = mem2.pattern_data.source?.outcome;\n\n if (outcome1 !== outcome2) {\n db.storeLink(mem1.id, mem2.id, 'contradicts', similarity);\n contradictionsFound++;\n console.log(`[WARN] Contradiction detected: ${mem1.pattern_data.title} vs ${mem2.pattern_data.title}`);\n }\n }\n }\n }\n\n return contradictionsFound;\n}\n\n/**\n * Check if consolidation should run\n * Returns true if threshold of new memories is reached\n */\nexport function shouldConsolidate(): boolean {\n const config = loadConfig();\n const newCount = db.countNewMemoriesSinceConsolidation();\n return newCount >= config.consolidate.trigger_threshold;\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Distillation from trajectories
|
|
3
|
+
* Algorithm 3 from ReasoningBank paper
|
|
4
|
+
*/
|
|
5
|
+
import type { Trajectory } from '../db/schema.js';
|
|
6
|
+
import type { Verdict } from './judge.js';
|
|
7
|
+
export interface DistilledMemory {
|
|
8
|
+
title: string;
|
|
9
|
+
description: string;
|
|
10
|
+
content: string;
|
|
11
|
+
tags: string[];
|
|
12
|
+
domain?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Distill memories from a trajectory
|
|
16
|
+
*/
|
|
17
|
+
export declare function distillMemories(trajectory: Trajectory, verdict: Verdict, query: string, options?: {
|
|
18
|
+
taskId?: string;
|
|
19
|
+
agentId?: string;
|
|
20
|
+
domain?: string;
|
|
21
|
+
}): Promise<string[]>;
|
|
22
|
+
//# sourceMappingURL=distill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distill.d.ts","sourceRoot":"","sources":["../../../src/reasoningbank/core/distill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAc1C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,OAAO,CAAC,MAAM,EAAE,CAAC,CA8EnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distill.js","sourceRoot":"","sources":["../../../src/reasoningbank/core/distill.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Memory Distillation from trajectories\n * Algorithm 3 from ReasoningBank paper\n */\n\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { ulid } from 'ulid';\nimport { loadConfig } from '../utils/config.js';\nimport { scrubMemory } from '../utils/pii-scrubber.js';\nimport { computeEmbedding } from '../utils/embeddings.js';\nimport { ModelRouter } from '../../router/router.js';\nimport * as db from '../db/queries.js';\nimport type { Trajectory } from '../db/schema.js';\nimport type { Verdict } from './judge.js';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Initialize ModelRouter once\nlet routerInstance: ModelRouter | null = null;\nfunction getRouter(): ModelRouter {\n if (!routerInstance) {\n routerInstance = new ModelRouter();\n }\n return routerInstance;\n}\n\nexport interface DistilledMemory {\n title: string;\n description: string;\n content: string;\n tags: string[];\n domain?: string;\n}\n\n/**\n * Distill memories from a trajectory\n */\nexport async function distillMemories(\n trajectory: Trajectory,\n verdict: Verdict,\n query: string,\n options: { taskId?: string; agentId?: string; domain?: string } = {}\n): Promise<string[]> {\n const config = loadConfig();\n const startTime = Date.now();\n\n console.log(`[INFO] Distilling memories from ${verdict.label} trajectory`);\n\n // Select appropriate prompt template\n const templateName = verdict.label === 'Success' ? 'distill-success.json' : 'distill-failure.json';\n const promptPath = join(__dirname, '../prompts', templateName);\n const promptTemplate = JSON.parse(readFileSync(promptPath, 'utf-8'));\n\n const maxItems = verdict.label === 'Success'\n ? config.distill.max_items_success\n : config.distill.max_items_failure;\n\n const confidencePrior = verdict.label === 'Success'\n ? config.distill.confidence_prior_success\n : config.distill.confidence_prior_failure;\n\n // Check if we have any API key configured\n const hasApiKey = process.env.OPENROUTER_API_KEY ||\n process.env.ANTHROPIC_API_KEY ||\n process.env.GOOGLE_GEMINI_API_KEY;\n\n if (!hasApiKey) {\n console.warn('[WARN] No API key set (OPENROUTER_API_KEY, ANTHROPIC_API_KEY, or GOOGLE_GEMINI_API_KEY), using template-based distillation');\n return templateBasedDistill(trajectory, verdict, query, options);\n }\n\n try {\n // Format trajectory\n const trajectoryText = JSON.stringify(trajectory.steps || [], null, 2);\n\n // Build prompt\n const prompt = promptTemplate.template\n .replace('{{task_query}}', query)\n .replace('{{trajectory}}', trajectoryText)\n .replace('{{max_items}}', String(maxItems));\n\n // Use ModelRouter for multi-provider support\n const router = getRouter();\n const response = await router.chat({\n model: config.distill.model || config.judge.model,\n messages: [\n { role: 'system', content: promptTemplate.system },\n { role: 'user', content: prompt }\n ],\n temperature: config.distill.temperature || 0.3,\n maxTokens: config.distill.max_tokens || 2048\n }, 'reasoningbank-distill');\n\n // Extract content from router response\n const content = response.content\n .filter(block => block.type === 'text')\n .map(block => block.text)\n .join('\\n');\n\n // Parse memories from response\n const distilled = parseDistilledMemories(content);\n\n // Store memories in database\n const memoryIds = await storeMemories(\n distilled,\n confidencePrior,\n verdict,\n options\n );\n\n const duration = Date.now() - startTime;\n console.log(`[INFO] Distilled ${memoryIds.length} memories in ${duration}ms`);\n db.logMetric('rb.distill.latency_ms', duration);\n db.logMetric('rb.distill.yield', memoryIds.length);\n\n return memoryIds;\n } catch (error) {\n console.error('[ERROR] Distillation failed:', error);\n return templateBasedDistill(trajectory, verdict, query, options);\n }\n}\n\n/**\n * Parse distilled memories from LLM response\n */\nfunction parseDistilledMemories(content: string): DistilledMemory[] {\n try {\n const jsonMatch = content.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n const parsed = JSON.parse(jsonMatch[0]);\n return parsed.memories || [];\n }\n } catch (error) {\n console.warn('[WARN] Failed to parse distilled memories JSON');\n }\n\n return [];\n}\n\n/**\n * Store memories in database\n */\nasync function storeMemories(\n memories: DistilledMemory[],\n confidencePrior: number,\n verdict: Verdict,\n options: { taskId?: string; agentId?: string; domain?: string }\n): Promise<string[]> {\n const memoryIds: string[] = [];\n\n for (const mem of memories) {\n // Scrub PII\n const scrubbed = scrubMemory(mem);\n\n // Generate embedding\n const embedding = await computeEmbedding(\n `${scrubbed.title} ${scrubbed.description} ${scrubbed.content}`\n );\n\n // Create memory ID\n const id = ulid();\n\n // Store memory\n db.upsertMemory({\n id,\n type: 'reasoning_memory',\n pattern_data: {\n title: scrubbed.title,\n description: scrubbed.description,\n content: scrubbed.content,\n source: {\n task_id: options.taskId || 'unknown',\n agent_id: options.agentId || 'unknown',\n outcome: verdict.label,\n evidence: []\n },\n tags: scrubbed.tags,\n domain: options.domain || scrubbed.domain,\n created_at: new Date().toISOString(),\n confidence: confidencePrior,\n n_uses: 0\n },\n confidence: confidencePrior,\n usage_count: 0\n });\n\n // Store embedding\n db.upsertEmbedding({\n id,\n model: 'distill-' + verdict.label.toLowerCase(),\n dims: embedding.length,\n vector: embedding,\n created_at: new Date().toISOString()\n });\n\n memoryIds.push(id);\n console.log(`[INFO] Stored memory: ${scrubbed.title}`);\n }\n\n return memoryIds;\n}\n\n/**\n * Template-based distillation (fallback)\n * Simple extraction without LLM\n */\nfunction templateBasedDistill(\n trajectory: Trajectory,\n verdict: Verdict,\n query: string,\n options: any\n): string[] {\n console.log('[INFO] Using template-based distillation (no API key)');\n\n // Create a single generic memory from the trajectory\n const memory: DistilledMemory = {\n title: `${verdict.label}: ${query.substring(0, 50)}`,\n description: `Task outcome: ${verdict.label}`,\n content: `Query: ${query}\\n\\nSteps: ${trajectory.steps?.length || 0}\\n\\nOutcome: ${verdict.label}`,\n tags: [verdict.label.toLowerCase(), 'template'],\n domain: options.domain\n };\n\n // Store synchronously (no async needed for template)\n return []; // Skip storage for template-based (would need to make this async)\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-as-Judge for trajectory evaluation
|
|
3
|
+
* Algorithm 2 from ReasoningBank paper
|
|
4
|
+
*/
|
|
5
|
+
import type { Trajectory } from '../db/schema.js';
|
|
6
|
+
export interface Verdict {
|
|
7
|
+
label: 'Success' | 'Failure';
|
|
8
|
+
confidence: number;
|
|
9
|
+
reasons: string[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Judge a task trajectory using LLM evaluation
|
|
13
|
+
*/
|
|
14
|
+
export declare function judgeTrajectory(trajectory: Trajectory, query: string, options?: {
|
|
15
|
+
useCache?: boolean;
|
|
16
|
+
}): Promise<Verdict>;
|
|
17
|
+
//# sourceMappingURL=judge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../../src/reasoningbank/core/judge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAclD,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,OAAO,CAAC,CA4DlB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"judge.js","sourceRoot":"","sources":["../../../src/reasoningbank/core/judge.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * LLM-as-Judge for trajectory evaluation\n * Algorithm 2 from ReasoningBank paper\n */\n\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { loadConfig } from '../utils/config.js';\nimport { ModelRouter } from '../../router/router.js';\nimport type { Trajectory } from '../db/schema.js';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Initialize ModelRouter once\nlet routerInstance: ModelRouter | null = null;\nfunction getRouter(): ModelRouter {\n if (!routerInstance) {\n routerInstance = new ModelRouter();\n }\n return routerInstance;\n}\n\nexport interface Verdict {\n label: 'Success' | 'Failure';\n confidence: number;\n reasons: string[];\n}\n\n/**\n * Judge a task trajectory using LLM evaluation\n */\nexport async function judgeTrajectory(\n trajectory: Trajectory,\n query: string,\n options: { useCache?: boolean } = {}\n): Promise<Verdict> {\n const config = loadConfig();\n const startTime = Date.now();\n\n console.log(`[INFO] Judging trajectory for query: ${query.substring(0, 100)}...`);\n\n // Load judge prompt template (relative to this file)\n const promptPath = join(__dirname, '../prompts/judge.json');\n const promptTemplate = JSON.parse(readFileSync(promptPath, 'utf-8'));\n\n // Format trajectory for judgment\n const trajectoryText = formatTrajectory(trajectory);\n\n // Check if we have any API key configured\n const hasApiKey = process.env.OPENROUTER_API_KEY ||\n process.env.ANTHROPIC_API_KEY ||\n process.env.GOOGLE_GEMINI_API_KEY;\n\n if (!hasApiKey) {\n console.warn('[WARN] No API key set (OPENROUTER_API_KEY, ANTHROPIC_API_KEY, or GOOGLE_GEMINI_API_KEY), using heuristic judgment');\n return heuristicJudge(trajectory, query);\n }\n\n try {\n // Call LLM API with judge prompt using ModelRouter\n const prompt = promptTemplate.template\n .replace('{{task_query}}', query)\n .replace('{{trajectory}}', trajectoryText);\n\n const router = getRouter();\n const response = await router.chat({\n model: config.judge.model,\n messages: [\n { role: 'system', content: promptTemplate.system },\n { role: 'user', content: prompt }\n ],\n temperature: config.judge.temperature,\n maxTokens: config.judge.max_tokens\n }, 'reasoningbank-judge');\n\n // Extract content from router response\n const content = response.content\n .filter(block => block.type === 'text')\n .map(block => block.text)\n .join('\\n');\n\n // Parse JSON response\n const verdict = parseVerdict(content);\n\n const duration = Date.now() - startTime;\n console.log(`[INFO] Judgment complete: ${verdict.label} (${verdict.confidence}) in ${duration}ms`);\n db.logMetric('rb.judge.latency_ms', duration);\n db.logMetric('rb.judge.success_rate', verdict.label === 'Success' ? 1 : 0);\n\n return verdict;\n } catch (error) {\n console.error('[ERROR] Judge failed:', error);\n console.warn('[WARN] Falling back to heuristic judgment');\n return heuristicJudge(trajectory, query);\n }\n}\n\n/**\n * Format trajectory for LLM consumption\n */\nfunction formatTrajectory(trajectory: Trajectory): string {\n const steps = trajectory.steps || [];\n let formatted = '';\n\n for (let i = 0; i < steps.length; i++) {\n formatted += `Step ${i + 1}: ${JSON.stringify(steps[i], null, 2)}\\n\\n`;\n }\n\n return formatted || 'No steps recorded';\n}\n\n/**\n * Parse verdict from LLM response\n */\nfunction parseVerdict(content: string): Verdict {\n try {\n // Try to extract JSON from response\n const jsonMatch = content.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n const parsed = JSON.parse(jsonMatch[0]);\n return {\n label: parsed.verdict?.label || parsed.label || 'Failure',\n confidence: parsed.verdict?.confidence || parsed.confidence || 0.5,\n reasons: parsed.verdict?.reasons || parsed.reasons || []\n };\n }\n } catch (error) {\n console.warn('[WARN] Failed to parse verdict JSON, using text analysis');\n }\n\n // Fallback: text-based detection\n const lower = content.toLowerCase();\n const isSuccess = lower.includes('success') && !lower.includes('failure');\n\n return {\n label: isSuccess ? 'Success' : 'Failure',\n confidence: 0.6,\n reasons: ['Parsed from text (JSON parse failed)']\n };\n}\n\n/**\n * Heuristic judgment when LLM is unavailable\n * Simple rule-based classification\n */\nfunction heuristicJudge(trajectory: Trajectory, query: string): Verdict {\n const steps = trajectory.steps || [];\n\n // Check for error indicators\n const hasErrors = steps.some(step =>\n JSON.stringify(step).toLowerCase().includes('error')\n );\n\n // Check for completion indicators\n const hasCompletion = steps.some(step =>\n JSON.stringify(step).toLowerCase().includes('complete')\n );\n\n // Simple heuristic: success if no errors and has completion markers\n const isSuccess = !hasErrors && hasCompletion && steps.length > 0;\n\n return {\n label: isSuccess ? 'Success' : 'Failure',\n confidence: 0.5, // Low confidence for heuristic\n reasons: [\n `Heuristic judgment (no API key)`,\n `Steps: ${steps.length}`,\n `Errors: ${hasErrors}`,\n `Completion markers: ${hasCompletion}`\n ]\n };\n}\n\n// Import db late to avoid circular dependency\nimport * as db from '../db/queries.js';\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MaTTS: Memory-aware Test-Time Scaling
|
|
3
|
+
* Algorithm 5 from ReasoningBank paper
|
|
4
|
+
*
|
|
5
|
+
* Two modes:
|
|
6
|
+
* - Parallel: k independent rollouts with self-contrast aggregation
|
|
7
|
+
* - Sequential: r iterative refinements with check-and-correct
|
|
8
|
+
*/
|
|
9
|
+
import type { Trajectory } from '../db/schema.js';
|
|
10
|
+
export interface MattsResult {
|
|
11
|
+
runId: string;
|
|
12
|
+
mode: 'parallel' | 'sequential';
|
|
13
|
+
k: number;
|
|
14
|
+
trajectories: Array<{
|
|
15
|
+
id: string;
|
|
16
|
+
verdict: {
|
|
17
|
+
label: string;
|
|
18
|
+
confidence: number;
|
|
19
|
+
};
|
|
20
|
+
trajectory: Trajectory;
|
|
21
|
+
}>;
|
|
22
|
+
aggregatedMemories: string[];
|
|
23
|
+
successRate: number;
|
|
24
|
+
duration: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Run MaTTS in parallel mode
|
|
28
|
+
* Execute k independent rollouts and aggregate via self-contrast
|
|
29
|
+
*/
|
|
30
|
+
export declare function mattsParallel(taskFn: () => Promise<Trajectory>, query: string, options?: {
|
|
31
|
+
k?: number;
|
|
32
|
+
taskId?: string;
|
|
33
|
+
agentId?: string;
|
|
34
|
+
domain?: string;
|
|
35
|
+
}): Promise<MattsResult>;
|
|
36
|
+
/**
|
|
37
|
+
* Run MaTTS in sequential mode
|
|
38
|
+
* Iterative refinement with check-and-correct
|
|
39
|
+
*/
|
|
40
|
+
export declare function mattsSequential(taskFn: (memories: any[]) => Promise<Trajectory>, query: string, options?: {
|
|
41
|
+
r?: number;
|
|
42
|
+
taskId?: string;
|
|
43
|
+
agentId?: string;
|
|
44
|
+
domain?: string;
|
|
45
|
+
}): Promise<MattsResult>;
|
|
46
|
+
//# sourceMappingURL=matts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matts.d.ts","sourceRoot":"","sources":["../../../src/reasoningbank/core/matts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAclD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;IAChC,CAAC,EAAE,MAAM,CAAC;IACV,YAAY,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,UAAU,EAAE,UAAU,CAAC;KACxB,CAAC,CAAC;IACH,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/E,OAAO,CAAC,WAAW,CAAC,CAyEtB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,EAChD,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/E,OAAO,CAAC,WAAW,CAAC,CAqFtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matts.js","sourceRoot":"","sources":["../../../src/reasoningbank/core/matts.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MaTTS: Memory-aware Test-Time Scaling\n * Algorithm 5 from ReasoningBank paper\n *\n * Two modes:\n * - Parallel: k independent rollouts with self-contrast aggregation\n * - Sequential: r iterative refinements with check-and-correct\n */\n\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { ulid } from 'ulid';\nimport { loadConfig } from '../utils/config.js';\nimport { retrieveMemories } from './retrieve.js';\nimport { judgeTrajectory } from './judge.js';\nimport { distillMemories } from './distill.js';\nimport { ModelRouter } from '../../router/router.js';\nimport * as db from '../db/queries.js';\nimport type { Trajectory } from '../db/schema.js';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Initialize ModelRouter once\nlet routerInstance: ModelRouter | null = null;\nfunction getRouter(): ModelRouter {\n if (!routerInstance) {\n routerInstance = new ModelRouter();\n }\n return routerInstance;\n}\n\nexport interface MattsResult {\n runId: string;\n mode: 'parallel' | 'sequential';\n k: number;\n trajectories: Array<{\n id: string;\n verdict: { label: string; confidence: number };\n trajectory: Trajectory;\n }>;\n aggregatedMemories: string[];\n successRate: number;\n duration: number;\n}\n\n/**\n * Run MaTTS in parallel mode\n * Execute k independent rollouts and aggregate via self-contrast\n */\nexport async function mattsParallel(\n taskFn: () => Promise<Trajectory>,\n query: string,\n options: { k?: number; taskId?: string; agentId?: string; domain?: string } = {}\n): Promise<MattsResult> {\n const config = loadConfig();\n const k = options.k || config.matts.parallel_k;\n const runId = ulid();\n const startTime = Date.now();\n\n console.log(`[INFO] Starting MaTTS parallel mode with k=${k}`);\n\n // Store MaTTS run\n db.storeMattsRun({\n run_id: runId,\n task_id: options.taskId || 'matts-' + runId,\n mode: 'parallel',\n k,\n status: 'running',\n summary: undefined\n });\n\n const trajectories: MattsResult['trajectories'] = [];\n\n // Execute k independent rollouts\n for (let i = 0; i < k; i++) {\n console.log(`[INFO] MaTTS parallel rollout ${i + 1}/${k}`);\n\n try {\n const trajectory = await taskFn();\n const verdict = await judgeTrajectory(trajectory, query);\n\n trajectories.push({\n id: ulid(),\n verdict,\n trajectory\n });\n\n // Store trajectory\n db.storeTrajectory({\n task_id: options.taskId || 'matts-' + runId,\n agent_id: options.agentId || 'matts-agent',\n query,\n trajectory_json: JSON.stringify(trajectory),\n started_at: new Date().toISOString(),\n ended_at: new Date().toISOString(),\n judge_label: verdict.label,\n judge_conf: verdict.confidence,\n judge_reasons: JSON.stringify(verdict.reasons),\n matts_run_id: runId\n });\n } catch (error) {\n console.error(`[ERROR] MaTTS rollout ${i + 1} failed:`, error);\n }\n }\n\n // Aggregate memories via self-contrast\n const aggregatedMemories = await aggregateMemories(trajectories, query, options);\n\n const successRate = trajectories.filter(t => t.verdict.label === 'Success').length / trajectories.length;\n const duration = Date.now() - startTime;\n\n console.log(`[INFO] MaTTS parallel complete: ${trajectories.length} trajectories, ${successRate * 100}% success in ${duration}ms`);\n\n db.logMetric('rb.matts.parallel.duration_ms', duration);\n db.logMetric('rb.matts.parallel.success_rate', successRate);\n db.logMetric('rb.matts.parallel.memories', aggregatedMemories.length);\n\n return {\n runId,\n mode: 'parallel',\n k,\n trajectories,\n aggregatedMemories,\n successRate,\n duration\n };\n}\n\n/**\n * Run MaTTS in sequential mode\n * Iterative refinement with check-and-correct\n */\nexport async function mattsSequential(\n taskFn: (memories: any[]) => Promise<Trajectory>,\n query: string,\n options: { r?: number; taskId?: string; agentId?: string; domain?: string } = {}\n): Promise<MattsResult> {\n const config = loadConfig();\n const r = options.r || config.matts.sequential_r || config.matts.sequential_k;\n const runId = ulid();\n const startTime = Date.now();\n\n console.log(`[INFO] Starting MaTTS sequential mode with r=${r}`);\n\n db.storeMattsRun({\n run_id: runId,\n task_id: options.taskId || 'matts-seq-' + runId,\n mode: 'sequential',\n k: r,\n status: 'running',\n summary: undefined\n });\n\n const trajectories: MattsResult['trajectories'] = [];\n let previousMemories: any[] = [];\n\n // Iterative refinement\n for (let i = 0; i < r; i++) {\n console.log(`[INFO] MaTTS sequential iteration ${i + 1}/${r}`);\n\n try {\n // Retrieve relevant memories (including from previous iterations)\n const memories = await retrieveMemories(query, {\n domain: options.domain\n });\n\n // Execute with memories\n const trajectory = await taskFn([...memories, ...previousMemories]);\n const verdict = await judgeTrajectory(trajectory, query);\n\n trajectories.push({\n id: ulid(),\n verdict,\n trajectory\n });\n\n // If success and stop_on_success is true, break early\n if (verdict.label === 'Success' && (config.matts.sequential_stop_on_success ?? true)) {\n console.log(`[INFO] Success achieved at iteration ${i + 1}, stopping early`);\n break;\n }\n\n // Distill memories from this iteration\n const newMemories = await distillMemories(trajectory, verdict, query, options);\n previousMemories = [...previousMemories, ...newMemories];\n\n // Store trajectory\n db.storeTrajectory({\n task_id: options.taskId || 'matts-seq-' + runId,\n agent_id: options.agentId || 'matts-agent',\n query,\n trajectory_json: JSON.stringify(trajectory),\n started_at: new Date().toISOString(),\n ended_at: new Date().toISOString(),\n judge_label: verdict.label,\n judge_conf: verdict.confidence,\n judge_reasons: JSON.stringify(verdict.reasons),\n matts_run_id: runId\n });\n } catch (error) {\n console.error(`[ERROR] MaTTS iteration ${i + 1} failed:`, error);\n }\n }\n\n const successRate = trajectories.filter(t => t.verdict.label === 'Success').length / trajectories.length;\n const duration = Date.now() - startTime;\n\n console.log(`[INFO] MaTTS sequential complete: ${trajectories.length} iterations, ${successRate * 100}% success in ${duration}ms`);\n\n db.logMetric('rb.matts.sequential.duration_ms', duration);\n db.logMetric('rb.matts.sequential.success_rate', successRate);\n\n return {\n runId,\n mode: 'sequential',\n k: r,\n trajectories,\n aggregatedMemories: previousMemories,\n successRate,\n duration\n };\n}\n\n/**\n * Aggregate memories from multiple trajectories using self-contrast\n */\nasync function aggregateMemories(\n trajectories: MattsResult['trajectories'],\n query: string,\n options: any\n): Promise<string[]> {\n console.log('[INFO] Aggregating memories via self-contrast');\n\n // Load aggregation prompt\n const promptPath = join(__dirname, '../prompts', 'matts-aggregate.json');\n const promptTemplate = JSON.parse(readFileSync(promptPath, 'utf-8'));\n\n // Format trajectories for comparison\n const trajectoryTexts = trajectories.map((t, i) => ({\n id: t.id,\n label: t.verdict.label,\n confidence: t.verdict.confidence,\n steps: JSON.stringify(t.trajectory.steps || [], null, 2)\n }));\n\n // Check if we have any API key configured\n const hasApiKey = process.env.OPENROUTER_API_KEY ||\n process.env.ANTHROPIC_API_KEY ||\n process.env.GOOGLE_GEMINI_API_KEY;\n\n if (!hasApiKey) {\n console.warn('[WARN] No API key set, skipping aggregation');\n return [];\n }\n\n try {\n const prompt = promptTemplate.template\n .replace('{{k}}', String(trajectories.length))\n .replace('{{task_query}}', query)\n .replace('{{trajectories}}', JSON.stringify(trajectoryTexts, null, 2));\n\n // Use ModelRouter for multi-provider support\n const router = getRouter();\n const response = await router.chat({\n model: promptTemplate.model,\n messages: [\n { role: 'system', content: promptTemplate.system },\n { role: 'user', content: prompt }\n ],\n temperature: promptTemplate.temperature,\n maxTokens: promptTemplate.max_tokens\n }, 'reasoningbank-matts-aggregate');\n\n // Extract content from router response\n const content = response.content\n .filter(block => block.type === 'text')\n .map(block => block.text)\n .join('\\n');\n\n // Parse and store aggregated memories\n const jsonMatch = content.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n const parsed = JSON.parse(jsonMatch[0]);\n const memories = parsed.memories || [];\n\n // Store with boosted confidence\n const memoryIds: string[] = [];\n for (const mem of memories) {\n const verdict = { label: 'Success' as const, confidence: 0.9, reasons: [] };\n const ids = await distillMemories(\n { steps: [] },\n verdict,\n query,\n options\n );\n memoryIds.push(...ids);\n }\n\n return memoryIds;\n }\n } catch (error) {\n console.error('[ERROR] Memory aggregation failed:', error);\n }\n\n return [];\n}\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Retrieval with MMR diversity
|
|
3
|
+
* Algorithm 1 from ReasoningBank paper
|
|
4
|
+
*/
|
|
5
|
+
export interface RetrievedMemory {
|
|
6
|
+
id: string;
|
|
7
|
+
title: string;
|
|
8
|
+
description: string;
|
|
9
|
+
content: string;
|
|
10
|
+
score: number;
|
|
11
|
+
components: {
|
|
12
|
+
similarity: number;
|
|
13
|
+
recency: number;
|
|
14
|
+
reliability: number;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Retrieve top-k memories with MMR diversity
|
|
19
|
+
*
|
|
20
|
+
* Scoring formula: score = α·sim + β·recency + γ·reliability
|
|
21
|
+
* Where:
|
|
22
|
+
* - sim: cosine similarity to query
|
|
23
|
+
* - recency: exp(-age_days / half_life)
|
|
24
|
+
* - reliability: min(confidence, 1.0)
|
|
25
|
+
*/
|
|
26
|
+
export declare function retrieveMemories(query: string, options?: {
|
|
27
|
+
k?: number;
|
|
28
|
+
domain?: string;
|
|
29
|
+
agent?: string;
|
|
30
|
+
}): Promise<RetrievedMemory[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Format memories for injection into system prompt
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatMemoriesForPrompt(memories: RetrievedMemory[]): string;
|
|
35
|
+
//# sourceMappingURL=retrieve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retrieve.d.ts","sourceRoot":"","sources":["../../../src/reasoningbank/core/retrieve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5D,OAAO,CAAC,eAAe,EAAE,CAAC,CA8D5B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,CAkB3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retrieve.js","sourceRoot":"","sources":["../../../src/reasoningbank/core/retrieve.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Memory Retrieval with MMR diversity\n * Algorithm 1 from ReasoningBank paper\n */\n\nimport { computeEmbedding } from '../utils/embeddings.js';\nimport { mmrSelection, cosineSimilarity } from '../utils/mmr.js';\nimport * as db from '../db/queries.js';\nimport { loadConfig } from '../utils/config.js';\n\nexport interface RetrievedMemory {\n id: string;\n title: string;\n description: string;\n content: string;\n score: number;\n components: {\n similarity: number;\n recency: number;\n reliability: number;\n };\n}\n\n/**\n * Retrieve top-k memories with MMR diversity\n *\n * Scoring formula: score = α·sim + β·recency + γ·reliability\n * Where:\n * - sim: cosine similarity to query\n * - recency: exp(-age_days / half_life)\n * - reliability: min(confidence, 1.0)\n */\nexport async function retrieveMemories(\n query: string,\n options: { k?: number; domain?: string; agent?: string } = {}\n): Promise<RetrievedMemory[]> {\n const config = loadConfig();\n const k = options.k || config.retrieve.k;\n const startTime = Date.now();\n\n console.log(`[INFO] Retrieving memories for query: ${query.substring(0, 100)}...`);\n\n // 1. Embed query\n const queryEmbed = await computeEmbedding(query);\n\n // 2. Fetch candidates from database\n const candidates = db.fetchMemoryCandidates({\n domain: options.domain,\n agent: options.agent,\n minConfidence: config.retrieve.min_score\n });\n\n if (candidates.length === 0) {\n console.log('[INFO] No memory candidates found');\n return [];\n }\n\n console.log(`[INFO] Found ${candidates.length} candidates`);\n\n // 3. Score each candidate with 4-factor model\n const scored = candidates.map(item => {\n const similarity = cosineSimilarity(queryEmbed, item.embedding);\n const recency = Math.exp(-item.age_days / config.retrieve.recency_half_life_days);\n const reliability = Math.min(item.confidence, 1.0);\n\n const baseScore =\n config.retrieve.alpha * similarity +\n config.retrieve.beta * recency +\n config.retrieve.gamma * reliability;\n\n return {\n ...item,\n score: baseScore,\n components: { similarity, recency, reliability }\n };\n });\n\n // 4. MMR selection for diversity\n const selected = mmrSelection(scored, queryEmbed, k, config.retrieve.delta);\n\n // 5. Record usage for selected memories\n for (const mem of selected) {\n db.incrementUsage(mem.id);\n }\n\n const duration = Date.now() - startTime;\n console.log(`[INFO] Retrieval complete: ${selected.length} memories in ${duration}ms`);\n db.logMetric('rb.retrieve.latency_ms', duration);\n\n return selected.map(item => ({\n id: item.id,\n title: item.pattern_data.title,\n description: item.pattern_data.description,\n content: item.pattern_data.content,\n score: item.score,\n components: item.components\n }));\n}\n\n/**\n * Format memories for injection into system prompt\n */\nexport function formatMemoriesForPrompt(memories: RetrievedMemory[]): string {\n if (memories.length === 0) {\n return '';\n }\n\n let formatted = '\\n## Relevant Memories from Past Experience\\n\\n';\n\n for (let i = 0; i < memories.length; i++) {\n const mem = memories[i];\n formatted += `### Memory ${i + 1}: ${mem.title}\\n\\n`;\n formatted += `${mem.description}\\n\\n`;\n formatted += `**Strategy:**\\n${mem.content}\\n\\n`;\n formatted += `*Confidence: ${(mem.score * 100).toFixed(1)}% | `;\n formatted += `Similarity: ${(mem.components.similarity * 100).toFixed(1)}%*\\n\\n`;\n formatted += '---\\n\\n';\n }\n\n return formatted;\n}\n"]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database queries for ReasoningBank
|
|
3
|
+
* Operates on Claude Flow's memory.db at .swarm/memory.db
|
|
4
|
+
*/
|
|
5
|
+
import Database from 'better-sqlite3';
|
|
6
|
+
import type { ReasoningMemory, PatternEmbedding, TaskTrajectory, MattsRun } from './schema.js';
|
|
7
|
+
/**
|
|
8
|
+
* Run database migrations (create tables)
|
|
9
|
+
*/
|
|
10
|
+
export declare function runMigrations(): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Get database connection (singleton)
|
|
13
|
+
*/
|
|
14
|
+
export declare function getDb(): Database.Database;
|
|
15
|
+
/**
|
|
16
|
+
* Fetch reasoning memory candidates for retrieval
|
|
17
|
+
*/
|
|
18
|
+
export declare function fetchMemoryCandidates(options: {
|
|
19
|
+
domain?: string;
|
|
20
|
+
agent?: string;
|
|
21
|
+
minConfidence?: number;
|
|
22
|
+
}): Array<ReasoningMemory & {
|
|
23
|
+
embedding: Float32Array;
|
|
24
|
+
age_days: number;
|
|
25
|
+
}>;
|
|
26
|
+
/**
|
|
27
|
+
* Store a new reasoning memory
|
|
28
|
+
*/
|
|
29
|
+
export declare function upsertMemory(memory: Omit<ReasoningMemory, 'created_at' | 'last_used'>): string;
|
|
30
|
+
/**
|
|
31
|
+
* Store embedding for a memory
|
|
32
|
+
*/
|
|
33
|
+
export declare function upsertEmbedding(embedding: PatternEmbedding): void;
|
|
34
|
+
/**
|
|
35
|
+
* Increment usage count for a memory
|
|
36
|
+
*/
|
|
37
|
+
export declare function incrementUsage(memoryId: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Store task trajectory
|
|
40
|
+
*/
|
|
41
|
+
export declare function storeTrajectory(trajectory: Omit<TaskTrajectory, 'created_at'>): void;
|
|
42
|
+
/**
|
|
43
|
+
* Store MaTTS run
|
|
44
|
+
*/
|
|
45
|
+
export declare function storeMattsRun(run: Omit<MattsRun, 'created_at'>): void;
|
|
46
|
+
/**
|
|
47
|
+
* Log performance metric
|
|
48
|
+
*/
|
|
49
|
+
export declare function logMetric(name: string, value: number): void;
|
|
50
|
+
/**
|
|
51
|
+
* Count new memories since last consolidation
|
|
52
|
+
*/
|
|
53
|
+
export declare function countNewMemoriesSinceConsolidation(): number;
|
|
54
|
+
/**
|
|
55
|
+
* Get all active reasoning memories
|
|
56
|
+
*/
|
|
57
|
+
export declare function getAllActiveMemories(): ReasoningMemory[];
|
|
58
|
+
/**
|
|
59
|
+
* Store memory link (relationship)
|
|
60
|
+
*/
|
|
61
|
+
export declare function storeLink(srcId: string, dstId: string, relation: 'entails' | 'contradicts' | 'refines' | 'duplicate_of', weight: number): void;
|
|
62
|
+
/**
|
|
63
|
+
* Get contradictions for a memory
|
|
64
|
+
*/
|
|
65
|
+
export declare function getContradictions(memoryId: string): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Store consolidation run
|
|
68
|
+
*/
|
|
69
|
+
export declare function storeConsolidationRun(run: {
|
|
70
|
+
run_id: string;
|
|
71
|
+
items_processed: number;
|
|
72
|
+
duplicates_found: number;
|
|
73
|
+
contradictions_found: number;
|
|
74
|
+
items_pruned: number;
|
|
75
|
+
duration_ms: number;
|
|
76
|
+
}): void;
|
|
77
|
+
/**
|
|
78
|
+
* Prune old, unused memories
|
|
79
|
+
*/
|
|
80
|
+
export declare function pruneOldMemories(options: {
|
|
81
|
+
maxAgeDays: number;
|
|
82
|
+
minConfidence: number;
|
|
83
|
+
}): number;
|
|
84
|
+
/**
|
|
85
|
+
* Close database connection
|
|
86
|
+
*/
|
|
87
|
+
export declare function closeDb(): void;
|
|
88
|
+
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/reasoningbank/db/queries.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAU/F;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAmGnD;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAgBzC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,KAAK,CAAC,eAAe,GAAG;IAAE,SAAS,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCzE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,WAAW,CAAC,GAAG,MAAM,CAmB9F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAWjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CASrD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,IAAI,CAoBpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,IAAI,CAOrE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAa3D;AAED;;GAEG;AACH,wBAAgB,kCAAkC,IAAI,MAAM,CA4B3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAexD;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,cAAc,EAChE,MAAM,EAAE,MAAM,GACb,IAAI,CAON;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAU5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAeP;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAYT;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAM9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/reasoningbank/db/queries.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Database queries for ReasoningBank\n * Operates on Claude Flow's memory.db at .swarm/memory.db\n */\n\nimport Database from 'better-sqlite3';\nimport { existsSync, mkdirSync } from 'fs';\nimport { join, dirname } from 'path';\nimport type { ReasoningMemory, PatternEmbedding, TaskTrajectory, MattsRun } from './schema.js';\n\n// Simple logger for database operations\nconst logger = {\n info: (msg: string, data?: any) => console.log(`[INFO] ${msg}`, data || ''),\n error: (msg: string, data?: any) => console.error(`[ERROR] ${msg}`, data || '')\n};\n\nlet dbInstance: Database.Database | null = null;\n\n/**\n * Run database migrations (create tables)\n */\nexport async function runMigrations(): Promise<void> {\n const dbPath = process.env.CLAUDE_FLOW_DB_PATH || join(process.cwd(), '.swarm', 'memory.db');\n\n // Create directory if it doesn't exist\n const dbDir = dirname(dbPath);\n if (!existsSync(dbDir)) {\n mkdirSync(dbDir, { recursive: true });\n logger.info('Created database directory', { path: dbDir });\n }\n\n // Create database file\n const db = new Database(dbPath);\n db.pragma('journal_mode = WAL');\n db.pragma('foreign_keys = ON');\n\n // Create tables\n db.exec(`\n CREATE TABLE IF NOT EXISTS patterns (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL,\n pattern_data TEXT NOT NULL,\n confidence REAL NOT NULL DEFAULT 0.5,\n usage_count INTEGER NOT NULL DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,\n last_used TEXT\n );\n\n CREATE TABLE IF NOT EXISTS pattern_embeddings (\n id TEXT PRIMARY KEY,\n model TEXT NOT NULL,\n dims INTEGER NOT NULL,\n vector BLOB NOT NULL,\n created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,\n FOREIGN KEY (id) REFERENCES patterns(id) ON DELETE CASCADE\n );\n\n CREATE TABLE IF NOT EXISTS pattern_links (\n src_id TEXT NOT NULL,\n dst_id TEXT NOT NULL,\n relation TEXT NOT NULL,\n weight REAL NOT NULL DEFAULT 1.0,\n created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (src_id, dst_id, relation),\n FOREIGN KEY (src_id) REFERENCES patterns(id) ON DELETE CASCADE,\n FOREIGN KEY (dst_id) REFERENCES patterns(id) ON DELETE CASCADE\n );\n\n CREATE TABLE IF NOT EXISTS task_trajectories (\n task_id TEXT PRIMARY KEY,\n agent_id TEXT NOT NULL,\n query TEXT NOT NULL,\n trajectory_json TEXT NOT NULL,\n started_at TEXT,\n ended_at TEXT,\n judge_label TEXT,\n judge_conf REAL,\n judge_reasons TEXT,\n matts_run_id TEXT,\n created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP\n );\n\n CREATE TABLE IF NOT EXISTS matts_runs (\n run_id TEXT PRIMARY KEY,\n task_id TEXT NOT NULL,\n mode TEXT NOT NULL,\n k INTEGER NOT NULL,\n status TEXT NOT NULL,\n summary TEXT,\n created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP\n );\n\n CREATE TABLE IF NOT EXISTS consolidation_runs (\n run_id TEXT PRIMARY KEY,\n items_processed INTEGER NOT NULL,\n duplicates_found INTEGER NOT NULL,\n contradictions_found INTEGER NOT NULL,\n items_pruned INTEGER NOT NULL,\n duration_ms INTEGER NOT NULL,\n created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP\n );\n\n CREATE TABLE IF NOT EXISTS metrics_log (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n metric_name TEXT NOT NULL,\n value REAL NOT NULL,\n timestamp TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP\n );\n\n CREATE INDEX IF NOT EXISTS idx_patterns_type ON patterns(type);\n CREATE INDEX IF NOT EXISTS idx_patterns_confidence ON patterns(confidence DESC);\n CREATE INDEX IF NOT EXISTS idx_patterns_created_at ON patterns(created_at DESC);\n CREATE INDEX IF NOT EXISTS idx_pattern_links_relation ON pattern_links(relation);\n CREATE INDEX IF NOT EXISTS idx_trajectories_agent ON task_trajectories(agent_id);\n `);\n\n db.close();\n dbInstance = null; // Reset instance to force reconnection\n\n logger.info('Database migrations completed', { path: dbPath });\n}\n\n/**\n * Get database connection (singleton)\n */\nexport function getDb(): Database.Database {\n if (dbInstance) return dbInstance;\n\n const dbPath = process.env.CLAUDE_FLOW_DB_PATH || join(process.cwd(), '.swarm', 'memory.db');\n\n if (!existsSync(dbPath)) {\n throw new Error(`Database not found at ${dbPath}. Run migrations first.`);\n }\n\n dbInstance = new Database(dbPath);\n dbInstance.pragma('journal_mode = WAL');\n dbInstance.pragma('foreign_keys = ON');\n\n logger.info('Connected to ReasoningBank database', { path: dbPath });\n\n return dbInstance;\n}\n\n/**\n * Fetch reasoning memory candidates for retrieval\n */\nexport function fetchMemoryCandidates(options: {\n domain?: string;\n agent?: string;\n minConfidence?: number;\n}): Array<ReasoningMemory & { embedding: Float32Array; age_days: number }> {\n const db = getDb();\n\n let query = `\n SELECT\n p.*,\n pe.vector as embedding,\n CAST((julianday('now') - julianday(p.created_at)) AS INTEGER) as age_days\n FROM patterns p\n JOIN pattern_embeddings pe ON p.id = pe.id\n WHERE p.type = 'reasoning_memory'\n AND p.confidence >= ?\n `;\n\n const params: any[] = [options.minConfidence || 0.3];\n\n if (options.domain) {\n query += ` AND json_extract(p.pattern_data, '$.domain') = ?`;\n params.push(options.domain);\n }\n\n query += ` ORDER BY p.confidence DESC, p.usage_count DESC`;\n\n const stmt = db.prepare(query);\n const rows = stmt.all(...params) as any[];\n\n return rows.map((row: any) => {\n const buffer = Buffer.from((row as any).embedding);\n // Create Float32Array from buffer - buffer length / 4 bytes per float\n const float32Array = new Float32Array(buffer.buffer, buffer.byteOffset, buffer.length / 4);\n\n return {\n ...row,\n pattern_data: JSON.parse((row as any).pattern_data),\n embedding: float32Array\n };\n });\n}\n\n/**\n * Store a new reasoning memory\n */\nexport function upsertMemory(memory: Omit<ReasoningMemory, 'created_at' | 'last_used'>): string {\n const db = getDb();\n\n const stmt = db.prepare(`\n INSERT OR REPLACE INTO patterns (id, type, pattern_data, confidence, usage_count, created_at)\n VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP)\n `);\n\n stmt.run(\n memory.id,\n memory.type,\n JSON.stringify(memory.pattern_data),\n memory.confidence,\n memory.usage_count\n );\n\n logger.info('Upserted reasoning memory', { id: memory.id, title: memory.pattern_data.title });\n\n return memory.id;\n}\n\n/**\n * Store embedding for a memory\n */\nexport function upsertEmbedding(embedding: PatternEmbedding): void {\n const db = getDb();\n\n const buffer = Buffer.from(embedding.vector.buffer);\n\n const stmt = db.prepare(`\n INSERT OR REPLACE INTO pattern_embeddings (id, model, dims, vector, created_at)\n VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP)\n `);\n\n stmt.run(embedding.id, embedding.model, embedding.dims, buffer);\n}\n\n/**\n * Increment usage count for a memory\n */\nexport function incrementUsage(memoryId: string): void {\n const db = getDb();\n\n db.prepare(`\n UPDATE patterns\n SET usage_count = usage_count + 1,\n last_used = CURRENT_TIMESTAMP\n WHERE id = ?\n `).run(memoryId);\n}\n\n/**\n * Store task trajectory\n */\nexport function storeTrajectory(trajectory: Omit<TaskTrajectory, 'created_at'>): void {\n const db = getDb();\n\n db.prepare(`\n INSERT OR REPLACE INTO task_trajectories\n (task_id, agent_id, query, trajectory_json, started_at, ended_at,\n judge_label, judge_conf, judge_reasons, matts_run_id, created_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)\n `).run(\n trajectory.task_id,\n trajectory.agent_id,\n trajectory.query,\n trajectory.trajectory_json,\n trajectory.started_at || null,\n trajectory.ended_at || null,\n trajectory.judge_label || null,\n trajectory.judge_conf || null,\n trajectory.judge_reasons || null,\n trajectory.matts_run_id || null\n );\n}\n\n/**\n * Store MaTTS run\n */\nexport function storeMattsRun(run: Omit<MattsRun, 'created_at'>): void {\n const db = getDb();\n\n db.prepare(`\n INSERT INTO matts_runs (run_id, task_id, mode, k, status, summary, created_at)\n VALUES (?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)\n `).run(run.run_id, run.task_id, run.mode, run.k, run.status, run.summary || null);\n}\n\n/**\n * Log performance metric\n */\nexport function logMetric(name: string, value: number): void {\n try {\n const db = getDb();\n\n // Log to metrics_log table (our own table)\n db.prepare(`\n INSERT INTO metrics_log (metric_name, value, timestamp)\n VALUES (?, ?, CURRENT_TIMESTAMP)\n `).run(name, value);\n } catch (error) {\n // Silently fail if metrics table doesn't exist\n // This is optional logging, not critical\n }\n}\n\n/**\n * Count new memories since last consolidation\n */\nexport function countNewMemoriesSinceConsolidation(): number {\n const db = getDb();\n\n const lastRun = db.prepare(`\n SELECT created_at\n FROM consolidation_runs\n ORDER BY created_at DESC\n LIMIT 1\n `).get() as { created_at: string } | undefined;\n\n if (!lastRun) {\n // No consolidation yet, count all memories\n const result = db.prepare(`\n SELECT COUNT(*) as count\n FROM patterns\n WHERE type = 'reasoning_memory'\n `).get() as { count: number };\n return result.count;\n }\n\n const result = db.prepare(`\n SELECT COUNT(*) as count\n FROM patterns\n WHERE type = 'reasoning_memory'\n AND created_at > ?\n `).get(lastRun.created_at) as { count: number };\n\n return result.count;\n}\n\n/**\n * Get all active reasoning memories\n */\nexport function getAllActiveMemories(): ReasoningMemory[] {\n const db = getDb();\n\n const rows = db.prepare(`\n SELECT *\n FROM patterns\n WHERE type = 'reasoning_memory'\n AND confidence >= 0.3\n ORDER BY confidence DESC, usage_count DESC\n `).all() as any[];\n\n return rows.map((row: any) => ({\n ...row,\n pattern_data: JSON.parse((row as any).pattern_data)\n }));\n}\n\n/**\n * Store memory link (relationship)\n */\nexport function storeLink(\n srcId: string,\n dstId: string,\n relation: 'entails' | 'contradicts' | 'refines' | 'duplicate_of',\n weight: number\n): void {\n const db = getDb();\n\n db.prepare(`\n INSERT OR REPLACE INTO pattern_links (src_id, dst_id, relation, weight, created_at)\n VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP)\n `).run(srcId, dstId, relation, weight);\n}\n\n/**\n * Get contradictions for a memory\n */\nexport function getContradictions(memoryId: string): string[] {\n const db = getDb();\n\n const rows = db.prepare(`\n SELECT dst_id\n FROM pattern_links\n WHERE src_id = ? AND relation = 'contradicts'\n `).all(memoryId) as { dst_id: string }[];\n\n return rows.map(r => r.dst_id);\n}\n\n/**\n * Store consolidation run\n */\nexport function storeConsolidationRun(run: {\n run_id: string;\n items_processed: number;\n duplicates_found: number;\n contradictions_found: number;\n items_pruned: number;\n duration_ms: number;\n}): void {\n const db = getDb();\n\n db.prepare(`\n INSERT INTO consolidation_runs\n (run_id, items_processed, duplicates_found, contradictions_found, items_pruned, duration_ms, created_at)\n VALUES (?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)\n `).run(\n run.run_id,\n run.items_processed,\n run.duplicates_found,\n run.contradictions_found,\n run.items_pruned,\n run.duration_ms\n );\n}\n\n/**\n * Prune old, unused memories\n */\nexport function pruneOldMemories(options: {\n maxAgeDays: number;\n minConfidence: number;\n}): number {\n const db = getDb();\n\n const result = db.prepare(`\n DELETE FROM patterns\n WHERE type = 'reasoning_memory'\n AND usage_count = 0\n AND confidence < ?\n AND CAST((julianday('now') - julianday(created_at)) AS INTEGER) > ?\n `).run(options.minConfidence, options.maxAgeDays);\n\n return result.changes;\n}\n\n/**\n * Close database connection\n */\nexport function closeDb(): void {\n if (dbInstance) {\n dbInstance.close();\n dbInstance = null;\n logger.info('Closed ReasoningBank database connection');\n }\n}\n"]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript types for ReasoningBank database schema
|
|
3
|
+
*/
|
|
4
|
+
export interface ReasoningMemory {
|
|
5
|
+
id: string;
|
|
6
|
+
type: 'reasoning_memory';
|
|
7
|
+
pattern_data: {
|
|
8
|
+
title: string;
|
|
9
|
+
description: string;
|
|
10
|
+
content: string;
|
|
11
|
+
source: {
|
|
12
|
+
task_id: string;
|
|
13
|
+
agent_id: string;
|
|
14
|
+
outcome: 'Success' | 'Failure';
|
|
15
|
+
evidence: string[];
|
|
16
|
+
};
|
|
17
|
+
tags: string[];
|
|
18
|
+
domain?: string;
|
|
19
|
+
created_at: string;
|
|
20
|
+
confidence: number;
|
|
21
|
+
n_uses: number;
|
|
22
|
+
};
|
|
23
|
+
confidence: number;
|
|
24
|
+
usage_count: number;
|
|
25
|
+
created_at: string;
|
|
26
|
+
last_used?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface PatternEmbedding {
|
|
29
|
+
id: string;
|
|
30
|
+
model: string;
|
|
31
|
+
dims: number;
|
|
32
|
+
vector: Float32Array;
|
|
33
|
+
created_at: string;
|
|
34
|
+
}
|
|
35
|
+
export interface PatternLink {
|
|
36
|
+
src_id: string;
|
|
37
|
+
dst_id: string;
|
|
38
|
+
relation: 'entails' | 'contradicts' | 'refines' | 'duplicate_of';
|
|
39
|
+
weight: number;
|
|
40
|
+
created_at: string;
|
|
41
|
+
}
|
|
42
|
+
export interface TaskTrajectory {
|
|
43
|
+
task_id: string;
|
|
44
|
+
agent_id: string;
|
|
45
|
+
query: string;
|
|
46
|
+
trajectory_json: string;
|
|
47
|
+
started_at?: string;
|
|
48
|
+
ended_at?: string;
|
|
49
|
+
judge_label?: 'Success' | 'Failure';
|
|
50
|
+
judge_conf?: number;
|
|
51
|
+
judge_reasons?: string;
|
|
52
|
+
matts_run_id?: string;
|
|
53
|
+
created_at: string;
|
|
54
|
+
}
|
|
55
|
+
export interface MattsRun {
|
|
56
|
+
run_id: string;
|
|
57
|
+
task_id: string;
|
|
58
|
+
mode: 'parallel' | 'sequential';
|
|
59
|
+
k: number;
|
|
60
|
+
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
61
|
+
summary?: string;
|
|
62
|
+
created_at: string;
|
|
63
|
+
}
|
|
64
|
+
export interface ConsolidationRun {
|
|
65
|
+
run_id: string;
|
|
66
|
+
items_processed: number;
|
|
67
|
+
duplicates_found: number;
|
|
68
|
+
contradictions_found: number;
|
|
69
|
+
items_pruned: number;
|
|
70
|
+
duration_ms: number;
|
|
71
|
+
created_at: string;
|
|
72
|
+
}
|
|
73
|
+
export interface Trajectory {
|
|
74
|
+
steps: TrajectoryStep[];
|
|
75
|
+
metadata?: Record<string, any>;
|
|
76
|
+
}
|
|
77
|
+
export interface TrajectoryStep {
|
|
78
|
+
action: string;
|
|
79
|
+
[key: string]: any;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/reasoningbank/db/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE;YACN,OAAO,EAAE,MAAM,CAAC;YAChB,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;YAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;SACpB,CAAC;QACF,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,cAAc,CAAC;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;IAChC,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/reasoningbank/db/schema.ts"],"names":[],"mappings":"AAAA;;GAEG","sourcesContent":["/**\n * TypeScript types for ReasoningBank database schema\n */\n\nexport interface ReasoningMemory {\n id: string;\n type: 'reasoning_memory';\n pattern_data: {\n title: string;\n description: string;\n content: string;\n source: {\n task_id: string;\n agent_id: string;\n outcome: 'Success' | 'Failure';\n evidence: string[]; // event IDs or step references\n };\n tags: string[];\n domain?: string;\n created_at: string;\n confidence: number;\n n_uses: number;\n };\n confidence: number;\n usage_count: number;\n created_at: string;\n last_used?: string;\n}\n\nexport interface PatternEmbedding {\n id: string;\n model: string;\n dims: number;\n vector: Float32Array;\n created_at: string;\n}\n\nexport interface PatternLink {\n src_id: string;\n dst_id: string;\n relation: 'entails' | 'contradicts' | 'refines' | 'duplicate_of';\n weight: number;\n created_at: string;\n}\n\nexport interface TaskTrajectory {\n task_id: string;\n agent_id: string;\n query: string;\n trajectory_json: string; // JSON-encoded trajectory\n started_at?: string;\n ended_at?: string;\n judge_label?: 'Success' | 'Failure';\n judge_conf?: number;\n judge_reasons?: string; // JSON array\n matts_run_id?: string;\n created_at: string;\n}\n\nexport interface MattsRun {\n run_id: string;\n task_id: string;\n mode: 'parallel' | 'sequential';\n k: number;\n status: 'pending' | 'running' | 'completed' | 'failed';\n summary?: string; // JSON-encoded summary\n created_at: string;\n}\n\nexport interface ConsolidationRun {\n run_id: string;\n items_processed: number;\n duplicates_found: number;\n contradictions_found: number;\n items_pruned: number;\n duration_ms: number;\n created_at: string;\n}\n\nexport interface Trajectory {\n steps: TrajectoryStep[];\n metadata?: Record<string, any>;\n}\n\nexport interface TrajectoryStep {\n action: string;\n [key: string]: any;\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ReasoningBank vs Traditional Approach - Live Demo
|
|
4
|
+
*
|
|
5
|
+
* This demo shows the difference between:
|
|
6
|
+
* 1. Traditional approach: Agent starts fresh every time
|
|
7
|
+
* 2. ReasoningBank approach: Agent learns from experience
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=demo-comparison.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-comparison.d.ts","sourceRoot":"","sources":["../../src/reasoningbank/demo-comparison.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
|