monomind 1.8.0 → 1.9.1
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/design/design-monodesign.md +121 -0
- package/.claude/agents/github/issue-tracker.md +12 -12
- package/.claude/agents/github/pr-manager.md +10 -10
- package/.claude/agents/github/release-manager.md +49 -105
- package/.claude/agents/github/repo-architect.md +73 -92
- package/.claude/agents/github/sync-coordinator.md +55 -123
- package/.claude/agents/marketing/marketing-competitive-content.md +155 -0
- package/.claude/agents/marketing/marketing-content-creator.md +13 -0
- package/.claude/agents/marketing/marketing-cro-specialist.md +147 -0
- package/.claude/agents/marketing/marketing-email-specialist.md +90 -0
- package/.claude/agents/marketing/marketing-launch-strategist.md +129 -0
- package/.claude/agents/marketing/marketing-pricing-strategist.md +127 -0
- package/.claude/agents/specialists/integration-architect.md +94 -0
- package/.claude/commands/agents/README.md +4 -0
- package/.claude/commands/agents/agent-capabilities.md +6 -2
- package/.claude/commands/agents/agent-coordination.md +4 -0
- package/.claude/commands/agents/agent-spawning.md +4 -0
- package/.claude/commands/agents/agent-types.md +6 -2
- package/.claude/commands/analysis/README.md +14 -5
- package/.claude/commands/analysis/bottleneck-detect.md +30 -123
- package/.claude/commands/analysis/performance-bottlenecks.md +14 -14
- package/.claude/commands/analysis/performance-report.md +38 -11
- package/.claude/commands/analysis/token-efficiency.md +13 -16
- package/.claude/commands/analysis/token-usage.md +34 -12
- package/.claude/commands/automation/README.md +15 -5
- package/.claude/commands/automation/auto-agent.md +49 -85
- package/.claude/commands/automation/self-healing.md +20 -18
- package/.claude/commands/automation/session-memory.md +28 -29
- package/.claude/commands/automation/smart-agents.md +17 -9
- package/.claude/commands/automation/smart-spawn.md +52 -11
- package/.claude/commands/automation/workflow-select.md +46 -11
- package/.claude/commands/browse.md +5 -0
- package/.claude/commands/coordination/README.md +9 -5
- package/.claude/commands/coordination/agent-spawn.md +53 -9
- package/.claude/commands/coordination/swarm-init.md +39 -42
- package/.claude/commands/coordination/task-orchestrate.md +65 -11
- package/.claude/commands/github/README.md +21 -8
- package/.claude/commands/github/github-modes.md +9 -5
- package/.claude/commands/github/issue-tracker.md +34 -33
- package/.claude/commands/github/pr-manager.md +20 -17
- package/.claude/commands/github/release-manager.md +37 -49
- package/.claude/commands/github/repo-architect.md +39 -41
- package/.claude/commands/github/sync-coordinator.md +45 -49
- package/.claude/commands/hive-mind/README.md +42 -17
- package/.claude/commands/hive-mind/hive-mind-consensus.md +68 -4
- package/.claude/commands/hive-mind/hive-mind-init.md +55 -5
- package/.claude/commands/hive-mind/hive-mind-memory.md +69 -4
- package/.claude/commands/hive-mind/hive-mind-spawn.md +71 -10
- package/.claude/commands/hive-mind/hive-mind-status.md +52 -4
- package/.claude/commands/hive-mind/hive-mind-stop.md +51 -4
- package/.claude/commands/hive-mind/hive-mind.md +74 -14
- package/.claude/commands/hooks/README.md +62 -7
- package/.claude/commands/hooks/overview.md +94 -35
- package/.claude/commands/hooks/post-edit.md +48 -87
- package/.claude/commands/hooks/post-task.md +37 -87
- package/.claude/commands/hooks/pre-edit.md +52 -84
- package/.claude/commands/hooks/pre-task.md +46 -81
- package/.claude/commands/hooks/session-end.md +49 -85
- package/.claude/commands/hooks/setup.md +87 -58
- package/.claude/commands/mastermind/_repeat.md +308 -0
- package/.claude/commands/mastermind/architect.md +49 -0
- package/.claude/commands/mastermind/brain.md +98 -0
- package/.claude/commands/mastermind/build.md +22 -0
- package/.claude/commands/mastermind/content.md +22 -0
- package/.claude/commands/mastermind/createorg.md +94 -0
- package/.claude/commands/mastermind/finance.md +22 -0
- package/.claude/commands/mastermind/idea.md +22 -0
- package/.claude/commands/mastermind/marketing.md +22 -0
- package/.claude/commands/mastermind/master.md +379 -0
- package/.claude/commands/mastermind/ops.md +22 -0
- package/.claude/commands/mastermind/release.md +22 -0
- package/.claude/commands/mastermind/research.md +22 -0
- package/.claude/commands/mastermind/review.md +22 -0
- package/.claude/commands/mastermind/runorg.md +106 -0
- package/.claude/commands/mastermind/sales.md +22 -0
- package/.claude/commands/mastermind/techport.md +17 -0
- package/.claude/commands/memory/README.md +75 -5
- package/.claude/commands/memory/memory-search.md +63 -11
- package/.claude/commands/monitoring/README.md +64 -4
- package/.claude/commands/monitoring/agent-metrics.md +50 -10
- package/.claude/commands/monitoring/agents.md +59 -32
- package/.claude/commands/monitoring/status.md +96 -34
- package/.claude/commands/monograph/README.md +102 -0
- package/.claude/commands/monograph/monograph-build.md +79 -0
- package/.claude/commands/monograph/monograph-search.md +96 -0
- package/.claude/commands/monograph/monograph-stats.md +53 -0
- package/.claude/commands/monograph/monograph-watch.md +63 -0
- package/.claude/commands/monograph/monograph-wiki.md +91 -0
- package/.claude/commands/monomind/createtask.md +277 -0
- package/.claude/commands/{monomind-do.md → monomind/do.md} +21 -8
- package/.claude/commands/monomind/help.md +118 -0
- package/.claude/commands/{monomind-idea.md → monomind/idea.md} +22 -28
- package/.claude/commands/{monomind-improve.md → monomind/improve.md} +21 -27
- package/.claude/commands/monomind/memory.md +230 -0
- package/.claude/commands/monomind/repeat.md +201 -0
- package/.claude/commands/monomind/review.md +313 -0
- package/.claude/commands/monomind/specialagents.md +125 -0
- package/.claude/commands/monomind/swarm.md +161 -0
- package/.claude/commands/monomind/understand.md +148 -0
- package/.claude/commands/optimization/README.md +69 -5
- package/.claude/commands/optimization/auto-topology.md +66 -43
- package/.claude/commands/optimization/parallel-execution.md +65 -39
- package/.claude/commands/optimization/performance-optimize.md +79 -0
- package/.claude/commands/pair/README.md +48 -230
- package/.claude/commands/pair/examples.md +85 -441
- package/.claude/commands/pair/modes.md +77 -303
- package/.claude/commands/pair/session.md +76 -359
- package/.claude/commands/sparc/analyzer.md +9 -26
- package/.claude/commands/sparc/architect.md +8 -25
- package/.claude/commands/sparc/ask.md +27 -68
- package/.claude/commands/sparc/batch-executor.md +8 -25
- package/.claude/commands/sparc/code.md +12 -53
- package/.claude/commands/sparc/coder.md +8 -25
- package/.claude/commands/sparc/debug.md +12 -53
- package/.claude/commands/sparc/debugger.md +8 -25
- package/.claude/commands/sparc/designer.md +8 -25
- package/.claude/commands/sparc/devops.md +16 -57
- package/.claude/commands/sparc/docs-writer.md +12 -53
- package/.claude/commands/sparc/documenter.md +8 -25
- package/.claude/commands/sparc/innovator.md +8 -25
- package/.claude/commands/sparc/integration.md +12 -53
- package/.claude/commands/sparc/mcp.md +12 -53
- package/.claude/commands/sparc/memory-manager.md +28 -25
- package/.claude/commands/sparc/optimizer.md +8 -25
- package/.claude/commands/sparc/orchestrator.md +35 -97
- package/.claude/commands/sparc/post-deployment-monitoring-mode.md +13 -54
- package/.claude/commands/sparc/refinement-optimization-mode.md +13 -54
- package/.claude/commands/sparc/researcher.md +8 -25
- package/.claude/commands/sparc/reviewer.md +8 -25
- package/.claude/commands/sparc/security-review.md +13 -54
- package/.claude/commands/sparc/sparc-modes.md +97 -151
- package/.claude/commands/sparc/sparc.md +16 -56
- package/.claude/commands/sparc/spec-pseudocode.md +13 -54
- package/.claude/commands/sparc/supabase-admin.md +19 -66
- package/.claude/commands/sparc/swarm-coordinator.md +21 -25
- package/.claude/commands/sparc/tdd.md +8 -25
- package/.claude/commands/sparc/tester.md +8 -25
- package/.claude/commands/sparc/tutorial.md +12 -53
- package/.claude/commands/sparc/workflow-manager.md +8 -25
- package/.claude/commands/sparc.md +76 -130
- package/.claude/commands/stream-chain/pipeline.md +72 -77
- package/.claude/commands/stream-chain/run.md +133 -47
- package/.claude/commands/swarm/README.md +37 -12
- package/.claude/commands/swarm/analysis.md +47 -69
- package/.claude/commands/swarm/development.md +45 -69
- package/.claude/commands/swarm/examples.md +77 -142
- package/.claude/commands/swarm/maintenance.md +47 -74
- package/.claude/commands/swarm/optimization.md +54 -87
- package/.claude/commands/swarm/research.md +47 -107
- package/.claude/commands/swarm/swarm-analysis.md +58 -4
- package/.claude/commands/swarm/swarm-background.md +61 -4
- package/.claude/commands/swarm/swarm-modes.md +63 -4
- package/.claude/commands/swarm/swarm-monitor.md +50 -4
- package/.claude/commands/swarm/swarm-status.md +40 -4
- package/.claude/commands/swarm/swarm-strategies.md +73 -5
- package/.claude/commands/swarm/swarm.md +70 -18
- package/.claude/commands/swarm/testing.md +51 -102
- package/.claude/commands/tokens.md +6 -1
- package/.claude/commands/training/README.md +36 -6
- package/.claude/commands/training/model-update.md +68 -15
- package/.claude/commands/training/neural-patterns.md +54 -55
- package/.claude/commands/training/neural-train.md +70 -16
- package/.claude/commands/training/pattern-learn.md +60 -16
- package/.claude/commands/training/specialization.md +78 -49
- package/.claude/commands/truth/start.md +87 -109
- package/.claude/commands/ts.md +7 -2
- package/.claude/commands/verify/check.md +90 -34
- package/.claude/commands/verify/start.md +71 -94
- package/.claude/commands/workflows/README.md +62 -6
- package/.claude/commands/workflows/development.md +69 -61
- package/.claude/commands/workflows/research.md +73 -47
- package/.claude/commands/workflows/workflow-create.md +75 -16
- package/.claude/commands/workflows/workflow-execute.md +94 -16
- package/.claude/commands/workflows/workflow-export.md +81 -16
- package/.claude/helpers/control-start.cjs +91 -0
- package/.claude/helpers/extras-registry.json +4104 -1991
- package/.claude/helpers/graphify-freshen.cjs +44 -13
- package/.claude/helpers/hook-handler.cjs +256 -1
- package/.claude/helpers/learning-service.mjs +0 -0
- package/.claude/helpers/loop-tracker.cjs +107 -0
- package/.claude/helpers/metrics-db.mjs +0 -0
- package/.claude/helpers/router.cjs +48 -68
- package/.claude/helpers/skill-registry.json +89 -104
- package/.claude/helpers/statusline.cjs +33 -2
- package/.claude/helpers/swarm-hooks.sh +0 -0
- package/.claude/scheduled_tasks.lock +1 -0
- package/.claude/settings.json +15 -0
- package/.claude/skills/.monomind/data/ranked-context.json +5 -0
- package/.claude/skills/.monomind/sessions/current.json +13 -0
- package/.claude/skills/.monomind/sessions/session-1777829336455.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777831614725.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777832095857.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777839814183.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777841847131.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777843309463.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777880867159.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777881884593.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777884090471.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777884808221.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777885672155.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777886852818.json +15 -0
- package/.claude/skills/.monomind/sessions/session-1777896532690.json +15 -0
- package/.claude/skills/agentdb-advanced/SKILL.md +11 -12
- package/.claude/skills/agentdb-learning/SKILL.md +20 -21
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +28 -30
- package/.claude/skills/agentdb-optimization/SKILL.md +11 -12
- package/.claude/skills/agentdb-vector-search/SKILL.md +37 -41
- package/.claude/skills/{v3-integration-deep → agentic-integration}/SKILL.md +20 -13
- package/.claude/skills/agentic-jujutsu/SKILL.md +22 -22
- package/.claude/skills/{v3-cli-modernization → cli-modernization}/SKILL.md +17 -8
- package/.claude/skills/{v3-core-implementation → core-implementation}/SKILL.md +33 -8
- package/.claude/skills/{v3-ddd-architecture → ddd-architecture}/SKILL.md +18 -25
- package/.claude/skills/github-code-review/SKILL.md +82 -83
- package/.claude/skills/github-multi-repo/SKILL.md +42 -46
- package/.claude/skills/github-project-management/SKILL.md +83 -88
- package/.claude/skills/github-release-management/SKILL.md +12 -18
- package/.claude/skills/github-workflow-automation/SKILL.md +70 -74
- package/.claude/skills/hooks-automation/SKILL.md +9 -13
- package/.claude/skills/mastermind/_intake.md +83 -0
- package/.claude/skills/mastermind/_protocol.md +275 -0
- package/.claude/skills/mastermind/architect.md +847 -0
- package/.claude/skills/mastermind/build.md +158 -0
- package/.claude/skills/mastermind/content.md +185 -0
- package/.claude/skills/mastermind/createorg.md +318 -0
- package/.claude/skills/mastermind/finance.md +154 -0
- package/.claude/skills/mastermind/idea.md +158 -0
- package/.claude/skills/mastermind/marketing.md +216 -0
- package/.claude/skills/mastermind/monotask.md +350 -0
- package/.claude/skills/mastermind/ops.md +156 -0
- package/.claude/skills/mastermind/references/copywriting-frameworks.md +181 -0
- package/.claude/skills/mastermind/references/persuasion-psychology.md +158 -0
- package/.claude/skills/mastermind/release.md +156 -0
- package/.claude/skills/mastermind/research.md +156 -0
- package/.claude/skills/mastermind/review.md +157 -0
- package/.claude/skills/mastermind/runorg.md +308 -0
- package/.claude/skills/mastermind/sales.md +158 -0
- package/.claude/skills/mastermind/techport.md +743 -0
- package/.claude/skills/{v3-mcp-optimization → mcp-optimization}/SKILL.md +35 -14
- package/.claude/skills/{v3-memory-unification → memory-unification}/SKILL.md +20 -4
- package/.claude/skills/monodesign/SKILL.md +302 -0
- package/.claude/skills/monodesign/reference/adapt.md +190 -0
- package/.claude/skills/monodesign/reference/animate.md +175 -0
- package/.claude/skills/monodesign/reference/antipatterns-catalog.md +187 -0
- package/.claude/skills/monodesign/reference/audit.md +133 -0
- package/.claude/skills/monodesign/reference/bolder.md +113 -0
- package/.claude/skills/monodesign/reference/brand-workflow.md +180 -0
- package/.claude/skills/monodesign/reference/brand.md +114 -0
- package/.claude/skills/monodesign/reference/clarify.md +174 -0
- package/.claude/skills/monodesign/reference/cognitive-load.md +106 -0
- package/.claude/skills/monodesign/reference/color-and-contrast.md +105 -0
- package/.claude/skills/monodesign/reference/colorize.md +154 -0
- package/.claude/skills/monodesign/reference/component-specs.md +260 -0
- package/.claude/skills/monodesign/reference/component-states.md +274 -0
- package/.claude/skills/monodesign/reference/component-system.md +358 -0
- package/.claude/skills/monodesign/reference/copy-formulas.md +160 -0
- package/.claude/skills/monodesign/reference/craft.md +193 -0
- package/.claude/skills/monodesign/reference/critique.md +213 -0
- package/.claude/skills/monodesign/reference/delight.md +302 -0
- package/.claude/skills/monodesign/reference/design-principles.md +246 -0
- package/.claude/skills/monodesign/reference/distill.md +111 -0
- package/.claude/skills/monodesign/reference/document.md +427 -0
- package/.claude/skills/monodesign/reference/extract.md +69 -0
- package/.claude/skills/monodesign/reference/harden.md +347 -0
- package/.claude/skills/monodesign/reference/heuristics-scoring.md +234 -0
- package/.claude/skills/monodesign/reference/image-prompts.md +118 -0
- package/.claude/skills/monodesign/reference/interaction-design.md +195 -0
- package/.claude/skills/monodesign/reference/layout.md +141 -0
- package/.claude/skills/monodesign/reference/live.md +622 -0
- package/.claude/skills/monodesign/reference/motion-design.md +109 -0
- package/.claude/skills/monodesign/reference/onboard.md +234 -0
- package/.claude/skills/monodesign/reference/optimize.md +258 -0
- package/.claude/skills/monodesign/reference/overdrive.md +130 -0
- package/.claude/skills/monodesign/reference/personas.md +179 -0
- package/.claude/skills/monodesign/reference/polish.md +233 -0
- package/.claude/skills/monodesign/reference/pre-delivery-checklist.md +108 -0
- package/.claude/skills/monodesign/reference/product.md +62 -0
- package/.claude/skills/monodesign/reference/quieter.md +99 -0
- package/.claude/skills/monodesign/reference/responsive-design.md +114 -0
- package/.claude/skills/monodesign/reference/shape.md +151 -0
- package/.claude/skills/monodesign/reference/spatial-design.md +100 -0
- package/.claude/skills/monodesign/reference/teach.md +156 -0
- package/.claude/skills/monodesign/reference/token-architecture.md +222 -0
- package/.claude/skills/monodesign/reference/typeset.md +124 -0
- package/.claude/skills/monodesign/reference/typography.md +159 -0
- package/.claude/skills/monodesign/reference/ux-research.md +143 -0
- package/.claude/skills/monodesign/reference/ux-rules.md +211 -0
- package/.claude/skills/monodesign/reference/ux-writing.md +107 -0
- package/.claude/skills/monomotion/SKILL.md +145 -0
- package/.claude/skills/monomotion/rules/api-control.md +139 -0
- package/.claude/skills/monomotion/rules/effects.md +109 -0
- package/.claude/skills/monomotion/rules/integration.md +140 -0
- package/.claude/skills/monomotion/rules/scroll.md +131 -0
- package/.claude/skills/monomotion/rules/sequencing.md +105 -0
- package/.claude/skills/monomotion/rules/svg.md +101 -0
- package/.claude/skills/monomotion/rules/text.md +119 -0
- package/.claude/skills/pair-programming/SKILL.md +1 -1
- package/.claude/skills/performance-analysis/SKILL.md +3 -3
- package/.claude/skills/{v3-performance-optimization → performance-optimization}/SKILL.md +16 -8
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +17 -19
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +4 -6
- package/.claude/skills/{v3-security-overhaul → security-hardening}/SKILL.md +13 -3
- package/.claude/skills/skill-builder/SKILL.md +19 -19
- package/.claude/skills/sparc-methodology/SKILL.md +55 -211
- package/.claude/skills/stop-slop/SKILL.md +67 -0
- package/.claude/skills/stop-slop/references/examples.md +61 -0
- package/.claude/skills/stop-slop/references/phrases.md +130 -0
- package/.claude/skills/stop-slop/references/structures.md +136 -0
- package/.claude/skills/swarm-advanced/SKILL.md +13 -43
- package/.claude/skills/{v3-swarm-coordination → swarm-coordination}/SKILL.md +39 -21
- package/.claude/skills/swarm-orchestration/SKILL.md +12 -12
- package/.claude/skills/verification-quality/SKILL.md +5 -5
- package/.claude/statusline-command.sh +0 -0
- package/.claude/statusline.sh +0 -0
- package/.claude-plugin/scripts/install.sh +0 -0
- package/.claude-plugin/scripts/uninstall.sh +0 -0
- package/.claude-plugin/scripts/verify.sh +0 -0
- package/README.md +5 -5
- package/package.json +17 -17
- package/packages/@monomind/cli/README.md +441 -0
- package/packages/@monomind/cli/bin/cli.js +78 -13
- package/packages/@monomind/cli/bin/mcp-server.js +0 -0
- package/packages/@monomind/cli/dist/src/agents/halt-signal.js +33 -7
- package/packages/@monomind/cli/dist/src/agents/managed-agent.js +5 -2
- package/packages/@monomind/cli/dist/src/agents/prompt-experiment.d.ts +3 -2
- package/packages/@monomind/cli/dist/src/agents/prompt-experiment.js +1 -1
- package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.d.ts +5 -2
- package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.js +26 -4
- package/packages/@monomind/cli/dist/src/agents/specialization-scorer.js +17 -9
- package/packages/@monomind/cli/dist/src/agents/trigger-scanner.d.ts +5 -3
- package/packages/@monomind/cli/dist/src/agents/trigger-scanner.js +58 -10
- package/packages/@monomind/cli/dist/src/agents/version-store.d.ts +0 -1
- package/packages/@monomind/cli/dist/src/agents/version-store.js +44 -21
- package/packages/@monomind/cli/dist/src/autopilot-state.js +79 -28
- package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.d.ts +7 -2
- package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +20 -8
- package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.d.ts +2 -1
- package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.js +25 -2
- package/packages/@monomind/cli/dist/src/commands/agent.js +6 -4
- package/packages/@monomind/cli/dist/src/commands/appliance-advanced.js +23 -0
- package/packages/@monomind/cli/dist/src/commands/autopilot.js +3 -3
- package/packages/@monomind/cli/dist/src/commands/benchmark.js +119 -8
- package/packages/@monomind/cli/dist/src/commands/claims.js +22 -14
- package/packages/@monomind/cli/dist/src/commands/config.js +32 -0
- package/packages/@monomind/cli/dist/src/commands/daemon.js +13 -11
- package/packages/@monomind/cli/dist/src/commands/deployment.js +21 -2
- package/packages/@monomind/cli/dist/src/commands/doctor.js +5 -4
- package/packages/@monomind/cli/dist/src/commands/embeddings.js +124 -48
- package/packages/@monomind/cli/dist/src/commands/hive-mind.js +15 -14
- package/packages/@monomind/cli/dist/src/commands/hooks.js +45 -41
- package/packages/@monomind/cli/dist/src/commands/index.d.ts +2 -0
- package/packages/@monomind/cli/dist/src/commands/index.js +20 -7
- package/packages/@monomind/cli/dist/src/commands/init.js +53 -19
- package/packages/@monomind/cli/dist/src/commands/mcp.js +31 -44
- package/packages/@monomind/cli/dist/src/commands/memory.js +47 -15
- package/packages/@monomind/cli/dist/src/commands/migrate.js +156 -108
- package/packages/@monomind/cli/dist/src/commands/monograph.d.ts +8 -0
- package/packages/@monomind/cli/dist/src/commands/monograph.js +526 -0
- package/packages/@monomind/cli/dist/src/commands/neural.js +96 -56
- package/packages/@monomind/cli/dist/src/commands/performance.js +30 -8
- package/packages/@monomind/cli/dist/src/commands/plugins.js +13 -37
- package/packages/@monomind/cli/dist/src/commands/process.js +25 -2
- package/packages/@monomind/cli/dist/src/commands/providers.js +37 -5
- package/packages/@monomind/cli/dist/src/commands/replay.js +4 -4
- package/packages/@monomind/cli/dist/src/commands/route.js +37 -5
- package/packages/@monomind/cli/dist/src/commands/ruvector/import.js +12 -2
- package/packages/@monomind/cli/dist/src/commands/ruvector/init.js +15 -0
- package/packages/@monomind/cli/dist/src/commands/ruvector/status.js +16 -3
- package/packages/@monomind/cli/dist/src/commands/security.js +342 -193
- package/packages/@monomind/cli/dist/src/commands/session.js +51 -8
- package/packages/@monomind/cli/dist/src/commands/start.js +18 -4
- package/packages/@monomind/cli/dist/src/commands/swarm.js +47 -36
- package/packages/@monomind/cli/dist/src/commands/tokens.js +11 -11
- package/packages/@monomind/cli/dist/src/commands/transfer-store.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/workflow.js +31 -4
- package/packages/@monomind/cli/dist/src/config-adapter.d.ts +2 -1
- package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +46 -13
- package/packages/@monomind/cli/dist/src/consensus/vote-signer.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +9 -1
- package/packages/@monomind/cli/dist/src/dlq/dlq-reader.d.ts +4 -2
- package/packages/@monomind/cli/dist/src/dlq/dlq-reader.js +25 -8
- package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.d.ts +10 -3
- package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.js +50 -16
- package/packages/@monomind/cli/dist/src/dlq/dlq-writer.js +27 -5
- package/packages/@monomind/cli/dist/src/eval/dataset-manager.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/eval/dataset-manager.js +26 -16
- package/packages/@monomind/cli/dist/src/eval/trace-collector.js +23 -3
- package/packages/@monomind/cli/dist/src/index.js +12 -10
- package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +8 -8
- package/packages/@monomind/cli/dist/src/init/executor.js +212 -102
- package/packages/@monomind/cli/dist/src/init/helpers-generator.js +35 -22
- package/packages/@monomind/cli/dist/src/init/mcp-generator.js +3 -3
- package/packages/@monomind/cli/dist/src/init/settings-generator.js +10 -3
- package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +18 -3
- package/packages/@monomind/cli/dist/src/init/statusline-generator.js +3 -1
- package/packages/@monomind/cli/dist/src/init/types.d.ts +35 -11
- package/packages/@monomind/cli/dist/src/init/types.js +5 -9
- package/packages/@monomind/cli/dist/src/interactive/interrupt.js +8 -3
- package/packages/@monomind/cli/dist/src/mcp/tool-registry.js +38 -4
- package/packages/@monomind/cli/dist/src/mcp-client.js +10 -4
- package/packages/@monomind/cli/dist/src/mcp-server.d.ts +9 -2
- package/packages/@monomind/cli/dist/src/mcp-server.js +182 -35
- package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +66 -34
- package/packages/@monomind/cli/dist/src/mcp-tools/agentdb-tools.js +34 -7
- package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +25 -16
- package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.js +4 -6
- package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.js +12 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +199 -20
- package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.js +68 -18
- package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.js +33 -5
- package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.js +59 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.js +46 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +46 -5
- package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +29 -16
- package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +38 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +96 -33
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +70 -37
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +29 -13
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +5867 -56
- package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +121 -37
- package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.js +21 -8
- package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +10 -8
- package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.js +4 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/ruvllm-tools.js +19 -8
- package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.js +57 -17
- package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +35 -17
- package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +4 -3
- package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.js +53 -13
- package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +63 -14
- package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +21 -16
- package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +92 -23
- package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.js +41 -10
- package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/memory/intelligence.js +39 -13
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +149 -56
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +107 -45
- package/packages/@monomind/cli/dist/src/memory/sona-optimizer.d.ts +8 -1
- package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +25 -8
- package/packages/@monomind/cli/dist/src/observability/replay-reader.d.ts +40 -0
- package/packages/@monomind/cli/dist/src/observability/replay-reader.js +138 -0
- package/packages/@monomind/cli/dist/src/orchestration/routing-modes.js +35 -5
- package/packages/@monomind/cli/dist/src/parser.d.ts +8 -0
- package/packages/@monomind/cli/dist/src/parser.js +48 -14
- package/packages/@monomind/cli/dist/src/plugins/manager.js +112 -19
- package/packages/@monomind/cli/dist/src/plugins/store/discovery.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +80 -62
- package/packages/@monomind/cli/dist/src/production/circuit-breaker.js +8 -1
- package/packages/@monomind/cli/dist/src/production/error-handler.d.ts +4 -2
- package/packages/@monomind/cli/dist/src/production/error-handler.js +27 -5
- package/packages/@monomind/cli/dist/src/production/monitoring.js +8 -4
- package/packages/@monomind/cli/dist/src/production/rate-limiter.js +30 -22
- package/packages/@monomind/cli/dist/src/ruvector/agent-wasm.js +2 -2
- package/packages/@monomind/cli/dist/src/ruvector/coverage-router.js +19 -9
- package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/ruvector/diff-classifier.js +26 -6
- package/packages/@monomind/cli/dist/src/ruvector/enhanced-model-router.js +24 -2
- package/packages/@monomind/cli/dist/src/ruvector/index.d.ts +1 -2
- package/packages/@monomind/cli/dist/src/ruvector/index.js +2 -2
- package/packages/@monomind/cli/dist/src/ruvector/model-router.d.ts +4 -2
- package/packages/@monomind/cli/dist/src/ruvector/model-router.js +30 -6
- package/packages/@monomind/cli/dist/src/ruvector/moe-router.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/ruvector/moe-router.js +35 -12
- package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.d.ts +7 -1
- package/packages/@monomind/cli/dist/src/ruvector/q-learning-router.js +40 -9
- package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +3 -1
- package/packages/@monomind/cli/dist/src/services/claim-service.js +33 -2
- package/packages/@monomind/cli/dist/src/services/config-file-manager.d.ts +16 -2
- package/packages/@monomind/cli/dist/src/services/config-file-manager.js +105 -17
- package/packages/@monomind/cli/dist/src/services/container-worker-pool.js +51 -11
- package/packages/@monomind/cli/dist/src/services/headless-worker-executor.d.ts +7 -0
- package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +188 -45
- package/packages/@monomind/cli/dist/src/services/registry-api.js +62 -9
- package/packages/@monomind/cli/dist/src/services/ruvector-training.js +8 -0
- package/packages/@monomind/cli/dist/src/services/worker-daemon.d.ts +4 -1
- package/packages/@monomind/cli/dist/src/services/worker-daemon.js +112 -28
- package/packages/@monomind/cli/dist/src/services/worker-queue.d.ts +9 -2
- package/packages/@monomind/cli/dist/src/services/worker-queue.js +86 -5
- package/packages/@monomind/cli/dist/src/suggest.js +9 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.d.ts +5 -3
- package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.js +17 -5
- package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.d.ts +3 -0
- package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.js +30 -6
- package/packages/@monomind/cli/dist/src/transfer/anonymization/index.js +5 -3
- package/packages/@monomind/cli/dist/src/transfer/export.js +5 -3
- package/packages/@monomind/cli/dist/src/transfer/ipfs/client.js +84 -7
- package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.js +13 -4
- package/packages/@monomind/cli/dist/src/transfer/storage/gcs.js +19 -10
- package/packages/@monomind/cli/dist/src/transfer/store/discovery.d.ts +9 -2
- package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +68 -13
- package/packages/@monomind/cli/dist/src/transfer/store/download.d.ts +15 -6
- package/packages/@monomind/cli/dist/src/transfer/store/download.js +113 -24
- package/packages/@monomind/cli/dist/src/transfer/store/publish.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/transfer/store/publish.js +13 -14
- package/packages/@monomind/cli/dist/src/transfer/store/registry.d.ts +3 -3
- package/packages/@monomind/cli/dist/src/transfer/store/registry.js +32 -16
- package/packages/@monomind/cli/dist/src/update/checker.js +17 -4
- package/packages/@monomind/cli/dist/src/update/executor.js +25 -20
- package/packages/@monomind/cli/dist/src/update/rate-limiter.d.ts +11 -0
- package/packages/@monomind/cli/dist/src/update/rate-limiter.js +23 -3
- package/packages/@monomind/cli/dist/src/utils/parse-jsonl.d.ts +6 -0
- package/packages/@monomind/cli/dist/src/utils/parse-jsonl.js +22 -0
- package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.js +37 -3
- package/packages/@monomind/cli/dist/src/workflow/dag-builder.js +27 -11
- package/packages/@monomind/cli/dist/src/workflow/dag-executor.js +51 -13
- package/packages/@monomind/cli/dist/src/workflow/dsl-schema.d.ts +3 -0
- package/packages/@monomind/cli/dist/src/workflow/dsl-schema.js +6 -2
- package/packages/@monomind/cli/dist/src/workflow/template-engine.js +7 -0
- package/packages/@monomind/cli/dist/src/workflow/workflow-executor.js +95 -14
- package/packages/@monomind/cli/package.json +5 -3
- package/packages/@monomind/guidance/README.md +1192 -0
- package/packages/@monomind/shared/README.md +322 -0
- package/packages/@monomind/shared/dist/types/consensus-audit.d.ts +3 -1
- package/packages/README.md +513 -0
- package/.claude/agents/design/design-brand-guardian.md +0 -323
- package/.claude/agents/design/design-image-prompt-engineer.md +0 -237
- package/.claude/agents/design/design-inclusive-visuals-specialist.md +0 -72
- package/.claude/agents/design/design-ui-designer.md +0 -384
- package/.claude/agents/design/design-ux-architect.md +0 -470
- package/.claude/agents/design/design-ux-researcher.md +0 -330
- package/.claude/agents/design/design-visual-storyteller.md +0 -150
- package/.claude/agents/design/design-whimsy-injector.md +0 -439
- package/.claude/agents/v3/integration-architect.md +0 -338
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
- package/.claude/commands/coordination/init.md +0 -44
- package/.claude/commands/coordination/orchestrate.md +0 -43
- package/.claude/commands/coordination/spawn.md +0 -45
- package/.claude/commands/github/code-review-swarm.md +0 -550
- package/.claude/commands/github/code-review.md +0 -25
- package/.claude/commands/github/github-swarm.md +0 -121
- package/.claude/commands/github/issue-triage.md +0 -25
- package/.claude/commands/github/multi-repo-swarm.md +0 -519
- package/.claude/commands/github/pr-enhance.md +0 -26
- package/.claude/commands/github/project-board-sync.md +0 -471
- package/.claude/commands/github/release-swarm.md +0 -590
- package/.claude/commands/github/repo-analyze.md +0 -25
- package/.claude/commands/github/swarm-issue.md +0 -482
- package/.claude/commands/github/swarm-pr.md +0 -310
- package/.claude/commands/github/workflow-automation.md +0 -468
- package/.claude/commands/hive-mind/hive-mind-metrics.md +0 -8
- package/.claude/commands/hive-mind/hive-mind-resume.md +0 -8
- package/.claude/commands/hive-mind/hive-mind-sessions.md +0 -8
- package/.claude/commands/hive-mind/hive-mind-wizard.md +0 -8
- package/.claude/commands/list-agents.md +0 -17
- package/.claude/commands/memory/memory-persist.md +0 -25
- package/.claude/commands/memory/memory-usage.md +0 -25
- package/.claude/commands/memory/neural.md +0 -47
- package/.claude/commands/metrics.md +0 -11
- package/.claude/commands/monitoring/real-time-view.md +0 -25
- package/.claude/commands/monitoring/swarm-monitor.md +0 -25
- package/.claude/commands/monomind-createtask.md +0 -302
- package/.claude/commands/monomind-help.md +0 -103
- package/.claude/commands/monomind-memory.md +0 -107
- package/.claude/commands/monomind-repeat.md +0 -149
- package/.claude/commands/monomind-swarm.md +0 -205
- package/.claude/commands/optimization/cache-manage.md +0 -25
- package/.claude/commands/optimization/topology-optimize.md +0 -25
- package/.claude/commands/pair/commands.md +0 -546
- package/.claude/commands/pair/config.md +0 -510
- package/.claude/commands/pair/start.md +0 -209
- package/.claude/commands/use-agent.md +0 -67
- package/.claude/skills/monomind-createtask/SKILL.md +0 -269
- package/.claude/skills/monomind-task-engine/SKILL.md +0 -358
- /package/.claude/agents/{v3 → specialists}/memory-specialist.md +0 -0
- /package/.claude/agents/{v3 → specialists}/performance-engineer.md +0 -0
- /package/.claude/agents/{v3 → specialists}/queen-coordinator.md +0 -0
- /package/.claude/agents/{v3 → specialists}/security-architect.md +0 -0
|
@@ -16,7 +16,7 @@ import { output } from '../output.js';
|
|
|
16
16
|
// Dynamic imports for embeddings package
|
|
17
17
|
async function getEmbeddings() {
|
|
18
18
|
try {
|
|
19
|
-
return await import('@
|
|
19
|
+
return await import('@monomind/embeddings');
|
|
20
20
|
}
|
|
21
21
|
catch {
|
|
22
22
|
return null;
|
|
@@ -127,6 +127,21 @@ const searchCommand = {
|
|
|
127
127
|
const fs = await import('fs');
|
|
128
128
|
const path = await import('path');
|
|
129
129
|
const fullDbPath = path.resolve(process.cwd(), dbPath);
|
|
130
|
+
// Containment + sanity checks. Without these, --db-path /etc/shadow,
|
|
131
|
+
// /proc/self/environ, or /dev/zero would all be loaded into memory and
|
|
132
|
+
// handed to the sql.js parser — info disclosure / parser-CVE surface /
|
|
133
|
+
// OOM hang.
|
|
134
|
+
const projectRoot = path.resolve(process.cwd());
|
|
135
|
+
if (!fullDbPath.startsWith(projectRoot + path.sep) && fullDbPath !== projectRoot) {
|
|
136
|
+
spinner.fail('Invalid db-path');
|
|
137
|
+
output.printError(`db-path must resolve within the project directory: ${projectRoot}`);
|
|
138
|
+
return { success: false, exitCode: 1 };
|
|
139
|
+
}
|
|
140
|
+
if (!/\.(db|sqlite)$/i.test(fullDbPath)) {
|
|
141
|
+
spinner.fail('Invalid db-path');
|
|
142
|
+
output.printError('db-path must end in .db or .sqlite');
|
|
143
|
+
return { success: false, exitCode: 1 };
|
|
144
|
+
}
|
|
130
145
|
// Check if database exists
|
|
131
146
|
if (!fs.existsSync(fullDbPath)) {
|
|
132
147
|
spinner.fail('Database not found');
|
|
@@ -134,6 +149,12 @@ const searchCommand = {
|
|
|
134
149
|
output.printInfo('Run: monomind memory init');
|
|
135
150
|
return { success: false, exitCode: 1 };
|
|
136
151
|
}
|
|
152
|
+
const stat = fs.statSync(fullDbPath);
|
|
153
|
+
if (stat.size > 500 * 1024 * 1024) {
|
|
154
|
+
spinner.fail('Database too large');
|
|
155
|
+
output.printError(`Database exceeds 500MB cap: ${stat.size} bytes`);
|
|
156
|
+
return { success: false, exitCode: 1 };
|
|
157
|
+
}
|
|
137
158
|
// Load sql.js
|
|
138
159
|
const initSqlJs = (await import('sql.js')).default;
|
|
139
160
|
const SQL = await initSqlJs();
|
|
@@ -145,14 +166,13 @@ const searchCommand = {
|
|
|
145
166
|
const queryResult = await generateEmbedding(query);
|
|
146
167
|
const queryEmbedding = queryResult.embedding;
|
|
147
168
|
// Get all entries with embeddings from database
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
`);
|
|
169
|
+
let entries;
|
|
170
|
+
if (namespace !== 'all') {
|
|
171
|
+
entries = db.exec('SELECT id, key, namespace, content, embedding, embedding_dimensions FROM memory_entries WHERE status = \'active\' AND embedding IS NOT NULL AND namespace = ? LIMIT 1000', [namespace]);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
entries = db.exec('SELECT id, key, namespace, content, embedding, embedding_dimensions FROM memory_entries WHERE status = \'active\' AND embedding IS NOT NULL LIMIT 1000');
|
|
175
|
+
}
|
|
156
176
|
const results = [];
|
|
157
177
|
if (entries[0]?.values) {
|
|
158
178
|
for (const row of entries[0].values) {
|
|
@@ -160,7 +180,11 @@ const searchCommand = {
|
|
|
160
180
|
if (!embeddingJson)
|
|
161
181
|
continue;
|
|
162
182
|
try {
|
|
163
|
-
const
|
|
183
|
+
const parsed = JSON.parse(embeddingJson);
|
|
184
|
+
if (!Array.isArray(parsed) || parsed.some((v) => typeof v !== 'number')) {
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const embedding = parsed;
|
|
164
188
|
// Calculate cosine similarity
|
|
165
189
|
const similarity = cosineSimilarity(queryEmbedding, embedding);
|
|
166
190
|
if (similarity >= threshold) {
|
|
@@ -180,27 +204,26 @@ const searchCommand = {
|
|
|
180
204
|
}
|
|
181
205
|
// Also search entries without embeddings using keyword match
|
|
182
206
|
if (results.length < limit) {
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}
|
|
207
|
+
const remaining = limit - results.length;
|
|
208
|
+
let keywordResult;
|
|
209
|
+
if (namespace !== 'all') {
|
|
210
|
+
keywordResult = db.exec("SELECT id, key, namespace, content FROM memory_entries WHERE status = 'active' AND (content LIKE ? OR key LIKE ?) AND namespace = ? LIMIT ?", [`%${query}%`, `%${query}%`, namespace, remaining]);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
keywordResult = db.exec("SELECT id, key, namespace, content FROM memory_entries WHERE status = 'active' AND (content LIKE ? OR key LIKE ?) LIMIT ?", [`%${query}%`, `%${query}%`, remaining]);
|
|
214
|
+
}
|
|
215
|
+
const keywordRows = keywordResult[0]?.values ?? [];
|
|
216
|
+
for (const row of keywordRows) {
|
|
217
|
+
const [id, key, ns, content] = row;
|
|
218
|
+
// Avoid duplicates (keyword fallback is unconditional — threshold applies to semantic results)
|
|
219
|
+
if (!results.some(r => r.id === id.substring(0, 10))) {
|
|
220
|
+
results.push({
|
|
221
|
+
score: 0.5,
|
|
222
|
+
id: id.substring(0, 10),
|
|
223
|
+
key: key || id.substring(0, 15),
|
|
224
|
+
content: (content || '').substring(0, 45) + ((content || '').length > 45 ? '...' : ''),
|
|
225
|
+
namespace: ns || 'default'
|
|
226
|
+
});
|
|
204
227
|
}
|
|
205
228
|
}
|
|
206
229
|
}
|
|
@@ -247,7 +270,9 @@ const searchCommand = {
|
|
|
247
270
|
* V8 JIT-friendly - ~0.5μs per 384-dim vector comparison
|
|
248
271
|
*/
|
|
249
272
|
function cosineSimilarity(a, b) {
|
|
250
|
-
|
|
273
|
+
if (a.length !== b.length)
|
|
274
|
+
return 0;
|
|
275
|
+
const len = a.length;
|
|
251
276
|
if (len === 0)
|
|
252
277
|
return 0;
|
|
253
278
|
let dot = 0, normA = 0, normB = 0;
|
|
@@ -369,6 +394,16 @@ const collectionsCommand = {
|
|
|
369
394
|
const fs = await import('fs');
|
|
370
395
|
const path = await import('path');
|
|
371
396
|
const fullDbPath = path.resolve(process.cwd(), dbPath);
|
|
397
|
+
// Containment check (mirrors the search handler above).
|
|
398
|
+
const projectRoot = path.resolve(process.cwd());
|
|
399
|
+
if (!fullDbPath.startsWith(projectRoot + path.sep) && fullDbPath !== projectRoot) {
|
|
400
|
+
output.printError(`db-path must resolve within the project directory: ${projectRoot}`);
|
|
401
|
+
return { success: false, exitCode: 1 };
|
|
402
|
+
}
|
|
403
|
+
if (!/\.(db|sqlite)$/i.test(fullDbPath)) {
|
|
404
|
+
output.printError('db-path must end in .db or .sqlite');
|
|
405
|
+
return { success: false, exitCode: 1 };
|
|
406
|
+
}
|
|
372
407
|
// Check if database exists
|
|
373
408
|
if (!fs.existsSync(fullDbPath)) {
|
|
374
409
|
output.printWarning('No database found');
|
|
@@ -377,6 +412,11 @@ const collectionsCommand = {
|
|
|
377
412
|
output.writeln(output.dim('No collections yet - initialize memory first'));
|
|
378
413
|
return { success: true, data: [] };
|
|
379
414
|
}
|
|
415
|
+
const stat2 = fs.statSync(fullDbPath);
|
|
416
|
+
if (stat2.size > 500 * 1024 * 1024) {
|
|
417
|
+
output.printError(`Database exceeds 500MB cap: ${stat2.size} bytes`);
|
|
418
|
+
return { success: false, exitCode: 1 };
|
|
419
|
+
}
|
|
380
420
|
// Load sql.js and query real data
|
|
381
421
|
const initSqlJs = (await import('sql.js')).default;
|
|
382
422
|
const SQL = await initSqlJs();
|
|
@@ -616,6 +656,14 @@ const initCommand = {
|
|
|
616
656
|
output.writeln(output.dim('Use --force to overwrite existing configuration'));
|
|
617
657
|
return { success: false, exitCode: 1 };
|
|
618
658
|
}
|
|
659
|
+
// Validate model id against HuggingFace-style shape before any path-derived
|
|
660
|
+
// operation. Without this, `--model "Xenova/../../etc/foo"` could collapse
|
|
661
|
+
// into a path-traversal sink inside the embeddings package's downloader.
|
|
662
|
+
const MODEL_ID_RE = /^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$/;
|
|
663
|
+
if (!MODEL_ID_RE.test(model)) {
|
|
664
|
+
output.printError(`Invalid model id: must match ${MODEL_ID_RE} (HuggingFace org/name)`);
|
|
665
|
+
return { success: false, exitCode: 1 };
|
|
666
|
+
}
|
|
619
667
|
const spinner = output.createSpinner({ text: 'Initializing...', spinner: 'dots' });
|
|
620
668
|
spinner.start();
|
|
621
669
|
if (!fs.existsSync(configDir)) {
|
|
@@ -636,7 +684,7 @@ const initCommand = {
|
|
|
636
684
|
else {
|
|
637
685
|
// Embeddings package not available — skip download
|
|
638
686
|
await new Promise(r => setTimeout(r, 500));
|
|
639
|
-
output.writeln(output.dim(' (Skipped — @
|
|
687
|
+
output.writeln(output.dim(' (Skipped — @monomind/embeddings not installed)'));
|
|
640
688
|
}
|
|
641
689
|
}
|
|
642
690
|
// Write embeddings config
|
|
@@ -660,7 +708,14 @@ const initCommand = {
|
|
|
660
708
|
},
|
|
661
709
|
initialized: new Date().toISOString(),
|
|
662
710
|
};
|
|
663
|
-
|
|
711
|
+
// Atomic write with restrictive mode — embeddings.json content is not
|
|
712
|
+
// secret today but the helper pattern guards against partial writes from
|
|
713
|
+
// SIGINT during init.
|
|
714
|
+
{
|
|
715
|
+
const tmp = `${configPath}.${process.pid}.tmp`;
|
|
716
|
+
fs.writeFileSync(tmp, JSON.stringify(config, null, 2), { mode: 0o644 });
|
|
717
|
+
fs.renameSync(tmp, configPath);
|
|
718
|
+
}
|
|
664
719
|
spinner.succeed('Embedding subsystem initialized');
|
|
665
720
|
output.writeln();
|
|
666
721
|
output.printTable({
|
|
@@ -762,7 +817,7 @@ const chunkCommand = {
|
|
|
762
817
|
output.writeln(output.bold('Document Chunking'));
|
|
763
818
|
output.writeln(output.dim('─'.repeat(50)));
|
|
764
819
|
if (!embeddings) {
|
|
765
|
-
output.printWarning('@
|
|
820
|
+
output.printWarning('@monomind/embeddings not installed, showing preview');
|
|
766
821
|
output.writeln();
|
|
767
822
|
output.printBox([
|
|
768
823
|
`Strategy: ${strategy}`,
|
|
@@ -855,10 +910,10 @@ const hyperbolicCommand = {
|
|
|
855
910
|
output.writeln(output.dim('─'.repeat(50)));
|
|
856
911
|
// Try to import hyperbolic functions from embeddings package
|
|
857
912
|
try {
|
|
858
|
-
const hyperbolic = await import('@
|
|
913
|
+
const hyperbolic = await import('@monomind/embeddings').then(m => m).catch(() => null);
|
|
859
914
|
if (!hyperbolic || !hyperbolic.euclideanToPoincare) {
|
|
860
|
-
output.printWarning('@
|
|
861
|
-
output.printInfo('Install with: npm install @
|
|
915
|
+
output.printWarning('@monomind/embeddings hyperbolic module not available');
|
|
916
|
+
output.printInfo('Install with: npm install @monomind/embeddings');
|
|
862
917
|
return { success: false, exitCode: 1 };
|
|
863
918
|
}
|
|
864
919
|
if (!inputJson) {
|
|
@@ -1005,7 +1060,14 @@ const neuralCommand = {
|
|
|
1005
1060
|
},
|
|
1006
1061
|
initializedAt: new Date().toISOString(),
|
|
1007
1062
|
};
|
|
1008
|
-
|
|
1063
|
+
// Atomic write with restrictive mode — embeddings.json content is not
|
|
1064
|
+
// secret today but the helper pattern guards against partial writes from
|
|
1065
|
+
// SIGINT during init.
|
|
1066
|
+
{
|
|
1067
|
+
const tmp = `${configPath}.${process.pid}.tmp`;
|
|
1068
|
+
fs.writeFileSync(tmp, JSON.stringify(config, null, 2), { mode: 0o644 });
|
|
1069
|
+
fs.renameSync(tmp, configPath);
|
|
1070
|
+
}
|
|
1009
1071
|
output.printSuccess('Neural substrate initialized');
|
|
1010
1072
|
output.writeln();
|
|
1011
1073
|
}
|
|
@@ -1123,7 +1185,7 @@ const modelsCommand = {
|
|
|
1123
1185
|
}
|
|
1124
1186
|
else {
|
|
1125
1187
|
await new Promise(r => setTimeout(r, 500));
|
|
1126
|
-
spinner.succeed(`Download skipped — @
|
|
1188
|
+
spinner.succeed(`Download skipped — @monomind/embeddings not installed`);
|
|
1127
1189
|
}
|
|
1128
1190
|
return { success: true };
|
|
1129
1191
|
}
|
|
@@ -1180,6 +1242,15 @@ const cacheCommand = {
|
|
|
1180
1242
|
const path = await import('path');
|
|
1181
1243
|
// Get real cache stats
|
|
1182
1244
|
const resolvedDbPath = path.resolve(dbPath);
|
|
1245
|
+
const projectRoot = path.resolve(process.cwd());
|
|
1246
|
+
if (!resolvedDbPath.startsWith(projectRoot + path.sep) && resolvedDbPath !== projectRoot) {
|
|
1247
|
+
output.printError(`db-path must resolve within the project directory: ${projectRoot}`);
|
|
1248
|
+
return { success: false, exitCode: 1 };
|
|
1249
|
+
}
|
|
1250
|
+
if (!/\.(db|sqlite)$/i.test(resolvedDbPath)) {
|
|
1251
|
+
output.printError('db-path must end in .db or .sqlite');
|
|
1252
|
+
return { success: false, exitCode: 1 };
|
|
1253
|
+
}
|
|
1183
1254
|
let sqliteEntries = 0;
|
|
1184
1255
|
let sqliteSize = '0 B';
|
|
1185
1256
|
let sqliteExists = false;
|
|
@@ -1200,15 +1271,20 @@ const cacheCommand = {
|
|
|
1200
1271
|
}
|
|
1201
1272
|
// Try to count real entries via sql.js
|
|
1202
1273
|
try {
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1274
|
+
if (stats.size > 500 * 1024 * 1024) {
|
|
1275
|
+
sqliteEntries = Math.floor(stats.size / 1600);
|
|
1276
|
+
}
|
|
1277
|
+
else {
|
|
1278
|
+
const initSqlJs = (await import('sql.js')).default;
|
|
1279
|
+
const SQL = await initSqlJs();
|
|
1280
|
+
const fileBuffer = fs.readFileSync(resolvedDbPath);
|
|
1281
|
+
const db = new SQL.Database(fileBuffer);
|
|
1282
|
+
const result = db.exec('SELECT COUNT(*) as count FROM embeddings');
|
|
1283
|
+
if (result.length > 0 && result[0].values.length > 0) {
|
|
1284
|
+
sqliteEntries = result[0].values[0][0];
|
|
1285
|
+
}
|
|
1286
|
+
db.close();
|
|
1210
1287
|
}
|
|
1211
|
-
db.close();
|
|
1212
1288
|
}
|
|
1213
1289
|
catch {
|
|
1214
1290
|
// Estimate entries from file size (~1600 bytes per entry for 384-dim embeddings)
|
|
@@ -180,7 +180,8 @@ async function spawnClaudeCodeInstance(swarmId, swarmName, objective, workers, f
|
|
|
180
180
|
// Ensure sessions directory exists
|
|
181
181
|
const sessionsDir = join('.hive-mind', 'sessions');
|
|
182
182
|
await mkdir(sessionsDir, { recursive: true });
|
|
183
|
-
const
|
|
183
|
+
const safeSwarmId = swarmId.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
184
|
+
const promptFile = join(sessionsDir, `hive-mind-prompt-${safeSwarmId}.txt`);
|
|
184
185
|
await writeFile(promptFile, hiveMindPrompt, 'utf8');
|
|
185
186
|
output.writeln();
|
|
186
187
|
output.printSuccess(`Hive Mind prompt saved to: ${promptFile}`);
|
|
@@ -208,15 +209,14 @@ async function spawnClaudeCodeInstance(swarmId, swarmName, objective, workers, f
|
|
|
208
209
|
claudeArgs.push('--verbose');
|
|
209
210
|
output.printInfo('Running in non-interactive mode');
|
|
210
211
|
}
|
|
211
|
-
// Add auto-permission flag
|
|
212
|
-
const skipPermissions = flags['dangerously-skip-permissions']
|
|
212
|
+
// Add auto-permission flag only when explicitly requested
|
|
213
|
+
const skipPermissions = flags['dangerously-skip-permissions'] === true && !flags['no-auto-permissions'];
|
|
213
214
|
if (skipPermissions) {
|
|
214
215
|
claudeArgs.push('--dangerously-skip-permissions');
|
|
215
|
-
|
|
216
|
-
output.printWarning('Using --dangerously-skip-permissions for seamless hive-mind execution');
|
|
217
|
-
}
|
|
216
|
+
output.writeln(output.warning('WARNING: Running with --dangerously-skip-permissions: all file and shell operations will execute without prompts.'));
|
|
218
217
|
}
|
|
219
|
-
//
|
|
218
|
+
// '--' ends option parsing so the prompt cannot be interpreted as a flag
|
|
219
|
+
claudeArgs.push('--');
|
|
220
220
|
claudeArgs.push(hiveMindPrompt);
|
|
221
221
|
output.writeln();
|
|
222
222
|
output.printInfo('Launching Claude Code...');
|
|
@@ -297,7 +297,8 @@ async function spawnClaudeCodeInstance(swarmId, swarmName, objective, workers, f
|
|
|
297
297
|
output.printError(`Error: ${errorMessage}`);
|
|
298
298
|
// Try to save prompt as fallback
|
|
299
299
|
try {
|
|
300
|
-
const
|
|
300
|
+
const safeSwarmIdFallback = swarmId.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
301
|
+
const promptFile = `hive-mind-prompt-${safeSwarmIdFallback}-fallback.txt`;
|
|
301
302
|
const workerGroups = groupWorkersByType(workers);
|
|
302
303
|
const hiveMindPrompt = generateHiveMindPrompt(swarmId, swarmName, objective, workers, workerGroups, flags);
|
|
303
304
|
await writeFile(promptFile, hiveMindPrompt, 'utf8');
|
|
@@ -377,9 +378,9 @@ const initCommand = {
|
|
|
377
378
|
const config = {
|
|
378
379
|
topology: topology || 'hierarchical-mesh',
|
|
379
380
|
consensus: consensus || 'byzantine',
|
|
380
|
-
maxAgents: ctx.flags
|
|
381
|
+
maxAgents: ctx.flags['max-agents'] || 15,
|
|
381
382
|
persist: ctx.flags.persist,
|
|
382
|
-
memoryBackend: ctx.flags
|
|
383
|
+
memoryBackend: ctx.flags['memory-backend'] || 'hybrid'
|
|
383
384
|
};
|
|
384
385
|
output.writeln();
|
|
385
386
|
output.writeln(output.bold('Initializing Hive Mind'));
|
|
@@ -471,7 +472,7 @@ const spawnCommand = {
|
|
|
471
472
|
name: 'dangerously-skip-permissions',
|
|
472
473
|
description: 'Skip permission prompts in Claude Code (use with caution)',
|
|
473
474
|
type: 'boolean',
|
|
474
|
-
default:
|
|
475
|
+
default: false
|
|
475
476
|
},
|
|
476
477
|
{
|
|
477
478
|
name: 'no-auto-permissions',
|
|
@@ -772,7 +773,7 @@ const taskCommand = {
|
|
|
772
773
|
return { success: false, exitCode: 1 };
|
|
773
774
|
}
|
|
774
775
|
const priority = ctx.flags.priority;
|
|
775
|
-
const requireConsensus = ctx.flags
|
|
776
|
+
const requireConsensus = ctx.flags['require-consensus'];
|
|
776
777
|
const timeout = ctx.flags.timeout;
|
|
777
778
|
output.printInfo('Submitting task to hive...');
|
|
778
779
|
try {
|
|
@@ -948,7 +949,7 @@ const consensusCommand = {
|
|
|
948
949
|
action: async (ctx) => {
|
|
949
950
|
const action = ctx.flags.action || 'list';
|
|
950
951
|
try {
|
|
951
|
-
const result = await callMCPTool('hive-mind_consensus', { action, proposalId: ctx.flags
|
|
952
|
+
const result = await callMCPTool('hive-mind_consensus', { action, proposalId: ctx.flags['proposal-id'], type: ctx.flags.type, value: ctx.flags.value, vote: ctx.flags.vote === 'yes', voterId: ctx.flags['voter-id'] });
|
|
952
953
|
if (ctx.flags.format === 'json') {
|
|
953
954
|
output.printJson(result);
|
|
954
955
|
return { success: true, data: result };
|
|
@@ -1080,7 +1081,7 @@ const shutdownCommand = {
|
|
|
1080
1081
|
],
|
|
1081
1082
|
action: async (ctx) => {
|
|
1082
1083
|
const force = ctx.flags.force;
|
|
1083
|
-
const saveState = ctx.flags
|
|
1084
|
+
const saveState = ctx.flags['save-state'];
|
|
1084
1085
|
if (!force && ctx.interactive) {
|
|
1085
1086
|
const confirmed = await confirm({
|
|
1086
1087
|
message: 'Shutdown the hive mind? All agents will be terminated.',
|
|
@@ -73,7 +73,7 @@ function parseCoverageSummaryJson(data, source) {
|
|
|
73
73
|
const m = metrics;
|
|
74
74
|
if (!m || typeof m !== 'object')
|
|
75
75
|
continue;
|
|
76
|
-
const linePct = m.lines?.pct ?? m.lines?.covered != null ? ((m.lines?.covered ?? 0) / Math.max(m.lines?.total ?? 1, 1)) * 100 : 0;
|
|
76
|
+
const linePct = m.lines?.pct ?? (m.lines?.covered != null ? ((m.lines?.covered ?? 0) / Math.max(m.lines?.total ?? 1, 1)) * 100 : 0);
|
|
77
77
|
const branchPct = m.branches?.pct ?? (m.branches?.total ? ((m.branches?.covered ?? 0) / m.branches.total) * 100 : 100);
|
|
78
78
|
const funcPct = m.functions?.pct ?? (m.functions?.total ? ((m.functions?.covered ?? 0) / m.functions.total) * 100 : 100);
|
|
79
79
|
const stmtPct = m.statements?.pct ?? (m.statements?.total ? ((m.statements?.covered ?? 0) / m.statements.total) * 100 : 100);
|
|
@@ -114,6 +114,10 @@ function parseLcovInfo(raw, source) {
|
|
|
114
114
|
let linesHit = 0, linesFound = 0;
|
|
115
115
|
let branchesHit = 0, branchesFound = 0;
|
|
116
116
|
let functionsHit = 0, functionsFound = 0;
|
|
117
|
+
let totalLines = 0, coveredLines = 0;
|
|
118
|
+
let totalBranches = 0, coveredBranches = 0;
|
|
119
|
+
let totalFunctions = 0, coveredFunctions = 0;
|
|
120
|
+
let totalStatements = 0, coveredStatements = 0;
|
|
117
121
|
const flushRecord = () => {
|
|
118
122
|
if (currentFile) {
|
|
119
123
|
entries.push({
|
|
@@ -123,6 +127,14 @@ function parseLcovInfo(raw, source) {
|
|
|
123
127
|
functions: functionsFound > 0 ? (functionsHit / functionsFound) * 100 : 100,
|
|
124
128
|
statements: linesFound > 0 ? (linesHit / linesFound) * 100 : 0,
|
|
125
129
|
});
|
|
130
|
+
totalLines += linesFound;
|
|
131
|
+
coveredLines += linesHit;
|
|
132
|
+
totalBranches += branchesFound;
|
|
133
|
+
coveredBranches += branchesHit;
|
|
134
|
+
totalFunctions += functionsFound;
|
|
135
|
+
coveredFunctions += functionsHit;
|
|
136
|
+
totalStatements += linesFound;
|
|
137
|
+
coveredStatements += linesHit;
|
|
126
138
|
}
|
|
127
139
|
};
|
|
128
140
|
for (const line of raw.split('\n')) {
|
|
@@ -161,25 +173,16 @@ function parseLcovInfo(raw, source) {
|
|
|
161
173
|
}
|
|
162
174
|
flushRecord();
|
|
163
175
|
entries.sort((a, b) => a.lines - b.lines);
|
|
164
|
-
let totalLH = 0, totalLF = 0, totalBH = 0, totalBF = 0;
|
|
165
|
-
for (const e of entries) {
|
|
166
|
-
// Approximate from percentages (we lost exact counts after flush, but summaries are okay)
|
|
167
|
-
totalLH += e.lines;
|
|
168
|
-
totalLF += 100;
|
|
169
|
-
totalBH += e.branches;
|
|
170
|
-
totalBF += 100;
|
|
171
|
-
}
|
|
172
|
-
const n = entries.length || 1;
|
|
173
176
|
return {
|
|
174
177
|
found: true,
|
|
175
178
|
source,
|
|
176
179
|
entries,
|
|
177
180
|
summary: {
|
|
178
181
|
totalFiles: entries.length,
|
|
179
|
-
overallLineCoverage:
|
|
180
|
-
overallBranchCoverage:
|
|
181
|
-
overallFunctionCoverage: 0,
|
|
182
|
-
overallStatementCoverage:
|
|
182
|
+
overallLineCoverage: totalLines > 0 ? (coveredLines / totalLines) * 100 : 0,
|
|
183
|
+
overallBranchCoverage: totalBranches > 0 ? (coveredBranches / totalBranches) * 100 : 100,
|
|
184
|
+
overallFunctionCoverage: totalFunctions > 0 ? (coveredFunctions / totalFunctions) * 100 : 0,
|
|
185
|
+
overallStatementCoverage: totalStatements > 0 ? (coveredStatements / totalStatements) * 100 : 0,
|
|
183
186
|
},
|
|
184
187
|
};
|
|
185
188
|
}
|
|
@@ -570,7 +573,7 @@ const postCommandCommand = {
|
|
|
570
573
|
const result = await callMCPTool('hooks_post-command', {
|
|
571
574
|
command,
|
|
572
575
|
success,
|
|
573
|
-
exitCode: ctx.flags
|
|
576
|
+
exitCode: ctx.flags['exit-code'] || 0,
|
|
574
577
|
duration: ctx.flags.duration,
|
|
575
578
|
timestamp: Date.now(),
|
|
576
579
|
});
|
|
@@ -630,7 +633,7 @@ const routeCommand = {
|
|
|
630
633
|
],
|
|
631
634
|
action: async (ctx) => {
|
|
632
635
|
const task = ctx.args[0] || ctx.flags.task;
|
|
633
|
-
const topK = ctx.flags
|
|
636
|
+
const topK = ctx.flags['top-k'] || 3;
|
|
634
637
|
if (!task) {
|
|
635
638
|
output.printError('Task description is required. Use --task or -t flag.');
|
|
636
639
|
return { success: false, exitCode: 1 };
|
|
@@ -892,7 +895,7 @@ const pretrainCommand = {
|
|
|
892
895
|
const result = await callMCPTool('hooks_pretrain', {
|
|
893
896
|
path: repoPath,
|
|
894
897
|
depth,
|
|
895
|
-
skipCache: ctx.flags
|
|
898
|
+
skipCache: ctx.flags['skip-cache'] || false,
|
|
896
899
|
withEmbeddings,
|
|
897
900
|
embeddingModel,
|
|
898
901
|
fileTypes: fileTypes.split(',').map((t) => t.trim()),
|
|
@@ -1179,7 +1182,7 @@ const transferFromProjectCommand = {
|
|
|
1179
1182
|
],
|
|
1180
1183
|
action: async (ctx) => {
|
|
1181
1184
|
const sourcePath = ctx.args[0] || ctx.flags.source;
|
|
1182
|
-
const minConfidence = ctx.flags
|
|
1185
|
+
const minConfidence = ctx.flags['min-confidence'] || 0.7;
|
|
1183
1186
|
if (!sourcePath) {
|
|
1184
1187
|
output.printError('Source project path is required. Use --source or -s flag.');
|
|
1185
1188
|
return { success: false, exitCode: 1 };
|
|
@@ -1375,7 +1378,7 @@ const preTaskCommand = {
|
|
|
1375
1378
|
{ command: 'monomind hooks pre-task -i task-456 -d "Implement feature" --auto-spawn', description: 'With auto-spawn' }
|
|
1376
1379
|
],
|
|
1377
1380
|
action: async (ctx) => {
|
|
1378
|
-
const taskId = ctx.flags
|
|
1381
|
+
const taskId = ctx.flags['task-id'] || `task-${Date.now().toString(36)}`;
|
|
1379
1382
|
const description = ctx.args[0] || ctx.flags.description;
|
|
1380
1383
|
if (!description) {
|
|
1381
1384
|
output.printError('Description is required: --description "your task"');
|
|
@@ -1386,7 +1389,7 @@ const preTaskCommand = {
|
|
|
1386
1389
|
const result = await callMCPTool('hooks_pre-task', {
|
|
1387
1390
|
taskId,
|
|
1388
1391
|
description,
|
|
1389
|
-
autoSpawn: ctx.flags
|
|
1392
|
+
autoSpawn: ctx.flags['auto-spawn'] || false,
|
|
1390
1393
|
timestamp: Date.now(),
|
|
1391
1394
|
});
|
|
1392
1395
|
if (ctx.flags.format === 'json') {
|
|
@@ -1520,7 +1523,7 @@ const postTaskCommand = {
|
|
|
1520
1523
|
],
|
|
1521
1524
|
action: async (ctx) => {
|
|
1522
1525
|
// Auto-generate task ID if not provided
|
|
1523
|
-
const taskId = ctx.flags
|
|
1526
|
+
const taskId = ctx.flags['task-id'] || `task_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
|
|
1524
1527
|
// Default success to true for backward compatibility
|
|
1525
1528
|
const success = ctx.flags.success !== undefined ? ctx.flags.success : true;
|
|
1526
1529
|
output.printInfo(`Recording outcome for task: ${output.highlight(taskId)}`);
|
|
@@ -1586,7 +1589,7 @@ const sessionEndCommand = {
|
|
|
1586
1589
|
output.printInfo('Ending session...');
|
|
1587
1590
|
try {
|
|
1588
1591
|
const result = await callMCPTool('hooks_session-end', {
|
|
1589
|
-
saveState: ctx.flags
|
|
1592
|
+
saveState: ctx.flags['save-state'] ?? true,
|
|
1590
1593
|
timestamp: Date.now(),
|
|
1591
1594
|
});
|
|
1592
1595
|
if (ctx.flags.format === 'json') {
|
|
@@ -1661,13 +1664,13 @@ const sessionRestoreCommand = {
|
|
|
1661
1664
|
{ command: 'monomind hooks session-restore -i session-12345', description: 'Restore specific session' }
|
|
1662
1665
|
],
|
|
1663
1666
|
action: async (ctx) => {
|
|
1664
|
-
const sessionId = ctx.args[0] || ctx.flags
|
|
1667
|
+
const sessionId = ctx.args[0] || ctx.flags['session-id'] || 'latest';
|
|
1665
1668
|
output.printInfo(`Restoring session: ${output.highlight(sessionId)}`);
|
|
1666
1669
|
try {
|
|
1667
1670
|
const result = await callMCPTool('hooks_session-restore', {
|
|
1668
1671
|
sessionId,
|
|
1669
|
-
restoreAgents: ctx.flags
|
|
1670
|
-
restoreTasks: ctx.flags
|
|
1672
|
+
restoreAgents: ctx.flags['restore-agents'] ?? true,
|
|
1673
|
+
restoreTasks: ctx.flags['restore-tasks'] ?? true,
|
|
1671
1674
|
timestamp: Date.now(),
|
|
1672
1675
|
});
|
|
1673
1676
|
if (ctx.flags.format === 'json') {
|
|
@@ -1778,10 +1781,10 @@ const intelligenceCommand = {
|
|
|
1778
1781
|
const showStatus = ctx.flags.status;
|
|
1779
1782
|
const forceTraining = ctx.flags.train;
|
|
1780
1783
|
const reset = ctx.flags.reset;
|
|
1781
|
-
const enableSona = ctx.flags
|
|
1782
|
-
const enableMoe = ctx.flags
|
|
1783
|
-
const enableHnsw = ctx.flags
|
|
1784
|
-
const embeddingProvider = ctx.flags
|
|
1784
|
+
const enableSona = ctx.flags['enable-sona'] ?? true;
|
|
1785
|
+
const enableMoe = ctx.flags['enable-moe'] ?? true;
|
|
1786
|
+
const enableHnsw = ctx.flags['enable-hnsw'] ?? true;
|
|
1787
|
+
const embeddingProvider = ctx.flags['embedding-provider'] || 'transformers';
|
|
1785
1788
|
output.writeln();
|
|
1786
1789
|
output.writeln(output.bold('RuVector Intelligence System'));
|
|
1787
1790
|
output.writeln();
|
|
@@ -1926,9 +1929,9 @@ const intelligenceCommand = {
|
|
|
1926
1929
|
},
|
|
1927
1930
|
};
|
|
1928
1931
|
if (forceTraining) {
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
+
output.printWarning('Training cycle is not yet wired to the intelligence system. No patterns were updated.');
|
|
1933
|
+
spinner.fail('Training not implemented');
|
|
1934
|
+
return { success: false, message: 'Training not implemented', exitCode: 1 };
|
|
1932
1935
|
}
|
|
1933
1936
|
else {
|
|
1934
1937
|
spinner.succeed(hasLocalData ? 'Intelligence system active (local data loaded)' : 'Intelligence system active');
|
|
@@ -3368,7 +3371,8 @@ const statuslineCommand = {
|
|
|
3368
3371
|
? 'tasklist /FI "IMAGENAME eq node.exe" 2>NUL | findstr /I /C:"node" >NUL && echo 1 || echo 0'
|
|
3369
3372
|
: 'ps aux 2>/dev/null | grep -c agentic-flow || echo "0"';
|
|
3370
3373
|
const ps = execSync(psCmd, { encoding: 'utf-8' });
|
|
3371
|
-
|
|
3374
|
+
const raw = parseInt(ps.trim());
|
|
3375
|
+
activeAgents = Math.max(0, isWindows ? raw : raw - 1);
|
|
3372
3376
|
coordinationActive = activeAgents > 0;
|
|
3373
3377
|
}
|
|
3374
3378
|
catch {
|
|
@@ -4129,10 +4133,10 @@ const teammateIdleCommand = {
|
|
|
4129
4133
|
{ command: 'monomind hooks teammate-idle -t worker-1 --check-task-list', description: 'Check tasks for specific teammate' }
|
|
4130
4134
|
],
|
|
4131
4135
|
action: async (ctx) => {
|
|
4132
|
-
const autoAssign = ctx.flags
|
|
4133
|
-
const checkTaskList = ctx.flags
|
|
4134
|
-
const teammateId = ctx.flags
|
|
4135
|
-
const teamName = ctx.flags
|
|
4136
|
+
const autoAssign = ctx.flags['auto-assign'] !== false;
|
|
4137
|
+
const checkTaskList = ctx.flags['check-task-list'] !== false;
|
|
4138
|
+
const teammateId = ctx.flags['teammate-id'];
|
|
4139
|
+
const teamName = ctx.flags['team-name'];
|
|
4136
4140
|
if (ctx.flags.format !== 'json') {
|
|
4137
4141
|
output.printInfo(`Teammate idle hook triggered${teammateId ? ` for: ${output.highlight(teammateId)}` : ''}`);
|
|
4138
4142
|
}
|
|
@@ -4228,12 +4232,12 @@ const taskCompletedCommand = {
|
|
|
4228
4232
|
{ command: 'monomind hooks task-completed -i task-456 --notify-lead --quality 0.95', description: 'Complete with quality score' }
|
|
4229
4233
|
],
|
|
4230
4234
|
action: async (ctx) => {
|
|
4231
|
-
const taskId = ctx.args[0] || ctx.flags
|
|
4232
|
-
const trainPatterns = ctx.flags
|
|
4233
|
-
const notifyLead = ctx.flags
|
|
4235
|
+
const taskId = ctx.args[0] || ctx.flags['task-id'];
|
|
4236
|
+
const trainPatterns = ctx.flags['train-patterns'] !== false;
|
|
4237
|
+
const notifyLead = ctx.flags['notify-lead'] !== false;
|
|
4234
4238
|
const success = ctx.flags.success !== false;
|
|
4235
4239
|
const quality = ctx.flags.quality;
|
|
4236
|
-
const teammateId = ctx.flags
|
|
4240
|
+
const teammateId = ctx.flags['teammate-id'];
|
|
4237
4241
|
if (!taskId) {
|
|
4238
4242
|
output.printError('Task ID is required. Use --task-id or -i flag.');
|
|
4239
4243
|
return { success: false, exitCode: 1 };
|
|
@@ -31,6 +31,7 @@ export { guidanceCommand } from './guidance.js';
|
|
|
31
31
|
export { applianceCommand } from './appliance.js';
|
|
32
32
|
export { cleanupCommand } from './cleanup.js';
|
|
33
33
|
export { autopilotCommand } from './autopilot.js';
|
|
34
|
+
export { monographCommand } from './monograph.js';
|
|
34
35
|
export declare function getConfigCommand(): Promise<Command | undefined>;
|
|
35
36
|
export declare function getMigrateCommand(): Promise<Command | undefined>;
|
|
36
37
|
export declare function getWorkflowCommand(): Promise<Command | undefined>;
|
|
@@ -56,6 +57,7 @@ export declare function getGuidanceCommand(): Promise<Command | undefined>;
|
|
|
56
57
|
export declare function getApplianceCommand(): Promise<Command | undefined>;
|
|
57
58
|
export declare function getCleanupCommand(): Promise<Command | undefined>;
|
|
58
59
|
export declare function getAutopilotCommand(): Promise<Command | undefined>;
|
|
60
|
+
export declare function getMonographCommand(): Promise<Command | undefined>;
|
|
59
61
|
/**
|
|
60
62
|
* Core commands loaded synchronously (available immediately)
|
|
61
63
|
* Advanced commands loaded on-demand for faster startup
|