odd-flow 1.0.0
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/.claude/agents/MIGRATION_SUMMARY.md +222 -0
- package/.claude/agents/analysis/analyze-code-quality.md +58 -0
- package/.claude/agents/analysis/code-analyzer.md +189 -0
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +58 -0
- package/.claude/agents/architecture/system-design/arch-system-design.md +36 -0
- package/.claude/agents/base-template-generator.md +41 -0
- package/.claude/agents/consensus/byzantine-coordinator.md +43 -0
- package/.claude/agents/consensus/crdt-synchronizer.md +977 -0
- package/.claude/agents/consensus/gossip-coordinator.md +43 -0
- package/.claude/agents/consensus/performance-benchmarker.md +831 -0
- package/.claude/agents/consensus/quorum-manager.md +803 -0
- package/.claude/agents/consensus/raft-manager.md +43 -0
- package/.claude/agents/consensus/security-manager.md +602 -0
- package/.claude/agents/core/coder.md +244 -0
- package/.claude/agents/core/planner.md +152 -0
- package/.claude/agents/core/researcher.md +174 -0
- package/.claude/agents/core/reviewer.md +309 -0
- package/.claude/agents/core/tester.md +300 -0
- package/.claude/agents/custom/test-long-runner.md +43 -0
- package/.claude/agents/data/ml/data-ml-model.md +76 -0
- package/.claude/agents/database-specialist.md +9 -0
- package/.claude/agents/development/backend/dev-backend-api.md +29 -0
- package/.claude/agents/development/dev-backend-api.md +178 -0
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +52 -0
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +63 -0
- package/.claude/agents/dual-mode/codex-coordinator.md +201 -0
- package/.claude/agents/dual-mode/codex-worker.md +183 -0
- package/.claude/agents/dual-mode/dual-orchestrator.md +253 -0
- package/.claude/agents/flow-nexus/app-store.md +88 -0
- package/.claude/agents/flow-nexus/authentication.md +69 -0
- package/.claude/agents/flow-nexus/challenges.md +81 -0
- package/.claude/agents/flow-nexus/neural-network.md +88 -0
- package/.claude/agents/flow-nexus/payments.md +83 -0
- package/.claude/agents/flow-nexus/sandbox.md +76 -0
- package/.claude/agents/flow-nexus/swarm.md +76 -0
- package/.claude/agents/flow-nexus/user-tools.md +96 -0
- package/.claude/agents/flow-nexus/workflow.md +84 -0
- package/.claude/agents/github/code-review-swarm.md +521 -0
- package/.claude/agents/github/github-modes.md +154 -0
- package/.claude/agents/github/issue-tracker.md +299 -0
- package/.claude/agents/github/multi-repo-swarm.md +525 -0
- package/.claude/agents/github/pr-manager.md +163 -0
- package/.claude/agents/github/project-board-sync.md +478 -0
- package/.claude/agents/github/release-manager.md +336 -0
- package/.claude/agents/github/release-swarm.md +551 -0
- package/.claude/agents/github/repo-architect.md +365 -0
- package/.claude/agents/github/swarm-issue.md +548 -0
- package/.claude/agents/github/swarm-pr.md +399 -0
- package/.claude/agents/github/sync-coordinator.md +423 -0
- package/.claude/agents/github/workflow-automation.md +605 -0
- package/.claude/agents/goal/agent.md +817 -0
- package/.claude/agents/goal/code-goal-planner.md +445 -0
- package/.claude/agents/goal/goal-planner.md +168 -0
- package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +129 -0
- package/.claude/agents/hive-mind/queen-coordinator.md +202 -0
- package/.claude/agents/hive-mind/scout-explorer.md +241 -0
- package/.claude/agents/hive-mind/swarm-memory-manager.md +192 -0
- package/.claude/agents/hive-mind/worker-specialist.md +216 -0
- package/.claude/agents/neural/safla-neural.md +74 -0
- package/.claude/agents/optimization/benchmark-suite.md +663 -0
- package/.claude/agents/optimization/load-balancer.md +429 -0
- package/.claude/agents/optimization/performance-monitor.md +670 -0
- package/.claude/agents/optimization/resource-allocator.md +672 -0
- package/.claude/agents/optimization/topology-optimizer.md +806 -0
- package/.claude/agents/payments/agentic-payments.md +126 -0
- package/.claude/agents/project-coordinator.md +8 -0
- package/.claude/agents/python-specialist.md +9 -0
- package/.claude/agents/reasoning/agent.md +817 -0
- package/.claude/agents/reasoning/goal-planner.md +73 -0
- package/.claude/agents/security-auditor.md +9 -0
- package/.claude/agents/sona/sona-learning-optimizer.md +65 -0
- package/.claude/agents/sparc/architecture.md +453 -0
- package/.claude/agents/sparc/pseudocode.md +299 -0
- package/.claude/agents/sparc/refinement.md +504 -0
- package/.claude/agents/sparc/specification.md +258 -0
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +88 -0
- package/.claude/agents/sublinear/consensus-coordinator.md +338 -0
- package/.claude/agents/sublinear/matrix-optimizer.md +185 -0
- package/.claude/agents/sublinear/pagerank-analyzer.md +299 -0
- package/.claude/agents/sublinear/performance-optimizer.md +368 -0
- package/.claude/agents/sublinear/trading-predictor.md +246 -0
- package/.claude/agents/swarm/adaptive-coordinator.md +364 -0
- package/.claude/agents/swarm/hierarchical-coordinator.md +300 -0
- package/.claude/agents/swarm/mesh-coordinator.md +363 -0
- package/.claude/agents/templates/automation-smart-agent.md +185 -0
- package/.claude/agents/templates/coordinator-swarm-init.md +83 -0
- package/.claude/agents/templates/github-pr-manager.md +155 -0
- package/.claude/agents/templates/implementer-sparc-coder.md +231 -0
- package/.claude/agents/templates/memory-coordinator.md +163 -0
- package/.claude/agents/templates/migration-plan.md +724 -0
- package/.claude/agents/templates/orchestrator-task.md +120 -0
- package/.claude/agents/templates/performance-analyzer.md +179 -0
- package/.claude/agents/templates/sparc-coordinator.md +163 -0
- package/.claude/agents/testing/production-validator.md +373 -0
- package/.claude/agents/testing/tdd-london-swarm.md +222 -0
- package/.claude/agents/testing/unit/tdd-london-swarm.md +222 -0
- package/.claude/agents/testing/validation/production-validator.md +373 -0
- package/.claude/agents/typescript-specialist.md +9 -0
- package/.claude/agents/v3/database-specialist.md +9 -0
- package/.claude/agents/v3/project-coordinator.md +8 -0
- package/.claude/agents/v3/python-specialist.md +9 -0
- package/.claude/agents/v3/test-architect.md +9 -0
- package/.claude/agents/v3/typescript-specialist.md +9 -0
- package/.claude/agents/v3/v3-integration-architect.md +312 -0
- package/.claude/agents/v3/v3-memory-specialist.md +281 -0
- package/.claude/agents/v3/v3-performance-engineer.md +363 -0
- package/.claude/agents/v3/v3-queen-coordinator.md +63 -0
- package/.claude/agents/v3/v3-security-architect.md +140 -0
- package/.claude/checkpoints/1767754460.json +8 -0
- package/.claude/commands/agents/README.md +10 -0
- package/.claude/commands/agents/agent-capabilities.md +21 -0
- package/.claude/commands/agents/agent-coordination.md +28 -0
- package/.claude/commands/agents/agent-spawning.md +28 -0
- package/.claude/commands/agents/agent-types.md +26 -0
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +54 -0
- package/.claude/commands/analysis/README.md +9 -0
- package/.claude/commands/analysis/bottleneck-detect.md +162 -0
- package/.claude/commands/analysis/performance-bottlenecks.md +59 -0
- package/.claude/commands/analysis/performance-report.md +25 -0
- package/.claude/commands/analysis/token-efficiency.md +45 -0
- package/.claude/commands/analysis/token-usage.md +25 -0
- package/.claude/commands/automation/README.md +9 -0
- package/.claude/commands/automation/auto-agent.md +122 -0
- package/.claude/commands/automation/self-healing.md +106 -0
- package/.claude/commands/automation/session-memory.md +90 -0
- package/.claude/commands/automation/smart-agents.md +73 -0
- package/.claude/commands/automation/smart-spawn.md +25 -0
- package/.claude/commands/automation/workflow-select.md +25 -0
- package/.claude/commands/claude-flow-help.md +103 -0
- package/.claude/commands/claude-flow-memory.md +107 -0
- package/.claude/commands/claude-flow-swarm.md +205 -0
- package/.claude/commands/coordination/README.md +9 -0
- package/.claude/commands/coordination/agent-spawn.md +25 -0
- package/.claude/commands/coordination/init.md +44 -0
- package/.claude/commands/coordination/orchestrate.md +43 -0
- package/.claude/commands/coordination/spawn.md +45 -0
- package/.claude/commands/coordination/swarm-init.md +85 -0
- package/.claude/commands/coordination/task-orchestrate.md +25 -0
- package/.claude/commands/flow-nexus/app-store.md +124 -0
- package/.claude/commands/flow-nexus/challenges.md +120 -0
- package/.claude/commands/flow-nexus/login-registration.md +65 -0
- package/.claude/commands/flow-nexus/neural-network.md +134 -0
- package/.claude/commands/flow-nexus/payments.md +116 -0
- package/.claude/commands/flow-nexus/sandbox.md +83 -0
- package/.claude/commands/flow-nexus/swarm.md +87 -0
- package/.claude/commands/flow-nexus/user-tools.md +152 -0
- package/.claude/commands/flow-nexus/workflow.md +115 -0
- package/.claude/commands/github/README.md +11 -0
- package/.claude/commands/github/code-review-swarm.md +514 -0
- package/.claude/commands/github/code-review.md +25 -0
- package/.claude/commands/github/github-modes.md +147 -0
- package/.claude/commands/github/github-swarm.md +121 -0
- package/.claude/commands/github/issue-tracker.md +292 -0
- package/.claude/commands/github/issue-triage.md +25 -0
- package/.claude/commands/github/multi-repo-swarm.md +519 -0
- package/.claude/commands/github/pr-enhance.md +26 -0
- package/.claude/commands/github/pr-manager.md +170 -0
- package/.claude/commands/github/project-board-sync.md +471 -0
- package/.claude/commands/github/release-manager.md +338 -0
- package/.claude/commands/github/release-swarm.md +544 -0
- package/.claude/commands/github/repo-analyze.md +25 -0
- package/.claude/commands/github/repo-architect.md +367 -0
- package/.claude/commands/github/swarm-issue.md +482 -0
- package/.claude/commands/github/swarm-pr.md +285 -0
- package/.claude/commands/github/sync-coordinator.md +301 -0
- package/.claude/commands/github/workflow-automation.md +442 -0
- package/.claude/commands/hive-mind/README.md +17 -0
- package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-init.md +18 -0
- package/.claude/commands/hive-mind/hive-mind-memory.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-resume.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -0
- package/.claude/commands/hive-mind/hive-mind-status.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-stop.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -0
- package/.claude/commands/hive-mind/hive-mind.md +27 -0
- package/.claude/commands/hooks/README.md +11 -0
- package/.claude/commands/hooks/overview.md +58 -0
- package/.claude/commands/hooks/post-edit.md +117 -0
- package/.claude/commands/hooks/post-task.md +112 -0
- package/.claude/commands/hooks/pre-edit.md +113 -0
- package/.claude/commands/hooks/pre-task.md +111 -0
- package/.claude/commands/hooks/session-end.md +118 -0
- package/.claude/commands/hooks/setup.md +103 -0
- package/.claude/commands/memory/README.md +9 -0
- package/.claude/commands/memory/memory-persist.md +25 -0
- package/.claude/commands/memory/memory-search.md +25 -0
- package/.claude/commands/memory/memory-usage.md +25 -0
- package/.claude/commands/memory/neural.md +47 -0
- package/.claude/commands/monitoring/README.md +9 -0
- package/.claude/commands/monitoring/agent-metrics.md +25 -0
- package/.claude/commands/monitoring/agents.md +44 -0
- package/.claude/commands/monitoring/real-time-view.md +25 -0
- package/.claude/commands/monitoring/status.md +46 -0
- package/.claude/commands/monitoring/swarm-monitor.md +25 -0
- package/.claude/commands/optimization/README.md +9 -0
- package/.claude/commands/optimization/auto-topology.md +62 -0
- package/.claude/commands/optimization/cache-manage.md +25 -0
- package/.claude/commands/optimization/parallel-execute.md +25 -0
- package/.claude/commands/optimization/parallel-execution.md +50 -0
- package/.claude/commands/optimization/topology-optimize.md +25 -0
- package/.claude/commands/pair/README.md +261 -0
- package/.claude/commands/pair/commands.md +546 -0
- package/.claude/commands/pair/config.md +510 -0
- package/.claude/commands/pair/examples.md +512 -0
- package/.claude/commands/pair/modes.md +348 -0
- package/.claude/commands/pair/session.md +407 -0
- package/.claude/commands/pair/start.md +209 -0
- package/.claude/commands/sparc/analyzer.md +52 -0
- package/.claude/commands/sparc/architect.md +53 -0
- package/.claude/commands/sparc/ask.md +97 -0
- package/.claude/commands/sparc/batch-executor.md +54 -0
- package/.claude/commands/sparc/code.md +89 -0
- package/.claude/commands/sparc/coder.md +54 -0
- package/.claude/commands/sparc/debug.md +83 -0
- package/.claude/commands/sparc/debugger.md +54 -0
- package/.claude/commands/sparc/designer.md +53 -0
- package/.claude/commands/sparc/devops.md +109 -0
- package/.claude/commands/sparc/docs-writer.md +80 -0
- package/.claude/commands/sparc/documenter.md +54 -0
- package/.claude/commands/sparc/innovator.md +54 -0
- package/.claude/commands/sparc/integration.md +83 -0
- package/.claude/commands/sparc/mcp.md +117 -0
- package/.claude/commands/sparc/memory-manager.md +54 -0
- package/.claude/commands/sparc/optimizer.md +54 -0
- package/.claude/commands/sparc/orchestrator.md +132 -0
- package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -0
- package/.claude/commands/sparc/refinement-optimization-mode.md +83 -0
- package/.claude/commands/sparc/researcher.md +54 -0
- package/.claude/commands/sparc/reviewer.md +54 -0
- package/.claude/commands/sparc/security-review.md +80 -0
- package/.claude/commands/sparc/sparc-modes.md +174 -0
- package/.claude/commands/sparc/sparc.md +111 -0
- package/.claude/commands/sparc/spec-pseudocode.md +80 -0
- package/.claude/commands/sparc/supabase-admin.md +348 -0
- package/.claude/commands/sparc/swarm-coordinator.md +54 -0
- package/.claude/commands/sparc/tdd.md +54 -0
- package/.claude/commands/sparc/tester.md +54 -0
- package/.claude/commands/sparc/tutorial.md +79 -0
- package/.claude/commands/sparc/workflow-manager.md +54 -0
- package/.claude/commands/sparc.md +166 -0
- package/.claude/commands/stream-chain/pipeline.md +121 -0
- package/.claude/commands/stream-chain/run.md +70 -0
- package/.claude/commands/swarm/README.md +15 -0
- package/.claude/commands/swarm/analysis.md +95 -0
- package/.claude/commands/swarm/development.md +96 -0
- package/.claude/commands/swarm/examples.md +168 -0
- package/.claude/commands/swarm/maintenance.md +102 -0
- package/.claude/commands/swarm/optimization.md +117 -0
- package/.claude/commands/swarm/research.md +136 -0
- package/.claude/commands/swarm/swarm-analysis.md +8 -0
- package/.claude/commands/swarm/swarm-background.md +8 -0
- package/.claude/commands/swarm/swarm-init.md +19 -0
- package/.claude/commands/swarm/swarm-modes.md +8 -0
- package/.claude/commands/swarm/swarm-monitor.md +8 -0
- package/.claude/commands/swarm/swarm-spawn.md +19 -0
- package/.claude/commands/swarm/swarm-status.md +8 -0
- package/.claude/commands/swarm/swarm-strategies.md +8 -0
- package/.claude/commands/swarm/swarm.md +27 -0
- package/.claude/commands/swarm/testing.md +131 -0
- package/.claude/commands/training/README.md +9 -0
- package/.claude/commands/training/model-update.md +25 -0
- package/.claude/commands/training/neural-patterns.md +74 -0
- package/.claude/commands/training/neural-train.md +25 -0
- package/.claude/commands/training/pattern-learn.md +25 -0
- package/.claude/commands/training/specialization.md +63 -0
- package/.claude/commands/truth/start.md +143 -0
- package/.claude/commands/verify/check.md +50 -0
- package/.claude/commands/verify/start.md +128 -0
- package/.claude/commands/workflows/README.md +9 -0
- package/.claude/commands/workflows/development.md +78 -0
- package/.claude/commands/workflows/research.md +63 -0
- package/.claude/commands/workflows/workflow-create.md +25 -0
- package/.claude/commands/workflows/workflow-execute.md +25 -0
- package/.claude/commands/workflows/workflow-export.md +25 -0
- package/.claude/config/v3-dependency-optimization.json +266 -0
- package/.claude/config/v3-performance-targets.json +251 -0
- package/.claude/helpers/README.md +97 -0
- package/.claude/helpers/adr-compliance.sh +186 -0
- package/.claude/helpers/aggressive-microcompact.mjs +36 -0
- package/.claude/helpers/auto-commit.sh +178 -0
- package/.claude/helpers/auto-memory-hook.mjs +369 -0
- package/.claude/helpers/checkpoint-manager.sh +251 -0
- package/.claude/helpers/context-persistence-hook.mjs +1979 -0
- package/.claude/helpers/daemon-manager.sh +252 -0
- package/.claude/helpers/ddd-tracker.sh +144 -0
- package/.claude/helpers/github-safe.js +106 -0
- package/.claude/helpers/github-setup.sh +28 -0
- package/.claude/helpers/guidance-hook.sh +13 -0
- package/.claude/helpers/guidance-hooks.sh +102 -0
- package/.claude/helpers/health-monitor.sh +108 -0
- package/.claude/helpers/hook-handler.cjs +234 -0
- package/.claude/helpers/intelligence.cjs +207 -0
- package/.claude/helpers/learning-hooks.sh +329 -0
- package/.claude/helpers/learning-optimizer.sh +127 -0
- package/.claude/helpers/learning-service.mjs +1144 -0
- package/.claude/helpers/memory.cjs +84 -0
- package/.claude/helpers/metrics-db.mjs +488 -0
- package/.claude/helpers/pattern-consolidator.sh +86 -0
- package/.claude/helpers/perf-worker.sh +160 -0
- package/.claude/helpers/quick-start.sh +19 -0
- package/.claude/helpers/router.cjs +62 -0
- package/.claude/helpers/security-scanner.sh +127 -0
- package/.claude/helpers/session.cjs +125 -0
- package/.claude/helpers/setup-mcp.sh +18 -0
- package/.claude/helpers/standard-checkpoint-hooks.sh +189 -0
- package/.claude/helpers/statusline.cjs +770 -0
- package/.claude/helpers/swarm-comms.sh +353 -0
- package/.claude/helpers/swarm-hooks.sh +761 -0
- package/.claude/helpers/swarm-monitor.sh +211 -0
- package/.claude/helpers/sync-v3-metrics.sh +245 -0
- package/.claude/helpers/update-v3-progress.sh +166 -0
- package/.claude/helpers/v3-quick-status.sh +58 -0
- package/.claude/helpers/v3.sh +111 -0
- package/.claude/helpers/validate-v3-config.sh +216 -0
- package/.claude/helpers/worker-manager.sh +170 -0
- package/.claude/mcp.json +13 -0
- package/.claude/settings copy.json +526 -0
- package/.claude/settings.json +305 -0
- package/.claude/skills/agentdb-advanced/SKILL.md +550 -0
- package/.claude/skills/agentdb-learning/SKILL.md +545 -0
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -0
- package/.claude/skills/agentdb-optimization/SKILL.md +509 -0
- package/.claude/skills/agentdb-vector-search/SKILL.md +339 -0
- package/.claude/skills/agentic-jujutsu/SKILL.md +645 -0
- package/.claude/skills/dual-mode/README.md +71 -0
- package/.claude/skills/dual-mode/dual-collect.md +103 -0
- package/.claude/skills/dual-mode/dual-coordinate.md +85 -0
- package/.claude/skills/dual-mode/dual-spawn.md +81 -0
- package/.claude/skills/flow-nexus-neural/SKILL.md +727 -0
- package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -0
- package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -0
- package/.claude/skills/github-code-review/SKILL.md +1125 -0
- package/.claude/skills/github-multi-repo/SKILL.md +862 -0
- package/.claude/skills/github-project-management/SKILL.md +1250 -0
- package/.claude/skills/github-release-management/SKILL.md +1064 -0
- package/.claude/skills/github-workflow-automation/SKILL.md +1047 -0
- package/.claude/skills/hive-mind-advanced/SKILL.md +709 -0
- package/.claude/skills/hooks-automation/SKILL.md +1201 -0
- package/.claude/skills/pair-programming/SKILL.md +1202 -0
- package/.claude/skills/performance-analysis/SKILL.md +560 -0
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -0
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -0
- package/.claude/skills/skill-builder/SKILL.md +910 -0
- package/.claude/skills/sparc-methodology/SKILL.md +1106 -0
- package/.claude/skills/stream-chain/SKILL.md +560 -0
- package/.claude/skills/swarm-advanced/SKILL.md +970 -0
- package/.claude/skills/swarm-orchestration/SKILL.md +179 -0
- package/.claude/skills/v3-cli-modernization/SKILL.md +872 -0
- package/.claude/skills/v3-core-implementation/SKILL.md +797 -0
- package/.claude/skills/v3-ddd-architecture/SKILL.md +442 -0
- package/.claude/skills/v3-integration-deep/SKILL.md +241 -0
- package/.claude/skills/v3-mcp-optimization/SKILL.md +777 -0
- package/.claude/skills/v3-memory-unification/SKILL.md +174 -0
- package/.claude/skills/v3-performance-optimization/SKILL.md +390 -0
- package/.claude/skills/v3-security-overhaul/SKILL.md +82 -0
- package/.claude/skills/v3-swarm-coordination/SKILL.md +340 -0
- package/.claude/skills/verification-quality/SKILL.md +647 -0
- package/.claude/skills/worker-benchmarks/SKILL.md +129 -0
- package/.claude/skills/worker-integration/SKILL.md +147 -0
- package/.claude/statusline-command.sh +176 -0
- package/.claude/statusline.mjs +109 -0
- package/.claude/statusline.sh +431 -0
- package/.claude-plugin/README.md +720 -0
- package/.claude-plugin/docs/INSTALLATION.md +261 -0
- package/.claude-plugin/docs/PLUGIN_SUMMARY.md +361 -0
- package/.claude-plugin/docs/QUICKSTART.md +361 -0
- package/.claude-plugin/docs/STRUCTURE.md +128 -0
- package/.claude-plugin/hooks/hooks.json +74 -0
- package/.claude-plugin/marketplace.json +96 -0
- package/.claude-plugin/plugin.json +71 -0
- package/.claude-plugin/scripts/install.sh +234 -0
- package/.claude-plugin/scripts/uninstall.sh +36 -0
- package/.claude-plugin/scripts/verify.sh +108 -0
- package/LICENSE +21 -0
- package/README.md +7541 -0
- package/bin/cli.js +11 -0
- package/bin/npx-repair.js +7 -0
- package/bin/npx-safe-launch.js +9 -0
- package/package.json +84 -0
- package/v3/@claude-flow/cli/README.md +192 -0
- package/v3/@claude-flow/cli/bin/cli.js +156 -0
- package/v3/@claude-flow/cli/bin/mcp-server.js +189 -0
- package/v3/@claude-flow/cli/bin/preinstall.cjs +2 -0
- package/v3/@claude-flow/cli/dist/src/appliance/gguf-engine.d.ts +91 -0
- package/v3/@claude-flow/cli/dist/src/appliance/gguf-engine.js +425 -0
- package/v3/@claude-flow/cli/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
- package/v3/@claude-flow/cli/dist/src/appliance/ruvllm-bridge.js +292 -0
- package/v3/@claude-flow/cli/dist/src/appliance/rvfa-builder.d.ts +44 -0
- package/v3/@claude-flow/cli/dist/src/appliance/rvfa-builder.js +329 -0
- package/v3/@claude-flow/cli/dist/src/appliance/rvfa-distribution.d.ts +97 -0
- package/v3/@claude-flow/cli/dist/src/appliance/rvfa-distribution.js +370 -0
- package/v3/@claude-flow/cli/dist/src/appliance/rvfa-format.d.ts +111 -0
- package/v3/@claude-flow/cli/dist/src/appliance/rvfa-format.js +393 -0
- package/v3/@claude-flow/cli/dist/src/appliance/rvfa-runner.d.ts +69 -0
- package/v3/@claude-flow/cli/dist/src/appliance/rvfa-runner.js +237 -0
- package/v3/@claude-flow/cli/dist/src/appliance/rvfa-signing.d.ts +123 -0
- package/v3/@claude-flow/cli/dist/src/appliance/rvfa-signing.js +347 -0
- package/v3/@claude-flow/cli/dist/src/autopilot-state.d.ts +77 -0
- package/v3/@claude-flow/cli/dist/src/autopilot-state.js +279 -0
- package/v3/@claude-flow/cli/dist/src/benchmarks/pretrain/index.d.ts +58 -0
- package/v3/@claude-flow/cli/dist/src/benchmarks/pretrain/index.js +404 -0
- package/v3/@claude-flow/cli/dist/src/commands/agent-wasm.d.ts +14 -0
- package/v3/@claude-flow/cli/dist/src/commands/agent-wasm.js +333 -0
- package/v3/@claude-flow/cli/dist/src/commands/agent.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/agent.js +927 -0
- package/v3/@claude-flow/cli/dist/src/commands/analyze.d.ts +17 -0
- package/v3/@claude-flow/cli/dist/src/commands/analyze.js +1821 -0
- package/v3/@claude-flow/cli/dist/src/commands/appliance-advanced.d.ts +9 -0
- package/v3/@claude-flow/cli/dist/src/commands/appliance-advanced.js +215 -0
- package/v3/@claude-flow/cli/dist/src/commands/appliance.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/appliance.js +406 -0
- package/v3/@claude-flow/cli/dist/src/commands/autopilot.d.ts +15 -0
- package/v3/@claude-flow/cli/dist/src/commands/autopilot.js +362 -0
- package/v3/@claude-flow/cli/dist/src/commands/benchmark.d.ts +10 -0
- package/v3/@claude-flow/cli/dist/src/commands/benchmark.js +459 -0
- package/v3/@claude-flow/cli/dist/src/commands/claims.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/claims.js +621 -0
- package/v3/@claude-flow/cli/dist/src/commands/cleanup.d.ts +11 -0
- package/v3/@claude-flow/cli/dist/src/commands/cleanup.js +216 -0
- package/v3/@claude-flow/cli/dist/src/commands/completions.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/completions.js +537 -0
- package/v3/@claude-flow/cli/dist/src/commands/config.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/config.js +356 -0
- package/v3/@claude-flow/cli/dist/src/commands/daemon.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/daemon.js +669 -0
- package/v3/@claude-flow/cli/dist/src/commands/deployment.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/deployment.js +669 -0
- package/v3/@claude-flow/cli/dist/src/commands/doctor.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/doctor.js +617 -0
- package/v3/@claude-flow/cli/dist/src/commands/embeddings.d.ts +16 -0
- package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +1573 -0
- package/v3/@claude-flow/cli/dist/src/commands/guidance.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/guidance.js +560 -0
- package/v3/@claude-flow/cli/dist/src/commands/hive-mind.d.ts +11 -0
- package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +1237 -0
- package/v3/@claude-flow/cli/dist/src/commands/hooks.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/hooks.js +4441 -0
- package/v3/@claude-flow/cli/dist/src/commands/index.d.ts +117 -0
- package/v3/@claude-flow/cli/dist/src/commands/index.js +384 -0
- package/v3/@claude-flow/cli/dist/src/commands/init.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/init.js +969 -0
- package/v3/@claude-flow/cli/dist/src/commands/issues.d.ts +21 -0
- package/v3/@claude-flow/cli/dist/src/commands/issues.js +567 -0
- package/v3/@claude-flow/cli/dist/src/commands/mcp.d.ts +11 -0
- package/v3/@claude-flow/cli/dist/src/commands/mcp.js +718 -0
- package/v3/@claude-flow/cli/dist/src/commands/memory.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/memory.js +1299 -0
- package/v3/@claude-flow/cli/dist/src/commands/migrate.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/migrate.js +742 -0
- package/v3/@claude-flow/cli/dist/src/commands/neural.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/neural.js +1451 -0
- package/v3/@claude-flow/cli/dist/src/commands/performance.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/performance.js +576 -0
- package/v3/@claude-flow/cli/dist/src/commands/plugins.d.ts +9 -0
- package/v3/@claude-flow/cli/dist/src/commands/plugins.js +817 -0
- package/v3/@claude-flow/cli/dist/src/commands/process.d.ts +10 -0
- package/v3/@claude-flow/cli/dist/src/commands/process.js +641 -0
- package/v3/@claude-flow/cli/dist/src/commands/progress.d.ts +11 -0
- package/v3/@claude-flow/cli/dist/src/commands/progress.js +259 -0
- package/v3/@claude-flow/cli/dist/src/commands/providers.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/providers.js +355 -0
- package/v3/@claude-flow/cli/dist/src/commands/route.d.ts +14 -0
- package/v3/@claude-flow/cli/dist/src/commands/route.js +811 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.d.ts +11 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +746 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.d.ts +11 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +480 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.d.ts +16 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +347 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/index.d.ts +27 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/index.js +127 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.d.ts +11 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +431 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.d.ts +11 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +481 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.d.ts +11 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +503 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.d.ts +16 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +763 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.d.ts +11 -0
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +456 -0
- package/v3/@claude-flow/cli/dist/src/commands/security.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/security.js +614 -0
- package/v3/@claude-flow/cli/dist/src/commands/session.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/session.js +750 -0
- package/v3/@claude-flow/cli/dist/src/commands/start.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/start.js +418 -0
- package/v3/@claude-flow/cli/dist/src/commands/status.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/status.js +591 -0
- package/v3/@claude-flow/cli/dist/src/commands/swarm.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/swarm.js +802 -0
- package/v3/@claude-flow/cli/dist/src/commands/task.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/task.js +671 -0
- package/v3/@claude-flow/cli/dist/src/commands/transfer-store.d.ts +13 -0
- package/v3/@claude-flow/cli/dist/src/commands/transfer-store.js +428 -0
- package/v3/@claude-flow/cli/dist/src/commands/update.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/update.js +276 -0
- package/v3/@claude-flow/cli/dist/src/commands/workflow.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/commands/workflow.js +617 -0
- package/v3/@claude-flow/cli/dist/src/config-adapter.d.ts +15 -0
- package/v3/@claude-flow/cli/dist/src/config-adapter.js +186 -0
- package/v3/@claude-flow/cli/dist/src/index.d.ts +74 -0
- package/v3/@claude-flow/cli/dist/src/index.js +469 -0
- package/v3/@claude-flow/cli/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
- package/v3/@claude-flow/cli/dist/src/infrastructure/in-memory-repositories.js +264 -0
- package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.d.ts +25 -0
- package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +486 -0
- package/v3/@claude-flow/cli/dist/src/init/executor.d.ts +41 -0
- package/v3/@claude-flow/cli/dist/src/init/executor.js +1776 -0
- package/v3/@claude-flow/cli/dist/src/init/helpers-generator.d.ts +60 -0
- package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +1181 -0
- package/v3/@claude-flow/cli/dist/src/init/index.d.ts +13 -0
- package/v3/@claude-flow/cli/dist/src/init/index.js +15 -0
- package/v3/@claude-flow/cli/dist/src/init/mcp-generator.d.ts +26 -0
- package/v3/@claude-flow/cli/dist/src/init/mcp-generator.js +101 -0
- package/v3/@claude-flow/cli/dist/src/init/settings-generator.d.ts +14 -0
- package/v3/@claude-flow/cli/dist/src/init/settings-generator.js +392 -0
- package/v3/@claude-flow/cli/dist/src/init/statusline-generator.d.ts +28 -0
- package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +833 -0
- package/v3/@claude-flow/cli/dist/src/init/types.d.ts +295 -0
- package/v3/@claude-flow/cli/dist/src/init/types.js +263 -0
- package/v3/@claude-flow/cli/dist/src/mcp-client.d.ts +92 -0
- package/v3/@claude-flow/cli/dist/src/mcp-client.js +227 -0
- package/v3/@claude-flow/cli/dist/src/mcp-server.d.ts +163 -0
- package/v3/@claude-flow/cli/dist/src/mcp-server.js +654 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/agent-tools.d.ts +9 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/agent-tools.js +550 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js +557 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/analyze-tools.js +317 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/claims-tools.d.ts +12 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/claims-tools.js +732 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/config-tools.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/config-tools.js +357 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/coordination-tools.d.ts +13 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/coordination-tools.js +665 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/embeddings-tools.d.ts +9 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/embeddings-tools.js +782 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/hive-mind-tools.js +811 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.d.ts +44 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js +3120 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/index.d.ts +22 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/index.js +21 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.d.ts +14 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js +512 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/neural-tools.d.ts +16 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/neural-tools.js +461 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/performance-tools.d.ts +16 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/performance-tools.js +534 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/progress-tools.d.ts +14 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/progress-tools.js +348 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.d.ts +16 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.js +404 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/session-tools.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/session-tools.js +315 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/swarm-tools.d.ts +9 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/swarm-tools.js +288 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/system-tools.d.ts +13 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/system-tools.js +408 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/task-tools.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/task-tools.js +405 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/types.d.ts +31 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/types.js +7 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/workflow-tools.d.ts +8 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/workflow-tools.js +572 -0
- package/v3/@claude-flow/cli/dist/src/memory/ewc-consolidation.d.ts +295 -0
- package/v3/@claude-flow/cli/dist/src/memory/ewc-consolidation.js +601 -0
- package/v3/@claude-flow/cli/dist/src/memory/intelligence.d.ts +338 -0
- package/v3/@claude-flow/cli/dist/src/memory/intelligence.js +1023 -0
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.d.ts +407 -0
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +1499 -0
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.d.ts +412 -0
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +2222 -0
- package/v3/@claude-flow/cli/dist/src/memory/sona-optimizer.d.ts +227 -0
- package/v3/@claude-flow/cli/dist/src/memory/sona-optimizer.js +633 -0
- package/v3/@claude-flow/cli/dist/src/output.d.ts +133 -0
- package/v3/@claude-flow/cli/dist/src/output.js +514 -0
- package/v3/@claude-flow/cli/dist/src/parser.d.ts +51 -0
- package/v3/@claude-flow/cli/dist/src/parser.js +425 -0
- package/v3/@claude-flow/cli/dist/src/plugins/manager.d.ts +133 -0
- package/v3/@claude-flow/cli/dist/src/plugins/manager.js +400 -0
- package/v3/@claude-flow/cli/dist/src/plugins/store/discovery.d.ts +88 -0
- package/v3/@claude-flow/cli/dist/src/plugins/store/discovery.js +1147 -0
- package/v3/@claude-flow/cli/dist/src/plugins/store/index.d.ts +76 -0
- package/v3/@claude-flow/cli/dist/src/plugins/store/index.js +141 -0
- package/v3/@claude-flow/cli/dist/src/plugins/store/search.d.ts +46 -0
- package/v3/@claude-flow/cli/dist/src/plugins/store/search.js +230 -0
- package/v3/@claude-flow/cli/dist/src/plugins/store/types.d.ts +274 -0
- package/v3/@claude-flow/cli/dist/src/plugins/store/types.js +7 -0
- package/v3/@claude-flow/cli/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
- package/v3/@claude-flow/cli/dist/src/plugins/tests/demo-plugin-store.js +126 -0
- package/v3/@claude-flow/cli/dist/src/plugins/tests/standalone-test.d.ts +12 -0
- package/v3/@claude-flow/cli/dist/src/plugins/tests/standalone-test.js +188 -0
- package/v3/@claude-flow/cli/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
- package/v3/@claude-flow/cli/dist/src/plugins/tests/test-plugin-store.js +206 -0
- package/v3/@claude-flow/cli/dist/src/production/circuit-breaker.d.ts +101 -0
- package/v3/@claude-flow/cli/dist/src/production/circuit-breaker.js +241 -0
- package/v3/@claude-flow/cli/dist/src/production/error-handler.d.ts +92 -0
- package/v3/@claude-flow/cli/dist/src/production/error-handler.js +299 -0
- package/v3/@claude-flow/cli/dist/src/production/index.d.ts +23 -0
- package/v3/@claude-flow/cli/dist/src/production/index.js +18 -0
- package/v3/@claude-flow/cli/dist/src/production/monitoring.d.ts +161 -0
- package/v3/@claude-flow/cli/dist/src/production/monitoring.js +356 -0
- package/v3/@claude-flow/cli/dist/src/production/rate-limiter.d.ts +80 -0
- package/v3/@claude-flow/cli/dist/src/production/rate-limiter.js +201 -0
- package/v3/@claude-flow/cli/dist/src/production/retry.d.ts +48 -0
- package/v3/@claude-flow/cli/dist/src/production/retry.js +179 -0
- package/v3/@claude-flow/cli/dist/src/prompt.d.ts +44 -0
- package/v3/@claude-flow/cli/dist/src/prompt.js +501 -0
- package/v3/@claude-flow/cli/dist/src/runtime/headless.d.ts +60 -0
- package/v3/@claude-flow/cli/dist/src/runtime/headless.js +284 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/agent-wasm.d.ts +182 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/agent-wasm.js +316 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/ast-analyzer.d.ts +67 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/ast-analyzer.js +277 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/coverage-router.d.ts +160 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/coverage-router.js +529 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/coverage-tools.d.ts +33 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/coverage-tools.js +157 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/diff-classifier.d.ts +175 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/diff-classifier.js +698 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/enhanced-model-router.d.ts +146 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/enhanced-model-router.js +513 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.d.ts +193 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.js +641 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/graph-analyzer.d.ts +187 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/graph-analyzer.js +929 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/index.d.ts +40 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/index.js +76 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/lora-adapter.d.ts +218 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/lora-adapter.js +455 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/model-router.d.ts +220 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/model-router.js +488 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/moe-router.d.ts +206 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/moe-router.js +626 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/q-learning-router.d.ts +211 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/q-learning-router.js +681 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/ruvllm-wasm.d.ts +179 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/ruvllm-wasm.js +363 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/semantic-router.d.ts +77 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/semantic-router.js +178 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/vector-db.d.ts +67 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/vector-db.js +241 -0
- package/v3/@claude-flow/cli/dist/src/services/agentic-flow-bridge.d.ts +50 -0
- package/v3/@claude-flow/cli/dist/src/services/agentic-flow-bridge.js +95 -0
- package/v3/@claude-flow/cli/dist/src/services/claim-service.d.ts +204 -0
- package/v3/@claude-flow/cli/dist/src/services/claim-service.js +818 -0
- package/v3/@claude-flow/cli/dist/src/services/config-file-manager.d.ts +37 -0
- package/v3/@claude-flow/cli/dist/src/services/config-file-manager.js +224 -0
- package/v3/@claude-flow/cli/dist/src/services/container-worker-pool.d.ts +197 -0
- package/v3/@claude-flow/cli/dist/src/services/container-worker-pool.js +583 -0
- package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.d.ts +304 -0
- package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +1024 -0
- package/v3/@claude-flow/cli/dist/src/services/index.d.ts +13 -0
- package/v3/@claude-flow/cli/dist/src/services/index.js +11 -0
- package/v3/@claude-flow/cli/dist/src/services/registry-api.d.ts +58 -0
- package/v3/@claude-flow/cli/dist/src/services/registry-api.js +146 -0
- package/v3/@claude-flow/cli/dist/src/services/ruvector-training.d.ts +220 -0
- package/v3/@claude-flow/cli/dist/src/services/ruvector-training.js +686 -0
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.d.ts +245 -0
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +960 -0
- package/v3/@claude-flow/cli/dist/src/services/worker-queue.d.ts +194 -0
- package/v3/@claude-flow/cli/dist/src/services/worker-queue.js +513 -0
- package/v3/@claude-flow/cli/dist/src/suggest.d.ts +51 -0
- package/v3/@claude-flow/cli/dist/src/suggest.js +198 -0
- package/v3/@claude-flow/cli/dist/src/transfer/anonymization/index.d.ts +25 -0
- package/v3/@claude-flow/cli/dist/src/transfer/anonymization/index.js +175 -0
- package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.d.ts +13 -0
- package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +205 -0
- package/v3/@claude-flow/cli/dist/src/transfer/export.d.ts +25 -0
- package/v3/@claude-flow/cli/dist/src/transfer/export.js +113 -0
- package/v3/@claude-flow/cli/dist/src/transfer/index.d.ts +12 -0
- package/v3/@claude-flow/cli/dist/src/transfer/index.js +31 -0
- package/v3/@claude-flow/cli/dist/src/transfer/ipfs/client.d.ts +109 -0
- package/v3/@claude-flow/cli/dist/src/transfer/ipfs/client.js +307 -0
- package/v3/@claude-flow/cli/dist/src/transfer/ipfs/upload.d.ts +95 -0
- package/v3/@claude-flow/cli/dist/src/transfer/ipfs/upload.js +411 -0
- package/v3/@claude-flow/cli/dist/src/transfer/models/seraphine.d.ts +72 -0
- package/v3/@claude-flow/cli/dist/src/transfer/models/seraphine.js +373 -0
- package/v3/@claude-flow/cli/dist/src/transfer/serialization/cfp.d.ts +49 -0
- package/v3/@claude-flow/cli/dist/src/transfer/serialization/cfp.js +183 -0
- package/v3/@claude-flow/cli/dist/src/transfer/storage/gcs.d.ts +82 -0
- package/v3/@claude-flow/cli/dist/src/transfer/storage/gcs.js +272 -0
- package/v3/@claude-flow/cli/dist/src/transfer/storage/index.d.ts +6 -0
- package/v3/@claude-flow/cli/dist/src/transfer/storage/index.js +6 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/discovery.d.ts +84 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/discovery.js +382 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/download.d.ts +70 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/download.js +334 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/index.d.ts +84 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/index.js +153 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/publish.d.ts +76 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/publish.js +294 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/registry.d.ts +58 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/registry.js +285 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/search.d.ts +54 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/search.js +232 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/tests/standalone-test.js +190 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/types.d.ts +193 -0
- package/v3/@claude-flow/cli/dist/src/transfer/store/types.js +6 -0
- package/v3/@claude-flow/cli/dist/src/transfer/test-seraphine.d.ts +6 -0
- package/v3/@claude-flow/cli/dist/src/transfer/test-seraphine.js +105 -0
- package/v3/@claude-flow/cli/dist/src/transfer/tests/test-store.d.ts +7 -0
- package/v3/@claude-flow/cli/dist/src/transfer/tests/test-store.js +214 -0
- package/v3/@claude-flow/cli/dist/src/transfer/types.d.ts +245 -0
- package/v3/@claude-flow/cli/dist/src/transfer/types.js +6 -0
- package/v3/@claude-flow/cli/dist/src/types.d.ts +198 -0
- package/v3/@claude-flow/cli/dist/src/types.js +38 -0
- package/v3/@claude-flow/cli/dist/src/update/checker.d.ts +34 -0
- package/v3/@claude-flow/cli/dist/src/update/checker.js +190 -0
- package/v3/@claude-flow/cli/dist/src/update/executor.d.ts +32 -0
- package/v3/@claude-flow/cli/dist/src/update/executor.js +181 -0
- package/v3/@claude-flow/cli/dist/src/update/index.d.ts +33 -0
- package/v3/@claude-flow/cli/dist/src/update/index.js +64 -0
- package/v3/@claude-flow/cli/dist/src/update/rate-limiter.d.ts +20 -0
- package/v3/@claude-flow/cli/dist/src/update/rate-limiter.js +96 -0
- package/v3/@claude-flow/cli/dist/src/update/validator.d.ts +17 -0
- package/v3/@claude-flow/cli/dist/src/update/validator.js +123 -0
- package/v3/@claude-flow/cli/dist/src/utils/path-validation.d.ts +20 -0
- package/v3/@claude-flow/cli/dist/src/utils/path-validation.js +80 -0
- package/v3/@claude-flow/cli/package.json +75 -0
- package/v3/@claude-flow/shared/README.md +323 -0
- package/v3/@claude-flow/shared/package.json +42 -0
- package/v3/README.md +493 -0
|
@@ -0,0 +1,1023 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Intelligence Module
|
|
3
|
+
* Optimized SONA (Self-Optimizing Neural Architecture) and ReasoningBank
|
|
4
|
+
* for adaptive learning and pattern recognition
|
|
5
|
+
*
|
|
6
|
+
* Performance targets:
|
|
7
|
+
* - Signal recording: <0.05ms (achieved: ~0.01ms)
|
|
8
|
+
* - Pattern search: O(log n) with HNSW
|
|
9
|
+
* - Memory efficient circular buffers
|
|
10
|
+
*
|
|
11
|
+
* @module v3/cli/intelligence
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
14
|
+
import { homedir } from 'node:os';
|
|
15
|
+
import { join } from 'node:path';
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Persistence Configuration
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Get the data directory for neural pattern persistence
|
|
21
|
+
* Uses .claude-flow/neural in the current working directory,
|
|
22
|
+
* falling back to home directory
|
|
23
|
+
*/
|
|
24
|
+
function getDataDir() {
|
|
25
|
+
const cwd = process.cwd();
|
|
26
|
+
const localDir = join(cwd, '.claude-flow', 'neural');
|
|
27
|
+
const homeDir = join(homedir(), '.claude-flow', 'neural');
|
|
28
|
+
// Prefer local directory if .claude-flow exists
|
|
29
|
+
if (existsSync(join(cwd, '.claude-flow'))) {
|
|
30
|
+
return localDir;
|
|
31
|
+
}
|
|
32
|
+
return homeDir;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Ensure the data directory exists
|
|
36
|
+
*/
|
|
37
|
+
function ensureDataDir() {
|
|
38
|
+
const dir = getDataDir();
|
|
39
|
+
if (!existsSync(dir)) {
|
|
40
|
+
mkdirSync(dir, { recursive: true });
|
|
41
|
+
}
|
|
42
|
+
return dir;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the patterns file path
|
|
46
|
+
*/
|
|
47
|
+
function getPatternsPath() {
|
|
48
|
+
return join(getDataDir(), 'patterns.json');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get the stats file path
|
|
52
|
+
*/
|
|
53
|
+
function getStatsPath() {
|
|
54
|
+
return join(getDataDir(), 'stats.json');
|
|
55
|
+
}
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Default Configuration
|
|
58
|
+
// ============================================================================
|
|
59
|
+
const DEFAULT_SONA_CONFIG = {
|
|
60
|
+
instantLoopEnabled: true,
|
|
61
|
+
backgroundLoopEnabled: false,
|
|
62
|
+
loraLearningRate: 0.001,
|
|
63
|
+
loraRank: 8,
|
|
64
|
+
ewcLambda: 0.4,
|
|
65
|
+
maxTrajectorySize: 100,
|
|
66
|
+
patternThreshold: 0.7,
|
|
67
|
+
maxSignals: 10000,
|
|
68
|
+
maxPatterns: 5000
|
|
69
|
+
};
|
|
70
|
+
// ============================================================================
|
|
71
|
+
// Optimized Local SONA Implementation
|
|
72
|
+
// ============================================================================
|
|
73
|
+
/**
|
|
74
|
+
* Lightweight SONA Coordinator
|
|
75
|
+
* Uses circular buffer for O(1) signal recording
|
|
76
|
+
* Achieves <0.05ms per operation
|
|
77
|
+
*/
|
|
78
|
+
class LocalSonaCoordinator {
|
|
79
|
+
config;
|
|
80
|
+
signals;
|
|
81
|
+
signalHead = 0;
|
|
82
|
+
signalCount = 0;
|
|
83
|
+
trajectories = [];
|
|
84
|
+
adaptationTimes = [];
|
|
85
|
+
currentTrajectorySteps = [];
|
|
86
|
+
constructor(config) {
|
|
87
|
+
this.config = config;
|
|
88
|
+
// Pre-allocate circular buffer
|
|
89
|
+
this.signals = new Array(config.maxSignals);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Record a signal - O(1) operation
|
|
93
|
+
* Target: <0.05ms
|
|
94
|
+
*/
|
|
95
|
+
recordSignal(signal) {
|
|
96
|
+
const start = performance.now();
|
|
97
|
+
// Circular buffer insertion - constant time
|
|
98
|
+
this.signals[this.signalHead] = signal;
|
|
99
|
+
this.signalHead = (this.signalHead + 1) % this.config.maxSignals;
|
|
100
|
+
if (this.signalCount < this.config.maxSignals) {
|
|
101
|
+
this.signalCount++;
|
|
102
|
+
}
|
|
103
|
+
const elapsed = performance.now() - start;
|
|
104
|
+
this.adaptationTimes.push(elapsed);
|
|
105
|
+
if (this.adaptationTimes.length > 100) {
|
|
106
|
+
this.adaptationTimes.shift();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Record complete trajectory
|
|
111
|
+
*/
|
|
112
|
+
recordTrajectory(trajectory) {
|
|
113
|
+
this.trajectories.push(trajectory);
|
|
114
|
+
if (this.trajectories.length > this.config.maxTrajectorySize) {
|
|
115
|
+
this.trajectories.shift();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get recent signals
|
|
120
|
+
*/
|
|
121
|
+
getRecentSignals(count = 10) {
|
|
122
|
+
const result = [];
|
|
123
|
+
const actualCount = Math.min(count, this.signalCount);
|
|
124
|
+
for (let i = 0; i < actualCount; i++) {
|
|
125
|
+
const idx = (this.signalHead - 1 - i + this.config.maxSignals) % this.config.maxSignals;
|
|
126
|
+
if (this.signals[idx]) {
|
|
127
|
+
result.push(this.signals[idx]);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get average adaptation time
|
|
134
|
+
*/
|
|
135
|
+
getAvgAdaptationTime() {
|
|
136
|
+
if (this.adaptationTimes.length === 0)
|
|
137
|
+
return 0;
|
|
138
|
+
return this.adaptationTimes.reduce((a, b) => a + b, 0) / this.adaptationTimes.length;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Add a step to the current in-progress trajectory
|
|
142
|
+
*/
|
|
143
|
+
addTrajectoryStep(step) {
|
|
144
|
+
this.currentTrajectorySteps.push(step);
|
|
145
|
+
// Prevent unbounded growth
|
|
146
|
+
if (this.currentTrajectorySteps.length > this.config.maxTrajectorySize) {
|
|
147
|
+
this.currentTrajectorySteps.shift();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* End the current trajectory with a verdict and apply RL updates.
|
|
152
|
+
* Reward mapping: success=1.0, partial=0.5, failure=-0.5
|
|
153
|
+
*
|
|
154
|
+
* For successful/partial trajectories, boosts confidence of similar patterns
|
|
155
|
+
* in the ReasoningBank. For failures, reduces confidence scores.
|
|
156
|
+
*/
|
|
157
|
+
async endTrajectory(verdict, bank) {
|
|
158
|
+
const rewardMap = {
|
|
159
|
+
success: 1.0,
|
|
160
|
+
partial: 0.5,
|
|
161
|
+
failure: -0.5
|
|
162
|
+
};
|
|
163
|
+
const reward = rewardMap[verdict] ?? 0;
|
|
164
|
+
// Record the completed trajectory
|
|
165
|
+
const completedTrajectory = {
|
|
166
|
+
steps: [...this.currentTrajectorySteps],
|
|
167
|
+
verdict,
|
|
168
|
+
timestamp: Date.now()
|
|
169
|
+
};
|
|
170
|
+
this.recordTrajectory(completedTrajectory);
|
|
171
|
+
// Update pattern confidences based on reward
|
|
172
|
+
let patternsUpdated = 0;
|
|
173
|
+
const allPatterns = bank.getAll();
|
|
174
|
+
for (const step of this.currentTrajectorySteps) {
|
|
175
|
+
if (!step.embedding || step.embedding.length === 0)
|
|
176
|
+
continue;
|
|
177
|
+
// Find patterns similar to this trajectory step
|
|
178
|
+
const similar = bank.findSimilar(step.embedding, {
|
|
179
|
+
k: 3,
|
|
180
|
+
threshold: 0.3
|
|
181
|
+
});
|
|
182
|
+
for (const match of similar) {
|
|
183
|
+
const pattern = bank.get(match.id);
|
|
184
|
+
if (!pattern)
|
|
185
|
+
continue;
|
|
186
|
+
// Adjust confidence: positive reward boosts, negative reduces
|
|
187
|
+
const delta = reward * 0.1; // small step per update
|
|
188
|
+
const newConfidence = Math.max(0.0, Math.min(1.0, pattern.confidence + delta));
|
|
189
|
+
pattern.confidence = newConfidence;
|
|
190
|
+
pattern.usageCount++;
|
|
191
|
+
pattern.lastUsedAt = Date.now();
|
|
192
|
+
patternsUpdated++;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Clear current trajectory
|
|
196
|
+
this.currentTrajectorySteps = [];
|
|
197
|
+
return { reward, patternsUpdated };
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Distill learning from recent successful trajectories.
|
|
201
|
+
* Applies LoRA-style confidence updates and integrates EWC++ consolidation.
|
|
202
|
+
*
|
|
203
|
+
* For each successful trajectory step with high confidence,
|
|
204
|
+
* increases the pattern's stored confidence by loraLearningRate * reward.
|
|
205
|
+
* Before applying updates, checks EWC penalty to prevent catastrophic forgetting.
|
|
206
|
+
*/
|
|
207
|
+
async distillLearning(bank) {
|
|
208
|
+
let patternsDistilled = 0;
|
|
209
|
+
let totalEwcPenalty = 0;
|
|
210
|
+
// Get recent successful trajectories
|
|
211
|
+
const recentSuccessful = this.trajectories.filter(t => t.verdict === 'success' || t.verdict === 'partial').slice(-10); // last 10 successful
|
|
212
|
+
if (recentSuccessful.length === 0) {
|
|
213
|
+
return { patternsDistilled: 0, ewcPenalty: 0 };
|
|
214
|
+
}
|
|
215
|
+
// Try to get EWC consolidator
|
|
216
|
+
let ewcConsolidator = null;
|
|
217
|
+
try {
|
|
218
|
+
const ewcModule = await import('./ewc-consolidation.js');
|
|
219
|
+
ewcConsolidator = await ewcModule.getEWCConsolidator({
|
|
220
|
+
lambda: this.config.ewcLambda
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
// EWC not available, proceed without consolidation protection
|
|
225
|
+
}
|
|
226
|
+
const rewardMap = {
|
|
227
|
+
success: 1.0,
|
|
228
|
+
partial: 0.5
|
|
229
|
+
};
|
|
230
|
+
// Collect confidence changes for EWC Fisher update
|
|
231
|
+
const confidenceChanges = [];
|
|
232
|
+
for (const trajectory of recentSuccessful) {
|
|
233
|
+
const reward = rewardMap[trajectory.verdict] ?? 0;
|
|
234
|
+
for (const step of trajectory.steps) {
|
|
235
|
+
if (!step.embedding || step.embedding.length === 0)
|
|
236
|
+
continue;
|
|
237
|
+
const similar = bank.findSimilar(step.embedding, {
|
|
238
|
+
k: 3,
|
|
239
|
+
threshold: 0.4
|
|
240
|
+
});
|
|
241
|
+
for (const match of similar) {
|
|
242
|
+
const pattern = bank.get(match.id);
|
|
243
|
+
if (!pattern)
|
|
244
|
+
continue;
|
|
245
|
+
// Only distill from high-confidence matches
|
|
246
|
+
if (match.confidence < 0.5)
|
|
247
|
+
continue;
|
|
248
|
+
const oldConfidence = pattern.confidence;
|
|
249
|
+
// Check EWC penalty before applying update
|
|
250
|
+
if (ewcConsolidator) {
|
|
251
|
+
const oldWeights = [oldConfidence];
|
|
252
|
+
const proposedConfidence = Math.min(1.0, oldConfidence + this.config.loraLearningRate * reward);
|
|
253
|
+
const newWeights = [proposedConfidence];
|
|
254
|
+
const penalty = ewcConsolidator.getPenalty(oldWeights, newWeights);
|
|
255
|
+
totalEwcPenalty += penalty;
|
|
256
|
+
// If penalty is too high, reduce the update magnitude
|
|
257
|
+
if (penalty > this.config.ewcLambda) {
|
|
258
|
+
const dampedDelta = (this.config.loraLearningRate * reward) / (1 + penalty);
|
|
259
|
+
pattern.confidence = Math.max(0.0, Math.min(1.0, oldConfidence + dampedDelta));
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
pattern.confidence = proposedConfidence;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
// No EWC: apply full LoRA update
|
|
267
|
+
pattern.confidence = Math.max(0.0, Math.min(1.0, oldConfidence + this.config.loraLearningRate * reward));
|
|
268
|
+
}
|
|
269
|
+
pattern.lastUsedAt = Date.now();
|
|
270
|
+
patternsDistilled++;
|
|
271
|
+
confidenceChanges.push({
|
|
272
|
+
id: pattern.id,
|
|
273
|
+
oldConf: oldConfidence,
|
|
274
|
+
newConf: pattern.confidence,
|
|
275
|
+
embedding: pattern.embedding
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// Update EWC Fisher matrix with confidence changes
|
|
281
|
+
if (ewcConsolidator && confidenceChanges.length > 0) {
|
|
282
|
+
for (const change of confidenceChanges) {
|
|
283
|
+
// Use confidence delta as gradient proxy
|
|
284
|
+
const gradient = change.embedding.map(e => e * Math.abs(change.newConf - change.oldConf));
|
|
285
|
+
ewcConsolidator.recordGradient(change.id, gradient, true);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// Persist updated patterns
|
|
289
|
+
bank.flushToDisk();
|
|
290
|
+
return { patternsDistilled, ewcPenalty: totalEwcPenalty };
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Get current trajectory steps (for inspection)
|
|
294
|
+
*/
|
|
295
|
+
getCurrentTrajectorySteps() {
|
|
296
|
+
return [...this.currentTrajectorySteps];
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Get statistics
|
|
300
|
+
*/
|
|
301
|
+
stats() {
|
|
302
|
+
return {
|
|
303
|
+
signalCount: this.signalCount,
|
|
304
|
+
trajectoryCount: this.trajectories.length,
|
|
305
|
+
avgAdaptationMs: this.getAvgAdaptationTime()
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Lightweight ReasoningBank
|
|
311
|
+
* Uses Map for O(1) storage and array for similarity search
|
|
312
|
+
* Supports persistence to disk
|
|
313
|
+
*/
|
|
314
|
+
class LocalReasoningBank {
|
|
315
|
+
patterns = new Map();
|
|
316
|
+
patternList = [];
|
|
317
|
+
maxSize;
|
|
318
|
+
persistenceEnabled;
|
|
319
|
+
dirty = false;
|
|
320
|
+
saveTimeout = null;
|
|
321
|
+
constructor(options) {
|
|
322
|
+
this.maxSize = options.maxSize;
|
|
323
|
+
this.persistenceEnabled = options.persistence !== false;
|
|
324
|
+
// Load persisted patterns
|
|
325
|
+
if (this.persistenceEnabled) {
|
|
326
|
+
this.loadFromDisk();
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Load patterns from disk
|
|
331
|
+
*/
|
|
332
|
+
loadFromDisk() {
|
|
333
|
+
try {
|
|
334
|
+
const path = getPatternsPath();
|
|
335
|
+
if (existsSync(path)) {
|
|
336
|
+
const data = JSON.parse(readFileSync(path, 'utf-8'));
|
|
337
|
+
if (Array.isArray(data)) {
|
|
338
|
+
for (const pattern of data) {
|
|
339
|
+
this.patterns.set(pattern.id, pattern);
|
|
340
|
+
this.patternList.push(pattern);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
// Ignore load errors, start fresh
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Save patterns to disk (debounced)
|
|
351
|
+
*/
|
|
352
|
+
saveToDisk() {
|
|
353
|
+
if (!this.persistenceEnabled)
|
|
354
|
+
return;
|
|
355
|
+
this.dirty = true;
|
|
356
|
+
// Debounce saves to avoid excessive disk I/O
|
|
357
|
+
if (this.saveTimeout) {
|
|
358
|
+
clearTimeout(this.saveTimeout);
|
|
359
|
+
}
|
|
360
|
+
this.saveTimeout = setTimeout(() => {
|
|
361
|
+
this.flushToDisk();
|
|
362
|
+
}, 100);
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Immediately flush patterns to disk
|
|
366
|
+
*/
|
|
367
|
+
flushToDisk() {
|
|
368
|
+
if (!this.persistenceEnabled || !this.dirty)
|
|
369
|
+
return;
|
|
370
|
+
try {
|
|
371
|
+
ensureDataDir();
|
|
372
|
+
const path = getPatternsPath();
|
|
373
|
+
writeFileSync(path, JSON.stringify(this.patternList, null, 2), 'utf-8');
|
|
374
|
+
this.dirty = false;
|
|
375
|
+
}
|
|
376
|
+
catch (error) {
|
|
377
|
+
// Log but don't throw - persistence failures shouldn't break training
|
|
378
|
+
console.error('Failed to persist patterns:', error);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Store a pattern - O(1)
|
|
383
|
+
*/
|
|
384
|
+
store(pattern) {
|
|
385
|
+
const now = Date.now();
|
|
386
|
+
const stored = {
|
|
387
|
+
...pattern,
|
|
388
|
+
usageCount: pattern.usageCount ?? 0,
|
|
389
|
+
createdAt: pattern.createdAt ?? now,
|
|
390
|
+
lastUsedAt: pattern.lastUsedAt ?? now
|
|
391
|
+
};
|
|
392
|
+
// Update or insert
|
|
393
|
+
if (this.patterns.has(pattern.id)) {
|
|
394
|
+
const existing = this.patterns.get(pattern.id);
|
|
395
|
+
stored.usageCount = existing.usageCount + 1;
|
|
396
|
+
stored.createdAt = existing.createdAt;
|
|
397
|
+
// Update in list
|
|
398
|
+
const idx = this.patternList.findIndex(p => p.id === pattern.id);
|
|
399
|
+
if (idx >= 0) {
|
|
400
|
+
this.patternList[idx] = stored;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
// Evict oldest if at capacity
|
|
405
|
+
if (this.patterns.size >= this.maxSize) {
|
|
406
|
+
const oldest = this.patternList.shift();
|
|
407
|
+
if (oldest) {
|
|
408
|
+
this.patterns.delete(oldest.id);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
this.patternList.push(stored);
|
|
412
|
+
}
|
|
413
|
+
this.patterns.set(pattern.id, stored);
|
|
414
|
+
// Trigger persistence (debounced)
|
|
415
|
+
this.saveToDisk();
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Find similar patterns by embedding
|
|
419
|
+
*/
|
|
420
|
+
findSimilar(queryEmbedding, options) {
|
|
421
|
+
const { k = 5, threshold = 0.5, type } = options;
|
|
422
|
+
// Filter by type if specified
|
|
423
|
+
let candidates = type
|
|
424
|
+
? this.patternList.filter(p => p.type === type)
|
|
425
|
+
: this.patternList;
|
|
426
|
+
// Compute similarities
|
|
427
|
+
const scored = candidates.map(pattern => ({
|
|
428
|
+
pattern,
|
|
429
|
+
score: this.cosineSim(queryEmbedding, pattern.embedding)
|
|
430
|
+
}));
|
|
431
|
+
// Filter by threshold and sort
|
|
432
|
+
return scored
|
|
433
|
+
.filter(s => s.score >= threshold)
|
|
434
|
+
.sort((a, b) => b.score - a.score)
|
|
435
|
+
.slice(0, k)
|
|
436
|
+
.map(s => {
|
|
437
|
+
// Update usage
|
|
438
|
+
s.pattern.usageCount++;
|
|
439
|
+
s.pattern.lastUsedAt = Date.now();
|
|
440
|
+
return { ...s.pattern, confidence: s.score };
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Optimized cosine similarity
|
|
445
|
+
*/
|
|
446
|
+
cosineSim(a, b) {
|
|
447
|
+
if (!a || !b || a.length === 0 || b.length === 0)
|
|
448
|
+
return 0;
|
|
449
|
+
const len = Math.min(a.length, b.length);
|
|
450
|
+
let dot = 0, normA = 0, normB = 0;
|
|
451
|
+
for (let i = 0; i < len; i++) {
|
|
452
|
+
const ai = a[i], bi = b[i];
|
|
453
|
+
dot += ai * bi;
|
|
454
|
+
normA += ai * ai;
|
|
455
|
+
normB += bi * bi;
|
|
456
|
+
}
|
|
457
|
+
const mag = Math.sqrt(normA * normB);
|
|
458
|
+
return mag === 0 ? 0 : dot / mag;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Get statistics
|
|
462
|
+
*/
|
|
463
|
+
stats() {
|
|
464
|
+
return {
|
|
465
|
+
size: this.patterns.size,
|
|
466
|
+
patternCount: this.patternList.length
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Get pattern by ID
|
|
471
|
+
*/
|
|
472
|
+
get(id) {
|
|
473
|
+
return this.patterns.get(id);
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Get all patterns
|
|
477
|
+
*/
|
|
478
|
+
getAll() {
|
|
479
|
+
return [...this.patternList];
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Get patterns by type
|
|
483
|
+
*/
|
|
484
|
+
getByType(type) {
|
|
485
|
+
return this.patternList.filter(p => p.type === type);
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Delete a pattern by ID
|
|
489
|
+
*/
|
|
490
|
+
delete(id) {
|
|
491
|
+
const pattern = this.patterns.get(id);
|
|
492
|
+
if (!pattern)
|
|
493
|
+
return false;
|
|
494
|
+
this.patterns.delete(id);
|
|
495
|
+
const idx = this.patternList.findIndex(p => p.id === id);
|
|
496
|
+
if (idx >= 0) {
|
|
497
|
+
this.patternList.splice(idx, 1);
|
|
498
|
+
}
|
|
499
|
+
this.saveToDisk();
|
|
500
|
+
return true;
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Clear all patterns
|
|
504
|
+
*/
|
|
505
|
+
clear() {
|
|
506
|
+
this.patterns.clear();
|
|
507
|
+
this.patternList = [];
|
|
508
|
+
this.saveToDisk();
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
// ============================================================================
|
|
512
|
+
// Module State
|
|
513
|
+
// ============================================================================
|
|
514
|
+
let sonaCoordinator = null;
|
|
515
|
+
let reasoningBank = null;
|
|
516
|
+
let intelligenceInitialized = false;
|
|
517
|
+
let globalStats = {
|
|
518
|
+
trajectoriesRecorded: 0,
|
|
519
|
+
lastAdaptation: null
|
|
520
|
+
};
|
|
521
|
+
// ============================================================================
|
|
522
|
+
// Stats Persistence
|
|
523
|
+
// ============================================================================
|
|
524
|
+
/**
|
|
525
|
+
* Load persisted stats from disk
|
|
526
|
+
*/
|
|
527
|
+
function loadPersistedStats() {
|
|
528
|
+
try {
|
|
529
|
+
const path = getStatsPath();
|
|
530
|
+
if (existsSync(path)) {
|
|
531
|
+
const data = JSON.parse(readFileSync(path, 'utf-8'));
|
|
532
|
+
if (data && typeof data === 'object') {
|
|
533
|
+
globalStats.trajectoriesRecorded = data.trajectoriesRecorded ?? 0;
|
|
534
|
+
globalStats.lastAdaptation = data.lastAdaptation ?? null;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
catch {
|
|
539
|
+
// Ignore load errors, start fresh
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Save stats to disk
|
|
544
|
+
*/
|
|
545
|
+
function savePersistedStats() {
|
|
546
|
+
try {
|
|
547
|
+
ensureDataDir();
|
|
548
|
+
const path = getStatsPath();
|
|
549
|
+
writeFileSync(path, JSON.stringify(globalStats, null, 2), 'utf-8');
|
|
550
|
+
}
|
|
551
|
+
catch {
|
|
552
|
+
// Ignore save errors
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
// ============================================================================
|
|
556
|
+
// Public API
|
|
557
|
+
// ============================================================================
|
|
558
|
+
/**
|
|
559
|
+
* Initialize the intelligence system (SONA + ReasoningBank)
|
|
560
|
+
* Uses optimized local implementations
|
|
561
|
+
*/
|
|
562
|
+
export async function initializeIntelligence(config) {
|
|
563
|
+
if (intelligenceInitialized) {
|
|
564
|
+
return {
|
|
565
|
+
success: true,
|
|
566
|
+
sonaEnabled: !!sonaCoordinator,
|
|
567
|
+
reasoningBankEnabled: !!reasoningBank
|
|
568
|
+
};
|
|
569
|
+
}
|
|
570
|
+
try {
|
|
571
|
+
// Merge config with defaults
|
|
572
|
+
const finalConfig = {
|
|
573
|
+
...DEFAULT_SONA_CONFIG,
|
|
574
|
+
...config
|
|
575
|
+
};
|
|
576
|
+
// Initialize local SONA (optimized for <0.05ms)
|
|
577
|
+
sonaCoordinator = new LocalSonaCoordinator(finalConfig);
|
|
578
|
+
// Initialize local ReasoningBank with persistence enabled
|
|
579
|
+
reasoningBank = new LocalReasoningBank({
|
|
580
|
+
maxSize: finalConfig.maxPatterns,
|
|
581
|
+
persistence: true
|
|
582
|
+
});
|
|
583
|
+
// Load persisted stats if available
|
|
584
|
+
loadPersistedStats();
|
|
585
|
+
intelligenceInitialized = true;
|
|
586
|
+
return {
|
|
587
|
+
success: true,
|
|
588
|
+
sonaEnabled: true,
|
|
589
|
+
reasoningBankEnabled: true
|
|
590
|
+
};
|
|
591
|
+
}
|
|
592
|
+
catch (error) {
|
|
593
|
+
return {
|
|
594
|
+
success: false,
|
|
595
|
+
sonaEnabled: false,
|
|
596
|
+
reasoningBankEnabled: false,
|
|
597
|
+
error: error instanceof Error ? error.message : String(error)
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* Record a trajectory step for learning
|
|
603
|
+
* Performance: <0.05ms without embedding generation
|
|
604
|
+
*/
|
|
605
|
+
export async function recordStep(step) {
|
|
606
|
+
if (!sonaCoordinator) {
|
|
607
|
+
const init = await initializeIntelligence();
|
|
608
|
+
if (!init.success)
|
|
609
|
+
return false;
|
|
610
|
+
}
|
|
611
|
+
try {
|
|
612
|
+
// Generate embedding if not provided
|
|
613
|
+
// ADR-053: Try AgentDB v3 bridge embedder first
|
|
614
|
+
let embedding = step.embedding;
|
|
615
|
+
if (!embedding) {
|
|
616
|
+
try {
|
|
617
|
+
const bridge = await import('./memory-bridge.js');
|
|
618
|
+
const bridgeResult = await bridge.bridgeGenerateEmbedding(step.content);
|
|
619
|
+
if (bridgeResult) {
|
|
620
|
+
embedding = bridgeResult.embedding;
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
catch {
|
|
624
|
+
// Bridge not available
|
|
625
|
+
}
|
|
626
|
+
if (!embedding) {
|
|
627
|
+
const { generateEmbedding } = await import('./memory-initializer.js');
|
|
628
|
+
const result = await generateEmbedding(step.content);
|
|
629
|
+
embedding = result.embedding;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
// Record in SONA - <0.05ms
|
|
633
|
+
sonaCoordinator.recordSignal({
|
|
634
|
+
type: step.type,
|
|
635
|
+
content: step.content,
|
|
636
|
+
embedding,
|
|
637
|
+
metadata: step.metadata,
|
|
638
|
+
timestamp: step.timestamp || Date.now()
|
|
639
|
+
});
|
|
640
|
+
// Add to current trajectory for RL tracking
|
|
641
|
+
const stepWithEmbedding = { ...step, embedding };
|
|
642
|
+
sonaCoordinator.addTrajectoryStep(stepWithEmbedding);
|
|
643
|
+
// Store in ReasoningBank for retrieval
|
|
644
|
+
if (reasoningBank) {
|
|
645
|
+
reasoningBank.store({
|
|
646
|
+
id: `step_${Date.now()}_${Math.random().toString(36).substring(7)}`,
|
|
647
|
+
type: step.type,
|
|
648
|
+
embedding,
|
|
649
|
+
content: step.content,
|
|
650
|
+
confidence: 1.0,
|
|
651
|
+
metadata: step.metadata
|
|
652
|
+
});
|
|
653
|
+
}
|
|
654
|
+
// When a 'result' step arrives, end the trajectory and run RL loop
|
|
655
|
+
if (step.type === 'result' && reasoningBank) {
|
|
656
|
+
// Determine verdict from metadata or default to 'partial'
|
|
657
|
+
const verdict = step.metadata?.verdict || 'partial';
|
|
658
|
+
await sonaCoordinator.endTrajectory(verdict, reasoningBank);
|
|
659
|
+
// Distill learning from recent successful trajectories
|
|
660
|
+
await sonaCoordinator.distillLearning(reasoningBank);
|
|
661
|
+
globalStats.lastAdaptation = Date.now();
|
|
662
|
+
}
|
|
663
|
+
globalStats.trajectoriesRecorded++;
|
|
664
|
+
savePersistedStats();
|
|
665
|
+
return true;
|
|
666
|
+
}
|
|
667
|
+
catch {
|
|
668
|
+
return false;
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
/**
|
|
672
|
+
* Record a complete trajectory with verdict
|
|
673
|
+
*/
|
|
674
|
+
export async function recordTrajectory(steps, verdict) {
|
|
675
|
+
if (!sonaCoordinator) {
|
|
676
|
+
const init = await initializeIntelligence();
|
|
677
|
+
if (!init.success)
|
|
678
|
+
return false;
|
|
679
|
+
}
|
|
680
|
+
try {
|
|
681
|
+
sonaCoordinator.recordTrajectory({
|
|
682
|
+
steps,
|
|
683
|
+
verdict,
|
|
684
|
+
timestamp: Date.now()
|
|
685
|
+
});
|
|
686
|
+
// Apply RL: update pattern confidences based on verdict
|
|
687
|
+
if (reasoningBank) {
|
|
688
|
+
// Load steps into the coordinator for endTrajectory processing
|
|
689
|
+
for (const step of steps) {
|
|
690
|
+
sonaCoordinator.addTrajectoryStep(step);
|
|
691
|
+
}
|
|
692
|
+
await sonaCoordinator.endTrajectory(verdict, reasoningBank);
|
|
693
|
+
await sonaCoordinator.distillLearning(reasoningBank);
|
|
694
|
+
}
|
|
695
|
+
globalStats.trajectoriesRecorded++;
|
|
696
|
+
globalStats.lastAdaptation = Date.now();
|
|
697
|
+
savePersistedStats();
|
|
698
|
+
return true;
|
|
699
|
+
}
|
|
700
|
+
catch {
|
|
701
|
+
return false;
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
export async function findSimilarPatterns(query, options) {
|
|
705
|
+
if (!reasoningBank) {
|
|
706
|
+
const init = await initializeIntelligence();
|
|
707
|
+
if (!init.success)
|
|
708
|
+
return [];
|
|
709
|
+
}
|
|
710
|
+
try {
|
|
711
|
+
// ADR-053: Try AgentDB v3 bridge embedder first
|
|
712
|
+
let queryEmbedding = null;
|
|
713
|
+
try {
|
|
714
|
+
const bridge = await import('./memory-bridge.js');
|
|
715
|
+
const bridgeResult = await bridge.bridgeGenerateEmbedding(query);
|
|
716
|
+
if (bridgeResult) {
|
|
717
|
+
queryEmbedding = bridgeResult.embedding;
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
catch {
|
|
721
|
+
// Bridge not available
|
|
722
|
+
}
|
|
723
|
+
if (!queryEmbedding) {
|
|
724
|
+
const { generateEmbedding } = await import('./memory-initializer.js');
|
|
725
|
+
const queryResult = await generateEmbedding(query);
|
|
726
|
+
queryEmbedding = queryResult.embedding;
|
|
727
|
+
}
|
|
728
|
+
// Hash-fallback embeddings (128-dim) produce lower cosine similarities
|
|
729
|
+
// than ONNX/transformer embeddings, so use a lower default threshold
|
|
730
|
+
const isHashFallback = queryEmbedding.length === 128;
|
|
731
|
+
const defaultThreshold = isHashFallback ? 0.1 : 0.5;
|
|
732
|
+
const results = reasoningBank.findSimilar(queryEmbedding, {
|
|
733
|
+
k: options?.k ?? 5,
|
|
734
|
+
threshold: options?.threshold ?? defaultThreshold,
|
|
735
|
+
type: options?.type
|
|
736
|
+
});
|
|
737
|
+
return results.map((r) => ({
|
|
738
|
+
id: r.id,
|
|
739
|
+
type: r.type,
|
|
740
|
+
embedding: r.embedding,
|
|
741
|
+
content: r.content,
|
|
742
|
+
confidence: r.confidence,
|
|
743
|
+
usageCount: r.usageCount,
|
|
744
|
+
createdAt: r.createdAt,
|
|
745
|
+
lastUsedAt: r.lastUsedAt,
|
|
746
|
+
similarity: r.similarity ?? r.confidence ?? 0.5
|
|
747
|
+
}));
|
|
748
|
+
}
|
|
749
|
+
catch {
|
|
750
|
+
return [];
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
* Get intelligence system statistics
|
|
755
|
+
*/
|
|
756
|
+
export function getIntelligenceStats() {
|
|
757
|
+
const sonaStats = sonaCoordinator?.stats();
|
|
758
|
+
const bankStats = reasoningBank?.stats();
|
|
759
|
+
return {
|
|
760
|
+
sonaEnabled: !!sonaCoordinator,
|
|
761
|
+
reasoningBankSize: bankStats?.size ?? 0,
|
|
762
|
+
patternsLearned: bankStats?.patternCount ?? 0,
|
|
763
|
+
trajectoriesRecorded: globalStats.trajectoriesRecorded,
|
|
764
|
+
lastAdaptation: globalStats.lastAdaptation,
|
|
765
|
+
avgAdaptationTime: sonaStats?.avgAdaptationMs ?? 0
|
|
766
|
+
};
|
|
767
|
+
}
|
|
768
|
+
/**
|
|
769
|
+
* Get SONA coordinator for advanced operations
|
|
770
|
+
*/
|
|
771
|
+
export function getSonaCoordinator() {
|
|
772
|
+
return sonaCoordinator;
|
|
773
|
+
}
|
|
774
|
+
/**
|
|
775
|
+
* Get ReasoningBank for advanced operations
|
|
776
|
+
*/
|
|
777
|
+
export function getReasoningBank() {
|
|
778
|
+
return reasoningBank;
|
|
779
|
+
}
|
|
780
|
+
/**
|
|
781
|
+
* End the current trajectory with a verdict and apply RL updates.
|
|
782
|
+
* This is the public API for the SONA RL loop.
|
|
783
|
+
*
|
|
784
|
+
* @param verdict - 'success' (reward=1.0), 'partial' (0.5), or 'failure' (-0.5)
|
|
785
|
+
* @returns Update statistics or null if not initialized
|
|
786
|
+
*/
|
|
787
|
+
export async function endTrajectoryWithVerdict(verdict) {
|
|
788
|
+
if (!sonaCoordinator || !reasoningBank) {
|
|
789
|
+
const init = await initializeIntelligence();
|
|
790
|
+
if (!init.success)
|
|
791
|
+
return null;
|
|
792
|
+
}
|
|
793
|
+
try {
|
|
794
|
+
const result = await sonaCoordinator.endTrajectory(verdict, reasoningBank);
|
|
795
|
+
globalStats.lastAdaptation = Date.now();
|
|
796
|
+
savePersistedStats();
|
|
797
|
+
return result;
|
|
798
|
+
}
|
|
799
|
+
catch {
|
|
800
|
+
return null;
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
/**
|
|
804
|
+
* Distill learning from recent successful trajectories.
|
|
805
|
+
* Applies LoRA-style confidence updates with EWC++ consolidation protection.
|
|
806
|
+
*
|
|
807
|
+
* @returns Distillation statistics or null if not initialized
|
|
808
|
+
*/
|
|
809
|
+
export async function distillLearning() {
|
|
810
|
+
if (!sonaCoordinator || !reasoningBank) {
|
|
811
|
+
const init = await initializeIntelligence();
|
|
812
|
+
if (!init.success)
|
|
813
|
+
return null;
|
|
814
|
+
}
|
|
815
|
+
try {
|
|
816
|
+
const result = await sonaCoordinator.distillLearning(reasoningBank);
|
|
817
|
+
globalStats.lastAdaptation = Date.now();
|
|
818
|
+
savePersistedStats();
|
|
819
|
+
return result;
|
|
820
|
+
}
|
|
821
|
+
catch {
|
|
822
|
+
return null;
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
/**
|
|
826
|
+
* Clear intelligence state
|
|
827
|
+
*/
|
|
828
|
+
export function clearIntelligence() {
|
|
829
|
+
sonaCoordinator = null;
|
|
830
|
+
reasoningBank = null;
|
|
831
|
+
intelligenceInitialized = false;
|
|
832
|
+
globalStats = {
|
|
833
|
+
trajectoriesRecorded: 0,
|
|
834
|
+
lastAdaptation: null
|
|
835
|
+
};
|
|
836
|
+
}
|
|
837
|
+
/**
|
|
838
|
+
* Benchmark SONA adaptation time
|
|
839
|
+
*/
|
|
840
|
+
export function benchmarkAdaptation(iterations = 1000) {
|
|
841
|
+
if (!sonaCoordinator) {
|
|
842
|
+
initializeIntelligence();
|
|
843
|
+
}
|
|
844
|
+
const times = [];
|
|
845
|
+
const testEmbedding = Array.from({ length: 384 }, () => Math.random());
|
|
846
|
+
for (let i = 0; i < iterations; i++) {
|
|
847
|
+
const start = performance.now();
|
|
848
|
+
sonaCoordinator.recordSignal({
|
|
849
|
+
type: 'test',
|
|
850
|
+
content: `benchmark_${i}`,
|
|
851
|
+
embedding: testEmbedding,
|
|
852
|
+
timestamp: Date.now()
|
|
853
|
+
});
|
|
854
|
+
times.push(performance.now() - start);
|
|
855
|
+
}
|
|
856
|
+
const totalMs = times.reduce((a, b) => a + b, 0);
|
|
857
|
+
const avgMs = totalMs / iterations;
|
|
858
|
+
const minMs = Math.min(...times);
|
|
859
|
+
const maxMs = Math.max(...times);
|
|
860
|
+
return {
|
|
861
|
+
totalMs,
|
|
862
|
+
avgMs,
|
|
863
|
+
minMs,
|
|
864
|
+
maxMs,
|
|
865
|
+
targetMet: avgMs < 0.05
|
|
866
|
+
};
|
|
867
|
+
}
|
|
868
|
+
// ============================================================================
|
|
869
|
+
// Pattern Persistence API
|
|
870
|
+
// ============================================================================
|
|
871
|
+
/**
|
|
872
|
+
* Get all patterns from ReasoningBank
|
|
873
|
+
* Returns persisted patterns even after process restart
|
|
874
|
+
*/
|
|
875
|
+
export async function getAllPatterns() {
|
|
876
|
+
if (!reasoningBank) {
|
|
877
|
+
const init = await initializeIntelligence();
|
|
878
|
+
if (!init.success)
|
|
879
|
+
return [];
|
|
880
|
+
}
|
|
881
|
+
return reasoningBank.getAll().map(p => ({
|
|
882
|
+
id: p.id,
|
|
883
|
+
type: p.type,
|
|
884
|
+
embedding: p.embedding,
|
|
885
|
+
content: p.content,
|
|
886
|
+
confidence: p.confidence,
|
|
887
|
+
usageCount: p.usageCount,
|
|
888
|
+
createdAt: p.createdAt,
|
|
889
|
+
lastUsedAt: p.lastUsedAt
|
|
890
|
+
}));
|
|
891
|
+
}
|
|
892
|
+
/**
|
|
893
|
+
* Get patterns by type from ReasoningBank
|
|
894
|
+
*/
|
|
895
|
+
export async function getPatternsByType(type) {
|
|
896
|
+
if (!reasoningBank) {
|
|
897
|
+
const init = await initializeIntelligence();
|
|
898
|
+
if (!init.success)
|
|
899
|
+
return [];
|
|
900
|
+
}
|
|
901
|
+
return reasoningBank.getByType(type).map(p => ({
|
|
902
|
+
id: p.id,
|
|
903
|
+
type: p.type,
|
|
904
|
+
embedding: p.embedding,
|
|
905
|
+
content: p.content,
|
|
906
|
+
confidence: p.confidence,
|
|
907
|
+
usageCount: p.usageCount,
|
|
908
|
+
createdAt: p.createdAt,
|
|
909
|
+
lastUsedAt: p.lastUsedAt
|
|
910
|
+
}));
|
|
911
|
+
}
|
|
912
|
+
/**
|
|
913
|
+
* Flush patterns to disk immediately
|
|
914
|
+
* Call this at the end of training to ensure all patterns are saved
|
|
915
|
+
*/
|
|
916
|
+
export function flushPatterns() {
|
|
917
|
+
if (reasoningBank) {
|
|
918
|
+
reasoningBank.flushToDisk();
|
|
919
|
+
}
|
|
920
|
+
savePersistedStats();
|
|
921
|
+
}
|
|
922
|
+
/**
|
|
923
|
+
* Compact patterns by removing duplicates/similar patterns
|
|
924
|
+
* @param threshold Similarity threshold (0-1), patterns above this are considered duplicates
|
|
925
|
+
*/
|
|
926
|
+
export async function compactPatterns(threshold = 0.95) {
|
|
927
|
+
if (!reasoningBank) {
|
|
928
|
+
const init = await initializeIntelligence();
|
|
929
|
+
if (!init.success) {
|
|
930
|
+
return { before: 0, after: 0, removed: 0 };
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
const patterns = reasoningBank.getAll();
|
|
934
|
+
const before = patterns.length;
|
|
935
|
+
// Find duplicates using cosine similarity
|
|
936
|
+
const toRemove = new Set();
|
|
937
|
+
for (let i = 0; i < patterns.length; i++) {
|
|
938
|
+
if (toRemove.has(patterns[i].id))
|
|
939
|
+
continue;
|
|
940
|
+
const embA = patterns[i].embedding;
|
|
941
|
+
if (!embA || embA.length === 0)
|
|
942
|
+
continue;
|
|
943
|
+
for (let j = i + 1; j < patterns.length; j++) {
|
|
944
|
+
if (toRemove.has(patterns[j].id))
|
|
945
|
+
continue;
|
|
946
|
+
const embB = patterns[j].embedding;
|
|
947
|
+
if (!embB || embB.length === 0 || embA.length !== embB.length)
|
|
948
|
+
continue;
|
|
949
|
+
// Compute cosine similarity
|
|
950
|
+
let dotProduct = 0;
|
|
951
|
+
let normA = 0;
|
|
952
|
+
let normB = 0;
|
|
953
|
+
for (let k = 0; k < embA.length; k++) {
|
|
954
|
+
dotProduct += embA[k] * embB[k];
|
|
955
|
+
normA += embA[k] * embA[k];
|
|
956
|
+
normB += embB[k] * embB[k];
|
|
957
|
+
}
|
|
958
|
+
const similarity = dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
959
|
+
if (similarity >= threshold) {
|
|
960
|
+
// Remove the one with lower usage count
|
|
961
|
+
const useA = patterns[i].usageCount || 0;
|
|
962
|
+
const useB = patterns[j].usageCount || 0;
|
|
963
|
+
toRemove.add(useA >= useB ? patterns[j].id : patterns[i].id);
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
// Remove duplicates
|
|
968
|
+
for (const id of toRemove) {
|
|
969
|
+
reasoningBank.delete(id);
|
|
970
|
+
}
|
|
971
|
+
// Flush to disk
|
|
972
|
+
flushPatterns();
|
|
973
|
+
return {
|
|
974
|
+
before,
|
|
975
|
+
after: before - toRemove.size,
|
|
976
|
+
removed: toRemove.size,
|
|
977
|
+
};
|
|
978
|
+
}
|
|
979
|
+
/**
|
|
980
|
+
* Delete a pattern by ID
|
|
981
|
+
*/
|
|
982
|
+
export async function deletePattern(id) {
|
|
983
|
+
if (!reasoningBank) {
|
|
984
|
+
const init = await initializeIntelligence();
|
|
985
|
+
if (!init.success)
|
|
986
|
+
return false;
|
|
987
|
+
}
|
|
988
|
+
return reasoningBank.delete(id);
|
|
989
|
+
}
|
|
990
|
+
/**
|
|
991
|
+
* Clear all patterns (both in memory and on disk)
|
|
992
|
+
*/
|
|
993
|
+
export async function clearAllPatterns() {
|
|
994
|
+
if (!reasoningBank) {
|
|
995
|
+
const init = await initializeIntelligence();
|
|
996
|
+
if (!init.success)
|
|
997
|
+
return;
|
|
998
|
+
}
|
|
999
|
+
reasoningBank.clear();
|
|
1000
|
+
}
|
|
1001
|
+
/**
|
|
1002
|
+
* Get the neural data directory path
|
|
1003
|
+
*/
|
|
1004
|
+
export function getNeuralDataDir() {
|
|
1005
|
+
return getDataDir();
|
|
1006
|
+
}
|
|
1007
|
+
/**
|
|
1008
|
+
* Get persistence status
|
|
1009
|
+
*/
|
|
1010
|
+
export function getPersistenceStatus() {
|
|
1011
|
+
const dataDir = getDataDir();
|
|
1012
|
+
const patternsFile = getPatternsPath();
|
|
1013
|
+
const statsFile = getStatsPath();
|
|
1014
|
+
return {
|
|
1015
|
+
enabled: true,
|
|
1016
|
+
dataDir,
|
|
1017
|
+
patternsFile,
|
|
1018
|
+
statsFile,
|
|
1019
|
+
patternsExist: existsSync(patternsFile),
|
|
1020
|
+
statsExist: existsSync(statsFile)
|
|
1021
|
+
};
|
|
1022
|
+
}
|
|
1023
|
+
//# sourceMappingURL=intelligence.js.map
|