agentic-flow 2.0.1-alpha.9 → 2.0.2-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1089 -644
- package/agentic-flow/CHANGELOG.md +68 -0
- package/agentic-flow/README.md +874 -0
- package/{dist → agentic-flow/dist}/billing/cli.js +0 -0
- package/agentic-flow/dist/billing/mcp/tools.d.ts.map +1 -0
- package/agentic-flow/dist/billing/mcp/tools.js +238 -0
- package/agentic-flow/dist/billing/mcp/tools.js.map +1 -0
- package/agentic-flow/dist/cli/commands/hooks.d.ts.map +1 -0
- package/agentic-flow/dist/cli/commands/hooks.js +923 -0
- package/agentic-flow/dist/cli/commands/hooks.js.map +1 -0
- package/agentic-flow/dist/cli/commands/swarm.d.ts.map +1 -0
- package/agentic-flow/dist/cli/commands/swarm.js +325 -0
- package/agentic-flow/dist/cli/commands/swarm.js.map +1 -0
- package/agentic-flow/dist/cli-proxy.js +1175 -0
- package/agentic-flow/dist/cli-proxy.js.map +1 -0
- package/agentic-flow/dist/core/agentdb-fast.js +308 -0
- package/agentic-flow/dist/core/agentdb-fast.js.map +1 -0
- package/agentic-flow/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -0
- package/agentic-flow/dist/core/agentdb-wrapper-enhanced.js +717 -0
- package/agentic-flow/dist/core/agentdb-wrapper-enhanced.js.map +1 -0
- package/agentic-flow/dist/core/attention-native.d.ts.map +1 -0
- package/agentic-flow/dist/core/attention-native.js +268 -0
- package/agentic-flow/dist/core/attention-native.js.map +1 -0
- package/agentic-flow/dist/federation/integrations/supabase-adapter-debug.js +401 -0
- package/agentic-flow/dist/federation/integrations/supabase-adapter-debug.js.map +1 -0
- package/agentic-flow/dist/hooks/p2p-swarm-hooks.d.ts.map +1 -0
- package/agentic-flow/dist/hooks/p2p-swarm-hooks.js +260 -0
- package/agentic-flow/dist/hooks/p2p-swarm-hooks.js.map +1 -0
- package/agentic-flow/dist/intelligence/EmbeddingCache.d.ts.map +1 -0
- package/agentic-flow/dist/intelligence/EmbeddingCache.js +624 -0
- package/agentic-flow/dist/intelligence/EmbeddingCache.js.map +1 -0
- package/agentic-flow/dist/intelligence/EmbeddingService.d.ts.map +1 -0
- package/agentic-flow/dist/intelligence/EmbeddingService.js +1484 -0
- package/agentic-flow/dist/intelligence/EmbeddingService.js.map +1 -0
- package/agentic-flow/dist/intelligence/IntelligenceStore.d.ts.map +1 -0
- package/agentic-flow/dist/intelligence/IntelligenceStore.js +364 -0
- package/agentic-flow/dist/intelligence/IntelligenceStore.js.map +1 -0
- package/agentic-flow/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -0
- package/agentic-flow/dist/intelligence/RuVectorIntelligence.js +853 -0
- package/agentic-flow/dist/intelligence/RuVectorIntelligence.js.map +1 -0
- package/agentic-flow/dist/intelligence/agent-booster-enhanced.d.ts.map +1 -0
- package/agentic-flow/dist/intelligence/agent-booster-enhanced.js +1122 -0
- package/agentic-flow/dist/intelligence/agent-booster-enhanced.js.map +1 -0
- package/agentic-flow/dist/intelligence/embedding-benchmark.d.ts.map +1 -0
- package/agentic-flow/dist/intelligence/embedding-benchmark.js +155 -0
- package/agentic-flow/dist/intelligence/embedding-benchmark.js.map +1 -0
- package/agentic-flow/dist/intelligence/index.d.ts.map +1 -0
- package/agentic-flow/dist/intelligence/index.js +28 -0
- package/agentic-flow/dist/intelligence/index.js.map +1 -0
- package/agentic-flow/dist/intelligence/wasm-acceleration.d.ts.map +1 -0
- package/agentic-flow/dist/intelligence/wasm-acceleration.js +303 -0
- package/agentic-flow/dist/intelligence/wasm-acceleration.js.map +1 -0
- package/agentic-flow/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -0
- package/agentic-flow/dist/mcp/claudeFlowSdkServer.js +312 -0
- package/agentic-flow/dist/mcp/claudeFlowSdkServer.js.map +1 -0
- package/agentic-flow/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts.map +1 -0
- package/agentic-flow/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +1038 -0
- package/agentic-flow/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -0
- package/agentic-flow/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts.map +1 -0
- package/agentic-flow/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js +425 -0
- package/agentic-flow/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js.map +1 -0
- package/agentic-flow/dist/mcp/fastmcp/tools/swarm/p2p-swarm-tools.d.ts.map +1 -0
- package/agentic-flow/dist/mcp/fastmcp/tools/swarm/p2p-swarm-tools.js +405 -0
- package/agentic-flow/dist/mcp/fastmcp/tools/swarm/p2p-swarm-tools.js.map +1 -0
- package/agentic-flow/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -0
- package/agentic-flow/dist/mcp/tools/agent-booster-tools.js.map +1 -0
- package/agentic-flow/dist/mcp/tools/enhanced-booster-tools.d.ts.map +1 -0
- package/agentic-flow/dist/mcp/tools/enhanced-booster-tools.js +470 -0
- package/agentic-flow/dist/mcp/tools/enhanced-booster-tools.js.map +1 -0
- package/agentic-flow/dist/mcp/tools/sona-tools.d.ts.map +1 -0
- package/agentic-flow/dist/mcp/tools/sona-tools.js +560 -0
- package/agentic-flow/dist/mcp/tools/sona-tools.js.map +1 -0
- package/agentic-flow/dist/middleware/auth.middleware.d.ts.map +1 -0
- package/agentic-flow/dist/middleware/auth.middleware.js +260 -0
- package/agentic-flow/dist/middleware/auth.middleware.js.map +1 -0
- package/agentic-flow/dist/optimizations/agent-booster-migration.d.ts.map +1 -0
- package/agentic-flow/dist/optimizations/agent-booster-migration.js.map +1 -0
- package/agentic-flow/dist/proxy/anthropic-to-gemini.d.ts.map +1 -0
- package/agentic-flow/dist/proxy/anthropic-to-gemini.js.map +1 -0
- package/agentic-flow/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -0
- package/agentic-flow/dist/proxy/anthropic-to-openrouter.js.map +1 -0
- package/agentic-flow/dist/proxy/anthropic-to-requesty.d.ts.map +1 -0
- package/agentic-flow/dist/proxy/anthropic-to-requesty.js.map +1 -0
- package/agentic-flow/dist/proxy/quic-proxy.d.ts.map +1 -0
- package/agentic-flow/dist/proxy/quic-proxy.js +228 -0
- package/agentic-flow/dist/proxy/quic-proxy.js.map +1 -0
- package/agentic-flow/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -0
- package/agentic-flow/dist/reasoningbank/AdvancedMemory.js +240 -0
- package/agentic-flow/dist/reasoningbank/AdvancedMemory.js.map +1 -0
- package/agentic-flow/dist/reasoningbank/HybridBackend.d.ts.map +1 -0
- package/agentic-flow/dist/reasoningbank/HybridBackend.js +306 -0
- package/agentic-flow/dist/reasoningbank/HybridBackend.js.map +1 -0
- package/agentic-flow/dist/reasoningbank/backend-selector.d.ts.map +1 -0
- package/agentic-flow/dist/reasoningbank/backend-selector.js.map +1 -0
- package/agentic-flow/dist/reasoningbank/index-new.d.ts.map +1 -0
- package/agentic-flow/dist/reasoningbank/index-new.js +88 -0
- package/agentic-flow/dist/reasoningbank/index-new.js.map +1 -0
- package/agentic-flow/dist/reasoningbank/index.d.ts.map +1 -0
- package/agentic-flow/dist/reasoningbank/index.js +90 -0
- package/agentic-flow/dist/reasoningbank/index.js.map +1 -0
- package/agentic-flow/dist/router/index.d.ts.map +1 -0
- package/agentic-flow/dist/router/index.js +19 -0
- package/agentic-flow/dist/router/index.js.map +1 -0
- package/agentic-flow/dist/router/providers/onnx-local.d.ts.map +1 -0
- package/agentic-flow/dist/router/providers/onnx-local.js +295 -0
- package/agentic-flow/dist/router/providers/onnx-local.js.map +1 -0
- package/agentic-flow/dist/routing/TinyDancerRouter.d.ts.map +1 -0
- package/agentic-flow/dist/routing/TinyDancerRouter.js +408 -0
- package/agentic-flow/dist/routing/TinyDancerRouter.js.map +1 -0
- package/agentic-flow/dist/sdk/agent-converter.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/agent-converter.js +188 -0
- package/agentic-flow/dist/sdk/agent-converter.js.map +1 -0
- package/agentic-flow/dist/sdk/e2b-sandbox.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/e2b-sandbox.js +419 -0
- package/agentic-flow/dist/sdk/e2b-sandbox.js.map +1 -0
- package/agentic-flow/dist/sdk/e2b-swarm-optimizer.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/e2b-swarm-optimizer.js +253 -0
- package/agentic-flow/dist/sdk/e2b-swarm-optimizer.js.map +1 -0
- package/agentic-flow/dist/sdk/e2b-swarm.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/e2b-swarm.js +366 -0
- package/agentic-flow/dist/sdk/e2b-swarm.js.map +1 -0
- package/agentic-flow/dist/sdk/hooks-bridge.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/hooks-bridge.js +235 -0
- package/agentic-flow/dist/sdk/hooks-bridge.js.map +1 -0
- package/agentic-flow/dist/sdk/index.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/index.js +28 -0
- package/agentic-flow/dist/sdk/index.js.map +1 -0
- package/agentic-flow/dist/sdk/permission-handler.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/permission-handler.js +229 -0
- package/agentic-flow/dist/sdk/permission-handler.js.map +1 -0
- package/agentic-flow/dist/sdk/plugins.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/plugins.js +279 -0
- package/agentic-flow/dist/sdk/plugins.js.map +1 -0
- package/agentic-flow/dist/sdk/query-control.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/query-control.js +273 -0
- package/agentic-flow/dist/sdk/query-control.js.map +1 -0
- package/agentic-flow/dist/sdk/security.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/security.js +329 -0
- package/agentic-flow/dist/sdk/security.js.map +1 -0
- package/agentic-flow/dist/sdk/session-manager.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/session-manager.js +181 -0
- package/agentic-flow/dist/sdk/session-manager.js.map +1 -0
- package/agentic-flow/dist/sdk/streaming-input.d.ts.map +1 -0
- package/agentic-flow/dist/sdk/streaming-input.js +336 -0
- package/agentic-flow/dist/sdk/streaming-input.js.map +1 -0
- package/agentic-flow/dist/services/embedding-service.d.ts.map +1 -0
- package/agentic-flow/dist/services/embedding-service.js +367 -0
- package/agentic-flow/dist/services/embedding-service.js.map +1 -0
- package/agentic-flow/dist/services/sona-agent-training.js +382 -0
- package/agentic-flow/dist/services/sona-agent-training.js.map +1 -0
- package/agentic-flow/dist/services/sona-agentdb-integration.d.ts.map +1 -0
- package/agentic-flow/dist/services/sona-agentdb-integration.js +346 -0
- package/agentic-flow/dist/services/sona-agentdb-integration.js.map +1 -0
- package/agentic-flow/dist/services/sona-service.d.ts.map +1 -0
- package/agentic-flow/dist/services/sona-service.js +448 -0
- package/agentic-flow/dist/services/sona-service.js.map +1 -0
- package/agentic-flow/dist/swarm/p2p-swarm-v2.d.ts.map +1 -0
- package/agentic-flow/dist/swarm/p2p-swarm-v2.js +1787 -0
- package/agentic-flow/dist/swarm/p2p-swarm-v2.js.map +1 -0
- package/agentic-flow/dist/swarm/p2p-swarm-wasm.d.ts.map +1 -0
- package/agentic-flow/dist/swarm/p2p-swarm-wasm.js +315 -0
- package/agentic-flow/dist/swarm/p2p-swarm-wasm.js.map +1 -0
- package/agentic-flow/dist/utils/cli.d.ts.map +1 -0
- package/agentic-flow/dist/utils/cli.js +344 -0
- package/agentic-flow/dist/utils/cli.js.map +1 -0
- package/agentic-flow/dist/utils/rate-limiter.js +49 -0
- package/agentic-flow/dist/utils/rate-limiter.js.map +1 -0
- package/agentic-flow/dist/utils/safe-exec.d.ts.map +1 -0
- package/agentic-flow/dist/utils/safe-exec.js +205 -0
- package/agentic-flow/dist/utils/safe-exec.js.map +1 -0
- package/agentic-flow/dist/wasm/edge-full.d.ts.map +1 -0
- package/agentic-flow/dist/wasm/edge-full.js +637 -0
- package/agentic-flow/dist/wasm/edge-full.js.map +1 -0
- package/agentic-flow/dist/wasm/onnx-embeddings-wasm.d.ts.map +1 -0
- package/agentic-flow/dist/wasm/onnx-embeddings-wasm.js +310 -0
- package/agentic-flow/dist/wasm/onnx-embeddings-wasm.js.map +1 -0
- package/agentic-flow/dist/wasm/ruvector-edge.d.ts.map +1 -0
- package/agentic-flow/dist/wasm/ruvector-edge.js +353 -0
- package/agentic-flow/dist/wasm/ruvector-edge.js.map +1 -0
- package/agentic-flow/docs/IMPROVEMENT_ROADMAP.md +184 -0
- package/agentic-flow/docs/LICENSE +21 -0
- package/agentic-flow/docs/README.md +217 -0
- package/agentic-flow/scripts/postinstall.js +98 -0
- package/agentic-flow/wasm/reasoningbank/reasoningbank_wasm_bg.js +555 -0
- package/agentic-flow/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
- package/docs/CHANGELOG.md +272 -0
- package/docs/README.md +119 -209
- package/package.json +158 -71
- package/packages/agentic-jujutsu/.cargo/config.toml +14 -0
- package/packages/agentic-jujutsu/BUILD.md +292 -0
- package/packages/agentic-jujutsu/CHANGELOG.md +143 -0
- package/packages/agentic-jujutsu/CHANGELOG_v2.2.0.md +203 -0
- package/packages/agentic-jujutsu/CRATE_README.md +269 -0
- package/packages/agentic-jujutsu/Dockerfile +8 -0
- package/packages/agentic-jujutsu/Dockerfile.test +81 -0
- package/packages/agentic-jujutsu/FUNCTIONALITY_VERIFICATION.md +377 -0
- package/packages/agentic-jujutsu/LICENSE +21 -0
- package/packages/agentic-jujutsu/NAPI_CI_CD_FILES.txt +162 -0
- package/packages/agentic-jujutsu/QUANTUM_INTEGRATION_SUMMARY.txt +67 -0
- package/packages/agentic-jujutsu/README.md +2248 -0
- package/packages/agentic-jujutsu/README_QUANTUM_INTEGRATION.md +195 -0
- package/packages/agentic-jujutsu/agentic-jujutsu-2.0.0.tgz +0 -0
- package/packages/agentic-jujutsu/agentic-jujutsu-2.0.1.tgz +0 -0
- package/packages/agentic-jujutsu/agentic-jujutsu-2.0.2.tgz +0 -0
- package/packages/agentic-jujutsu/agentic-jujutsu-2.0.3.tgz +0 -0
- package/packages/agentic-jujutsu/agentic-jujutsu.linux-x64-gnu.node +0 -0
- package/packages/agentic-jujutsu/benchmarks/README.md +403 -0
- package/packages/agentic-jujutsu/benchmarks/docker/.env.example +24 -0
- package/packages/agentic-jujutsu/benchmarks/docker/Dockerfile.git +55 -0
- package/packages/agentic-jujutsu/benchmarks/docker/Dockerfile.jujutsu +67 -0
- package/packages/agentic-jujutsu/benchmarks/docker/Dockerfile.swarm-coordinator +45 -0
- package/packages/agentic-jujutsu/benchmarks/docker/config/prometheus.yml +20 -0
- package/packages/agentic-jujutsu/benchmarks/docker/docker-compose.yml +152 -0
- package/packages/agentic-jujutsu/benchmarks/docker/scripts/collect-metrics.sh +143 -0
- package/packages/agentic-jujutsu/benchmarks/docker/scripts/generate-reports.sh +150 -0
- package/packages/agentic-jujutsu/benchmarks/docker/scripts/run-benchmarks.sh +80 -0
- package/packages/agentic-jujutsu/benchmarks/docker/scripts/setup-repos.sh +88 -0
- package/packages/agentic-jujutsu/bin/cli.js +286 -0
- package/packages/agentic-jujutsu/bin/mcp-server.js +20 -0
- package/packages/agentic-jujutsu/build.rs +134 -0
- package/packages/agentic-jujutsu/check-methods.js +26 -0
- package/packages/agentic-jujutsu/helpers/encryption.js +234 -0
- package/packages/agentic-jujutsu/index.d.ts +853 -0
- package/packages/agentic-jujutsu/index.js +321 -0
- package/packages/agentic-jujutsu/package-lock.json +1163 -0
- package/packages/agentic-jujutsu/package.json +108 -0
- package/packages/agentic-jujutsu/pkg/bundler/LICENSE +21 -0
- package/packages/agentic-jujutsu/pkg/bundler/README.md +361 -0
- package/packages/agentic-jujutsu/pkg/bundler/agentic_jujutsu.d.ts +554 -0
- package/packages/agentic-jujutsu/pkg/bundler/agentic_jujutsu.js +5 -0
- package/packages/agentic-jujutsu/pkg/bundler/agentic_jujutsu_bg.js +1821 -0
- package/packages/agentic-jujutsu/pkg/bundler/agentic_jujutsu_bg.wasm +0 -0
- package/packages/agentic-jujutsu/pkg/bundler/agentic_jujutsu_bg.wasm.d.ts +113 -0
- package/packages/agentic-jujutsu/pkg/bundler/package.json +34 -0
- package/packages/agentic-jujutsu/pkg/deno/LICENSE +21 -0
- package/packages/agentic-jujutsu/pkg/deno/README.md +361 -0
- package/packages/agentic-jujutsu/pkg/deno/agentic_jujutsu.d.ts +554 -0
- package/packages/agentic-jujutsu/pkg/deno/agentic_jujutsu.js +1802 -0
- package/packages/agentic-jujutsu/pkg/deno/agentic_jujutsu_bg.wasm +0 -0
- package/packages/agentic-jujutsu/pkg/deno/agentic_jujutsu_bg.wasm.d.ts +113 -0
- package/packages/agentic-jujutsu/pkg/node/LICENSE +21 -0
- package/packages/agentic-jujutsu/pkg/node/README.md +361 -0
- package/packages/agentic-jujutsu/pkg/node/agentic_jujutsu.d.ts +554 -0
- package/packages/agentic-jujutsu/pkg/node/agentic_jujutsu.js +1830 -0
- package/packages/agentic-jujutsu/pkg/node/agentic_jujutsu_bg.wasm +0 -0
- package/packages/agentic-jujutsu/pkg/node/agentic_jujutsu_bg.wasm.d.ts +113 -0
- package/packages/agentic-jujutsu/pkg/node/package.json +28 -0
- package/packages/agentic-jujutsu/pkg/web/LICENSE +21 -0
- package/packages/agentic-jujutsu/pkg/web/README.md +361 -0
- package/packages/agentic-jujutsu/pkg/web/agentic_jujutsu.d.ts +691 -0
- package/packages/agentic-jujutsu/pkg/web/agentic_jujutsu.js +1913 -0
- package/packages/agentic-jujutsu/pkg/web/agentic_jujutsu_bg.wasm +0 -0
- package/packages/agentic-jujutsu/pkg/web/agentic_jujutsu_bg.wasm.d.ts +113 -0
- package/packages/agentic-jujutsu/pkg/web/package.json +32 -0
- package/packages/agentic-jujutsu/quantum-bridge.d.ts +115 -0
- package/packages/agentic-jujutsu/scripts/agentic-flow-integration.js +178 -0
- package/packages/agentic-jujutsu/scripts/analyze-size.sh +23 -0
- package/packages/agentic-jujutsu/scripts/coverage.sh +57 -0
- package/packages/agentic-jujutsu/scripts/docker-test.sh +56 -0
- package/packages/agentic-jujutsu/scripts/final-validation.sh +85 -0
- package/packages/agentic-jujutsu/scripts/install-jj.js +197 -0
- package/packages/agentic-jujutsu/scripts/mcp-server.js +98 -0
- package/packages/agentic-jujutsu/scripts/test-all.sh +68 -0
- package/packages/agentic-jujutsu/scripts/verify-build.sh +32 -0
- package/packages/agentic-jujutsu/scripts/verify-napi-config.sh +122 -0
- package/packages/agentic-jujutsu/scripts/wasm-pack-build.sh +76 -0
- package/packages/agentic-jujutsu/test-agentdb-cli.js +119 -0
- package/packages/agentic-jujutsu/test-agentdb.js +105 -0
- package/packages/agentic-jujutsu/test-failures.js +53 -0
- package/packages/agentic-jujutsu/test-napi.js +40 -0
- package/packages/agentic-jujutsu/test-quick.js +61 -0
- package/packages/agentic-jujutsu/test-repo/test-file.txt +1 -0
- package/packages/agentic-jujutsu/typescript/hooks-integration.ts +370 -0
- package/packages/agentic-jujutsu/typescript/index.d.ts +415 -0
- package/reasoningbank/README.md +217 -0
- package/.claude/agents/testing/validation/production-validator.md +0 -395
- package/.claude/skills/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude/skills/.claude-flow/metrics/performance.json +0 -87
- package/.claude/skills/.claude-flow/metrics/task-metrics.json +0 -10
- package/.claude/skills/skill-builder/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude/skills/skill-builder/.claude-flow/metrics/performance.json +0 -87
- package/.claude/skills/skill-builder/.claude-flow/metrics/task-metrics.json +0 -10
- package/CHANGELOG.md +0 -94
- package/dist/.tsbuildinfo +0 -1
- package/dist/agentdb/benchmarks/comprehensive-benchmark.js +0 -664
- package/dist/agentdb/benchmarks/frontier-benchmark.js +0 -419
- package/dist/agentdb/benchmarks/reflexion-benchmark.js +0 -370
- package/dist/agentdb/cli/agentdb-cli.js +0 -717
- package/dist/agentdb/controllers/CausalMemoryGraph.js +0 -322
- package/dist/agentdb/controllers/CausalRecall.js +0 -281
- package/dist/agentdb/controllers/EmbeddingService.d.ts +0 -37
- package/dist/agentdb/controllers/EmbeddingService.d.ts.map +0 -1
- package/dist/agentdb/controllers/EmbeddingService.js +0 -119
- package/dist/agentdb/controllers/EmbeddingService.js.map +0 -1
- package/dist/agentdb/controllers/ExplainableRecall.js +0 -387
- package/dist/agentdb/controllers/NightlyLearner.js +0 -382
- package/dist/agentdb/controllers/ReflexionMemory.js +0 -239
- package/dist/agentdb/controllers/SkillLibrary.js +0 -276
- package/dist/agentdb/controllers/frontier-index.js +0 -9
- package/dist/agentdb/controllers/index.js +0 -8
- package/dist/agentdb/index.d.ts +0 -26
- package/dist/agentdb/optimizations/BatchOperations.js +0 -198
- package/dist/agentdb/optimizations/QueryOptimizer.js +0 -225
- package/dist/agentdb/optimizations/index.js +0 -7
- package/dist/agentdb/tests/frontier-features.test.js +0 -665
- package/dist/agents/claudeAgent.d.ts +0 -6
- package/dist/agents/claudeAgentDirect.d.ts +0 -6
- package/dist/agents/claudeFlowAgent.d.ts +0 -32
- package/dist/agents/codeReviewAgent.d.ts +0 -4
- package/dist/agents/dataAgent.d.ts +0 -4
- package/dist/agents/directApiAgent.d.ts +0 -10
- package/dist/agents/webResearchAgent.d.ts +0 -4
- package/dist/billing/cli.d.ts +0 -29
- package/dist/billing/coupons/manager.d.ts +0 -43
- package/dist/billing/index.d.ts +0 -100
- package/dist/billing/mcp/tools.d.ts +0 -39
- package/dist/billing/mcp/tools.d.ts.map +0 -1
- package/dist/billing/mcp/tools.js +0 -240
- package/dist/billing/mcp/tools.js.map +0 -1
- package/dist/billing/metering/engine.d.ts +0 -58
- package/dist/billing/payments/processor.d.ts +0 -68
- package/dist/billing/pricing/tiers.d.ts +0 -20
- package/dist/billing/storage/adapters.d.ts +0 -90
- package/dist/billing/subscriptions/manager.d.ts +0 -57
- package/dist/billing/types.d.ts +0 -255
- package/dist/cli/agent-manager.d.ts +0 -57
- package/dist/cli/claude-code-wrapper.d.ts +0 -21
- package/dist/cli/commands/hooks.d.ts +0 -18
- package/dist/cli/commands/hooks.d.ts.map +0 -1
- package/dist/cli/commands/hooks.js +0 -750
- package/dist/cli/commands/hooks.js.map +0 -1
- package/dist/cli/commands/sona-train.d.ts +0 -8
- package/dist/cli/commands/sona.d.ts +0 -10
- package/dist/cli/config-wizard.d.ts +0 -21
- package/dist/cli/federation-cli.d.ts +0 -54
- package/dist/cli/mcp-manager.d.ts +0 -12
- package/dist/cli/mcp.d.ts +0 -11
- package/dist/cli/skills-manager.js +0 -1297
- package/dist/cli/update-message.js +0 -175
- package/dist/cli-proxy.d.ts +0 -7
- package/dist/cli-proxy.js +0 -1200
- package/dist/cli-proxy.js.map +0 -1
- package/dist/cli-standalone-proxy.d.ts +0 -17
- package/dist/config/claudeFlow.d.ts +0 -33
- package/dist/config/quic.d.ts +0 -58
- package/dist/config/tools.d.ts +0 -17
- package/dist/coordination/attention-coordinator.d.ts +0 -182
- package/dist/coordination/attention-coordinator.d.ts.map +0 -1
- package/dist/coordination/attention-coordinator.js +0 -361
- package/dist/coordination/attention-coordinator.js.map +0 -1
- package/dist/coordination/index.d.ts +0 -6
- package/dist/coordination/index.d.ts.map +0 -1
- package/dist/coordination/index.js +0 -5
- package/dist/coordination/index.js.map +0 -1
- package/dist/core/agentdb-fast.d.ts +0 -139
- package/dist/core/agentdb-fast.js +0 -308
- package/dist/core/agentdb-fast.js.map +0 -1
- package/dist/core/agentdb-wrapper-enhanced.d.ts +0 -240
- package/dist/core/agentdb-wrapper-enhanced.d.ts.map +0 -1
- package/dist/core/agentdb-wrapper-enhanced.js +0 -732
- package/dist/core/agentdb-wrapper-enhanced.js.map +0 -1
- package/dist/core/agentdb-wrapper.d.ts +0 -148
- package/dist/core/attention-fallbacks.d.ts +0 -111
- package/dist/core/attention-native.d.ts +0 -112
- package/dist/core/attention-native.d.ts.map +0 -1
- package/dist/core/attention-native.js +0 -273
- package/dist/core/attention-native.js.map +0 -1
- package/dist/core/embedding-service.d.ts +0 -117
- package/dist/core/gnn-wrapper.d.ts +0 -71
- package/dist/core/index.d.ts +0 -50
- package/dist/core/long-running-agent.d.ts +0 -92
- package/dist/core/provider-manager.d.ts +0 -145
- package/dist/examples/multi-agent-orchestration.d.ts +0 -3
- package/dist/examples/use-goal-planner.d.ts +0 -3
- package/dist/examples/use-provider-fallback.d.ts +0 -13
- package/dist/federation/EphemeralAgent.d.ts +0 -84
- package/dist/federation/FederationHub.d.ts +0 -89
- package/dist/federation/FederationHubClient.d.ts +0 -70
- package/dist/federation/FederationHubServer.d.ts +0 -100
- package/dist/federation/SecurityManager.d.ts +0 -80
- package/dist/federation/debug/agent-debug-stream.d.ts +0 -171
- package/dist/federation/debug/debug-stream.d.ts +0 -157
- package/dist/federation/index.d.ts +0 -13
- package/dist/federation/integrations/realtime-federation.d.ts +0 -144
- package/dist/federation/integrations/supabase-adapter-debug.d.ts +0 -91
- package/dist/federation/integrations/supabase-adapter-debug.js +0 -401
- package/dist/federation/integrations/supabase-adapter-debug.js.map +0 -1
- package/dist/federation/integrations/supabase-adapter.d.ts +0 -89
- package/dist/health.d.ts +0 -28
- package/dist/hooks/parallel-validation.d.ts +0 -51
- package/dist/hooks/swarm-learning-optimizer.d.ts +0 -89
- package/dist/index.d.ts +0 -4
- package/dist/intelligence/RuVectorIntelligence.d.ts +0 -362
- package/dist/intelligence/RuVectorIntelligence.d.ts.map +0 -1
- package/dist/intelligence/RuVectorIntelligence.js +0 -852
- package/dist/intelligence/RuVectorIntelligence.js.map +0 -1
- package/dist/intelligence/index.d.ts +0 -14
- package/dist/intelligence/index.d.ts.map +0 -1
- package/dist/intelligence/index.js +0 -14
- package/dist/intelligence/index.js.map +0 -1
- package/dist/llm/RuvLLMOrchestrator.d.ts +0 -184
- package/dist/llm/index.d.ts +0 -9
- package/dist/mcp/claudeFlowSdkServer.d.ts +0 -6
- package/dist/mcp/claudeFlowSdkServer.d.ts.map +0 -1
- package/dist/mcp/claudeFlowSdkServer.js +0 -377
- package/dist/mcp/claudeFlowSdkServer.js.map +0 -1
- package/dist/mcp/fastmcp/servers/claude-flow-sdk.d.ts +0 -3
- package/dist/mcp/fastmcp/servers/hooks-server.d.ts +0 -15
- package/dist/mcp/fastmcp/servers/http-sse.d.ts +0 -3
- package/dist/mcp/fastmcp/servers/http-streaming-updated.d.ts +0 -3
- package/dist/mcp/fastmcp/servers/poc-stdio.d.ts +0 -3
- package/dist/mcp/fastmcp/servers/stdio-full.d.ts +0 -3
- package/dist/mcp/fastmcp/tools/agent/add-agent.d.ts +0 -3
- package/dist/mcp/fastmcp/tools/agent/add-command.d.ts +0 -3
- package/dist/mcp/fastmcp/tools/agent/execute.d.ts +0 -3
- package/dist/mcp/fastmcp/tools/agent/list.d.ts +0 -3
- package/dist/mcp/fastmcp/tools/agent/parallel.d.ts +0 -3
- package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts +0 -20
- package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts +0 -7
- package/dist/mcp/fastmcp/tools/hooks/explain.d.ts +0 -6
- package/dist/mcp/fastmcp/tools/hooks/index.d.ts +0 -28
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts +0 -91
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts.map +0 -1
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +0 -269
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +0 -1
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts +0 -58
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts.map +0 -1
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js +0 -416
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js.map +0 -1
- package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts +0 -6
- package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts +0 -7
- package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts +0 -12
- package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts +0 -7
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts +0 -14
- package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts +0 -7
- package/dist/mcp/fastmcp/tools/hooks/route.d.ts +0 -12
- package/dist/mcp/fastmcp/tools/hooks/shared.d.ts +0 -46
- package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts +0 -7
- package/dist/mcp/fastmcp/tools/swarm/init.d.ts +0 -3
- package/dist/mcp/fastmcp/tools/swarm/orchestrate.d.ts +0 -3
- package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts +0 -3
- package/dist/mcp/fastmcp/types/index.d.ts +0 -33
- package/dist/mcp/standalone-stdio.d.ts +0 -3
- package/dist/mcp/tools/agent-booster-tools.d.ts +0 -77
- package/dist/mcp/tools/agent-booster-tools.d.ts.map +0 -1
- package/dist/mcp/tools/agent-booster-tools.js.map +0 -1
- package/dist/mcp/tools/sona-tools.d.ts +0 -155
- package/dist/mcp/tools/sona-tools.d.ts.map +0 -1
- package/dist/mcp/tools/sona-tools.js +0 -572
- package/dist/mcp/tools/sona-tools.js.map +0 -1
- package/dist/memory/SharedMemoryPool.d.ts +0 -129
- package/dist/memory/SharedMemoryPool.d.ts.map +0 -1
- package/dist/memory/SharedMemoryPool.js +0 -243
- package/dist/memory/SharedMemoryPool.js.map +0 -1
- package/dist/memory/index.d.ts +0 -8
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/index.js +0 -7
- package/dist/memory/index.js.map +0 -1
- package/dist/middleware/auth.middleware.d.ts +0 -114
- package/dist/middleware/auth.middleware.d.ts.map +0 -1
- package/dist/middleware/auth.middleware.js +0 -222
- package/dist/middleware/auth.middleware.js.map +0 -1
- package/dist/optimizations/agent-booster-migration.d.ts +0 -116
- package/dist/optimizations/agent-booster-migration.d.ts.map +0 -1
- package/dist/optimizations/agent-booster-migration.js.map +0 -1
- package/dist/optimizations/configuration-tuning.d.ts +0 -158
- package/dist/optimizations/ruvector-backend.d.ts +0 -178
- package/dist/proxy/adaptive-proxy.d.ts +0 -51
- package/dist/proxy/anthropic-to-gemini.d.ts +0 -20
- package/dist/proxy/anthropic-to-gemini.d.ts.map +0 -1
- package/dist/proxy/anthropic-to-gemini.js.map +0 -1
- package/dist/proxy/anthropic-to-onnx.d.ts +0 -17
- package/dist/proxy/anthropic-to-openrouter.d.ts +0 -28
- package/dist/proxy/anthropic-to-openrouter.d.ts.map +0 -1
- package/dist/proxy/anthropic-to-openrouter.js.map +0 -1
- package/dist/proxy/anthropic-to-requesty.d.ts +0 -33
- package/dist/proxy/anthropic-to-requesty.d.ts.map +0 -1
- package/dist/proxy/anthropic-to-requesty.js.map +0 -1
- package/dist/proxy/http2-proxy-optimized.d.ts +0 -63
- package/dist/proxy/http2-proxy.d.ts +0 -43
- package/dist/proxy/http3-proxy-old.js +0 -331
- package/dist/proxy/http3-proxy.d.ts +0 -18
- package/dist/proxy/provider-instructions.d.ts +0 -37
- package/dist/proxy/proxy/anthropic-to-gemini.js +0 -439
- package/dist/proxy/quic-proxy.d.ts +0 -57
- package/dist/proxy/quic-proxy.d.ts.map +0 -1
- package/dist/proxy/quic-proxy.js +0 -229
- package/dist/proxy/quic-proxy.js.map +0 -1
- package/dist/proxy/tool-emulation.d.ts +0 -121
- package/dist/proxy/utils/logger.js +0 -59
- package/dist/proxy/websocket-proxy.d.ts +0 -39
- package/dist/reasoningbank/AdvancedMemory.d.ts +0 -120
- package/dist/reasoningbank/AdvancedMemory.d.ts.map +0 -1
- package/dist/reasoningbank/AdvancedMemory.js +0 -251
- package/dist/reasoningbank/AdvancedMemory.js.map +0 -1
- package/dist/reasoningbank/HybridBackend.d.ts +0 -108
- package/dist/reasoningbank/HybridBackend.d.ts.map +0 -1
- package/dist/reasoningbank/HybridBackend.js +0 -350
- package/dist/reasoningbank/HybridBackend.js.map +0 -1
- package/dist/reasoningbank/agentdb-adapter.js +0 -125
- package/dist/reasoningbank/backend-selector.d.ts +0 -79
- package/dist/reasoningbank/backend-selector.d.ts.map +0 -1
- package/dist/reasoningbank/backend-selector.js.map +0 -1
- package/dist/reasoningbank/benchmark.d.ts +0 -14
- package/dist/reasoningbank/config/reasoningbank-types.d.ts +0 -57
- package/dist/reasoningbank/config/reasoningbank-types.ts +0 -57
- package/dist/reasoningbank/core/consolidate.d.ts +0 -21
- package/dist/reasoningbank/core/database.js +0 -250
- package/dist/reasoningbank/core/distill.d.ts +0 -22
- package/dist/reasoningbank/core/judge.d.ts +0 -17
- package/dist/reasoningbank/core/matts.d.ts +0 -46
- package/dist/reasoningbank/core/memory-engine.js +0 -335
- package/dist/reasoningbank/core/retrieve.d.ts +0 -35
- package/dist/reasoningbank/db/queries.d.ts +0 -88
- package/dist/reasoningbank/db/schema.d.ts +0 -81
- package/dist/reasoningbank/demo-comparison.d.ts +0 -10
- package/dist/reasoningbank/hooks/post-task.d.ts +0 -9
- package/dist/reasoningbank/hooks/pre-task.d.ts +0 -9
- package/dist/reasoningbank/index-new.d.ts +0 -43
- package/dist/reasoningbank/index-new.d.ts.map +0 -1
- package/dist/reasoningbank/index-new.js +0 -90
- package/dist/reasoningbank/index-new.js.map +0 -1
- package/dist/reasoningbank/index.d.ts +0 -45
- package/dist/reasoningbank/index.d.ts.map +0 -1
- package/dist/reasoningbank/index.js +0 -93
- package/dist/reasoningbank/index.js.map +0 -1
- package/dist/reasoningbank/test-integration.d.ts +0 -7
- package/dist/reasoningbank/test-retrieval.d.ts +0 -6
- package/dist/reasoningbank/test-validation.d.ts +0 -7
- package/dist/reasoningbank/types/index.d.ts +0 -123
- package/dist/reasoningbank/utils/config.d.ts +0 -61
- package/dist/reasoningbank/utils/embeddings.d.ts +0 -21
- package/dist/reasoningbank/utils/mmr.d.ts +0 -23
- package/dist/reasoningbank/utils/pii-scrubber.d.ts +0 -46
- package/dist/reasoningbank/wasm-adapter.d.ts +0 -104
- package/dist/router/model-mapping.d.ts +0 -31
- package/dist/router/providers/anthropic.d.ts +0 -17
- package/dist/router/providers/gemini.d.ts +0 -17
- package/dist/router/providers/onnx-local-optimized.d.ts +0 -71
- package/dist/router/providers/onnx-local.d.ts +0 -75
- package/dist/router/providers/onnx-local.d.ts.map +0 -1
- package/dist/router/providers/onnx-local.js +0 -297
- package/dist/router/providers/onnx-local.js.map +0 -1
- package/dist/router/providers/onnx-phi4.d.ts +0 -64
- package/dist/router/providers/onnx.d.ts +0 -65
- package/dist/router/providers/openrouter.d.ts +0 -21
- package/dist/router/router.d.ts +0 -26
- package/dist/router/test-integration.d.ts +0 -13
- package/dist/router/test-onnx-benchmark.d.ts +0 -7
- package/dist/router/test-onnx-integration.d.ts +0 -8
- package/dist/router/test-onnx-local.d.ts +0 -6
- package/dist/router/test-onnx.d.ts +0 -7
- package/dist/router/test-openrouter.d.ts +0 -3
- package/dist/router/test-phi4.d.ts +0 -6
- package/dist/router/types.d.ts +0 -209
- package/dist/routing/CircuitBreakerRouter.d.ts +0 -187
- package/dist/routing/SemanticRouter.d.ts +0 -164
- package/dist/routing/index.d.ts +0 -12
- package/dist/services/embedding-service.d.ts +0 -117
- package/dist/services/embedding-service.d.ts.map +0 -1
- package/dist/services/embedding-service.js +0 -370
- package/dist/services/embedding-service.js.map +0 -1
- package/dist/services/sona-agent-training.d.ts +0 -149
- package/dist/services/sona-agent-training.js +0 -382
- package/dist/services/sona-agent-training.js.map +0 -1
- package/dist/services/sona-agentdb-integration.d.ts +0 -136
- package/dist/services/sona-agentdb-integration.d.ts.map +0 -1
- package/dist/services/sona-agentdb-integration.js +0 -351
- package/dist/services/sona-agentdb-integration.js.map +0 -1
- package/dist/services/sona-service.d.ts +0 -191
- package/dist/services/sona-service.d.ts.map +0 -1
- package/dist/services/sona-service.js +0 -450
- package/dist/services/sona-service.js.map +0 -1
- package/dist/services/sona-types.d.ts +0 -119
- package/dist/swarm/index.d.ts +0 -51
- package/dist/swarm/quic-coordinator.d.ts +0 -149
- package/dist/swarm/transport-router.d.ts +0 -124
- package/dist/transport/index.d.ts +0 -2
- package/dist/transport/quic-handshake.d.ts +0 -66
- package/dist/transport/quic.d.ts +0 -184
- package/dist/types/agentdb.d.ts +0 -304
- package/dist/utils/adaptive-pool-sizing.js +0 -414
- package/dist/utils/agentBoosterPreprocessor.d.ts +0 -72
- package/dist/utils/agentLoader.d.ts +0 -22
- package/dist/utils/agentdb-runtime-patch.d.ts +0 -28
- package/dist/utils/agentdbCommands.js +0 -175
- package/dist/utils/audit-logger.d.ts +0 -115
- package/dist/utils/auth.d.ts +0 -13
- package/dist/utils/circular-rate-limiter.js +0 -391
- package/dist/utils/cli.d.ts +0 -31
- package/dist/utils/cli.d.ts.map +0 -1
- package/dist/utils/cli.js +0 -349
- package/dist/utils/cli.js.map +0 -1
- package/dist/utils/compression-middleware.d.ts +0 -55
- package/dist/utils/connection-pool.d.ts +0 -30
- package/dist/utils/dynamic-compression.js +0 -298
- package/dist/utils/http2-multiplexing.js +0 -319
- package/dist/utils/input-validator.d.ts +0 -116
- package/dist/utils/lazy-auth.js +0 -311
- package/dist/utils/logger.d.ts +0 -19
- package/dist/utils/math.d.ts +0 -12
- package/dist/utils/mcpCommands.d.ts +0 -2
- package/dist/utils/model-downloader.d.ts +0 -63
- package/dist/utils/modelCapabilities.d.ts +0 -30
- package/dist/utils/modelOptimizer.d.ts +0 -207
- package/dist/utils/rate-limiter.d.ts +0 -17
- package/dist/utils/rate-limiter.js +0 -49
- package/dist/utils/rate-limiter.js.map +0 -1
- package/dist/utils/reasoningbankCommands.d.ts +0 -6
- package/dist/utils/response-cache.d.ts +0 -94
- package/dist/utils/retry.d.ts +0 -9
- package/dist/utils/server-push.js +0 -251
- package/dist/utils/streaming-optimizer.d.ts +0 -37
- package/dist/utils/zero-copy-buffer.js +0 -286
- package/docs/.claude-flow/metrics/agent-metrics.json +0 -1
- package/docs/.claude-flow/metrics/performance.json +0 -87
- package/docs/.claude-flow/metrics/task-metrics.json +0 -10
- package/docs/validation/README.md +0 -20
- package/docs/validation/reports/REGRESSION-TEST-V1.8.11.md +0 -456
- package/scripts/postinstall.js +0 -166
- package/validation/docker/Dockerfile.reasoningbank-local +0 -24
- package/validation/docker/Dockerfile.reasoningbank-test +0 -21
- package/validation/docker/README.md +0 -234
- package/validation/docker/docker-compose.yml +0 -29
- package/validation/docker/test-reasoningbank-npx.mjs +0 -442
- package/validation/docker-e2e-validation.sh +0 -212
- package/validation/docker-npm-validation.sh +0 -170
- package/validation/docker-quic-test.sh +0 -42
- package/validation/docker-quic-validation.sh +0 -60
- package/validation/quic-deep-validation.ts +0 -304
- package/validation/quick-wins/test-logging.ts +0 -7
- package/validation/quick-wins/test-retry.ts +0 -7
- package/validation/simple-npm-validation.sh +0 -131
- package/validation/test-gemini-exclusiveMinimum-fix.ts +0 -142
- package/validation/test-gemini-models.ts +0 -200
- package/validation/test-provider-fallback.ts +0 -285
- package/validation/test-quic-integration.ts +0 -243
- package/validation/test-quic-wasm.ts +0 -94
- package/validation/test-regression.mjs +0 -246
- package/validation/test-wasm-e2e.ts +0 -354
- package/validation/test-wasm-integration.ts +0 -99
- package/validation/validate-v1.10.0-docker.sh +0 -296
- package/wasm/quic/agentic_flow_quic.d.ts +0 -37
- package/wasm/quic/agentic_flow_quic_bg.wasm.d.ts +0 -19
- package/wasm/reasoningbank/reasoningbank_wasm.d.ts +0 -41
- package/wasm/reasoningbank/reasoningbank_wasm_bg.js +0 -555
- package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
- package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm.d.ts +0 -20
- /package/{.claude → agentic-flow/.claude}/agents/MIGRATION_SUMMARY.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/analysis/code-analyzer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/analysis/code-review/analyze-code-quality.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/architecture/system-design/arch-system-design.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/base-template-generator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/consensus/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/consensus/byzantine-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/consensus/crdt-synchronizer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/consensus/gossip-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/consensus/performance-benchmarker.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/consensus/quorum-manager.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/consensus/raft-manager.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/consensus/security-manager.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/core/coder.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/core/planner.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/core/researcher.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/core/reviewer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/core/tester.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/custom/test-long-runner.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/data/ml/data-ml-model.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/development/backend/dev-backend-api.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/devops/ci-cd/ops-cicd-github.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/documentation/api-docs/docs-api-openapi.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/flow-nexus/app-store.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/flow-nexus/authentication.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/flow-nexus/challenges.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/flow-nexus/neural-network.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/flow-nexus/payments.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/flow-nexus/sandbox.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/flow-nexus/swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/flow-nexus/user-tools.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/flow-nexus/workflow.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/code-review-swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/github-modes.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/issue-tracker.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/multi-repo-swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/pr-manager.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/project-board-sync.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/release-manager.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/release-swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/repo-architect.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/swarm-issue.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/swarm-pr.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/sync-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/github/workflow-automation.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/goal/agent.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/goal/goal-planner.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/optimization/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/optimization/benchmark-suite.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/optimization/load-balancer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/optimization/performance-monitor.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/optimization/resource-allocator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/optimization/topology-optimizer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/payments/agentic-payments.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/sona/sona-learning-optimizer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/sparc/architecture.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/sparc/pseudocode.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/sparc/refinement.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/sparc/specification.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/specialized/mobile/spec-mobile-react-native.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/sublinear/consensus-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/sublinear/matrix-optimizer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/sublinear/pagerank-analyzer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/sublinear/performance-optimizer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/sublinear/trading-predictor.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/swarm/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/swarm/adaptive-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/swarm/hierarchical-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/swarm/mesh-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/templates/automation-smart-agent.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/templates/coordinator-swarm-init.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/templates/github-pr-manager.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/templates/implementer-sparc-coder.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/templates/memory-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/templates/migration-plan.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/templates/orchestrator-task.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/templates/performance-analyzer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/templates/sparc-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/test-neural.md +0 -0
- /package/{.claude → agentic-flow/.claude}/agents/testing/unit/tdd-london-swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/answer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/agents/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/agents/agent-capabilities.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/agents/agent-coordination.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/agents/agent-spawning.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/agents/agent-types.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/analysis/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/analysis/bottleneck-detect.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/analysis/performance-bottlenecks.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/analysis/performance-report.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/analysis/token-efficiency.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/analysis/token-usage.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/automation/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/automation/auto-agent.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/automation/self-healing.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/automation/session-memory.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/automation/smart-agents.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/automation/smart-spawn.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/automation/workflow-select.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/claude-flow-help.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/claude-flow-memory.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/claude-flow-swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/flow-nexus/app-store.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/flow-nexus/challenges.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/flow-nexus/login-registration.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/flow-nexus/neural-network.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/flow-nexus/payments.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/flow-nexus/sandbox.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/flow-nexus/swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/flow-nexus/user-tools.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/flow-nexus/workflow.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/code-review-swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/code-review.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/github-modes.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/github-swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/issue-tracker.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/issue-triage.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/multi-repo-swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/pr-enhance.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/pr-manager.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/project-board-sync.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/release-manager.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/release-swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/repo-analyze.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/repo-architect.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/swarm-issue.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/swarm-pr.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/sync-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/github/workflow-automation.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind-consensus.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind-init.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind-memory.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind-metrics.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind-resume.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind-sessions.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind-spawn.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind-status.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind-stop.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind-wizard.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hive-mind/hive-mind.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hooks/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hooks/overview.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hooks/post-edit.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hooks/post-task.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hooks/pre-edit.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hooks/pre-task.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hooks/session-end.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/hooks/setup.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/monitoring/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/monitoring/agent-metrics.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/monitoring/agents.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/monitoring/real-time-view.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/monitoring/status.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/monitoring/swarm-monitor.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/optimization/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/optimization/auto-topology.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/optimization/cache-manage.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/optimization/parallel-execute.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/optimization/parallel-execution.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/optimization/topology-optimize.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/pair/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/pair/commands.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/pair/config.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/pair/examples.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/pair/modes.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/pair/session.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/pair/start.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/analyzer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/architect.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/ask.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/batch-executor.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/code.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/coder.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/debug.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/debugger.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/designer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/devops.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/docs-writer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/documenter.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/innovator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/integration.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/mcp.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/memory-manager.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/optimizer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/orchestrator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/post-deployment-monitoring-mode.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/refinement-optimization-mode.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/researcher.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/reviewer.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/security-review.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/sparc-modes.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/sparc.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/spec-pseudocode.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/supabase-admin.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/swarm-coordinator.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/tdd.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/tester.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/tutorial.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc/workflow-manager.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/sparc.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/stream-chain/pipeline.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/stream-chain/run.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/analysis.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/development.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/examples.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/maintenance.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/optimization.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/research.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/swarm-analysis.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/swarm-background.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/swarm-init.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/swarm-modes.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/swarm-monitor.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/swarm-spawn.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/swarm-status.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/swarm-strategies.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/swarm.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/swarm/testing.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/training/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/training/model-update.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/training/neural-patterns.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/training/neural-train.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/training/pattern-learn.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/training/specialization.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/truth/start.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/verify/check.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/verify/start.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/workflows/README.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/workflows/development.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/workflows/research.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/workflows/workflow-create.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/workflows/workflow-execute.md +0 -0
- /package/{.claude → agentic-flow/.claude}/commands/workflows/workflow-export.md +0 -0
- /package/{.claude → agentic-flow/.claude}/helpers/checkpoint-manager.sh +0 -0
- /package/{.claude → agentic-flow/.claude}/helpers/github-safe.js +0 -0
- /package/{.claude → agentic-flow/.claude}/helpers/github-setup.sh +0 -0
- /package/{.claude → agentic-flow/.claude}/helpers/quick-start.sh +0 -0
- /package/{.claude → agentic-flow/.claude}/helpers/setup-mcp.sh +0 -0
- /package/{.claude → agentic-flow/.claude}/helpers/standard-checkpoint-hooks.sh +0 -0
- /package/{.claude → agentic-flow/.claude}/mcp.json +0 -0
- /package/{.claude → agentic-flow/.claude}/openrouter-models-research.md +0 -0
- /package/{.claude → agentic-flow/.claude}/openrouter-quick-reference.md +0 -0
- /package/{.claude → agentic-flow/.claude}/settings-backup.json +0 -0
- /package/{.claude → agentic-flow/.claude}/settings-optimized.json +0 -0
- /package/{.claude → agentic-flow/.claude}/settings-simple.json +0 -0
- /package/{.claude → agentic-flow/.claude}/settings.json +0 -0
- /package/{.claude → agentic-flow/.claude}/settings.local.json +0 -0
- /package/{dist → agentic-flow/dist}/agentdb/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/agentdb/index.js +0 -0
- /package/{dist → agentic-flow/dist}/agentdb/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/agentdb/validate-frontier.cjs +0 -0
- /package/{dist → agentic-flow/dist}/agentdb/validate-frontier.cjs.map +0 -0
- /package/{dist → agentic-flow/dist}/agentdb/validate-frontier.d.cts +0 -0
- /package/{dist → agentic-flow/dist}/agentdb/validate-frontier.d.cts.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/claudeAgent.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/claudeAgent.js +0 -0
- /package/{dist → agentic-flow/dist}/agents/claudeAgent.js.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/claudeAgentDirect.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/claudeAgentDirect.js +0 -0
- /package/{dist → agentic-flow/dist}/agents/claudeAgentDirect.js.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/claudeFlowAgent.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/claudeFlowAgent.js +0 -0
- /package/{dist → agentic-flow/dist}/agents/claudeFlowAgent.js.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/codeReviewAgent.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/codeReviewAgent.js +0 -0
- /package/{dist → agentic-flow/dist}/agents/codeReviewAgent.js.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/dataAgent.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/dataAgent.js +0 -0
- /package/{dist → agentic-flow/dist}/agents/dataAgent.js.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/directApiAgent.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/directApiAgent.js +0 -0
- /package/{dist → agentic-flow/dist}/agents/directApiAgent.js.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/webResearchAgent.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/agents/webResearchAgent.js +0 -0
- /package/{dist → agentic-flow/dist}/agents/webResearchAgent.js.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/cli.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/cli.js.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/coupons/manager.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/coupons/manager.js +0 -0
- /package/{dist → agentic-flow/dist}/billing/coupons/manager.js.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/index.js +0 -0
- /package/{dist → agentic-flow/dist}/billing/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/metering/engine.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/metering/engine.js +0 -0
- /package/{dist → agentic-flow/dist}/billing/metering/engine.js.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/payments/processor.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/payments/processor.js +0 -0
- /package/{dist → agentic-flow/dist}/billing/payments/processor.js.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/pricing/tiers.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/pricing/tiers.js +0 -0
- /package/{dist → agentic-flow/dist}/billing/pricing/tiers.js.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/storage/adapters.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/storage/adapters.js +0 -0
- /package/{dist → agentic-flow/dist}/billing/storage/adapters.js.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/subscriptions/manager.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/subscriptions/manager.js +0 -0
- /package/{dist → agentic-flow/dist}/billing/subscriptions/manager.js.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/types.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/billing/types.js +0 -0
- /package/{dist → agentic-flow/dist}/billing/types.js.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/agent-manager.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/agent-manager.js +0 -0
- /package/{dist → agentic-flow/dist}/cli/agent-manager.js.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/claude-code-wrapper.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/claude-code-wrapper.js +0 -0
- /package/{dist → agentic-flow/dist}/cli/claude-code-wrapper.js.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/commands/sona-train.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/commands/sona-train.js +0 -0
- /package/{dist → agentic-flow/dist}/cli/commands/sona-train.js.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/commands/sona.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/commands/sona.js +0 -0
- /package/{dist → agentic-flow/dist}/cli/commands/sona.js.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/config-wizard.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/config-wizard.js +0 -0
- /package/{dist → agentic-flow/dist}/cli/config-wizard.js.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/federation-cli.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/federation-cli.js +0 -0
- /package/{dist → agentic-flow/dist}/cli/federation-cli.js.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/mcp-manager.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/mcp-manager.js +0 -0
- /package/{dist → agentic-flow/dist}/cli/mcp-manager.js.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/mcp.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/cli/mcp.js +0 -0
- /package/{dist → agentic-flow/dist}/cli/mcp.js.map +0 -0
- /package/{dist → agentic-flow/dist}/cli-proxy.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/cli-standalone-proxy.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/cli-standalone-proxy.js +0 -0
- /package/{dist → agentic-flow/dist}/cli-standalone-proxy.js.map +0 -0
- /package/{dist → agentic-flow/dist}/config/claudeFlow.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/config/claudeFlow.js +0 -0
- /package/{dist → agentic-flow/dist}/config/claudeFlow.js.map +0 -0
- /package/{dist → agentic-flow/dist}/config/quic.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/config/quic.js +0 -0
- /package/{dist → agentic-flow/dist}/config/quic.js.map +0 -0
- /package/{dist → agentic-flow/dist}/config/tools.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/config/tools.js +0 -0
- /package/{dist → agentic-flow/dist}/config/tools.js.map +0 -0
- /package/{dist → agentic-flow/dist}/core/agentdb-fast.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/core/agentdb-wrapper.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/core/agentdb-wrapper.js +0 -0
- /package/{dist → agentic-flow/dist}/core/agentdb-wrapper.js.map +0 -0
- /package/{dist → agentic-flow/dist}/core/attention-fallbacks.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/core/attention-fallbacks.js +0 -0
- /package/{dist → agentic-flow/dist}/core/attention-fallbacks.js.map +0 -0
- /package/{dist → agentic-flow/dist}/core/embedding-service.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/core/embedding-service.js +0 -0
- /package/{dist → agentic-flow/dist}/core/embedding-service.js.map +0 -0
- /package/{dist → agentic-flow/dist}/core/gnn-wrapper.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/core/gnn-wrapper.js +0 -0
- /package/{dist → agentic-flow/dist}/core/gnn-wrapper.js.map +0 -0
- /package/{dist → agentic-flow/dist}/core/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/core/index.js +0 -0
- /package/{dist → agentic-flow/dist}/core/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/core/long-running-agent.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/core/long-running-agent.js +0 -0
- /package/{dist → agentic-flow/dist}/core/long-running-agent.js.map +0 -0
- /package/{dist → agentic-flow/dist}/core/provider-manager.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/core/provider-manager.js +0 -0
- /package/{dist → agentic-flow/dist}/core/provider-manager.js.map +0 -0
- /package/{dist → agentic-flow/dist}/examples/multi-agent-orchestration.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/examples/multi-agent-orchestration.js +0 -0
- /package/{dist → agentic-flow/dist}/examples/multi-agent-orchestration.js.map +0 -0
- /package/{dist → agentic-flow/dist}/examples/use-goal-planner.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/examples/use-goal-planner.js +0 -0
- /package/{dist → agentic-flow/dist}/examples/use-goal-planner.js.map +0 -0
- /package/{dist → agentic-flow/dist}/examples/use-provider-fallback.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/examples/use-provider-fallback.js +0 -0
- /package/{dist → agentic-flow/dist}/examples/use-provider-fallback.js.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/EphemeralAgent.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/EphemeralAgent.js +0 -0
- /package/{dist → agentic-flow/dist}/federation/EphemeralAgent.js.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/FederationHub.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/FederationHub.js +0 -0
- /package/{dist → agentic-flow/dist}/federation/FederationHub.js.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/FederationHubClient.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/FederationHubClient.js +0 -0
- /package/{dist → agentic-flow/dist}/federation/FederationHubClient.js.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/FederationHubServer.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/FederationHubServer.js +0 -0
- /package/{dist → agentic-flow/dist}/federation/FederationHubServer.js.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/SecurityManager.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/SecurityManager.js +0 -0
- /package/{dist → agentic-flow/dist}/federation/SecurityManager.js.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/debug/agent-debug-stream.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/debug/agent-debug-stream.js +0 -0
- /package/{dist → agentic-flow/dist}/federation/debug/agent-debug-stream.js.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/debug/debug-stream.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/debug/debug-stream.js +0 -0
- /package/{dist → agentic-flow/dist}/federation/debug/debug-stream.js.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/index.js +0 -0
- /package/{dist → agentic-flow/dist}/federation/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/integrations/realtime-federation.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/integrations/realtime-federation.js +0 -0
- /package/{dist → agentic-flow/dist}/federation/integrations/realtime-federation.js.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/integrations/supabase-adapter-debug.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/integrations/supabase-adapter.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/federation/integrations/supabase-adapter.js +0 -0
- /package/{dist → agentic-flow/dist}/federation/integrations/supabase-adapter.js.map +0 -0
- /package/{dist → agentic-flow/dist}/health.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/health.js +0 -0
- /package/{dist → agentic-flow/dist}/health.js.map +0 -0
- /package/{dist → agentic-flow/dist}/hooks/parallel-validation.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/hooks/parallel-validation.js +0 -0
- /package/{dist → agentic-flow/dist}/hooks/parallel-validation.js.map +0 -0
- /package/{dist → agentic-flow/dist}/hooks/swarm-learning-optimizer.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/hooks/swarm-learning-optimizer.js +0 -0
- /package/{dist → agentic-flow/dist}/hooks/swarm-learning-optimizer.js.map +0 -0
- /package/{dist → agentic-flow/dist}/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/index.js +0 -0
- /package/{dist → agentic-flow/dist}/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/llm/RuvLLMOrchestrator.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/llm/RuvLLMOrchestrator.js +0 -0
- /package/{dist → agentic-flow/dist}/llm/RuvLLMOrchestrator.js.map +0 -0
- /package/{dist → agentic-flow/dist}/llm/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/llm/index.js +0 -0
- /package/{dist → agentic-flow/dist}/llm/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/claude-flow-sdk.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/claude-flow-sdk.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/claude-flow-sdk.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/hooks-server.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/hooks-server.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/hooks-server.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/http-sse.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/http-sse.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/http-sse.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/http-streaming-updated.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/http-streaming-updated.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/http-streaming-updated.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/poc-stdio.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/poc-stdio.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/poc-stdio.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/stdio-full.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/stdio-full.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/servers/stdio-full.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/add-agent.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/add-agent.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/add-agent.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/add-command.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/add-command.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/add-command.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/execute.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/execute.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/execute.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/list.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/list.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/list.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/parallel.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/parallel.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/agent/parallel.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/benchmark.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/benchmark.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/benchmark.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/build-agents.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/build-agents.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/build-agents.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/explain.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/explain.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/explain.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/index.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/metrics.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/metrics.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/metrics.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/post-command.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/post-command.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/post-command.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/post-edit.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/post-edit.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/post-edit.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/pre-command.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/pre-command.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/pre-command.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/pre-edit.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/pre-edit.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/pre-edit.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/pretrain.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/pretrain.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/pretrain.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/route.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/route.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/route.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/shared.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/shared.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/shared.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/transfer.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/transfer.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/hooks/transfer.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/swarm/init.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/swarm/init.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/swarm/init.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/swarm/orchestrate.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/swarm/orchestrate.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/swarm/orchestrate.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/swarm/spawn.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/swarm/spawn.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/tools/swarm/spawn.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/types/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/types/index.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/fastmcp/types/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/standalone-stdio.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/standalone-stdio.js +0 -0
- /package/{dist → agentic-flow/dist}/mcp/standalone-stdio.js.map +0 -0
- /package/{dist → agentic-flow/dist}/mcp/tools/agent-booster-tools.js +0 -0
- /package/{dist → agentic-flow/dist}/optimizations/agent-booster-migration.js +0 -0
- /package/{dist → agentic-flow/dist}/optimizations/configuration-tuning.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/optimizations/configuration-tuning.js +0 -0
- /package/{dist → agentic-flow/dist}/optimizations/configuration-tuning.js.map +0 -0
- /package/{dist → agentic-flow/dist}/optimizations/ruvector-backend.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/optimizations/ruvector-backend.js +0 -0
- /package/{dist → agentic-flow/dist}/optimizations/ruvector-backend.js.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/adaptive-proxy.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/adaptive-proxy.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/adaptive-proxy.js.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/anthropic-to-gemini.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/anthropic-to-onnx.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/anthropic-to-onnx.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/anthropic-to-onnx.js.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/anthropic-to-openrouter.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/anthropic-to-requesty.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/http2-proxy-optimized.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/http2-proxy-optimized.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/http2-proxy-optimized.js.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/http2-proxy.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/http2-proxy.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/http2-proxy.js.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/http3-proxy.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/http3-proxy.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/http3-proxy.js.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/provider-instructions.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/provider-instructions.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/provider-instructions.js.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/tool-emulation.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/tool-emulation.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/tool-emulation.js.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/websocket-proxy.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/proxy/websocket-proxy.js +0 -0
- /package/{dist → agentic-flow/dist}/proxy/websocket-proxy.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/backend-selector.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/benchmark.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/benchmark.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/benchmark.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/config/reasoningbank-types.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/config/reasoningbank-types.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/config/reasoningbank-types.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/config/reasoningbank.yaml +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/consolidate.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/consolidate.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/consolidate.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/distill.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/distill.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/distill.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/judge.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/judge.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/judge.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/matts.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/matts.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/matts.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/retrieve.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/retrieve.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/core/retrieve.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/db/queries.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/db/queries.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/db/queries.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/db/schema.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/db/schema.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/db/schema.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/demo-comparison.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/demo-comparison.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/demo-comparison.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/hooks/post-task.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/hooks/post-task.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/hooks/post-task.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/hooks/pre-task.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/hooks/pre-task.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/hooks/pre-task.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/prompts/distill-failure.json +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/prompts/distill-success.json +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/prompts/judge.json +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/prompts/matts-aggregate.json +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/test-integration.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/test-integration.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/test-integration.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/test-retrieval.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/test-retrieval.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/test-retrieval.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/test-validation.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/test-validation.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/test-validation.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/types/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/types/index.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/types/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/config.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/config.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/config.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/embeddings.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/embeddings.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/embeddings.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/mmr.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/mmr.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/mmr.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/pii-scrubber.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/pii-scrubber.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/utils/pii-scrubber.js.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/wasm-adapter.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/wasm-adapter.js +0 -0
- /package/{dist → agentic-flow/dist}/reasoningbank/wasm-adapter.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/model-mapping.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/model-mapping.js +0 -0
- /package/{dist → agentic-flow/dist}/router/model-mapping.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/anthropic.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/anthropic.js +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/anthropic.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/gemini.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/gemini.js +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/gemini.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/onnx-local-optimized.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/onnx-local-optimized.js +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/onnx-local-optimized.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/onnx-phi4.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/onnx-phi4.js +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/onnx-phi4.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/onnx.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/onnx.js +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/onnx.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/openrouter.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/openrouter.js +0 -0
- /package/{dist → agentic-flow/dist}/router/providers/openrouter.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/router.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/router.js +0 -0
- /package/{dist → agentic-flow/dist}/router/router.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-integration.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-integration.js +0 -0
- /package/{dist → agentic-flow/dist}/router/test-integration.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx-benchmark.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx-benchmark.js +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx-benchmark.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx-integration.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx-integration.js +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx-integration.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx-local.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx-local.js +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx-local.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx.js +0 -0
- /package/{dist → agentic-flow/dist}/router/test-onnx.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-openrouter.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-openrouter.js +0 -0
- /package/{dist → agentic-flow/dist}/router/test-openrouter.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-phi4.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/test-phi4.js +0 -0
- /package/{dist → agentic-flow/dist}/router/test-phi4.js.map +0 -0
- /package/{dist → agentic-flow/dist}/router/types.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/router/types.js +0 -0
- /package/{dist → agentic-flow/dist}/router/types.js.map +0 -0
- /package/{dist → agentic-flow/dist}/routing/CircuitBreakerRouter.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/routing/CircuitBreakerRouter.js +0 -0
- /package/{dist → agentic-flow/dist}/routing/CircuitBreakerRouter.js.map +0 -0
- /package/{dist → agentic-flow/dist}/routing/SemanticRouter.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/routing/SemanticRouter.js +0 -0
- /package/{dist → agentic-flow/dist}/routing/SemanticRouter.js.map +0 -0
- /package/{dist → agentic-flow/dist}/routing/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/routing/index.js +0 -0
- /package/{dist → agentic-flow/dist}/routing/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/services/sona-agent-training.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/services/sona-types.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/services/sona-types.js +0 -0
- /package/{dist → agentic-flow/dist}/services/sona-types.js.map +0 -0
- /package/{dist → agentic-flow/dist}/swarm/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/swarm/index.js +0 -0
- /package/{dist → agentic-flow/dist}/swarm/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/swarm/quic-coordinator.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/swarm/quic-coordinator.js +0 -0
- /package/{dist → agentic-flow/dist}/swarm/quic-coordinator.js.map +0 -0
- /package/{dist → agentic-flow/dist}/swarm/transport-router.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/swarm/transport-router.js +0 -0
- /package/{dist → agentic-flow/dist}/swarm/transport-router.js.map +0 -0
- /package/{dist → agentic-flow/dist}/transport/index.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/transport/index.js +0 -0
- /package/{dist → agentic-flow/dist}/transport/index.js.map +0 -0
- /package/{dist → agentic-flow/dist}/transport/quic-handshake.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/transport/quic-handshake.js +0 -0
- /package/{dist → agentic-flow/dist}/transport/quic-handshake.js.map +0 -0
- /package/{dist → agentic-flow/dist}/transport/quic.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/transport/quic.js +0 -0
- /package/{dist → agentic-flow/dist}/transport/quic.js.map +0 -0
- /package/{dist → agentic-flow/dist}/types/agentdb.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/types/agentdb.js +0 -0
- /package/{dist → agentic-flow/dist}/types/agentdb.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/agentBoosterPreprocessor.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/agentBoosterPreprocessor.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/agentBoosterPreprocessor.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/agentLoader.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/agentLoader.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/agentLoader.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/agentdb-runtime-patch.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/agentdb-runtime-patch.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/agentdb-runtime-patch.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/audit-logger.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/audit-logger.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/audit-logger.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/auth.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/auth.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/auth.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/compression-middleware.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/compression-middleware.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/compression-middleware.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/connection-pool.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/connection-pool.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/connection-pool.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/input-validator.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/input-validator.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/input-validator.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/logger.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/logger.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/logger.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/math.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/math.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/math.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/mcpCommands.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/mcpCommands.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/mcpCommands.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/model-downloader.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/model-downloader.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/model-downloader.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/modelCapabilities.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/modelCapabilities.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/modelCapabilities.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/modelOptimizer.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/modelOptimizer.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/modelOptimizer.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/rate-limiter.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/reasoningbankCommands.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/reasoningbankCommands.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/reasoningbankCommands.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/response-cache.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/response-cache.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/response-cache.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/retry.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/retry.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/retry.js.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/streaming-optimizer.d.ts.map +0 -0
- /package/{dist → agentic-flow/dist}/utils/streaming-optimizer.js +0 -0
- /package/{dist → agentic-flow/dist}/utils/streaming-optimizer.js.map +0 -0
- /package/{docs → agentic-flow/docs}/CLAUDE.md +0 -0
- /package/{docs → agentic-flow/docs}/DOCKER-VERIFICATION.md +0 -0
- /package/{docs → agentic-flow/docs}/ISSUE-55-VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/NPX_AGENTDB_SETUP.md +0 -0
- /package/{docs → agentic-flow/docs}/OPTIMIZATIONS.md +0 -0
- /package/{docs → agentic-flow/docs}/PUBLISH_GUIDE.md +0 -0
- /package/{docs → agentic-flow/docs}/RELEASE-v1.10.0-COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/EXECUTIVE_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/FEDERATION-DATA-LIFECYCLE.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/IMPROVEMENT_PLAN.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/INTEGRATION-STATUS.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/MULTI_MODEL_ROUTER_PLAN.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/PACKAGE_STRUCTURE.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/QUIC-IMPLEMENTATION-SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/QUIC-SWARM-INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/QUICK_WINS.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/README.md +0 -0
- /package/{docs → agentic-flow/docs}/architecture/RESEARCH_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/archive/.agentdb-instructions.md +0 -0
- /package/{docs → agentic-flow/docs}/archive/AGENT-BOOSTER-STATUS.md +0 -0
- /package/{docs → agentic-flow/docs}/archive/CHANGELOG-v1.3.0.md +0 -0
- /package/{docs → agentic-flow/docs}/archive/COMPLETION_REPORT_v1.7.1.md +0 -0
- /package/{docs → agentic-flow/docs}/archive/IMPLEMENTATION_SUMMARY_v1.7.1.md +0 -0
- /package/{docs → agentic-flow/docs}/archive/SUPABASE-INTEGRATION-COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/archive/TESTING_QUICK_START.md +0 -0
- /package/{docs → agentic-flow/docs}/archive/TOOL-EMULATION-INTEGRATION-ISSUE.md +0 -0
- /package/{docs → agentic-flow/docs}/archive/VALIDATION_v1.7.1.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/COMPLETE_VALIDATION_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/DOCKER_MCP_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/DOCKER_OPENROUTER_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/FASTMCP_COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/FASTMCP_INTEGRATION_STATUS.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/FINAL_SDK_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/FINAL_SYSTEM_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/FINAL_VALIDATION_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/FIXES-APPLIED-STATUS.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/FLOW-NEXUS-COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/HOTFIX_1.1.7.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/INTEGRATION_CONFIRMED.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/MCP_CLI_TOOLS_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/MCP_INTEGRATION_SUCCESS.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/MCP_PROXY_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/MODEL_VALIDATION_REPORT.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/ONNX_ENV_VARS.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/ONNX_FINAL_REPORT.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/ONNX_IMPLEMENTATION_COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/ONNX_IMPLEMENTATION_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/ONNX_INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/ONNX_OPTIMIZATION_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/ONNX_PHI4_RESEARCH.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/ONNX_RUNTIME_INTEGRATION_PLAN.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/ONNX_SUCCESS_REPORT.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/ONNX_VS_CLAUDE_QUALITY.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/OPENROUTER-FIX-VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/OPENROUTER-SUCCESS-REPORT.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/OPENROUTER_ISSUES_AND_FIXES.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/OPENROUTER_PROXY_COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/OPENROUTER_VALIDATION_COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/OPTIMIZATION_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/PACKAGE-COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/PHI4_HYPEROPTIMIZATION_PLAN.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/PROVIDER_INSTRUCTION_OPTIMIZATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/PROXY_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/README.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/README_SDK_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/README_V1.1.11.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/RELEASE-NOTES-v1.1.13.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/RELEASE-SUMMARY-v1.1.14-beta.1.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/RESEARCH_COMPLETE.txt +0 -0
- /package/{docs → agentic-flow/docs}/archived/ROUTER_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/SDK-SETUP-COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/SDK_INTEGRATION_COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/TOOL_INSTRUCTION_ENHANCEMENT.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/V1.1.10_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/V1.1.11_COMPLETE_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/V1.1.11_MCP_PROXY_FIX.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/V1.1.14-BETA-READY.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/VALIDATION-RESULTS.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/VALIDATION_COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/VALIDATION_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/claude-flow-integration.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/docker-cli-validation.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/docker-memory-coordination-status.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/mcp-validation-summary.md +0 -0
- /package/{docs → agentic-flow/docs}/archived/quick-wins-validation.md +0 -0
- /package/{docs → agentic-flow/docs}/benchmarks/optimization-guide.md +0 -0
- /package/{docs → agentic-flow/docs}/benchmarks/quic-results.md +0 -0
- /package/{docs → agentic-flow/docs}/docker-tests/TEST-V1.7.8.Dockerfile +0 -0
- /package/{docs → agentic-flow/docs}/docker-tests/TEST-V1.7.9-NODE20.Dockerfile +0 -0
- /package/{docs → agentic-flow/docs}/docker-tests/TEST-V1.7.9.Dockerfile +0 -0
- /package/{docs → agentic-flow/docs}/federation/AGENT-DEBUG-STREAMING.md +0 -0
- /package/{docs → agentic-flow/docs}/federation/DEBUG-STREAMING-COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/federation/DEBUG-STREAMING.md +0 -0
- /package/{docs → agentic-flow/docs}/federation/DEPLOYMENT-VALIDATION-SUCCESS.md +0 -0
- /package/{docs → agentic-flow/docs}/federation/DOCKER-FEDERATION-DEEP-REVIEW.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/ADDING-MCP-SERVERS-CLI.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/ADDING-MCP-SERVERS.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/AGENT-BOOSTER.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/ALTERNATIVE_LLM_MODELS.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/CLAUDE-CODE-INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/DEPLOYMENT.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/DOCKER_AGENT_USAGE.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/IMPLEMENTATION_EXAMPLES.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/MCP-TOOLS.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/MODEL-ID-MAPPING.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/MULTI-MODEL-ROUTER.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/NPM-PUBLISH.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/ONNX-PROXY-IMPLEMENTATION.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/ONNX_CLI_USAGE.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/ONNX_OPTIMIZATION_GUIDE.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/OPENROUTER_DEPLOYMENT.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/PROXY-ARCHITECTURE-AND-EXTENSION.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/QUIC-SWARM-QUICKSTART.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/QUICK-START-v1.7.1.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/README.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/REASONINGBANK.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/STANDALONE_PROXY_GUIDE.md +0 -0
- /package/{docs → agentic-flow/docs}/guides/agent-sdk.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/AGENT-BOOSTER-INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/CLAUDE-FLOW-INTEGRATION-ANALYSIS.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/CLI-INTEGRATION-COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/IMPLEMENTATION_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/INTEGRATION-COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/INTEGRATION-QUICK-SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/INTEGRATION-STATUS-CORRECTED.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/INTEGRATION_COMPLETE_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/QUIC-WASM-INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/README.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/WASM_ESM_FIX.md +0 -0
- /package/{docs → agentic-flow/docs}/integration-docs/WASM_INTEGRATION_COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/integrations/CLAUDE_AGENTS_INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/integrations/CLAUDE_FLOW_INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/integrations/FASTMCP_CLI_INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/integrations/FLOW-NEXUS-INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/integrations/README.md +0 -0
- /package/{docs → agentic-flow/docs}/integrations/fastmcp-implementation-plan.md +0 -0
- /package/{docs → agentic-flow/docs}/integrations/fastmcp-poc-integration.md +0 -0
- /package/{docs → agentic-flow/docs}/issues/ISSUE-SUPABASE-INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/issues/ISSUE-xenova-transformers-dependency.md +0 -0
- /package/{docs → agentic-flow/docs}/mcp-validation/IMPLEMENTATION-SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/mcp-validation/MCP-CLI-VALIDATION-REPORT.md +0 -0
- /package/{docs → agentic-flow/docs}/mcp-validation/README.md +0 -0
- /package/{docs → agentic-flow/docs}/mcp-validation/strange-loops-test.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/QUIC/BUILD_INSTRUCTIONS.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/QUIC/IMPLEMENTATION_STATUS.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/QUIC/QUIC-INTEGRATION-SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/QUIC/QUIC-INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/QUIC/QUIC-README.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/QUIC/QUIC_IMPLEMENTATION_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/QUIC/README-CONDENSED.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/QUIC/quic-research.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/QUIC/quic-tutorial.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/agent-booster/00-INDEX.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/agent-booster/00-OVERVIEW.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/agent-booster/01-ARCHITECTURE.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/agent-booster/02-INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/agent-booster/03-BENCHMARKS.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/agent-booster/04-NPM-SDK.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/agent-booster/GITHUB-ISSUE.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/agent-booster/README.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/agent-booster-cli-integration.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/requesty/00-overview.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/requesty/01-api-research.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/requesty/02-architecture.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/requesty/03-implementation-phases.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/requesty/04-testing-strategy.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/requesty/05-migration-guide.md +0 -0
- /package/{docs → agentic-flow/docs}/plans/requesty/README.md +0 -0
- /package/{docs → agentic-flow/docs}/providers/LANDING-PAGE-PROVIDER-CONTENT.md +0 -0
- /package/{docs → agentic-flow/docs}/providers/PROVIDER-FALLBACK-GUIDE.md +0 -0
- /package/{docs → agentic-flow/docs}/providers/PROVIDER-FALLBACK-SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/quantum-goap/DEPENDENCY_GRAPH.mermaid +0 -0
- /package/{docs → agentic-flow/docs}/quantum-goap/EXECUTION_SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/quantum-goap/GOAP_IMPLEMENTATION_PLAN.md +0 -0
- /package/{docs → agentic-flow/docs}/quantum-goap/QUICK_START.md +0 -0
- /package/{docs → agentic-flow/docs}/quantum-research/QUANTUM_RESEARCH_LITERATURE_REVIEW.md +0 -0
- /package/{docs → agentic-flow/docs}/quantum-research/README.md +0 -0
- /package/{docs → agentic-flow/docs}/quic/FINAL-VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/quic/IMPLEMENTATION-COMPLETE-SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/quic/PERFORMANCE-VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/quic/QUIC-STATUS-OLD.md +0 -0
- /package/{docs → agentic-flow/docs}/quic/QUIC-STATUS.md +0 -0
- /package/{docs → agentic-flow/docs}/quic/QUIC-VALIDATION-REPORT.md +0 -0
- /package/{docs → agentic-flow/docs}/quic/QUIC_FINAL_STATUS.md +0 -0
- /package/{docs → agentic-flow/docs}/quic/README_QUIC_PHASE1.md +0 -0
- /package/{docs → agentic-flow/docs}/quic/WASM-INTEGRATION-COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/MEMORY_VALIDATION_REPORT.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/README.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONING-AGENTS.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK-BENCHMARK-RESULTS.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK-BENCHMARK.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK-CLI-INTEGRATION.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK-DEMO.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK-VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK_ARCHITECTURE.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK_BACKENDS.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK_FIXES.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK_IMPLEMENTATION_STATUS.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK_INTEGRATION_PLAN.md +0 -0
- /package/{docs → agentic-flow/docs}/reasoningbank/REASONINGBANK_INVESTIGATION.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/GITHUB-ISSUE-ADDENDUM-v1.4.6.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/GITHUB-ISSUE-REASONINGBANK-BENCHMARK.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/GITHUB-ISSUE-v1.4.6.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/GITHUB-ISSUE-v1.5.0.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/HOTFIX-v1.2.1.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/NPM-PUBLISH-GUIDE-v1.2.0.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/PUBLISH-COMPLETE-v1.2.0.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/PUBLISH_CHECKLIST_v1.10.0.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/PUBLISH_SUMMARY_v1.7.1.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/README.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/RELEASE-v1.2.0.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/RELEASE-v1.8.13.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/RELEASE_NOTES_v1.10.0.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/RELEASE_NOTES_v1.7.0.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/RELEASE_v1.7.1.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/v1.4.6-reasoningbank-release.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/v1.4.7-bugfix.md +0 -0
- /package/{docs → agentic-flow/docs}/releases/v1.5.14-QUIC-TRANSPORT.md +0 -0
- /package/{docs → agentic-flow/docs}/reports/QUIC_PHASE1_COMPLETE.md +0 -0
- /package/{docs → agentic-flow/docs}/reports/QUIC_PHASE1_COMPLETION.md +0 -0
- /package/{docs → agentic-flow/docs}/reviews/quic-implementation-review.md +0 -0
- /package/{docs → agentic-flow/docs}/router/README.md +0 -0
- /package/{docs → agentic-flow/docs}/router/ROUTER_CONFIG_REFERENCE.md +0 -0
- /package/{docs → agentic-flow/docs}/router/ROUTER_USER_GUIDE.md +0 -0
- /package/{docs → agentic-flow/docs}/router/TOP20_MODELS_MATRIX.md +0 -0
- /package/{docs → agentic-flow/docs}/supabase/IMPLEMENTATION-SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/supabase/INDEX.md +0 -0
- /package/{docs → agentic-flow/docs}/supabase/QUICKSTART.md +0 -0
- /package/{docs → agentic-flow/docs}/supabase/README.md +0 -0
- /package/{docs → agentic-flow/docs}/supabase/SUPABASE-REALTIME-FEDERATION.md +0 -0
- /package/{docs → agentic-flow/docs}/supabase/TEST-REPORT.md +0 -0
- /package/{docs → agentic-flow/docs}/supabase/migrations/001_create_federation_tables.sql +0 -0
- /package/{docs → agentic-flow/docs}/testing/AGENT-SYSTEM-VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/testing/AGENTDB_TESTING.md +0 -0
- /package/{docs → agentic-flow/docs}/testing/FINAL-TESTING-SUMMARY.md +0 -0
- /package/{docs → agentic-flow/docs}/testing/README.md +0 -0
- /package/{docs → agentic-flow/docs}/testing/REGRESSION-TEST-RESULTS.md +0 -0
- /package/{docs → agentic-flow/docs}/testing/STREAMING-AND-MCP-VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/validation-reports/BENCHMARK_AND_OPTIMIZATION_REPORT.md +0 -0
- /package/{docs → agentic-flow/docs}/validation-reports/DOCKER_VALIDATION_RESULTS.md +0 -0
- /package/{docs → agentic-flow/docs}/validation-reports/NO_REGRESSIONS_CONFIRMED.md +0 -0
- /package/{docs → agentic-flow/docs}/validation-reports/NPM-PACKAGE-ANALYSIS-FINAL.md +0 -0
- /package/{docs → agentic-flow/docs}/validation-reports/README.md +0 -0
- /package/{docs → agentic-flow/docs}/validation-reports/V2.7.0-ALPHA.10_FINAL_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/validation-reports/V2.7.0-ALPHA.9_VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/validation-reports/v1.6.0-QUIC-CLI-VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/validation-reports/v1.6.1-NPM-PUBLISH-VALIDATION.md +0 -0
- /package/{docs → agentic-flow/docs}/version-releases/PUBLICATION_REPORT_v1.5.11.md +0 -0
- /package/{docs → agentic-flow/docs}/version-releases/README.md +0 -0
- /package/{docs → agentic-flow/docs}/version-releases/v1.5.9-DOCKER-VERIFICATION.md +0 -0
- /package/{docs → agentic-flow/docs}/version-releases/v1.5.9-RELEASE-SUMMARY.md +0 -0
- /package/{scripts → agentic-flow/scripts}/build.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/claude +0 -0
- /package/{scripts → agentic-flow/scripts}/claude-code +0 -0
- /package/{scripts → agentic-flow/scripts}/claude-flow +0 -0
- /package/{scripts → agentic-flow/scripts}/claude-flow.bat +0 -0
- /package/{scripts → agentic-flow/scripts}/claude-flow.ps1 +0 -0
- /package/{scripts → agentic-flow/scripts}/run-validation.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/test-agentdb.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/test-all-commands.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/test-claude-flow-sdk.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/test-fastmcp-docker.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/test-fastmcp-poc.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/test-functionality.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/test-onnx-docker.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/test-router-docker.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/validate-mcp-cli-tools.sh +0 -0
- /package/{scripts → agentic-flow/scripts}/validate-providers.sh +0 -0
- /package/{wasm → agentic-flow/wasm}/quic/README.md +0 -0
- /package/{wasm → agentic-flow/wasm}/quic/agentic_flow_quic.js +0 -0
- /package/{wasm → agentic-flow/wasm}/quic/agentic_flow_quic_bg.wasm +0 -0
- /package/{wasm → agentic-flow/wasm}/quic/package.json +0 -0
- /package/{wasm → agentic-flow/wasm}/reasoningbank/package.json +0 -0
- /package/{wasm → agentic-flow/wasm}/reasoningbank/reasoningbank_wasm.js +0 -0
|
@@ -0,0 +1,1787 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P2P Swarm v2 - Production Grade
|
|
3
|
+
*
|
|
4
|
+
* Fixes from code review:
|
|
5
|
+
* 1. Two-layer key scheme (swarm envelope key + per-peer session keys)
|
|
6
|
+
* 2. Ed25519 identity keys + X25519 ephemeral keys
|
|
7
|
+
* 3. Message replay protection (nonces, counters, timestamps)
|
|
8
|
+
* 4. Gun-based WebRTC signaling (no external PeerServer)
|
|
9
|
+
* 5. IPFS CID pointers for large payloads
|
|
10
|
+
* 6. Ed25519 signatures on all messages
|
|
11
|
+
* 7. Relay health monitoring
|
|
12
|
+
* 8. Task execution envelope with budgets
|
|
13
|
+
*/
|
|
14
|
+
import * as crypto from 'crypto';
|
|
15
|
+
import { logger } from '../utils/logger.js';
|
|
16
|
+
//=============================================================================
|
|
17
|
+
// CANONICAL SERIALIZATION
|
|
18
|
+
//=============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Stable canonical JSON stringify
|
|
21
|
+
*
|
|
22
|
+
* Unlike JSON.stringify, this:
|
|
23
|
+
* - Sorts object keys recursively (alphabetically)
|
|
24
|
+
* - Produces identical output regardless of insertion order
|
|
25
|
+
* - Is safe to use for signing and hashing
|
|
26
|
+
*/
|
|
27
|
+
function stableStringify(obj) {
|
|
28
|
+
if (obj === null || obj === undefined) {
|
|
29
|
+
return 'null';
|
|
30
|
+
}
|
|
31
|
+
if (typeof obj === 'boolean' || typeof obj === 'number') {
|
|
32
|
+
return JSON.stringify(obj);
|
|
33
|
+
}
|
|
34
|
+
if (typeof obj === 'string') {
|
|
35
|
+
return JSON.stringify(obj);
|
|
36
|
+
}
|
|
37
|
+
if (Array.isArray(obj)) {
|
|
38
|
+
const items = obj.map(item => stableStringify(item));
|
|
39
|
+
return '[' + items.join(',') + ']';
|
|
40
|
+
}
|
|
41
|
+
if (typeof obj === 'object') {
|
|
42
|
+
const keys = Object.keys(obj).sort();
|
|
43
|
+
const pairs = keys.map(key => {
|
|
44
|
+
const value = obj[key];
|
|
45
|
+
return JSON.stringify(key) + ':' + stableStringify(value);
|
|
46
|
+
});
|
|
47
|
+
return '{' + pairs.join(',') + '}';
|
|
48
|
+
}
|
|
49
|
+
// Fallback for other types
|
|
50
|
+
return JSON.stringify(obj);
|
|
51
|
+
}
|
|
52
|
+
//=============================================================================
|
|
53
|
+
// CRYPTOGRAPHIC PRIMITIVES
|
|
54
|
+
//=============================================================================
|
|
55
|
+
/**
|
|
56
|
+
* Identity and session key management
|
|
57
|
+
*
|
|
58
|
+
* Security fixes applied:
|
|
59
|
+
* - Ed25519 uses crypto.sign(null, ...) - direct sign, not hash-then-sign
|
|
60
|
+
* - Separate send counter (local) from receive counters (per-peer)
|
|
61
|
+
* - Per-sender nonce tracking with timestamps for expiry
|
|
62
|
+
* - X25519 ECDH + HKDF for real session key derivation
|
|
63
|
+
*/
|
|
64
|
+
class IdentityManager {
|
|
65
|
+
identityKey;
|
|
66
|
+
x25519Key;
|
|
67
|
+
peerSessionKeys = new Map();
|
|
68
|
+
// Per-sender nonce tracking: Map<senderId, Map<nonce, timestamp>>
|
|
69
|
+
seenNonces = new Map();
|
|
70
|
+
// Separate send counter from receive counters
|
|
71
|
+
localSendCounter = 0;
|
|
72
|
+
recvCounters = new Map();
|
|
73
|
+
maxNonceAge = 300000; // 5 minutes
|
|
74
|
+
nonceCleanupInterval = null;
|
|
75
|
+
constructor() {
|
|
76
|
+
// Generate Ed25519 identity key pair (for signing)
|
|
77
|
+
this.identityKey = crypto.generateKeyPairSync('ed25519');
|
|
78
|
+
// Generate X25519 key pair (for key exchange)
|
|
79
|
+
this.x25519Key = crypto.generateKeyPairSync('x25519');
|
|
80
|
+
// Start periodic nonce cleanup
|
|
81
|
+
this.startNonceCleanup();
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get public identity key (PEM format for transport)
|
|
85
|
+
*/
|
|
86
|
+
getPublicKey() {
|
|
87
|
+
return this.identityKey.publicKey.export({ type: 'spki', format: 'pem' });
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get X25519 public key for key exchange
|
|
91
|
+
*/
|
|
92
|
+
getX25519PublicKey() {
|
|
93
|
+
return this.x25519Key.publicKey.export({ type: 'spki', format: 'pem' });
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Sign data with Ed25519 identity key
|
|
97
|
+
* Ed25519 uses direct sign (no hash algorithm needed)
|
|
98
|
+
*/
|
|
99
|
+
sign(data) {
|
|
100
|
+
return crypto.sign(null, Buffer.from(data), this.identityKey.privateKey).toString('base64');
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Verify Ed25519 signature from peer
|
|
104
|
+
*/
|
|
105
|
+
verify(data, signature, peerPublicKey) {
|
|
106
|
+
try {
|
|
107
|
+
const pubKey = crypto.createPublicKey({
|
|
108
|
+
key: peerPublicKey,
|
|
109
|
+
format: 'pem',
|
|
110
|
+
type: 'spki',
|
|
111
|
+
});
|
|
112
|
+
return crypto.verify(null, Buffer.from(data), pubKey, Buffer.from(signature, 'base64'));
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Derive session key with peer using real X25519 ECDH + HKDF
|
|
120
|
+
*
|
|
121
|
+
* Salt derivation: sha256(min(pubA, pubB) || max(pubA, pubB))
|
|
122
|
+
* - Stable per pair regardless of who initiates
|
|
123
|
+
* - High entropy from public key material
|
|
124
|
+
*
|
|
125
|
+
* Info: "p2p-swarm-v2:${swarmId}:${peerId}"
|
|
126
|
+
* - Prevents cross-swarm key reuse
|
|
127
|
+
* - Makes derived keys unique per pair and swarm
|
|
128
|
+
*/
|
|
129
|
+
deriveSessionKey(peerX25519PubKey, peerId, swarmId = '') {
|
|
130
|
+
// Check cache
|
|
131
|
+
const cacheKey = `${peerId}:${swarmId}`;
|
|
132
|
+
if (this.peerSessionKeys.has(cacheKey)) {
|
|
133
|
+
return this.peerSessionKeys.get(cacheKey);
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
// Import peer's X25519 public key
|
|
137
|
+
const peerPubKey = crypto.createPublicKey({
|
|
138
|
+
key: peerX25519PubKey,
|
|
139
|
+
format: 'pem',
|
|
140
|
+
type: 'spki',
|
|
141
|
+
});
|
|
142
|
+
// Perform X25519 ECDH
|
|
143
|
+
const sharedSecret = crypto.diffieHellman({
|
|
144
|
+
privateKey: this.x25519Key.privateKey,
|
|
145
|
+
publicKey: peerPubKey,
|
|
146
|
+
});
|
|
147
|
+
// Get raw public keys for salt derivation
|
|
148
|
+
const myX25519Raw = this.x25519Key.publicKey.export({ type: 'spki', format: 'der' });
|
|
149
|
+
const peerX25519Raw = peerPubKey.export({ type: 'spki', format: 'der' });
|
|
150
|
+
// Salt = sha256(min(pubA, pubB) || max(pubA, pubB))
|
|
151
|
+
// Sort to ensure same salt regardless of who initiates
|
|
152
|
+
const [first, second] = Buffer.compare(myX25519Raw, peerX25519Raw) < 0
|
|
153
|
+
? [myX25519Raw, peerX25519Raw]
|
|
154
|
+
: [peerX25519Raw, myX25519Raw];
|
|
155
|
+
const salt = crypto.createHash('sha256')
|
|
156
|
+
.update(first)
|
|
157
|
+
.update(second)
|
|
158
|
+
.digest();
|
|
159
|
+
// Info includes swarmId and peerId for domain separation
|
|
160
|
+
const info = Buffer.from(`p2p-swarm-v2:${swarmId}:${peerId}`);
|
|
161
|
+
// Derive session key using HKDF
|
|
162
|
+
const sessionKey = crypto.hkdfSync('sha256', sharedSecret, // IKM (input key material)
|
|
163
|
+
salt, // Salt (from both parties' public keys)
|
|
164
|
+
info, // Info (context + swarm + peer)
|
|
165
|
+
32 // Key length
|
|
166
|
+
);
|
|
167
|
+
this.peerSessionKeys.set(cacheKey, Buffer.from(sessionKey));
|
|
168
|
+
return Buffer.from(sessionKey);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
// Fallback to hash-based derivation if X25519 fails
|
|
172
|
+
logger.warn('X25519 ECDH failed, using fallback', { peerId, error });
|
|
173
|
+
const fallbackKey = crypto.createHash('sha256')
|
|
174
|
+
.update(swarmId)
|
|
175
|
+
.update(peerId)
|
|
176
|
+
.update(this.getPublicKey())
|
|
177
|
+
.digest();
|
|
178
|
+
this.peerSessionKeys.set(cacheKey, fallbackKey);
|
|
179
|
+
return fallbackKey;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Generate cryptographically secure nonce
|
|
184
|
+
*/
|
|
185
|
+
generateNonce() {
|
|
186
|
+
return crypto.randomBytes(16).toString('hex');
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Check and record nonce with per-sender tracking
|
|
190
|
+
* Returns true if nonce is valid (not replayed, not expired)
|
|
191
|
+
*/
|
|
192
|
+
checkNonce(nonce, timestamp, senderId) {
|
|
193
|
+
const now = Date.now();
|
|
194
|
+
// Reject old messages (outside time window)
|
|
195
|
+
if (now - timestamp > this.maxNonceAge) {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
// Reject future timestamps (with small tolerance for clock skew)
|
|
199
|
+
if (timestamp > now + 60000) { // 1 minute tolerance
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
// Get or create sender's nonce map
|
|
203
|
+
if (!this.seenNonces.has(senderId)) {
|
|
204
|
+
this.seenNonces.set(senderId, new Map());
|
|
205
|
+
}
|
|
206
|
+
const senderNonces = this.seenNonces.get(senderId);
|
|
207
|
+
// Reject replayed nonces from this sender
|
|
208
|
+
if (senderNonces.has(nonce)) {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
// Record nonce with timestamp for expiry
|
|
212
|
+
senderNonces.set(nonce, timestamp);
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Periodic cleanup of expired nonces
|
|
217
|
+
*/
|
|
218
|
+
startNonceCleanup() {
|
|
219
|
+
this.nonceCleanupInterval = setInterval(() => {
|
|
220
|
+
const now = Date.now();
|
|
221
|
+
const senderIds = Array.from(this.seenNonces.keys());
|
|
222
|
+
for (const senderId of senderIds) {
|
|
223
|
+
const nonceMap = this.seenNonces.get(senderId);
|
|
224
|
+
if (!nonceMap)
|
|
225
|
+
continue;
|
|
226
|
+
const nonces = Array.from(nonceMap.entries());
|
|
227
|
+
for (const [nonce, timestamp] of nonces) {
|
|
228
|
+
if (now - timestamp > this.maxNonceAge) {
|
|
229
|
+
nonceMap.delete(nonce);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// Remove empty sender maps
|
|
233
|
+
if (nonceMap.size === 0) {
|
|
234
|
+
this.seenNonces.delete(senderId);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}, 60000); // Cleanup every minute
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Get next send counter (monotonically increasing)
|
|
241
|
+
*/
|
|
242
|
+
getNextSendCounter() {
|
|
243
|
+
return ++this.localSendCounter;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Validate received counter from peer (must be > last seen from that peer)
|
|
247
|
+
*/
|
|
248
|
+
validateRecvCounter(peerId, counter) {
|
|
249
|
+
const lastSeen = this.recvCounters.get(peerId) || 0;
|
|
250
|
+
if (counter <= lastSeen) {
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
this.recvCounters.set(peerId, counter);
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Clear session key (for rotation)
|
|
258
|
+
*/
|
|
259
|
+
rotateSessionKey(peerId) {
|
|
260
|
+
this.peerSessionKeys.delete(peerId);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Clean up resources
|
|
264
|
+
*/
|
|
265
|
+
destroy() {
|
|
266
|
+
if (this.nonceCleanupInterval) {
|
|
267
|
+
clearInterval(this.nonceCleanupInterval);
|
|
268
|
+
this.nonceCleanupInterval = null;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Encryption with proper GCM handling
|
|
274
|
+
*/
|
|
275
|
+
class CryptoV2 {
|
|
276
|
+
algorithm = 'aes-256-gcm';
|
|
277
|
+
encrypt(data, key) {
|
|
278
|
+
const iv = crypto.randomBytes(16);
|
|
279
|
+
const cipher = crypto.createCipheriv(this.algorithm, key, iv);
|
|
280
|
+
let ciphertext = cipher.update(data, 'utf8', 'base64');
|
|
281
|
+
ciphertext += cipher.final('base64');
|
|
282
|
+
return {
|
|
283
|
+
ciphertext,
|
|
284
|
+
iv: iv.toString('base64'),
|
|
285
|
+
tag: cipher.getAuthTag().toString('base64'),
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
decrypt(ciphertext, key, iv, tag) {
|
|
289
|
+
try {
|
|
290
|
+
const decipher = crypto.createDecipheriv(this.algorithm, key, Buffer.from(iv, 'base64'));
|
|
291
|
+
decipher.setAuthTag(Buffer.from(tag, 'base64'));
|
|
292
|
+
let plaintext = decipher.update(ciphertext, 'base64', 'utf8');
|
|
293
|
+
plaintext += decipher.final('utf8');
|
|
294
|
+
return plaintext;
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
hash(data) {
|
|
301
|
+
return crypto.createHash('sha256')
|
|
302
|
+
.update(typeof data === 'string' ? data : data)
|
|
303
|
+
.digest('hex');
|
|
304
|
+
}
|
|
305
|
+
generateCID(data) {
|
|
306
|
+
const hash = this.hash(data);
|
|
307
|
+
return `Qm${hash.slice(0, 44)}`;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
//=============================================================================
|
|
311
|
+
// RELAY MANAGEMENT
|
|
312
|
+
//=============================================================================
|
|
313
|
+
/**
|
|
314
|
+
* Relay health tracker
|
|
315
|
+
*/
|
|
316
|
+
class RelayManager {
|
|
317
|
+
relays = new Map();
|
|
318
|
+
workingRelays = [];
|
|
319
|
+
static BOOTSTRAP_RELAYS = [
|
|
320
|
+
'https://gun-manhattan.herokuapp.com/gun',
|
|
321
|
+
'https://gun-us.herokuapp.com/gun',
|
|
322
|
+
'https://gun-eu.herokuapp.com/gun',
|
|
323
|
+
];
|
|
324
|
+
constructor(customRelays) {
|
|
325
|
+
const relayList = customRelays || RelayManager.BOOTSTRAP_RELAYS;
|
|
326
|
+
for (const url of relayList) {
|
|
327
|
+
this.relays.set(url, {
|
|
328
|
+
url,
|
|
329
|
+
healthy: true, // Assume healthy initially
|
|
330
|
+
lastCheck: 0,
|
|
331
|
+
latencyMs: 0,
|
|
332
|
+
failures: 0,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
this.workingRelays = relayList;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Get working relays
|
|
339
|
+
*/
|
|
340
|
+
getWorkingRelays() {
|
|
341
|
+
return this.workingRelays.filter(url => {
|
|
342
|
+
const relay = this.relays.get(url);
|
|
343
|
+
return relay && relay.healthy;
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Mark relay as failed
|
|
348
|
+
*/
|
|
349
|
+
markFailed(url) {
|
|
350
|
+
const relay = this.relays.get(url);
|
|
351
|
+
if (relay) {
|
|
352
|
+
relay.failures++;
|
|
353
|
+
if (relay.failures >= 3) {
|
|
354
|
+
relay.healthy = false;
|
|
355
|
+
logger.warn('Relay marked unhealthy', { url, failures: relay.failures });
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Mark relay as successful
|
|
361
|
+
*/
|
|
362
|
+
markSuccess(url, latencyMs) {
|
|
363
|
+
const relay = this.relays.get(url);
|
|
364
|
+
if (relay) {
|
|
365
|
+
relay.healthy = true;
|
|
366
|
+
relay.latencyMs = latencyMs;
|
|
367
|
+
relay.failures = 0;
|
|
368
|
+
relay.lastCheck = Date.now();
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Add new relay
|
|
373
|
+
*/
|
|
374
|
+
addRelay(url) {
|
|
375
|
+
if (!this.relays.has(url)) {
|
|
376
|
+
this.relays.set(url, {
|
|
377
|
+
url,
|
|
378
|
+
healthy: true,
|
|
379
|
+
lastCheck: 0,
|
|
380
|
+
latencyMs: 0,
|
|
381
|
+
failures: 0,
|
|
382
|
+
});
|
|
383
|
+
this.workingRelays.push(url);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Get health metrics
|
|
388
|
+
*/
|
|
389
|
+
getMetrics() {
|
|
390
|
+
const healthyRelays = Array.from(this.relays.values()).filter(r => r.healthy);
|
|
391
|
+
const avgLatency = healthyRelays.length > 0
|
|
392
|
+
? healthyRelays.reduce((sum, r) => sum + r.latencyMs, 0) / healthyRelays.length
|
|
393
|
+
: 0;
|
|
394
|
+
return {
|
|
395
|
+
total: this.relays.size,
|
|
396
|
+
healthy: healthyRelays.length,
|
|
397
|
+
avgLatency,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Persist working set
|
|
402
|
+
*/
|
|
403
|
+
exportWorkingSet() {
|
|
404
|
+
return this.getWorkingRelays();
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Import working set
|
|
408
|
+
*/
|
|
409
|
+
importWorkingSet(relays) {
|
|
410
|
+
for (const url of relays) {
|
|
411
|
+
this.addRelay(url);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
//=============================================================================
|
|
416
|
+
// IPFS ARTIFACT STORAGE
|
|
417
|
+
//=============================================================================
|
|
418
|
+
/**
|
|
419
|
+
* IPFS artifact manager (CID-based storage)
|
|
420
|
+
*
|
|
421
|
+
* IMPORTANT CID LIMITATION:
|
|
422
|
+
* The current generateCID creates a simplified hash-based identifier (Qm prefix).
|
|
423
|
+
* This is NOT a real IPFS CID and will NOT interop with:
|
|
424
|
+
* - Real IPFS gateways
|
|
425
|
+
* - Pinning services (Pinata, web3.storage, Filebase)
|
|
426
|
+
* - Content routing
|
|
427
|
+
*
|
|
428
|
+
* For production, you need one of:
|
|
429
|
+
* A) Real IPFS client: add bytes to IPFS node, take returned CID
|
|
430
|
+
* B) Multiformats library: create CIDv1 from raw bytes offline
|
|
431
|
+
*
|
|
432
|
+
* The current implementation works for local coordination and can be
|
|
433
|
+
* upgraded to real IPFS when needed.
|
|
434
|
+
*
|
|
435
|
+
* Gateway fetch is DISABLED by default because our fake CIDs won't work.
|
|
436
|
+
* Enable only when using real multiformats CIDv1 generation.
|
|
437
|
+
*/
|
|
438
|
+
class ArtifactStore {
|
|
439
|
+
localCache = new Map();
|
|
440
|
+
crypto;
|
|
441
|
+
maxCacheSize = 100 * 1024 * 1024; // 100MB
|
|
442
|
+
currentCacheSize = 0;
|
|
443
|
+
maxArtifactSize = 10 * 1024 * 1024; // 10MB max per artifact
|
|
444
|
+
// DISABLED: Gateway fetch only works with real IPFS CIDs
|
|
445
|
+
enableGatewayFetch = false;
|
|
446
|
+
static CHUNK_SIZE = 256 * 1024; // 256KB chunks
|
|
447
|
+
// Public IPFS gateways for fetching (when real CIDs are used)
|
|
448
|
+
static IPFS_GATEWAYS = [
|
|
449
|
+
'https://ipfs.io/ipfs/',
|
|
450
|
+
'https://dweb.link/ipfs/',
|
|
451
|
+
'https://cloudflare-ipfs.com/ipfs/',
|
|
452
|
+
'https://gateway.pinata.cloud/ipfs/',
|
|
453
|
+
];
|
|
454
|
+
constructor(enableGatewayFetch = false) {
|
|
455
|
+
this.crypto = new CryptoV2();
|
|
456
|
+
this.enableGatewayFetch = enableGatewayFetch;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Store artifact and get CID
|
|
460
|
+
*/
|
|
461
|
+
async store(data, compress = true) {
|
|
462
|
+
const buffer = typeof data === 'string' ? Buffer.from(data) : data;
|
|
463
|
+
// Enforce size limit
|
|
464
|
+
if (buffer.length > this.maxArtifactSize) {
|
|
465
|
+
throw new Error(`Artifact exceeds max size: ${buffer.length} > ${this.maxArtifactSize}`);
|
|
466
|
+
}
|
|
467
|
+
// Optional compression (in production: use zstd or lz4)
|
|
468
|
+
const toStore = compress ? buffer : buffer; // Placeholder for compression
|
|
469
|
+
// Generate CID (NOTE: simplified, not real IPFS CID)
|
|
470
|
+
const cid = this.crypto.generateCID(toStore);
|
|
471
|
+
// Store locally
|
|
472
|
+
this.cacheStore(cid, toStore);
|
|
473
|
+
// Calculate chunks
|
|
474
|
+
const chunks = Math.ceil(toStore.length / ArtifactStore.CHUNK_SIZE);
|
|
475
|
+
return {
|
|
476
|
+
cid,
|
|
477
|
+
size: toStore.length,
|
|
478
|
+
chunks,
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Retrieve artifact by CID
|
|
483
|
+
*
|
|
484
|
+
* Strategy:
|
|
485
|
+
* 1. Check local cache
|
|
486
|
+
* 2. If enableGatewayFetch=true AND CID is real (bafy prefix), try gateways
|
|
487
|
+
* 3. Otherwise return null (local-only mode)
|
|
488
|
+
*
|
|
489
|
+
* Gateway fetch is DISABLED by default because our simplified CIDs
|
|
490
|
+
* are not real IPFS CIDs and won't work with gateways.
|
|
491
|
+
*/
|
|
492
|
+
async retrieve(cid) {
|
|
493
|
+
// Check local cache
|
|
494
|
+
if (this.localCache.has(cid)) {
|
|
495
|
+
return this.localCache.get(cid);
|
|
496
|
+
}
|
|
497
|
+
// Gateway fetch disabled - local cache only
|
|
498
|
+
if (!this.enableGatewayFetch) {
|
|
499
|
+
return null;
|
|
500
|
+
}
|
|
501
|
+
// Only attempt gateway fetch for real CIDv1 (bafy prefix)
|
|
502
|
+
// Our fake Qm CIDs will NOT work with gateways
|
|
503
|
+
if (!cid.startsWith('bafy')) {
|
|
504
|
+
logger.debug('Gateway fetch skipped: not a real CIDv1', { cid });
|
|
505
|
+
return null;
|
|
506
|
+
}
|
|
507
|
+
// Try fetching from gateways for real IPFS CIDs
|
|
508
|
+
for (const gateway of ArtifactStore.IPFS_GATEWAYS) {
|
|
509
|
+
try {
|
|
510
|
+
const response = await fetch(`${gateway}${cid}`, {
|
|
511
|
+
signal: AbortSignal.timeout(10000), // 10 second timeout
|
|
512
|
+
});
|
|
513
|
+
if (response.ok) {
|
|
514
|
+
const data = Buffer.from(await response.arrayBuffer());
|
|
515
|
+
// Verify size
|
|
516
|
+
if (data.length > this.maxArtifactSize) {
|
|
517
|
+
logger.warn('Fetched artifact exceeds max size', { cid, size: data.length });
|
|
518
|
+
continue;
|
|
519
|
+
}
|
|
520
|
+
// TODO: Verify CID matches content using multiformats
|
|
521
|
+
// For now, we trust the gateway (risky, but we're gated by real CID requirement)
|
|
522
|
+
// Store in cache and return
|
|
523
|
+
this.cacheStore(cid, data);
|
|
524
|
+
return data;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
catch (error) {
|
|
528
|
+
// Try next gateway
|
|
529
|
+
logger.debug('Gateway fetch failed', { gateway, cid, error });
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
return null;
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Enable gateway fetch (only when using real IPFS CIDs)
|
|
536
|
+
*/
|
|
537
|
+
setEnableGatewayFetch(enable) {
|
|
538
|
+
this.enableGatewayFetch = enable;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Store in local cache with eviction
|
|
542
|
+
*/
|
|
543
|
+
cacheStore(cid, data) {
|
|
544
|
+
// Evict if necessary
|
|
545
|
+
while (this.currentCacheSize + data.length > this.maxCacheSize) {
|
|
546
|
+
const firstKey = this.localCache.keys().next().value;
|
|
547
|
+
if (firstKey) {
|
|
548
|
+
const size = this.localCache.get(firstKey)?.length || 0;
|
|
549
|
+
this.localCache.delete(firstKey);
|
|
550
|
+
this.currentCacheSize -= size;
|
|
551
|
+
}
|
|
552
|
+
else {
|
|
553
|
+
break;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
this.localCache.set(cid, data);
|
|
557
|
+
this.currentCacheSize += data.length;
|
|
558
|
+
}
|
|
559
|
+
/**
|
|
560
|
+
* Create artifact pointer for Gun
|
|
561
|
+
* Uses stableStringify for deterministic signing
|
|
562
|
+
*/
|
|
563
|
+
createPointer(type, agentId, cid, dimensions, identity) {
|
|
564
|
+
const data = this.localCache.get(cid);
|
|
565
|
+
const checksum = data ? this.crypto.hash(data).slice(0, 16) : '';
|
|
566
|
+
const pointer = {
|
|
567
|
+
type,
|
|
568
|
+
agentId,
|
|
569
|
+
cid,
|
|
570
|
+
version: 1,
|
|
571
|
+
schemaHash: this.crypto.hash(type).slice(0, 8),
|
|
572
|
+
dimensions,
|
|
573
|
+
checksum,
|
|
574
|
+
timestamp: Date.now(),
|
|
575
|
+
};
|
|
576
|
+
// Use stableStringify for deterministic signing
|
|
577
|
+
const signature = identity.sign(stableStringify(pointer));
|
|
578
|
+
return { ...pointer, signature };
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
//=============================================================================
|
|
582
|
+
// MAIN P2P SWARM V2
|
|
583
|
+
//=============================================================================
|
|
584
|
+
/**
|
|
585
|
+
* Production-grade P2P Swarm Coordinator
|
|
586
|
+
*/
|
|
587
|
+
export class P2PSwarmV2 {
|
|
588
|
+
identity;
|
|
589
|
+
crypto;
|
|
590
|
+
relayManager;
|
|
591
|
+
artifactStore;
|
|
592
|
+
swarmKey;
|
|
593
|
+
swarmId;
|
|
594
|
+
agentId;
|
|
595
|
+
gun = null;
|
|
596
|
+
swarmNode = null;
|
|
597
|
+
connected = false;
|
|
598
|
+
messageHandlers = new Map();
|
|
599
|
+
pendingOffers = new Map();
|
|
600
|
+
// Member registry: source of truth for identity binding
|
|
601
|
+
// NEVER trust keys from envelopes - always resolve from registry
|
|
602
|
+
memberRegistry = new Map();
|
|
603
|
+
// Heartbeat and task executor state
|
|
604
|
+
heartbeatInterval = null;
|
|
605
|
+
taskExecutorActive = false;
|
|
606
|
+
claimedTasks = new Set();
|
|
607
|
+
HEARTBEAT_INTERVAL_MS = 20000; // 20 seconds
|
|
608
|
+
MEMBER_TIMEOUT_MS = 60000; // 60 seconds without heartbeat = offline
|
|
609
|
+
// Negative cache for failed member lookups (prevents spam)
|
|
610
|
+
negativeMemberCache = new Map();
|
|
611
|
+
NEGATIVE_CACHE_TTL_MS = 30000; // 30 seconds
|
|
612
|
+
// Task claim conflict resolution
|
|
613
|
+
CLAIM_TTL_MS = 45000; // 45 seconds - claims older than this can be overwritten
|
|
614
|
+
constructor(agentId, swarmKey) {
|
|
615
|
+
this.identity = new IdentityManager();
|
|
616
|
+
this.crypto = new CryptoV2();
|
|
617
|
+
this.relayManager = new RelayManager();
|
|
618
|
+
this.artifactStore = new ArtifactStore();
|
|
619
|
+
this.agentId = agentId;
|
|
620
|
+
this.swarmKey = swarmKey
|
|
621
|
+
? Buffer.from(swarmKey, 'base64')
|
|
622
|
+
: crypto.randomBytes(32);
|
|
623
|
+
this.swarmId = this.crypto.hash(this.swarmKey.toString('base64')).slice(0, 16);
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* Connect to Gun relays
|
|
627
|
+
*
|
|
628
|
+
* Starts autonomy features:
|
|
629
|
+
* - Membership watcher (subscribe to members, verify registrations)
|
|
630
|
+
* - Heartbeat publishing (every 20 seconds)
|
|
631
|
+
* - Task executor loop (optional, enable with startTaskExecutor())
|
|
632
|
+
*/
|
|
633
|
+
async connect() {
|
|
634
|
+
try {
|
|
635
|
+
const Gun = (await import('gun')).default;
|
|
636
|
+
const relays = this.relayManager.getWorkingRelays();
|
|
637
|
+
this.gun = Gun(relays);
|
|
638
|
+
this.swarmNode = this.gun.get(`swarm-v2-${this.swarmId}`);
|
|
639
|
+
// Register self
|
|
640
|
+
await this.registerSelf();
|
|
641
|
+
// Subscribe to signaling for WebRTC
|
|
642
|
+
this.subscribeToSignaling();
|
|
643
|
+
// Start membership watcher
|
|
644
|
+
this.startMembershipWatcher();
|
|
645
|
+
// IMPORTANT: Set connected BEFORE heartbeat to ensure first heartbeat publishes
|
|
646
|
+
this.connected = true;
|
|
647
|
+
// Start heartbeat publishing
|
|
648
|
+
this.startHeartbeat();
|
|
649
|
+
logger.info('P2P Swarm V2 connected', {
|
|
650
|
+
swarmId: this.swarmId,
|
|
651
|
+
agentId: this.agentId,
|
|
652
|
+
relays: relays.length,
|
|
653
|
+
});
|
|
654
|
+
return true;
|
|
655
|
+
}
|
|
656
|
+
catch (error) {
|
|
657
|
+
logger.error('Failed to connect', { error });
|
|
658
|
+
return false;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
/**
|
|
662
|
+
* Register self with public key and X25519 key
|
|
663
|
+
* Uses canonical serialization for signature
|
|
664
|
+
* Field order must match verifyMemberRegistration
|
|
665
|
+
*/
|
|
666
|
+
async registerSelf() {
|
|
667
|
+
if (!this.swarmNode)
|
|
668
|
+
return;
|
|
669
|
+
const joinedAt = Date.now();
|
|
670
|
+
const capabilities = ['coordinator', 'executor'];
|
|
671
|
+
// Data to sign (must match verifyMemberRegistration order)
|
|
672
|
+
const dataToSign = {
|
|
673
|
+
agentId: this.agentId,
|
|
674
|
+
capabilities,
|
|
675
|
+
joinedAt,
|
|
676
|
+
publicKey: this.identity.getPublicKey(),
|
|
677
|
+
x25519PublicKey: this.identity.getX25519PublicKey(),
|
|
678
|
+
};
|
|
679
|
+
// Sign using canonical serialization
|
|
680
|
+
const signature = this.identity.sign(stableStringify(dataToSign));
|
|
681
|
+
// Full registration record
|
|
682
|
+
const registration = {
|
|
683
|
+
...dataToSign,
|
|
684
|
+
signature,
|
|
685
|
+
};
|
|
686
|
+
this.swarmNode.get('members').get(this.agentId).put(registration);
|
|
687
|
+
// Add self to local registry
|
|
688
|
+
const now = Date.now();
|
|
689
|
+
this.memberRegistry.set(this.agentId, {
|
|
690
|
+
...dataToSign,
|
|
691
|
+
verified: true, // We trust ourselves
|
|
692
|
+
lastSeen: now,
|
|
693
|
+
});
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* Verified member entry type
|
|
697
|
+
*/
|
|
698
|
+
static MEMBER_REQUIRED_FIELDS = ['agentId', 'publicKey', 'x25519PublicKey', 'capabilities', 'joinedAt', 'signature'];
|
|
699
|
+
/**
|
|
700
|
+
* Verify and cache a member registration from Gun
|
|
701
|
+
* STRICT: Requires all fields including x25519PublicKey
|
|
702
|
+
* Returns the verified member or null if invalid
|
|
703
|
+
*/
|
|
704
|
+
verifyMemberRegistration(registration) {
|
|
705
|
+
// STRICT: Require all fields
|
|
706
|
+
if (!registration)
|
|
707
|
+
return null;
|
|
708
|
+
for (const field of P2PSwarmV2.MEMBER_REQUIRED_FIELDS) {
|
|
709
|
+
if (registration[field] === undefined || registration[field] === null) {
|
|
710
|
+
logger.debug('Member registration missing required field', { field, agentId: registration.agentId });
|
|
711
|
+
return null;
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
// Validate types
|
|
715
|
+
if (typeof registration.agentId !== 'string' || registration.agentId.length === 0)
|
|
716
|
+
return null;
|
|
717
|
+
if (typeof registration.publicKey !== 'string' || registration.publicKey.length === 0)
|
|
718
|
+
return null;
|
|
719
|
+
if (typeof registration.x25519PublicKey !== 'string' || registration.x25519PublicKey.length === 0)
|
|
720
|
+
return null;
|
|
721
|
+
if (!Array.isArray(registration.capabilities))
|
|
722
|
+
return null;
|
|
723
|
+
if (typeof registration.joinedAt !== 'number' || registration.joinedAt <= 0)
|
|
724
|
+
return null;
|
|
725
|
+
// Reconstruct the signed data (must match registration order)
|
|
726
|
+
const dataToVerify = {
|
|
727
|
+
agentId: registration.agentId,
|
|
728
|
+
capabilities: registration.capabilities,
|
|
729
|
+
joinedAt: registration.joinedAt,
|
|
730
|
+
publicKey: registration.publicKey,
|
|
731
|
+
x25519PublicKey: registration.x25519PublicKey,
|
|
732
|
+
};
|
|
733
|
+
// Verify signature using the key in the registration
|
|
734
|
+
if (!this.identity.verify(stableStringify(dataToVerify), registration.signature, registration.publicKey)) {
|
|
735
|
+
logger.warn('Member registration signature invalid', { agentId: registration.agentId });
|
|
736
|
+
return null;
|
|
737
|
+
}
|
|
738
|
+
return {
|
|
739
|
+
agentId: registration.agentId,
|
|
740
|
+
publicKey: registration.publicKey,
|
|
741
|
+
x25519PublicKey: registration.x25519PublicKey,
|
|
742
|
+
capabilities: registration.capabilities,
|
|
743
|
+
joinedAt: registration.joinedAt,
|
|
744
|
+
verified: true,
|
|
745
|
+
lastSeen: Date.now(), // Set initial lastSeen to now
|
|
746
|
+
};
|
|
747
|
+
}
|
|
748
|
+
/**
|
|
749
|
+
* Resolve full verified member from the registry
|
|
750
|
+
* Returns the complete member entry (with both Ed25519 and X25519 keys)
|
|
751
|
+
* Returns null if member not found or not verified
|
|
752
|
+
*
|
|
753
|
+
* Uses negative cache to prevent spam from repeated lookups of unknown agents
|
|
754
|
+
*/
|
|
755
|
+
async resolveMember(agentId) {
|
|
756
|
+
// Check local cache first
|
|
757
|
+
const cached = this.memberRegistry.get(agentId);
|
|
758
|
+
if (cached && cached.verified) {
|
|
759
|
+
return cached;
|
|
760
|
+
}
|
|
761
|
+
// Check negative cache (prevents spam from repeated lookups)
|
|
762
|
+
const negativeCacheTime = this.negativeMemberCache.get(agentId);
|
|
763
|
+
if (negativeCacheTime && Date.now() - negativeCacheTime < this.NEGATIVE_CACHE_TTL_MS) {
|
|
764
|
+
return null; // Still in negative cache window
|
|
765
|
+
}
|
|
766
|
+
// Fetch from Gun and verify
|
|
767
|
+
if (!this.swarmNode)
|
|
768
|
+
return null;
|
|
769
|
+
return new Promise((resolve) => {
|
|
770
|
+
let resolved = false;
|
|
771
|
+
this.swarmNode.get('members').get(agentId).once((registration) => {
|
|
772
|
+
if (resolved)
|
|
773
|
+
return;
|
|
774
|
+
resolved = true;
|
|
775
|
+
if (!registration) {
|
|
776
|
+
// Add to negative cache
|
|
777
|
+
this.negativeMemberCache.set(agentId, Date.now());
|
|
778
|
+
resolve(null);
|
|
779
|
+
return;
|
|
780
|
+
}
|
|
781
|
+
const verified = this.verifyMemberRegistration(registration);
|
|
782
|
+
if (verified) {
|
|
783
|
+
this.memberRegistry.set(agentId, verified);
|
|
784
|
+
// Remove from negative cache if it was there
|
|
785
|
+
this.negativeMemberCache.delete(agentId);
|
|
786
|
+
resolve(verified);
|
|
787
|
+
}
|
|
788
|
+
else {
|
|
789
|
+
// Add to negative cache
|
|
790
|
+
this.negativeMemberCache.set(agentId, Date.now());
|
|
791
|
+
resolve(null);
|
|
792
|
+
}
|
|
793
|
+
});
|
|
794
|
+
// Timeout after 5 seconds
|
|
795
|
+
setTimeout(() => {
|
|
796
|
+
if (!resolved) {
|
|
797
|
+
resolved = true;
|
|
798
|
+
// Add to negative cache on timeout
|
|
799
|
+
this.negativeMemberCache.set(agentId, Date.now());
|
|
800
|
+
resolve(null);
|
|
801
|
+
}
|
|
802
|
+
}, 5000);
|
|
803
|
+
});
|
|
804
|
+
}
|
|
805
|
+
/**
|
|
806
|
+
* Convenience: Resolve just the Ed25519 public key
|
|
807
|
+
*/
|
|
808
|
+
async resolveMemberKey(agentId) {
|
|
809
|
+
const member = await this.resolveMember(agentId);
|
|
810
|
+
return member?.publicKey || null;
|
|
811
|
+
}
|
|
812
|
+
/**
|
|
813
|
+
* Subscribe to WebRTC signaling (Gun-based, no PeerServer needed)
|
|
814
|
+
* SECURITY: Verifies signatures using registry key, not envelope key
|
|
815
|
+
*/
|
|
816
|
+
subscribeToSignaling() {
|
|
817
|
+
if (!this.swarmNode)
|
|
818
|
+
return;
|
|
819
|
+
// Listen for signals addressed to us
|
|
820
|
+
this.swarmNode.get('signaling').get(this.agentId).map().on(async (signal, key) => {
|
|
821
|
+
if (!signal || signal.from === this.agentId)
|
|
822
|
+
return;
|
|
823
|
+
// Filter expired signals
|
|
824
|
+
if (signal.expiresAt && Date.now() > signal.expiresAt) {
|
|
825
|
+
return;
|
|
826
|
+
}
|
|
827
|
+
// Filter old signals (more than 2 minutes)
|
|
828
|
+
if (signal.timestamp && Date.now() - signal.timestamp > 120000) {
|
|
829
|
+
return;
|
|
830
|
+
}
|
|
831
|
+
// STRICT IDENTITY: Resolve sender's key from registry
|
|
832
|
+
const registeredKey = await this.resolveMemberKey(signal.from);
|
|
833
|
+
if (!registeredKey) {
|
|
834
|
+
logger.debug('Rejected signaling: sender not in registry', { from: signal.from });
|
|
835
|
+
return;
|
|
836
|
+
}
|
|
837
|
+
// Verify using REGISTRY key, not signal.senderPubKey
|
|
838
|
+
const canonical = stableStringify({
|
|
839
|
+
expiresAt: signal.expiresAt,
|
|
840
|
+
from: signal.from,
|
|
841
|
+
payloadHash: signal.payloadHash,
|
|
842
|
+
timestamp: signal.timestamp,
|
|
843
|
+
to: signal.to,
|
|
844
|
+
type: signal.type,
|
|
845
|
+
});
|
|
846
|
+
if (!this.identity.verify(canonical, signal.signature, registeredKey)) {
|
|
847
|
+
logger.debug('Rejected signaling: invalid signature', { from: signal.from, type: signal.type });
|
|
848
|
+
return;
|
|
849
|
+
}
|
|
850
|
+
// Verify payload hash
|
|
851
|
+
if (signal.payload && this.crypto.hash(signal.payload) !== signal.payloadHash) {
|
|
852
|
+
logger.debug('Rejected signaling: payload hash mismatch', { from: signal.from });
|
|
853
|
+
return;
|
|
854
|
+
}
|
|
855
|
+
if (signal.type === 'offer') {
|
|
856
|
+
this.handleOffer(signal);
|
|
857
|
+
}
|
|
858
|
+
else if (signal.type === 'answer') {
|
|
859
|
+
this.handleAnswer(signal);
|
|
860
|
+
}
|
|
861
|
+
else if (signal.type === 'ice') {
|
|
862
|
+
this.handleICE(signal);
|
|
863
|
+
}
|
|
864
|
+
});
|
|
865
|
+
}
|
|
866
|
+
/**
|
|
867
|
+
* Handle incoming WebRTC offer (via Gun signaling)
|
|
868
|
+
*/
|
|
869
|
+
handleOffer(signal) {
|
|
870
|
+
logger.debug('Received WebRTC offer via Gun', { from: signal.from });
|
|
871
|
+
// In production: create RTCPeerConnection, set remote description, create answer
|
|
872
|
+
// For now, just log
|
|
873
|
+
}
|
|
874
|
+
/**
|
|
875
|
+
* Handle incoming WebRTC answer
|
|
876
|
+
*/
|
|
877
|
+
handleAnswer(signal) {
|
|
878
|
+
logger.debug('Received WebRTC answer via Gun', { from: signal.from });
|
|
879
|
+
}
|
|
880
|
+
/**
|
|
881
|
+
* Handle incoming ICE candidate
|
|
882
|
+
*/
|
|
883
|
+
handleICE(signal) {
|
|
884
|
+
logger.debug('Received ICE candidate via Gun', { from: signal.from });
|
|
885
|
+
}
|
|
886
|
+
/**
|
|
887
|
+
* Create canonical signaling message and signature
|
|
888
|
+
* Uses stableStringify for deterministic serialization
|
|
889
|
+
*/
|
|
890
|
+
createCanonicalSignal(type, targetAgentId, payload, ttl) {
|
|
891
|
+
const timestamp = Date.now();
|
|
892
|
+
const expiresAt = timestamp + ttl;
|
|
893
|
+
const payloadHash = this.crypto.hash(payload);
|
|
894
|
+
// Canonical object for signing (stableStringify ensures sorted keys)
|
|
895
|
+
const canonicalObj = {
|
|
896
|
+
expiresAt,
|
|
897
|
+
from: this.agentId,
|
|
898
|
+
payloadHash,
|
|
899
|
+
timestamp,
|
|
900
|
+
to: targetAgentId,
|
|
901
|
+
type,
|
|
902
|
+
};
|
|
903
|
+
const canonical = stableStringify(canonicalObj);
|
|
904
|
+
const signature = this.identity.sign(canonical);
|
|
905
|
+
return {
|
|
906
|
+
canonical,
|
|
907
|
+
signal: {
|
|
908
|
+
type,
|
|
909
|
+
from: this.agentId,
|
|
910
|
+
to: targetAgentId,
|
|
911
|
+
payload,
|
|
912
|
+
payloadHash,
|
|
913
|
+
timestamp,
|
|
914
|
+
expiresAt,
|
|
915
|
+
senderPubKey: this.identity.getPublicKey(),
|
|
916
|
+
signature,
|
|
917
|
+
},
|
|
918
|
+
};
|
|
919
|
+
}
|
|
920
|
+
// NOTE: verifyCanonicalSignal was removed as redundant.
|
|
921
|
+
// Signal verification now happens in subscribeToSignaling using
|
|
922
|
+
// registry-based identity binding, which is both safer and consistent.
|
|
923
|
+
/**
|
|
924
|
+
* Send WebRTC offer via Gun (no PeerServer needed)
|
|
925
|
+
* Uses canonical signature for verification
|
|
926
|
+
*/
|
|
927
|
+
async sendOffer(targetAgentId, offer) {
|
|
928
|
+
if (!this.swarmNode)
|
|
929
|
+
return;
|
|
930
|
+
const payload = JSON.stringify(offer).slice(0, 10000); // Cap size at 10KB
|
|
931
|
+
const ttl = 60000; // 1 minute TTL
|
|
932
|
+
const { signal } = this.createCanonicalSignal('offer', targetAgentId, payload, ttl);
|
|
933
|
+
const signalId = this.crypto.hash(`${this.agentId}:${targetAgentId}:${signal.timestamp}`).slice(0, 12);
|
|
934
|
+
this.swarmNode.get('signaling').get(targetAgentId).get(signalId).put(signal);
|
|
935
|
+
// Schedule cleanup (best effort, expiry filter does real work)
|
|
936
|
+
setTimeout(() => {
|
|
937
|
+
this.swarmNode?.get('signaling').get(targetAgentId).get(signalId).put(null);
|
|
938
|
+
}, ttl);
|
|
939
|
+
}
|
|
940
|
+
/**
|
|
941
|
+
* Send WebRTC answer via Gun
|
|
942
|
+
*/
|
|
943
|
+
async sendAnswer(targetAgentId, answer) {
|
|
944
|
+
if (!this.swarmNode)
|
|
945
|
+
return;
|
|
946
|
+
const payload = JSON.stringify(answer).slice(0, 10000);
|
|
947
|
+
const ttl = 60000;
|
|
948
|
+
const { signal } = this.createCanonicalSignal('answer', targetAgentId, payload, ttl);
|
|
949
|
+
const signalId = this.crypto.hash(`answer:${this.agentId}:${targetAgentId}:${signal.timestamp}`).slice(0, 12);
|
|
950
|
+
this.swarmNode.get('signaling').get(targetAgentId).get(signalId).put(signal);
|
|
951
|
+
setTimeout(() => {
|
|
952
|
+
this.swarmNode?.get('signaling').get(targetAgentId).get(signalId).put(null);
|
|
953
|
+
}, ttl);
|
|
954
|
+
}
|
|
955
|
+
/**
|
|
956
|
+
* Send ICE candidate via Gun
|
|
957
|
+
*/
|
|
958
|
+
async sendICE(targetAgentId, candidate) {
|
|
959
|
+
if (!this.swarmNode)
|
|
960
|
+
return;
|
|
961
|
+
const payload = JSON.stringify(candidate).slice(0, 2000); // ICE candidates are small
|
|
962
|
+
const ttl = 30000; // 30 second TTL
|
|
963
|
+
const { signal } = this.createCanonicalSignal('ice', targetAgentId, payload, ttl);
|
|
964
|
+
const signalId = this.crypto.hash(`ice:${this.agentId}:${signal.timestamp}`).slice(0, 12);
|
|
965
|
+
this.swarmNode.get('signaling').get(targetAgentId).get(signalId).put(signal);
|
|
966
|
+
setTimeout(() => {
|
|
967
|
+
this.swarmNode?.get('signaling').get(targetAgentId).get(signalId).put(null);
|
|
968
|
+
}, ttl);
|
|
969
|
+
}
|
|
970
|
+
/**
|
|
971
|
+
* Publish signed and encrypted message
|
|
972
|
+
*
|
|
973
|
+
* Gun messages ALWAYS use swarm envelope key (not session keys)
|
|
974
|
+
* This ensures all swarm members can decrypt and process messages.
|
|
975
|
+
* Uses canonical serialization for signature stability.
|
|
976
|
+
*/
|
|
977
|
+
async publish(topic, payload) {
|
|
978
|
+
const nonce = this.identity.generateNonce();
|
|
979
|
+
const counter = this.identity.getNextSendCounter(); // Use local send counter
|
|
980
|
+
const timestamp = Date.now();
|
|
981
|
+
const payloadStr = stableStringify(payload);
|
|
982
|
+
const payloadHash = this.crypto.hash(payloadStr);
|
|
983
|
+
const messageId = this.crypto.hash(`${topic}:${nonce}:${timestamp}`).slice(0, 16);
|
|
984
|
+
// Create signature over header fields using CANONICAL serialization
|
|
985
|
+
// Keys are sorted alphabetically for deterministic output
|
|
986
|
+
const headerToSign = {
|
|
987
|
+
counter,
|
|
988
|
+
messageId,
|
|
989
|
+
nonce,
|
|
990
|
+
payloadHash,
|
|
991
|
+
senderId: this.agentId,
|
|
992
|
+
senderX25519Key: this.identity.getX25519PublicKey(),
|
|
993
|
+
timestamp,
|
|
994
|
+
topic,
|
|
995
|
+
};
|
|
996
|
+
const signature = this.identity.sign(stableStringify(headerToSign));
|
|
997
|
+
// Encrypt payload with swarm key (ALWAYS for Gun messages)
|
|
998
|
+
const encrypted = this.crypto.encrypt(payloadStr, this.swarmKey);
|
|
999
|
+
const envelope = {
|
|
1000
|
+
messageId,
|
|
1001
|
+
topic,
|
|
1002
|
+
timestamp,
|
|
1003
|
+
senderId: this.agentId,
|
|
1004
|
+
senderPubKey: this.identity.getPublicKey(),
|
|
1005
|
+
senderX25519Key: this.identity.getX25519PublicKey(),
|
|
1006
|
+
payloadHash,
|
|
1007
|
+
nonce,
|
|
1008
|
+
counter,
|
|
1009
|
+
signature,
|
|
1010
|
+
encrypted,
|
|
1011
|
+
};
|
|
1012
|
+
// Publish to Gun
|
|
1013
|
+
if (this.swarmNode) {
|
|
1014
|
+
this.swarmNode.get('messages').get(topic).get(messageId).put(envelope);
|
|
1015
|
+
}
|
|
1016
|
+
return messageId;
|
|
1017
|
+
}
|
|
1018
|
+
/**
|
|
1019
|
+
* Subscribe to topic with strict identity verification
|
|
1020
|
+
*
|
|
1021
|
+
* SECURITY: Never trust keys from envelopes. Always resolve from registry.
|
|
1022
|
+
*
|
|
1023
|
+
* Verification steps:
|
|
1024
|
+
* 1. Check nonce and timestamp (replay protection)
|
|
1025
|
+
* 2. Check counter (ordering)
|
|
1026
|
+
* 3. Resolve sender's public key from verified member registry
|
|
1027
|
+
* 4. Reject if envelope key differs from registry key
|
|
1028
|
+
* 5. Verify signature using registry key
|
|
1029
|
+
* 6. Decrypt with swarm key
|
|
1030
|
+
* 7. Verify payload hash
|
|
1031
|
+
*/
|
|
1032
|
+
subscribe(topic, callback) {
|
|
1033
|
+
this.messageHandlers.set(topic, callback);
|
|
1034
|
+
if (!this.swarmNode)
|
|
1035
|
+
return;
|
|
1036
|
+
this.swarmNode.get('messages').get(topic).map().on(async (envelope, key) => {
|
|
1037
|
+
if (!envelope || !envelope.encrypted)
|
|
1038
|
+
return;
|
|
1039
|
+
// Ignore own messages
|
|
1040
|
+
if (envelope.senderId === this.agentId)
|
|
1041
|
+
return;
|
|
1042
|
+
// Validate timestamp and nonce (per-sender replay protection)
|
|
1043
|
+
if (!this.identity.checkNonce(envelope.nonce, envelope.timestamp, envelope.senderId)) {
|
|
1044
|
+
logger.debug('Rejected: replay or expired', { messageId: envelope.messageId });
|
|
1045
|
+
return;
|
|
1046
|
+
}
|
|
1047
|
+
// Validate counter (must be > last seen from this sender)
|
|
1048
|
+
if (!this.identity.validateRecvCounter(envelope.senderId, envelope.counter)) {
|
|
1049
|
+
logger.debug('Rejected: invalid counter', { messageId: envelope.messageId });
|
|
1050
|
+
return;
|
|
1051
|
+
}
|
|
1052
|
+
// STRICT IDENTITY: Resolve public key from verified registry
|
|
1053
|
+
const registeredKey = await this.resolveMemberKey(envelope.senderId);
|
|
1054
|
+
if (!registeredKey) {
|
|
1055
|
+
logger.debug('Rejected: sender not in verified registry', {
|
|
1056
|
+
messageId: envelope.messageId,
|
|
1057
|
+
senderId: envelope.senderId,
|
|
1058
|
+
});
|
|
1059
|
+
return;
|
|
1060
|
+
}
|
|
1061
|
+
// Reject if envelope key differs from registry key
|
|
1062
|
+
if (registeredKey !== envelope.senderPubKey) {
|
|
1063
|
+
logger.warn('Rejected: envelope key differs from registry', {
|
|
1064
|
+
messageId: envelope.messageId,
|
|
1065
|
+
senderId: envelope.senderId,
|
|
1066
|
+
});
|
|
1067
|
+
return;
|
|
1068
|
+
}
|
|
1069
|
+
// Verify signature using REGISTRY key (not envelope key)
|
|
1070
|
+
const headerToVerify = {
|
|
1071
|
+
counter: envelope.counter,
|
|
1072
|
+
messageId: envelope.messageId,
|
|
1073
|
+
nonce: envelope.nonce,
|
|
1074
|
+
payloadHash: envelope.payloadHash,
|
|
1075
|
+
senderId: envelope.senderId,
|
|
1076
|
+
senderX25519Key: envelope.senderX25519Key,
|
|
1077
|
+
timestamp: envelope.timestamp,
|
|
1078
|
+
topic: envelope.topic,
|
|
1079
|
+
};
|
|
1080
|
+
if (!this.identity.verify(stableStringify(headerToVerify), envelope.signature, registeredKey)) {
|
|
1081
|
+
logger.warn('Rejected: invalid signature', { messageId: envelope.messageId });
|
|
1082
|
+
return;
|
|
1083
|
+
}
|
|
1084
|
+
// Decrypt payload with swarm key (Gun messages always use swarm key)
|
|
1085
|
+
const decrypted = this.crypto.decrypt(envelope.encrypted.ciphertext, this.swarmKey, envelope.encrypted.iv, envelope.encrypted.tag);
|
|
1086
|
+
if (!decrypted) {
|
|
1087
|
+
logger.warn('Rejected: decryption failed', { messageId: envelope.messageId });
|
|
1088
|
+
return;
|
|
1089
|
+
}
|
|
1090
|
+
// Verify payload hash
|
|
1091
|
+
if (this.crypto.hash(decrypted) !== envelope.payloadHash) {
|
|
1092
|
+
logger.warn('Rejected: payload hash mismatch', { messageId: envelope.messageId });
|
|
1093
|
+
return;
|
|
1094
|
+
}
|
|
1095
|
+
// Dispatch to handler
|
|
1096
|
+
const handler = this.messageHandlers.get(topic);
|
|
1097
|
+
if (handler) {
|
|
1098
|
+
handler(JSON.parse(decrypted), envelope.senderId);
|
|
1099
|
+
}
|
|
1100
|
+
});
|
|
1101
|
+
}
|
|
1102
|
+
/**
|
|
1103
|
+
* Store Q-table and publish pointer
|
|
1104
|
+
*/
|
|
1105
|
+
async syncQTable(qTable) {
|
|
1106
|
+
// Store actual data
|
|
1107
|
+
const data = JSON.stringify(qTable);
|
|
1108
|
+
const { cid, size, chunks } = await this.artifactStore.store(data);
|
|
1109
|
+
// Create pointer
|
|
1110
|
+
const dimensions = `${qTable.length}x${qTable[0]?.length || 0}`;
|
|
1111
|
+
const pointer = this.artifactStore.createPointer('q_table', this.agentId, cid, dimensions, this.identity);
|
|
1112
|
+
// Publish pointer to Gun (small, metadata only)
|
|
1113
|
+
await this.publish('artifacts', pointer);
|
|
1114
|
+
logger.debug('Q-table synced', { cid, size, chunks });
|
|
1115
|
+
return pointer;
|
|
1116
|
+
}
|
|
1117
|
+
/**
|
|
1118
|
+
* Store memory vectors and publish pointer
|
|
1119
|
+
*/
|
|
1120
|
+
async syncMemory(vectors, namespace) {
|
|
1121
|
+
const data = JSON.stringify({ vectors, namespace });
|
|
1122
|
+
const { cid, size, chunks } = await this.artifactStore.store(data);
|
|
1123
|
+
const dimensions = `${vectors.length}x${vectors[0]?.length || 0}`;
|
|
1124
|
+
const pointer = this.artifactStore.createPointer('memory_vectors', this.agentId, cid, dimensions, this.identity);
|
|
1125
|
+
await this.publish('artifacts', pointer);
|
|
1126
|
+
logger.debug('Memory synced', { cid, size, chunks, namespace });
|
|
1127
|
+
return pointer;
|
|
1128
|
+
}
|
|
1129
|
+
/**
|
|
1130
|
+
* Submit task for execution
|
|
1131
|
+
*/
|
|
1132
|
+
async submitTask(task) {
|
|
1133
|
+
const envelope = {
|
|
1134
|
+
...task,
|
|
1135
|
+
requester: this.agentId,
|
|
1136
|
+
deadline: Date.now() + task.budgets.timeoutMs,
|
|
1137
|
+
priority: 1,
|
|
1138
|
+
};
|
|
1139
|
+
return this.publish('tasks', envelope);
|
|
1140
|
+
}
|
|
1141
|
+
/**
|
|
1142
|
+
* Submit task result with full execution binding
|
|
1143
|
+
* Signs ALL fields including TaskEnvelope binding for complete traceability
|
|
1144
|
+
*/
|
|
1145
|
+
async submitResult(receipt) {
|
|
1146
|
+
// Create receipt with executor's public key
|
|
1147
|
+
const fullReceipt = {
|
|
1148
|
+
...receipt,
|
|
1149
|
+
executorPubKey: this.identity.getPublicKey(),
|
|
1150
|
+
};
|
|
1151
|
+
// Sign ALL fields using canonical serialization for full execution binding
|
|
1152
|
+
// This includes the new TaskEnvelope binding fields
|
|
1153
|
+
const dataToSign = {
|
|
1154
|
+
endTimestamp: fullReceipt.endTimestamp,
|
|
1155
|
+
entrypoint: fullReceipt.entrypoint,
|
|
1156
|
+
executionMs: fullReceipt.executionMs,
|
|
1157
|
+
executor: fullReceipt.executor,
|
|
1158
|
+
executorPubKey: fullReceipt.executorPubKey,
|
|
1159
|
+
fuelUsed: fullReceipt.fuelUsed,
|
|
1160
|
+
inputCID: fullReceipt.inputCID,
|
|
1161
|
+
inputHash: fullReceipt.inputHash,
|
|
1162
|
+
memoryPeakMB: fullReceipt.memoryPeakMB,
|
|
1163
|
+
moduleCID: fullReceipt.moduleCID,
|
|
1164
|
+
moduleHash: fullReceipt.moduleHash,
|
|
1165
|
+
outputHash: fullReceipt.outputHash,
|
|
1166
|
+
outputSchemaHash: fullReceipt.outputSchemaHash,
|
|
1167
|
+
resultCID: fullReceipt.resultCID,
|
|
1168
|
+
startTimestamp: fullReceipt.startTimestamp,
|
|
1169
|
+
status: fullReceipt.status,
|
|
1170
|
+
taskEnvelopeHash: fullReceipt.taskEnvelopeHash,
|
|
1171
|
+
taskId: fullReceipt.taskId,
|
|
1172
|
+
};
|
|
1173
|
+
const signature = this.identity.sign(stableStringify(dataToSign));
|
|
1174
|
+
const signedReceipt = { ...fullReceipt, signature };
|
|
1175
|
+
return this.publish('results', signedReceipt);
|
|
1176
|
+
}
|
|
1177
|
+
/**
|
|
1178
|
+
* Get status
|
|
1179
|
+
*/
|
|
1180
|
+
getStatus() {
|
|
1181
|
+
return {
|
|
1182
|
+
connected: this.connected,
|
|
1183
|
+
swarmId: this.swarmId,
|
|
1184
|
+
agentId: this.agentId,
|
|
1185
|
+
publicKey: this.identity.getPublicKey().slice(0, 50) + '...',
|
|
1186
|
+
relays: this.relayManager.getMetrics(),
|
|
1187
|
+
};
|
|
1188
|
+
}
|
|
1189
|
+
/**
|
|
1190
|
+
* Get swarm key for sharing
|
|
1191
|
+
*/
|
|
1192
|
+
getSwarmKey() {
|
|
1193
|
+
return this.swarmKey.toString('base64');
|
|
1194
|
+
}
|
|
1195
|
+
//===========================================================================
|
|
1196
|
+
// AUTONOMY: Membership Watcher, Heartbeats, Task Executor
|
|
1197
|
+
//===========================================================================
|
|
1198
|
+
/**
|
|
1199
|
+
* Start membership watcher
|
|
1200
|
+
* Continuously monitors the members map, verifies registrations, tracks liveness
|
|
1201
|
+
*/
|
|
1202
|
+
startMembershipWatcher() {
|
|
1203
|
+
if (!this.swarmNode)
|
|
1204
|
+
return;
|
|
1205
|
+
// Subscribe to all member registrations
|
|
1206
|
+
this.swarmNode.get('members').map().on((registration, agentId) => {
|
|
1207
|
+
if (!registration || !agentId)
|
|
1208
|
+
return;
|
|
1209
|
+
if (agentId === this.agentId)
|
|
1210
|
+
return; // Skip self
|
|
1211
|
+
// Verify the registration
|
|
1212
|
+
const verified = this.verifyMemberRegistration(registration);
|
|
1213
|
+
if (verified) {
|
|
1214
|
+
// Check if this is an update or new member
|
|
1215
|
+
const existing = this.memberRegistry.get(agentId);
|
|
1216
|
+
if (existing) {
|
|
1217
|
+
// Keep the higher lastSeen (heartbeat updates this separately)
|
|
1218
|
+
verified.lastSeen = Math.max(existing.lastSeen, verified.lastSeen);
|
|
1219
|
+
}
|
|
1220
|
+
this.memberRegistry.set(agentId, verified);
|
|
1221
|
+
// Remove from negative cache
|
|
1222
|
+
this.negativeMemberCache.delete(agentId);
|
|
1223
|
+
logger.debug('Member verified via watcher', { agentId, capabilities: verified.capabilities });
|
|
1224
|
+
}
|
|
1225
|
+
});
|
|
1226
|
+
// Subscribe to heartbeats
|
|
1227
|
+
this.subscribeToHeartbeats();
|
|
1228
|
+
logger.debug('Membership watcher started');
|
|
1229
|
+
}
|
|
1230
|
+
/**
|
|
1231
|
+
* Subscribe to heartbeat messages to track liveness
|
|
1232
|
+
* Explicitly rejects agentId mismatches to prevent confusion attacks
|
|
1233
|
+
*/
|
|
1234
|
+
subscribeToHeartbeats() {
|
|
1235
|
+
this.subscribe('heartbeat', (data, from) => {
|
|
1236
|
+
// Reject if payload agentId doesn't match envelope sender
|
|
1237
|
+
if (data?.agentId && data.agentId !== from) {
|
|
1238
|
+
logger.warn('Heartbeat agentId mismatch', { from, claimed: data.agentId });
|
|
1239
|
+
return;
|
|
1240
|
+
}
|
|
1241
|
+
const member = this.memberRegistry.get(from);
|
|
1242
|
+
if (member) {
|
|
1243
|
+
member.lastSeen = Date.now();
|
|
1244
|
+
logger.debug('Heartbeat received', { from, lastSeen: member.lastSeen });
|
|
1245
|
+
}
|
|
1246
|
+
});
|
|
1247
|
+
}
|
|
1248
|
+
/**
|
|
1249
|
+
* Start publishing heartbeats
|
|
1250
|
+
* Every HEARTBEAT_INTERVAL_MS, publish a signed heartbeat message
|
|
1251
|
+
*/
|
|
1252
|
+
startHeartbeat() {
|
|
1253
|
+
// Publish initial heartbeat
|
|
1254
|
+
this.publishHeartbeat();
|
|
1255
|
+
// Start interval
|
|
1256
|
+
this.heartbeatInterval = setInterval(() => {
|
|
1257
|
+
this.publishHeartbeat();
|
|
1258
|
+
}, this.HEARTBEAT_INTERVAL_MS);
|
|
1259
|
+
logger.debug('Heartbeat publishing started', { intervalMs: this.HEARTBEAT_INTERVAL_MS });
|
|
1260
|
+
}
|
|
1261
|
+
/**
|
|
1262
|
+
* Publish a single heartbeat
|
|
1263
|
+
* Belt-and-suspenders: check both connected and swarmNode
|
|
1264
|
+
*/
|
|
1265
|
+
async publishHeartbeat() {
|
|
1266
|
+
if (!this.connected || !this.swarmNode)
|
|
1267
|
+
return;
|
|
1268
|
+
await this.publish('heartbeat', {
|
|
1269
|
+
agentId: this.agentId,
|
|
1270
|
+
timestamp: Date.now(),
|
|
1271
|
+
status: 'alive',
|
|
1272
|
+
capabilities: ['coordinator', 'executor'],
|
|
1273
|
+
claimedTasks: this.claimedTasks.size,
|
|
1274
|
+
});
|
|
1275
|
+
// Update own lastSeen
|
|
1276
|
+
const self = this.memberRegistry.get(this.agentId);
|
|
1277
|
+
if (self) {
|
|
1278
|
+
self.lastSeen = Date.now();
|
|
1279
|
+
}
|
|
1280
|
+
}
|
|
1281
|
+
/**
|
|
1282
|
+
* Get list of live members (heartbeat within MEMBER_TIMEOUT_MS)
|
|
1283
|
+
*/
|
|
1284
|
+
getLiveMembers() {
|
|
1285
|
+
const now = Date.now();
|
|
1286
|
+
const members = [];
|
|
1287
|
+
const entries = Array.from(this.memberRegistry.entries());
|
|
1288
|
+
for (const [agentId, member] of entries) {
|
|
1289
|
+
if (!member.verified)
|
|
1290
|
+
continue;
|
|
1291
|
+
const isAlive = (now - member.lastSeen) < this.MEMBER_TIMEOUT_MS;
|
|
1292
|
+
members.push({
|
|
1293
|
+
agentId,
|
|
1294
|
+
capabilities: member.capabilities,
|
|
1295
|
+
lastSeen: member.lastSeen,
|
|
1296
|
+
isAlive,
|
|
1297
|
+
});
|
|
1298
|
+
}
|
|
1299
|
+
return members;
|
|
1300
|
+
}
|
|
1301
|
+
/**
|
|
1302
|
+
* Get count of live members
|
|
1303
|
+
*/
|
|
1304
|
+
getLiveMemberCount() {
|
|
1305
|
+
return this.getLiveMembers().filter(m => m.isAlive).length;
|
|
1306
|
+
}
|
|
1307
|
+
//===========================================================================
|
|
1308
|
+
// RECEIPT VERIFICATION
|
|
1309
|
+
//===========================================================================
|
|
1310
|
+
/**
|
|
1311
|
+
* Verify a task receipt
|
|
1312
|
+
*
|
|
1313
|
+
* Checks:
|
|
1314
|
+
* 1. Executor is in verified member registry
|
|
1315
|
+
* 2. Executor public key matches registry
|
|
1316
|
+
* 3. Signature is valid over the canonical receipt fields
|
|
1317
|
+
* 4. Optionally verifies taskEnvelopeHash if original task is provided
|
|
1318
|
+
*/
|
|
1319
|
+
async verifyReceipt(receipt, originalTask) {
|
|
1320
|
+
// 1. Resolve executor from registry
|
|
1321
|
+
const executor = await this.resolveMember(receipt.executor);
|
|
1322
|
+
if (!executor) {
|
|
1323
|
+
return { valid: false, reason: 'Executor not in verified registry' };
|
|
1324
|
+
}
|
|
1325
|
+
// 2. Verify executor public key matches
|
|
1326
|
+
if (executor.publicKey !== receipt.executorPubKey) {
|
|
1327
|
+
return { valid: false, reason: 'Executor public key mismatch with registry' };
|
|
1328
|
+
}
|
|
1329
|
+
// 3. Reconstruct the signed data (must EXACTLY match submitResult signing set)
|
|
1330
|
+
// All fields in alphabetical order for stableStringify consistency
|
|
1331
|
+
const dataToVerify = {
|
|
1332
|
+
endTimestamp: receipt.endTimestamp,
|
|
1333
|
+
entrypoint: receipt.entrypoint,
|
|
1334
|
+
executionMs: receipt.executionMs,
|
|
1335
|
+
executor: receipt.executor,
|
|
1336
|
+
executorPubKey: receipt.executorPubKey,
|
|
1337
|
+
fuelUsed: receipt.fuelUsed,
|
|
1338
|
+
inputCID: receipt.inputCID,
|
|
1339
|
+
inputHash: receipt.inputHash,
|
|
1340
|
+
memoryPeakMB: receipt.memoryPeakMB,
|
|
1341
|
+
moduleCID: receipt.moduleCID,
|
|
1342
|
+
moduleHash: receipt.moduleHash,
|
|
1343
|
+
outputHash: receipt.outputHash,
|
|
1344
|
+
outputSchemaHash: receipt.outputSchemaHash,
|
|
1345
|
+
resultCID: receipt.resultCID,
|
|
1346
|
+
startTimestamp: receipt.startTimestamp,
|
|
1347
|
+
status: receipt.status,
|
|
1348
|
+
taskEnvelopeHash: receipt.taskEnvelopeHash,
|
|
1349
|
+
taskId: receipt.taskId,
|
|
1350
|
+
};
|
|
1351
|
+
// 4. Verify signature using registry key
|
|
1352
|
+
if (!this.identity.verify(stableStringify(dataToVerify), receipt.signature, executor.publicKey)) {
|
|
1353
|
+
return { valid: false, reason: 'Invalid receipt signature' };
|
|
1354
|
+
}
|
|
1355
|
+
// 5. Optionally verify taskEnvelopeHash
|
|
1356
|
+
if (originalTask) {
|
|
1357
|
+
const expectedHash = this.crypto.hash(stableStringify(originalTask));
|
|
1358
|
+
if (receipt.taskEnvelopeHash !== expectedHash) {
|
|
1359
|
+
return { valid: false, reason: 'Task envelope hash mismatch' };
|
|
1360
|
+
}
|
|
1361
|
+
}
|
|
1362
|
+
return {
|
|
1363
|
+
valid: true,
|
|
1364
|
+
executor: {
|
|
1365
|
+
agentId: executor.agentId,
|
|
1366
|
+
capabilities: executor.capabilities,
|
|
1367
|
+
verified: executor.verified,
|
|
1368
|
+
},
|
|
1369
|
+
};
|
|
1370
|
+
}
|
|
1371
|
+
//===========================================================================
|
|
1372
|
+
// TASK EXECUTOR LOOP (optional, enable with startTaskExecutor)
|
|
1373
|
+
//===========================================================================
|
|
1374
|
+
/**
|
|
1375
|
+
* Start the task executor loop
|
|
1376
|
+
* Subscribes to tasks, claims them, and (in production) executes in Wasmtime
|
|
1377
|
+
*
|
|
1378
|
+
* Security checks:
|
|
1379
|
+
* - Requester must be verified member
|
|
1380
|
+
* - Requester in envelope must match sender
|
|
1381
|
+
* - Executor must have 'executor' capability
|
|
1382
|
+
*/
|
|
1383
|
+
startTaskExecutor() {
|
|
1384
|
+
if (this.taskExecutorActive)
|
|
1385
|
+
return;
|
|
1386
|
+
this.taskExecutorActive = true;
|
|
1387
|
+
this.subscribe('tasks', async (task, from) => {
|
|
1388
|
+
// Skip if not from a verified member
|
|
1389
|
+
const requester = await this.resolveMember(from);
|
|
1390
|
+
if (!requester) {
|
|
1391
|
+
logger.debug('Task from unverified requester, skipping', { from });
|
|
1392
|
+
return;
|
|
1393
|
+
}
|
|
1394
|
+
// Reject if task.requester doesn't match envelope sender (prevents replay/confusion)
|
|
1395
|
+
if (task.requester && task.requester !== from) {
|
|
1396
|
+
logger.warn('Task requester mismatch', {
|
|
1397
|
+
from,
|
|
1398
|
+
requester: task.requester,
|
|
1399
|
+
taskId: task.taskId,
|
|
1400
|
+
});
|
|
1401
|
+
return;
|
|
1402
|
+
}
|
|
1403
|
+
// Check if we have executor capability
|
|
1404
|
+
const self = this.memberRegistry.get(this.agentId);
|
|
1405
|
+
if (!self || !self.capabilities.includes('executor')) {
|
|
1406
|
+
logger.debug('Not an executor, skipping task', { taskId: task.taskId });
|
|
1407
|
+
return;
|
|
1408
|
+
}
|
|
1409
|
+
// Skip if already claimed
|
|
1410
|
+
if (this.claimedTasks.has(task.taskId)) {
|
|
1411
|
+
return;
|
|
1412
|
+
}
|
|
1413
|
+
// Skip if past deadline
|
|
1414
|
+
if (Date.now() > task.deadline) {
|
|
1415
|
+
logger.debug('Task past deadline, skipping', { taskId: task.taskId });
|
|
1416
|
+
return;
|
|
1417
|
+
}
|
|
1418
|
+
// Attempt to claim the task
|
|
1419
|
+
const claimed = await this.claimTask(task);
|
|
1420
|
+
if (!claimed) {
|
|
1421
|
+
return;
|
|
1422
|
+
}
|
|
1423
|
+
// Execute the task
|
|
1424
|
+
try {
|
|
1425
|
+
const receipt = await this.executeTask(task);
|
|
1426
|
+
await this.submitResult(receipt);
|
|
1427
|
+
logger.info('Task completed', { taskId: task.taskId, status: receipt.status });
|
|
1428
|
+
}
|
|
1429
|
+
catch (error) {
|
|
1430
|
+
logger.error('Task execution failed', { taskId: task.taskId, error });
|
|
1431
|
+
// Submit error receipt (async for consistent artifact hashing)
|
|
1432
|
+
const errorReceipt = await this.createErrorReceipt(task, error);
|
|
1433
|
+
await this.submitResult(errorReceipt);
|
|
1434
|
+
}
|
|
1435
|
+
finally {
|
|
1436
|
+
this.claimedTasks.delete(task.taskId);
|
|
1437
|
+
}
|
|
1438
|
+
});
|
|
1439
|
+
logger.info('Task executor started');
|
|
1440
|
+
}
|
|
1441
|
+
/**
|
|
1442
|
+
* Claim a task with conflict resolution
|
|
1443
|
+
*
|
|
1444
|
+
* Before claiming:
|
|
1445
|
+
* 1. Check for existing claim
|
|
1446
|
+
* 2. If claim exists and is fresh (< CLAIM_TTL_MS), skip
|
|
1447
|
+
* 3. If no claim or stale, write our claim
|
|
1448
|
+
*
|
|
1449
|
+
* Uses single timestamp to ensure signature matches stored data
|
|
1450
|
+
*/
|
|
1451
|
+
async claimTask(task) {
|
|
1452
|
+
if (!this.swarmNode)
|
|
1453
|
+
return false;
|
|
1454
|
+
// Check for existing claim (conflict resolution)
|
|
1455
|
+
let existing = await new Promise((resolve) => {
|
|
1456
|
+
let done = false;
|
|
1457
|
+
this.swarmNode.get('claims').get(task.taskId).once((c) => {
|
|
1458
|
+
if (done)
|
|
1459
|
+
return;
|
|
1460
|
+
done = true;
|
|
1461
|
+
resolve(c);
|
|
1462
|
+
});
|
|
1463
|
+
setTimeout(() => {
|
|
1464
|
+
if (!done) {
|
|
1465
|
+
done = true;
|
|
1466
|
+
resolve(null);
|
|
1467
|
+
}
|
|
1468
|
+
}, 1500);
|
|
1469
|
+
});
|
|
1470
|
+
// Verify existing claim signature against registry to prevent spoofing
|
|
1471
|
+
if (existing?.executor && existing?.claimedAt && existing?.signature) {
|
|
1472
|
+
const execKey = await this.resolveMemberKey(existing.executor);
|
|
1473
|
+
if (execKey) {
|
|
1474
|
+
const claimValid = this.identity.verify(stableStringify({
|
|
1475
|
+
claimedAt: existing.claimedAt,
|
|
1476
|
+
executor: existing.executor,
|
|
1477
|
+
taskEnvelopeHash: existing.taskEnvelopeHash,
|
|
1478
|
+
taskId: task.taskId,
|
|
1479
|
+
}), existing.signature, execKey);
|
|
1480
|
+
if (!claimValid) {
|
|
1481
|
+
// Treat invalid claim as non-existent (spoofed)
|
|
1482
|
+
logger.debug('Ignoring invalid claim signature', {
|
|
1483
|
+
taskId: task.taskId,
|
|
1484
|
+
claimedBy: existing.executor,
|
|
1485
|
+
});
|
|
1486
|
+
existing = null;
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
else {
|
|
1490
|
+
// Executor not in registry - ignore claim
|
|
1491
|
+
existing = null;
|
|
1492
|
+
}
|
|
1493
|
+
}
|
|
1494
|
+
// If fresh VERIFIED claim exists from another agent, don't compete
|
|
1495
|
+
if (existing?.claimedAt &&
|
|
1496
|
+
(Date.now() - existing.claimedAt) < this.CLAIM_TTL_MS &&
|
|
1497
|
+
existing.executor !== this.agentId) {
|
|
1498
|
+
logger.debug('Task already claimed by another agent', {
|
|
1499
|
+
taskId: task.taskId,
|
|
1500
|
+
claimedBy: existing.executor,
|
|
1501
|
+
});
|
|
1502
|
+
return false;
|
|
1503
|
+
}
|
|
1504
|
+
// Create claim with single timestamp for consistency
|
|
1505
|
+
const claimedAt = Date.now();
|
|
1506
|
+
const taskEnvelopeHash = this.crypto.hash(stableStringify(task));
|
|
1507
|
+
const claim = {
|
|
1508
|
+
taskId: task.taskId,
|
|
1509
|
+
executor: this.agentId,
|
|
1510
|
+
claimedAt,
|
|
1511
|
+
taskEnvelopeHash,
|
|
1512
|
+
signature: this.identity.sign(stableStringify({
|
|
1513
|
+
claimedAt,
|
|
1514
|
+
executor: this.agentId,
|
|
1515
|
+
taskEnvelopeHash,
|
|
1516
|
+
taskId: task.taskId,
|
|
1517
|
+
})),
|
|
1518
|
+
};
|
|
1519
|
+
// Publish claim to Gun
|
|
1520
|
+
this.swarmNode.get('claims').get(task.taskId).put(claim);
|
|
1521
|
+
// Add to local claimed set
|
|
1522
|
+
this.claimedTasks.add(task.taskId);
|
|
1523
|
+
logger.debug('Task claimed', { taskId: task.taskId });
|
|
1524
|
+
return true;
|
|
1525
|
+
}
|
|
1526
|
+
/**
|
|
1527
|
+
* Execute a task
|
|
1528
|
+
*
|
|
1529
|
+
* NOTE: This is a stub. In production, this would:
|
|
1530
|
+
* 1. Fetch WASM module from IPFS using moduleCID
|
|
1531
|
+
* 2. Fetch input data from IPFS using inputCID
|
|
1532
|
+
* 3. Execute in Wasmtime with fuel, memory, and timeout limits
|
|
1533
|
+
* 4. Store output to IPFS, get resultCID
|
|
1534
|
+
* 5. Return signed receipt
|
|
1535
|
+
*
|
|
1536
|
+
* Hashes actual bytes when available for meaningful receipts
|
|
1537
|
+
*/
|
|
1538
|
+
async executeTask(task) {
|
|
1539
|
+
const startTimestamp = Date.now();
|
|
1540
|
+
// Fetch artifacts (may be null if not in local cache)
|
|
1541
|
+
const inputBytes = await this.artifactStore.retrieve(task.inputCID);
|
|
1542
|
+
const moduleBytes = await this.artifactStore.retrieve(task.moduleCID);
|
|
1543
|
+
// Hash actual bytes when available, fall back to CID string if not
|
|
1544
|
+
const inputHash = inputBytes
|
|
1545
|
+
? this.crypto.hash(inputBytes)
|
|
1546
|
+
: this.crypto.hash(task.inputCID);
|
|
1547
|
+
const moduleHash = moduleBytes
|
|
1548
|
+
? this.crypto.hash(moduleBytes)
|
|
1549
|
+
: this.crypto.hash(task.moduleCID);
|
|
1550
|
+
// Stub execution - in production use Wasmtime with moduleBytes
|
|
1551
|
+
// const result = await wasmtime.execute(moduleBytes, inputBytes, task.budgets);
|
|
1552
|
+
const endTimestamp = Date.now();
|
|
1553
|
+
const taskEnvelopeHash = this.crypto.hash(stableStringify(task));
|
|
1554
|
+
// Store result artifact
|
|
1555
|
+
const resultData = JSON.stringify({
|
|
1556
|
+
taskId: task.taskId,
|
|
1557
|
+
status: 'success',
|
|
1558
|
+
output: 'Stub execution completed',
|
|
1559
|
+
timestamp: endTimestamp,
|
|
1560
|
+
});
|
|
1561
|
+
// Hash actual output bytes
|
|
1562
|
+
const outputBytes = Buffer.from(resultData);
|
|
1563
|
+
const outputHash = this.crypto.hash(outputBytes);
|
|
1564
|
+
const { cid: resultCID } = await this.artifactStore.store(resultData);
|
|
1565
|
+
return {
|
|
1566
|
+
taskId: task.taskId,
|
|
1567
|
+
executor: this.agentId,
|
|
1568
|
+
resultCID,
|
|
1569
|
+
status: 'success',
|
|
1570
|
+
fuelUsed: 1000,
|
|
1571
|
+
memoryPeakMB: 1,
|
|
1572
|
+
executionMs: endTimestamp - startTimestamp,
|
|
1573
|
+
inputHash,
|
|
1574
|
+
outputHash,
|
|
1575
|
+
moduleHash,
|
|
1576
|
+
startTimestamp,
|
|
1577
|
+
endTimestamp,
|
|
1578
|
+
moduleCID: task.moduleCID,
|
|
1579
|
+
inputCID: task.inputCID,
|
|
1580
|
+
entrypoint: task.entrypoint,
|
|
1581
|
+
outputSchemaHash: task.outputSchemaHash,
|
|
1582
|
+
taskEnvelopeHash,
|
|
1583
|
+
};
|
|
1584
|
+
}
|
|
1585
|
+
/**
|
|
1586
|
+
* Create error receipt for failed task
|
|
1587
|
+
* Uses same hashing semantics as executeTask for consistency
|
|
1588
|
+
*/
|
|
1589
|
+
async createErrorReceipt(task, error) {
|
|
1590
|
+
const now = Date.now();
|
|
1591
|
+
// Hash actual bytes when available for consistency with executeTask
|
|
1592
|
+
const inputBytes = await this.artifactStore.retrieve(task.inputCID);
|
|
1593
|
+
const moduleBytes = await this.artifactStore.retrieve(task.moduleCID);
|
|
1594
|
+
const inputHash = inputBytes
|
|
1595
|
+
? this.crypto.hash(inputBytes)
|
|
1596
|
+
: this.crypto.hash(task.inputCID);
|
|
1597
|
+
const moduleHash = moduleBytes
|
|
1598
|
+
? this.crypto.hash(moduleBytes)
|
|
1599
|
+
: this.crypto.hash(task.moduleCID);
|
|
1600
|
+
// Hash error message as output
|
|
1601
|
+
const outputHash = this.crypto.hash(Buffer.from(error.message));
|
|
1602
|
+
return {
|
|
1603
|
+
taskId: task.taskId,
|
|
1604
|
+
executor: this.agentId,
|
|
1605
|
+
resultCID: '',
|
|
1606
|
+
status: 'error',
|
|
1607
|
+
fuelUsed: 0,
|
|
1608
|
+
memoryPeakMB: 0,
|
|
1609
|
+
executionMs: 0,
|
|
1610
|
+
inputHash,
|
|
1611
|
+
outputHash,
|
|
1612
|
+
moduleHash,
|
|
1613
|
+
startTimestamp: now,
|
|
1614
|
+
endTimestamp: now,
|
|
1615
|
+
moduleCID: task.moduleCID,
|
|
1616
|
+
inputCID: task.inputCID,
|
|
1617
|
+
entrypoint: task.entrypoint,
|
|
1618
|
+
outputSchemaHash: task.outputSchemaHash,
|
|
1619
|
+
taskEnvelopeHash: this.crypto.hash(stableStringify(task)),
|
|
1620
|
+
};
|
|
1621
|
+
}
|
|
1622
|
+
/**
|
|
1623
|
+
* Stop task executor
|
|
1624
|
+
*/
|
|
1625
|
+
stopTaskExecutor() {
|
|
1626
|
+
this.taskExecutorActive = false;
|
|
1627
|
+
logger.info('Task executor stopped');
|
|
1628
|
+
}
|
|
1629
|
+
/**
|
|
1630
|
+
* Disconnect and cleanup resources
|
|
1631
|
+
*/
|
|
1632
|
+
disconnect() {
|
|
1633
|
+
this.connected = false;
|
|
1634
|
+
// Stop heartbeat
|
|
1635
|
+
if (this.heartbeatInterval) {
|
|
1636
|
+
clearInterval(this.heartbeatInterval);
|
|
1637
|
+
this.heartbeatInterval = null;
|
|
1638
|
+
}
|
|
1639
|
+
// Stop task executor
|
|
1640
|
+
this.taskExecutorActive = false;
|
|
1641
|
+
this.identity.destroy(); // Stop nonce cleanup interval
|
|
1642
|
+
this.messageHandlers.clear();
|
|
1643
|
+
this.pendingOffers.clear();
|
|
1644
|
+
this.claimedTasks.clear();
|
|
1645
|
+
this.negativeMemberCache.clear();
|
|
1646
|
+
// Gun doesn't have explicit disconnect
|
|
1647
|
+
}
|
|
1648
|
+
}
|
|
1649
|
+
//=============================================================================
|
|
1650
|
+
// RUVECTOR OPTIMIZATION LAYER
|
|
1651
|
+
//=============================================================================
|
|
1652
|
+
/**
|
|
1653
|
+
* RuVector optimization for Gun message handling
|
|
1654
|
+
*
|
|
1655
|
+
* Provides:
|
|
1656
|
+
* - HNSW indexing for O(log n) message lookup by topic similarity
|
|
1657
|
+
* - Batch message operations for reduced overhead
|
|
1658
|
+
* - PQ quantization for compressed message metadata storage
|
|
1659
|
+
* - Vector-based topic routing for intelligent distribution
|
|
1660
|
+
*/
|
|
1661
|
+
class RuVectorGunOptimizer {
|
|
1662
|
+
topicVectors = new Map();
|
|
1663
|
+
messageIndex = new Map(); // topic -> messageIds
|
|
1664
|
+
batchQueue = [];
|
|
1665
|
+
batchFlushInterval = null;
|
|
1666
|
+
batchSize = 10;
|
|
1667
|
+
flushIntervalMs = 100;
|
|
1668
|
+
constructor() {
|
|
1669
|
+
this.startBatchFlusher();
|
|
1670
|
+
}
|
|
1671
|
+
/**
|
|
1672
|
+
* Generate topic embedding using simple hash-based vectors
|
|
1673
|
+
* In production: use actual embedding model via ruvector
|
|
1674
|
+
*/
|
|
1675
|
+
generateTopicVector(topic) {
|
|
1676
|
+
// Create 128-dimensional vector from topic hash
|
|
1677
|
+
const hash = topic.split('').reduce((acc, char) => acc + char.charCodeAt(0), 0);
|
|
1678
|
+
const vector = new Float32Array(128);
|
|
1679
|
+
for (let i = 0; i < 128; i++) {
|
|
1680
|
+
vector[i] = Math.sin(hash * (i + 1) * 0.1) * 0.5 + 0.5;
|
|
1681
|
+
}
|
|
1682
|
+
return vector;
|
|
1683
|
+
}
|
|
1684
|
+
/**
|
|
1685
|
+
* Find similar topics using cosine similarity
|
|
1686
|
+
* In production: use HNSW index via ruvector for O(log n) lookup
|
|
1687
|
+
*/
|
|
1688
|
+
findSimilarTopics(topic, topK = 5) {
|
|
1689
|
+
const queryVector = this.generateTopicVector(topic);
|
|
1690
|
+
const similarities = [];
|
|
1691
|
+
const entries = Array.from(this.topicVectors.entries());
|
|
1692
|
+
for (const [existingTopic, vector] of entries) {
|
|
1693
|
+
const similarity = this.cosineSimilarity(queryVector, vector);
|
|
1694
|
+
similarities.push({ topic: existingTopic, similarity });
|
|
1695
|
+
}
|
|
1696
|
+
// Sort by similarity and return top K
|
|
1697
|
+
return similarities
|
|
1698
|
+
.sort((a, b) => b.similarity - a.similarity)
|
|
1699
|
+
.slice(0, topK);
|
|
1700
|
+
}
|
|
1701
|
+
/**
|
|
1702
|
+
* Cosine similarity between two vectors
|
|
1703
|
+
*/
|
|
1704
|
+
cosineSimilarity(a, b) {
|
|
1705
|
+
let dotProduct = 0;
|
|
1706
|
+
let normA = 0;
|
|
1707
|
+
let normB = 0;
|
|
1708
|
+
for (let i = 0; i < a.length; i++) {
|
|
1709
|
+
dotProduct += a[i] * b[i];
|
|
1710
|
+
normA += a[i] * a[i];
|
|
1711
|
+
normB += b[i] * b[i];
|
|
1712
|
+
}
|
|
1713
|
+
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
1714
|
+
}
|
|
1715
|
+
/**
|
|
1716
|
+
* Index a topic for similarity search
|
|
1717
|
+
*/
|
|
1718
|
+
indexTopic(topic) {
|
|
1719
|
+
if (!this.topicVectors.has(topic)) {
|
|
1720
|
+
this.topicVectors.set(topic, this.generateTopicVector(topic));
|
|
1721
|
+
this.messageIndex.set(topic, []);
|
|
1722
|
+
}
|
|
1723
|
+
}
|
|
1724
|
+
/**
|
|
1725
|
+
* Add message to batch queue for efficient Gun writes
|
|
1726
|
+
*/
|
|
1727
|
+
queueMessage(topic, payload) {
|
|
1728
|
+
this.indexTopic(topic);
|
|
1729
|
+
this.batchQueue.push({ topic, payload });
|
|
1730
|
+
// Flush immediately if batch is full
|
|
1731
|
+
if (this.batchQueue.length >= this.batchSize) {
|
|
1732
|
+
this.flushBatch();
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
/**
|
|
1736
|
+
* Get batched messages for efficient Gun write
|
|
1737
|
+
*/
|
|
1738
|
+
flushBatch() {
|
|
1739
|
+
const batch = [...this.batchQueue];
|
|
1740
|
+
this.batchQueue = [];
|
|
1741
|
+
return batch;
|
|
1742
|
+
}
|
|
1743
|
+
/**
|
|
1744
|
+
* Start periodic batch flushing
|
|
1745
|
+
*/
|
|
1746
|
+
startBatchFlusher() {
|
|
1747
|
+
this.batchFlushInterval = setInterval(() => {
|
|
1748
|
+
if (this.batchQueue.length > 0) {
|
|
1749
|
+
this.flushBatch();
|
|
1750
|
+
}
|
|
1751
|
+
}, this.flushIntervalMs);
|
|
1752
|
+
}
|
|
1753
|
+
/**
|
|
1754
|
+
* Get optimization metrics
|
|
1755
|
+
*/
|
|
1756
|
+
getMetrics() {
|
|
1757
|
+
let totalMessages = 0;
|
|
1758
|
+
const values = Array.from(this.messageIndex.values());
|
|
1759
|
+
for (const messageIds of values) {
|
|
1760
|
+
totalMessages += messageIds.length;
|
|
1761
|
+
}
|
|
1762
|
+
return {
|
|
1763
|
+
indexedTopics: this.topicVectors.size,
|
|
1764
|
+
batchQueueSize: this.batchQueue.length,
|
|
1765
|
+
totalMessages,
|
|
1766
|
+
};
|
|
1767
|
+
}
|
|
1768
|
+
/**
|
|
1769
|
+
* Cleanup resources
|
|
1770
|
+
*/
|
|
1771
|
+
destroy() {
|
|
1772
|
+
if (this.batchFlushInterval) {
|
|
1773
|
+
clearInterval(this.batchFlushInterval);
|
|
1774
|
+
this.batchFlushInterval = null;
|
|
1775
|
+
}
|
|
1776
|
+
}
|
|
1777
|
+
}
|
|
1778
|
+
/**
|
|
1779
|
+
* Create and connect a P2P swarm
|
|
1780
|
+
*/
|
|
1781
|
+
export async function createP2PSwarmV2(agentId, swarmKey) {
|
|
1782
|
+
const swarm = new P2PSwarmV2(agentId, swarmKey);
|
|
1783
|
+
await swarm.connect();
|
|
1784
|
+
return swarm;
|
|
1785
|
+
}
|
|
1786
|
+
export { stableStringify, IdentityManager, CryptoV2, RelayManager, ArtifactStore, RuVectorGunOptimizer, };
|
|
1787
|
+
//# sourceMappingURL=p2p-swarm-v2.js.map
|