agentic-flow 1.10.0 → 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/adaptive-pool-sizing.js +414 -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/circular-rate-limiter.js +391 -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/dynamic-compression.js +298 -0
- package/dist/utils/http2-multiplexing.js +319 -0
- package/dist/utils/lazy-auth.js +311 -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/server-push.js +251 -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/dist/utils/zero-copy-buffer.js +286 -0
- package/docs/DOCKER-VERIFICATION.md +207 -0
- package/docs/ISSUE-55-VALIDATION.md +25 -6
- package/docs/NPX_AGENTDB_SETUP.md +175 -0
- package/docs/PUBLISH_GUIDE.md +438 -0
- package/docs/RELEASE-v1.10.0-COMPLETE.md +382 -0
- package/docs/archive/.agentdb-instructions.md +66 -0
- package/docs/archive/AGENT-BOOSTER-STATUS.md +292 -0
- package/docs/archive/CHANGELOG-v1.3.0.md +120 -0
- package/docs/archive/COMPLETION_REPORT_v1.7.1.md +335 -0
- package/docs/archive/IMPLEMENTATION_SUMMARY_v1.7.1.md +241 -0
- package/docs/archive/SUPABASE-INTEGRATION-COMPLETE.md +357 -0
- package/docs/archive/TESTING_QUICK_START.md +223 -0
- package/docs/archive/TOOL-EMULATION-INTEGRATION-ISSUE.md +669 -0
- package/docs/archive/VALIDATION_v1.7.1.md +234 -0
- package/docs/releases/PUBLISH_CHECKLIST_v1.10.0.md +396 -0
- package/docs/releases/PUBLISH_SUMMARY_v1.7.1.md +198 -0
- package/docs/releases/RELEASE_NOTES_v1.10.0.md +464 -0
- package/docs/releases/RELEASE_NOTES_v1.7.0.md +297 -0
- package/docs/releases/RELEASE_v1.7.1.md +327 -0
- package/package.json +1 -1
- package/validation/docker-npm-validation.sh +170 -0
- package/validation/simple-npm-validation.sh +131 -0
- package/validation/test-gemini-models.ts +200 -0
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptive Pool Sizing based on Traffic Patterns
|
|
3
|
+
* Automatically adjusts pool sizes for 5-10% better resource utilization
|
|
4
|
+
* Phase 3 Optimization
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Adaptive Pool Sizing Manager
|
|
8
|
+
* Analyzes traffic patterns and automatically adjusts pool sizes
|
|
9
|
+
*/
|
|
10
|
+
export class AdaptivePoolSizingManager {
|
|
11
|
+
config;
|
|
12
|
+
currentSize;
|
|
13
|
+
activeItems = 0;
|
|
14
|
+
stats;
|
|
15
|
+
trafficHistory = [];
|
|
16
|
+
utilizationSamples = [];
|
|
17
|
+
adjustmentTimer;
|
|
18
|
+
constructor(config) {
|
|
19
|
+
this.config = {
|
|
20
|
+
enabled: config.enabled,
|
|
21
|
+
minSize: config.minSize || 10,
|
|
22
|
+
maxSize: config.maxSize || 1000,
|
|
23
|
+
initialSize: config.initialSize || 50,
|
|
24
|
+
adjustInterval: config.adjustInterval || 30000, // 30 seconds
|
|
25
|
+
targetUtilization: config.targetUtilization || 70,
|
|
26
|
+
scaleUpThreshold: config.scaleUpThreshold || 80,
|
|
27
|
+
scaleDownThreshold: config.scaleDownThreshold || 40,
|
|
28
|
+
scaleStep: config.scaleStep || 10
|
|
29
|
+
};
|
|
30
|
+
this.currentSize = this.config.initialSize;
|
|
31
|
+
this.stats = {
|
|
32
|
+
currentSize: this.currentSize,
|
|
33
|
+
minSize: this.config.minSize,
|
|
34
|
+
maxSize: this.config.maxSize,
|
|
35
|
+
utilizationPercent: 0,
|
|
36
|
+
activeItems: 0,
|
|
37
|
+
totalAdjustments: 0,
|
|
38
|
+
scaleUps: 0,
|
|
39
|
+
scaleDowns: 0,
|
|
40
|
+
avgUtilization: 0,
|
|
41
|
+
peakUtilization: 0
|
|
42
|
+
};
|
|
43
|
+
if (this.config.enabled) {
|
|
44
|
+
this.startAdjustmentMonitoring();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Record pool usage
|
|
49
|
+
*/
|
|
50
|
+
recordUsage(active, total) {
|
|
51
|
+
this.activeItems = active;
|
|
52
|
+
const poolSize = total || this.currentSize;
|
|
53
|
+
const utilization = (active / poolSize) * 100;
|
|
54
|
+
this.utilizationSamples.push(utilization);
|
|
55
|
+
// Keep last 100 samples
|
|
56
|
+
if (this.utilizationSamples.length > 100) {
|
|
57
|
+
this.utilizationSamples.shift();
|
|
58
|
+
}
|
|
59
|
+
// Update statistics
|
|
60
|
+
this.updateStats(utilization);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Record traffic pattern
|
|
64
|
+
*/
|
|
65
|
+
recordTraffic(pattern) {
|
|
66
|
+
this.trafficHistory.push({
|
|
67
|
+
...pattern,
|
|
68
|
+
timestamp: Date.now()
|
|
69
|
+
});
|
|
70
|
+
// Keep last 1000 patterns (configurable time window)
|
|
71
|
+
if (this.trafficHistory.length > 1000) {
|
|
72
|
+
this.trafficHistory.shift();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get recommended pool size based on traffic analysis
|
|
77
|
+
*/
|
|
78
|
+
getRecommendedSize() {
|
|
79
|
+
if (!this.config.enabled || this.utilizationSamples.length === 0) {
|
|
80
|
+
return this.currentSize;
|
|
81
|
+
}
|
|
82
|
+
const avgUtilization = this.calculateAverageUtilization();
|
|
83
|
+
const trend = this.analyzeTrafficTrend();
|
|
84
|
+
const predictedLoad = this.predictFutureLoad();
|
|
85
|
+
let recommendedSize = this.currentSize;
|
|
86
|
+
// Scale up if high utilization or increasing trend
|
|
87
|
+
if (avgUtilization > this.config.scaleUpThreshold || trend === 'increasing') {
|
|
88
|
+
recommendedSize = this.currentSize + this.config.scaleStep;
|
|
89
|
+
}
|
|
90
|
+
// Scale down if low utilization and stable/decreasing trend
|
|
91
|
+
else if (avgUtilization < this.config.scaleDownThreshold && (trend === 'stable' || trend === 'decreasing')) {
|
|
92
|
+
recommendedSize = this.currentSize - this.config.scaleStep;
|
|
93
|
+
}
|
|
94
|
+
// Adjust for predicted load
|
|
95
|
+
else if (predictedLoad > avgUtilization * 1.2) {
|
|
96
|
+
recommendedSize = Math.ceil(this.currentSize * (predictedLoad / avgUtilization));
|
|
97
|
+
}
|
|
98
|
+
// Ensure within bounds
|
|
99
|
+
return Math.max(this.config.minSize, Math.min(this.config.maxSize, recommendedSize));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Apply recommended pool size adjustment
|
|
103
|
+
*/
|
|
104
|
+
applyAdjustment() {
|
|
105
|
+
const recommended = this.getRecommendedSize();
|
|
106
|
+
const oldSize = this.currentSize;
|
|
107
|
+
if (recommended !== oldSize) {
|
|
108
|
+
this.currentSize = recommended;
|
|
109
|
+
this.stats.currentSize = recommended;
|
|
110
|
+
this.stats.totalAdjustments++;
|
|
111
|
+
if (recommended > oldSize) {
|
|
112
|
+
this.stats.scaleUps++;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
this.stats.scaleDowns++;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return this.currentSize;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Calculate average utilization
|
|
122
|
+
*/
|
|
123
|
+
calculateAverageUtilization() {
|
|
124
|
+
if (this.utilizationSamples.length === 0)
|
|
125
|
+
return 0;
|
|
126
|
+
const sum = this.utilizationSamples.reduce((a, b) => a + b, 0);
|
|
127
|
+
return sum / this.utilizationSamples.length;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Analyze traffic trend (increasing, stable, decreasing)
|
|
131
|
+
*/
|
|
132
|
+
analyzeTrafficTrend() {
|
|
133
|
+
if (this.trafficHistory.length < 10)
|
|
134
|
+
return 'stable';
|
|
135
|
+
const recent = this.trafficHistory.slice(-10);
|
|
136
|
+
const older = this.trafficHistory.slice(-20, -10);
|
|
137
|
+
if (older.length === 0)
|
|
138
|
+
return 'stable';
|
|
139
|
+
const recentAvg = recent.reduce((sum, p) => sum + p.requestRate, 0) / recent.length;
|
|
140
|
+
const olderAvg = older.reduce((sum, p) => sum + p.requestRate, 0) / older.length;
|
|
141
|
+
const change = ((recentAvg - olderAvg) / olderAvg) * 100;
|
|
142
|
+
if (change > 10)
|
|
143
|
+
return 'increasing';
|
|
144
|
+
if (change < -10)
|
|
145
|
+
return 'decreasing';
|
|
146
|
+
return 'stable';
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Predict future load using simple linear regression
|
|
150
|
+
*/
|
|
151
|
+
predictFutureLoad() {
|
|
152
|
+
if (this.utilizationSamples.length < 10) {
|
|
153
|
+
return this.calculateAverageUtilization();
|
|
154
|
+
}
|
|
155
|
+
const samples = this.utilizationSamples.slice(-20);
|
|
156
|
+
const n = samples.length;
|
|
157
|
+
// Simple linear regression
|
|
158
|
+
let sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0;
|
|
159
|
+
for (let i = 0; i < n; i++) {
|
|
160
|
+
sumX += i;
|
|
161
|
+
sumY += samples[i];
|
|
162
|
+
sumXY += i * samples[i];
|
|
163
|
+
sumX2 += i * i;
|
|
164
|
+
}
|
|
165
|
+
const slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);
|
|
166
|
+
const intercept = (sumY - slope * sumX) / n;
|
|
167
|
+
// Predict next value
|
|
168
|
+
const predicted = slope * n + intercept;
|
|
169
|
+
return Math.max(0, Math.min(100, predicted));
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Update statistics
|
|
173
|
+
*/
|
|
174
|
+
updateStats(utilization) {
|
|
175
|
+
this.stats.utilizationPercent = utilization;
|
|
176
|
+
this.stats.activeItems = this.activeItems;
|
|
177
|
+
this.stats.avgUtilization = this.calculateAverageUtilization();
|
|
178
|
+
if (utilization > this.stats.peakUtilization) {
|
|
179
|
+
this.stats.peakUtilization = utilization;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Start automatic adjustment monitoring
|
|
184
|
+
*/
|
|
185
|
+
startAdjustmentMonitoring() {
|
|
186
|
+
this.adjustmentTimer = setInterval(() => {
|
|
187
|
+
this.applyAdjustment();
|
|
188
|
+
}, this.config.adjustInterval);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get current pool size
|
|
192
|
+
*/
|
|
193
|
+
getCurrentSize() {
|
|
194
|
+
return this.currentSize;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Get statistics
|
|
198
|
+
*/
|
|
199
|
+
getStats() {
|
|
200
|
+
return { ...this.stats };
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get traffic analysis
|
|
204
|
+
*/
|
|
205
|
+
getTrafficAnalysis() {
|
|
206
|
+
if (this.trafficHistory.length === 0) {
|
|
207
|
+
return {
|
|
208
|
+
currentRate: 0,
|
|
209
|
+
avgRate: 0,
|
|
210
|
+
peakRate: 0,
|
|
211
|
+
trend: 'stable',
|
|
212
|
+
predictedLoad: 0
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
const rates = this.trafficHistory.map(p => p.requestRate);
|
|
216
|
+
const avgRate = rates.reduce((a, b) => a + b, 0) / rates.length;
|
|
217
|
+
const peakRate = Math.max(...rates);
|
|
218
|
+
const currentRate = this.trafficHistory[this.trafficHistory.length - 1]?.requestRate || 0;
|
|
219
|
+
return {
|
|
220
|
+
currentRate,
|
|
221
|
+
avgRate,
|
|
222
|
+
peakRate,
|
|
223
|
+
trend: this.analyzeTrafficTrend(),
|
|
224
|
+
predictedLoad: this.predictFutureLoad()
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get efficiency score (0-100)
|
|
229
|
+
*/
|
|
230
|
+
getEfficiencyScore() {
|
|
231
|
+
const avgUtil = this.stats.avgUtilization;
|
|
232
|
+
const target = this.config.targetUtilization;
|
|
233
|
+
// Perfect score at target utilization
|
|
234
|
+
// Score decreases as utilization deviates from target
|
|
235
|
+
const deviation = Math.abs(avgUtil - target);
|
|
236
|
+
const score = Math.max(0, 100 - (deviation * 2));
|
|
237
|
+
return score;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Reset statistics
|
|
241
|
+
*/
|
|
242
|
+
resetStats() {
|
|
243
|
+
this.stats = {
|
|
244
|
+
currentSize: this.currentSize,
|
|
245
|
+
minSize: this.config.minSize,
|
|
246
|
+
maxSize: this.config.maxSize,
|
|
247
|
+
utilizationPercent: 0,
|
|
248
|
+
activeItems: 0,
|
|
249
|
+
totalAdjustments: 0,
|
|
250
|
+
scaleUps: 0,
|
|
251
|
+
scaleDowns: 0,
|
|
252
|
+
avgUtilization: 0,
|
|
253
|
+
peakUtilization: 0
|
|
254
|
+
};
|
|
255
|
+
this.utilizationSamples = [];
|
|
256
|
+
this.trafficHistory = [];
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Manually set pool size
|
|
260
|
+
*/
|
|
261
|
+
setSize(size) {
|
|
262
|
+
if (size < this.config.minSize || size > this.config.maxSize) {
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
this.currentSize = size;
|
|
266
|
+
this.stats.currentSize = size;
|
|
267
|
+
return true;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Destroy manager and cleanup
|
|
271
|
+
*/
|
|
272
|
+
destroy() {
|
|
273
|
+
if (this.adjustmentTimer) {
|
|
274
|
+
clearInterval(this.adjustmentTimer);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Connection Pool with Adaptive Sizing
|
|
280
|
+
*/
|
|
281
|
+
export class AdaptiveConnectionPool {
|
|
282
|
+
pool = [];
|
|
283
|
+
inUse = new Set();
|
|
284
|
+
sizingManager;
|
|
285
|
+
createFn;
|
|
286
|
+
destroyFn;
|
|
287
|
+
constructor(config, createFn, destroyFn) {
|
|
288
|
+
this.sizingManager = new AdaptivePoolSizingManager(config);
|
|
289
|
+
this.createFn = createFn;
|
|
290
|
+
this.destroyFn = destroyFn;
|
|
291
|
+
// Initialize pool to initial size
|
|
292
|
+
this.adjustPoolSize();
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Acquire item from pool
|
|
296
|
+
*/
|
|
297
|
+
acquire() {
|
|
298
|
+
let item = this.pool.pop();
|
|
299
|
+
if (!item) {
|
|
300
|
+
item = this.createFn();
|
|
301
|
+
}
|
|
302
|
+
this.inUse.add(item);
|
|
303
|
+
this.recordUsage();
|
|
304
|
+
return item;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Release item back to pool
|
|
308
|
+
*/
|
|
309
|
+
release(item) {
|
|
310
|
+
this.inUse.delete(item);
|
|
311
|
+
const targetSize = this.sizingManager.getCurrentSize();
|
|
312
|
+
if (this.pool.length + this.inUse.size > targetSize) {
|
|
313
|
+
// Pool too large, destroy item
|
|
314
|
+
this.destroyFn(item);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
// Return to pool
|
|
318
|
+
this.pool.push(item);
|
|
319
|
+
}
|
|
320
|
+
this.recordUsage();
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Record current usage
|
|
324
|
+
*/
|
|
325
|
+
recordUsage() {
|
|
326
|
+
const active = this.inUse.size;
|
|
327
|
+
const total = this.pool.length + active;
|
|
328
|
+
this.sizingManager.recordUsage(active, total);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Adjust pool size based on recommendations
|
|
332
|
+
*/
|
|
333
|
+
adjustPoolSize() {
|
|
334
|
+
const targetSize = this.sizingManager.applyAdjustment();
|
|
335
|
+
const currentTotal = this.pool.length + this.inUse.size;
|
|
336
|
+
if (targetSize > currentTotal) {
|
|
337
|
+
// Scale up - create more items
|
|
338
|
+
const needed = targetSize - currentTotal;
|
|
339
|
+
for (let i = 0; i < needed; i++) {
|
|
340
|
+
this.pool.push(this.createFn());
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
else if (targetSize < currentTotal) {
|
|
344
|
+
// Scale down - remove excess items
|
|
345
|
+
const excess = currentTotal - targetSize;
|
|
346
|
+
const toRemove = Math.min(excess, this.pool.length);
|
|
347
|
+
for (let i = 0; i < toRemove; i++) {
|
|
348
|
+
const item = this.pool.pop();
|
|
349
|
+
if (item) {
|
|
350
|
+
this.destroyFn(item);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Get statistics
|
|
357
|
+
*/
|
|
358
|
+
getStats() {
|
|
359
|
+
return {
|
|
360
|
+
...this.sizingManager.getStats(),
|
|
361
|
+
poolSize: this.pool.length,
|
|
362
|
+
inUseCount: this.inUse.size
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Destroy pool
|
|
367
|
+
*/
|
|
368
|
+
destroy() {
|
|
369
|
+
// Destroy all pooled items
|
|
370
|
+
while (this.pool.length > 0) {
|
|
371
|
+
const item = this.pool.pop();
|
|
372
|
+
if (item) {
|
|
373
|
+
this.destroyFn(item);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
this.sizingManager.destroy();
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Buffer Pool with Adaptive Sizing
|
|
381
|
+
*/
|
|
382
|
+
export class AdaptiveBufferPool {
|
|
383
|
+
pool;
|
|
384
|
+
bufferSize;
|
|
385
|
+
constructor(config, bufferSize = 64 * 1024) {
|
|
386
|
+
this.bufferSize = bufferSize;
|
|
387
|
+
this.pool = new AdaptiveConnectionPool(config, () => Buffer.allocUnsafe(this.bufferSize), (_item) => { });
|
|
388
|
+
}
|
|
389
|
+
acquire() {
|
|
390
|
+
return this.pool.acquire();
|
|
391
|
+
}
|
|
392
|
+
release(buffer) {
|
|
393
|
+
this.pool.release(buffer);
|
|
394
|
+
}
|
|
395
|
+
getStats() {
|
|
396
|
+
return this.pool.getStats();
|
|
397
|
+
}
|
|
398
|
+
destroy() {
|
|
399
|
+
this.pool.destroy();
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Calculate resource utilization improvement
|
|
404
|
+
*/
|
|
405
|
+
export function calculatePoolSizingSavings(oldAvgSize, newAvgSize, peakSize) {
|
|
406
|
+
const resourceSavings = oldAvgSize - newAvgSize;
|
|
407
|
+
const savingsPercent = (resourceSavings / oldAvgSize) * 100;
|
|
408
|
+
const efficiencyGain = (1 - (newAvgSize / peakSize)) * 100;
|
|
409
|
+
return {
|
|
410
|
+
resourceSavings,
|
|
411
|
+
savingsPercent,
|
|
412
|
+
efficiencyGain
|
|
413
|
+
};
|
|
414
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Booster Pre-Processor
|
|
3
|
+
*
|
|
4
|
+
* Detects code editing intents in agent tasks and attempts Agent Booster
|
|
5
|
+
* pattern matching before falling back to LLM.
|
|
6
|
+
*/
|
|
7
|
+
export interface EditIntent {
|
|
8
|
+
type: string;
|
|
9
|
+
task: string;
|
|
10
|
+
filePath?: string;
|
|
11
|
+
originalCode?: string;
|
|
12
|
+
targetCode?: string;
|
|
13
|
+
confidence: number;
|
|
14
|
+
}
|
|
15
|
+
export interface PreprocessorResult {
|
|
16
|
+
success: boolean;
|
|
17
|
+
method: 'agent_booster' | 'llm_required';
|
|
18
|
+
output?: string;
|
|
19
|
+
latency?: number;
|
|
20
|
+
confidence?: number;
|
|
21
|
+
strategy?: string;
|
|
22
|
+
reason?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class AgentBoosterPreprocessor {
|
|
25
|
+
private confidenceThreshold;
|
|
26
|
+
private enabledIntents;
|
|
27
|
+
constructor(options?: {
|
|
28
|
+
confidenceThreshold?: number;
|
|
29
|
+
enabledIntents?: string[];
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Detect if a task is a code editing intent that Agent Booster can handle
|
|
33
|
+
*/
|
|
34
|
+
detectIntent(task: string): EditIntent | null;
|
|
35
|
+
/**
|
|
36
|
+
* Try to apply edit using Agent Booster
|
|
37
|
+
*/
|
|
38
|
+
tryApply(intent: EditIntent): Promise<PreprocessorResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Extract file path from task description
|
|
41
|
+
*/
|
|
42
|
+
private extractFilePath;
|
|
43
|
+
/**
|
|
44
|
+
* Detect programming language from file extension
|
|
45
|
+
*/
|
|
46
|
+
private detectLanguage;
|
|
47
|
+
/**
|
|
48
|
+
* Extract var to const transformation
|
|
49
|
+
*/
|
|
50
|
+
private extractVarToConst;
|
|
51
|
+
/**
|
|
52
|
+
* Extract add types transformation (TypeScript)
|
|
53
|
+
*/
|
|
54
|
+
private extractAddTypes;
|
|
55
|
+
/**
|
|
56
|
+
* Extract add error handling transformation
|
|
57
|
+
*/
|
|
58
|
+
private extractAddErrorHandling;
|
|
59
|
+
/**
|
|
60
|
+
* Extract async/await transformation
|
|
61
|
+
*/
|
|
62
|
+
private extractAsyncAwait;
|
|
63
|
+
/**
|
|
64
|
+
* Extract add logging transformation
|
|
65
|
+
*/
|
|
66
|
+
private extractAddLogging;
|
|
67
|
+
/**
|
|
68
|
+
* Extract remove console transformation
|
|
69
|
+
*/
|
|
70
|
+
private extractRemoveConsole;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=agentBoosterPreprocessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentBoosterPreprocessor.d.ts","sourceRoot":"","sources":["../../src/utils/agentBoosterPreprocessor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,GAAG,cAAc,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,cAAc,CAAc;gBAExB,OAAO,GAAE;QACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB;IAaN;;OAEG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IA0DpD;;OAEG;IACU,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmEtE;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAkB/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAQ7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentBoosterPreprocessor.js","sourceRoot":"","sources":["../../src/utils/agentBoosterPreprocessor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Booster Pre-Processor\n *\n * Detects code editing intents in agent tasks and attempts Agent Booster\n * pattern matching before falling back to LLM.\n */\n\nimport { execSync } from 'child_process';\nimport { existsSync, readFileSync, writeFileSync } from 'fs';\nimport { extname } from 'path';\n\nexport interface EditIntent {\n type: string;\n task: string;\n filePath?: string;\n originalCode?: string;\n targetCode?: string;\n confidence: number;\n}\n\nexport interface PreprocessorResult {\n success: boolean;\n method: 'agent_booster' | 'llm_required';\n output?: string;\n latency?: number;\n confidence?: number;\n strategy?: string;\n reason?: string;\n}\n\nexport class AgentBoosterPreprocessor {\n private confidenceThreshold: number;\n private enabledIntents: Set<string>;\n\n constructor(options: {\n confidenceThreshold?: number;\n enabledIntents?: string[];\n } = {}) {\n this.confidenceThreshold = options.confidenceThreshold || 0.7;\n this.enabledIntents = new Set(options.enabledIntents || [\n 'var_to_const',\n 'add_types',\n 'add_error_handling',\n 'async_await',\n 'add_logging',\n 'remove_console',\n 'format_code'\n ]);\n }\n\n /**\n * Detect if a task is a code editing intent that Agent Booster can handle\n */\n public detectIntent(task: string): EditIntent | null {\n const patterns = [\n {\n regex: /convert\\s+(all\\s+)?var\\s+to\\s+const/i,\n type: 'var_to_const',\n extractor: this.extractVarToConst.bind(this)\n },\n {\n regex: /add\\s+type\\s+(annotations?|hints?)/i,\n type: 'add_types',\n extractor: this.extractAddTypes.bind(this)\n },\n {\n regex: /add\\s+error\\s+handling/i,\n type: 'add_error_handling',\n extractor: this.extractAddErrorHandling.bind(this)\n },\n {\n regex: /convert\\s+to\\s+async\\s*\\/?\\s*await/i,\n type: 'async_await',\n extractor: this.extractAsyncAwait.bind(this)\n },\n {\n regex: /add\\s+(logging|console\\.log)/i,\n type: 'add_logging',\n extractor: this.extractAddLogging.bind(this)\n },\n {\n regex: /remove\\s+(all\\s+)?console\\.(log|debug|warn)/i,\n type: 'remove_console',\n extractor: this.extractRemoveConsole.bind(this)\n }\n ];\n\n for (const pattern of patterns) {\n if (pattern.regex.test(task) && this.enabledIntents.has(pattern.type)) {\n const filePath = this.extractFilePath(task);\n if (filePath && existsSync(filePath)) {\n const originalCode = readFileSync(filePath, 'utf-8');\n const targetCode = pattern.extractor(originalCode);\n\n if (targetCode) {\n return {\n type: pattern.type,\n task,\n filePath,\n originalCode,\n targetCode,\n confidence: 0.8 // Initial confidence for pattern match\n };\n }\n }\n }\n }\n\n return null;\n }\n\n /**\n * Try to apply edit using Agent Booster\n */\n public async tryApply(intent: EditIntent): Promise<PreprocessorResult> {\n if (!intent.filePath || !intent.originalCode || !intent.targetCode) {\n return {\n success: false,\n method: 'llm_required',\n reason: 'Missing file path or code'\n };\n }\n\n try {\n const language = this.detectLanguage(intent.filePath);\n\n const cmd = `npx --yes agent-booster@0.2.2 apply --language ${language}`;\n\n let result: string;\n try {\n result = execSync(cmd, {\n encoding: 'utf-8',\n input: JSON.stringify({\n code: intent.originalCode,\n edit: intent.targetCode\n }),\n maxBuffer: 10 * 1024 * 1024,\n timeout: 10000\n });\n } catch (execError: any) {\n // execSync throws on non-zero exit, but agent-booster returns JSON even on stderr\n // Try to parse stdout anyway\n if (execError.stdout) {\n result = execError.stdout.toString();\n } else {\n throw new Error(`execSync failed: ${execError.message}`);\n }\n }\n\n const parsed = JSON.parse(result);\n\n if (parsed.success && parsed.confidence >= this.confidenceThreshold) {\n // High confidence - use Agent Booster result\n writeFileSync(intent.filePath, parsed.output);\n\n return {\n success: true,\n method: 'agent_booster',\n output: parsed.output,\n latency: parsed.latency,\n confidence: parsed.confidence,\n strategy: parsed.strategy\n };\n } else {\n // Low confidence - require LLM\n return {\n success: false,\n method: 'llm_required',\n confidence: parsed.confidence,\n reason: `Agent Booster confidence too low (${(parsed.confidence * 100).toFixed(1)}%). Using LLM for complex edit.`\n };\n }\n } catch (error: any) {\n return {\n success: false,\n method: 'llm_required',\n reason: `Agent Booster error: ${error.message}`\n };\n }\n }\n\n /**\n * Extract file path from task description\n */\n private extractFilePath(task: string): string | null {\n // Pattern: \"in <file>\" or \"to <file>\" or just \"<file.ext>\"\n const patterns = [\n /(?:in|to|from|for|file:?)\\s+([^\\s]+\\.(?:js|ts|tsx|jsx|py|rs|go|java|c|cpp|h|hpp))/i,\n /([^\\s]+\\.(?:js|ts|tsx|jsx|py|rs|go|java|c|cpp|h|hpp))/i\n ];\n\n for (const pattern of patterns) {\n const match = task.match(pattern);\n if (match) {\n return match[1];\n }\n }\n\n return null;\n }\n\n /**\n * Detect programming language from file extension\n */\n private detectLanguage(filePath: string): string {\n const ext = extname(filePath).slice(1);\n const langMap: { [key: string]: string } = {\n 'ts': 'typescript',\n 'tsx': 'typescript',\n 'js': 'javascript',\n 'jsx': 'javascript',\n 'py': 'python',\n 'rs': 'rust',\n 'go': 'go',\n 'java': 'java',\n 'c': 'c',\n 'cpp': 'cpp',\n 'h': 'c',\n 'hpp': 'cpp'\n };\n return langMap[ext] || 'javascript';\n }\n\n /**\n * Extract var to const transformation\n */\n private extractVarToConst(code: string): string | null {\n // Simple transformation: replace var with const\n if (code.includes('var ')) {\n return code.replace(/\\bvar\\b/g, 'const');\n }\n return null;\n }\n\n /**\n * Extract add types transformation (TypeScript)\n */\n private extractAddTypes(code: string): string | null {\n // Simple type annotation: function params and return types\n const functionPattern = /function\\s+(\\w+)\\s*\\(([^)]*)\\)\\s*\\{/g;\n\n let hasUntypedFunctions = false;\n let transformed = code;\n\n code.replace(functionPattern, (match, name, params) => {\n if (!params.includes(':')) {\n hasUntypedFunctions = true;\n // Add basic type hints\n const typedParams = params.split(',').map((p: string) => {\n const trimmed = p.trim();\n if (trimmed && !trimmed.includes(':')) {\n return `${trimmed}: any`;\n }\n return p;\n }).join(', ');\n\n transformed = transformed.replace(\n match,\n `function ${name}(${typedParams}): any {`\n );\n }\n return match;\n });\n\n return hasUntypedFunctions ? transformed : null;\n }\n\n /**\n * Extract add error handling transformation\n */\n private extractAddErrorHandling(code: string): string | null {\n // Wrap risky operations in try-catch\n const riskyPatterns = [\n /JSON\\.parse\\(/,\n /fetch\\(/,\n /\\bawait\\s+/\n ];\n\n for (const pattern of riskyPatterns) {\n if (pattern.test(code)) {\n // This is complex - better handled by LLM\n return null;\n }\n }\n\n return null;\n }\n\n /**\n * Extract async/await transformation\n */\n private extractAsyncAwait(code: string): string | null {\n // Convert .then() chains to async/await\n if (code.includes('.then(')) {\n // This is complex - better handled by LLM\n return null;\n }\n return null;\n }\n\n /**\n * Extract add logging transformation\n */\n private extractAddLogging(code: string): string | null {\n // Add console.log before function returns\n // This is complex - better handled by LLM\n return null;\n }\n\n /**\n * Extract remove console transformation\n */\n private extractRemoveConsole(code: string): string | null {\n if (code.includes('console.')) {\n // Remove console statements but preserve line structure\n // Match optional leading whitespace, console call, and keep one newline if present\n return code.replace(/^[ \\t]*console\\.(log|debug|warn|info|error)\\([^)]*\\);?\\s*$/gm, '');\n }\n return null;\n }\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface AgentDefinition {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
systemPrompt: string;
|
|
5
|
+
color?: string;
|
|
6
|
+
tools?: string[];
|
|
7
|
+
filePath: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Load all agents from .claude/agents directory with deduplication
|
|
11
|
+
* Local agents (.claude/agents in CWD) override package agents
|
|
12
|
+
*/
|
|
13
|
+
export declare function loadAgents(agentsDir?: string): Map<string, AgentDefinition>;
|
|
14
|
+
/**
|
|
15
|
+
* Get a specific agent by name
|
|
16
|
+
*/
|
|
17
|
+
export declare function getAgent(name: string, agentsDir?: string): AgentDefinition | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* List all available agents
|
|
20
|
+
*/
|
|
21
|
+
export declare function listAgents(agentsDir?: string): AgentDefinition[];
|
|
22
|
+
//# sourceMappingURL=agentLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentLoader.d.ts","sourceRoot":"","sources":["../../src/utils/agentLoader.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAsFD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAwE3E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAGtF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,CAGhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentLoader.js","sourceRoot":"","sources":["../../src/utils/agentLoader.ts"],"names":[],"mappings":"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","sourcesContent":["// Agent loader for .claude/agents integration\nimport { readFileSync, readdirSync, statSync, existsSync } from 'fs';\nimport { join, extname, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { logger } from './logger.js';\n\n// Get the package root directory\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst packageRoot = join(__dirname, '../..');\nconst defaultAgentsDir = join(packageRoot, '.claude/agents');\n\nexport interface AgentDefinition {\n name: string;\n description: string;\n systemPrompt: string;\n color?: string;\n tools?: string[];\n filePath: string;\n}\n\ninterface AgentFrontmatter {\n name: string;\n description: string;\n color?: string;\n tools?: string[];\n}\n\n/**\n * Parse agent markdown file with frontmatter\n */\nfunction parseAgentFile(filePath: string): AgentDefinition | null {\n try {\n const content = readFileSync(filePath, 'utf-8');\n\n // Check for frontmatter\n const frontmatterMatch = content.match(/^---\\n([\\s\\S]*?)\\n---\\n([\\s\\S]*)$/);\n if (!frontmatterMatch) {\n logger.warn('Agent file missing frontmatter', { filePath });\n return null;\n }\n\n const [, frontmatter, systemPrompt] = frontmatterMatch;\n\n // Parse YAML-like frontmatter\n const meta: Partial<AgentFrontmatter> = {};\n frontmatter.split('\\n').forEach(line => {\n const match = line.match(/^(\\w+):\\s*(.+)$/);\n if (match) {\n const [, key, value] = match;\n // Remove quotes if present\n const cleanValue = value.replace(/^[\"']|[\"']$/g, '');\n if (key === 'tools') {\n meta[key] = cleanValue.split(',').map(t => t.trim());\n } else {\n (meta as any)[key] = cleanValue;\n }\n }\n });\n\n if (!meta.name || !meta.description) {\n logger.warn('Agent file missing required metadata', { filePath });\n return null;\n }\n\n return {\n name: meta.name,\n description: meta.description,\n systemPrompt: systemPrompt.trim(),\n color: meta.color,\n tools: meta.tools,\n filePath\n };\n } catch (error) {\n logger.error('Failed to parse agent file', { filePath, error });\n return null;\n }\n}\n\n/**\n * Recursively find all agent definition files\n */\nfunction findAgentFiles(dir: string): string[] {\n const files: string[] = [];\n\n try {\n const entries = readdirSync(dir);\n\n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const stat = statSync(fullPath);\n\n if (stat.isDirectory()) {\n files.push(...findAgentFiles(fullPath));\n } else if (extname(entry) === '.md' && entry !== 'README.md') {\n files.push(fullPath);\n }\n }\n } catch (error) {\n logger.warn('Failed to read directory', { dir, error });\n }\n\n return files;\n}\n\n/**\n * Load all agents from .claude/agents directory with deduplication\n * Local agents (.claude/agents in CWD) override package agents\n */\nexport function loadAgents(agentsDir?: string): Map<string, AgentDefinition> {\n const agents = new Map<string, AgentDefinition>();\n const agentsByRelativePath = new Map<string, AgentDefinition>();\n\n // If explicit directory is provided, use only that\n if (agentsDir) {\n logger.info('Loading agents from explicit directory', { agentsDir });\n const agentFiles = findAgentFiles(agentsDir);\n for (const filePath of agentFiles) {\n const agent = parseAgentFile(filePath);\n if (agent) {\n agents.set(agent.name, agent);\n }\n }\n return agents;\n }\n\n // Otherwise, load from both package and local with deduplication\n const localAgentsDir = join(process.cwd(), '.claude/agents');\n\n // 1. Load package agents first (if they exist)\n if (existsSync(defaultAgentsDir)) {\n logger.info('Loading package agents', { agentsDir: defaultAgentsDir });\n const packageFiles = findAgentFiles(defaultAgentsDir);\n logger.debug('Found package agent files', { count: packageFiles.length });\n\n for (const filePath of packageFiles) {\n const agent = parseAgentFile(filePath);\n if (agent) {\n const relativePath = filePath.substring(defaultAgentsDir.length + 1);\n agentsByRelativePath.set(relativePath, agent);\n agents.set(agent.name, agent);\n logger.debug('Loaded package agent', { name: agent.name, path: relativePath });\n }\n }\n }\n\n // 2. Load local agents (override package agents with same relative path)\n if (existsSync(localAgentsDir) && localAgentsDir !== defaultAgentsDir) {\n logger.info('Loading local agents', { agentsDir: localAgentsDir });\n const localFiles = findAgentFiles(localAgentsDir);\n logger.debug('Found local agent files', { count: localFiles.length });\n\n for (const filePath of localFiles) {\n const agent = parseAgentFile(filePath);\n if (agent) {\n const relativePath = filePath.substring(localAgentsDir.length + 1);\n const existingAgent = agentsByRelativePath.get(relativePath);\n\n if (existingAgent) {\n logger.info('Local agent overrides package agent', {\n name: agent.name,\n path: relativePath\n });\n // Remove old agent\n agents.delete(existingAgent.name);\n }\n\n agentsByRelativePath.set(relativePath, agent);\n agents.set(agent.name, agent);\n logger.debug('Loaded local agent', { name: agent.name, path: relativePath });\n }\n }\n }\n\n logger.info('Agents loaded successfully', {\n total: agents.size,\n package: existsSync(defaultAgentsDir) ? findAgentFiles(defaultAgentsDir).length : 0,\n local: existsSync(localAgentsDir) ? findAgentFiles(localAgentsDir).length : 0\n });\n\n return agents;\n}\n\n/**\n * Get a specific agent by name\n */\nexport function getAgent(name: string, agentsDir?: string): AgentDefinition | undefined {\n const agents = loadAgents(agentsDir);\n return agents.get(name);\n}\n\n/**\n * List all available agents\n */\nexport function listAgents(agentsDir?: string): AgentDefinition[] {\n const agents = loadAgents(agentsDir);\n return Array.from(agents.values());\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentDB Runtime Patch
|
|
3
|
+
*
|
|
4
|
+
* Automatically fixes AgentDB v1.3.9 import resolution issues at runtime.
|
|
5
|
+
* This patch works in all contexts: npm install, npm install -g, and npx.
|
|
6
|
+
*
|
|
7
|
+
* Issue: agentdb v1.3.9 missing .js extensions in ESM exports
|
|
8
|
+
* Solution: Patch the controller index.js file at runtime before first import
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Apply AgentDB import fix at runtime
|
|
12
|
+
* Safe to call multiple times - only patches once
|
|
13
|
+
*/
|
|
14
|
+
export declare function applyAgentDBPatch(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Check if AgentDB patch is needed
|
|
17
|
+
*/
|
|
18
|
+
export declare function isAgentDBPatchNeeded(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Get patch status information
|
|
21
|
+
*/
|
|
22
|
+
export declare function getAgentDBPatchStatus(): {
|
|
23
|
+
needed: boolean;
|
|
24
|
+
applied: boolean;
|
|
25
|
+
attempted: boolean;
|
|
26
|
+
location: string | null;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=agentdb-runtime-patch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentdb-runtime-patch.d.ts","sourceRoot":"","sources":["../../src/utils/agentdb-runtime-patch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAmE3C;AAkED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAS9C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAOA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentdb-runtime-patch.js","sourceRoot":"","sources":["../../src/utils/agentdb-runtime-patch.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AgentDB Runtime Patch\n *\n * Automatically fixes AgentDB v1.3.9 import resolution issues at runtime.\n * This patch works in all contexts: npm install, npm install -g, and npx.\n *\n * Issue: agentdb v1.3.9 missing .js extensions in ESM exports\n * Solution: Patch the controller index.js file at runtime before first import\n */\n\nimport { readFileSync, writeFileSync, existsSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\nlet patched = false;\nlet patchAttempted = false;\n\n/**\n * Apply AgentDB import fix at runtime\n * Safe to call multiple times - only patches once\n */\nexport function applyAgentDBPatch(): boolean {\n // Only attempt once per process\n if (patchAttempted) {\n return patched;\n }\n patchAttempted = true;\n\n try {\n // Find agentdb installation\n const agentdbPath = findAgentDBPath();\n if (!agentdbPath) {\n console.warn('[AgentDB Patch] Could not locate agentdb installation');\n return false;\n }\n\n const controllerIndexPath = join(agentdbPath, 'dist', 'controllers', 'index.js');\n\n if (!existsSync(controllerIndexPath)) {\n console.warn(`[AgentDB Patch] Controller index not found: ${controllerIndexPath}`);\n return false;\n }\n\n // Read current content\n let content = readFileSync(controllerIndexPath, 'utf8');\n\n // Check if already patched\n if (content.includes(\"from './ReflexionMemory.js'\")) {\n patched = true;\n return true;\n }\n\n // Apply patches\n const patches = [\n { from: \"from './ReflexionMemory'\", to: \"from './ReflexionMemory.js'\" },\n { from: \"from './SkillLibrary'\", to: \"from './SkillLibrary.js'\" },\n { from: \"from './EmbeddingService'\", to: \"from './EmbeddingService.js'\" },\n { from: \"from './CausalMemoryGraph'\", to: \"from './CausalMemoryGraph.js'\" },\n { from: \"from './CausalRecall'\", to: \"from './CausalRecall.js'\" },\n { from: \"from './NightlyLearner'\", to: \"from './NightlyLearner.js'\" }\n ];\n\n let modified = false;\n for (const patch of patches) {\n if (content.includes(patch.from) && !content.includes(patch.to)) {\n content = content.replace(new RegExp(patch.from, 'g'), patch.to);\n modified = true;\n }\n }\n\n if (modified) {\n try {\n writeFileSync(controllerIndexPath, content, 'utf8');\n patched = true;\n console.log('[AgentDB Patch] ✅ Successfully patched AgentDB imports');\n return true;\n } catch (writeError: any) {\n // If we can't write (npx temp dir permissions), that's OK - imports will fail gracefully\n console.warn('[AgentDB Patch] ⚠️ Could not write patch (read-only):', writeError.message);\n return false;\n }\n }\n\n return false;\n } catch (error: any) {\n console.warn('[AgentDB Patch] Error applying patch:', error.message);\n return false;\n }\n}\n\n/**\n * Find AgentDB installation directory\n * Checks multiple possible locations\n */\nfunction findAgentDBPath(): string | null {\n const possiblePaths = [\n // Local node_modules (most common)\n join(process.cwd(), 'node_modules', 'agentdb'),\n\n // Parent directory node_modules (monorepo)\n join(process.cwd(), '..', 'node_modules', 'agentdb'),\n\n // Global npm installation\n join(process.execPath, '..', '..', 'lib', 'node_modules', 'agentdb'),\n\n // Relative to this file (for bundled installations)\n ...(typeof __dirname !== 'undefined'\n ? [\n join(__dirname, '..', '..', 'node_modules', 'agentdb'),\n join(__dirname, '..', '..', '..', 'agentdb')\n ]\n : []),\n\n // Using import.meta.url (ESM)\n ...(typeof import.meta !== 'undefined' && import.meta.url\n ? (() => {\n try {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n return [\n join(currentDir, '..', '..', 'node_modules', 'agentdb'),\n join(currentDir, '..', '..', '..', 'agentdb')\n ];\n } catch {\n return [];\n }\n })()\n : [])\n ];\n\n // Try each path\n for (const path of possiblePaths) {\n if (existsSync(join(path, 'package.json'))) {\n try {\n const pkg = JSON.parse(readFileSync(join(path, 'package.json'), 'utf8'));\n if (pkg.name === 'agentdb') {\n return path;\n }\n } catch {\n continue;\n }\n }\n }\n\n // Try require.resolve as fallback\n try {\n const resolved = require.resolve('agentdb/package.json');\n return dirname(resolved);\n } catch {\n // Not found via require.resolve\n }\n\n return null;\n}\n\n/**\n * Check if AgentDB patch is needed\n */\nexport function isAgentDBPatchNeeded(): boolean {\n const agentdbPath = findAgentDBPath();\n if (!agentdbPath) return false;\n\n const controllerIndexPath = join(agentdbPath, 'dist', 'controllers', 'index.js');\n if (!existsSync(controllerIndexPath)) return false;\n\n const content = readFileSync(controllerIndexPath, 'utf8');\n return !content.includes(\"from './ReflexionMemory.js'\");\n}\n\n/**\n * Get patch status information\n */\nexport function getAgentDBPatchStatus(): {\n needed: boolean;\n applied: boolean;\n attempted: boolean;\n location: string | null;\n} {\n return {\n needed: isAgentDBPatchNeeded(),\n applied: patched,\n attempted: patchAttempted,\n location: findAgentDBPath()\n };\n}\n\n// Auto-apply patch on module load (SYNCHRONOUS - must happen before any AgentDB imports)\n// This ensures the patch is applied before any imports\nif (typeof process !== 'undefined' && !process.env.SKIP_AGENTDB_PATCH) {\n // MUST be synchronous - async won't work because imports happen immediately\n try {\n applyAgentDBPatch();\n } catch (error) {\n // Silently fail - patch will be attempted again on explicit call\n }\n}\n"]}
|