claude-flow 3.27.4 → 3.29.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 +221 -221
- package/.claude/agents/analysis/analyze-code-quality.md +57 -57
- package/.claude/agents/analysis/code-analyzer.md +188 -188
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +57 -57
- package/.claude/agents/architecture/system-design/arch-system-design.md +35 -35
- package/.claude/agents/base-template-generator.md +41 -41
- package/.claude/agents/consensus/byzantine-coordinator.md +42 -42
- package/.claude/agents/consensus/crdt-synchronizer.md +976 -976
- package/.claude/agents/consensus/gossip-coordinator.md +42 -42
- package/.claude/agents/consensus/performance-benchmarker.md +830 -830
- package/.claude/agents/consensus/quorum-manager.md +802 -802
- package/.claude/agents/consensus/raft-manager.md +42 -42
- package/.claude/agents/consensus/security-manager.md +601 -601
- package/.claude/agents/core/coder.md +254 -254
- package/.claude/agents/core/planner.md +151 -151
- package/.claude/agents/core/researcher.md +173 -173
- package/.claude/agents/core/reviewer.md +308 -308
- package/.claude/agents/core/tester.md +299 -299
- package/.claude/agents/custom/test-long-runner.md +43 -43
- package/.claude/agents/data/ml/data-ml-model.md +75 -75
- package/.claude/agents/database-specialist.md +9 -9
- package/.claude/agents/development/backend/dev-backend-api.md +28 -28
- package/.claude/agents/development/dev-backend-api.md +177 -177
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +51 -51
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +62 -62
- package/.claude/agents/dual-mode/codex-coordinator.md +206 -206
- package/.claude/agents/dual-mode/codex-worker.md +190 -190
- package/.claude/agents/dual-mode/dual-orchestrator.md +253 -253
- package/.claude/agents/flow-nexus/app-store.md +87 -87
- package/.claude/agents/flow-nexus/authentication.md +68 -68
- package/.claude/agents/flow-nexus/challenges.md +80 -80
- package/.claude/agents/flow-nexus/neural-network.md +87 -87
- package/.claude/agents/flow-nexus/payments.md +82 -82
- package/.claude/agents/flow-nexus/sandbox.md +75 -75
- package/.claude/agents/flow-nexus/swarm.md +75 -75
- package/.claude/agents/flow-nexus/user-tools.md +95 -95
- package/.claude/agents/flow-nexus/workflow.md +83 -83
- package/.claude/agents/github/code-review-swarm.md +520 -520
- package/.claude/agents/github/github-modes.md +153 -153
- package/.claude/agents/github/issue-tracker.md +298 -298
- package/.claude/agents/github/multi-repo-swarm.md +524 -524
- package/.claude/agents/github/pr-manager.md +162 -162
- package/.claude/agents/github/project-board-sync.md +477 -477
- package/.claude/agents/github/release-manager.md +337 -337
- package/.claude/agents/github/release-swarm.md +550 -550
- package/.claude/agents/github/repo-architect.md +364 -364
- package/.claude/agents/github/swarm-issue.md +550 -550
- package/.claude/agents/github/swarm-pr.md +401 -401
- package/.claude/agents/github/sync-coordinator.md +424 -424
- package/.claude/agents/github/workflow-automation.md +604 -604
- package/.claude/agents/goal/agent.md +816 -816
- package/.claude/agents/goal/code-goal-planner.md +444 -444
- package/.claude/agents/goal/goal-planner.md +167 -167
- package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +128 -128
- package/.claude/agents/hive-mind/queen-coordinator.md +201 -201
- package/.claude/agents/hive-mind/scout-explorer.md +240 -240
- package/.claude/agents/hive-mind/swarm-memory-manager.md +191 -191
- package/.claude/agents/hive-mind/worker-specialist.md +215 -215
- package/.claude/agents/neural/safla-neural.md +73 -73
- package/.claude/agents/optimization/benchmark-suite.md +662 -662
- package/.claude/agents/optimization/load-balancer.md +428 -428
- package/.claude/agents/optimization/performance-monitor.md +669 -669
- package/.claude/agents/optimization/resource-allocator.md +671 -671
- package/.claude/agents/optimization/topology-optimizer.md +805 -805
- package/.claude/agents/payments/agentic-payments.md +126 -126
- package/.claude/agents/project-coordinator.md +8 -8
- package/.claude/agents/python-specialist.md +9 -9
- package/.claude/agents/reasoning/agent.md +816 -816
- package/.claude/agents/reasoning/goal-planner.md +72 -72
- package/.claude/agents/security-auditor.md +9 -9
- package/.claude/agents/sona/sona-learning-optimizer.md +65 -65
- package/.claude/agents/sparc/architecture.md +452 -452
- package/.claude/agents/sparc/pseudocode.md +298 -298
- package/.claude/agents/sparc/refinement.md +503 -503
- package/.claude/agents/sparc/specification.md +257 -257
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +87 -87
- package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
- package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
- package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
- package/.claude/agents/sublinear/performance-optimizer.md +367 -367
- package/.claude/agents/sublinear/trading-predictor.md +245 -245
- package/.claude/agents/swarm/adaptive-coordinator.md +363 -363
- package/.claude/agents/swarm/hierarchical-coordinator.md +299 -299
- package/.claude/agents/swarm/mesh-coordinator.md +362 -362
- package/.claude/agents/templates/automation-smart-agent.md +184 -184
- package/.claude/agents/templates/coordinator-swarm-init.md +82 -82
- package/.claude/agents/templates/github-pr-manager.md +154 -154
- package/.claude/agents/templates/implementer-sparc-coder.md +242 -242
- package/.claude/agents/templates/memory-coordinator.md +162 -162
- package/.claude/agents/templates/migration-plan.md +723 -723
- package/.claude/agents/templates/orchestrator-task.md +119 -119
- package/.claude/agents/templates/performance-analyzer.md +178 -178
- package/.claude/agents/templates/sparc-coordinator.md +162 -162
- package/.claude/agents/testing/production-validator.md +372 -372
- package/.claude/agents/testing/tdd-london-swarm.md +221 -221
- package/.claude/agents/testing/unit/tdd-london-swarm.md +221 -221
- package/.claude/agents/testing/validation/production-validator.md +372 -372
- package/.claude/agents/typescript-specialist.md +9 -9
- package/.claude/agents/v3/database-specialist.md +9 -9
- package/.claude/agents/v3/project-coordinator.md +8 -8
- package/.claude/agents/v3/python-specialist.md +9 -9
- package/.claude/agents/v3/test-architect.md +9 -9
- package/.claude/agents/v3/typescript-specialist.md +9 -9
- package/.claude/agents/v3/v3-integration-architect.md +311 -311
- package/.claude/agents/v3/v3-memory-specialist.md +280 -280
- package/.claude/agents/v3/v3-performance-engineer.md +362 -362
- package/.claude/agents/v3/v3-queen-coordinator.md +62 -62
- package/.claude/agents/v3/v3-security-architect.md +139 -139
- package/.claude/checkpoints/1767754460.json +8 -8
- package/.claude/commands/agents/README.md +10 -10
- package/.claude/commands/agents/agent-capabilities.md +21 -21
- package/.claude/commands/agents/agent-coordination.md +28 -28
- package/.claude/commands/agents/agent-spawning.md +28 -28
- package/.claude/commands/agents/agent-types.md +26 -26
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
- package/.claude/commands/analysis/README.md +9 -9
- package/.claude/commands/analysis/bottleneck-detect.md +162 -162
- package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
- package/.claude/commands/analysis/performance-report.md +25 -25
- package/.claude/commands/analysis/token-efficiency.md +44 -44
- package/.claude/commands/analysis/token-usage.md +25 -25
- package/.claude/commands/automation/README.md +9 -9
- package/.claude/commands/automation/auto-agent.md +122 -122
- package/.claude/commands/automation/self-healing.md +105 -105
- package/.claude/commands/automation/session-memory.md +89 -89
- package/.claude/commands/automation/smart-agents.md +72 -72
- package/.claude/commands/automation/smart-spawn.md +25 -25
- package/.claude/commands/automation/workflow-select.md +25 -25
- package/.claude/commands/claude-flow-help.md +103 -103
- package/.claude/commands/claude-flow-memory.md +107 -107
- package/.claude/commands/claude-flow-swarm.md +205 -205
- package/.claude/commands/coordination/README.md +9 -9
- package/.claude/commands/coordination/agent-spawn.md +25 -25
- package/.claude/commands/coordination/init.md +44 -44
- package/.claude/commands/coordination/orchestrate.md +43 -43
- package/.claude/commands/coordination/spawn.md +45 -45
- package/.claude/commands/coordination/swarm-init.md +85 -85
- package/.claude/commands/coordination/task-orchestrate.md +25 -25
- package/.claude/commands/flow-nexus/app-store.md +123 -123
- package/.claude/commands/flow-nexus/challenges.md +119 -119
- package/.claude/commands/flow-nexus/login-registration.md +64 -64
- package/.claude/commands/flow-nexus/neural-network.md +133 -133
- package/.claude/commands/flow-nexus/payments.md +115 -115
- package/.claude/commands/flow-nexus/sandbox.md +82 -82
- package/.claude/commands/flow-nexus/swarm.md +86 -86
- package/.claude/commands/flow-nexus/user-tools.md +151 -151
- package/.claude/commands/flow-nexus/workflow.md +114 -114
- package/.claude/commands/github/README.md +11 -11
- package/.claude/commands/github/code-review-swarm.md +513 -513
- package/.claude/commands/github/code-review.md +25 -25
- package/.claude/commands/github/github-modes.md +146 -146
- package/.claude/commands/github/github-swarm.md +121 -121
- package/.claude/commands/github/issue-tracker.md +291 -291
- package/.claude/commands/github/issue-triage.md +25 -25
- package/.claude/commands/github/multi-repo-swarm.md +518 -518
- package/.claude/commands/github/pr-enhance.md +26 -26
- package/.claude/commands/github/pr-manager.md +169 -169
- package/.claude/commands/github/project-board-sync.md +470 -470
- package/.claude/commands/github/release-manager.md +337 -337
- package/.claude/commands/github/release-swarm.md +543 -543
- package/.claude/commands/github/repo-analyze.md +25 -25
- package/.claude/commands/github/repo-architect.md +366 -366
- package/.claude/commands/github/swarm-issue.md +481 -481
- package/.claude/commands/github/swarm-pr.md +284 -284
- package/.claude/commands/github/sync-coordinator.md +300 -300
- package/.claude/commands/github/workflow-automation.md +441 -441
- package/.claude/commands/hive-mind/README.md +17 -17
- package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
- package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
- package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
- package/.claude/commands/hive-mind/hive-mind.md +27 -27
- package/.claude/commands/hooks/README.md +11 -11
- package/.claude/commands/hooks/overview.md +57 -57
- package/.claude/commands/hooks/post-edit.md +117 -117
- package/.claude/commands/hooks/post-task.md +112 -112
- package/.claude/commands/hooks/pre-edit.md +113 -113
- package/.claude/commands/hooks/pre-task.md +111 -111
- package/.claude/commands/hooks/session-end.md +118 -118
- package/.claude/commands/hooks/setup.md +102 -102
- package/.claude/commands/memory/README.md +9 -9
- package/.claude/commands/memory/memory-persist.md +25 -25
- package/.claude/commands/memory/memory-search.md +25 -25
- package/.claude/commands/memory/memory-usage.md +25 -25
- package/.claude/commands/memory/neural.md +47 -47
- package/.claude/commands/monitoring/README.md +9 -9
- package/.claude/commands/monitoring/agent-metrics.md +25 -25
- package/.claude/commands/monitoring/agents.md +44 -44
- package/.claude/commands/monitoring/real-time-view.md +25 -25
- package/.claude/commands/monitoring/status.md +46 -46
- package/.claude/commands/monitoring/swarm-monitor.md +25 -25
- package/.claude/commands/optimization/README.md +9 -9
- package/.claude/commands/optimization/auto-topology.md +61 -61
- package/.claude/commands/optimization/cache-manage.md +25 -25
- package/.claude/commands/optimization/parallel-execute.md +25 -25
- package/.claude/commands/optimization/parallel-execution.md +49 -49
- package/.claude/commands/optimization/topology-optimize.md +25 -25
- package/.claude/commands/pair/README.md +260 -260
- package/.claude/commands/pair/commands.md +545 -545
- package/.claude/commands/pair/config.md +509 -509
- package/.claude/commands/pair/examples.md +511 -511
- package/.claude/commands/pair/modes.md +347 -347
- package/.claude/commands/pair/session.md +406 -406
- package/.claude/commands/pair/start.md +208 -208
- package/.claude/commands/sparc/analyzer.md +51 -51
- package/.claude/commands/sparc/architect.md +53 -53
- package/.claude/commands/sparc/ask.md +97 -97
- package/.claude/commands/sparc/batch-executor.md +54 -54
- package/.claude/commands/sparc/code.md +89 -89
- package/.claude/commands/sparc/coder.md +54 -54
- package/.claude/commands/sparc/debug.md +83 -83
- package/.claude/commands/sparc/debugger.md +54 -54
- package/.claude/commands/sparc/designer.md +53 -53
- package/.claude/commands/sparc/devops.md +109 -109
- package/.claude/commands/sparc/docs-writer.md +80 -80
- package/.claude/commands/sparc/documenter.md +54 -54
- package/.claude/commands/sparc/innovator.md +54 -54
- package/.claude/commands/sparc/integration.md +83 -83
- package/.claude/commands/sparc/mcp.md +117 -117
- package/.claude/commands/sparc/memory-manager.md +54 -54
- package/.claude/commands/sparc/optimizer.md +54 -54
- package/.claude/commands/sparc/orchestrator.md +131 -131
- package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
- package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
- package/.claude/commands/sparc/researcher.md +54 -54
- package/.claude/commands/sparc/reviewer.md +54 -54
- package/.claude/commands/sparc/security-review.md +80 -80
- package/.claude/commands/sparc/sparc-modes.md +174 -174
- package/.claude/commands/sparc/sparc.md +111 -111
- package/.claude/commands/sparc/spec-pseudocode.md +80 -80
- package/.claude/commands/sparc/supabase-admin.md +348 -348
- package/.claude/commands/sparc/swarm-coordinator.md +54 -54
- package/.claude/commands/sparc/tdd.md +54 -54
- package/.claude/commands/sparc/tester.md +54 -54
- package/.claude/commands/sparc/tutorial.md +79 -79
- package/.claude/commands/sparc/workflow-manager.md +54 -54
- package/.claude/commands/sparc.md +166 -166
- package/.claude/commands/stream-chain/pipeline.md +120 -120
- package/.claude/commands/stream-chain/run.md +69 -69
- package/.claude/commands/swarm/README.md +15 -15
- package/.claude/commands/swarm/analysis.md +95 -95
- package/.claude/commands/swarm/development.md +96 -96
- package/.claude/commands/swarm/examples.md +168 -168
- package/.claude/commands/swarm/maintenance.md +102 -102
- package/.claude/commands/swarm/optimization.md +117 -117
- package/.claude/commands/swarm/research.md +136 -136
- package/.claude/commands/swarm/swarm-analysis.md +8 -8
- package/.claude/commands/swarm/swarm-background.md +8 -8
- package/.claude/commands/swarm/swarm-init.md +19 -19
- package/.claude/commands/swarm/swarm-modes.md +8 -8
- package/.claude/commands/swarm/swarm-monitor.md +8 -8
- package/.claude/commands/swarm/swarm-spawn.md +19 -19
- package/.claude/commands/swarm/swarm-status.md +8 -8
- package/.claude/commands/swarm/swarm-strategies.md +8 -8
- package/.claude/commands/swarm/swarm.md +27 -27
- package/.claude/commands/swarm/testing.md +131 -131
- package/.claude/commands/training/README.md +9 -9
- package/.claude/commands/training/model-update.md +25 -25
- package/.claude/commands/training/neural-patterns.md +73 -73
- package/.claude/commands/training/neural-train.md +25 -25
- package/.claude/commands/training/pattern-learn.md +25 -25
- package/.claude/commands/training/specialization.md +62 -62
- package/.claude/commands/truth/start.md +142 -142
- package/.claude/commands/verify/check.md +49 -49
- package/.claude/commands/verify/start.md +127 -127
- package/.claude/commands/workflows/README.md +9 -9
- package/.claude/commands/workflows/development.md +77 -77
- package/.claude/commands/workflows/research.md +62 -62
- package/.claude/commands/workflows/workflow-create.md +25 -25
- package/.claude/commands/workflows/workflow-execute.md +25 -25
- package/.claude/commands/workflows/workflow-export.md +25 -25
- package/.claude/config/v3-dependency-optimization.json +265 -265
- package/.claude/config/v3-performance-targets.json +250 -250
- package/.claude/helpers/.helpers-version +1 -1
- package/.claude/helpers/README.md +96 -96
- package/.claude/helpers/adr-compliance.sh +186 -186
- package/.claude/helpers/aggressive-microcompact.mjs +36 -36
- package/.claude/helpers/auto-commit.sh +178 -178
- package/.claude/helpers/auto-memory-hook.mjs +430 -430
- package/.claude/helpers/checkpoint-manager.sh +251 -251
- package/.claude/helpers/context-persistence-hook.mjs +2001 -2001
- package/.claude/helpers/daemon-manager.sh +252 -252
- package/.claude/helpers/ddd-tracker.sh +144 -144
- package/.claude/helpers/github-safe.js +156 -156
- package/.claude/helpers/github-setup.sh +45 -45
- package/.claude/helpers/guidance-hook.sh +13 -13
- package/.claude/helpers/guidance-hooks.sh +102 -102
- package/.claude/helpers/health-monitor.sh +108 -108
- package/.claude/helpers/helpers.manifest.json +6 -5
- package/.claude/helpers/hook-handler.cjs +460 -311
- package/.claude/helpers/intelligence.cjs +1058 -1048
- package/.claude/helpers/learning-hooks.sh +329 -329
- package/.claude/helpers/learning-optimizer.sh +127 -127
- package/.claude/helpers/learning-service.mjs +1144 -1144
- package/.claude/helpers/memory.cjs +84 -84
- package/.claude/helpers/metrics-db.mjs +503 -503
- package/.claude/helpers/patch-aggressive-prune.mjs +184 -184
- package/.claude/helpers/pattern-consolidator.sh +86 -86
- package/.claude/helpers/perf-worker.sh +160 -160
- package/.claude/helpers/quick-start.sh +19 -19
- package/.claude/helpers/router.cjs +62 -62
- package/.claude/helpers/security-scanner.sh +127 -127
- package/.claude/helpers/session.cjs +125 -125
- package/.claude/helpers/setup-mcp.sh +18 -18
- package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
- package/.claude/helpers/statusline.cjs +925 -925
- package/.claude/helpers/swarm-comms.sh +353 -353
- package/.claude/helpers/swarm-hooks.sh +761 -761
- package/.claude/helpers/swarm-monitor.sh +210 -210
- package/.claude/helpers/sync-v3-metrics.sh +245 -245
- package/.claude/helpers/update-v3-progress.sh +165 -165
- package/.claude/helpers/v3-quick-status.sh +57 -57
- package/.claude/helpers/v3.sh +110 -110
- package/.claude/helpers/validate-v3-config.sh +215 -215
- package/.claude/helpers/worker-manager.sh +170 -170
- package/.claude/mcp.json +12 -12
- package/.claude/proven-config.json +1 -1
- package/.claude/settings.json +285 -285
- package/.claude/settings.json.bak +526 -526
- package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
- package/.claude/skills/agentdb-learning/SKILL.md +545 -545
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
- package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
- package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
- package/.claude/skills/agentic-jujutsu/SKILL.md +645 -645
- package/.claude/skills/browser/SKILL.md +204 -204
- package/.claude/skills/dual-mode/README.md +71 -71
- package/.claude/skills/dual-mode/dual-collect.md +103 -103
- package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
- package/.claude/skills/dual-mode/dual-spawn.md +81 -81
- package/.claude/skills/flow-nexus-neural/SKILL.md +727 -727
- package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
- package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
- package/.claude/skills/github-code-review/SKILL.md +1125 -1125
- package/.claude/skills/github-multi-repo/SKILL.md +862 -862
- package/.claude/skills/github-project-management/SKILL.md +1262 -1262
- package/.claude/skills/github-release-management/SKILL.md +1064 -1064
- package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
- package/.claude/skills/hive-mind-advanced/SKILL.md +709 -709
- package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
- package/.claude/skills/pair-programming/SKILL.md +1202 -1202
- package/.claude/skills/performance-analysis/SKILL.md +560 -560
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
- package/.claude/skills/skill-builder/SKILL.md +910 -910
- package/.claude/skills/sparc-methodology/SKILL.md +1106 -1106
- package/.claude/skills/stream-chain/SKILL.md +560 -560
- package/.claude/skills/swarm-advanced/SKILL.md +970 -970
- package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
- package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
- package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
- package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
- package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
- package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
- package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
- package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
- package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
- package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
- package/.claude/skills/verification-quality/SKILL.md +691 -691
- package/.claude/skills/worker-benchmarks/SKILL.md +129 -129
- package/.claude/skills/worker-integration/SKILL.md +147 -147
- package/.claude/statusline-command.sh +176 -176
- package/.claude/statusline.mjs +109 -109
- package/.claude/statusline.sh +431 -431
- package/.claude/workflows/full-system-test.js +65 -65
- package/.claude/workflows/intelligence-system-hardening.js +120 -120
- package/.claude/workflows/plugin-contract-audit.js +91 -91
- package/.claude-plugin/README.md +720 -720
- package/.claude-plugin/docs/INSTALLATION.md +261 -261
- package/.claude-plugin/docs/PLUGIN_SUMMARY.md +361 -361
- package/.claude-plugin/docs/QUICKSTART.md +361 -361
- package/.claude-plugin/docs/STRUCTURE.md +128 -128
- package/.claude-plugin/hooks/hooks.json +77 -77
- package/.claude-plugin/marketplace.json +185 -185
- package/.claude-plugin/plugin.json +71 -71
- package/.claude-plugin/scripts/install.sh +234 -234
- package/.claude-plugin/scripts/ruflo-hook.cjs +166 -166
- package/.claude-plugin/scripts/ruflo-hook.sh +37 -37
- package/.claude-plugin/scripts/uninstall.sh +36 -36
- package/.claude-plugin/scripts/verify.sh +108 -108
- package/LICENSE +21 -21
- package/README.md +419 -419
- package/bin/cli.js +11 -11
- package/bin/npx-repair.js +7 -7
- package/bin/npx-safe-launch.js +9 -9
- package/package.json +185 -185
- package/v3/@claude-flow/cli/README.md +419 -419
- package/v3/@claude-flow/cli/bin/cli.js +314 -314
- package/v3/@claude-flow/cli/bin/mcp-server.js +224 -224
- package/v3/@claude-flow/cli/bin/preinstall.cjs +2 -2
- package/v3/@claude-flow/cli/catalog-manifest.json +2 -2
- package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.js +24 -24
- package/v3/@claude-flow/cli/dist/src/business-pods/bbs-budget-tracker.js +53 -53
- package/v3/@claude-flow/cli/dist/src/commands/completions.js +409 -409
- package/v3/@claude-flow/cli/dist/src/commands/daemon.d.ts +23 -0
- package/v3/@claude-flow/cli/dist/src/commands/daemon.js +216 -44
- package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +26 -26
- package/v3/@claude-flow/cli/dist/src/commands/funnel.d.ts +2 -0
- package/v3/@claude-flow/cli/dist/src/commands/funnel.js +110 -2
- package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +97 -97
- package/v3/@claude-flow/cli/dist/src/commands/hooks.js +9 -9
- package/v3/@claude-flow/cli/dist/src/commands/init.js +94 -38
- package/v3/@claude-flow/cli/dist/src/commands/memory.js +85 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +23 -23
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +31 -31
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +14 -14
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +115 -115
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +99 -99
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +624 -624
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +38 -38
- package/v3/@claude-flow/cli/dist/src/config/proven-config.js +2 -2
- package/v3/@claude-flow/cli/dist/src/funnel/disclosure.d.ts +1 -0
- package/v3/@claude-flow/cli/dist/src/funnel/disclosure.js +12 -0
- package/v3/@claude-flow/cli/dist/src/funnel/index.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/funnel/index.js +1 -1
- package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +231 -231
- package/v3/@claude-flow/cli/dist/src/init/executor.js +453 -453
- package/v3/@claude-flow/cli/dist/src/init/helper-signing.d.ts +8 -1
- package/v3/@claude-flow/cli/dist/src/init/helper-signing.js +9 -2
- package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +751 -751
- package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +994 -951
- package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js +15 -15
- package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-intent-tools.js +19 -19
- package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.js +22 -22
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.d.ts +10 -0
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +139 -88
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.d.ts +18 -0
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +539 -407
- package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.js +5 -5
- package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
- package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.d.ts +195 -0
- package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.js +643 -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/services/distill-tuning.js +7 -7
- package/v3/@claude-flow/cli/dist/src/services/event-stream.d.ts +25 -0
- package/v3/@claude-flow/cli/dist/src/services/event-stream.js +27 -0
- package/v3/@claude-flow/cli/dist/src/services/global-ai-budget.d.ts +25 -0
- package/v3/@claude-flow/cli/dist/src/services/global-ai-budget.js +56 -0
- package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.d.ts +21 -0
- package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +152 -86
- package/v3/@claude-flow/cli/dist/src/services/loop-worker-runner.d.ts +16 -0
- package/v3/@claude-flow/cli/dist/src/services/loop-worker-runner.js +34 -0
- package/v3/@claude-flow/cli/dist/src/services/memory-distillation.js +4 -4
- package/v3/@claude-flow/cli/dist/src/services/repo-supervisor.d.ts +70 -0
- package/v3/@claude-flow/cli/dist/src/services/repo-supervisor.js +228 -0
- package/v3/@claude-flow/cli/dist/src/services/runtime-capabilities.d.ts +22 -0
- package/v3/@claude-flow/cli/dist/src/services/runtime-capabilities.js +45 -0
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.d.ts +26 -0
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +95 -5
- package/v3/@claude-flow/cli/dist/src/services/workspace-lease.d.ts +55 -0
- package/v3/@claude-flow/cli/dist/src/services/workspace-lease.js +191 -0
- package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
- package/v3/@claude-flow/cli/package.json +134 -133
- package/v3/@claude-flow/guidance/README.md +1195 -1195
- package/v3/@claude-flow/guidance/dist/adversarial.d.ts +284 -0
- package/v3/@claude-flow/guidance/dist/adversarial.js +572 -0
- package/v3/@claude-flow/guidance/dist/analyzer.d.ts +530 -0
- package/v3/@claude-flow/guidance/dist/analyzer.js +2587 -0
- package/v3/@claude-flow/guidance/dist/artifacts.d.ts +283 -0
- package/v3/@claude-flow/guidance/dist/artifacts.js +356 -0
- package/v3/@claude-flow/guidance/dist/authority.d.ts +290 -0
- package/v3/@claude-flow/guidance/dist/authority.js +558 -0
- package/v3/@claude-flow/guidance/dist/capabilities.d.ts +209 -0
- package/v3/@claude-flow/guidance/dist/capabilities.js +485 -0
- package/v3/@claude-flow/guidance/dist/coherence.d.ts +233 -0
- package/v3/@claude-flow/guidance/dist/coherence.js +372 -0
- package/v3/@claude-flow/guidance/dist/compiler.d.ts +87 -0
- package/v3/@claude-flow/guidance/dist/compiler.js +410 -0
- package/v3/@claude-flow/guidance/dist/conformance-kit.d.ts +225 -0
- package/v3/@claude-flow/guidance/dist/conformance-kit.js +629 -0
- package/v3/@claude-flow/guidance/dist/continue-gate.d.ts +214 -0
- package/v3/@claude-flow/guidance/dist/continue-gate.js +353 -0
- package/v3/@claude-flow/guidance/dist/crypto-utils.d.ts +17 -0
- package/v3/@claude-flow/guidance/dist/crypto-utils.js +24 -0
- package/v3/@claude-flow/guidance/dist/evolution.d.ts +282 -0
- package/v3/@claude-flow/guidance/dist/evolution.js +500 -0
- package/v3/@claude-flow/guidance/dist/gates.d.ts +79 -0
- package/v3/@claude-flow/guidance/dist/gates.js +302 -0
- package/v3/@claude-flow/guidance/dist/gateway.d.ts +206 -0
- package/v3/@claude-flow/guidance/dist/gateway.js +452 -0
- package/v3/@claude-flow/guidance/dist/generators.d.ts +153 -0
- package/v3/@claude-flow/guidance/dist/generators.js +682 -0
- package/v3/@claude-flow/guidance/dist/headless.d.ts +177 -0
- package/v3/@claude-flow/guidance/dist/headless.js +342 -0
- package/v3/@claude-flow/guidance/dist/hooks.d.ts +109 -0
- package/v3/@claude-flow/guidance/dist/hooks.js +347 -0
- package/v3/@claude-flow/guidance/dist/index.d.ts +205 -0
- package/v3/@claude-flow/guidance/dist/index.js +321 -0
- package/v3/@claude-flow/guidance/dist/ledger.d.ts +162 -0
- package/v3/@claude-flow/guidance/dist/ledger.js +375 -0
- package/v3/@claude-flow/guidance/dist/manifest-validator.d.ts +289 -0
- package/v3/@claude-flow/guidance/dist/manifest-validator.js +838 -0
- package/v3/@claude-flow/guidance/dist/memory-gate.d.ts +222 -0
- package/v3/@claude-flow/guidance/dist/memory-gate.js +382 -0
- package/v3/@claude-flow/guidance/dist/meta-governance.d.ts +265 -0
- package/v3/@claude-flow/guidance/dist/meta-governance.js +348 -0
- package/v3/@claude-flow/guidance/dist/optimizer.d.ts +104 -0
- package/v3/@claude-flow/guidance/dist/optimizer.js +329 -0
- package/v3/@claude-flow/guidance/dist/persistence.d.ts +189 -0
- package/v3/@claude-flow/guidance/dist/persistence.js +464 -0
- package/v3/@claude-flow/guidance/dist/proof.d.ts +185 -0
- package/v3/@claude-flow/guidance/dist/proof.js +238 -0
- package/v3/@claude-flow/guidance/dist/retriever.d.ts +172 -0
- package/v3/@claude-flow/guidance/dist/retriever.js +596 -0
- package/v3/@claude-flow/guidance/dist/ruvbot-integration.d.ts +370 -0
- package/v3/@claude-flow/guidance/dist/ruvbot-integration.js +738 -0
- package/v3/@claude-flow/guidance/dist/temporal.d.ts +426 -0
- package/v3/@claude-flow/guidance/dist/temporal.js +658 -0
- package/v3/@claude-flow/guidance/dist/trust.d.ts +283 -0
- package/v3/@claude-flow/guidance/dist/trust.js +473 -0
- package/v3/@claude-flow/guidance/dist/truth-anchors.d.ts +276 -0
- package/v3/@claude-flow/guidance/dist/truth-anchors.js +488 -0
- package/v3/@claude-flow/guidance/dist/types.d.ts +378 -0
- package/v3/@claude-flow/guidance/dist/types.js +10 -0
- package/v3/@claude-flow/guidance/dist/uncertainty.d.ts +372 -0
- package/v3/@claude-flow/guidance/dist/uncertainty.js +619 -0
- package/v3/@claude-flow/guidance/dist/wasm-kernel.d.ts +48 -0
- package/v3/@claude-flow/guidance/dist/wasm-kernel.js +158 -0
- package/v3/@claude-flow/guidance/package.json +198 -198
- package/v3/@claude-flow/shared/README.md +323 -323
- package/v3/@claude-flow/shared/dist/core/config/defaults.d.ts +41 -0
- package/v3/@claude-flow/shared/dist/core/config/defaults.js +186 -0
- package/v3/@claude-flow/shared/dist/core/config/index.d.ts +8 -0
- package/v3/@claude-flow/shared/dist/core/config/index.js +12 -0
- package/v3/@claude-flow/shared/dist/core/config/loader.d.ts +45 -0
- package/v3/@claude-flow/shared/dist/core/config/loader.js +238 -0
- package/v3/@claude-flow/shared/dist/core/config/schema.d.ts +1728 -0
- package/v3/@claude-flow/shared/dist/core/config/schema.js +160 -0
- package/v3/@claude-flow/shared/dist/core/config/validator.d.ts +92 -0
- package/v3/@claude-flow/shared/dist/core/config/validator.js +147 -0
- package/v3/@claude-flow/shared/dist/core/event-bus.d.ts +31 -0
- package/v3/@claude-flow/shared/dist/core/event-bus.js +197 -0
- package/v3/@claude-flow/shared/dist/core/index.d.ts +15 -0
- package/v3/@claude-flow/shared/dist/core/index.js +19 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/agent.interface.d.ts +200 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/agent.interface.js +6 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/coordinator.interface.d.ts +310 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/coordinator.interface.js +7 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/event.interface.d.ts +224 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/event.interface.js +46 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/index.d.ts +10 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/index.js +15 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/memory.interface.d.ts +298 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/memory.interface.js +7 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/task.interface.d.ts +185 -0
- package/v3/@claude-flow/shared/dist/core/interfaces/task.interface.js +6 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/event-coordinator.d.ts +35 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/event-coordinator.js +101 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/health-monitor.d.ts +60 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/health-monitor.js +166 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/index.d.ts +46 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/index.js +64 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.d.ts +56 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.js +195 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/session-manager.d.ts +83 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/session-manager.js +193 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/task-manager.d.ts +49 -0
- package/v3/@claude-flow/shared/dist/core/orchestrator/task-manager.js +253 -0
- package/v3/@claude-flow/shared/dist/events/domain-events.d.ts +282 -0
- package/v3/@claude-flow/shared/dist/events/domain-events.js +165 -0
- package/v3/@claude-flow/shared/dist/events/event-store.d.ts +126 -0
- package/v3/@claude-flow/shared/dist/events/event-store.js +427 -0
- package/v3/@claude-flow/shared/dist/events/event-store.test.d.ts +8 -0
- package/v3/@claude-flow/shared/dist/events/event-store.test.js +293 -0
- package/v3/@claude-flow/shared/dist/events/example-usage.d.ts +10 -0
- package/v3/@claude-flow/shared/dist/events/example-usage.js +193 -0
- package/v3/@claude-flow/shared/dist/events/index.d.ts +21 -0
- package/v3/@claude-flow/shared/dist/events/index.js +22 -0
- package/v3/@claude-flow/shared/dist/events/projections.d.ts +177 -0
- package/v3/@claude-flow/shared/dist/events/projections.js +421 -0
- package/v3/@claude-flow/shared/dist/events/rvf-event-log.d.ts +82 -0
- package/v3/@claude-flow/shared/dist/events/rvf-event-log.js +340 -0
- package/v3/@claude-flow/shared/dist/events/state-reconstructor.d.ts +101 -0
- package/v3/@claude-flow/shared/dist/events/state-reconstructor.js +263 -0
- package/v3/@claude-flow/shared/dist/events.d.ts +80 -0
- package/v3/@claude-flow/shared/dist/events.js +249 -0
- package/v3/@claude-flow/shared/dist/hooks/example-usage.d.ts +42 -0
- package/v3/@claude-flow/shared/dist/hooks/example-usage.js +351 -0
- package/v3/@claude-flow/shared/dist/hooks/executor.d.ts +100 -0
- package/v3/@claude-flow/shared/dist/hooks/executor.js +267 -0
- package/v3/@claude-flow/shared/dist/hooks/hooks.test.d.ts +9 -0
- package/v3/@claude-flow/shared/dist/hooks/hooks.test.js +322 -0
- package/v3/@claude-flow/shared/dist/hooks/index.d.ts +52 -0
- package/v3/@claude-flow/shared/dist/hooks/index.js +51 -0
- package/v3/@claude-flow/shared/dist/hooks/registry.d.ts +133 -0
- package/v3/@claude-flow/shared/dist/hooks/registry.js +277 -0
- package/v3/@claude-flow/shared/dist/hooks/safety/bash-safety.d.ts +105 -0
- package/v3/@claude-flow/shared/dist/hooks/safety/bash-safety.js +481 -0
- package/v3/@claude-flow/shared/dist/hooks/safety/file-organization.d.ts +144 -0
- package/v3/@claude-flow/shared/dist/hooks/safety/file-organization.js +328 -0
- package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.d.ts +158 -0
- package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.js +450 -0
- package/v3/@claude-flow/shared/dist/hooks/safety/index.d.ts +17 -0
- package/v3/@claude-flow/shared/dist/hooks/safety/index.js +17 -0
- package/v3/@claude-flow/shared/dist/hooks/session-hooks.d.ts +234 -0
- package/v3/@claude-flow/shared/dist/hooks/session-hooks.js +334 -0
- package/v3/@claude-flow/shared/dist/hooks/task-hooks.d.ts +163 -0
- package/v3/@claude-flow/shared/dist/hooks/task-hooks.js +326 -0
- package/v3/@claude-flow/shared/dist/hooks/types.d.ts +267 -0
- package/v3/@claude-flow/shared/dist/hooks/types.js +62 -0
- package/v3/@claude-flow/shared/dist/hooks/verify-exports.test.d.ts +9 -0
- package/v3/@claude-flow/shared/dist/hooks/verify-exports.test.js +93 -0
- package/v3/@claude-flow/shared/dist/index.d.ts +20 -0
- package/v3/@claude-flow/shared/dist/index.js +50 -0
- package/v3/@claude-flow/shared/dist/mcp/connection-pool.d.ts +98 -0
- package/v3/@claude-flow/shared/dist/mcp/connection-pool.js +364 -0
- package/v3/@claude-flow/shared/dist/mcp/index.d.ts +69 -0
- package/v3/@claude-flow/shared/dist/mcp/index.js +84 -0
- package/v3/@claude-flow/shared/dist/mcp/server.d.ts +166 -0
- package/v3/@claude-flow/shared/dist/mcp/server.js +590 -0
- package/v3/@claude-flow/shared/dist/mcp/session-manager.d.ts +136 -0
- package/v3/@claude-flow/shared/dist/mcp/session-manager.js +335 -0
- package/v3/@claude-flow/shared/dist/mcp/tool-registry.d.ts +178 -0
- package/v3/@claude-flow/shared/dist/mcp/tool-registry.js +439 -0
- package/v3/@claude-flow/shared/dist/mcp/transport/http.d.ts +104 -0
- package/v3/@claude-flow/shared/dist/mcp/transport/http.js +476 -0
- package/v3/@claude-flow/shared/dist/mcp/transport/index.d.ts +102 -0
- package/v3/@claude-flow/shared/dist/mcp/transport/index.js +238 -0
- package/v3/@claude-flow/shared/dist/mcp/transport/stdio.d.ts +104 -0
- package/v3/@claude-flow/shared/dist/mcp/transport/stdio.js +263 -0
- package/v3/@claude-flow/shared/dist/mcp/transport/websocket.d.ts +133 -0
- package/v3/@claude-flow/shared/dist/mcp/transport/websocket.js +396 -0
- package/v3/@claude-flow/shared/dist/mcp/types.d.ts +436 -0
- package/v3/@claude-flow/shared/dist/mcp/types.js +54 -0
- package/v3/@claude-flow/shared/dist/plugin-interface.d.ts +544 -0
- package/v3/@claude-flow/shared/dist/plugin-interface.js +23 -0
- package/v3/@claude-flow/shared/dist/plugin-loader.d.ts +139 -0
- package/v3/@claude-flow/shared/dist/plugin-loader.js +434 -0
- package/v3/@claude-flow/shared/dist/plugin-registry.d.ts +183 -0
- package/v3/@claude-flow/shared/dist/plugin-registry.js +457 -0
- package/v3/@claude-flow/shared/dist/plugins/index.d.ts +10 -0
- package/v3/@claude-flow/shared/dist/plugins/index.js +10 -0
- package/v3/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.d.ts +106 -0
- package/v3/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.js +241 -0
- package/v3/@claude-flow/shared/dist/plugins/official/index.d.ts +10 -0
- package/v3/@claude-flow/shared/dist/plugins/official/index.js +10 -0
- package/v3/@claude-flow/shared/dist/plugins/official/maestro-plugin.d.ts +121 -0
- package/v3/@claude-flow/shared/dist/plugins/official/maestro-plugin.js +355 -0
- package/v3/@claude-flow/shared/dist/plugins/types.d.ts +93 -0
- package/v3/@claude-flow/shared/dist/plugins/types.js +9 -0
- package/v3/@claude-flow/shared/dist/resilience/bulkhead.d.ts +105 -0
- package/v3/@claude-flow/shared/dist/resilience/bulkhead.js +206 -0
- package/v3/@claude-flow/shared/dist/resilience/circuit-breaker.d.ts +132 -0
- package/v3/@claude-flow/shared/dist/resilience/circuit-breaker.js +233 -0
- package/v3/@claude-flow/shared/dist/resilience/index.d.ts +19 -0
- package/v3/@claude-flow/shared/dist/resilience/index.js +19 -0
- package/v3/@claude-flow/shared/dist/resilience/rate-limiter.d.ts +168 -0
- package/v3/@claude-flow/shared/dist/resilience/rate-limiter.js +314 -0
- package/v3/@claude-flow/shared/dist/resilience/retry.d.ts +91 -0
- package/v3/@claude-flow/shared/dist/resilience/retry.js +159 -0
- package/v3/@claude-flow/shared/dist/security/index.d.ts +10 -0
- package/v3/@claude-flow/shared/dist/security/index.js +12 -0
- package/v3/@claude-flow/shared/dist/security/input-validation.d.ts +73 -0
- package/v3/@claude-flow/shared/dist/security/input-validation.js +201 -0
- package/v3/@claude-flow/shared/dist/security/secure-random.d.ts +92 -0
- package/v3/@claude-flow/shared/dist/security/secure-random.js +142 -0
- package/v3/@claude-flow/shared/dist/services/index.d.ts +7 -0
- package/v3/@claude-flow/shared/dist/services/index.js +7 -0
- package/v3/@claude-flow/shared/dist/services/v3-progress.service.d.ts +124 -0
- package/v3/@claude-flow/shared/dist/services/v3-progress.service.js +402 -0
- package/v3/@claude-flow/shared/dist/types/agent.types.d.ts +137 -0
- package/v3/@claude-flow/shared/dist/types/agent.types.js +6 -0
- package/v3/@claude-flow/shared/dist/types/index.d.ts +11 -0
- package/v3/@claude-flow/shared/dist/types/index.js +17 -0
- package/v3/@claude-flow/shared/dist/types/mcp.types.d.ts +266 -0
- package/v3/@claude-flow/shared/dist/types/mcp.types.js +7 -0
- package/v3/@claude-flow/shared/dist/types/memory.types.d.ts +236 -0
- package/v3/@claude-flow/shared/dist/types/memory.types.js +7 -0
- package/v3/@claude-flow/shared/dist/types/swarm.types.d.ts +186 -0
- package/v3/@claude-flow/shared/dist/types/swarm.types.js +65 -0
- package/v3/@claude-flow/shared/dist/types/task.types.d.ts +178 -0
- package/v3/@claude-flow/shared/dist/types/task.types.js +32 -0
- package/v3/@claude-flow/shared/dist/types.d.ts +197 -0
- package/v3/@claude-flow/shared/dist/types.js +21 -0
- package/v3/@claude-flow/shared/dist/utils/secure-logger.d.ts +69 -0
- package/v3/@claude-flow/shared/dist/utils/secure-logger.js +208 -0
- package/v3/@claude-flow/shared/package.json +43 -43
- package/v3/README.md +493 -493
- package/.claude/security-scans/scan-all-standard.json +0 -321
- package/.claude/security-scans/scan-code-deep.json +0 -1209
- package/.claude/security-scans/scan-deps-full.json +0 -14
|
@@ -0,0 +1,596 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Intent Classifier + Shard Retriever
|
|
3
|
+
*
|
|
4
|
+
* Stores rule shards in vector storage with embeddings and metadata.
|
|
5
|
+
* At task start, retrieves the top N shards by semantic similarity
|
|
6
|
+
* with hard filters by risk class and repo scope.
|
|
7
|
+
*
|
|
8
|
+
* Retrieval contract:
|
|
9
|
+
* 1. Always include the constitution
|
|
10
|
+
* 2. Retrieve up to 5 shards by semantic similarity
|
|
11
|
+
* 3. Add hard filters by risk class and repo scope
|
|
12
|
+
* 4. Contradiction check: prefer higher-priority rule ID
|
|
13
|
+
*
|
|
14
|
+
* @module @claude-flow/guidance/retriever
|
|
15
|
+
*/
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Intent Classification
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/** Intent detection patterns with confidence weights */
|
|
20
|
+
const INTENT_PATTERNS = {
|
|
21
|
+
'bug-fix': [
|
|
22
|
+
{ pattern: /\b(fix|bug|broken|error|crash|issue|wrong|incorrect|fail)\b/i, weight: 0.8 },
|
|
23
|
+
{ pattern: /\b(not working|doesn't work|unexpected|regression)\b/i, weight: 0.9 },
|
|
24
|
+
],
|
|
25
|
+
'feature': [
|
|
26
|
+
{ pattern: /\b(add|create|implement|build|new|introduce|develop)\b/i, weight: 0.5 },
|
|
27
|
+
{ pattern: /\b(feature|capability|functionality|support for)\b/i, weight: 0.9 },
|
|
28
|
+
{ pattern: /\b(user|page|profile|dashboard|form|widget|component|module)\b/i, weight: 0.3 },
|
|
29
|
+
],
|
|
30
|
+
'refactor': [
|
|
31
|
+
{ pattern: /\b(refactor|restructure|reorganize|simplify|clean|extract|inline)\b/i, weight: 0.9 },
|
|
32
|
+
{ pattern: /\b(improve readability|reduce complexity|code quality)\b/i, weight: 0.8 },
|
|
33
|
+
],
|
|
34
|
+
'security': [
|
|
35
|
+
{ pattern: /\b(security|auth|permission|access control|encrypt|secret|token)\b/i, weight: 0.9 },
|
|
36
|
+
{ pattern: /\b(cve|vulnerability|injection|xss|csrf|sanitize)\b/i, weight: 1.0 },
|
|
37
|
+
],
|
|
38
|
+
'performance': [
|
|
39
|
+
{ pattern: /\b(performance|optimize|speed|slow|fast|cache|memory usage|latency)\b/i, weight: 0.9 },
|
|
40
|
+
{ pattern: /\b(bottleneck|profile|benchmark|throughput|efficient)\b/i, weight: 0.8 },
|
|
41
|
+
],
|
|
42
|
+
'testing': [
|
|
43
|
+
{ pattern: /\b(tests?|specs?|coverage|mocks?|asserts?|tdd|unit tests?|integration tests?)\b/i, weight: 1.0 },
|
|
44
|
+
{ pattern: /\b(test suite|test case|test plan|quality assurance)\b/i, weight: 0.9 },
|
|
45
|
+
],
|
|
46
|
+
'docs': [
|
|
47
|
+
{ pattern: /\b(document|readme|jsdoc|comment|explain|describe|tutorial)\b/i, weight: 0.8 },
|
|
48
|
+
{ pattern: /\b(api docs|documentation|usage guide|changelog)\b/i, weight: 0.9 },
|
|
49
|
+
],
|
|
50
|
+
'deployment': [
|
|
51
|
+
{ pattern: /\b(deploy|release|publish|ci|cd|pipeline|docker|kubernetes)\b/i, weight: 0.9 },
|
|
52
|
+
{ pattern: /\b(staging|production|rollback|migration|version)\b/i, weight: 0.7 },
|
|
53
|
+
],
|
|
54
|
+
'architecture': [
|
|
55
|
+
{ pattern: /\b(architect|design pattern|system design|structure|boundary)\b/i, weight: 0.8 },
|
|
56
|
+
{ pattern: /\b(module boundary|component architecture|layer|service mesh|domain model|aggregate root)\b/i, weight: 0.7 },
|
|
57
|
+
{ pattern: /\b(interface|api design|separation of concerns)\b/i, weight: 0.6 },
|
|
58
|
+
],
|
|
59
|
+
'debug': [
|
|
60
|
+
{ pattern: /\b(debug|trace|log|diagnose|investigate|root cause)\b/i, weight: 0.9 },
|
|
61
|
+
{ pattern: /\b(stack trace|breakpoint|inspect|reproduction)\b/i, weight: 0.8 },
|
|
62
|
+
],
|
|
63
|
+
'general': [
|
|
64
|
+
{ pattern: /./, weight: 0.1 },
|
|
65
|
+
],
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Deterministic hash-based embedding provider — **test-only**.
|
|
69
|
+
*
|
|
70
|
+
* Produces fixed-dimension vectors from a simple character-hash → sin()
|
|
71
|
+
* transform. The resulting embeddings have no real semantic meaning;
|
|
72
|
+
* they are stable and fast, which makes them useful for unit/integration
|
|
73
|
+
* tests that need a concrete {@link IEmbeddingProvider} without loading
|
|
74
|
+
* an ONNX model.
|
|
75
|
+
*
|
|
76
|
+
* **Do NOT use in production** — replace with a real model-backed
|
|
77
|
+
* provider (e.g. the agentic-flow ONNX integration).
|
|
78
|
+
*/
|
|
79
|
+
export class HashEmbeddingProvider {
|
|
80
|
+
dimensions;
|
|
81
|
+
cache = new Map();
|
|
82
|
+
constructor(dimensions = 384) {
|
|
83
|
+
this.dimensions = dimensions;
|
|
84
|
+
}
|
|
85
|
+
async embed(text) {
|
|
86
|
+
const key = text.slice(0, 200);
|
|
87
|
+
if (this.cache.has(key))
|
|
88
|
+
return this.cache.get(key);
|
|
89
|
+
const embedding = this.hashEmbed(text);
|
|
90
|
+
this.cache.set(key, embedding);
|
|
91
|
+
return embedding;
|
|
92
|
+
}
|
|
93
|
+
async batchEmbed(texts) {
|
|
94
|
+
return Promise.all(texts.map(t => this.embed(t)));
|
|
95
|
+
}
|
|
96
|
+
hashEmbed(text) {
|
|
97
|
+
const embedding = new Float32Array(this.dimensions);
|
|
98
|
+
const normalized = text.toLowerCase().trim();
|
|
99
|
+
for (let i = 0; i < this.dimensions; i++) {
|
|
100
|
+
let hash = 0;
|
|
101
|
+
for (let j = 0; j < normalized.length; j++) {
|
|
102
|
+
hash = ((hash << 5) - hash + normalized.charCodeAt(j) * (i + 1)) | 0;
|
|
103
|
+
}
|
|
104
|
+
embedding[i] = (Math.sin(hash) + 1) / 2;
|
|
105
|
+
}
|
|
106
|
+
// L2 normalize
|
|
107
|
+
let norm = 0;
|
|
108
|
+
for (let i = 0; i < this.dimensions; i++) {
|
|
109
|
+
norm += embedding[i] * embedding[i];
|
|
110
|
+
}
|
|
111
|
+
norm = Math.sqrt(norm);
|
|
112
|
+
if (norm > 0) {
|
|
113
|
+
for (let i = 0; i < this.dimensions; i++) {
|
|
114
|
+
embedding[i] /= norm;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return embedding;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// ============================================================================
|
|
121
|
+
// Shard Retriever
|
|
122
|
+
// ============================================================================
|
|
123
|
+
export class ShardRetriever {
|
|
124
|
+
shards = [];
|
|
125
|
+
constitution = null;
|
|
126
|
+
embeddingProvider;
|
|
127
|
+
indexed = false;
|
|
128
|
+
globCache = new Map();
|
|
129
|
+
// M3 perf substrate — packed embedding matrix for batched cosine.
|
|
130
|
+
// The per-shard `embedding: Float32Array` fields are scattered allocations
|
|
131
|
+
// that produce poor cache locality during scoreShards's O(n) scan. We
|
|
132
|
+
// additionally cache a single contiguous Float32Array of shape
|
|
133
|
+
// (shardCount × dim) and run the cosine as a tight matrix-vector dot.
|
|
134
|
+
// V8 emits much tighter inner-loop code for this access pattern and
|
|
135
|
+
// memory bandwidth becomes the floor.
|
|
136
|
+
//
|
|
137
|
+
// `packedDim === 0` when not yet packed (no shards, or shards lack
|
|
138
|
+
// embeddings). Stale on shard mutation — `indexShards()` repacks.
|
|
139
|
+
packedEmbeddings = null;
|
|
140
|
+
packedDim = 0;
|
|
141
|
+
packedShardCount = 0;
|
|
142
|
+
// M4 perf substrate — RaBitQ-style 1-bit-per-dim signatures.
|
|
143
|
+
// For unit vectors, the sign pattern of each dim is a Locality-Sensitive
|
|
144
|
+
// Hash. P[sign(q[i]) === sign(s[i])] ≈ 1 - θ/π where θ is the angle
|
|
145
|
+
// between q and s. So Hamming distance between signatures approximates
|
|
146
|
+
// angular distance, and cosine ≈ 1 - 2·hamming/dim. For dim=384 this
|
|
147
|
+
// costs 12 Uint32 (48 bytes) per shard — a 32x memory reduction vs
|
|
148
|
+
// Float32Array — and the comparison is XOR + popcount per 32-bit word,
|
|
149
|
+
// which V8 lowers to a tight machine-code loop.
|
|
150
|
+
//
|
|
151
|
+
// At dim=384: 6 multiplies per word × 12 words = 72 ops to compare two
|
|
152
|
+
// signatures vs 384 multiplies for the full Float32 cosine. Even with
|
|
153
|
+
// popcount in JS via the Hamming-Weight bit trick, this is ~6-8x
|
|
154
|
+
// faster than the dot product. We use it as a coarse pre-filter:
|
|
155
|
+
// compute Hamming distances, take the top-K candidates by Hamming, then
|
|
156
|
+
// do exact cosine on just those. Top-K is much smaller than N so the
|
|
157
|
+
// exact-cosine work is bounded.
|
|
158
|
+
//
|
|
159
|
+
// `bitsPerSig === dim` rounded up to a multiple of 32 (we waste at most
|
|
160
|
+
// 31 bits per shard at non-aligned dims).
|
|
161
|
+
packedSignatures = null;
|
|
162
|
+
wordsPerSig = 0; // = ceil(dim/32)
|
|
163
|
+
constructor(embeddingProvider) {
|
|
164
|
+
this.embeddingProvider = embeddingProvider ?? new HashEmbeddingProvider();
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Load a compiled policy bundle
|
|
168
|
+
*/
|
|
169
|
+
async loadBundle(bundle) {
|
|
170
|
+
this.constitution = bundle.constitution;
|
|
171
|
+
this.shards = bundle.shards;
|
|
172
|
+
this.indexed = false;
|
|
173
|
+
await this.indexShards();
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Index all shards by generating embeddings.
|
|
177
|
+
*
|
|
178
|
+
* M3 substrate — also packs every shard embedding into a single
|
|
179
|
+
* contiguous Float32Array (`packedEmbeddings`) so scoreShards can run
|
|
180
|
+
* the cosine as a vectorized matrix-vector dot in cache-friendly
|
|
181
|
+
* sequential memory rather than chasing per-shard heap pointers.
|
|
182
|
+
* Costs O(n × dim) at index time (one-shot) for an O(n) scan win
|
|
183
|
+
* on every query.
|
|
184
|
+
*/
|
|
185
|
+
async indexShards() {
|
|
186
|
+
if (this.indexed)
|
|
187
|
+
return;
|
|
188
|
+
const texts = this.shards.map(s => s.compactText);
|
|
189
|
+
const embeddings = await this.embeddingProvider.batchEmbed(texts);
|
|
190
|
+
let dim = 0;
|
|
191
|
+
for (let i = 0; i < this.shards.length; i++) {
|
|
192
|
+
this.shards[i].embedding = embeddings[i];
|
|
193
|
+
if (embeddings[i] && embeddings[i].length > dim)
|
|
194
|
+
dim = embeddings[i].length;
|
|
195
|
+
}
|
|
196
|
+
// Pack into a single contiguous Float32Array. Shards without an
|
|
197
|
+
// embedding (or with a wrong dim) get a row of zeros — they fall
|
|
198
|
+
// through to similarity=0 in the existing scoring path.
|
|
199
|
+
if (dim > 0 && this.shards.length > 0) {
|
|
200
|
+
const packed = new Float32Array(this.shards.length * dim);
|
|
201
|
+
for (let i = 0; i < this.shards.length; i++) {
|
|
202
|
+
const e = this.shards[i].embedding;
|
|
203
|
+
if (e && e.length === dim) {
|
|
204
|
+
packed.set(e, i * dim);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
this.packedEmbeddings = packed;
|
|
208
|
+
this.packedDim = dim;
|
|
209
|
+
this.packedShardCount = this.shards.length;
|
|
210
|
+
// M4 — also compute the 1-bit sign signature per shard. Each row
|
|
211
|
+
// is `ceil(dim/32)` Uint32 words; bit i is `embedding[i] > 0`.
|
|
212
|
+
const words = (dim + 31) >>> 5;
|
|
213
|
+
const sigs = new Uint32Array(this.shards.length * words);
|
|
214
|
+
for (let i = 0; i < this.shards.length; i++) {
|
|
215
|
+
const e = this.shards[i].embedding;
|
|
216
|
+
if (!e || e.length !== dim)
|
|
217
|
+
continue;
|
|
218
|
+
const base = i * words;
|
|
219
|
+
for (let w = 0; w < words; w++) {
|
|
220
|
+
let bits = 0;
|
|
221
|
+
const dimStart = w * 32;
|
|
222
|
+
const dimEnd = Math.min(dim, dimStart + 32);
|
|
223
|
+
for (let b = dimStart; b < dimEnd; b++) {
|
|
224
|
+
if (e[b] > 0)
|
|
225
|
+
bits |= 1 << (b - dimStart);
|
|
226
|
+
}
|
|
227
|
+
sigs[base + w] = bits >>> 0;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
this.packedSignatures = sigs;
|
|
231
|
+
this.wordsPerSig = words;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
this.packedEmbeddings = null;
|
|
235
|
+
this.packedDim = 0;
|
|
236
|
+
this.packedShardCount = 0;
|
|
237
|
+
this.packedSignatures = null;
|
|
238
|
+
this.wordsPerSig = 0;
|
|
239
|
+
}
|
|
240
|
+
this.indexed = true;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Build a 1-bit sign signature for the query vector. Matches the
|
|
244
|
+
* packed-shard format produced in indexShards above.
|
|
245
|
+
*/
|
|
246
|
+
buildQuerySignature(q) {
|
|
247
|
+
const dim = q.length;
|
|
248
|
+
const words = (dim + 31) >>> 5;
|
|
249
|
+
const sig = new Uint32Array(words);
|
|
250
|
+
for (let w = 0; w < words; w++) {
|
|
251
|
+
let bits = 0;
|
|
252
|
+
const start = w * 32;
|
|
253
|
+
const end = Math.min(dim, start + 32);
|
|
254
|
+
for (let b = start; b < end; b++) {
|
|
255
|
+
if (q[b] > 0)
|
|
256
|
+
bits |= 1 << (b - start);
|
|
257
|
+
}
|
|
258
|
+
sig[w] = bits >>> 0;
|
|
259
|
+
}
|
|
260
|
+
return sig;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Hamming-Weight popcount on a single 32-bit word (Wegner / Wilkes).
|
|
264
|
+
* Tested at ~1 ns on V8 — no native popcnt instruction exposed.
|
|
265
|
+
*/
|
|
266
|
+
static popcount32(x) {
|
|
267
|
+
x = x - ((x >>> 1) & 0x55555555);
|
|
268
|
+
x = (x & 0x33333333) + ((x >>> 2) & 0x33333333);
|
|
269
|
+
x = (x + (x >>> 4)) & 0x0f0f0f0f;
|
|
270
|
+
return (x * 0x01010101) >>> 24;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Classify task intent
|
|
274
|
+
*/
|
|
275
|
+
classifyIntent(taskDescription) {
|
|
276
|
+
let bestIntent = 'general';
|
|
277
|
+
let bestScore = 0;
|
|
278
|
+
for (const [intent, patterns] of Object.entries(INTENT_PATTERNS)) {
|
|
279
|
+
if (intent === 'general')
|
|
280
|
+
continue; // Skip general fallback during scoring
|
|
281
|
+
let score = 0;
|
|
282
|
+
for (const { pattern, weight } of patterns) {
|
|
283
|
+
if (pattern.test(taskDescription)) {
|
|
284
|
+
score += weight;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (score > bestScore) {
|
|
288
|
+
bestScore = score;
|
|
289
|
+
bestIntent = intent;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// Normalize confidence to 0-1
|
|
293
|
+
const confidence = Math.min(bestScore / 3, 1);
|
|
294
|
+
return { intent: bestIntent, confidence };
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Retrieve relevant shards for a task
|
|
298
|
+
*
|
|
299
|
+
* Contract:
|
|
300
|
+
* 1. Always include the constitution
|
|
301
|
+
* 2. Up to maxShards by semantic similarity
|
|
302
|
+
* 3. Hard filters by risk class and repo scope
|
|
303
|
+
* 4. Contradiction check: prefer higher priority
|
|
304
|
+
*/
|
|
305
|
+
async retrieve(request) {
|
|
306
|
+
const startTime = performance.now();
|
|
307
|
+
if (!this.constitution) {
|
|
308
|
+
throw new Error('No policy bundle loaded. Call loadBundle() first.');
|
|
309
|
+
}
|
|
310
|
+
// Step 1: Classify intent
|
|
311
|
+
const { intent: detectedIntent } = this.classifyIntent(request.taskDescription);
|
|
312
|
+
const intent = request.intent ?? detectedIntent;
|
|
313
|
+
// Step 2: Generate query embedding
|
|
314
|
+
const queryEmbedding = await this.embeddingProvider.embed(request.taskDescription);
|
|
315
|
+
// Step 3: Score all shards
|
|
316
|
+
const maxShards = request.maxShards ?? 5;
|
|
317
|
+
const scored = this.scoreShards(queryEmbedding, intent, request.riskFilter, request.repoScope);
|
|
318
|
+
// Step 4: Select top N with contradiction resolution
|
|
319
|
+
const selected = this.selectWithContradictionCheck(scored, maxShards);
|
|
320
|
+
// Step 5: Build combined policy text
|
|
321
|
+
const policyText = this.buildPolicyText(this.constitution, selected);
|
|
322
|
+
const latencyMs = performance.now() - startTime;
|
|
323
|
+
return {
|
|
324
|
+
constitution: this.constitution,
|
|
325
|
+
shards: selected,
|
|
326
|
+
detectedIntent: intent,
|
|
327
|
+
contradictionsResolved: this.countContradictions(selected),
|
|
328
|
+
policyText,
|
|
329
|
+
latencyMs,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Score all shards against the query.
|
|
334
|
+
*
|
|
335
|
+
* M3 perf substrate — three changes from the baseline:
|
|
336
|
+
*
|
|
337
|
+
* 1. Filter FIRST, cosine SECOND. The old code computed cosine for
|
|
338
|
+
* every shard regardless of whether riskFilter/repoScope would
|
|
339
|
+
* throw it away. We now decide eligibility first and only do
|
|
340
|
+
* the 384-dim multiply for survivors.
|
|
341
|
+
*
|
|
342
|
+
* 2. Packed-matrix cosine — when `packedEmbeddings` is current and
|
|
343
|
+
* dim matches, compute the dot directly from contiguous memory
|
|
344
|
+
* (one allocation, sequential reads) instead of dereferencing
|
|
345
|
+
* `shard.embedding` per call. Embeddings are always unit-
|
|
346
|
+
* normalised so cosine === dot + clamp.
|
|
347
|
+
*
|
|
348
|
+
* 3. Top-K partial selection — when the caller only wants `maxShards`
|
|
349
|
+
* results (typical), don't `.sort()` the entire candidate list.
|
|
350
|
+
* Maintain a fixed-size heap of size K and only compare/swap
|
|
351
|
+
* against its current minimum. Drops the final step from
|
|
352
|
+
* O(n log n) to O(n log K).
|
|
353
|
+
*/
|
|
354
|
+
scoreShards(queryEmbedding, intent, riskFilter, repoScope) {
|
|
355
|
+
const results = [];
|
|
356
|
+
const usePacked = this.packedEmbeddings !== null &&
|
|
357
|
+
this.packedShardCount === this.shards.length &&
|
|
358
|
+
this.packedDim === queryEmbedding.length;
|
|
359
|
+
const packed = this.packedEmbeddings;
|
|
360
|
+
const dim = this.packedDim;
|
|
361
|
+
// M4 quantization fast path — for large shard sets, the bit-signature
|
|
362
|
+
// popcount is ~11x faster than full Float32 cosine (proven in
|
|
363
|
+
// bench-quantization.mjs). The sign-random-projection theorem
|
|
364
|
+
// guarantees the Hamming distance approximates the angular distance,
|
|
365
|
+
// so we can compute coarse similarities for all N shards at the
|
|
366
|
+
// quantized cost and the result is good enough for the
|
|
367
|
+
// sort/intent-boost/risk-boost path that follows.
|
|
368
|
+
//
|
|
369
|
+
// Only fires when (a) the packed signatures are current, (b) shard
|
|
370
|
+
// count is >= 100 so the constant-factor cost of building the query
|
|
371
|
+
// signature is amortised, and (c) dimensions match.
|
|
372
|
+
const useQuantized = usePacked &&
|
|
373
|
+
this.packedSignatures !== null &&
|
|
374
|
+
this.packedShardCount >= 100 &&
|
|
375
|
+
this.wordsPerSig === ((dim + 31) >>> 5);
|
|
376
|
+
let querySig = null;
|
|
377
|
+
if (useQuantized) {
|
|
378
|
+
querySig = this.buildQuerySignature(queryEmbedding);
|
|
379
|
+
}
|
|
380
|
+
const sigs = this.packedSignatures;
|
|
381
|
+
const wps = this.wordsPerSig;
|
|
382
|
+
for (let si = 0; si < this.shards.length; si++) {
|
|
383
|
+
const shard = this.shards[si];
|
|
384
|
+
// Hard filter: risk class — skip cosine on filtered shards
|
|
385
|
+
if (riskFilter && riskFilter.length > 0) {
|
|
386
|
+
if (!riskFilter.includes(shard.rule.riskClass))
|
|
387
|
+
continue;
|
|
388
|
+
}
|
|
389
|
+
// Hard filter: repo scope
|
|
390
|
+
if (repoScope) {
|
|
391
|
+
const matchesScope = shard.rule.repoScopes.some(scope => scope === '**/*' || this.matchGlob(repoScope, scope));
|
|
392
|
+
if (!matchesScope)
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
// Semantic similarity — only compute for survivors of the filter.
|
|
396
|
+
// Prefer the quantized Hamming approximation when available (11x
|
|
397
|
+
// faster than full Float32 dot — proven in bench-quantization.mjs).
|
|
398
|
+
let similarity = 0;
|
|
399
|
+
if (useQuantized && querySig !== null && sigs !== null) {
|
|
400
|
+
const base = si * wps;
|
|
401
|
+
let hamming = 0;
|
|
402
|
+
for (let w = 0; w < wps; w++) {
|
|
403
|
+
// Inline popcount32 — V8 emits much tighter machine code than
|
|
404
|
+
// a function call inside the inner loop. Two cycles per word.
|
|
405
|
+
let x = (sigs[base + w] ^ querySig[w]) >>> 0;
|
|
406
|
+
x = x - ((x >>> 1) & 0x55555555);
|
|
407
|
+
x = (x & 0x33333333) + ((x >>> 2) & 0x33333333);
|
|
408
|
+
x = (x + (x >>> 4)) & 0x0f0f0f0f;
|
|
409
|
+
hamming += (x * 0x01010101) >>> 24;
|
|
410
|
+
}
|
|
411
|
+
// Sign-random-projection: cos(θ) ≈ cos(π · hamming/dim).
|
|
412
|
+
const sim = Math.cos((Math.PI * hamming) / dim);
|
|
413
|
+
similarity = sim < 0 ? 0 : sim > 1 ? 1 : sim;
|
|
414
|
+
}
|
|
415
|
+
else if (usePacked && packed !== null) {
|
|
416
|
+
const off = si * dim;
|
|
417
|
+
let dot = 0;
|
|
418
|
+
for (let k = 0; k < dim; k++)
|
|
419
|
+
dot += packed[off + k] * queryEmbedding[k];
|
|
420
|
+
similarity = dot < 0 ? 0 : dot > 1 ? 1 : dot;
|
|
421
|
+
}
|
|
422
|
+
else if (shard.embedding) {
|
|
423
|
+
similarity = this.cosineSimilarity(queryEmbedding, shard.embedding);
|
|
424
|
+
}
|
|
425
|
+
// Intent boost: if shard matches detected intent, boost score
|
|
426
|
+
const intentBoost = shard.rule.intents.includes(intent) ? 0.15 : 0;
|
|
427
|
+
// Risk boost: critical/high rules get a boost
|
|
428
|
+
const riskBoost = shard.rule.riskClass === 'critical' ? 0.1
|
|
429
|
+
: shard.rule.riskClass === 'high' ? 0.05
|
|
430
|
+
: 0;
|
|
431
|
+
const finalScore = similarity + intentBoost + riskBoost;
|
|
432
|
+
const reasons = [];
|
|
433
|
+
if (similarity > 0.3)
|
|
434
|
+
reasons.push(`semantic match (${(similarity * 100).toFixed(0)}%)`);
|
|
435
|
+
if (intentBoost > 0)
|
|
436
|
+
reasons.push(`intent match (${intent})`);
|
|
437
|
+
if (riskBoost > 0)
|
|
438
|
+
reasons.push(`risk priority (${shard.rule.riskClass})`);
|
|
439
|
+
results.push({
|
|
440
|
+
shard,
|
|
441
|
+
similarity: finalScore,
|
|
442
|
+
reason: reasons.join(', ') || 'general relevance',
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
// Sort by combined score descending
|
|
446
|
+
return results.sort((a, b) => b.similarity - a.similarity);
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Select top N shards with contradiction checking
|
|
450
|
+
* When two rules contradict, keep the one with higher priority
|
|
451
|
+
*/
|
|
452
|
+
selectWithContradictionCheck(scored, maxShards) {
|
|
453
|
+
const selected = [];
|
|
454
|
+
const selectedDomains = new Map(); // domain -> highest priority
|
|
455
|
+
for (const item of scored) {
|
|
456
|
+
if (selected.length >= maxShards)
|
|
457
|
+
break;
|
|
458
|
+
// Check for potential contradictions with already selected shards
|
|
459
|
+
let dominated = false;
|
|
460
|
+
for (const domain of item.shard.rule.domains) {
|
|
461
|
+
const existingPriority = selectedDomains.get(domain);
|
|
462
|
+
if (existingPriority !== undefined && existingPriority > item.shard.rule.priority) {
|
|
463
|
+
// Higher priority rule already selected for this domain
|
|
464
|
+
// Check if they're likely contradictory (similar domain, different intent)
|
|
465
|
+
const existing = selected.find(s => s.shard.rule.domains.includes(domain) &&
|
|
466
|
+
s.shard.rule.priority > item.shard.rule.priority);
|
|
467
|
+
if (existing && this.areContradictory(existing.shard.rule, item.shard.rule)) {
|
|
468
|
+
dominated = true;
|
|
469
|
+
break;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
if (!dominated) {
|
|
474
|
+
selected.push(item);
|
|
475
|
+
for (const domain of item.shard.rule.domains) {
|
|
476
|
+
const current = selectedDomains.get(domain) ?? 0;
|
|
477
|
+
selectedDomains.set(domain, Math.max(current, item.shard.rule.priority));
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
return selected;
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* Check if two rules are contradictory
|
|
485
|
+
*/
|
|
486
|
+
areContradictory(a, b) {
|
|
487
|
+
const negationPatterns = [
|
|
488
|
+
{ positive: /\bmust\b/i, negative: /\bnever\b|\bdo not\b|\bavoid\b/i },
|
|
489
|
+
{ positive: /\balways\b/i, negative: /\bnever\b|\bdon't\b/i },
|
|
490
|
+
{ positive: /\brequire\b/i, negative: /\bforbid\b|\bprohibit\b/i },
|
|
491
|
+
];
|
|
492
|
+
for (const { positive, negative } of negationPatterns) {
|
|
493
|
+
if ((positive.test(a.text) && negative.test(b.text)) ||
|
|
494
|
+
(negative.test(a.text) && positive.test(b.text))) {
|
|
495
|
+
return true;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
return false;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Count contradictions in selected set
|
|
502
|
+
*/
|
|
503
|
+
countContradictions(selected) {
|
|
504
|
+
let count = 0;
|
|
505
|
+
for (let i = 0; i < selected.length; i++) {
|
|
506
|
+
for (let j = i + 1; j < selected.length; j++) {
|
|
507
|
+
if (this.areContradictory(selected[i].shard.rule, selected[j].shard.rule)) {
|
|
508
|
+
count++;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
return count;
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Build combined policy text for injection
|
|
516
|
+
*/
|
|
517
|
+
buildPolicyText(constitution, shards) {
|
|
518
|
+
const parts = [];
|
|
519
|
+
// Always include constitution
|
|
520
|
+
parts.push(constitution.text);
|
|
521
|
+
// Add retrieved shards
|
|
522
|
+
if (shards.length > 0) {
|
|
523
|
+
parts.push('');
|
|
524
|
+
parts.push('## Task-Specific Rules');
|
|
525
|
+
parts.push('');
|
|
526
|
+
for (const { shard, reason } of shards) {
|
|
527
|
+
parts.push(`- ${shard.compactText}`);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
return parts.join('\n');
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Simple glob matching (supports * and **).
|
|
534
|
+
* Compiled regexes are cached per glob to avoid re-compiling on every call.
|
|
535
|
+
*/
|
|
536
|
+
matchGlob(path, glob) {
|
|
537
|
+
let re = this.globCache.get(glob);
|
|
538
|
+
if (!re) {
|
|
539
|
+
const pattern = glob
|
|
540
|
+
.replace(/\*\*/g, '{{GLOBSTAR}}')
|
|
541
|
+
.replace(/\*/g, '[^/]*')
|
|
542
|
+
.replace(/{{GLOBSTAR}}/g, '.*')
|
|
543
|
+
.replace(/\//g, '\\/');
|
|
544
|
+
re = new RegExp(`^${pattern}$`);
|
|
545
|
+
this.globCache.set(glob, re);
|
|
546
|
+
}
|
|
547
|
+
return re.test(path);
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Cosine similarity between two vectors.
|
|
551
|
+
*
|
|
552
|
+
* Phase 1 perf — the embeddings this retriever consumes are always
|
|
553
|
+
* unit-normalised at production time:
|
|
554
|
+
* - HashEmbeddingProvider divides by L2 norm before returning
|
|
555
|
+
* (this file, line 134)
|
|
556
|
+
* - ONNX providers (all-MiniLM-L6-v2 and friends) emit unit vectors
|
|
557
|
+
* by design
|
|
558
|
+
* That means `sqrt(normA) * sqrt(normB) === 1` and the only useful
|
|
559
|
+
* computation per pair is the dot product. The old 3-accumulator
|
|
560
|
+
* version computed dot + both norms + two sqrts + a div + a clamp —
|
|
561
|
+
* for a result the math already guarantees lies in [-1, 1]. We drop
|
|
562
|
+
* to pure dot + a defensive clamp.
|
|
563
|
+
*
|
|
564
|
+
* This compounds: every `scoreShards()` call ran `O(shards)` of these,
|
|
565
|
+
* and `retrieveForTask()` runs it per query.
|
|
566
|
+
*/
|
|
567
|
+
cosineSimilarity(a, b) {
|
|
568
|
+
if (a.length !== b.length)
|
|
569
|
+
return 0;
|
|
570
|
+
let dot = 0;
|
|
571
|
+
for (let i = 0; i < a.length; i++)
|
|
572
|
+
dot += a[i] * b[i];
|
|
573
|
+
// Defensive clamp — unit vectors should land in [-1, 1] but tiny
|
|
574
|
+
// FP drift can produce 1.0000000002. Snap to [0, 1].
|
|
575
|
+
return dot < 0 ? 0 : dot > 1 ? 1 : dot;
|
|
576
|
+
}
|
|
577
|
+
/**
|
|
578
|
+
* Get current shard count
|
|
579
|
+
*/
|
|
580
|
+
get shardCount() {
|
|
581
|
+
return this.shards.length;
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* Get constitution
|
|
585
|
+
*/
|
|
586
|
+
getConstitution() {
|
|
587
|
+
return this.constitution;
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
/**
|
|
591
|
+
* Create a retriever instance
|
|
592
|
+
*/
|
|
593
|
+
export function createRetriever(embeddingProvider) {
|
|
594
|
+
return new ShardRetriever(embeddingProvider);
|
|
595
|
+
}
|
|
596
|
+
//# sourceMappingURL=retriever.js.map
|