@claude-flow/cli 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/analysis/analyze-code-quality.md +178 -178
- package/.claude/agents/analysis/code-analyzer.md +209 -209
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +178 -178
- package/.claude/agents/architecture/arch-system-design.md +156 -156
- package/.claude/agents/architecture/system-design/arch-system-design.md +154 -154
- package/.claude/agents/browser/browser-agent.yaml +182 -182
- package/.claude/agents/consensus/byzantine-coordinator.md +62 -62
- package/.claude/agents/consensus/crdt-synchronizer.md +996 -996
- package/.claude/agents/consensus/gossip-coordinator.md +62 -62
- package/.claude/agents/consensus/performance-benchmarker.md +850 -850
- package/.claude/agents/consensus/quorum-manager.md +822 -822
- package/.claude/agents/consensus/raft-manager.md +62 -62
- package/.claude/agents/consensus/security-manager.md +621 -621
- package/.claude/agents/core/planner.md +374 -374
- package/.claude/agents/custom/test-long-runner.md +44 -44
- package/.claude/agents/data/data-ml-model.md +444 -444
- package/.claude/agents/data/ml/data-ml-model.md +192 -192
- package/.claude/agents/development/backend/dev-backend-api.md +141 -141
- package/.claude/agents/development/dev-backend-api.md +344 -344
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +163 -163
- package/.claude/agents/devops/ops-cicd-github.md +164 -164
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +173 -173
- package/.claude/agents/documentation/docs-api-openapi.md +354 -354
- 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 +377 -377
- package/.claude/agents/github/github-modes.md +172 -172
- package/.claude/agents/github/issue-tracker.md +575 -575
- package/.claude/agents/github/multi-repo-swarm.md +552 -552
- package/.claude/agents/github/pr-manager.md +437 -437
- package/.claude/agents/github/project-board-sync.md +508 -508
- package/.claude/agents/github/release-manager.md +604 -604
- package/.claude/agents/github/release-swarm.md +582 -582
- package/.claude/agents/github/repo-architect.md +397 -397
- package/.claude/agents/github/swarm-issue.md +572 -572
- package/.claude/agents/github/swarm-pr.md +427 -427
- package/.claude/agents/github/sync-coordinator.md +451 -451
- package/.claude/agents/github/workflow-automation.md +902 -902
- package/.claude/agents/goal/agent.md +815 -815
- package/.claude/agents/optimization/benchmark-suite.md +664 -664
- package/.claude/agents/optimization/load-balancer.md +430 -430
- package/.claude/agents/optimization/performance-monitor.md +671 -671
- package/.claude/agents/optimization/resource-allocator.md +673 -673
- package/.claude/agents/optimization/topology-optimizer.md +807 -807
- package/.claude/agents/payments/agentic-payments.md +126 -126
- package/.claude/agents/sona/sona-learning-optimizer.md +74 -74
- package/.claude/agents/sparc/architecture.md +698 -698
- package/.claude/agents/sparc/pseudocode.md +519 -519
- package/.claude/agents/sparc/refinement.md +801 -801
- package/.claude/agents/sparc/specification.md +477 -477
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +224 -224
- package/.claude/agents/specialized/spec-mobile-react-native.md +226 -226
- 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 +1126 -1126
- package/.claude/agents/swarm/hierarchical-coordinator.md +709 -709
- package/.claude/agents/swarm/mesh-coordinator.md +962 -962
- package/.claude/agents/templates/automation-smart-agent.md +204 -204
- package/.claude/agents/templates/base-template-generator.md +289 -289
- package/.claude/agents/templates/coordinator-swarm-init.md +89 -89
- package/.claude/agents/templates/github-pr-manager.md +176 -176
- package/.claude/agents/templates/implementer-sparc-coder.md +258 -258
- package/.claude/agents/templates/memory-coordinator.md +186 -186
- package/.claude/agents/templates/orchestrator-task.md +138 -138
- package/.claude/agents/templates/performance-analyzer.md +198 -198
- package/.claude/agents/templates/sparc-coordinator.md +513 -513
- package/.claude/agents/testing/production-validator.md +394 -394
- package/.claude/agents/testing/tdd-london-swarm.md +243 -243
- package/.claude/agents/v3/aidefence-guardian.md +282 -282
- package/.claude/agents/v3/claims-authorizer.md +208 -208
- package/.claude/agents/v3/collective-intelligence-coordinator.md +993 -993
- package/.claude/agents/v3/ddd-domain-expert.md +220 -220
- package/.claude/agents/v3/injection-analyst.md +236 -236
- package/.claude/agents/v3/performance-engineer.md +1233 -1233
- package/.claude/agents/v3/pii-detector.md +151 -151
- package/.claude/agents/v3/reasoningbank-learner.md +213 -213
- package/.claude/agents/v3/security-architect-aidefence.md +410 -410
- package/.claude/agents/v3/security-architect.md +867 -867
- package/.claude/agents/v3/swarm-memory-manager.md +157 -157
- package/.claude/agents/v3/v3-integration-architect.md +205 -205
- package/.claude/commands/agents/README.md +50 -50
- package/.claude/commands/agents/agent-capabilities.md +140 -140
- 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 +216 -216
- package/.claude/commands/agents/health.md +139 -139
- package/.claude/commands/agents/list.md +100 -100
- package/.claude/commands/agents/logs.md +130 -130
- package/.claude/commands/agents/metrics.md +122 -122
- package/.claude/commands/agents/pool.md +127 -127
- package/.claude/commands/agents/spawn.md +140 -140
- package/.claude/commands/agents/status.md +115 -115
- package/.claude/commands/agents/stop.md +102 -102
- 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/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 +339 -339
- 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 +484 -484
- package/.claude/commands/github/swarm-pr.md +287 -287
- package/.claude/commands/github/sync-coordinator.md +302 -302
- 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 +87 -87
- 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 +107 -107
- package/.claude/commands/training/neural-train.md +75 -75
- 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/eval/human-relevance-frozen-v1.json +17 -17
- package/.claude/evolve-proof/generation-0.json +211 -211
- package/.claude/evolve-proof/real-generation-0.json +406 -406
- package/.claude/evolve-proof/real-generation-1.json +406 -406
- package/.claude/helpers/README.md +96 -96
- package/.claude/helpers/adr-compliance.sh +186 -186
- 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/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 -6
- package/.claude/helpers/hook-handler.cjs +460 -460
- package/.claude/helpers/intelligence.cjs +1058 -1058
- 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.js +83 -83
- package/.claude/helpers/metrics-db.mjs +503 -503
- package/.claude/helpers/pattern-consolidator.sh +86 -86
- package/.claude/helpers/perf-worker.sh +160 -160
- package/.claude/helpers/post-commit +16 -16
- package/.claude/helpers/pre-commit +26 -26
- package/.claude/helpers/quick-start.sh +19 -19
- package/.claude/helpers/router.js +105 -105
- package/.claude/helpers/security-scanner.sh +127 -127
- package/.claude/helpers/session.js +157 -157
- package/.claude/helpers/setup-mcp.sh +18 -18
- package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
- package/.claude/helpers/statusline-hook.sh +21 -21
- package/.claude/helpers/statusline.cjs +925 -925
- package/.claude/helpers/statusline.js +352 -352
- 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/proven-config.json +1 -1
- package/.claude/proven-config.manifest.json +37 -37
- package/.claude/proven-config.signed.json +41 -41
- package/.claude/settings.json +182 -182
- 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/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/hooks-automation/SKILL.md +1201 -1201
- package/.claude/skills/pair-programming/SKILL.md +1202 -1202
- 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/README.md +419 -419
- package/bin/cli.js +314 -314
- package/bin/mcp-server.js +224 -224
- package/bin/preinstall.cjs +2 -2
- package/catalog-manifest.json +2 -2
- package/dist/src/benchmarks/gaia-critic.js +24 -24
- package/dist/src/business-pods/bbs-budget-tracker.js +53 -53
- package/dist/src/commands/completions.js +409 -409
- package/dist/src/commands/daemon.d.ts +23 -0
- package/dist/src/commands/daemon.js +216 -44
- package/dist/src/commands/embeddings.js +26 -26
- package/dist/src/commands/funnel.d.ts +2 -0
- package/dist/src/commands/funnel.js +110 -2
- package/dist/src/commands/hive-mind.js +97 -97
- package/dist/src/commands/hooks.js +9 -9
- package/dist/src/commands/init.js +94 -38
- package/dist/src/commands/memory.js +85 -1
- package/dist/src/commands/ruvector/backup.js +23 -23
- package/dist/src/commands/ruvector/benchmark.js +31 -31
- package/dist/src/commands/ruvector/import.js +14 -14
- package/dist/src/commands/ruvector/init.js +115 -115
- package/dist/src/commands/ruvector/migrate.js +99 -99
- package/dist/src/commands/ruvector/optimize.js +51 -51
- package/dist/src/commands/ruvector/setup.js +624 -624
- package/dist/src/commands/ruvector/status.js +38 -38
- package/dist/src/config/proven-config.js +2 -2
- package/dist/src/funnel/disclosure.d.ts +1 -0
- package/dist/src/funnel/disclosure.js +12 -0
- package/dist/src/funnel/index.d.ts +1 -1
- package/dist/src/funnel/index.js +1 -1
- package/dist/src/init/claudemd-generator.js +231 -231
- package/dist/src/init/executor.js +453 -453
- package/dist/src/init/helper-signing.d.ts +8 -1
- package/dist/src/init/helper-signing.js +9 -2
- package/dist/src/init/helpers-generator.js +751 -751
- package/dist/src/init/statusline-generator.js +994 -951
- package/dist/src/mcp-tools/agentdb-tools.js +15 -15
- package/dist/src/mcp-tools/browser-intent-tools.js +19 -19
- package/dist/src/memory/graph-edge-writer.js +22 -22
- package/dist/src/memory/memory-bridge.d.ts +10 -0
- package/dist/src/memory/memory-bridge.js +139 -88
- package/dist/src/memory/memory-initializer.d.ts +18 -0
- package/dist/src/memory/memory-initializer.js +539 -407
- package/dist/src/memory/rabitq-index.js +5 -5
- package/dist/src/runtime/headless.js +28 -28
- package/dist/src/ruvector/flash-attention.d.ts +195 -0
- package/dist/src/ruvector/flash-attention.js +643 -0
- package/dist/src/ruvector/moe-router.d.ts +206 -0
- package/dist/src/ruvector/moe-router.js +626 -0
- package/dist/src/services/distill-tuning.js +7 -7
- package/dist/src/services/event-stream.d.ts +25 -0
- package/dist/src/services/event-stream.js +27 -0
- package/dist/src/services/global-ai-budget.d.ts +25 -0
- package/dist/src/services/global-ai-budget.js +56 -0
- package/dist/src/services/headless-worker-executor.d.ts +21 -0
- package/dist/src/services/headless-worker-executor.js +152 -86
- package/dist/src/services/loop-worker-runner.d.ts +16 -0
- package/dist/src/services/loop-worker-runner.js +34 -0
- package/dist/src/services/memory-distillation.js +4 -4
- package/dist/src/services/repo-supervisor.d.ts +70 -0
- package/dist/src/services/repo-supervisor.js +228 -0
- package/dist/src/services/runtime-capabilities.d.ts +22 -0
- package/dist/src/services/runtime-capabilities.js +45 -0
- package/dist/src/services/worker-daemon.d.ts +26 -0
- package/dist/src/services/worker-daemon.js +95 -5
- package/dist/src/services/workspace-lease.d.ts +55 -0
- package/dist/src/services/workspace-lease.js +191 -0
- package/dist/src/transfer/deploy-seraphine.js +23 -23
- package/package.json +134 -133
- package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +32 -32
- package/plugins/ruflo-metaharness/README.md +72 -72
- package/plugins/ruflo-metaharness/agents/metaharness-architect.md +58 -58
- package/plugins/ruflo-metaharness/commands/ruflo-metaharness.md +48 -48
- package/plugins/ruflo-metaharness/scripts/_darwin.mjs +210 -210
- package/plugins/ruflo-metaharness/scripts/_harness.mjs +330 -330
- package/plugins/ruflo-metaharness/scripts/_invoke.mjs +231 -231
- package/plugins/ruflo-metaharness/scripts/_redblue.mjs +143 -143
- package/plugins/ruflo-metaharness/scripts/_similarity.mjs +161 -161
- package/plugins/ruflo-metaharness/scripts/_spike-similarity.mjs +223 -223
- package/plugins/ruflo-metaharness/scripts/audit-list.mjs +158 -158
- package/plugins/ruflo-metaharness/scripts/audit-trend.mjs +272 -272
- package/plugins/ruflo-metaharness/scripts/bench-parse-mcp-scan.mjs +146 -146
- package/plugins/ruflo-metaharness/scripts/bench-recordpair-overhead.mjs +186 -186
- package/plugins/ruflo-metaharness/scripts/bench-similarity.mjs +177 -177
- package/plugins/ruflo-metaharness/scripts/bench.mjs +95 -95
- package/plugins/ruflo-metaharness/scripts/drift-from-history.mjs +363 -363
- package/plugins/ruflo-metaharness/scripts/evolve.mjs +404 -404
- package/plugins/ruflo-metaharness/scripts/genome.mjs +80 -80
- package/plugins/ruflo-metaharness/scripts/gepa.mjs +153 -153
- package/plugins/ruflo-metaharness/scripts/learn.mjs +127 -127
- package/plugins/ruflo-metaharness/scripts/mcp-scan.mjs +111 -111
- package/plugins/ruflo-metaharness/scripts/mint.mjs +126 -126
- package/plugins/ruflo-metaharness/scripts/oia-audit.mjs +228 -228
- package/plugins/ruflo-metaharness/scripts/redblue.mjs +286 -286
- package/plugins/ruflo-metaharness/scripts/router-parallel-analyze.mjs +250 -250
- package/plugins/ruflo-metaharness/scripts/score.mjs +92 -92
- package/plugins/ruflo-metaharness/scripts/security-bench.mjs +174 -174
- package/plugins/ruflo-metaharness/scripts/similarity.mjs +158 -158
- package/plugins/ruflo-metaharness/scripts/smoke.sh +2353 -2353
- package/plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs +165 -165
- package/plugins/ruflo-metaharness/scripts/test-mcp-tools.mjs +472 -472
- package/plugins/ruflo-metaharness/scripts/test-parallel-pipeline.mjs +204 -204
- package/plugins/ruflo-metaharness/scripts/test-pipeline-roundtrip.mjs +586 -586
- package/plugins/ruflo-metaharness/scripts/test-similarity.mjs +334 -334
- package/plugins/ruflo-metaharness/scripts/test-with-openrouter.mjs +229 -229
- package/plugins/ruflo-metaharness/scripts/threat-model.mjs +59 -59
- package/plugins/ruflo-metaharness/skills/harness-bench/SKILL.md +64 -64
- package/plugins/ruflo-metaharness/skills/harness-drift-from-history/SKILL.md +65 -65
- package/plugins/ruflo-metaharness/skills/harness-evolve/SKILL.md +131 -131
- package/plugins/ruflo-metaharness/skills/harness-genome/SKILL.md +54 -54
- package/plugins/ruflo-metaharness/skills/harness-gepa/SKILL.md +65 -65
- package/plugins/ruflo-metaharness/skills/harness-learn/SKILL.md +65 -65
- package/plugins/ruflo-metaharness/skills/harness-mcp-scan/SKILL.md +49 -49
- package/plugins/ruflo-metaharness/skills/harness-mint/SKILL.md +72 -72
- package/plugins/ruflo-metaharness/skills/harness-oia-audit/SKILL.md +79 -79
- package/plugins/ruflo-metaharness/skills/harness-score/SKILL.md +66 -66
- package/plugins/ruflo-metaharness/skills/harness-security-bench/SKILL.md +101 -101
- package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +67 -67
- package/plugins/ruflo-metaharness/skills/harness-threat-model/SKILL.md +41 -41
- package/scripts/postinstall.cjs +153 -153
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NDJSON Event Stream for CLI --stream mode
|
|
3
|
+
*
|
|
4
|
+
* Emits newline-delimited JSON events to stdout for consumption
|
|
5
|
+
* by Claude Code's Monitor tool. Each event includes schema versioning.
|
|
6
|
+
*
|
|
7
|
+
* @see ADR-091: NDJSON event streaming infrastructure
|
|
8
|
+
*/
|
|
9
|
+
import { randomBytes } from 'crypto';
|
|
10
|
+
/** Generate a short unique run ID (e.g. run_m1abc_3f2a1b) */
|
|
11
|
+
export function createRunId() {
|
|
12
|
+
return `run_${Date.now().toString(36)}_${randomBytes(3).toString('hex')}`;
|
|
13
|
+
}
|
|
14
|
+
/** Write one NDJSON line to stdout with schema and timestamp auto-populated */
|
|
15
|
+
export function emitEvent(event) {
|
|
16
|
+
const full = Object.assign({ schema: 'ruflo.event.v1', ts: new Date().toISOString() }, event);
|
|
17
|
+
process.stdout.write(JSON.stringify(full) + '\n');
|
|
18
|
+
}
|
|
19
|
+
/** Convenience wrapper that binds a runId to an emitter */
|
|
20
|
+
export function createEventEmitter(runId) {
|
|
21
|
+
return {
|
|
22
|
+
emit(event, data) {
|
|
23
|
+
emitEvent({ runId, event, ...data });
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=event-stream.js.map
|
|
@@ -80,6 +80,31 @@ export declare class GlobalAiBudget {
|
|
|
80
80
|
* daemon pauses ALL autonomous Claude launches for the cooldown window.
|
|
81
81
|
*/
|
|
82
82
|
recordQuotaError(detail: string): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* #2661 root-fix — manual pause, via `ruflo daemon budget pause`. Distinct
|
|
85
|
+
* from the automatic quota-error circuit breaker only in duration (open-
|
|
86
|
+
* ended, until explicitly resumed, instead of a fixed cooldown) and
|
|
87
|
+
* reason text — the enforcement path in reserve() is identical, so a
|
|
88
|
+
* manual pause is just as hard a stop as a quota-triggered one.
|
|
89
|
+
*/
|
|
90
|
+
pause(reason?: string): Promise<void>;
|
|
91
|
+
/** #2661 root-fix — `ruflo daemon budget resume`. Clears ANY pause (manual or quota-triggered). */
|
|
92
|
+
resume(): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* #2661 root-fix — structured per-launch token telemetry. Best-effort,
|
|
95
|
+
* receipt-only: usage is recorded as a distinct receipt keyed by permitId
|
|
96
|
+
* rather than mutated into the launch ledger, so a usage-recording failure
|
|
97
|
+
* can never corrupt the budget-enforcement ledger. Only operational
|
|
98
|
+
* metadata — never prompts or source content.
|
|
99
|
+
*/
|
|
100
|
+
recordUsage(permitId: string | undefined, usage: {
|
|
101
|
+
workerType: string;
|
|
102
|
+
model: string;
|
|
103
|
+
inputTokens?: number;
|
|
104
|
+
outputTokens?: number;
|
|
105
|
+
durationMs?: number;
|
|
106
|
+
costUsd?: number;
|
|
107
|
+
}): void;
|
|
83
108
|
/** Snapshot for `daemon status` / diagnostics. */
|
|
84
109
|
getUsage(): {
|
|
85
110
|
lastHour: number;
|
|
@@ -221,6 +221,62 @@ export class GlobalAiBudget {
|
|
|
221
221
|
unlock?.();
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* #2661 root-fix — manual pause, via `ruflo daemon budget pause`. Distinct
|
|
226
|
+
* from the automatic quota-error circuit breaker only in duration (open-
|
|
227
|
+
* ended, until explicitly resumed, instead of a fixed cooldown) and
|
|
228
|
+
* reason text — the enforcement path in reserve() is identical, so a
|
|
229
|
+
* manual pause is just as hard a stop as a quota-triggered one.
|
|
230
|
+
*/
|
|
231
|
+
async pause(reason) {
|
|
232
|
+
let unlock = null;
|
|
233
|
+
try {
|
|
234
|
+
unlock = await this.acquireLock();
|
|
235
|
+
const now = Date.now();
|
|
236
|
+
const ledger = this.readLedger(now);
|
|
237
|
+
// Sentinel far-future timestamp rather than a real duration — resume()
|
|
238
|
+
// is the only thing that clears it. year ~2255, safely beyond any
|
|
239
|
+
// realistic process lifetime, and still a valid finite JS timestamp.
|
|
240
|
+
ledger.pausedUntil = 9_000_000_000_000;
|
|
241
|
+
ledger.pauseReason = (reason ?? 'manual pause (ruflo daemon budget pause)').slice(0, 200);
|
|
242
|
+
this.writeLedger(ledger);
|
|
243
|
+
this.appendReceipt({ event: 'manual-pause', at: now, reason: ledger.pauseReason });
|
|
244
|
+
}
|
|
245
|
+
finally {
|
|
246
|
+
unlock?.();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/** #2661 root-fix — `ruflo daemon budget resume`. Clears ANY pause (manual or quota-triggered). */
|
|
250
|
+
async resume() {
|
|
251
|
+
let unlock = null;
|
|
252
|
+
try {
|
|
253
|
+
unlock = await this.acquireLock();
|
|
254
|
+
const now = Date.now();
|
|
255
|
+
const ledger = this.readLedger(now);
|
|
256
|
+
const wasPaused = ledger.pausedUntil !== undefined && ledger.pausedUntil > now;
|
|
257
|
+
ledger.pausedUntil = undefined;
|
|
258
|
+
ledger.pauseReason = undefined;
|
|
259
|
+
this.writeLedger(ledger);
|
|
260
|
+
if (wasPaused) {
|
|
261
|
+
this.appendReceipt({ event: 'manual-resume', at: now });
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
finally {
|
|
265
|
+
unlock?.();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* #2661 root-fix — structured per-launch token telemetry. Best-effort,
|
|
270
|
+
* receipt-only: usage is recorded as a distinct receipt keyed by permitId
|
|
271
|
+
* rather than mutated into the launch ledger, so a usage-recording failure
|
|
272
|
+
* can never corrupt the budget-enforcement ledger. Only operational
|
|
273
|
+
* metadata — never prompts or source content.
|
|
274
|
+
*/
|
|
275
|
+
recordUsage(permitId, usage) {
|
|
276
|
+
if (!permitId || permitId.startsWith('bypass_'))
|
|
277
|
+
return;
|
|
278
|
+
this.appendReceipt({ event: 'usage', at: Date.now(), permitId, ...usage });
|
|
279
|
+
}
|
|
224
280
|
/** Snapshot for `daemon status` / diagnostics. */
|
|
225
281
|
getUsage() {
|
|
226
282
|
try {
|
|
@@ -119,6 +119,10 @@ export interface HeadlessExecutionResult {
|
|
|
119
119
|
durationMs: number;
|
|
120
120
|
/** Estimated tokens used (if available) */
|
|
121
121
|
tokensUsed?: number;
|
|
122
|
+
/** #2661 root-fix — structured usage, when `claude --print --output-format json` exposed it. */
|
|
123
|
+
inputTokens?: number;
|
|
124
|
+
outputTokens?: number;
|
|
125
|
+
costUsd?: number;
|
|
122
126
|
/** Model used for execution */
|
|
123
127
|
model: string;
|
|
124
128
|
/** Sandbox mode used */
|
|
@@ -190,6 +194,23 @@ export declare function isLocalWorker(type: WorkerType): type is LocalWorkerType
|
|
|
190
194
|
* Get model ID from model type
|
|
191
195
|
*/
|
|
192
196
|
export declare function getModelId(model: ModelType): string;
|
|
197
|
+
export interface ClaudePrintEnvelope {
|
|
198
|
+
result: string;
|
|
199
|
+
inputTokens?: number;
|
|
200
|
+
outputTokens?: number;
|
|
201
|
+
costUsd?: number;
|
|
202
|
+
durationMs?: number;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* #2661 root-fix — best-effort parse of `claude --print --output-format
|
|
206
|
+
* json`'s response envelope. Deliberately lenient: probes a couple of
|
|
207
|
+
* plausible field-name shapes (the CLI's JSON schema is not a versioned
|
|
208
|
+
* public contract) and returns null on anything unexpected rather than
|
|
209
|
+
* throwing, so a schema mismatch degrades to "no usage captured" — the
|
|
210
|
+
* caller then falls back to the raw stdout text, exactly today's behavior.
|
|
211
|
+
* Exported for direct unit testing without spawning a real process.
|
|
212
|
+
*/
|
|
213
|
+
export declare function parseClaudePrintJsonEnvelope(raw: string): ClaudePrintEnvelope | null;
|
|
193
214
|
/**
|
|
194
215
|
* Get worker configuration by type
|
|
195
216
|
*/
|
|
@@ -78,18 +78,18 @@ export const HEADLESS_WORKER_CONFIGS = {
|
|
|
78
78
|
description: 'AI-powered security analysis',
|
|
79
79
|
enabled: true,
|
|
80
80
|
headless: {
|
|
81
|
-
promptTemplate: `Analyze this codebase for security vulnerabilities:
|
|
82
|
-
- Check for hardcoded secrets (API keys, passwords)
|
|
83
|
-
- Identify SQL injection risks
|
|
84
|
-
- Find XSS vulnerabilities
|
|
85
|
-
- Check for insecure dependencies
|
|
86
|
-
- Identify authentication/authorization issues
|
|
87
|
-
|
|
88
|
-
Provide a JSON report with:
|
|
89
|
-
{
|
|
90
|
-
"vulnerabilities": [{ "severity": "high|medium|low", "file": "...", "line": N, "description": "..." }],
|
|
91
|
-
"riskScore": 0-100,
|
|
92
|
-
"recommendations": ["..."]
|
|
81
|
+
promptTemplate: `Analyze this codebase for security vulnerabilities:
|
|
82
|
+
- Check for hardcoded secrets (API keys, passwords)
|
|
83
|
+
- Identify SQL injection risks
|
|
84
|
+
- Find XSS vulnerabilities
|
|
85
|
+
- Check for insecure dependencies
|
|
86
|
+
- Identify authentication/authorization issues
|
|
87
|
+
|
|
88
|
+
Provide a JSON report with:
|
|
89
|
+
{
|
|
90
|
+
"vulnerabilities": [{ "severity": "high|medium|low", "file": "...", "line": N, "description": "..." }],
|
|
91
|
+
"riskScore": 0-100,
|
|
92
|
+
"recommendations": ["..."]
|
|
93
93
|
}`,
|
|
94
94
|
sandbox: 'strict',
|
|
95
95
|
model: 'haiku',
|
|
@@ -106,13 +106,13 @@ Provide a JSON report with:
|
|
|
106
106
|
description: 'AI optimization suggestions',
|
|
107
107
|
enabled: true,
|
|
108
108
|
headless: {
|
|
109
|
-
promptTemplate: `Analyze this codebase for performance optimizations:
|
|
110
|
-
- Identify N+1 query patterns
|
|
111
|
-
- Find unnecessary re-renders in React
|
|
112
|
-
- Suggest caching opportunities
|
|
113
|
-
- Identify memory leaks
|
|
114
|
-
- Find redundant computations
|
|
115
|
-
|
|
109
|
+
promptTemplate: `Analyze this codebase for performance optimizations:
|
|
110
|
+
- Identify N+1 query patterns
|
|
111
|
+
- Find unnecessary re-renders in React
|
|
112
|
+
- Suggest caching opportunities
|
|
113
|
+
- Identify memory leaks
|
|
114
|
+
- Find redundant computations
|
|
115
|
+
|
|
116
116
|
Provide actionable suggestions with code examples.`,
|
|
117
117
|
sandbox: 'permissive',
|
|
118
118
|
model: 'sonnet',
|
|
@@ -129,13 +129,13 @@ Provide actionable suggestions with code examples.`,
|
|
|
129
129
|
description: 'AI test gap analysis',
|
|
130
130
|
enabled: true,
|
|
131
131
|
headless: {
|
|
132
|
-
promptTemplate: `Analyze test coverage and identify gaps:
|
|
133
|
-
- Find untested functions and classes
|
|
134
|
-
- Identify edge cases not covered
|
|
135
|
-
- Suggest new test scenarios
|
|
136
|
-
- Check for missing error handling tests
|
|
137
|
-
- Identify integration test gaps
|
|
138
|
-
|
|
132
|
+
promptTemplate: `Analyze test coverage and identify gaps:
|
|
133
|
+
- Find untested functions and classes
|
|
134
|
+
- Identify edge cases not covered
|
|
135
|
+
- Suggest new test scenarios
|
|
136
|
+
- Check for missing error handling tests
|
|
137
|
+
- Identify integration test gaps
|
|
138
|
+
|
|
139
139
|
For each gap, provide a test skeleton.`,
|
|
140
140
|
sandbox: 'permissive',
|
|
141
141
|
model: 'sonnet',
|
|
@@ -152,13 +152,13 @@ For each gap, provide a test skeleton.`,
|
|
|
152
152
|
description: 'AI documentation generation',
|
|
153
153
|
enabled: false,
|
|
154
154
|
headless: {
|
|
155
|
-
promptTemplate: `Generate documentation for undocumented code:
|
|
156
|
-
- Add JSDoc comments to functions
|
|
157
|
-
- Create README sections for modules
|
|
158
|
-
- Document API endpoints
|
|
159
|
-
- Add inline comments for complex logic
|
|
160
|
-
- Generate usage examples
|
|
161
|
-
|
|
155
|
+
promptTemplate: `Generate documentation for undocumented code:
|
|
156
|
+
- Add JSDoc comments to functions
|
|
157
|
+
- Create README sections for modules
|
|
158
|
+
- Document API endpoints
|
|
159
|
+
- Add inline comments for complex logic
|
|
160
|
+
- Generate usage examples
|
|
161
|
+
|
|
162
162
|
Focus on public APIs and exported functions.`,
|
|
163
163
|
sandbox: 'permissive',
|
|
164
164
|
model: 'haiku',
|
|
@@ -175,19 +175,19 @@ Focus on public APIs and exported functions.`,
|
|
|
175
175
|
description: 'Deep knowledge acquisition',
|
|
176
176
|
enabled: false,
|
|
177
177
|
headless: {
|
|
178
|
-
promptTemplate: `Deeply analyze this codebase to learn:
|
|
179
|
-
- Architectural patterns used
|
|
180
|
-
- Coding conventions
|
|
181
|
-
- Domain-specific terminology
|
|
182
|
-
- Common patterns and idioms
|
|
183
|
-
- Team preferences
|
|
184
|
-
|
|
185
|
-
Provide insights as JSON:
|
|
186
|
-
{
|
|
187
|
-
"architecture": { "patterns": [...], "style": "..." },
|
|
188
|
-
"conventions": { "naming": "...", "formatting": "..." },
|
|
189
|
-
"domains": ["..."],
|
|
190
|
-
"insights": ["..."]
|
|
178
|
+
promptTemplate: `Deeply analyze this codebase to learn:
|
|
179
|
+
- Architectural patterns used
|
|
180
|
+
- Coding conventions
|
|
181
|
+
- Domain-specific terminology
|
|
182
|
+
- Common patterns and idioms
|
|
183
|
+
- Team preferences
|
|
184
|
+
|
|
185
|
+
Provide insights as JSON:
|
|
186
|
+
{
|
|
187
|
+
"architecture": { "patterns": [...], "style": "..." },
|
|
188
|
+
"conventions": { "naming": "...", "formatting": "..." },
|
|
189
|
+
"domains": ["..."],
|
|
190
|
+
"insights": ["..."]
|
|
191
191
|
}`,
|
|
192
192
|
sandbox: 'strict',
|
|
193
193
|
model: 'opus',
|
|
@@ -204,13 +204,13 @@ Provide insights as JSON:
|
|
|
204
204
|
description: 'AI refactoring suggestions',
|
|
205
205
|
enabled: false,
|
|
206
206
|
headless: {
|
|
207
|
-
promptTemplate: `Suggest refactoring opportunities:
|
|
208
|
-
- Identify code duplication
|
|
209
|
-
- Suggest better abstractions
|
|
210
|
-
- Find opportunities for design patterns
|
|
211
|
-
- Identify overly complex functions
|
|
212
|
-
- Suggest module reorganization
|
|
213
|
-
|
|
207
|
+
promptTemplate: `Suggest refactoring opportunities:
|
|
208
|
+
- Identify code duplication
|
|
209
|
+
- Suggest better abstractions
|
|
210
|
+
- Find opportunities for design patterns
|
|
211
|
+
- Identify overly complex functions
|
|
212
|
+
- Suggest module reorganization
|
|
213
|
+
|
|
214
214
|
Provide before/after code examples.`,
|
|
215
215
|
sandbox: 'permissive',
|
|
216
216
|
model: 'sonnet',
|
|
@@ -227,13 +227,13 @@ Provide before/after code examples.`,
|
|
|
227
227
|
description: 'Deep code analysis',
|
|
228
228
|
enabled: false,
|
|
229
229
|
headless: {
|
|
230
|
-
promptTemplate: `Perform deep analysis of this codebase:
|
|
231
|
-
- Understand data flow
|
|
232
|
-
- Map dependencies
|
|
233
|
-
- Identify architectural issues
|
|
234
|
-
- Find potential bugs
|
|
235
|
-
- Analyze error handling
|
|
236
|
-
|
|
230
|
+
promptTemplate: `Perform deep analysis of this codebase:
|
|
231
|
+
- Understand data flow
|
|
232
|
+
- Map dependencies
|
|
233
|
+
- Identify architectural issues
|
|
234
|
+
- Find potential bugs
|
|
235
|
+
- Analyze error handling
|
|
236
|
+
|
|
237
237
|
Provide comprehensive report.`,
|
|
238
238
|
sandbox: 'strict',
|
|
239
239
|
model: 'opus',
|
|
@@ -250,18 +250,18 @@ Provide comprehensive report.`,
|
|
|
250
250
|
description: 'Predictive preloading',
|
|
251
251
|
enabled: false,
|
|
252
252
|
headless: {
|
|
253
|
-
promptTemplate: `Based on recent activity, predict what the developer needs:
|
|
254
|
-
- Files likely to be edited next
|
|
255
|
-
- Tests that should be run
|
|
256
|
-
- Documentation to reference
|
|
257
|
-
- Dependencies to check
|
|
258
|
-
|
|
259
|
-
Provide preload suggestions as JSON:
|
|
260
|
-
{
|
|
261
|
-
"filesToPreload": ["..."],
|
|
262
|
-
"testsToRun": ["..."],
|
|
263
|
-
"docsToReference": ["..."],
|
|
264
|
-
"confidence": 0.0-1.0
|
|
253
|
+
promptTemplate: `Based on recent activity, predict what the developer needs:
|
|
254
|
+
- Files likely to be edited next
|
|
255
|
+
- Tests that should be run
|
|
256
|
+
- Documentation to reference
|
|
257
|
+
- Dependencies to check
|
|
258
|
+
|
|
259
|
+
Provide preload suggestions as JSON:
|
|
260
|
+
{
|
|
261
|
+
"filesToPreload": ["..."],
|
|
262
|
+
"testsToRun": ["..."],
|
|
263
|
+
"docsToReference": ["..."],
|
|
264
|
+
"confidence": 0.0-1.0
|
|
265
265
|
}`,
|
|
266
266
|
sandbox: 'strict',
|
|
267
267
|
model: 'haiku',
|
|
@@ -336,6 +336,42 @@ export function isLocalWorker(type) {
|
|
|
336
336
|
export function getModelId(model) {
|
|
337
337
|
return MODEL_IDS[model];
|
|
338
338
|
}
|
|
339
|
+
/**
|
|
340
|
+
* #2661 root-fix — best-effort parse of `claude --print --output-format
|
|
341
|
+
* json`'s response envelope. Deliberately lenient: probes a couple of
|
|
342
|
+
* plausible field-name shapes (the CLI's JSON schema is not a versioned
|
|
343
|
+
* public contract) and returns null on anything unexpected rather than
|
|
344
|
+
* throwing, so a schema mismatch degrades to "no usage captured" — the
|
|
345
|
+
* caller then falls back to the raw stdout text, exactly today's behavior.
|
|
346
|
+
* Exported for direct unit testing without spawning a real process.
|
|
347
|
+
*/
|
|
348
|
+
export function parseClaudePrintJsonEnvelope(raw) {
|
|
349
|
+
const trimmed = raw.trim();
|
|
350
|
+
if (!trimmed || trimmed[0] !== '{')
|
|
351
|
+
return null;
|
|
352
|
+
let parsed;
|
|
353
|
+
try {
|
|
354
|
+
parsed = JSON.parse(trimmed);
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
return null;
|
|
358
|
+
}
|
|
359
|
+
if (!parsed || typeof parsed !== 'object')
|
|
360
|
+
return null;
|
|
361
|
+
const obj = parsed;
|
|
362
|
+
const result = typeof obj.result === 'string' ? obj.result : undefined;
|
|
363
|
+
if (result === undefined)
|
|
364
|
+
return null; // not the envelope shape we expect
|
|
365
|
+
const usage = (obj.usage && typeof obj.usage === 'object') ? obj.usage : undefined;
|
|
366
|
+
const numOrUndef = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : undefined);
|
|
367
|
+
return {
|
|
368
|
+
result,
|
|
369
|
+
inputTokens: numOrUndef(usage?.input_tokens ?? usage?.inputTokens),
|
|
370
|
+
outputTokens: numOrUndef(usage?.output_tokens ?? usage?.outputTokens),
|
|
371
|
+
costUsd: numOrUndef(obj.total_cost_usd ?? obj.cost_usd ?? obj.totalCostUsd),
|
|
372
|
+
durationMs: numOrUndef(obj.duration_ms ?? obj.durationMs),
|
|
373
|
+
};
|
|
374
|
+
}
|
|
339
375
|
/**
|
|
340
376
|
* Get worker configuration by type
|
|
341
377
|
*/
|
|
@@ -721,6 +757,9 @@ export class HeadlessWorkerExecutor extends EventEmitter {
|
|
|
721
757
|
parsedOutput,
|
|
722
758
|
durationMs: Date.now() - startTime,
|
|
723
759
|
tokensUsed: result.tokensUsed,
|
|
760
|
+
inputTokens: result.inputTokens,
|
|
761
|
+
outputTokens: result.outputTokens,
|
|
762
|
+
costUsd: result.costUsd,
|
|
724
763
|
model: headless.model || 'sonnet',
|
|
725
764
|
sandboxMode: headless.sandbox,
|
|
726
765
|
workerType,
|
|
@@ -730,6 +769,17 @@ export class HeadlessWorkerExecutor extends EventEmitter {
|
|
|
730
769
|
};
|
|
731
770
|
// Log result
|
|
732
771
|
this.logExecution(executionId, 'result', JSON.stringify(executionResult, null, 2));
|
|
772
|
+
// #2661 root-fix — structured per-launch telemetry, receipted
|
|
773
|
+
// regardless of success/failure (a failed launch still spent
|
|
774
|
+
// whatever tokens it spent before erroring).
|
|
775
|
+
budget.recordUsage(permit.permitId, {
|
|
776
|
+
workerType,
|
|
777
|
+
model,
|
|
778
|
+
inputTokens: result.inputTokens,
|
|
779
|
+
outputTokens: result.outputTokens,
|
|
780
|
+
durationMs: result.apiDurationMs ?? executionResult.durationMs,
|
|
781
|
+
costUsd: result.costUsd,
|
|
782
|
+
});
|
|
733
783
|
// #2661 invariant 5 — record the success so sibling worktrees at the
|
|
734
784
|
// same HEAD skip this job for the rest of the freshness window.
|
|
735
785
|
if (result.success) {
|
|
@@ -930,20 +980,20 @@ export class HeadlessWorkerExecutor extends EventEmitter {
|
|
|
930
980
|
*/
|
|
931
981
|
buildPrompt(template, context) {
|
|
932
982
|
if (!context) {
|
|
933
|
-
return `${template}
|
|
934
|
-
|
|
935
|
-
## Instructions
|
|
936
|
-
|
|
983
|
+
return `${template}
|
|
984
|
+
|
|
985
|
+
## Instructions
|
|
986
|
+
|
|
937
987
|
Analyze the codebase and provide your response following the format specified in the task.`;
|
|
938
988
|
}
|
|
939
|
-
return `${template}
|
|
940
|
-
|
|
941
|
-
## Codebase Context
|
|
942
|
-
|
|
943
|
-
${context}
|
|
944
|
-
|
|
945
|
-
## Instructions
|
|
946
|
-
|
|
989
|
+
return `${template}
|
|
990
|
+
|
|
991
|
+
## Codebase Context
|
|
992
|
+
|
|
993
|
+
${context}
|
|
994
|
+
|
|
995
|
+
## Instructions
|
|
996
|
+
|
|
947
997
|
Analyze the above codebase context and provide your response following the format specified in the task.`;
|
|
948
998
|
}
|
|
949
999
|
/**
|
|
@@ -988,7 +1038,15 @@ Analyze the above codebase context and provide your response following the forma
|
|
|
988
1038
|
// diagnosed as a 5-second redispatch + subprocess-table growth.
|
|
989
1039
|
// `detached: true` puts the child in its own process group so we
|
|
990
1040
|
// can signal the whole tree with `process.kill(-pid, sig)`.
|
|
991
|
-
|
|
1041
|
+
// #2661 root-fix — structured usage telemetry. `--output-format json`
|
|
1042
|
+
// wraps the response in an envelope carrying `result` (the actual
|
|
1043
|
+
// text — what `output` must still contain, unchanged for every
|
|
1044
|
+
// existing downstream parser) alongside `usage`/cost/duration
|
|
1045
|
+
// metadata. Parsing is lenient (parseClaudePrintJsonEnvelope below)
|
|
1046
|
+
// and ALWAYS falls back to the raw text on any mismatch — a schema
|
|
1047
|
+
// surprise from an older/newer `claude` CLI must degrade to exactly
|
|
1048
|
+
// today's behavior (no usage captured), never break analysis output.
|
|
1049
|
+
const child = spawn('claude', ['--print', '--output-format', 'json'], {
|
|
992
1050
|
cwd: this.projectRoot,
|
|
993
1051
|
env,
|
|
994
1052
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
@@ -1068,9 +1126,17 @@ Analyze the above codebase context and provide your response following the forma
|
|
|
1068
1126
|
return;
|
|
1069
1127
|
resolved = true;
|
|
1070
1128
|
cleanup();
|
|
1129
|
+
const envelope = parseClaudePrintJsonEnvelope(stdout);
|
|
1071
1130
|
resolve({
|
|
1072
1131
|
success: code === 0,
|
|
1073
|
-
output: stdout
|
|
1132
|
+
output: envelope?.result ?? stdout ?? stderr,
|
|
1133
|
+
inputTokens: envelope?.inputTokens,
|
|
1134
|
+
outputTokens: envelope?.outputTokens,
|
|
1135
|
+
tokensUsed: envelope
|
|
1136
|
+
? (envelope.inputTokens ?? 0) + (envelope.outputTokens ?? 0)
|
|
1137
|
+
: undefined,
|
|
1138
|
+
costUsd: envelope?.costUsd,
|
|
1139
|
+
apiDurationMs: envelope?.durationMs,
|
|
1074
1140
|
error: code !== 0 ? stderr || `Process exited with code ${code}` : undefined,
|
|
1075
1141
|
});
|
|
1076
1142
|
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-091 Phase 2 -- Stateless Loop Worker Runner
|
|
3
|
+
*
|
|
4
|
+
* Designed for /loop execution: runs a single worker iteration and returns
|
|
5
|
+
* metadata that the caller can use with ScheduleWakeup.
|
|
6
|
+
*/
|
|
7
|
+
export interface LoopWorkerResult {
|
|
8
|
+
workerType: string;
|
|
9
|
+
success: boolean;
|
|
10
|
+
suggestedDelay: number;
|
|
11
|
+
reason: string;
|
|
12
|
+
loopPrompt: string;
|
|
13
|
+
metrics?: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export declare function runLoopWorker(workerType: string): Promise<LoopWorkerResult>;
|
|
16
|
+
//# sourceMappingURL=loop-worker-runner.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-091 Phase 2 -- Stateless Loop Worker Runner
|
|
3
|
+
*
|
|
4
|
+
* Designed for /loop execution: runs a single worker iteration and returns
|
|
5
|
+
* metadata that the caller can use with ScheduleWakeup.
|
|
6
|
+
*/
|
|
7
|
+
import { execSync } from 'child_process';
|
|
8
|
+
import { getCacheWarmDelay } from './runtime-capabilities.js';
|
|
9
|
+
export async function runLoopWorker(workerType) {
|
|
10
|
+
const startMs = Date.now();
|
|
11
|
+
let success = false;
|
|
12
|
+
let reason = '';
|
|
13
|
+
try {
|
|
14
|
+
const safeWorkerType = workerType.replace(/[^a-zA-Z0-9_-]/g, '');
|
|
15
|
+
const stdout = execSync(`npx @claude-flow/cli hooks worker dispatch --trigger ${safeWorkerType}`, { encoding: 'utf-8', timeout: 120_000, stdio: ['ignore', 'pipe', 'pipe'] });
|
|
16
|
+
success = true;
|
|
17
|
+
reason = stdout.trim().slice(0, 200) || `${workerType} completed`;
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
21
|
+
reason = `${workerType} failed: ${msg.slice(0, 200)}`;
|
|
22
|
+
}
|
|
23
|
+
const durationMs = Date.now() - startMs;
|
|
24
|
+
const suggestedDelay = getCacheWarmDelay();
|
|
25
|
+
return {
|
|
26
|
+
workerType,
|
|
27
|
+
success,
|
|
28
|
+
suggestedDelay,
|
|
29
|
+
reason,
|
|
30
|
+
loopPrompt: `Run ${workerType} worker and report results`,
|
|
31
|
+
metrics: { durationMs, timestamp: new Date().toISOString() },
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=loop-worker-runner.js.map
|
|
@@ -116,10 +116,10 @@ export async function runDistillation(options) {
|
|
|
116
116
|
return { ...report, corrupt: true, skipped: 'memory DB reports corruption — run recoverMemoryDatabase first' };
|
|
117
117
|
}
|
|
118
118
|
// M0: incremental cursor table (per namespace, by monotonic rowid).
|
|
119
|
-
db.exec(`CREATE TABLE IF NOT EXISTS distill_state (
|
|
120
|
-
namespace TEXT PRIMARY KEY,
|
|
121
|
-
last_rowid INTEGER NOT NULL DEFAULT 0,
|
|
122
|
-
last_run_at INTEGER
|
|
119
|
+
db.exec(`CREATE TABLE IF NOT EXISTS distill_state (
|
|
120
|
+
namespace TEXT PRIMARY KEY,
|
|
121
|
+
last_rowid INTEGER NOT NULL DEFAULT 0,
|
|
122
|
+
last_run_at INTEGER
|
|
123
123
|
)`);
|
|
124
124
|
// Which namespaces to process.
|
|
125
125
|
const nsAll = db.prepare("SELECT DISTINCT COALESCE(namespace,'default') AS ns FROM memory_entries WHERE embedding IS NOT NULL").all().map(r => r.ns);
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #2661 root-fix — one repository-level supervisor.
|
|
3
|
+
*
|
|
4
|
+
* Ten worktree daemons of the same repository independently deciding "is it
|
|
5
|
+
* time to run audit/optimize/testgaps" every tick is the redundant-scheduler
|
|
6
|
+
* half of the original cardinality bug — the budget ledger and job dedup
|
|
7
|
+
* (global-ai-budget.ts, ai-job-dedup.ts) already bound and dedupe the actual
|
|
8
|
+
* `claude --print` spend, but every daemon still runs its own timer and its
|
|
9
|
+
* own "should I launch" decision. This module elects exactly ONE daemon per
|
|
10
|
+
* repositoryId to own the recurring AI-worker schedule; every other worktree
|
|
11
|
+
* of that repository stays a lease-only participant (workspace-lease.ts) —
|
|
12
|
+
* it keeps running its cheap, $0 local-only workers (map/consolidate/backup)
|
|
13
|
+
* on its own schedule, but does not attempt headless (`claude --print`)
|
|
14
|
+
* execution for its recurring ticks. An explicit `daemon trigger --headless`
|
|
15
|
+
* in a non-supervisor worktree is still honored (still budget/dedup-gated) —
|
|
16
|
+
* this module only governs the unattended recurring schedule.
|
|
17
|
+
*
|
|
18
|
+
* Election is a simple lock-protected takeover, same pattern as
|
|
19
|
+
* global-ai-budget.ts:
|
|
20
|
+
* - No record, a dead PID, or a stale heartbeat (>SUPERVISOR_STALE_MS) →
|
|
21
|
+
* the calling daemon takes over.
|
|
22
|
+
* - A live supervisor with a fresh heartbeat → the calling daemon is not
|
|
23
|
+
* elected; it does nothing (never overwrites a healthy supervisor).
|
|
24
|
+
*
|
|
25
|
+
* The registry lives under the user's home directory so every worktree's
|
|
26
|
+
* daemon can see it:
|
|
27
|
+
*
|
|
28
|
+
* ~/.claude-flow/supervisors/<repositoryId>.json
|
|
29
|
+
*/
|
|
30
|
+
export declare const SUPERVISOR_STALE_MS: number;
|
|
31
|
+
export interface SupervisorRecord {
|
|
32
|
+
worktreeRoot: string;
|
|
33
|
+
pid: number;
|
|
34
|
+
electedAt: number;
|
|
35
|
+
lastHeartbeat: number;
|
|
36
|
+
}
|
|
37
|
+
export interface SupervisorElectionResult {
|
|
38
|
+
isSupervisor: boolean;
|
|
39
|
+
record: SupervisorRecord | null;
|
|
40
|
+
}
|
|
41
|
+
export declare class RepoSupervisorRegistry {
|
|
42
|
+
private readonly dir;
|
|
43
|
+
constructor(options?: {
|
|
44
|
+
baseDir?: string;
|
|
45
|
+
});
|
|
46
|
+
private fileFor;
|
|
47
|
+
private ensureDir;
|
|
48
|
+
private withLock;
|
|
49
|
+
private readRecord;
|
|
50
|
+
private writeRecord;
|
|
51
|
+
private isStale;
|
|
52
|
+
/**
|
|
53
|
+
* Attempt election (or renewal, if this process already holds it). Safe
|
|
54
|
+
* and cheap to call on every daemon tick — a no-op write when nothing
|
|
55
|
+
* needs to change would still cost a lock+read+write, so callers should
|
|
56
|
+
* still throttle to their own heartbeat cadence rather than calling this
|
|
57
|
+
* per-worker-tick.
|
|
58
|
+
*/
|
|
59
|
+
electOrRenew(repositoryId: string, worktreeRoot: string): Promise<SupervisorElectionResult>;
|
|
60
|
+
/** Cheap read-only check — does NOT renew or elect. */
|
|
61
|
+
isSupervisor(repositoryId: string, worktreeRoot: string): boolean;
|
|
62
|
+
/** Release supervisor status on graceful shutdown, so the next tick elsewhere can take over promptly. Best-effort. */
|
|
63
|
+
release(repositoryId: string, worktreeRoot: string): Promise<void>;
|
|
64
|
+
/** Snapshot for `daemon status --all`. Read-only, never mutates. */
|
|
65
|
+
getRecord(repositoryId: string): SupervisorRecord | null;
|
|
66
|
+
}
|
|
67
|
+
export declare function getRepoSupervisorRegistry(): RepoSupervisorRegistry;
|
|
68
|
+
/** Test hook: reset the singleton (e.g. after changing RUFLO_AI_BUDGET_DIR). */
|
|
69
|
+
export declare function resetRepoSupervisorRegistryForTests(): void;
|
|
70
|
+
//# sourceMappingURL=repo-supervisor.d.ts.map
|