moflo 4.0.5 → 4.2.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 +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/system-design/arch-system-design.md +154 -154
- package/.claude/agents/base-template-generator.md +42 -42
- 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/coder.md +265 -265
- package/.claude/agents/core/planner.md +167 -167
- package/.claude/agents/core/researcher.md +189 -189
- package/.claude/agents/core/reviewer.md +325 -325
- package/.claude/agents/core/tester.md +318 -318
- package/.claude/agents/custom/test-long-runner.md +44 -44
- 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/documentation/api-docs/docs-api-openapi.md +173 -173
- package/.claude/agents/dual-mode/codex-coordinator.md +224 -224
- package/.claude/agents/dual-mode/codex-worker.md +211 -211
- package/.claude/agents/dual-mode/dual-orchestrator.md +291 -291
- 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 +537 -537
- package/.claude/agents/github/github-modes.md +172 -172
- package/.claude/agents/github/issue-tracker.md +318 -318
- package/.claude/agents/github/multi-repo-swarm.md +552 -552
- package/.claude/agents/github/pr-manager.md +190 -190
- package/.claude/agents/github/project-board-sync.md +508 -508
- package/.claude/agents/github/release-manager.md +366 -366
- 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 +634 -634
- package/.claude/agents/goal/agent.md +815 -815
- package/.claude/agents/goal/code-goal-planner.md +445 -445
- package/.claude/agents/goal/goal-planner.md +167 -167
- package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +129 -129
- package/.claude/agents/hive-mind/queen-coordinator.md +202 -202
- package/.claude/agents/hive-mind/scout-explorer.md +241 -241
- package/.claude/agents/hive-mind/swarm-memory-manager.md +192 -192
- package/.claude/agents/hive-mind/worker-specialist.md +216 -216
- package/.claude/agents/neural/safla-neural.md +73 -73
- 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/reasoning/agent.md +815 -815
- package/.claude/agents/reasoning/goal-planner.md +72 -72
- package/.claude/agents/sona/sona-learning-optimizer.md +74 -74
- package/.claude/agents/sparc/architecture.md +471 -471
- package/.claude/agents/sparc/pseudocode.md +317 -317
- package/.claude/agents/sparc/refinement.md +524 -524
- package/.claude/agents/sparc/specification.md +275 -275
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +224 -224
- 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 +395 -395
- package/.claude/agents/swarm/hierarchical-coordinator.md +326 -326
- package/.claude/agents/swarm/mesh-coordinator.md +391 -391
- package/.claude/agents/templates/automation-smart-agent.md +204 -204
- package/.claude/agents/templates/coordinator-swarm-init.md +104 -104
- 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/migration-plan.md +745 -745
- 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 +182 -182
- package/.claude/agents/testing/production-validator.md +394 -394
- package/.claude/agents/testing/tdd-london-swarm.md +243 -243
- package/.claude/agents/testing/unit/tdd-london-swarm.md +243 -243
- package/.claude/agents/testing/validation/production-validator.md +394 -394
- package/.claude/agents/v3/v3-integration-architect.md +345 -345
- package/.claude/agents/v3/v3-memory-specialist.md +317 -317
- package/.claude/agents/v3/v3-performance-engineer.md +396 -396
- package/.claude/agents/v3/v3-queen-coordinator.md +97 -97
- package/.claude/agents/v3/v3-security-architect.md +173 -173
- 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/README.md +96 -96
- package/.claude/helpers/aggressive-microcompact.mjs +36 -36
- package/.claude/helpers/auto-memory-hook.mjs +363 -363
- package/.claude/helpers/context-persistence-hook.mjs +1979 -1979
- package/.claude/helpers/github-safe.js +106 -106
- package/.claude/helpers/learning-service.mjs +1144 -1144
- package/.claude/helpers/metrics-db.mjs +488 -488
- package/.claude/helpers/patch-aggressive-prune.mjs +184 -184
- package/.claude/mcp.json +12 -12
- package/.claude/settings.json +2 -2
- 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/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 +738 -738
- package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -1157
- package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -610
- package/.claude/skills/github-code-review/SKILL.md +1 -1
- package/.claude/skills/github-multi-repo/SKILL.md +2 -2
- package/.claude/skills/github-project-management/SKILL.md +1 -1
- package/.claude/skills/github-release-management/SKILL.md +2 -2
- package/.claude/skills/github-workflow-automation/SKILL.md +1 -1
- package/.claude/skills/hive-mind-advanced/SKILL.md +4 -4
- 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 +563 -563
- 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 +2 -2
- package/.claude/skills/stream-chain/SKILL.md +563 -563
- package/.claude/skills/swarm-advanced/SKILL.md +4 -4
- 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 +649 -649
- package/.claude/skills/worker-benchmarks/skill.md +135 -135
- package/.claude/skills/worker-integration/skill.md +154 -154
- package/.claude/statusline.mjs +109 -109
- package/.claude-plugin/README.md +6 -6
- package/.claude-plugin/docs/INSTALLATION.md +4 -4
- package/.claude-plugin/docs/PLUGIN_SUMMARY.md +5 -5
- package/.claude-plugin/docs/QUICKSTART.md +1 -1
- package/.claude-plugin/docs/STRUCTURE.md +128 -128
- package/.claude-plugin/hooks/hooks.json +74 -74
- package/.claude-plugin/marketplace.json +5 -5
- package/.claude-plugin/plugin.json +4 -4
- package/README.md +148 -148
- package/bin/cli.js +12 -12
- package/bin/npx-repair.js +7 -7
- package/bin/npx-safe-launch.js +9 -9
- package/package.json +115 -114
- package/v3/@claude-flow/cli/README.md +5 -5
- package/v3/@claude-flow/cli/bin/cli.js +156 -156
- package/v3/@claude-flow/cli/bin/mcp-server.js +189 -189
- package/v3/@claude-flow/cli/dist/src/commands/analyze.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/analyze.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/claims.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/claims.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/completions.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/completions.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/config.js +36 -2
- package/v3/@claude-flow/cli/dist/src/commands/daemon.js +54 -7
- package/v3/@claude-flow/cli/dist/src/commands/deployment.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/deployment.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/doctor.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/doctor.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/embeddings.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +90 -90
- package/v3/@claude-flow/cli/dist/src/commands/hooks.js +56 -20
- package/v3/@claude-flow/cli/dist/src/commands/init.js +6 -1
- package/v3/@claude-flow/cli/dist/src/commands/memory.js +30 -30
- package/v3/@claude-flow/cli/dist/src/commands/neural.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/neural.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/orc.js +1 -0
- package/v3/@claude-flow/cli/dist/src/commands/performance.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/performance.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/plugins.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/plugins.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/providers.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/providers.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/route.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/route.js +1 -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 +29 -29
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/index.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/index.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +113 -113
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +97 -97
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +36 -36
- package/v3/@claude-flow/cli/dist/src/commands/security.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/security.js +2 -2
- package/v3/@claude-flow/cli/dist/src/config/moflo-config.d.ts +13 -1
- package/v3/@claude-flow/cli/dist/src/config/moflo-config.js +93 -41
- package/v3/@claude-flow/cli/dist/src/index.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/index.js +2 -2
- package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +2 -2
- package/v3/@claude-flow/cli/dist/src/init/executor.js +3 -3
- package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +640 -640
- package/v3/@claude-flow/cli/dist/src/init/moflo-init.d.ts +10 -0
- package/v3/@claude-flow/cli/dist/src/init/moflo-init.js +101 -20
- package/v3/@claude-flow/cli/dist/src/init/settings-generator.js +2 -2
- package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +783 -783
- package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js +30 -13
- package/v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.js +1 -1
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +61 -61
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +2212 -2263
- package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
- package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.js +1 -1
- package/v3/@claude-flow/cli/dist/src/ruvector/vector-db.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/ruvector/vector-db.js +1 -1
- package/v3/@claude-flow/cli/dist/src/services/agent-router.d.ts +14 -0
- package/v3/@claude-flow/cli/dist/src/services/agent-router.js +86 -7
- package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
- package/v3/@claude-flow/cli/dist/src/services/index.d.ts +1 -3
- package/v3/@claude-flow/cli/dist/src/services/index.js +1 -2
- package/v3/@claude-flow/cli/dist/src/services/learning-service.js +54 -54
- package/v3/@claude-flow/cli/dist/src/services/ruvector-training.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/services/ruvector-training.js +1 -1
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.d.ts +24 -3
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +123 -12
- package/v3/@claude-flow/cli/dist/src/services/workflow-gate.d.ts +1 -0
- package/v3/@claude-flow/cli/dist/src/services/workflow-gate.js +20 -5
- package/v3/@claude-flow/cli/dist/src/suggest.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/suggest.js +1 -1
- package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
- package/v3/@claude-flow/cli/package.json +6 -6
- package/v3/@claude-flow/guidance/README.md +6 -6
- package/v3/@claude-flow/guidance/package.json +1 -1
- package/v3/@claude-flow/memory/README.md +1 -1
- package/v3/@claude-flow/shared/README.md +1 -1
- package/v3/@claude-flow/shared/package.json +42 -42
- package/v3/README.md +3 -3
|
@@ -145,8 +145,8 @@ export const optimizeCommand = {
|
|
|
145
145
|
await client.connect();
|
|
146
146
|
spinner.succeed('Connected to PostgreSQL');
|
|
147
147
|
// Check schema exists
|
|
148
|
-
const schemaResult = await client.query(`
|
|
149
|
-
SELECT schema_name FROM information_schema.schemata WHERE schema_name = $1
|
|
148
|
+
const schemaResult = await client.query(`
|
|
149
|
+
SELECT schema_name FROM information_schema.schemata WHERE schema_name = $1
|
|
150
150
|
`, [config.schema]);
|
|
151
151
|
if (schemaResult.rows.length === 0) {
|
|
152
152
|
output.printError(`Schema "${config.schema}" not found`);
|
|
@@ -157,9 +157,9 @@ export const optimizeCommand = {
|
|
|
157
157
|
if (runVacuum) {
|
|
158
158
|
spinner.setText('Running VACUUM ANALYZE...');
|
|
159
159
|
spinner.start();
|
|
160
|
-
const tables = await client.query(`
|
|
161
|
-
SELECT table_name FROM information_schema.tables
|
|
162
|
-
WHERE table_schema = $1 AND table_type = 'BASE TABLE'
|
|
160
|
+
const tables = await client.query(`
|
|
161
|
+
SELECT table_name FROM information_schema.tables
|
|
162
|
+
WHERE table_schema = $1 AND table_type = 'BASE TABLE'
|
|
163
163
|
`, [config.schema]);
|
|
164
164
|
for (const row of tables.rows) {
|
|
165
165
|
await client.query(`VACUUM ANALYZE ${config.schema}.${row.table_name}`);
|
|
@@ -182,17 +182,17 @@ export const optimizeCommand = {
|
|
|
182
182
|
// Analyze table statistics
|
|
183
183
|
spinner.setText('Analyzing table statistics...');
|
|
184
184
|
spinner.start();
|
|
185
|
-
const tableStatsResult = await client.query(`
|
|
186
|
-
SELECT
|
|
187
|
-
relname as table_name,
|
|
188
|
-
n_live_tup as live_rows,
|
|
189
|
-
n_dead_tup as dead_rows,
|
|
190
|
-
last_vacuum,
|
|
191
|
-
last_autovacuum,
|
|
192
|
-
last_analyze,
|
|
193
|
-
last_autoanalyze
|
|
194
|
-
FROM pg_stat_user_tables
|
|
195
|
-
WHERE schemaname = $1
|
|
185
|
+
const tableStatsResult = await client.query(`
|
|
186
|
+
SELECT
|
|
187
|
+
relname as table_name,
|
|
188
|
+
n_live_tup as live_rows,
|
|
189
|
+
n_dead_tup as dead_rows,
|
|
190
|
+
last_vacuum,
|
|
191
|
+
last_autovacuum,
|
|
192
|
+
last_analyze,
|
|
193
|
+
last_autoanalyze
|
|
194
|
+
FROM pg_stat_user_tables
|
|
195
|
+
WHERE schemaname = $1
|
|
196
196
|
`, [config.schema]);
|
|
197
197
|
for (const row of tableStatsResult.rows) {
|
|
198
198
|
const deadRatio = row.live_rows > 0 ? row.dead_rows / row.live_rows : 0;
|
|
@@ -223,25 +223,25 @@ export const optimizeCommand = {
|
|
|
223
223
|
// Analyze indexes
|
|
224
224
|
spinner.setText('Analyzing index health...');
|
|
225
225
|
spinner.start();
|
|
226
|
-
const indexStatsResult = await client.query(`
|
|
227
|
-
SELECT
|
|
228
|
-
i.relname as index_name,
|
|
229
|
-
t.relname as table_name,
|
|
230
|
-
am.amname as index_type,
|
|
231
|
-
pg_relation_size(i.oid) as index_size,
|
|
232
|
-
idx.indisvalid as is_valid,
|
|
233
|
-
idx.indisready as is_ready,
|
|
234
|
-
idx.indislive as is_live,
|
|
235
|
-
pg_stat_user_indexes.idx_scan as scans,
|
|
236
|
-
pg_stat_user_indexes.idx_tup_read as tuples_read,
|
|
237
|
-
pg_stat_user_indexes.idx_tup_fetch as tuples_fetched
|
|
238
|
-
FROM pg_index idx
|
|
239
|
-
JOIN pg_class i ON i.oid = idx.indexrelid
|
|
240
|
-
JOIN pg_class t ON t.oid = idx.indrelid
|
|
241
|
-
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
242
|
-
JOIN pg_am am ON am.oid = i.relam
|
|
243
|
-
LEFT JOIN pg_stat_user_indexes ON pg_stat_user_indexes.indexrelid = i.oid
|
|
244
|
-
WHERE n.nspname = $1
|
|
226
|
+
const indexStatsResult = await client.query(`
|
|
227
|
+
SELECT
|
|
228
|
+
i.relname as index_name,
|
|
229
|
+
t.relname as table_name,
|
|
230
|
+
am.amname as index_type,
|
|
231
|
+
pg_relation_size(i.oid) as index_size,
|
|
232
|
+
idx.indisvalid as is_valid,
|
|
233
|
+
idx.indisready as is_ready,
|
|
234
|
+
idx.indislive as is_live,
|
|
235
|
+
pg_stat_user_indexes.idx_scan as scans,
|
|
236
|
+
pg_stat_user_indexes.idx_tup_read as tuples_read,
|
|
237
|
+
pg_stat_user_indexes.idx_tup_fetch as tuples_fetched
|
|
238
|
+
FROM pg_index idx
|
|
239
|
+
JOIN pg_class i ON i.oid = idx.indexrelid
|
|
240
|
+
JOIN pg_class t ON t.oid = idx.indrelid
|
|
241
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
242
|
+
JOIN pg_am am ON am.oid = i.relam
|
|
243
|
+
LEFT JOIN pg_stat_user_indexes ON pg_stat_user_indexes.indexrelid = i.oid
|
|
244
|
+
WHERE n.nspname = $1
|
|
245
245
|
`, [config.schema]);
|
|
246
246
|
for (const row of indexStatsResult.rows) {
|
|
247
247
|
// Check for invalid indexes
|
|
@@ -277,11 +277,11 @@ export const optimizeCommand = {
|
|
|
277
277
|
const vectorIndexes = indexStatsResult.rows.filter(r => r.index_type === 'hnsw' || r.index_type === 'ivfflat');
|
|
278
278
|
for (const idx of vectorIndexes) {
|
|
279
279
|
// Get index options
|
|
280
|
-
const optionsResult = await client.query(`
|
|
281
|
-
SELECT reloptions FROM pg_class
|
|
282
|
-
WHERE relname = $1 AND relnamespace = (
|
|
283
|
-
SELECT oid FROM pg_namespace WHERE nspname = $2
|
|
284
|
-
)
|
|
280
|
+
const optionsResult = await client.query(`
|
|
281
|
+
SELECT reloptions FROM pg_class
|
|
282
|
+
WHERE relname = $1 AND relnamespace = (
|
|
283
|
+
SELECT oid FROM pg_namespace WHERE nspname = $2
|
|
284
|
+
)
|
|
285
285
|
`, [idx.index_name, config.schema]);
|
|
286
286
|
const options = optionsResult.rows[0]?.reloptions || [];
|
|
287
287
|
if (idx.index_type === 'hnsw') {
|
|
@@ -291,8 +291,8 @@ export const optimizeCommand = {
|
|
|
291
291
|
const mValue = m ? parseInt(m.split('=')[1], 10) : 16;
|
|
292
292
|
const efValue = efConstruction ? parseInt(efConstruction.split('=')[1], 10) : 64;
|
|
293
293
|
// Get table row count
|
|
294
|
-
const countResult = await client.query(`
|
|
295
|
-
SELECT count(*) as cnt FROM ${config.schema}.${idx.table_name}
|
|
294
|
+
const countResult = await client.query(`
|
|
295
|
+
SELECT count(*) as cnt FROM ${config.schema}.${idx.table_name}
|
|
296
296
|
`);
|
|
297
297
|
const rowCount = parseInt(countResult.rows[0].cnt, 10);
|
|
298
298
|
// Recommend higher ef_construction for large datasets
|
|
@@ -323,8 +323,8 @@ export const optimizeCommand = {
|
|
|
323
323
|
const lists = options.find((o) => o.startsWith('lists='));
|
|
324
324
|
const listsValue = lists ? parseInt(lists.split('=')[1], 10) : 100;
|
|
325
325
|
// Get table row count
|
|
326
|
-
const countResult = await client.query(`
|
|
327
|
-
SELECT count(*) as cnt FROM ${config.schema}.${idx.table_name}
|
|
326
|
+
const countResult = await client.query(`
|
|
327
|
+
SELECT count(*) as cnt FROM ${config.schema}.${idx.table_name}
|
|
328
328
|
`);
|
|
329
329
|
const rowCount = parseInt(countResult.rows[0].cnt, 10);
|
|
330
330
|
// Recommended lists = sqrt(n)
|
|
@@ -345,13 +345,13 @@ export const optimizeCommand = {
|
|
|
345
345
|
// Check memory settings
|
|
346
346
|
spinner.setText('Checking PostgreSQL settings...');
|
|
347
347
|
spinner.start();
|
|
348
|
-
const settingsResult = await client.query(`
|
|
349
|
-
SELECT name, setting, unit, context
|
|
350
|
-
FROM pg_settings
|
|
351
|
-
WHERE name IN (
|
|
352
|
-
'shared_buffers', 'effective_cache_size', 'work_mem',
|
|
353
|
-
'maintenance_work_mem', 'max_parallel_workers_per_gather'
|
|
354
|
-
)
|
|
348
|
+
const settingsResult = await client.query(`
|
|
349
|
+
SELECT name, setting, unit, context
|
|
350
|
+
FROM pg_settings
|
|
351
|
+
WHERE name IN (
|
|
352
|
+
'shared_buffers', 'effective_cache_size', 'work_mem',
|
|
353
|
+
'maintenance_work_mem', 'max_parallel_workers_per_gather'
|
|
354
|
+
)
|
|
355
355
|
`);
|
|
356
356
|
const settings = {};
|
|
357
357
|
for (const row of settingsResult.rows) {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* npx claude-flow ruvector setup --output /path/to/dir
|
|
8
8
|
* npx claude-flow ruvector setup --print # Print to stdout only
|
|
9
9
|
*
|
|
10
|
-
* Created with care by
|
|
10
|
+
* Created with care by motailz.com
|
|
11
11
|
*/
|
|
12
12
|
import { output } from '../../output.js';
|
|
13
13
|
import * as fs from 'fs';
|
|
@@ -646,7 +646,7 @@ docker-compose up -d
|
|
|
646
646
|
|
|
647
647
|
## Learn More
|
|
648
648
|
- [RuVector Docker Hub](https://hub.docker.com/r/ruvnet/ruvector-postgres)
|
|
649
|
-
- [Claude-Flow Documentation](https://github.com/
|
|
649
|
+
- [Claude-Flow Documentation](https://github.com/eric-cielo/moflo)
|
|
650
650
|
`;
|
|
651
651
|
/**
|
|
652
652
|
* RuVector Setup command - outputs Docker files and SQL
|
|
@@ -175,8 +175,8 @@ export const statusCommand = {
|
|
|
175
175
|
if (!jsonOutput)
|
|
176
176
|
spinner.setText('Checking pgvector extension...');
|
|
177
177
|
spinner.start();
|
|
178
|
-
const extensionResult = await client.query(`
|
|
179
|
-
SELECT extversion FROM pg_extension WHERE extname = 'vector'
|
|
178
|
+
const extensionResult = await client.query(`
|
|
179
|
+
SELECT extversion FROM pg_extension WHERE extname = 'vector'
|
|
180
180
|
`);
|
|
181
181
|
if (extensionResult.rows.length === 0) {
|
|
182
182
|
statusData.pgvector = { installed: false };
|
|
@@ -197,8 +197,8 @@ export const statusCommand = {
|
|
|
197
197
|
if (!jsonOutput)
|
|
198
198
|
spinner.setText(`Checking schema "${config.schema}"...`);
|
|
199
199
|
spinner.start();
|
|
200
|
-
const schemaResult = await client.query(`
|
|
201
|
-
SELECT schema_name FROM information_schema.schemata WHERE schema_name = $1
|
|
200
|
+
const schemaResult = await client.query(`
|
|
201
|
+
SELECT schema_name FROM information_schema.schemata WHERE schema_name = $1
|
|
202
202
|
`, [config.schema]);
|
|
203
203
|
if (schemaResult.rows.length === 0) {
|
|
204
204
|
statusData.ruvector = { initialized: false };
|
|
@@ -219,8 +219,8 @@ export const statusCommand = {
|
|
|
219
219
|
spinner.setText('Loading RuVector metadata...');
|
|
220
220
|
spinner.start();
|
|
221
221
|
try {
|
|
222
|
-
const metadataResult = await client.query(`
|
|
223
|
-
SELECT key, value FROM ${config.schema}.metadata
|
|
222
|
+
const metadataResult = await client.query(`
|
|
223
|
+
SELECT key, value FROM ${config.schema}.metadata
|
|
224
224
|
`);
|
|
225
225
|
const metadata = {};
|
|
226
226
|
for (const row of metadataResult.rows) {
|
|
@@ -244,23 +244,23 @@ export const statusCommand = {
|
|
|
244
244
|
if (!jsonOutput)
|
|
245
245
|
spinner.setText('Gathering table statistics...');
|
|
246
246
|
spinner.start();
|
|
247
|
-
const tablesResult = await client.query(`
|
|
248
|
-
SELECT
|
|
249
|
-
t.table_name,
|
|
250
|
-
pg_relation_size(quote_ident(t.table_schema) || '.' || quote_ident(t.table_name)) as table_size,
|
|
251
|
-
pg_total_relation_size(quote_ident(t.table_schema) || '.' || quote_ident(t.table_name)) as total_size,
|
|
252
|
-
(SELECT count(*) FROM ${config.schema}.embeddings) as row_count
|
|
253
|
-
FROM information_schema.tables t
|
|
254
|
-
WHERE t.table_schema = $1
|
|
255
|
-
ORDER BY t.table_name
|
|
247
|
+
const tablesResult = await client.query(`
|
|
248
|
+
SELECT
|
|
249
|
+
t.table_name,
|
|
250
|
+
pg_relation_size(quote_ident(t.table_schema) || '.' || quote_ident(t.table_name)) as table_size,
|
|
251
|
+
pg_total_relation_size(quote_ident(t.table_schema) || '.' || quote_ident(t.table_name)) as total_size,
|
|
252
|
+
(SELECT count(*) FROM ${config.schema}.embeddings) as row_count
|
|
253
|
+
FROM information_schema.tables t
|
|
254
|
+
WHERE t.table_schema = $1
|
|
255
|
+
ORDER BY t.table_name
|
|
256
256
|
`, [config.schema]);
|
|
257
257
|
const tableStats = [];
|
|
258
258
|
for (const row of tablesResult.rows) {
|
|
259
259
|
// Get row count for each table
|
|
260
260
|
let rowCount = 0;
|
|
261
261
|
try {
|
|
262
|
-
const countResult = await client.query(`
|
|
263
|
-
SELECT count(*) as cnt FROM ${config.schema}.${row.table_name}
|
|
262
|
+
const countResult = await client.query(`
|
|
263
|
+
SELECT count(*) as cnt FROM ${config.schema}.${row.table_name}
|
|
264
264
|
`);
|
|
265
265
|
rowCount = parseInt(countResult.rows[0].cnt, 10);
|
|
266
266
|
}
|
|
@@ -282,21 +282,21 @@ export const statusCommand = {
|
|
|
282
282
|
if (!jsonOutput)
|
|
283
283
|
spinner.setText('Gathering index information...');
|
|
284
284
|
spinner.start();
|
|
285
|
-
const indexResult = await client.query(`
|
|
286
|
-
SELECT
|
|
287
|
-
i.relname as index_name,
|
|
288
|
-
t.relname as table_name,
|
|
289
|
-
am.amname as index_type,
|
|
290
|
-
pg_relation_size(i.oid) as index_size,
|
|
291
|
-
idx.indisvalid as is_valid,
|
|
292
|
-
idx.indisunique as is_unique
|
|
293
|
-
FROM pg_index idx
|
|
294
|
-
JOIN pg_class i ON i.oid = idx.indexrelid
|
|
295
|
-
JOIN pg_class t ON t.oid = idx.indrelid
|
|
296
|
-
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
297
|
-
JOIN pg_am am ON am.oid = i.relam
|
|
298
|
-
WHERE n.nspname = $1
|
|
299
|
-
ORDER BY t.relname, i.relname
|
|
285
|
+
const indexResult = await client.query(`
|
|
286
|
+
SELECT
|
|
287
|
+
i.relname as index_name,
|
|
288
|
+
t.relname as table_name,
|
|
289
|
+
am.amname as index_type,
|
|
290
|
+
pg_relation_size(i.oid) as index_size,
|
|
291
|
+
idx.indisvalid as is_valid,
|
|
292
|
+
idx.indisunique as is_unique
|
|
293
|
+
FROM pg_index idx
|
|
294
|
+
JOIN pg_class i ON i.oid = idx.indexrelid
|
|
295
|
+
JOIN pg_class t ON t.oid = idx.indrelid
|
|
296
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
297
|
+
JOIN pg_am am ON am.oid = i.relam
|
|
298
|
+
WHERE n.nspname = $1
|
|
299
|
+
ORDER BY t.relname, i.relname
|
|
300
300
|
`, [config.schema]);
|
|
301
301
|
statusData.indexes = indexResult.rows.map(row => ({
|
|
302
302
|
name: row.index_name,
|
|
@@ -314,10 +314,10 @@ export const statusCommand = {
|
|
|
314
314
|
spinner.setText('Checking migration status...');
|
|
315
315
|
spinner.start();
|
|
316
316
|
try {
|
|
317
|
-
const migrationsResult = await client.query(`
|
|
318
|
-
SELECT version, name, applied_at
|
|
319
|
-
FROM ${config.schema}.migrations
|
|
320
|
-
ORDER BY version ASC
|
|
317
|
+
const migrationsResult = await client.query(`
|
|
318
|
+
SELECT version, name, applied_at
|
|
319
|
+
FROM ${config.schema}.migrations
|
|
320
|
+
ORDER BY version ASC
|
|
321
321
|
`);
|
|
322
322
|
statusData.migrations = migrationsResult.rows.map(row => ({
|
|
323
323
|
version: row.version,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* V3 CLI Security Command
|
|
3
3
|
* Security scanning, CVE detection, threat modeling, vulnerability management
|
|
4
4
|
*
|
|
5
|
-
* Created with ❤️ by
|
|
5
|
+
* Created with ❤️ by motailz.com
|
|
6
6
|
*/
|
|
7
7
|
import type { Command } from '../types.js';
|
|
8
8
|
export declare const securityCommand: Command;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* V3 CLI Security Command
|
|
3
3
|
* Security scanning, CVE detection, threat modeling, vulnerability management
|
|
4
4
|
*
|
|
5
|
-
* Created with ❤️ by
|
|
5
|
+
* Created with ❤️ by motailz.com
|
|
6
6
|
*/
|
|
7
7
|
import { output } from '../output.js';
|
|
8
8
|
// Scan subcommand
|
|
@@ -568,7 +568,7 @@ export const securityCommand = {
|
|
|
568
568
|
output.writeln();
|
|
569
569
|
output.writeln('Use --help with subcommands for more info');
|
|
570
570
|
output.writeln();
|
|
571
|
-
output.writeln(output.dim('Created with ❤️ by
|
|
571
|
+
output.writeln(output.dim('Created with ❤️ by motailz.com'));
|
|
572
572
|
return { success: true };
|
|
573
573
|
},
|
|
574
574
|
};
|
|
@@ -21,13 +21,25 @@ export interface MofloConfig {
|
|
|
21
21
|
guidance: boolean;
|
|
22
22
|
code_map: boolean;
|
|
23
23
|
};
|
|
24
|
+
memory: {
|
|
25
|
+
backend: 'sql.js' | 'agentdb' | 'json';
|
|
26
|
+
embedding_model: string;
|
|
27
|
+
namespace: string;
|
|
28
|
+
};
|
|
29
|
+
hooks: {
|
|
30
|
+
pre_edit: boolean;
|
|
31
|
+
gate: boolean;
|
|
32
|
+
stop_hook: boolean;
|
|
33
|
+
session_restore: boolean;
|
|
34
|
+
};
|
|
24
35
|
models: {
|
|
25
36
|
default: string;
|
|
26
37
|
review: string;
|
|
27
38
|
};
|
|
28
39
|
}
|
|
29
40
|
/**
|
|
30
|
-
* Load moflo
|
|
41
|
+
* Load moflo config from the given directory (or cwd).
|
|
42
|
+
* Tries moflo.yaml first, then moflo.config.json.
|
|
31
43
|
* Returns defaults merged with file contents.
|
|
32
44
|
*/
|
|
33
45
|
export declare function loadMofloConfig(projectRoot?: string): MofloConfig;
|
|
@@ -31,6 +31,17 @@ const DEFAULT_CONFIG = {
|
|
|
31
31
|
guidance: true,
|
|
32
32
|
code_map: true,
|
|
33
33
|
},
|
|
34
|
+
memory: {
|
|
35
|
+
backend: 'sql.js',
|
|
36
|
+
embedding_model: 'Xenova/all-MiniLM-L6-v2',
|
|
37
|
+
namespace: 'default',
|
|
38
|
+
},
|
|
39
|
+
hooks: {
|
|
40
|
+
pre_edit: true,
|
|
41
|
+
gate: true,
|
|
42
|
+
stop_hook: true,
|
|
43
|
+
session_restore: true,
|
|
44
|
+
},
|
|
34
45
|
models: {
|
|
35
46
|
default: 'opus',
|
|
36
47
|
review: 'opus',
|
|
@@ -39,56 +50,84 @@ const DEFAULT_CONFIG = {
|
|
|
39
50
|
// ============================================================================
|
|
40
51
|
// Loader
|
|
41
52
|
// ============================================================================
|
|
42
|
-
const
|
|
53
|
+
const CONFIG_FILES = ['moflo.yaml', 'moflo.config.json'];
|
|
54
|
+
/**
|
|
55
|
+
* Find and load config file from project root.
|
|
56
|
+
* Tries moflo.yaml first, then moflo.config.json.
|
|
57
|
+
*/
|
|
58
|
+
function findConfigFile(root) {
|
|
59
|
+
for (const filename of CONFIG_FILES) {
|
|
60
|
+
const configPath = path.join(root, filename);
|
|
61
|
+
if (fs.existsSync(configPath)) {
|
|
62
|
+
return { path: configPath, format: filename.endsWith('.json') ? 'json' : 'yaml' };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
43
67
|
/**
|
|
44
|
-
*
|
|
68
|
+
* Parse raw config object into typed config, merging with defaults.
|
|
69
|
+
*/
|
|
70
|
+
function mergeConfig(raw, root) {
|
|
71
|
+
return {
|
|
72
|
+
project: {
|
|
73
|
+
name: raw.project?.name || path.basename(root),
|
|
74
|
+
},
|
|
75
|
+
guidance: {
|
|
76
|
+
directories: raw.guidance?.directories || DEFAULT_CONFIG.guidance.directories,
|
|
77
|
+
namespace: raw.guidance?.namespace || DEFAULT_CONFIG.guidance.namespace,
|
|
78
|
+
},
|
|
79
|
+
code_map: {
|
|
80
|
+
directories: raw.code_map?.directories || raw.codeMap?.directories || DEFAULT_CONFIG.code_map.directories,
|
|
81
|
+
extensions: raw.code_map?.extensions || raw.codeMap?.extensions || DEFAULT_CONFIG.code_map.extensions,
|
|
82
|
+
exclude: raw.code_map?.exclude || raw.codeMap?.exclude || DEFAULT_CONFIG.code_map.exclude,
|
|
83
|
+
namespace: raw.code_map?.namespace || raw.codeMap?.namespace || DEFAULT_CONFIG.code_map.namespace,
|
|
84
|
+
},
|
|
85
|
+
gates: {
|
|
86
|
+
memory_first: raw.gates?.memory_first ?? DEFAULT_CONFIG.gates.memory_first,
|
|
87
|
+
task_create_first: raw.gates?.task_create_first ?? DEFAULT_CONFIG.gates.task_create_first,
|
|
88
|
+
context_tracking: raw.gates?.context_tracking ?? DEFAULT_CONFIG.gates.context_tracking,
|
|
89
|
+
},
|
|
90
|
+
auto_index: {
|
|
91
|
+
guidance: raw.auto_index?.guidance ?? raw.autoIndex?.guidance ?? DEFAULT_CONFIG.auto_index.guidance,
|
|
92
|
+
code_map: raw.auto_index?.code_map ?? raw.autoIndex?.code_map ?? DEFAULT_CONFIG.auto_index.code_map,
|
|
93
|
+
},
|
|
94
|
+
memory: {
|
|
95
|
+
backend: raw.memory?.backend || DEFAULT_CONFIG.memory.backend,
|
|
96
|
+
embedding_model: raw.memory?.embedding_model || raw.memory?.embeddingModel || DEFAULT_CONFIG.memory.embedding_model,
|
|
97
|
+
namespace: raw.memory?.namespace || DEFAULT_CONFIG.memory.namespace,
|
|
98
|
+
},
|
|
99
|
+
hooks: {
|
|
100
|
+
pre_edit: raw.hooks?.pre_edit ?? raw.hooks?.preEdit ?? DEFAULT_CONFIG.hooks.pre_edit,
|
|
101
|
+
gate: raw.hooks?.gate ?? DEFAULT_CONFIG.hooks.gate,
|
|
102
|
+
stop_hook: raw.hooks?.stop_hook ?? raw.hooks?.stopHook ?? DEFAULT_CONFIG.hooks.stop_hook,
|
|
103
|
+
session_restore: raw.hooks?.session_restore ?? raw.hooks?.sessionRestore ?? DEFAULT_CONFIG.hooks.session_restore,
|
|
104
|
+
},
|
|
105
|
+
models: {
|
|
106
|
+
default: raw.models?.default || DEFAULT_CONFIG.models.default,
|
|
107
|
+
review: raw.models?.review || DEFAULT_CONFIG.models.review,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Load moflo config from the given directory (or cwd).
|
|
113
|
+
* Tries moflo.yaml first, then moflo.config.json.
|
|
45
114
|
* Returns defaults merged with file contents.
|
|
46
115
|
*/
|
|
47
116
|
export function loadMofloConfig(projectRoot) {
|
|
48
117
|
const root = projectRoot || process.cwd();
|
|
49
|
-
const
|
|
50
|
-
if (!
|
|
51
|
-
|
|
52
|
-
return {
|
|
53
|
-
...DEFAULT_CONFIG,
|
|
54
|
-
project: { name: path.basename(root) },
|
|
55
|
-
};
|
|
118
|
+
const configFile = findConfigFile(root);
|
|
119
|
+
if (!configFile) {
|
|
120
|
+
return { ...DEFAULT_CONFIG, project: { name: path.basename(root) } };
|
|
56
121
|
}
|
|
57
122
|
try {
|
|
58
|
-
const content = fs.readFileSync(
|
|
59
|
-
const raw =
|
|
123
|
+
const content = fs.readFileSync(configFile.path, 'utf-8');
|
|
124
|
+
const raw = configFile.format === 'json'
|
|
125
|
+
? JSON.parse(content)
|
|
126
|
+
: yaml.load(content);
|
|
60
127
|
if (!raw || typeof raw !== 'object') {
|
|
61
128
|
return { ...DEFAULT_CONFIG, project: { name: path.basename(root) } };
|
|
62
129
|
}
|
|
63
|
-
|
|
64
|
-
return {
|
|
65
|
-
project: {
|
|
66
|
-
name: raw.project?.name || path.basename(root),
|
|
67
|
-
},
|
|
68
|
-
guidance: {
|
|
69
|
-
directories: raw.guidance?.directories || DEFAULT_CONFIG.guidance.directories,
|
|
70
|
-
namespace: raw.guidance?.namespace || DEFAULT_CONFIG.guidance.namespace,
|
|
71
|
-
},
|
|
72
|
-
code_map: {
|
|
73
|
-
directories: raw.code_map?.directories || DEFAULT_CONFIG.code_map.directories,
|
|
74
|
-
extensions: raw.code_map?.extensions || DEFAULT_CONFIG.code_map.extensions,
|
|
75
|
-
exclude: raw.code_map?.exclude || DEFAULT_CONFIG.code_map.exclude,
|
|
76
|
-
namespace: raw.code_map?.namespace || DEFAULT_CONFIG.code_map.namespace,
|
|
77
|
-
},
|
|
78
|
-
gates: {
|
|
79
|
-
memory_first: raw.gates?.memory_first ?? DEFAULT_CONFIG.gates.memory_first,
|
|
80
|
-
task_create_first: raw.gates?.task_create_first ?? DEFAULT_CONFIG.gates.task_create_first,
|
|
81
|
-
context_tracking: raw.gates?.context_tracking ?? DEFAULT_CONFIG.gates.context_tracking,
|
|
82
|
-
},
|
|
83
|
-
auto_index: {
|
|
84
|
-
guidance: raw.auto_index?.guidance ?? DEFAULT_CONFIG.auto_index.guidance,
|
|
85
|
-
code_map: raw.auto_index?.code_map ?? DEFAULT_CONFIG.auto_index.code_map,
|
|
86
|
-
},
|
|
87
|
-
models: {
|
|
88
|
-
default: raw.models?.default || DEFAULT_CONFIG.models.default,
|
|
89
|
-
review: raw.models?.review || DEFAULT_CONFIG.models.review,
|
|
90
|
-
},
|
|
91
|
-
};
|
|
130
|
+
return mergeConfig(raw, root);
|
|
92
131
|
}
|
|
93
132
|
catch {
|
|
94
133
|
return { ...DEFAULT_CONFIG, project: { name: path.basename(root) } };
|
|
@@ -161,6 +200,19 @@ auto_index:
|
|
|
161
200
|
guidance: true
|
|
162
201
|
code_map: true
|
|
163
202
|
|
|
203
|
+
# Memory backend
|
|
204
|
+
memory:
|
|
205
|
+
backend: sql.js # sql.js (WASM, no native deps) | agentdb | json
|
|
206
|
+
embedding_model: Xenova/all-MiniLM-L6-v2
|
|
207
|
+
namespace: default
|
|
208
|
+
|
|
209
|
+
# Hook toggles
|
|
210
|
+
hooks:
|
|
211
|
+
pre_edit: true # Track file edits
|
|
212
|
+
gate: true # Workflow gate enforcement
|
|
213
|
+
stop_hook: true # Session-end persistence
|
|
214
|
+
session_restore: true # Restore session state on start
|
|
215
|
+
|
|
164
216
|
# Model preferences
|
|
165
217
|
models:
|
|
166
218
|
default: opus
|
|
@@ -173,7 +225,7 @@ models:
|
|
|
173
225
|
*/
|
|
174
226
|
export function writeMofloConfig(projectRoot) {
|
|
175
227
|
const root = projectRoot || process.cwd();
|
|
176
|
-
const configPath = path.join(root,
|
|
228
|
+
const configPath = path.join(root, CONFIG_FILES[0]);
|
|
177
229
|
const content = generateMofloConfig(root);
|
|
178
230
|
fs.writeFileSync(configPath, content, 'utf-8');
|
|
179
231
|
return configPath;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* V3 CLI Main Entry Point
|
|
3
3
|
* Modernized CLI for RuFlo V3
|
|
4
4
|
*
|
|
5
|
-
* Created with ❤️ by
|
|
5
|
+
* Created with ❤️ by motailz.com
|
|
6
6
|
*/
|
|
7
7
|
import { readFileSync } from 'fs';
|
|
8
8
|
import { fileURLToPath } from 'url';
|
|
@@ -296,7 +296,7 @@ export class CLI {
|
|
|
296
296
|
this.output.writeln();
|
|
297
297
|
this.output.writeln(this.output.dim(`Run "${this.name} <command> --help" for command help`));
|
|
298
298
|
this.output.writeln();
|
|
299
|
-
this.output.writeln(this.output.dim('Created with ❤️ by
|
|
299
|
+
this.output.writeln(this.output.dim('Created with ❤️ by motailz.com'));
|
|
300
300
|
this.output.writeln();
|
|
301
301
|
}
|
|
302
302
|
/**
|
|
@@ -355,8 +355,8 @@ npx @claude-flow/cli@latest doctor --fix
|
|
|
355
355
|
|
|
356
356
|
## Support
|
|
357
357
|
|
|
358
|
-
- Documentation: https://github.com/
|
|
359
|
-
- Issues: https://github.com/
|
|
358
|
+
- Documentation: https://github.com/eric-cielo/moflo
|
|
359
|
+
- Issues: https://github.com/eric-cielo/moflo/issues`;
|
|
360
360
|
}
|
|
361
361
|
// --- Template Composers ---
|
|
362
362
|
/**
|
|
@@ -1210,7 +1210,7 @@ async function writeCapabilitiesDoc(targetDir, options, result) {
|
|
|
1210
1210
|
}
|
|
1211
1211
|
const capabilities = `# RuFlo V3 - Complete Capabilities Reference
|
|
1212
1212
|
> Generated: ${new Date().toISOString()}
|
|
1213
|
-
> Full documentation: https://github.com/
|
|
1213
|
+
> Full documentation: https://github.com/eric-cielo/moflo
|
|
1214
1214
|
|
|
1215
1215
|
## 📋 Table of Contents
|
|
1216
1216
|
|
|
@@ -1609,8 +1609,8 @@ npx @claude-flow/cli@latest hooks worker dispatch --trigger optimize
|
|
|
1609
1609
|
|
|
1610
1610
|
---
|
|
1611
1611
|
|
|
1612
|
-
**Full Documentation**: https://github.com/
|
|
1613
|
-
**Issues**: https://github.com/
|
|
1612
|
+
**Full Documentation**: https://github.com/eric-cielo/moflo
|
|
1613
|
+
**Issues**: https://github.com/eric-cielo/moflo/issues
|
|
1614
1614
|
`;
|
|
1615
1615
|
fs.writeFileSync(capabilitiesPath, capabilities, 'utf-8');
|
|
1616
1616
|
result.created.files.push('.claude-flow/CAPABILITIES.md');
|