monomind 1.8.0 → 1.9.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/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 +153 -70
- 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
|
@@ -10,6 +10,26 @@ import { dirname } from 'path';
|
|
|
10
10
|
// ESM-compatible __dirname
|
|
11
11
|
const __filename = fileURLToPath(import.meta.url);
|
|
12
12
|
const __dirname = dirname(__filename);
|
|
13
|
+
/**
|
|
14
|
+
* Atomic write helper — writes to a sibling .tmp file then renames into place.
|
|
15
|
+
* SIGINT or crash during a partial write would otherwise corrupt user-critical
|
|
16
|
+
* files (.claude/settings.json, .mcp.json, helper scripts that Claude Code
|
|
17
|
+
* executes on every hook). Without atomicity a half-written settings.json or
|
|
18
|
+
* a zero-byte hook-handler.cjs disables Claude Code's protections silently.
|
|
19
|
+
*/
|
|
20
|
+
function atomicWriteFile(target, content, encoding) {
|
|
21
|
+
const tmp = `${target}.${process.pid}.tmp`;
|
|
22
|
+
if (encoding && typeof content === 'string') {
|
|
23
|
+
fs.writeFileSync(tmp, content, encoding);
|
|
24
|
+
}
|
|
25
|
+
else if (typeof content === 'string') {
|
|
26
|
+
fs.writeFileSync(tmp, content, 'utf-8');
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
fs.writeFileSync(tmp, content);
|
|
30
|
+
}
|
|
31
|
+
fs.renameSync(tmp, target);
|
|
32
|
+
}
|
|
13
33
|
import { detectPlatform, DEFAULT_INIT_OPTIONS } from './types.js';
|
|
14
34
|
import { writeSharedInstructions } from './shared-instructions-generator.js';
|
|
15
35
|
import { generateSettingsJson, generateSettings } from './settings-generator.js';
|
|
@@ -24,6 +44,7 @@ const SKILLS_MAP = {
|
|
|
24
44
|
core: [
|
|
25
45
|
'swarm-orchestration',
|
|
26
46
|
'swarm-advanced',
|
|
47
|
+
'swarm-coordination',
|
|
27
48
|
'sparc-methodology',
|
|
28
49
|
'hooks-automation',
|
|
29
50
|
'pair-programming',
|
|
@@ -31,8 +52,12 @@ const SKILLS_MAP = {
|
|
|
31
52
|
'stream-chain',
|
|
32
53
|
'skill-builder',
|
|
33
54
|
'specialagent',
|
|
55
|
+
'mastermind',
|
|
56
|
+
'monodesign',
|
|
57
|
+
'monomotion',
|
|
58
|
+
'hive-mind-advanced',
|
|
34
59
|
],
|
|
35
|
-
browser: ['
|
|
60
|
+
browser: ['agent-browser-testing'],
|
|
36
61
|
agentdb: [
|
|
37
62
|
'agentdb-advanced',
|
|
38
63
|
'agentdb-learning',
|
|
@@ -49,16 +74,17 @@ const SKILLS_MAP = {
|
|
|
49
74
|
'github-release-management',
|
|
50
75
|
'github-workflow-automation',
|
|
51
76
|
],
|
|
52
|
-
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
'
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
'
|
|
61
|
-
'
|
|
77
|
+
advanced: [
|
|
78
|
+
'agentic-integration',
|
|
79
|
+
'agentic-jujutsu',
|
|
80
|
+
'cli-modernization',
|
|
81
|
+
'core-implementation',
|
|
82
|
+
'ddd-architecture',
|
|
83
|
+
'mcp-optimization',
|
|
84
|
+
'memory-unification',
|
|
85
|
+
'performance-analysis',
|
|
86
|
+
'performance-optimization',
|
|
87
|
+
'security-hardening',
|
|
62
88
|
],
|
|
63
89
|
};
|
|
64
90
|
/**
|
|
@@ -66,47 +92,69 @@ const SKILLS_MAP = {
|
|
|
66
92
|
*/
|
|
67
93
|
const COMMANDS_MAP = {
|
|
68
94
|
core: [
|
|
69
|
-
'
|
|
70
|
-
'monomind-do.md', 'monomind-idea.md', 'monomind-improve.md', 'monomind-createtask.md', 'monomind-repeat.md',
|
|
71
|
-
'mastermind.md', 'list-agents.md', 'use-agent.md',
|
|
72
|
-
'metrics.md', 'tokens.md', 'browse.md', 'sparc.md', 'ts.md',
|
|
95
|
+
'mastermind.md', 'tokens.md', 'browse.md', 'sparc.md', 'ts.md',
|
|
73
96
|
],
|
|
97
|
+
agents: ['agents'],
|
|
74
98
|
analysis: ['analysis'],
|
|
75
99
|
automation: ['automation'],
|
|
100
|
+
coordination: ['coordination'],
|
|
76
101
|
github: ['github'],
|
|
102
|
+
hiveMind: ['hive-mind'],
|
|
77
103
|
hooks: ['hooks'],
|
|
104
|
+
mastermind: ['mastermind'],
|
|
105
|
+
memory: ['memory'],
|
|
78
106
|
monitoring: ['monitoring'],
|
|
107
|
+
monograph: ['monograph'],
|
|
108
|
+
monomind: ['monomind'],
|
|
79
109
|
optimization: ['optimization'],
|
|
110
|
+
pair: ['pair'],
|
|
80
111
|
sparc: ['sparc'],
|
|
112
|
+
streamChain: ['stream-chain'],
|
|
113
|
+
swarm: ['swarm'],
|
|
114
|
+
training: ['training'],
|
|
115
|
+
truth: ['truth'],
|
|
116
|
+
verify: ['verify'],
|
|
117
|
+
workflows: ['workflows'],
|
|
81
118
|
};
|
|
82
119
|
/**
|
|
83
120
|
* Agents to copy based on configuration
|
|
84
121
|
*/
|
|
85
122
|
const AGENTS_MAP = {
|
|
86
|
-
|
|
87
|
-
consensus: ['consensus'],
|
|
88
|
-
github: ['github'],
|
|
89
|
-
hiveMind: ['hive-mind'],
|
|
90
|
-
sparc: ['sparc'],
|
|
91
|
-
swarm: ['swarm'],
|
|
92
|
-
browser: ['browser'], // agent-browser integration
|
|
93
|
-
// V1-specific agents
|
|
94
|
-
v1: ['v1'],
|
|
95
|
-
optimization: ['optimization'],
|
|
96
|
-
templates: ['templates'],
|
|
97
|
-
testing: ['testing'],
|
|
98
|
-
sublinear: ['sublinear'],
|
|
123
|
+
academic: ['academic'],
|
|
99
124
|
analysis: ['analysis'],
|
|
100
125
|
architecture: ['architecture'],
|
|
126
|
+
consensus: ['consensus'],
|
|
127
|
+
core: ['core'],
|
|
128
|
+
data: ['data'],
|
|
129
|
+
design: ['design'],
|
|
101
130
|
development: ['development'],
|
|
102
131
|
devops: ['devops'],
|
|
103
132
|
documentation: ['documentation'],
|
|
104
|
-
|
|
133
|
+
engineering: ['engineering'],
|
|
134
|
+
gameDevelopment: ['game-development'],
|
|
135
|
+
github: ['github'],
|
|
105
136
|
goal: ['goal'],
|
|
106
|
-
|
|
137
|
+
hiveMind: ['hive-mind'],
|
|
138
|
+
marketing: ['marketing'],
|
|
139
|
+
neural: ['neural'],
|
|
140
|
+
optimization: ['optimization'],
|
|
141
|
+
paidMedia: ['paid-media'],
|
|
107
142
|
payments: ['payments'],
|
|
108
|
-
|
|
109
|
-
|
|
143
|
+
product: ['product'],
|
|
144
|
+
projectManagement: ['project-management'],
|
|
145
|
+
reasoning: ['reasoning'],
|
|
146
|
+
sales: ['sales'],
|
|
147
|
+
schemas: ['schemas'],
|
|
148
|
+
sona: ['sona'],
|
|
149
|
+
sparc: ['sparc'],
|
|
150
|
+
spatialComputing: ['spatial-computing'],
|
|
151
|
+
specialists: ['specialists'],
|
|
152
|
+
specialized: ['specialized'],
|
|
153
|
+
sublinear: ['sublinear'],
|
|
154
|
+
support: ['support'],
|
|
155
|
+
swarm: ['swarm'],
|
|
156
|
+
templates: ['templates'],
|
|
157
|
+
testing: ['testing'],
|
|
110
158
|
};
|
|
111
159
|
/**
|
|
112
160
|
* Directory structure to create
|
|
@@ -171,7 +219,7 @@ function cleanupLegacyTools(targetDir) {
|
|
|
171
219
|
cleaned.push('.mcp.json: updated MCP package name to monomind@latest');
|
|
172
220
|
}
|
|
173
221
|
if (mcpChanged) {
|
|
174
|
-
|
|
222
|
+
atomicWriteFile(mcpJsonPath, JSON.stringify(mcp, null, 2));
|
|
175
223
|
}
|
|
176
224
|
}
|
|
177
225
|
catch { /* non-fatal */ }
|
|
@@ -207,7 +255,7 @@ function cleanupLegacyTools(targetDir) {
|
|
|
207
255
|
cleaned.push('.claude/settings.json: updated MCP package name to monomind@latest');
|
|
208
256
|
}
|
|
209
257
|
if (settingsChanged) {
|
|
210
|
-
|
|
258
|
+
atomicWriteFile(settingsPath, JSON.stringify(settings, null, 2));
|
|
211
259
|
}
|
|
212
260
|
}
|
|
213
261
|
catch { /* non-fatal */ }
|
|
@@ -537,11 +585,18 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
537
585
|
else {
|
|
538
586
|
result.created.push(`.claude/helpers/${helperName}`);
|
|
539
587
|
}
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
588
|
+
// Atomic copy-via-rename: a SIGINT/crash during copy would leave a
|
|
589
|
+
// half-written hook-handler.cjs which Claude Code executes on every
|
|
590
|
+
// hook event — partial JS could disable security checks silently.
|
|
591
|
+
{
|
|
592
|
+
const tmp = targetPath + '.tmp';
|
|
593
|
+
fs.copyFileSync(sourcePath, tmp);
|
|
594
|
+
try {
|
|
595
|
+
fs.chmodSync(tmp, 0o755);
|
|
596
|
+
}
|
|
597
|
+
catch { }
|
|
598
|
+
fs.renameSync(tmp, targetPath);
|
|
543
599
|
}
|
|
544
|
-
catch { }
|
|
545
600
|
}
|
|
546
601
|
}
|
|
547
602
|
}
|
|
@@ -560,11 +615,16 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
560
615
|
else {
|
|
561
616
|
result.created.push(`.claude/helpers/${helperName}`);
|
|
562
617
|
}
|
|
563
|
-
|
|
618
|
+
// Atomic write (PID-suffixed) so a partial hook-handler.cjs cannot
|
|
619
|
+
// ship if init is interrupted, and concurrent inits don't collide on
|
|
620
|
+
// the same .tmp filename.
|
|
621
|
+
const tmp = `${targetPath}.${process.pid}.tmp`;
|
|
622
|
+
fs.writeFileSync(tmp, content, 'utf-8');
|
|
564
623
|
try {
|
|
565
|
-
fs.chmodSync(
|
|
624
|
+
fs.chmodSync(tmp, 0o755);
|
|
566
625
|
}
|
|
567
626
|
catch { }
|
|
627
|
+
fs.renameSync(tmp, targetPath);
|
|
568
628
|
}
|
|
569
629
|
}
|
|
570
630
|
// 1. ALWAYS update statusline helper (force overwrite)
|
|
@@ -586,7 +646,7 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
586
646
|
else {
|
|
587
647
|
result.created.push('.claude/helpers/statusline.cjs');
|
|
588
648
|
}
|
|
589
|
-
|
|
649
|
+
atomicWriteFile(statuslinePath, statuslineContent);
|
|
590
650
|
// 2. Create MISSING metrics files only (preserve existing data)
|
|
591
651
|
const metricsDir = path.join(targetDir, '.monomind', 'metrics');
|
|
592
652
|
const securityDir = path.join(targetDir, '.monomind', 'security');
|
|
@@ -602,7 +662,7 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
602
662
|
learning: { status: 'READY', patternsLearned: 0, sessionsCompleted: 0 },
|
|
603
663
|
_note: 'Metrics will update as you use Monomind'
|
|
604
664
|
};
|
|
605
|
-
|
|
665
|
+
atomicWriteFile(progressPath, JSON.stringify(progress, null, 2));
|
|
606
666
|
result.created.push('.monomind/metrics/v1-progress.json');
|
|
607
667
|
}
|
|
608
668
|
else {
|
|
@@ -618,7 +678,7 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
618
678
|
integration: { agentic_flow_active: false, mcp_active: false },
|
|
619
679
|
_initialized: true
|
|
620
680
|
};
|
|
621
|
-
|
|
681
|
+
atomicWriteFile(activityPath, JSON.stringify(activity, null, 2));
|
|
622
682
|
result.created.push('.monomind/metrics/swarm-activity.json');
|
|
623
683
|
}
|
|
624
684
|
else {
|
|
@@ -634,7 +694,7 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
634
694
|
sessions: { total: 0, current: null },
|
|
635
695
|
_note: 'Intelligence grows as you use Monomind'
|
|
636
696
|
};
|
|
637
|
-
|
|
697
|
+
atomicWriteFile(learningPath, JSON.stringify(learning, null, 2));
|
|
638
698
|
result.created.push('.monomind/metrics/learning.json');
|
|
639
699
|
}
|
|
640
700
|
else {
|
|
@@ -651,7 +711,7 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
651
711
|
lastScan: null,
|
|
652
712
|
_note: 'Run: npx monomind@latest security scan'
|
|
653
713
|
};
|
|
654
|
-
|
|
714
|
+
atomicWriteFile(auditPath, JSON.stringify(audit, null, 2));
|
|
655
715
|
result.created.push('.monomind/security/audit-status.json');
|
|
656
716
|
}
|
|
657
717
|
else {
|
|
@@ -664,7 +724,7 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
664
724
|
try {
|
|
665
725
|
const existingSettings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
|
|
666
726
|
const mergedSettings = mergeSettingsForUpgrade(existingSettings);
|
|
667
|
-
|
|
727
|
+
atomicWriteFile(settingsPath, JSON.stringify(mergedSettings, null, 2));
|
|
668
728
|
result.updated.push('.claude/settings.json');
|
|
669
729
|
result.settingsUpdated = [
|
|
670
730
|
'env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS',
|
|
@@ -683,7 +743,7 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
683
743
|
else {
|
|
684
744
|
// Create new settings.json with defaults
|
|
685
745
|
const defaultSettings = generateSettings(DEFAULT_INIT_OPTIONS);
|
|
686
|
-
|
|
746
|
+
atomicWriteFile(settingsPath, JSON.stringify(defaultSettings, null, 2));
|
|
687
747
|
result.created.push('.claude/settings.json');
|
|
688
748
|
result.settingsUpdated = ['Created new settings.json with Agent Teams'];
|
|
689
749
|
}
|
|
@@ -839,7 +899,7 @@ async function writeSettings(targetDir, options, result) {
|
|
|
839
899
|
}
|
|
840
900
|
}
|
|
841
901
|
if (merged) {
|
|
842
|
-
|
|
902
|
+
atomicWriteFile(settingsPath, JSON.stringify(existing, null, 2));
|
|
843
903
|
result.created.files.push('.claude/settings.json (merged hooks)');
|
|
844
904
|
}
|
|
845
905
|
else {
|
|
@@ -848,12 +908,12 @@ async function writeSettings(targetDir, options, result) {
|
|
|
848
908
|
}
|
|
849
909
|
catch {
|
|
850
910
|
// Existing file is corrupt — overwrite
|
|
851
|
-
|
|
911
|
+
atomicWriteFile(settingsPath, JSON.stringify(generated, null, 2));
|
|
852
912
|
result.created.files.push('.claude/settings.json');
|
|
853
913
|
}
|
|
854
914
|
return;
|
|
855
915
|
}
|
|
856
|
-
|
|
916
|
+
atomicWriteFile(settingsPath, JSON.stringify(generated, null, 2));
|
|
857
917
|
result.created.files.push('.claude/settings.json');
|
|
858
918
|
}
|
|
859
919
|
/**
|
|
@@ -866,7 +926,7 @@ async function writeMCPConfig(targetDir, options, result) {
|
|
|
866
926
|
return;
|
|
867
927
|
}
|
|
868
928
|
const content = generateMCPJson(options);
|
|
869
|
-
|
|
929
|
+
atomicWriteFile(mcpPath, content);
|
|
870
930
|
result.created.files.push('.mcp.json');
|
|
871
931
|
}
|
|
872
932
|
/**
|
|
@@ -890,8 +950,8 @@ async function copySkills(targetDir, options, result) {
|
|
|
890
950
|
skillsToCopy.push(...SKILLS_MAP.github);
|
|
891
951
|
if (skillsConfig.browser)
|
|
892
952
|
skillsToCopy.push(...SKILLS_MAP.browser);
|
|
893
|
-
if (skillsConfig.
|
|
894
|
-
skillsToCopy.push(...SKILLS_MAP.
|
|
953
|
+
if (skillsConfig.advanced)
|
|
954
|
+
skillsToCopy.push(...SKILLS_MAP.advanced);
|
|
895
955
|
}
|
|
896
956
|
// Find source skills directory
|
|
897
957
|
const sourceSkillsDir = findSourceDir('skills', options.sourceBaseDir);
|
|
@@ -929,20 +989,48 @@ async function copyCommands(targetDir, options, result) {
|
|
|
929
989
|
else {
|
|
930
990
|
if (commandsConfig.core)
|
|
931
991
|
commandsToCopy.push(...COMMANDS_MAP.core);
|
|
992
|
+
if (commandsConfig.agents)
|
|
993
|
+
commandsToCopy.push(...(COMMANDS_MAP.agents || []));
|
|
932
994
|
if (commandsConfig.analysis)
|
|
933
995
|
commandsToCopy.push(...COMMANDS_MAP.analysis);
|
|
934
996
|
if (commandsConfig.automation)
|
|
935
997
|
commandsToCopy.push(...COMMANDS_MAP.automation);
|
|
998
|
+
if (commandsConfig.coordination)
|
|
999
|
+
commandsToCopy.push(...(COMMANDS_MAP.coordination || []));
|
|
936
1000
|
if (commandsConfig.github)
|
|
937
1001
|
commandsToCopy.push(...COMMANDS_MAP.github);
|
|
1002
|
+
if (commandsConfig.hiveMind)
|
|
1003
|
+
commandsToCopy.push(...(COMMANDS_MAP.hiveMind || []));
|
|
938
1004
|
if (commandsConfig.hooks)
|
|
939
1005
|
commandsToCopy.push(...COMMANDS_MAP.hooks);
|
|
1006
|
+
if (commandsConfig.mastermind)
|
|
1007
|
+
commandsToCopy.push(...(COMMANDS_MAP.mastermind || []));
|
|
1008
|
+
if (commandsConfig.memory)
|
|
1009
|
+
commandsToCopy.push(...(COMMANDS_MAP.memory || []));
|
|
940
1010
|
if (commandsConfig.monitoring)
|
|
941
1011
|
commandsToCopy.push(...COMMANDS_MAP.monitoring);
|
|
1012
|
+
if (commandsConfig.monograph)
|
|
1013
|
+
commandsToCopy.push(...(COMMANDS_MAP.monograph || []));
|
|
1014
|
+
if (commandsConfig.monomind)
|
|
1015
|
+
commandsToCopy.push(...(COMMANDS_MAP.monomind || []));
|
|
942
1016
|
if (commandsConfig.optimization)
|
|
943
1017
|
commandsToCopy.push(...COMMANDS_MAP.optimization);
|
|
1018
|
+
if (commandsConfig.pair)
|
|
1019
|
+
commandsToCopy.push(...(COMMANDS_MAP.pair || []));
|
|
944
1020
|
if (commandsConfig.sparc)
|
|
945
1021
|
commandsToCopy.push(...COMMANDS_MAP.sparc);
|
|
1022
|
+
if (commandsConfig.streamChain)
|
|
1023
|
+
commandsToCopy.push(...(COMMANDS_MAP.streamChain || []));
|
|
1024
|
+
if (commandsConfig.swarm)
|
|
1025
|
+
commandsToCopy.push(...(COMMANDS_MAP.swarm || []));
|
|
1026
|
+
if (commandsConfig.training)
|
|
1027
|
+
commandsToCopy.push(...(COMMANDS_MAP.training || []));
|
|
1028
|
+
if (commandsConfig.truth)
|
|
1029
|
+
commandsToCopy.push(...(COMMANDS_MAP.truth || []));
|
|
1030
|
+
if (commandsConfig.verify)
|
|
1031
|
+
commandsToCopy.push(...(COMMANDS_MAP.verify || []));
|
|
1032
|
+
if (commandsConfig.workflows)
|
|
1033
|
+
commandsToCopy.push(...(COMMANDS_MAP.workflows || []));
|
|
946
1034
|
}
|
|
947
1035
|
// Find source commands directory
|
|
948
1036
|
const sourceCommandsDir = findSourceDir('commands', options.sourceBaseDir);
|
|
@@ -995,11 +1083,6 @@ async function copyAgents(targetDir, options, result) {
|
|
|
995
1083
|
agentsToCopy.push(...AGENTS_MAP.sparc);
|
|
996
1084
|
if (agentsConfig.swarm)
|
|
997
1085
|
agentsToCopy.push(...AGENTS_MAP.swarm);
|
|
998
|
-
if (agentsConfig.browser)
|
|
999
|
-
agentsToCopy.push(...AGENTS_MAP.browser);
|
|
1000
|
-
// V1-specific agent categories
|
|
1001
|
-
if (agentsConfig.v1)
|
|
1002
|
-
agentsToCopy.push(...(AGENTS_MAP.v1 || []));
|
|
1003
1086
|
if (agentsConfig.optimization)
|
|
1004
1087
|
agentsToCopy.push(...(AGENTS_MAP.optimization || []));
|
|
1005
1088
|
if (agentsConfig.testing)
|
|
@@ -1128,7 +1211,7 @@ async function writeHelpers(targetDir, options, result) {
|
|
|
1128
1211
|
for (const [name, content] of Object.entries(helpers)) {
|
|
1129
1212
|
const filePath = path.join(helpersDir, name);
|
|
1130
1213
|
if (!fs.existsSync(filePath) || options.force) {
|
|
1131
|
-
|
|
1214
|
+
atomicWriteFile(filePath, content);
|
|
1132
1215
|
// Make shell scripts executable
|
|
1133
1216
|
if (!name.endsWith('.js')) {
|
|
1134
1217
|
fs.chmodSync(filePath, '755');
|
|
@@ -1211,7 +1294,7 @@ async function writeStatusline(targetDir, options, result) {
|
|
|
1211
1294
|
// This must overwrite any copy from writeHelpers() which copies the legacy file.
|
|
1212
1295
|
const statuslineScript = generateStatuslineScript(options);
|
|
1213
1296
|
const statuslinePath = path.join(helpersDir, 'statusline.cjs');
|
|
1214
|
-
|
|
1297
|
+
atomicWriteFile(statuslinePath, statuslineScript);
|
|
1215
1298
|
result.created.files.push('.claude/helpers/statusline.cjs');
|
|
1216
1299
|
}
|
|
1217
1300
|
/**
|
|
@@ -1267,7 +1350,7 @@ mcp:
|
|
|
1267
1350
|
autoStart: ${options.mcp.autoStart}
|
|
1268
1351
|
port: ${options.mcp.port}
|
|
1269
1352
|
`;
|
|
1270
|
-
|
|
1353
|
+
atomicWriteFile(configPath, config);
|
|
1271
1354
|
result.created.files.push('.monomind/config.yaml');
|
|
1272
1355
|
// Write .gitignore
|
|
1273
1356
|
const gitignorePath = path.join(targetDir, '.monomind', '.gitignore');
|
|
@@ -1280,7 +1363,7 @@ neural/
|
|
|
1280
1363
|
*.tmp
|
|
1281
1364
|
`;
|
|
1282
1365
|
if (!fs.existsSync(gitignorePath) || options.force) {
|
|
1283
|
-
|
|
1366
|
+
atomicWriteFile(gitignorePath, gitignore);
|
|
1284
1367
|
result.created.files.push('.monomind/.gitignore');
|
|
1285
1368
|
}
|
|
1286
1369
|
// Write CAPABILITIES.md with full system overview
|
|
@@ -1329,7 +1412,7 @@ async function writeInitialMetrics(targetDir, options, result) {
|
|
|
1329
1412
|
},
|
|
1330
1413
|
_note: 'Metrics will update as you use Monomind. Run: npx monomind@latest daemon start'
|
|
1331
1414
|
};
|
|
1332
|
-
|
|
1415
|
+
atomicWriteFile(progressPath, JSON.stringify(progress, null, 2));
|
|
1333
1416
|
result.created.files.push('.monomind/metrics/v1-progress.json');
|
|
1334
1417
|
}
|
|
1335
1418
|
// Create initial swarm-activity.json
|
|
@@ -1353,7 +1436,7 @@ async function writeInitialMetrics(targetDir, options, result) {
|
|
|
1353
1436
|
},
|
|
1354
1437
|
_initialized: true
|
|
1355
1438
|
};
|
|
1356
|
-
|
|
1439
|
+
atomicWriteFile(activityPath, JSON.stringify(activity, null, 2));
|
|
1357
1440
|
result.created.files.push('.monomind/metrics/swarm-activity.json');
|
|
1358
1441
|
}
|
|
1359
1442
|
// Create initial learning.json
|
|
@@ -1376,7 +1459,7 @@ async function writeInitialMetrics(targetDir, options, result) {
|
|
|
1376
1459
|
},
|
|
1377
1460
|
_note: 'Intelligence grows as you use Monomind'
|
|
1378
1461
|
};
|
|
1379
|
-
|
|
1462
|
+
atomicWriteFile(learningPath, JSON.stringify(learning, null, 2));
|
|
1380
1463
|
result.created.files.push('.monomind/metrics/learning.json');
|
|
1381
1464
|
}
|
|
1382
1465
|
// Create initial audit-status.json
|
|
@@ -1390,7 +1473,7 @@ async function writeInitialMetrics(targetDir, options, result) {
|
|
|
1390
1473
|
lastScan: null,
|
|
1391
1474
|
_note: 'Run: npx monomind@latest security scan'
|
|
1392
1475
|
};
|
|
1393
|
-
|
|
1476
|
+
atomicWriteFile(auditPath, JSON.stringify(audit, null, 2));
|
|
1394
1477
|
result.created.files.push('.monomind/security/audit-status.json');
|
|
1395
1478
|
}
|
|
1396
1479
|
}
|
|
@@ -1801,7 +1884,7 @@ npx monomind@latest hooks worker dispatch --trigger optimize
|
|
|
1801
1884
|
**Full Documentation**: https://github.com/nokhodian/monomind
|
|
1802
1885
|
**Issues**: https://github.com/nokhodian/monomind/issues
|
|
1803
1886
|
`;
|
|
1804
|
-
|
|
1887
|
+
atomicWriteFile(capabilitiesPath, capabilities);
|
|
1805
1888
|
result.created.files.push('.monomind/CAPABILITIES.md');
|
|
1806
1889
|
}
|
|
1807
1890
|
/**
|
|
@@ -1816,7 +1899,7 @@ async function writeClaudeMd(targetDir, options, result) {
|
|
|
1816
1899
|
// Determine template: explicit option > infer from components > 'standard'
|
|
1817
1900
|
const inferredTemplate = (!options.components.commands && !options.components.agents) ? 'minimal' : undefined;
|
|
1818
1901
|
const content = generateClaudeMd(options, inferredTemplate);
|
|
1819
|
-
|
|
1902
|
+
atomicWriteFile(claudeMdPath, content);
|
|
1820
1903
|
result.created.files.push('CLAUDE.md');
|
|
1821
1904
|
}
|
|
1822
1905
|
// Also write/append global ~/.claude/CLAUDE.md so monomind tools are used automatically (#1497)
|
|
@@ -1844,7 +1927,7 @@ async function writeClaudeMd(targetDir, options, result) {
|
|
|
1844
1927
|
}
|
|
1845
1928
|
}
|
|
1846
1929
|
else {
|
|
1847
|
-
|
|
1930
|
+
atomicWriteFile(globalClaudeMd, monomindBlock.trimStart());
|
|
1848
1931
|
result.created.files.push('~/.claude/CLAUDE.md');
|
|
1849
1932
|
}
|
|
1850
1933
|
}
|
|
@@ -1875,7 +1958,7 @@ async function writeClaudeMd(targetDir, options, result) {
|
|
|
1875
1958
|
});
|
|
1876
1959
|
hooks['SessionStart'] = sessionStartHooks;
|
|
1877
1960
|
globalSettings.hooks = hooks;
|
|
1878
|
-
|
|
1961
|
+
atomicWriteFile(globalSettingsPath, JSON.stringify(globalSettings, null, 2));
|
|
1879
1962
|
result.created.files.push('~/.claude/settings.json (added token hook)');
|
|
1880
1963
|
}
|
|
1881
1964
|
}
|
|
@@ -307,8 +307,14 @@ const commands = {
|
|
|
307
307
|
console.error('Key required');
|
|
308
308
|
return;
|
|
309
309
|
}
|
|
310
|
+
// Reject prototype-pollution keys: \`memory[key] = value\` with key='__proto__'
|
|
311
|
+
// performs a prototype-set, polluting Object.prototype for the process.
|
|
312
|
+
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
|
|
313
|
+
console.error('Forbidden key');
|
|
314
|
+
process.exit(2);
|
|
315
|
+
}
|
|
310
316
|
const memory = loadMemory();
|
|
311
|
-
memory
|
|
317
|
+
Object.defineProperty(memory, key, { value, enumerable: true, configurable: true, writable: true });
|
|
312
318
|
memory._updated = new Date().toISOString();
|
|
313
319
|
saveMemory(memory);
|
|
314
320
|
console.log(\`Set: \${key}\`);
|
|
@@ -319,6 +325,10 @@ const commands = {
|
|
|
319
325
|
console.error('Key required');
|
|
320
326
|
return;
|
|
321
327
|
}
|
|
328
|
+
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
|
|
329
|
+
console.error('Forbidden key');
|
|
330
|
+
process.exit(2);
|
|
331
|
+
}
|
|
322
332
|
const memory = loadMemory();
|
|
323
333
|
delete memory[key];
|
|
324
334
|
saveMemory(memory);
|
|
@@ -477,15 +487,11 @@ export function generateHookHandler() {
|
|
|
477
487
|
' },',
|
|
478
488
|
'',
|
|
479
489
|
" 'pre-bash': () => {",
|
|
480
|
-
|
|
481
|
-
"
|
|
482
|
-
|
|
483
|
-
'
|
|
484
|
-
"
|
|
485
|
-
' process.exit(1);',
|
|
486
|
-
' }',
|
|
487
|
-
' }',
|
|
488
|
-
" console.log('[OK] Command validated');",
|
|
490
|
+
" // NOTE: This hook is intentionally NOT a security filter. A 4-substring",
|
|
491
|
+
" // check is trivially bypassed (extra spaces, find -delete, dd, bash -c, etc.)",
|
|
492
|
+
" // and shipping a fake check creates false confidence. Real safety lives in",
|
|
493
|
+
" // Claude Code's permission prompt and sandboxing. Hook is observability-only.",
|
|
494
|
+
" console.log('[OK] Command validation delegated to Claude Code permissions');",
|
|
489
495
|
' },',
|
|
490
496
|
'',
|
|
491
497
|
" 'post-edit': () => {",
|
|
@@ -498,18 +504,19 @@ export function generateHookHandler() {
|
|
|
498
504
|
' intelligence.recordEdit(file);',
|
|
499
505
|
' } catch (e) { /* non-fatal */ }',
|
|
500
506
|
' }',
|
|
501
|
-
' // Auto-rebuild
|
|
507
|
+
' // Auto-rebuild monograph knowledge graph for code file changes',
|
|
502
508
|
' try {',
|
|
503
509
|
" var editedFile = process.env.TOOL_INPUT_file_path || args[0] || '';",
|
|
504
510
|
" var isCode = /\\.(ts|js|tsx|jsx|py|go|rs|java|c|cpp|h|cs|rb|php|swift|kt|scala)$/.test(editedFile);",
|
|
505
|
-
" var
|
|
506
|
-
" if (isCode && require('fs').existsSync(
|
|
507
|
-
"
|
|
508
|
-
"
|
|
511
|
+
" var dbFile = require('path').join(process.cwd(), '.monomind', 'monograph.db');",
|
|
512
|
+
" if (isCode && require('fs').existsSync(dbFile)) {",
|
|
513
|
+
" var s = `import { buildAsync } from '@monoes/monograph'; buildAsync(${JSON.stringify(process.cwd())}).catch(()=>{});`;",
|
|
514
|
+
" require('child_process').spawn(process.execPath, ['--input-type=module', '--eval', s], {",
|
|
515
|
+
" detached: true, stdio: 'ignore'",
|
|
509
516
|
' }).unref();',
|
|
510
|
-
" console.log('[
|
|
517
|
+
" console.log('[MONOGRAPH] Queued graph rebuild for: ' + require('path').basename(editedFile));",
|
|
511
518
|
' }',
|
|
512
|
-
' } catch (e) { /* non-fatal —
|
|
519
|
+
' } catch (e) { /* non-fatal — monograph may not be installed */ }',
|
|
513
520
|
" console.log('[OK] Edit recorded');",
|
|
514
521
|
' },',
|
|
515
522
|
'',
|
|
@@ -684,11 +691,13 @@ export function generateIntelligenceStub() {
|
|
|
684
691
|
' return text.toLowerCase().replace(/[^a-z0-9\\s]/g, " ").split(/\\s+/).filter(function(w) { return w.length > 2; });',
|
|
685
692
|
'}',
|
|
686
693
|
'',
|
|
687
|
-
'// Bootstrap entries from MEMORY.md files when store is empty',
|
|
694
|
+
'// Bootstrap entries from MEMORY.md files when store is empty.',
|
|
695
|
+
'// SECURITY: ONLY walk the current project. Walking ~/.claude/projects',
|
|
696
|
+
'// previously caused cross-project memory leakage — entries from project A',
|
|
697
|
+
'// (potentially containing secrets) would surface in prompts in project B.',
|
|
688
698
|
'function bootstrapFromMemoryFiles() {',
|
|
689
699
|
' var entries = [];',
|
|
690
700
|
' var candidates = [',
|
|
691
|
-
' path.join(os.homedir(), ".claude", "projects"),',
|
|
692
701
|
' path.join(process.cwd(), ".monomind", "memory"),',
|
|
693
702
|
' path.join(process.cwd(), ".claude", "memory"),',
|
|
694
703
|
' ];',
|
|
@@ -934,11 +943,15 @@ function doStatus() {
|
|
|
934
943
|
console.log('');
|
|
935
944
|
}
|
|
936
945
|
|
|
937
|
-
// Suppress unhandled rejection warnings
|
|
946
|
+
// Suppress unhandled rejection warnings ONLY for genuine module-not-found from
|
|
947
|
+
// optional dynamic imports. Previously this swallowed any error whose message
|
|
948
|
+
// contained "Cannot find" (e.g. "Cannot find user with id ..."), masking real
|
|
949
|
+
// failures and security regressions.
|
|
938
950
|
process.on('unhandledRejection', (reason) => {
|
|
939
|
-
|
|
940
|
-
if (
|
|
951
|
+
const code = reason && typeof reason === 'object' ? reason.code : undefined;
|
|
952
|
+
if (code === 'ERR_MODULE_NOT_FOUND' || code === 'MODULE_NOT_FOUND') return;
|
|
941
953
|
if (reason instanceof Error) throw reason;
|
|
954
|
+
throw new Error(String(reason));
|
|
942
955
|
});
|
|
943
956
|
|
|
944
957
|
const command = process.argv[2] || 'status';
|
|
@@ -51,9 +51,9 @@ export function generateMCPConfig(options) {
|
|
|
51
51
|
MONOMIND_MEMORY_BACKEND: options.runtime.memoryBackend,
|
|
52
52
|
}, { autoStart: config.autoStart });
|
|
53
53
|
}
|
|
54
|
-
//
|
|
55
|
-
// Available as
|
|
56
|
-
// No separate server needed — the monomind entry above provides all
|
|
54
|
+
// Monograph knowledge graph — built into monomind MCP server since v1.8.0.
|
|
55
|
+
// Available as mcp__monomind__monograph_build, monograph_query, monograph_suggest, monograph_health.
|
|
56
|
+
// No separate server needed — the monomind entry above provides all monograph tools.
|
|
57
57
|
return { mcpServers };
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
@@ -17,11 +17,18 @@ export function generateSettings(options) {
|
|
|
17
17
|
settings.statusLine = generateStatusLineConfig(options);
|
|
18
18
|
}
|
|
19
19
|
// Add permissions
|
|
20
|
+
// SECURITY: tightened allowlist patterns.
|
|
21
|
+
// `Bash(npx monomind*)` previously matched any package starting with
|
|
22
|
+
// "monomind" (including a hypothetical future typosquat). Anchor to the
|
|
23
|
+
// official scope/namespaces only, with an explicit space between command
|
|
24
|
+
// tokens so partial-prefix matches are rejected.
|
|
20
25
|
settings.permissions = {
|
|
21
26
|
allow: [
|
|
22
|
-
'Bash(npx @
|
|
23
|
-
'Bash(npx monomind*)',
|
|
24
|
-
'Bash(
|
|
27
|
+
'Bash(npx @monomind/*)',
|
|
28
|
+
'Bash(npx monomind *)',
|
|
29
|
+
'Bash(npx -y monomind *)',
|
|
30
|
+
'Bash(npx monomind@*)',
|
|
31
|
+
'Bash(node .claude/helpers/*)',
|
|
25
32
|
'mcp__monomind__:*',
|
|
26
33
|
],
|
|
27
34
|
deny: [
|