monomind 1.7.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} +22 -9
- package/.claude/commands/monomind/help.md +118 -0
- package/.claude/commands/{monomind-idea.md → monomind/idea.md} +23 -29
- package/.claude/commands/{monomind-improve.md → monomind/improve.md} +24 -30
- 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/loop-tracker.cjs +107 -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/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/README.md +5 -5
- package/package.json +1 -1
- package/packages/@monomind/cli/README.md +5 -5
- package/packages/@monomind/cli/bin/cli.js +78 -13
- 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 +28 -62
- 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 +163 -137
- package/packages/@monomind/cli/dist/src/init/helpers-generator.js +49 -36
- 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 +15 -6
- 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/graphify-tools.d.ts +4 -67
- package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.js +40 -1250
- 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/index.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/index.js +1 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +29 -13
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.d.ts +9 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +6306 -0
- 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 -2
- package/packages/@monomind/guidance/README.md +0 -3
- package/packages/@monomind/shared/README.md +0 -1
- package/packages/@monomind/shared/dist/types/consensus-audit.d.ts +3 -1
- package/packages/README.md +15 -16
- 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
|
@@ -17,6 +17,21 @@ function validatePackageName(spec) {
|
|
|
17
17
|
throw new Error(`Invalid package name: ${spec}`);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
+
const VALID_VERSION_RE = /^[a-zA-Z0-9._\-^~>=<*]+$/;
|
|
21
|
+
function validateVersion(version) {
|
|
22
|
+
if (!VALID_VERSION_RE.test(version) || version.length > 50) {
|
|
23
|
+
throw new Error(`Invalid version specifier: ${version}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** Forbidden manifest keys (prototype pollution defense) */
|
|
27
|
+
const FORBIDDEN_PLUGIN_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
28
|
+
function isValidPluginKey(name) {
|
|
29
|
+
return typeof name === 'string'
|
|
30
|
+
&& name.length > 0
|
|
31
|
+
&& name.length <= 214
|
|
32
|
+
&& !FORBIDDEN_PLUGIN_KEYS.has(name)
|
|
33
|
+
&& VALID_PACKAGE_RE.test(name);
|
|
34
|
+
}
|
|
20
35
|
// ============================================================================
|
|
21
36
|
// Plugin Manager
|
|
22
37
|
// ============================================================================
|
|
@@ -60,7 +75,13 @@ export class PluginManager {
|
|
|
60
75
|
try {
|
|
61
76
|
if (fs.existsSync(this.config.manifestPath)) {
|
|
62
77
|
const content = fs.readFileSync(this.config.manifestPath, 'utf-8');
|
|
63
|
-
|
|
78
|
+
const parsed = JSON.parse(content);
|
|
79
|
+
if (Object.prototype.hasOwnProperty.call(parsed, '__proto__') ||
|
|
80
|
+
Object.prototype.hasOwnProperty.call(parsed, 'constructor') ||
|
|
81
|
+
Object.prototype.hasOwnProperty.call(parsed, 'prototype')) {
|
|
82
|
+
throw new Error('Manifest contains forbidden keys');
|
|
83
|
+
}
|
|
84
|
+
return parsed;
|
|
64
85
|
}
|
|
65
86
|
}
|
|
66
87
|
catch (error) {
|
|
@@ -77,7 +98,10 @@ export class PluginManager {
|
|
|
77
98
|
return;
|
|
78
99
|
this.manifest.lastUpdated = new Date().toISOString();
|
|
79
100
|
await this.ensureDirectory(path.dirname(this.config.manifestPath));
|
|
80
|
-
|
|
101
|
+
// Atomic write to prevent corruption on crash
|
|
102
|
+
const tmp = this.config.manifestPath + '.tmp';
|
|
103
|
+
fs.writeFileSync(tmp, JSON.stringify(this.manifest, null, 2), 'utf-8');
|
|
104
|
+
fs.renameSync(tmp, this.config.manifestPath);
|
|
81
105
|
}
|
|
82
106
|
// =========================================================================
|
|
83
107
|
// Installation
|
|
@@ -89,10 +113,21 @@ export class PluginManager {
|
|
|
89
113
|
if (!this.manifest) {
|
|
90
114
|
await this.initialize();
|
|
91
115
|
}
|
|
116
|
+
if (!isValidPluginKey(packageName)) {
|
|
117
|
+
return { success: false, error: `Invalid package name: ${packageName}` };
|
|
118
|
+
}
|
|
119
|
+
if (version) {
|
|
120
|
+
try {
|
|
121
|
+
validateVersion(version);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return { success: false, error: `Invalid version specifier: ${version}` };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
92
127
|
const versionSpec = version ? `${packageName}@${version}` : packageName;
|
|
93
128
|
try {
|
|
94
129
|
// Check if already installed
|
|
95
|
-
if (this.manifest.plugins
|
|
130
|
+
if (Object.hasOwn(this.manifest.plugins, packageName)) {
|
|
96
131
|
return {
|
|
97
132
|
success: false,
|
|
98
133
|
error: `Plugin ${packageName} is already installed. Use upgrade to update.`,
|
|
@@ -103,9 +138,11 @@ export class PluginManager {
|
|
|
103
138
|
await this.ensureDirectory(installDir);
|
|
104
139
|
// Validate package name to prevent injection (S-3)
|
|
105
140
|
validatePackageName(versionSpec);
|
|
106
|
-
// Use npm to install
|
|
141
|
+
// Use npm to install. --ignore-scripts blocks pre/post-install lifecycle hooks
|
|
142
|
+
// from the plugin package, which would otherwise execute arbitrary code at
|
|
143
|
+
// install time (the canonical npm supply-chain attack vector).
|
|
107
144
|
console.log(`[PluginManager] Installing ${versionSpec}...`);
|
|
108
|
-
await execFileAsync('npm', ['install', '--prefix', this.config.pluginsDir, versionSpec], { timeout: 120000 });
|
|
145
|
+
await execFileAsync('npm', ['install', '--ignore-scripts', '--prefix', this.config.pluginsDir, versionSpec], { timeout: 120000 });
|
|
109
146
|
// Get installed version
|
|
110
147
|
const packageJsonPath = path.join(installDir, packageName, 'package.json');
|
|
111
148
|
let installedVersion = version || 'latest';
|
|
@@ -116,8 +153,8 @@ export class PluginManager {
|
|
|
116
153
|
installedVersion = pkg.version;
|
|
117
154
|
// Check for monomind plugin metadata
|
|
118
155
|
if (pkg['monomind']) {
|
|
119
|
-
commands = pkg['monomind'].commands
|
|
120
|
-
hooks = pkg['monomind'].hooks
|
|
156
|
+
commands = Array.isArray(pkg['monomind'].commands) ? pkg['monomind'].commands : [];
|
|
157
|
+
hooks = Array.isArray(pkg['monomind'].hooks) ? pkg['monomind'].hooks : [];
|
|
121
158
|
}
|
|
122
159
|
}
|
|
123
160
|
// Create plugin entry
|
|
@@ -152,6 +189,14 @@ export class PluginManager {
|
|
|
152
189
|
}
|
|
153
190
|
try {
|
|
154
191
|
const absolutePath = path.resolve(sourcePath);
|
|
192
|
+
// Restrict local installs to paths under cwd or $HOME to prevent path traversal
|
|
193
|
+
const cwd = process.cwd();
|
|
194
|
+
const home = process.env.HOME ?? process.env.USERPROFILE ?? '';
|
|
195
|
+
const underCwd = absolutePath.startsWith(cwd + path.sep) || absolutePath === cwd;
|
|
196
|
+
const underHome = home && (absolutePath.startsWith(home + path.sep) || absolutePath === home);
|
|
197
|
+
if (!underCwd && !underHome) {
|
|
198
|
+
return { success: false, error: `Local path must be within the current directory or home: ${absolutePath}` };
|
|
199
|
+
}
|
|
155
200
|
if (!fs.existsSync(absolutePath)) {
|
|
156
201
|
return { success: false, error: `Path does not exist: ${absolutePath}` };
|
|
157
202
|
}
|
|
@@ -162,8 +207,11 @@ export class PluginManager {
|
|
|
162
207
|
}
|
|
163
208
|
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
164
209
|
const packageName = pkg.name;
|
|
210
|
+
if (!isValidPluginKey(packageName)) {
|
|
211
|
+
return { success: false, error: `Invalid package.json: name is missing or invalid` };
|
|
212
|
+
}
|
|
165
213
|
// Check if already installed
|
|
166
|
-
if (this.manifest.plugins
|
|
214
|
+
if (Object.hasOwn(this.manifest.plugins, packageName)) {
|
|
167
215
|
return {
|
|
168
216
|
success: false,
|
|
169
217
|
error: `Plugin ${packageName} is already installed`,
|
|
@@ -202,7 +250,12 @@ export class PluginManager {
|
|
|
202
250
|
if (!this.manifest) {
|
|
203
251
|
await this.initialize();
|
|
204
252
|
}
|
|
205
|
-
|
|
253
|
+
if (!isValidPluginKey(packageName)) {
|
|
254
|
+
return { success: false, error: `Invalid package name` };
|
|
255
|
+
}
|
|
256
|
+
const plugin = Object.hasOwn(this.manifest.plugins, packageName)
|
|
257
|
+
? this.manifest.plugins[packageName]
|
|
258
|
+
: undefined;
|
|
206
259
|
if (!plugin) {
|
|
207
260
|
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
208
261
|
}
|
|
@@ -210,7 +263,7 @@ export class PluginManager {
|
|
|
210
263
|
// For npm-installed plugins, remove from node_modules
|
|
211
264
|
if (plugin.source === 'npm') {
|
|
212
265
|
validatePackageName(packageName);
|
|
213
|
-
await execFileAsync('npm', ['uninstall', '--prefix', this.config.pluginsDir, packageName], { timeout: 60000 });
|
|
266
|
+
await execFileAsync('npm', ['uninstall', '--ignore-scripts', '--prefix', this.config.pluginsDir, packageName], { timeout: 60000 });
|
|
214
267
|
}
|
|
215
268
|
// Remove from manifest
|
|
216
269
|
delete this.manifest.plugins[packageName];
|
|
@@ -234,7 +287,12 @@ export class PluginManager {
|
|
|
234
287
|
if (!this.manifest) {
|
|
235
288
|
await this.initialize();
|
|
236
289
|
}
|
|
237
|
-
|
|
290
|
+
if (!isValidPluginKey(packageName)) {
|
|
291
|
+
return { success: false, error: `Invalid package name` };
|
|
292
|
+
}
|
|
293
|
+
const plugin = Object.hasOwn(this.manifest.plugins, packageName)
|
|
294
|
+
? this.manifest.plugins[packageName]
|
|
295
|
+
: undefined;
|
|
238
296
|
if (!plugin) {
|
|
239
297
|
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
240
298
|
}
|
|
@@ -249,7 +307,12 @@ export class PluginManager {
|
|
|
249
307
|
if (!this.manifest) {
|
|
250
308
|
await this.initialize();
|
|
251
309
|
}
|
|
252
|
-
|
|
310
|
+
if (!isValidPluginKey(packageName)) {
|
|
311
|
+
return { success: false, error: `Invalid package name` };
|
|
312
|
+
}
|
|
313
|
+
const plugin = Object.hasOwn(this.manifest.plugins, packageName)
|
|
314
|
+
? this.manifest.plugins[packageName]
|
|
315
|
+
: undefined;
|
|
253
316
|
if (!plugin) {
|
|
254
317
|
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
255
318
|
}
|
|
@@ -264,7 +327,12 @@ export class PluginManager {
|
|
|
264
327
|
if (!this.manifest) {
|
|
265
328
|
await this.initialize();
|
|
266
329
|
}
|
|
267
|
-
|
|
330
|
+
if (!isValidPluginKey(packageName)) {
|
|
331
|
+
return { success: false, error: `Invalid package name` };
|
|
332
|
+
}
|
|
333
|
+
const plugin = Object.hasOwn(this.manifest.plugins, packageName)
|
|
334
|
+
? this.manifest.plugins[packageName]
|
|
335
|
+
: undefined;
|
|
268
336
|
if (!plugin) {
|
|
269
337
|
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
270
338
|
}
|
|
@@ -298,7 +366,9 @@ export class PluginManager {
|
|
|
298
366
|
if (!this.manifest) {
|
|
299
367
|
await this.initialize();
|
|
300
368
|
}
|
|
301
|
-
|
|
369
|
+
if (!isValidPluginKey(packageName))
|
|
370
|
+
return false;
|
|
371
|
+
return Object.hasOwn(this.manifest.plugins, packageName);
|
|
302
372
|
}
|
|
303
373
|
/**
|
|
304
374
|
* Get a specific installed plugin
|
|
@@ -307,7 +377,11 @@ export class PluginManager {
|
|
|
307
377
|
if (!this.manifest) {
|
|
308
378
|
await this.initialize();
|
|
309
379
|
}
|
|
310
|
-
|
|
380
|
+
if (!isValidPluginKey(packageName))
|
|
381
|
+
return undefined;
|
|
382
|
+
return Object.hasOwn(this.manifest.plugins, packageName)
|
|
383
|
+
? this.manifest.plugins[packageName]
|
|
384
|
+
: undefined;
|
|
311
385
|
}
|
|
312
386
|
// =========================================================================
|
|
313
387
|
// Upgrade
|
|
@@ -319,7 +393,20 @@ export class PluginManager {
|
|
|
319
393
|
if (!this.manifest) {
|
|
320
394
|
await this.initialize();
|
|
321
395
|
}
|
|
322
|
-
|
|
396
|
+
if (!isValidPluginKey(packageName)) {
|
|
397
|
+
return { success: false, error: `Invalid package name` };
|
|
398
|
+
}
|
|
399
|
+
if (version) {
|
|
400
|
+
try {
|
|
401
|
+
validateVersion(version);
|
|
402
|
+
}
|
|
403
|
+
catch {
|
|
404
|
+
return { success: false, error: `Invalid version specifier: ${version}` };
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
const existing = Object.hasOwn(this.manifest.plugins, packageName)
|
|
408
|
+
? this.manifest.plugins[packageName]
|
|
409
|
+
: undefined;
|
|
323
410
|
if (!existing) {
|
|
324
411
|
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
325
412
|
}
|
|
@@ -330,8 +417,9 @@ export class PluginManager {
|
|
|
330
417
|
const versionSpec = version ? `${packageName}@${version}` : `${packageName}@latest`;
|
|
331
418
|
// Validate package name to prevent injection (S-3)
|
|
332
419
|
validatePackageName(versionSpec);
|
|
333
|
-
// Reinstall with new version
|
|
334
|
-
|
|
420
|
+
// Reinstall with new version. --ignore-scripts blocks pre/post-install
|
|
421
|
+
// lifecycle hooks from the plugin package.
|
|
422
|
+
await execFileAsync('npm', ['install', '--ignore-scripts', '--prefix', this.config.pluginsDir, versionSpec], { timeout: 120000 });
|
|
335
423
|
// Update manifest
|
|
336
424
|
const installDir = path.join(this.config.pluginsDir, 'node_modules');
|
|
337
425
|
const packageJsonPath = path.join(installDir, packageName, 'package.json');
|
|
@@ -360,7 +448,12 @@ export class PluginManager {
|
|
|
360
448
|
if (!this.manifest) {
|
|
361
449
|
await this.initialize();
|
|
362
450
|
}
|
|
363
|
-
|
|
451
|
+
if (!isValidPluginKey(packageName)) {
|
|
452
|
+
return { success: false, error: `Invalid package name` };
|
|
453
|
+
}
|
|
454
|
+
const plugin = Object.hasOwn(this.manifest.plugins, packageName)
|
|
455
|
+
? this.manifest.plugins[packageName]
|
|
456
|
+
: undefined;
|
|
364
457
|
if (!plugin) {
|
|
365
458
|
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
366
459
|
}
|
|
@@ -104,8 +104,8 @@ export class PluginDiscoveryService {
|
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
106
|
console.log(`[PluginDiscovery] Resolving ${registry.name} via IPNS...`);
|
|
107
|
-
// Check cache first
|
|
108
|
-
const cached = this.cache.get(registry.
|
|
107
|
+
// Check cache first — key by registry.name (not ipnsName which can be shared)
|
|
108
|
+
const cached = this.cache.get(registry.name);
|
|
109
109
|
if (cached && Date.now() - cached.timestamp < this.config.cacheExpiry) {
|
|
110
110
|
console.log(`[PluginDiscovery] Cache hit for ${registry.name}`);
|
|
111
111
|
return {
|
|
@@ -138,15 +138,17 @@ export class PluginDiscoveryService {
|
|
|
138
138
|
if (!registryData) {
|
|
139
139
|
return this.createDemoRegistryAsync(registry);
|
|
140
140
|
}
|
|
141
|
-
// Verify registry signature if required
|
|
141
|
+
// Verify registry signature if required — treat failure as fatal to prevent
|
|
142
|
+
// a tampered registry from being served when requireVerification is enabled.
|
|
142
143
|
if (this.config.requireVerification && registryData.registrySignature) {
|
|
143
|
-
const verified = this.verifyRegistrySignature(registryData, registry.publicKey);
|
|
144
|
+
const verified = await this.verifyRegistrySignature(registryData, registry.publicKey);
|
|
144
145
|
if (!verified) {
|
|
145
|
-
console.
|
|
146
|
+
console.error(`[PluginDiscovery] Registry signature verification failed — falling back to demo registry`);
|
|
147
|
+
return this.createDemoRegistryAsync(registry);
|
|
146
148
|
}
|
|
147
149
|
}
|
|
148
|
-
// Cache the result
|
|
149
|
-
this.cache.set(registry.
|
|
150
|
+
// Cache the result — key by registry.name so separate registries don't share a slot
|
|
151
|
+
this.cache.set(registry.name, {
|
|
150
152
|
registry: registryData,
|
|
151
153
|
timestamp: Date.now(),
|
|
152
154
|
});
|
|
@@ -197,17 +199,17 @@ export class PluginDiscoveryService {
|
|
|
197
199
|
totalPlugins: plugins.length,
|
|
198
200
|
totalDownloads: plugins.reduce((sum, p) => sum + p.downloads, 0),
|
|
199
201
|
totalAuthors: 1,
|
|
200
|
-
featured: ['@
|
|
201
|
-
trending: ['@
|
|
202
|
-
newest: ['@
|
|
203
|
-
official: ['@
|
|
202
|
+
featured: ['@monomind/plugin-agentic-qe', '@monomind/plugin-prime-radiant', '@monomind/security', '@monomind/claims', '@monomind/teammate-plugin'],
|
|
203
|
+
trending: ['@monomind/plugin-agentic-qe', '@monomind/plugin-prime-radiant'],
|
|
204
|
+
newest: ['@monomind/plugin-agentic-qe', '@monomind/plugin-prime-radiant'],
|
|
205
|
+
official: ['@monomind/plugin-agentic-qe', '@monomind/plugin-prime-radiant', '@monomind/security', '@monomind/claims'],
|
|
204
206
|
compatibilityMatrix: [
|
|
205
|
-
{ pluginId: '@
|
|
206
|
-
{ pluginId: '@
|
|
207
|
+
{ pluginId: '@monomind/neural', pluginVersion: '3.0.0', monomindVersions: ['3.x'], tested: true },
|
|
208
|
+
{ pluginId: '@monomind/security', pluginVersion: '3.0.0', monomindVersions: ['3.x'], tested: true },
|
|
207
209
|
],
|
|
208
210
|
};
|
|
209
211
|
// Cache the demo registry
|
|
210
|
-
this.cache.set(registry.
|
|
212
|
+
this.cache.set(registry.name, {
|
|
211
213
|
registry: demoRegistry,
|
|
212
214
|
timestamp: Date.now(),
|
|
213
215
|
});
|
|
@@ -242,8 +244,8 @@ export class PluginDiscoveryService {
|
|
|
242
244
|
};
|
|
243
245
|
return [
|
|
244
246
|
{
|
|
245
|
-
id: '@
|
|
246
|
-
name: '@
|
|
247
|
+
id: '@monomind/neural',
|
|
248
|
+
name: '@monomind/neural',
|
|
247
249
|
displayName: 'Neural Patterns',
|
|
248
250
|
description: 'Neural pattern training and inference with WASM SIMD acceleration, MoE routing, and Flash Attention optimization',
|
|
249
251
|
version: '3.0.0',
|
|
@@ -261,7 +263,7 @@ export class PluginDiscoveryService {
|
|
|
261
263
|
lastUpdated: baseTime,
|
|
262
264
|
createdAt: '2024-01-01T00:00:00Z',
|
|
263
265
|
minMonomindVersion: '3.0.0',
|
|
264
|
-
dependencies: [{ name: '@
|
|
266
|
+
dependencies: [{ name: '@monomind/core', version: '^3.0.0' }],
|
|
265
267
|
type: 'core',
|
|
266
268
|
hooks: ['neural:train', 'neural:inference', 'pattern:learn'],
|
|
267
269
|
commands: ['neural train', 'neural predict', 'neural patterns'],
|
|
@@ -271,8 +273,8 @@ export class PluginDiscoveryService {
|
|
|
271
273
|
trustLevel: 'official',
|
|
272
274
|
},
|
|
273
275
|
{
|
|
274
|
-
id: '@
|
|
275
|
-
name: '@
|
|
276
|
+
id: '@monomind/security',
|
|
277
|
+
name: '@monomind/security',
|
|
276
278
|
displayName: 'Security Scanner',
|
|
277
279
|
description: 'Security scanning, CVE detection, and compliance auditing with threat modeling',
|
|
278
280
|
version: '3.0.0',
|
|
@@ -290,7 +292,7 @@ export class PluginDiscoveryService {
|
|
|
290
292
|
lastUpdated: baseTime,
|
|
291
293
|
createdAt: '2024-01-15T00:00:00Z',
|
|
292
294
|
minMonomindVersion: '3.0.0',
|
|
293
|
-
dependencies: [{ name: '@
|
|
295
|
+
dependencies: [{ name: '@monomind/core', version: '^3.0.0' }],
|
|
294
296
|
type: 'command',
|
|
295
297
|
hooks: ['security:scan', 'security:audit'],
|
|
296
298
|
commands: ['security scan', 'security audit', 'security cve', 'security threats'],
|
|
@@ -307,8 +309,8 @@ export class PluginDiscoveryService {
|
|
|
307
309
|
},
|
|
308
310
|
},
|
|
309
311
|
{
|
|
310
|
-
id: '@
|
|
311
|
-
name: '@
|
|
312
|
+
id: '@monomind/embeddings',
|
|
313
|
+
name: '@monomind/embeddings',
|
|
312
314
|
displayName: 'Vector Embeddings',
|
|
313
315
|
description: 'Vector embeddings service with sql.js, document chunking, and hyperbolic embeddings',
|
|
314
316
|
version: '3.0.0',
|
|
@@ -327,7 +329,7 @@ export class PluginDiscoveryService {
|
|
|
327
329
|
createdAt: '2024-02-01T00:00:00Z',
|
|
328
330
|
minMonomindVersion: '3.0.0',
|
|
329
331
|
dependencies: [
|
|
330
|
-
{ name: '@
|
|
332
|
+
{ name: '@monomind/core', version: '^3.0.0' },
|
|
331
333
|
{ name: 'sql.js', version: '^1.8.0' },
|
|
332
334
|
],
|
|
333
335
|
type: 'core',
|
|
@@ -339,8 +341,8 @@ export class PluginDiscoveryService {
|
|
|
339
341
|
trustLevel: 'official',
|
|
340
342
|
},
|
|
341
343
|
{
|
|
342
|
-
id: '@
|
|
343
|
-
name: '@
|
|
344
|
+
id: '@monomind/claims',
|
|
345
|
+
name: '@monomind/claims',
|
|
344
346
|
displayName: 'Claims Authorization',
|
|
345
347
|
description: 'Claims-based authorization system for fine-grained access control',
|
|
346
348
|
version: '3.0.0',
|
|
@@ -358,7 +360,7 @@ export class PluginDiscoveryService {
|
|
|
358
360
|
lastUpdated: baseTime,
|
|
359
361
|
createdAt: '2024-02-15T00:00:00Z',
|
|
360
362
|
minMonomindVersion: '3.0.0',
|
|
361
|
-
dependencies: [{ name: '@
|
|
363
|
+
dependencies: [{ name: '@monomind/core', version: '^3.0.0' }],
|
|
362
364
|
type: 'core',
|
|
363
365
|
hooks: ['claims:check', 'claims:grant'],
|
|
364
366
|
commands: ['claims check', 'claims grant', 'claims revoke', 'claims list'],
|
|
@@ -368,8 +370,8 @@ export class PluginDiscoveryService {
|
|
|
368
370
|
trustLevel: 'official',
|
|
369
371
|
},
|
|
370
372
|
{
|
|
371
|
-
id: '@
|
|
372
|
-
name: '@
|
|
373
|
+
id: '@monomind/performance',
|
|
374
|
+
name: '@monomind/performance',
|
|
373
375
|
displayName: 'Performance Profiler',
|
|
374
376
|
description: 'Performance profiling, benchmarking, and optimization recommendations',
|
|
375
377
|
version: '3.0.0',
|
|
@@ -387,7 +389,7 @@ export class PluginDiscoveryService {
|
|
|
387
389
|
lastUpdated: baseTime,
|
|
388
390
|
createdAt: '2024-03-01T00:00:00Z',
|
|
389
391
|
minMonomindVersion: '3.0.0',
|
|
390
|
-
dependencies: [{ name: '@
|
|
392
|
+
dependencies: [{ name: '@monomind/core', version: '^3.0.0' }],
|
|
391
393
|
type: 'command',
|
|
392
394
|
hooks: ['performance:start', 'performance:stop'],
|
|
393
395
|
commands: ['performance benchmark', 'performance profile', 'performance metrics'],
|
|
@@ -416,7 +418,7 @@ export class PluginDiscoveryService {
|
|
|
416
418
|
lastUpdated: baseTime,
|
|
417
419
|
createdAt: '2024-06-01T00:00:00Z',
|
|
418
420
|
minMonomindVersion: '3.0.0',
|
|
419
|
-
dependencies: [{ name: '@
|
|
421
|
+
dependencies: [{ name: '@monomind/core', version: '^3.0.0' }],
|
|
420
422
|
type: 'integration',
|
|
421
423
|
hooks: ['analytics:track', 'analytics:report'],
|
|
422
424
|
commands: ['analytics dashboard', 'analytics export'],
|
|
@@ -445,7 +447,7 @@ export class PluginDiscoveryService {
|
|
|
445
447
|
lastUpdated: baseTime,
|
|
446
448
|
createdAt: '2024-08-01T00:00:00Z',
|
|
447
449
|
minMonomindVersion: '3.0.0',
|
|
448
|
-
dependencies: [{ name: '@
|
|
450
|
+
dependencies: [{ name: '@monomind/core', version: '^3.0.0' }],
|
|
449
451
|
type: 'agent',
|
|
450
452
|
hooks: ['agent:spawn', 'agent:complete'],
|
|
451
453
|
commands: ['agents custom list', 'agents custom spawn'],
|
|
@@ -475,7 +477,7 @@ export class PluginDiscoveryService {
|
|
|
475
477
|
createdAt: '2024-09-01T00:00:00Z',
|
|
476
478
|
minMonomindVersion: '3.0.0',
|
|
477
479
|
dependencies: [
|
|
478
|
-
{ name: '@
|
|
480
|
+
{ name: '@monomind/core', version: '^3.0.0' },
|
|
479
481
|
{ name: '@slack/web-api', version: '^6.0.0' },
|
|
480
482
|
],
|
|
481
483
|
type: 'integration',
|
|
@@ -488,8 +490,8 @@ export class PluginDiscoveryService {
|
|
|
488
490
|
},
|
|
489
491
|
// Plugin SDK - Unified Plugin SDK for creating plugins
|
|
490
492
|
{
|
|
491
|
-
id: '@
|
|
492
|
-
name: '@
|
|
493
|
+
id: '@monomind/plugins',
|
|
494
|
+
name: '@monomind/plugins',
|
|
493
495
|
displayName: 'Plugin SDK',
|
|
494
496
|
description: 'Unified Plugin SDK for Monomind - Worker, Hook, and Provider Integration. Create, test, and publish MonoMind plugins.',
|
|
495
497
|
version: '3.0.0-alpha.2',
|
|
@@ -508,7 +510,7 @@ export class PluginDiscoveryService {
|
|
|
508
510
|
createdAt: '2024-04-01T00:00:00Z',
|
|
509
511
|
minMonomindVersion: '3.0.0',
|
|
510
512
|
dependencies: [
|
|
511
|
-
{ name: '@
|
|
513
|
+
{ name: '@monomind/core', version: '^3.0.0' },
|
|
512
514
|
],
|
|
513
515
|
type: 'core',
|
|
514
516
|
hooks: [
|
|
@@ -533,8 +535,8 @@ export class PluginDiscoveryService {
|
|
|
533
535
|
},
|
|
534
536
|
// Agentic QE - AI-powered quality engineering
|
|
535
537
|
{
|
|
536
|
-
id: '@
|
|
537
|
-
name: '@
|
|
538
|
+
id: '@monomind/plugin-agentic-qe',
|
|
539
|
+
name: '@monomind/plugin-agentic-qe',
|
|
538
540
|
displayName: 'Agentic Quality Engineering',
|
|
539
541
|
description: 'AI-powered quality engineering with 58 agents that write tests, find bugs, predict defects, scan security, and perform chaos engineering safely.',
|
|
540
542
|
version: '3.0.0-alpha.3',
|
|
@@ -553,7 +555,7 @@ export class PluginDiscoveryService {
|
|
|
553
555
|
createdAt: '2026-01-20T00:00:00Z',
|
|
554
556
|
minMonomindVersion: '3.0.0',
|
|
555
557
|
dependencies: [
|
|
556
|
-
{ name: '@
|
|
558
|
+
{ name: '@monomind/core', version: '^3.0.0' },
|
|
557
559
|
],
|
|
558
560
|
type: 'integration',
|
|
559
561
|
hooks: [
|
|
@@ -593,8 +595,8 @@ export class PluginDiscoveryService {
|
|
|
593
595
|
},
|
|
594
596
|
// Prime Radiant - Mathematical coherence and consensus verification
|
|
595
597
|
{
|
|
596
|
-
id: '@
|
|
597
|
-
name: '@
|
|
598
|
+
id: '@monomind/plugin-prime-radiant',
|
|
599
|
+
name: '@monomind/plugin-prime-radiant',
|
|
598
600
|
displayName: 'Prime Radiant',
|
|
599
601
|
description: 'Mathematical AI that catches contradictions, verifies consensus, prevents hallucinations, and analyzes swarm stability using sheaf cohomology and spectral graph theory.',
|
|
600
602
|
version: '0.1.5',
|
|
@@ -613,7 +615,7 @@ export class PluginDiscoveryService {
|
|
|
613
615
|
createdAt: '2026-01-20T00:00:00Z',
|
|
614
616
|
minMonomindVersion: '3.0.0',
|
|
615
617
|
dependencies: [
|
|
616
|
-
{ name: '@
|
|
618
|
+
{ name: '@monomind/core', version: '^3.0.0' },
|
|
617
619
|
],
|
|
618
620
|
type: 'integration',
|
|
619
621
|
hooks: [
|
|
@@ -651,8 +653,8 @@ export class PluginDiscoveryService {
|
|
|
651
653
|
},
|
|
652
654
|
// Gas Town Bridge - Multi-agent orchestrator integration
|
|
653
655
|
{
|
|
654
|
-
id: '@
|
|
655
|
-
name: '@
|
|
656
|
+
id: '@monomind/plugin-gastown-bridge',
|
|
657
|
+
name: '@monomind/plugin-gastown-bridge',
|
|
656
658
|
displayName: 'Gas Town Bridge',
|
|
657
659
|
description: 'Gas Town orchestrator integration with WASM-accelerated formula parsing, Beads sync, convoy management, and graph analysis (352x faster).',
|
|
658
660
|
version: '0.1.0',
|
|
@@ -670,7 +672,7 @@ export class PluginDiscoveryService {
|
|
|
670
672
|
lastUpdated: baseTime,
|
|
671
673
|
createdAt: '2026-01-24T00:00:00Z',
|
|
672
674
|
minMonomindVersion: '3.0.0',
|
|
673
|
-
dependencies: [{ name: '@
|
|
675
|
+
dependencies: [{ name: '@monomind/core', version: '^3.0.0' }],
|
|
674
676
|
type: 'integration',
|
|
675
677
|
hooks: ['gastown:sync', 'gastown:formula', 'gastown:convoy'],
|
|
676
678
|
commands: ['gastown beads', 'gastown convoy', 'gastown formula', 'gastown sync'],
|
|
@@ -688,8 +690,8 @@ export class PluginDiscoveryService {
|
|
|
688
690
|
},
|
|
689
691
|
// Teammate Plugin - Claude Code v2.1.19+ integration
|
|
690
692
|
{
|
|
691
|
-
id: '@
|
|
692
|
-
name: '@
|
|
693
|
+
id: '@monomind/teammate-plugin',
|
|
694
|
+
name: '@monomind/teammate-plugin',
|
|
693
695
|
displayName: 'Teammate Plugin',
|
|
694
696
|
description: 'Native TeammateTool integration for Claude Code v2.1.19+. Multi-agent team orchestration with plan approval workflows, delegation, messaging, and BMSSP-optimized topology routing. 21 MCP tools.',
|
|
695
697
|
version: '1.0.0-alpha.1',
|
|
@@ -708,7 +710,7 @@ export class PluginDiscoveryService {
|
|
|
708
710
|
createdAt: '2026-01-25T00:00:00Z',
|
|
709
711
|
minMonomindVersion: '3.0.0',
|
|
710
712
|
dependencies: [
|
|
711
|
-
{ name: '@
|
|
713
|
+
{ name: '@monomind/core', version: '^3.0.0' },
|
|
712
714
|
{ name: 'eventemitter3', version: '^5.0.1' },
|
|
713
715
|
],
|
|
714
716
|
type: 'integration',
|
|
@@ -735,17 +737,17 @@ export class PluginDiscoveryService {
|
|
|
735
737
|
const basePlugins = this.getDemoPlugins();
|
|
736
738
|
// Only fetch stats for real npm packages
|
|
737
739
|
const realNpmPackages = [
|
|
738
|
-
'@
|
|
739
|
-
'@
|
|
740
|
-
'@
|
|
741
|
-
'@
|
|
742
|
-
'@
|
|
743
|
-
'@
|
|
744
|
-
'@
|
|
745
|
-
'@
|
|
746
|
-
'@
|
|
740
|
+
'@monomind/plugin-agentic-qe',
|
|
741
|
+
'@monomind/plugin-prime-radiant',
|
|
742
|
+
'@monomind/claims',
|
|
743
|
+
'@monomind/security',
|
|
744
|
+
'@monomind/plugins',
|
|
745
|
+
'@monomind/embeddings',
|
|
746
|
+
'@monomind/neural',
|
|
747
|
+
'@monomind/performance',
|
|
748
|
+
'@monomind/teammate-plugin',
|
|
747
749
|
// Gas Town Bridge
|
|
748
|
-
'@
|
|
750
|
+
'@monomind/plugin-gastown-bridge',
|
|
749
751
|
];
|
|
750
752
|
// Fetch stats in parallel
|
|
751
753
|
const statsPromises = realNpmPackages.map(pkg => fetchNpmStats(pkg));
|
|
@@ -784,14 +786,30 @@ export class PluginDiscoveryService {
|
|
|
784
786
|
});
|
|
785
787
|
}
|
|
786
788
|
/**
|
|
787
|
-
* Verify registry signature
|
|
789
|
+
* Verify registry signature using real Ed25519
|
|
788
790
|
*/
|
|
789
|
-
verifyRegistrySignature(registry, expectedPublicKey) {
|
|
790
|
-
if (!registry.registrySignature || !registry.registryPublicKey)
|
|
791
|
+
async verifyRegistrySignature(registry, expectedPublicKey) {
|
|
792
|
+
if (!registry.registrySignature || !registry.registryPublicKey)
|
|
793
|
+
return false;
|
|
794
|
+
if (registry.registryPublicKey !== expectedPublicKey)
|
|
795
|
+
return false;
|
|
796
|
+
const sigHex = registry.registrySignature.replace(/^ed25519:/, '');
|
|
797
|
+
const pubKeyHex = registry.registryPublicKey.replace(/^ed25519:/, '');
|
|
798
|
+
if (sigHex.length !== 128 || pubKeyHex.length !== 64)
|
|
799
|
+
return false;
|
|
800
|
+
const content = JSON.stringify({
|
|
801
|
+
version: registry.version,
|
|
802
|
+
updatedAt: registry.updatedAt,
|
|
803
|
+
plugins: registry.plugins.map(p => ({ id: p.id, cid: p.cid, checksum: p.checksum, version: p.version })),
|
|
804
|
+
totalPlugins: registry.totalPlugins,
|
|
805
|
+
});
|
|
806
|
+
try {
|
|
807
|
+
const ed = await import('@noble/ed25519');
|
|
808
|
+
return await ed.verifyAsync(Buffer.from(sigHex, 'hex'), Buffer.from(content), Buffer.from(pubKeyHex, 'hex'));
|
|
809
|
+
}
|
|
810
|
+
catch {
|
|
791
811
|
return false;
|
|
792
812
|
}
|
|
793
|
-
// In production: Verify Ed25519 signature
|
|
794
|
-
return registry.registryPublicKey.startsWith(expectedPublicKey.split(':')[0]);
|
|
795
813
|
}
|
|
796
814
|
/**
|
|
797
815
|
* List available registries
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - Open: Failing fast, not calling service
|
|
7
7
|
* - Half-Open: Testing if service recovered
|
|
8
8
|
*
|
|
9
|
-
* @module @
|
|
9
|
+
* @module @monomind/cli/production/circuit-breaker
|
|
10
10
|
*/
|
|
11
11
|
// ============================================================================
|
|
12
12
|
// Default Configuration
|
|
@@ -115,6 +115,9 @@ export class CircuitBreaker {
|
|
|
115
115
|
// If half-open and we fail, go back to open
|
|
116
116
|
if (this.state === 'half-open') {
|
|
117
117
|
this.transitionTo('open');
|
|
118
|
+
if (this.config.onOpen) {
|
|
119
|
+
this.config.onOpen(this.failures.length);
|
|
120
|
+
}
|
|
118
121
|
}
|
|
119
122
|
}
|
|
120
123
|
/**
|
|
@@ -210,11 +213,15 @@ export class CircuitBreaker {
|
|
|
210
213
|
// Circuit Breaker Registry
|
|
211
214
|
// ============================================================================
|
|
212
215
|
const circuitBreakers = new Map();
|
|
216
|
+
const MAX_CIRCUIT_BREAKERS = 1000;
|
|
213
217
|
/**
|
|
214
218
|
* Get or create a circuit breaker by name
|
|
215
219
|
*/
|
|
216
220
|
export function getCircuitBreaker(name, config) {
|
|
217
221
|
if (!circuitBreakers.has(name)) {
|
|
222
|
+
if (circuitBreakers.size >= MAX_CIRCUIT_BREAKERS) {
|
|
223
|
+
throw new Error(`Circuit breaker registry full (max ${MAX_CIRCUIT_BREAKERS})`);
|
|
224
|
+
}
|
|
218
225
|
circuitBreakers.set(name, new CircuitBreaker(config));
|
|
219
226
|
}
|
|
220
227
|
return circuitBreakers.get(name);
|