monomind 2.7.11 → 2.7.13
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/LICENSE +0 -0
- package/README.md +0 -0
- package/bin/cli.js +55 -4
- package/package.json +4 -47
- package/bin/npx-safe-launch.js +0 -9
- package/packages/@monomind/cli/.claude/agents/architecture/system-design/arch-system-design.md +0 -54
- package/packages/@monomind/cli/.claude/agents/consensus/crdt-synchronizer.md +0 -977
- package/packages/@monomind/cli/.claude/agents/consensus/quorum-manager.md +0 -106
- package/packages/@monomind/cli/.claude/agents/consensus/security-manager.md +0 -602
- package/packages/@monomind/cli/.claude/agents/core/coder.md +0 -271
- package/packages/@monomind/cli/.claude/agents/core/coordinator.md +0 -133
- package/packages/@monomind/cli/.claude/agents/core/planner.md +0 -179
- package/packages/@monomind/cli/.claude/agents/core/researcher.md +0 -197
- package/packages/@monomind/cli/.claude/agents/core/reviewer.md +0 -336
- package/packages/@monomind/cli/.claude/agents/core/tester.md +0 -326
- package/packages/@monomind/cli/.claude/agents/design/design-monodesign.md +0 -121
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-ai-data-remediation-engineer.md +0 -212
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-ai-engineer.md +0 -165
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-autonomous-optimization-architect.md +0 -108
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-backend-architect.md +0 -254
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-code-reviewer.md +0 -95
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-data-engineer.md +0 -307
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-database-optimizer.md +0 -200
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-devops-automator.md +0 -430
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-embedded-firmware-engineer.md +0 -174
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-feishu-integration-developer.md +0 -607
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-frontend-developer.md +0 -249
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-git-workflow-master.md +0 -108
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-incident-response-commander.md +0 -482
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-mobile-app-builder.md +0 -499
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-rapid-prototyper.md +0 -463
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-security-engineer.md +0 -303
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-senior-developer.md +0 -195
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-software-architect.md +0 -100
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-solidity-smart-contract-engineer.md +0 -528
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-sre.md +0 -114
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-technical-writer.md +0 -412
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-threat-detection-engineer.md +0 -540
- package/packages/@monomind/cli/.claude/agents/engineering/engineering-wechat-mini-program-developer.md +0 -351
- package/packages/@monomind/cli/.claude/agents/github/code-review-swarm.md +0 -557
- package/packages/@monomind/cli/.claude/agents/github/github-modes.md +0 -154
- package/packages/@monomind/cli/.claude/agents/github/issue-tracker.md +0 -297
- package/packages/@monomind/cli/.claude/agents/github/multi-repo-swarm.md +0 -525
- package/packages/@monomind/cli/.claude/agents/github/pr-manager.md +0 -161
- package/packages/@monomind/cli/.claude/agents/github/project-board-sync.md +0 -478
- package/packages/@monomind/cli/.claude/agents/github/release-manager.md +0 -296
- package/packages/@monomind/cli/.claude/agents/github/repo-architect.md +0 -351
- package/packages/@monomind/cli/.claude/agents/github/swarm-issue.md +0 -548
- package/packages/@monomind/cli/.claude/agents/github/swarm-pr.md +0 -427
- package/packages/@monomind/cli/.claude/agents/github/sync-coordinator.md +0 -355
- package/packages/@monomind/cli/.claude/agents/github/workflow-automation.md +0 -640
- package/packages/@monomind/cli/.claude/agents/goal/goal-planner.md +0 -167
- package/packages/@monomind/cli/.claude/agents/hive-mind/collective-intelligence-coordinator.md +0 -93
- package/packages/@monomind/cli/.claude/agents/hive-mind/scout-explorer.md +0 -241
- package/packages/@monomind/cli/.claude/agents/hive-mind/swarm-memory-manager.md +0 -192
- package/packages/@monomind/cli/.claude/agents/hive-mind/worker-specialist.md +0 -216
- package/packages/@monomind/cli/.claude/agents/marketing/marketing-competitive-content.md +0 -155
- package/packages/@monomind/cli/.claude/agents/marketing/marketing-cro-specialist.md +0 -147
- package/packages/@monomind/cli/.claude/agents/marketing/marketing-email-specialist.md +0 -90
- package/packages/@monomind/cli/.claude/agents/marketing/marketing-launch-strategist.md +0 -129
- package/packages/@monomind/cli/.claude/agents/marketing/marketing-pricing-strategist.md +0 -127
- package/packages/@monomind/cli/.claude/agents/optimization/benchmark-suite.md +0 -665
- package/packages/@monomind/cli/.claude/agents/optimization/load-balancer.md +0 -431
- package/packages/@monomind/cli/.claude/agents/optimization/performance-monitor.md +0 -672
- package/packages/@monomind/cli/.claude/agents/optimization/resource-allocator.md +0 -674
- package/packages/@monomind/cli/.claude/agents/optimization/topology-optimizer.md +0 -808
- package/packages/@monomind/cli/.claude/agents/schemas/architecture-output.json +0 -43
- package/packages/@monomind/cli/.claude/agents/schemas/code-review-output.json +0 -28
- package/packages/@monomind/cli/.claude/agents/schemas/generic-task-input.json +0 -12
- package/packages/@monomind/cli/.claude/agents/schemas/implementation-output.json +0 -18
- package/packages/@monomind/cli/.claude/agents/schemas/research-output.json +0 -31
- package/packages/@monomind/cli/.claude/agents/schemas/security-audit-output.json +0 -29
- package/packages/@monomind/cli/.claude/agents/schemas/test-report-output.json +0 -29
- package/packages/@monomind/cli/.claude/agents/specialists/integration-architect.md +0 -94
- package/packages/@monomind/cli/.claude/agents/specialized/agentic-identity-trust.md +0 -388
- package/packages/@monomind/cli/.claude/agents/specialized/agents-orchestrator.md +0 -368
- package/packages/@monomind/cli/.claude/agents/specialized/automation-governance-architect.md +0 -217
- package/packages/@monomind/cli/.claude/agents/specialized/blockchain-security-auditor.md +0 -497
- package/packages/@monomind/cli/.claude/agents/specialized/compliance-auditor.md +0 -159
- package/packages/@monomind/cli/.claude/agents/specialized/identity-graph-operator.md +0 -261
- package/packages/@monomind/cli/.claude/agents/specialized/lsp-index-engineer.md +0 -315
- package/packages/@monomind/cli/.claude/agents/specialized/mobile/spec-mobile-react-native.md +0 -89
- package/packages/@monomind/cli/.claude/agents/specialized/specialized-cultural-intelligence-strategist.md +0 -89
- package/packages/@monomind/cli/.claude/agents/specialized/specialized-developer-advocate.md +0 -318
- package/packages/@monomind/cli/.claude/agents/specialized/specialized-document-generator.md +0 -56
- package/packages/@monomind/cli/.claude/agents/specialized/specialized-mcp-builder.md +0 -64
- package/packages/@monomind/cli/.claude/agents/specialized/specialized-model-qa.md +0 -489
- package/packages/@monomind/cli/.claude/agents/specialized/specialized-workflow-architect.md +0 -595
- package/packages/@monomind/cli/.claude/agents/specialized/zk-steward.md +0 -212
- package/packages/@monomind/cli/.claude/agents/swarm/mesh-coordinator.md +0 -97
- package/packages/@monomind/cli/.claude/agents/templates/automation-smart-agent.md +0 -185
- package/packages/@monomind/cli/.claude/agents/templates/coordinator-swarm-init.md +0 -83
- package/packages/@monomind/cli/.claude/agents/testing/production-validator.md +0 -375
- package/packages/@monomind/cli/.claude/agents/testing/tdd-london-swarm.md +0 -241
- package/packages/@monomind/cli/.claude/agents/testing/testing-accessibility-auditor.md +0 -322
- package/packages/@monomind/cli/.claude/agents/testing/testing-api-tester.md +0 -307
- package/packages/@monomind/cli/.claude/agents/testing/testing-evidence-collector.md +0 -213
- package/packages/@monomind/cli/.claude/agents/testing/testing-performance-benchmarker.md +0 -269
- package/packages/@monomind/cli/.claude/agents/testing/testing-test-results-analyzer.md +0 -306
- package/packages/@monomind/cli/.claude/agents/testing/testing-tool-evaluator.md +0 -395
- package/packages/@monomind/cli/.claude/agents/testing/testing-workflow-optimizer.md +0 -451
- package/packages/@monomind/cli/.claude/commands/agents/README.md +0 -14
- package/packages/@monomind/cli/.claude/commands/agents/agent-capabilities.md +0 -25
- package/packages/@monomind/cli/.claude/commands/agents/agent-coordination.md +0 -32
- package/packages/@monomind/cli/.claude/commands/agents/agent-spawning.md +0 -32
- package/packages/@monomind/cli/.claude/commands/agents/agent-types.md +0 -30
- package/packages/@monomind/cli/.claude/commands/analysis/README.md +0 -18
- package/packages/@monomind/cli/.claude/commands/analysis/bottleneck-detect.md +0 -69
- package/packages/@monomind/cli/.claude/commands/analysis/performance-bottlenecks.md +0 -59
- package/packages/@monomind/cli/.claude/commands/analysis/performance-report.md +0 -52
- package/packages/@monomind/cli/.claude/commands/analysis/token-usage.md +0 -47
- package/packages/@monomind/cli/.claude/commands/automation/README.md +0 -19
- package/packages/@monomind/cli/.claude/commands/automation/auto-agent.md +0 -86
- package/packages/@monomind/cli/.claude/commands/automation/self-healing.md +0 -108
- package/packages/@monomind/cli/.claude/commands/automation/session-memory.md +0 -89
- package/packages/@monomind/cli/.claude/commands/automation/smart-agents.md +0 -81
- package/packages/@monomind/cli/.claude/commands/automation/smart-spawn.md +0 -66
- package/packages/@monomind/cli/.claude/commands/automation/workflow-select.md +0 -60
- package/packages/@monomind/cli/.claude/commands/coordination/README.md +0 -13
- package/packages/@monomind/cli/.claude/commands/coordination/agent-spawn.md +0 -69
- package/packages/@monomind/cli/.claude/commands/coordination/swarm-init.md +0 -82
- package/packages/@monomind/cli/.claude/commands/coordination/task-orchestrate.md +0 -79
- package/packages/@monomind/cli/.claude/commands/github/README.md +0 -24
- package/packages/@monomind/cli/.claude/commands/github/github-modes.md +0 -151
- package/packages/@monomind/cli/.claude/commands/github/issue-tracker.md +0 -291
- package/packages/@monomind/cli/.claude/commands/github/pr-manager.md +0 -171
- package/packages/@monomind/cli/.claude/commands/github/release-manager.md +0 -343
- package/packages/@monomind/cli/.claude/commands/github/repo-architect.md +0 -372
- package/packages/@monomind/cli/.claude/commands/github/sync-coordinator.md +0 -297
- package/packages/@monomind/cli/.claude/commands/hive-mind/README.md +0 -42
- package/packages/@monomind/cli/.claude/commands/hive-mind/hive-mind-consensus.md +0 -72
- package/packages/@monomind/cli/.claude/commands/hive-mind/hive-mind-init.md +0 -68
- package/packages/@monomind/cli/.claude/commands/hive-mind/hive-mind-memory.md +0 -73
- package/packages/@monomind/cli/.claude/commands/hive-mind/hive-mind-spawn.md +0 -82
- package/packages/@monomind/cli/.claude/commands/hive-mind/hive-mind-status.md +0 -56
- package/packages/@monomind/cli/.claude/commands/hive-mind/hive-mind-stop.md +0 -55
- package/packages/@monomind/cli/.claude/commands/hive-mind/hive-mind.md +0 -87
- package/packages/@monomind/cli/.claude/commands/hooks/README.md +0 -66
- package/packages/@monomind/cli/.claude/commands/hooks/overview.md +0 -112
- package/packages/@monomind/cli/.claude/commands/hooks/post-edit.md +0 -78
- package/packages/@monomind/cli/.claude/commands/hooks/post-task.md +0 -62
- package/packages/@monomind/cli/.claude/commands/hooks/pre-edit.md +0 -81
- package/packages/@monomind/cli/.claude/commands/hooks/pre-task.md +0 -73
- package/packages/@monomind/cli/.claude/commands/hooks/session-end.md +0 -82
- package/packages/@monomind/cli/.claude/commands/hooks/setup.md +0 -132
- package/packages/@monomind/cli/.claude/commands/mastermind/_repeat.md +0 -492
- package/packages/@monomind/cli/.claude/commands/mastermind/_taskfile.md +0 -232
- package/packages/@monomind/cli/.claude/commands/mastermind/adr.md +0 -9
- package/packages/@monomind/cli/.claude/commands/mastermind/approvev1.md +0 -94
- package/packages/@monomind/cli/.claude/commands/mastermind/architect.md +0 -52
- package/packages/@monomind/cli/.claude/commands/mastermind/autodev.md +0 -28
- package/packages/@monomind/cli/.claude/commands/mastermind/brain.md +0 -99
- package/packages/@monomind/cli/.claude/commands/mastermind/budget.md +0 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/build.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/code-review.md +0 -314
- package/packages/@monomind/cli/.claude/commands/mastermind/content.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/createorg.md +0 -143
- package/packages/@monomind/cli/.claude/commands/mastermind/createtask.md +0 -372
- package/packages/@monomind/cli/.claude/commands/mastermind/debug.md +0 -19
- package/packages/@monomind/cli/.claude/commands/mastermind/design.md +0 -17
- package/packages/@monomind/cli/.claude/commands/mastermind/do.md +0 -525
- package/packages/@monomind/cli/.claude/commands/mastermind/execute.md +0 -17
- package/packages/@monomind/cli/.claude/commands/mastermind/finance.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/finish.md +0 -17
- package/packages/@monomind/cli/.claude/commands/mastermind/graph-status.md +0 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/help.md +0 -133
- package/packages/@monomind/cli/.claude/commands/mastermind/idea.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/ideate.md +0 -258
- package/packages/@monomind/cli/.claude/commands/mastermind/improve.md +0 -342
- package/packages/@monomind/cli/.claude/commands/mastermind/loops.md +0 -5
- package/packages/@monomind/cli/.claude/commands/mastermind/marketing.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/master.md +0 -1140
- package/packages/@monomind/cli/.claude/commands/mastermind/memory.md +0 -227
- package/packages/@monomind/cli/.claude/commands/mastermind/okf-export.md +0 -14
- package/packages/@monomind/cli/.claude/commands/mastermind/okf-import.md +0 -15
- package/packages/@monomind/cli/.claude/commands/mastermind/ops.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/orgs.md +0 -18
- package/packages/@monomind/cli/.claude/commands/mastermind/orgstatus.md +0 -56
- package/packages/@monomind/cli/.claude/commands/mastermind/plan.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/receive-review.md +0 -17
- package/packages/@monomind/cli/.claude/commands/mastermind/references/antigravity-tools.md +0 -60
- package/packages/@monomind/cli/.claude/commands/mastermind/references/claude-code-tools.md +0 -50
- package/packages/@monomind/cli/.claude/commands/mastermind/references/codex-tools.md +0 -64
- package/packages/@monomind/cli/.claude/commands/mastermind/references/copilot-tools.md +0 -49
- package/packages/@monomind/cli/.claude/commands/mastermind/references/gemini-tools.md +0 -63
- package/packages/@monomind/cli/.claude/commands/mastermind/references/pi-tools.md +0 -28
- package/packages/@monomind/cli/.claude/commands/mastermind/release.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/repeat.md +0 -254
- package/packages/@monomind/cli/.claude/commands/mastermind/research.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/review.md +0 -34
- package/packages/@monomind/cli/.claude/commands/mastermind/runorg.md +0 -71
- package/packages/@monomind/cli/.claude/commands/mastermind/runorgv1.md +0 -159
- package/packages/@monomind/cli/.claude/commands/mastermind/sales.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/skill-builder.md +0 -17
- package/packages/@monomind/cli/.claude/commands/mastermind/specialagents.md +0 -122
- package/packages/@monomind/cli/.claude/commands/mastermind/stoporg.md +0 -78
- package/packages/@monomind/cli/.claude/commands/mastermind/swarm.md +0 -158
- package/packages/@monomind/cli/.claude/commands/mastermind/taskdev.md +0 -23
- package/packages/@monomind/cli/.claude/commands/mastermind/tdd.md +0 -19
- package/packages/@monomind/cli/.claude/commands/mastermind/techport.md +0 -27
- package/packages/@monomind/cli/.claude/commands/mastermind/topology.md +0 -121
- package/packages/@monomind/cli/.claude/commands/mastermind/understand.md +0 -136
- package/packages/@monomind/cli/.claude/commands/mastermind/verify.md +0 -19
- package/packages/@monomind/cli/.claude/commands/mastermind/worktree.md +0 -17
- package/packages/@monomind/cli/.claude/commands/mastermind.md +0 -140
- package/packages/@monomind/cli/.claude/commands/memory/README.md +0 -79
- package/packages/@monomind/cli/.claude/commands/memory/memory-search.md +0 -77
- package/packages/@monomind/cli/.claude/commands/monitoring/README.md +0 -69
- package/packages/@monomind/cli/.claude/commands/monitoring/agent-metrics.md +0 -65
- package/packages/@monomind/cli/.claude/commands/monitoring/agents.md +0 -71
- package/packages/@monomind/cli/.claude/commands/monitoring/status.md +0 -108
- package/packages/@monomind/cli/.claude/commands/monobrowse.md +0 -21
- package/packages/@monomind/cli/.claude/commands/monoes/README.md +0 -30
- package/packages/@monomind/cli/.claude/commands/monoes/install.md +0 -163
- package/packages/@monomind/cli/.claude/commands/monoes/monoagent.md +0 -148
- package/packages/@monomind/cli/.claude/commands/monoes/monoclip.md +0 -64
- package/packages/@monomind/cli/.claude/commands/monoes/monotask.md +0 -137
- package/packages/@monomind/cli/.claude/commands/monograph/README.md +0 -102
- package/packages/@monomind/cli/.claude/commands/monograph/monograph-build.md +0 -79
- package/packages/@monomind/cli/.claude/commands/monograph/monograph-search.md +0 -96
- package/packages/@monomind/cli/.claude/commands/monograph/monograph-stats.md +0 -53
- package/packages/@monomind/cli/.claude/commands/monograph/monograph-watch.md +0 -63
- package/packages/@monomind/cli/.claude/commands/monograph/monograph-wiki.md +0 -91
- package/packages/@monomind/cli/.claude/commands/optimization/auto-topology.md +0 -85
- package/packages/@monomind/cli/.claude/commands/optimization/performance-optimize.md +0 -79
- package/packages/@monomind/cli/.claude/commands/pair/README.md +0 -79
- package/packages/@monomind/cli/.claude/commands/pair/examples.md +0 -156
- package/packages/@monomind/cli/.claude/commands/pair/modes.md +0 -122
- package/packages/@monomind/cli/.claude/commands/pair/session.md +0 -124
- package/packages/@monomind/cli/.claude/commands/stream-chain/pipeline.md +0 -116
- package/packages/@monomind/cli/.claude/commands/stream-chain/run.md +0 -156
- package/packages/@monomind/cli/.claude/commands/swarm/README.md +0 -40
- package/packages/@monomind/cli/.claude/commands/swarm/analysis.md +0 -73
- package/packages/@monomind/cli/.claude/commands/swarm/development.md +0 -72
- package/packages/@monomind/cli/.claude/commands/swarm/examples.md +0 -103
- package/packages/@monomind/cli/.claude/commands/swarm/maintenance.md +0 -75
- package/packages/@monomind/cli/.claude/commands/swarm/optimization.md +0 -84
- package/packages/@monomind/cli/.claude/commands/swarm/research.md +0 -76
- package/packages/@monomind/cli/.claude/commands/swarm/swarm.md +0 -79
- package/packages/@monomind/cli/.claude/commands/swarm/testing.md +0 -80
- package/packages/@monomind/cli/.claude/commands/tokens.md +0 -18
- package/packages/@monomind/cli/.claude/commands/truth/start.md +0 -121
- package/packages/@monomind/cli/.claude/commands/ts.md +0 -14
- package/packages/@monomind/cli/.claude/commands/workflows/README.md +0 -64
- package/packages/@monomind/cli/.claude/commands/workflows/development.md +0 -86
- package/packages/@monomind/cli/.claude/commands/workflows/research.md +0 -89
- package/packages/@monomind/cli/.claude/commands/workflows/workflow-create.md +0 -83
- package/packages/@monomind/cli/.claude/commands/workflows/workflow-execute.md +0 -101
- package/packages/@monomind/cli/.claude/commands/workflows/workflow-export.md +0 -88
- package/packages/@monomind/cli/.claude/helpers/build-skill-registry.cjs +0 -323
- package/packages/@monomind/cli/.claude/helpers/control-start.cjs +0 -327
- package/packages/@monomind/cli/.claude/helpers/control-stop.cjs +0 -95
- package/packages/@monomind/cli/.claude/helpers/event-logger.cjs +0 -266
- package/packages/@monomind/cli/.claude/helpers/graphify-freshen.cjs +0 -148
- package/packages/@monomind/cli/.claude/helpers/handlers/adr-draft-handler.cjs +0 -78
- package/packages/@monomind/cli/.claude/helpers/handlers/agent-start-handler.cjs +0 -132
- package/packages/@monomind/cli/.claude/helpers/handlers/budget-status-handler.cjs +0 -14
- package/packages/@monomind/cli/.claude/helpers/handlers/capture-handler.cjs +0 -736
- package/packages/@monomind/cli/.claude/helpers/handlers/compact-handler.cjs +0 -35
- package/packages/@monomind/cli/.claude/helpers/handlers/edit-handler.cjs +0 -178
- package/packages/@monomind/cli/.claude/helpers/handlers/gates-handler.cjs +0 -494
- package/packages/@monomind/cli/.claude/helpers/handlers/graph-status-handler.cjs +0 -45
- package/packages/@monomind/cli/.claude/helpers/handlers/loops-status-handler.cjs +0 -48
- package/packages/@monomind/cli/.claude/helpers/handlers/route-handler.cjs +0 -770
- package/packages/@monomind/cli/.claude/helpers/handlers/session-handler.cjs +0 -286
- package/packages/@monomind/cli/.claude/helpers/handlers/session-restore-handler.cjs +0 -573
- package/packages/@monomind/cli/.claude/helpers/handlers/stats-handler.cjs +0 -14
- package/packages/@monomind/cli/.claude/helpers/handlers/task-handler.cjs +0 -241
- package/packages/@monomind/cli/.claude/helpers/hook-handler.cjs +0 -951
- package/packages/@monomind/cli/.claude/helpers/intelligence.cjs +0 -510
- package/packages/@monomind/cli/.claude/helpers/learning-service.mjs +0 -61
- package/packages/@monomind/cli/.claude/helpers/loop-tracker.cjs +0 -119
- package/packages/@monomind/cli/.claude/helpers/mastermind-activate.cjs +0 -35
- package/packages/@monomind/cli/.claude/helpers/memory-palace.cjs +0 -461
- package/packages/@monomind/cli/.claude/helpers/memory.cjs +0 -193
- package/packages/@monomind/cli/.claude/helpers/metrics-db.mjs +0 -87
- package/packages/@monomind/cli/.claude/helpers/monolean-activate.cjs +0 -30
- package/packages/@monomind/cli/.claude/helpers/monolean-config.cjs +0 -76
- package/packages/@monomind/cli/.claude/helpers/monolean-instructions.cjs +0 -109
- package/packages/@monomind/cli/.claude/helpers/monolean-propagate.cjs +0 -13
- package/packages/@monomind/cli/.claude/helpers/monolean-tracker.cjs +0 -18
- package/packages/@monomind/cli/.claude/helpers/router.cjs +0 -571
- package/packages/@monomind/cli/.claude/helpers/session.cjs +0 -145
- package/packages/@monomind/cli/.claude/helpers/skill-registry.json +0 -4948
- package/packages/@monomind/cli/.claude/helpers/statusline.cjs +0 -1368
- package/packages/@monomind/cli/.claude/helpers/toggle-statusline.cjs +0 -73
- package/packages/@monomind/cli/.claude/helpers/token-tracker.cjs +0 -1034
- package/packages/@monomind/cli/.claude/helpers/utils/agent-registrations.cjs +0 -41
- package/packages/@monomind/cli/.claude/helpers/utils/fs-helpers.cjs +0 -183
- package/packages/@monomind/cli/.claude/helpers/utils/micro-agents.cjs +0 -358
- package/packages/@monomind/cli/.claude/helpers/utils/monograph.cjs +0 -692
- package/packages/@monomind/cli/.claude/helpers/utils/system-pressure.cjs +0 -46
- package/packages/@monomind/cli/.claude/helpers/utils/telemetry.cjs +0 -162
- package/packages/@monomind/cli/.claude/settings.json +0 -448
- package/packages/@monomind/cli/.claude/skills/agent-browser-testing/SKILL.md +0 -964
- package/packages/@monomind/cli/.claude/skills/agentic-jujutsu/SKILL.md +0 -645
- package/packages/@monomind/cli/.claude/skills/github-issue-triage/SKILL.md +0 -354
- package/packages/@monomind/cli/.claude/skills/github-repo-recap/SKILL.md +0 -207
- package/packages/@monomind/cli/.claude/skills/hive-mind-advanced/SKILL.md +0 -694
- package/packages/@monomind/cli/.claude/skills/hooks-automation/SKILL.md +0 -1192
- package/packages/@monomind/cli/.claude/skills/mastermind-access/SKILL.md +0 -236
- package/packages/@monomind/cli/.claude/skills/mastermind-activity/SKILL.md +0 -191
- package/packages/@monomind/cli/.claude/skills/mastermind-adapter-manager/SKILL.md +0 -259
- package/packages/@monomind/cli/.claude/skills/mastermind-adapters/SKILL.md +0 -204
- package/packages/@monomind/cli/.claude/skills/mastermind-agent-detail/SKILL.md +0 -242
- package/packages/@monomind/cli/.claude/skills/mastermind-agent-select/SKILL.md +0 -132
- package/packages/@monomind/cli/.claude/skills/mastermind-agents/SKILL.md +0 -182
- package/packages/@monomind/cli/.claude/skills/mastermind-approval-detail/SKILL.md +0 -259
- package/packages/@monomind/cli/.claude/skills/mastermind-approvev1/SKILL.md +0 -191
- package/packages/@monomind/cli/.claude/skills/mastermind-architect/SKILL.md +0 -862
- package/packages/@monomind/cli/.claude/skills/mastermind-autodev/SKILL.md +0 -360
- package/packages/@monomind/cli/.claude/skills/mastermind-backup/SKILL.md +0 -197
- package/packages/@monomind/cli/.claude/skills/mastermind-bootstrap/SKILL.md +0 -190
- package/packages/@monomind/cli/.claude/skills/mastermind-budgets/SKILL.md +0 -237
- package/packages/@monomind/cli/.claude/skills/mastermind-build/SKILL.md +0 -169
- package/packages/@monomind/cli/.claude/skills/mastermind-companies/SKILL.md +0 -256
- package/packages/@monomind/cli/.claude/skills/mastermind-content/SKILL.md +0 -197
- package/packages/@monomind/cli/.claude/skills/mastermind-costs/SKILL.md +0 -151
- package/packages/@monomind/cli/.claude/skills/mastermind-createorg/SKILL.md +0 -247
- package/packages/@monomind/cli/.claude/skills/mastermind-debug/SKILL.md +0 -277
- package/packages/@monomind/cli/.claude/skills/mastermind-delegation/SKILL.md +0 -83
- package/packages/@monomind/cli/.claude/skills/mastermind-design/SKILL.md +0 -190
- package/packages/@monomind/cli/.claude/skills/mastermind-diagnose/SKILL.md +0 -249
- package/packages/@monomind/cli/.claude/skills/mastermind-env/SKILL.md +0 -203
- package/packages/@monomind/cli/.claude/skills/mastermind-environments/SKILL.md +0 -250
- package/packages/@monomind/cli/.claude/skills/mastermind-execute/SKILL.md +0 -104
- package/packages/@monomind/cli/.claude/skills/mastermind-export/SKILL.md +0 -333
- package/packages/@monomind/cli/.claude/skills/mastermind-finance/SKILL.md +0 -166
- package/packages/@monomind/cli/.claude/skills/mastermind-finish/SKILL.md +0 -251
- package/packages/@monomind/cli/.claude/skills/mastermind-goal-detail/SKILL.md +0 -255
- package/packages/@monomind/cli/.claude/skills/mastermind-goals/SKILL.md +0 -149
- package/packages/@monomind/cli/.claude/skills/mastermind-heartbeatv1/SKILL.md +0 -167
- package/packages/@monomind/cli/.claude/skills/mastermind-idea/SKILL.md +0 -1142
- package/packages/@monomind/cli/.claude/skills/mastermind-import/SKILL.md +0 -281
- package/packages/@monomind/cli/.claude/skills/mastermind-inbox/SKILL.md +0 -226
- package/packages/@monomind/cli/.claude/skills/mastermind-instance/SKILL.md +0 -235
- package/packages/@monomind/cli/.claude/skills/mastermind-instance-settings/SKILL.md +0 -315
- package/packages/@monomind/cli/.claude/skills/mastermind-intake/SKILL.md +0 -83
- package/packages/@monomind/cli/.claude/skills/mastermind-invite-landing/SKILL.md +0 -227
- package/packages/@monomind/cli/.claude/skills/mastermind-invites/SKILL.md +0 -254
- package/packages/@monomind/cli/.claude/skills/mastermind-issue-detail/SKILL.md +0 -291
- package/packages/@monomind/cli/.claude/skills/mastermind-issues/SKILL.md +0 -235
- package/packages/@monomind/cli/.claude/skills/mastermind-join-queue/SKILL.md +0 -170
- package/packages/@monomind/cli/.claude/skills/mastermind-liveness/SKILL.md +0 -392
- package/packages/@monomind/cli/.claude/skills/mastermind-marketing/SKILL.md +0 -228
- package/packages/@monomind/cli/.claude/skills/mastermind-marketing/references/copywriting-frameworks.md +0 -181
- package/packages/@monomind/cli/.claude/skills/mastermind-marketing/references/persuasion-psychology.md +0 -158
- package/packages/@monomind/cli/.claude/skills/mastermind-memory/SKILL.md +0 -321
- package/packages/@monomind/cli/.claude/skills/mastermind-monitor/SKILL.md +0 -1284
- package/packages/@monomind/cli/.claude/skills/mastermind-monotask/SKILL.md +0 -350
- package/packages/@monomind/cli/.claude/skills/mastermind-my-issues/SKILL.md +0 -146
- package/packages/@monomind/cli/.claude/skills/mastermind-new-agent/SKILL.md +0 -241
- package/packages/@monomind/cli/.claude/skills/mastermind-ops/SKILL.md +0 -168
- package/packages/@monomind/cli/.claude/skills/mastermind-org-chart/SKILL.md +0 -209
- package/packages/@monomind/cli/.claude/skills/mastermind-org-settings/SKILL.md +0 -274
- package/packages/@monomind/cli/.claude/skills/mastermind-orgs/SKILL.md +0 -120
- package/packages/@monomind/cli/.claude/skills/mastermind-orgstatus/SKILL.md +0 -254
- package/packages/@monomind/cli/.claude/skills/mastermind-plan/SKILL.md +0 -217
- package/packages/@monomind/cli/.claude/skills/mastermind-plan-to-tasks/SKILL.md +0 -136
- package/packages/@monomind/cli/.claude/skills/mastermind-plugin-manager/SKILL.md +0 -241
- package/packages/@monomind/cli/.claude/skills/mastermind-plugin-settings/SKILL.md +0 -273
- package/packages/@monomind/cli/.claude/skills/mastermind-plugins/SKILL.md +0 -190
- package/packages/@monomind/cli/.claude/skills/mastermind-profile/SKILL.md +0 -187
- package/packages/@monomind/cli/.claude/skills/mastermind-project-detail/SKILL.md +0 -249
- package/packages/@monomind/cli/.claude/skills/mastermind-project-workspace/SKILL.md +0 -244
- package/packages/@monomind/cli/.claude/skills/mastermind-projects/SKILL.md +0 -167
- package/packages/@monomind/cli/.claude/skills/mastermind-protocol/SKILL.md +0 -404
- package/packages/@monomind/cli/.claude/skills/mastermind-receive-review/SKILL.md +0 -213
- package/packages/@monomind/cli/.claude/skills/mastermind-release/SKILL.md +0 -168
- package/packages/@monomind/cli/.claude/skills/mastermind-repeat/SKILL.md +0 -171
- package/packages/@monomind/cli/.claude/skills/mastermind-research/SKILL.md +0 -168
- package/packages/@monomind/cli/.claude/skills/mastermind-review/SKILL.md +0 -233
- package/packages/@monomind/cli/.claude/skills/mastermind-routine-detail/SKILL.md +0 -253
- package/packages/@monomind/cli/.claude/skills/mastermind-routines/SKILL.md +0 -203
- package/packages/@monomind/cli/.claude/skills/mastermind-runorg/SKILL.md +0 -43
- package/packages/@monomind/cli/.claude/skills/mastermind-runorgv1/SKILL.md +0 -731
- package/packages/@monomind/cli/.claude/skills/mastermind-sales/SKILL.md +0 -170
- package/packages/@monomind/cli/.claude/skills/mastermind-search/SKILL.md +0 -186
- package/packages/@monomind/cli/.claude/skills/mastermind-secrets/SKILL.md +0 -199
- package/packages/@monomind/cli/.claude/skills/mastermind-skill-builder/SKILL.md +0 -447
- package/packages/@monomind/cli/.claude/skills/mastermind-skills/SKILL.md +0 -156
- package/packages/@monomind/cli/.claude/skills/mastermind-stoporg/SKILL.md +0 -147
- package/packages/@monomind/cli/.claude/skills/mastermind-taskdev/SKILL.md +0 -377
- package/packages/@monomind/cli/.claude/skills/mastermind-taskdev/code-quality-reviewer-prompt.md +0 -60
- package/packages/@monomind/cli/.claude/skills/mastermind-taskdev/final-reviewer-prompt.md +0 -144
- package/packages/@monomind/cli/.claude/skills/mastermind-taskdev/implementer-prompt.md +0 -114
- package/packages/@monomind/cli/.claude/skills/mastermind-taskdev/spec-reviewer-prompt.md +0 -80
- package/packages/@monomind/cli/.claude/skills/mastermind-tasks/SKILL.md +0 -152
- package/packages/@monomind/cli/.claude/skills/mastermind-tdd/SKILL.md +0 -424
- package/packages/@monomind/cli/.claude/skills/mastermind-techport/SKILL.md +0 -777
- package/packages/@monomind/cli/.claude/skills/mastermind-threads/SKILL.md +0 -259
- package/packages/@monomind/cli/.claude/skills/mastermind-tree-control/SKILL.md +0 -250
- package/packages/@monomind/cli/.claude/skills/mastermind-verify/SKILL.md +0 -196
- package/packages/@monomind/cli/.claude/skills/mastermind-wiki/SKILL.md +0 -314
- package/packages/@monomind/cli/.claude/skills/mastermind-workspace-detail/SKILL.md +0 -317
- package/packages/@monomind/cli/.claude/skills/mastermind-workspaces/SKILL.md +0 -261
- package/packages/@monomind/cli/.claude/skills/mastermind-worktree/SKILL.md +0 -215
- package/packages/@monomind/cli/.claude/skills/monolean/SKILL.md +0 -118
- package/packages/@monomind/cli/.claude/skills/monolean-audit/SKILL.md +0 -41
- package/packages/@monomind/cli/.claude/skills/monolean-debt/SKILL.md +0 -46
- package/packages/@monomind/cli/.claude/skills/monolean-help/SKILL.md +0 -60
- package/packages/@monomind/cli/.claude/skills/monolean-review/SKILL.md +0 -57
- package/packages/@monomind/cli/.claude/skills/monomind/browse-agentcore.md +0 -115
- package/packages/@monomind/cli/.claude/skills/monomind/browse-electron.md +0 -188
- package/packages/@monomind/cli/.claude/skills/monomind/browse-qa.md +0 -228
- package/packages/@monomind/cli/.claude/skills/monomind/browse-references/authentication.md +0 -161
- package/packages/@monomind/cli/.claude/skills/monomind/browse-references/trust-boundaries.md +0 -40
- package/packages/@monomind/cli/.claude/skills/monomind/browse-references/video-recording.md +0 -83
- package/packages/@monomind/cli/.claude/skills/monomind/browse-slack.md +0 -188
- package/packages/@monomind/cli/.claude/skills/monomind/browse-vercel.md +0 -239
- package/packages/@monomind/cli/.claude/skills/monomind/browse.md +0 -724
- package/packages/@monomind/cli/.claude/skills/monomotion/SKILL.md +0 -145
- package/packages/@monomind/cli/.claude/skills/monomotion/rules/api-control.md +0 -139
- package/packages/@monomind/cli/.claude/skills/monomotion/rules/effects.md +0 -109
- package/packages/@monomind/cli/.claude/skills/monomotion/rules/integration.md +0 -140
- package/packages/@monomind/cli/.claude/skills/monomotion/rules/scroll.md +0 -131
- package/packages/@monomind/cli/.claude/skills/monomotion/rules/sequencing.md +0 -105
- package/packages/@monomind/cli/.claude/skills/monomotion/rules/svg.md +0 -101
- package/packages/@monomind/cli/.claude/skills/monomotion/rules/text.md +0 -119
- package/packages/@monomind/cli/.claude/skills/pair-programming/SKILL.md +0 -1202
- package/packages/@monomind/cli/.claude/skills/performance-analysis/SKILL.md +0 -560
- package/packages/@monomind/cli/.claude/skills/skill-builder/SKILL.md +0 -910
- package/packages/@monomind/cli/.claude/skills/specialagent/SKILL.md +0 -206
- package/packages/@monomind/cli/.claude/skills/stop-slop/SKILL.md +0 -67
- package/packages/@monomind/cli/.claude/skills/stop-slop/references/examples.md +0 -61
- package/packages/@monomind/cli/.claude/skills/stop-slop/references/phrases.md +0 -130
- package/packages/@monomind/cli/.claude/skills/stop-slop/references/structures.md +0 -136
- package/packages/@monomind/cli/.claude/skills/swarm-advanced/SKILL.md +0 -936
- package/packages/@monomind/cli/.claude/skills/swarm-orchestration/SKILL.md +0 -179
- package/packages/@monomind/cli/.claude/skills/verification-quality/SKILL.md +0 -674
- package/packages/@monomind/cli/README.md +0 -414
- package/packages/@monomind/cli/bin/cli.js +0 -379
- package/packages/@monomind/cli/bin/mcp-server.js +0 -208
- package/packages/@monomind/cli/bin/preinstall.cjs +0 -2
- package/packages/@monomind/cli/dist/src/agents/registry-builder.d.ts +0 -64
- package/packages/@monomind/cli/dist/src/agents/registry-builder.js +0 -228
- package/packages/@monomind/cli/dist/src/autopilot-state.d.ts +0 -77
- package/packages/@monomind/cli/dist/src/autopilot-state.js +0 -336
- package/packages/@monomind/cli/dist/src/browser/action-builder/analyzer.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/browser/action-builder/analyzer.js +0 -64
- package/packages/@monomind/cli/dist/src/browser/action-builder/types.d.ts +0 -47
- package/packages/@monomind/cli/dist/src/browser/action-builder/types.js +0 -2
- package/packages/@monomind/cli/dist/src/browser/adapters/gemini.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/browser/adapters/gemini.js +0 -16
- package/packages/@monomind/cli/dist/src/browser/adapters/index.d.ts +0 -19
- package/packages/@monomind/cli/dist/src/browser/adapters/index.js +0 -23
- package/packages/@monomind/cli/dist/src/browser/adapters/instagram.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/browser/adapters/instagram.js +0 -17
- package/packages/@monomind/cli/dist/src/browser/adapters/linkedin.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/browser/adapters/linkedin.js +0 -19
- package/packages/@monomind/cli/dist/src/browser/adapters/x.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/browser/adapters/x.js +0 -19
- package/packages/@monomind/cli/dist/src/browser/dashboard/server.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/browser/dashboard/server.js +0 -215
- package/packages/@monomind/cli/dist/src/browser/dashboard/ui.html +0 -261
- package/packages/@monomind/cli/dist/src/browser/workflow/engine.d.ts +0 -15
- package/packages/@monomind/cli/dist/src/browser/workflow/engine.js +0 -127
- package/packages/@monomind/cli/dist/src/browser/workflow/expression.d.ts +0 -4
- package/packages/@monomind/cli/dist/src/browser/workflow/expression.js +0 -64
- package/packages/@monomind/cli/dist/src/browser/workflow/store.d.ts +0 -24
- package/packages/@monomind/cli/dist/src/browser/workflow/store.js +0 -145
- package/packages/@monomind/cli/dist/src/browser/workflow/types.d.ts +0 -48
- package/packages/@monomind/cli/dist/src/browser/workflow/types.js +0 -2
- package/packages/@monomind/cli/dist/src/capabilities/cap-code.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/capabilities/cap-code.js +0 -20
- package/packages/@monomind/cli/dist/src/capabilities/cap-data.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/capabilities/cap-data.js +0 -165
- package/packages/@monomind/cli/dist/src/capabilities/cap-documents.d.ts +0 -5
- package/packages/@monomind/cli/dist/src/capabilities/cap-documents.js +0 -139
- package/packages/@monomind/cli/dist/src/capabilities/cap-graph.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/capabilities/cap-graph.js +0 -84
- package/packages/@monomind/cli/dist/src/capabilities/cap-media.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/capabilities/cap-media.js +0 -147
- package/packages/@monomind/cli/dist/src/capabilities/cap-timeline.d.ts +0 -3
- package/packages/@monomind/cli/dist/src/capabilities/cap-timeline.js +0 -90
- package/packages/@monomind/cli/dist/src/capabilities/index.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/capabilities/index.js +0 -18
- package/packages/@monomind/cli/dist/src/capabilities/manager.d.ts +0 -13
- package/packages/@monomind/cli/dist/src/capabilities/manager.js +0 -79
- package/packages/@monomind/cli/dist/src/capabilities/scanner.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/capabilities/scanner.js +0 -125
- package/packages/@monomind/cli/dist/src/capabilities/types.d.ts +0 -64
- package/packages/@monomind/cli/dist/src/capabilities/types.js +0 -2
- package/packages/@monomind/cli/dist/src/commands/agent-lifecycle.d.ts +0 -17
- package/packages/@monomind/cli/dist/src/commands/agent-lifecycle.js +0 -346
- package/packages/@monomind/cli/dist/src/commands/agent-ops.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/agent-ops.js +0 -277
- package/packages/@monomind/cli/dist/src/commands/agent.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/agent.js +0 -40
- package/packages/@monomind/cli/dist/src/commands/analyze-ast.d.ts +0 -26
- package/packages/@monomind/cli/dist/src/commands/analyze-ast.js +0 -284
- package/packages/@monomind/cli/dist/src/commands/analyze-diff.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/analyze-diff.js +0 -395
- package/packages/@monomind/cli/dist/src/commands/analyze-imports.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/analyze-imports.js +0 -287
- package/packages/@monomind/cli/dist/src/commands/analyze-symbols.d.ts +0 -14
- package/packages/@monomind/cli/dist/src/commands/analyze-symbols.js +0 -302
- package/packages/@monomind/cli/dist/src/commands/analyze.d.ts +0 -53
- package/packages/@monomind/cli/dist/src/commands/analyze.js +0 -217
- package/packages/@monomind/cli/dist/src/commands/autopilot.d.ts +0 -15
- package/packages/@monomind/cli/dist/src/commands/autopilot.js +0 -370
- package/packages/@monomind/cli/dist/src/commands/browse-action.d.ts +0 -4
- package/packages/@monomind/cli/dist/src/commands/browse-action.js +0 -244
- package/packages/@monomind/cli/dist/src/commands/browse-platform.d.ts +0 -4
- package/packages/@monomind/cli/dist/src/commands/browse-platform.js +0 -117
- package/packages/@monomind/cli/dist/src/commands/browse-workflow.d.ts +0 -4
- package/packages/@monomind/cli/dist/src/commands/browse-workflow.js +0 -183
- package/packages/@monomind/cli/dist/src/commands/browse.d.ts +0 -12
- package/packages/@monomind/cli/dist/src/commands/browse.js +0 -17
- package/packages/@monomind/cli/dist/src/commands/cleanup.d.ts +0 -45
- package/packages/@monomind/cli/dist/src/commands/cleanup.js +0 -581
- package/packages/@monomind/cli/dist/src/commands/completions.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/commands/completions.js +0 -261
- package/packages/@monomind/cli/dist/src/commands/config.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/config.js +0 -462
- package/packages/@monomind/cli/dist/src/commands/crash-reporting.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/crash-reporting.js +0 -50
- package/packages/@monomind/cli/dist/src/commands/design-detect.d.ts +0 -27
- package/packages/@monomind/cli/dist/src/commands/design-detect.js +0 -220
- package/packages/@monomind/cli/dist/src/commands/design-palette.d.ts +0 -21
- package/packages/@monomind/cli/dist/src/commands/design-palette.js +0 -538
- package/packages/@monomind/cli/dist/src/commands/doc.d.ts +0 -7
- package/packages/@monomind/cli/dist/src/commands/doc.js +0 -268
- package/packages/@monomind/cli/dist/src/commands/doctor-env-checks.d.ts +0 -26
- package/packages/@monomind/cli/dist/src/commands/doctor-env-checks.js +0 -194
- package/packages/@monomind/cli/dist/src/commands/doctor-monoes-checks.d.ts +0 -12
- package/packages/@monomind/cli/dist/src/commands/doctor-monoes-checks.js +0 -160
- package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.d.ts +0 -46
- package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +0 -764
- package/packages/@monomind/cli/dist/src/commands/doctor.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/commands/doctor.js +0 -232
- package/packages/@monomind/cli/dist/src/commands/guidance.d.ts +0 -12
- package/packages/@monomind/cli/dist/src/commands/guidance.js +0 -163
- package/packages/@monomind/cli/dist/src/commands/hooks-core-commands.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/commands/hooks-core-commands.js +0 -377
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-commands.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-commands.js +0 -417
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-gaps.d.ts +0 -6
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-gaps.js +0 -219
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-routing.d.ts +0 -7
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-routing.js +0 -399
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-utils.d.ts +0 -42
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-utils.js +0 -220
- package/packages/@monomind/cli/dist/src/commands/hooks-extended-commands.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/hooks-extended-commands.js +0 -243
- package/packages/@monomind/cli/dist/src/commands/hooks-formatting.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/commands/hooks-formatting.js +0 -25
- package/packages/@monomind/cli/dist/src/commands/hooks-routing-commands.d.ts +0 -15
- package/packages/@monomind/cli/dist/src/commands/hooks-routing-commands.js +0 -725
- package/packages/@monomind/cli/dist/src/commands/hooks-workers.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/commands/hooks-workers.js +0 -547
- package/packages/@monomind/cli/dist/src/commands/hooks.d.ts +0 -16
- package/packages/@monomind/cli/dist/src/commands/hooks.js +0 -497
- package/packages/@monomind/cli/dist/src/commands/index.d.ts +0 -65
- package/packages/@monomind/cli/dist/src/commands/index.js +0 -236
- package/packages/@monomind/cli/dist/src/commands/init-subcommands.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/init-subcommands.js +0 -156
- package/packages/@monomind/cli/dist/src/commands/init-upgrade.d.ts +0 -6
- package/packages/@monomind/cli/dist/src/commands/init-upgrade.js +0 -203
- package/packages/@monomind/cli/dist/src/commands/init-wizard.d.ts +0 -6
- package/packages/@monomind/cli/dist/src/commands/init-wizard.js +0 -244
- package/packages/@monomind/cli/dist/src/commands/init.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/init.js +0 -411
- package/packages/@monomind/cli/dist/src/commands/mcp.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/mcp.js +0 -747
- package/packages/@monomind/cli/dist/src/commands/memory-admin.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/commands/memory-admin.js +0 -345
- package/packages/@monomind/cli/dist/src/commands/memory-crud.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/commands/memory-crud.js +0 -389
- package/packages/@monomind/cli/dist/src/commands/memory-list.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/commands/memory-list.js +0 -321
- package/packages/@monomind/cli/dist/src/commands/memory-transfer.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/memory-transfer.js +0 -199
- package/packages/@monomind/cli/dist/src/commands/memory.d.ts +0 -14
- package/packages/@monomind/cli/dist/src/commands/memory.js +0 -282
- package/packages/@monomind/cli/dist/src/commands/monograph.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/monograph.js +0 -548
- package/packages/@monomind/cli/dist/src/commands/neural-core.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/commands/neural-core.js +0 -413
- package/packages/@monomind/cli/dist/src/commands/neural-optimize.d.ts +0 -7
- package/packages/@monomind/cli/dist/src/commands/neural-optimize.js +0 -330
- package/packages/@monomind/cli/dist/src/commands/neural-registry.d.ts +0 -7
- package/packages/@monomind/cli/dist/src/commands/neural-registry.js +0 -290
- package/packages/@monomind/cli/dist/src/commands/org-observe.d.ts +0 -18
- package/packages/@monomind/cli/dist/src/commands/org-observe.js +0 -353
- package/packages/@monomind/cli/dist/src/commands/org.d.ts +0 -25
- package/packages/@monomind/cli/dist/src/commands/org.js +0 -860
- package/packages/@monomind/cli/dist/src/commands/performance.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/commands/performance.js +0 -656
- package/packages/@monomind/cli/dist/src/commands/platforms.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/platforms.js +0 -600
- package/packages/@monomind/cli/dist/src/commands/providers.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/commands/providers.js +0 -351
- package/packages/@monomind/cli/dist/src/commands/report-crash.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/commands/report-crash.js +0 -66
- package/packages/@monomind/cli/dist/src/commands/route.d.ts +0 -16
- package/packages/@monomind/cli/dist/src/commands/route.js +0 -944
- package/packages/@monomind/cli/dist/src/commands/search-universal.d.ts +0 -19
- package/packages/@monomind/cli/dist/src/commands/search-universal.js +0 -151
- package/packages/@monomind/cli/dist/src/commands/security-cve.d.ts +0 -6
- package/packages/@monomind/cli/dist/src/commands/security-cve.js +0 -308
- package/packages/@monomind/cli/dist/src/commands/security-misc.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/security-misc.js +0 -336
- package/packages/@monomind/cli/dist/src/commands/security-scan.d.ts +0 -47
- package/packages/@monomind/cli/dist/src/commands/security-scan.js +0 -447
- package/packages/@monomind/cli/dist/src/commands/security.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/commands/security.js +0 -41
- package/packages/@monomind/cli/dist/src/commands/session.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/session.js +0 -660
- package/packages/@monomind/cli/dist/src/commands/start.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/start.js +0 -490
- package/packages/@monomind/cli/dist/src/commands/status.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/status.js +0 -642
- package/packages/@monomind/cli/dist/src/commands/swarm.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/swarm.js +0 -906
- package/packages/@monomind/cli/dist/src/commands/task.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/task.js +0 -639
- package/packages/@monomind/cli/dist/src/commands/tokens.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/tokens.js +0 -206
- package/packages/@monomind/cli/dist/src/commands/update.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/update.js +0 -288
- package/packages/@monomind/cli/dist/src/consensus/audit-writer.d.ts +0 -77
- package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +0 -196
- package/packages/@monomind/cli/dist/src/consensus/tally.d.ts +0 -19
- package/packages/@monomind/cli/dist/src/consensus/tally.js +0 -34
- package/packages/@monomind/cli/dist/src/index.d.ts +0 -81
- package/packages/@monomind/cli/dist/src/index.js +0 -574
- package/packages/@monomind/cli/dist/src/init/claudemd-generator.d.ts +0 -25
- package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +0 -624
- package/packages/@monomind/cli/dist/src/init/executor.d.ts +0 -47
- package/packages/@monomind/cli/dist/src/init/executor.js +0 -2387
- package/packages/@monomind/cli/dist/src/init/helpers-generator.d.ts +0 -73
- package/packages/@monomind/cli/dist/src/init/helpers-generator.js +0 -1335
- package/packages/@monomind/cli/dist/src/init/index.d.ts +0 -13
- package/packages/@monomind/cli/dist/src/init/index.js +0 -15
- package/packages/@monomind/cli/dist/src/init/mcp-generator.d.ts +0 -26
- package/packages/@monomind/cli/dist/src/init/mcp-generator.js +0 -107
- package/packages/@monomind/cli/dist/src/init/settings-generator.d.ts +0 -14
- package/packages/@monomind/cli/dist/src/init/settings-generator.js +0 -487
- package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.d.ts +0 -38
- package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +0 -602
- package/packages/@monomind/cli/dist/src/init/statusline-generator.d.ts +0 -25
- package/packages/@monomind/cli/dist/src/init/statusline-generator.js +0 -1358
- package/packages/@monomind/cli/dist/src/init/types.d.ts +0 -308
- package/packages/@monomind/cli/dist/src/init/types.js +0 -247
- package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.d.ts +0 -75
- package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.js +0 -556
- package/packages/@monomind/cli/dist/src/mcp-client.d.ts +0 -64
- package/packages/@monomind/cli/dist/src/mcp-client.js +0 -338
- package/packages/@monomind/cli/dist/src/mcp-server.d.ts +0 -170
- package/packages/@monomind/cli/dist/src/mcp-server.js +0 -964
- package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.d.ts +0 -30
- package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +0 -603
- package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.d.ts +0 -38
- package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +0 -389
- package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.d.ts +0 -75
- package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.js +0 -125
- package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.d.ts +0 -12
- package/packages/@monomind/cli/dist/src/mcp-tools/autopilot-tools.js +0 -237
- package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +0 -1111
- package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.d.ts +0 -12
- package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.js +0 -827
- package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.js +0 -447
- package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +0 -866
- package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +0 -582
- package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.js +0 -58
- package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.d.ts +0 -15
- package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +0 -634
- package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -17
- package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +0 -1237
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-embedding.d.ts +0 -161
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-embedding.js +0 -516
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.d.ts +0 -22
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.js +0 -888
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.d.ts +0 -26
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.js +0 -1582
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +0 -51
- package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +0 -31
- package/packages/@monomind/cli/dist/src/mcp-tools/index.js +0 -31
- package/packages/@monomind/cli/dist/src/mcp-tools/knowledge-tools.d.ts +0 -6
- package/packages/@monomind/cli/dist/src/mcp-tools/knowledge-tools.js +0 -156
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.d.ts +0 -35
- package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +0 -776
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-compat.d.ts +0 -26
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-compat.js +0 -136
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.d.ts +0 -27
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +0 -2443
- package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.d.ts +0 -15
- package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +0 -506
- package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.d.ts +0 -16
- package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.js +0 -680
- package/packages/@monomind/cli/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +0 -261
- package/packages/@monomind/cli/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js +0 -423
- package/packages/@monomind/cli/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +0 -137
- package/packages/@monomind/cli/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +0 -383
- package/packages/@monomind/cli/dist/src/mcp-tools/quality-tools.d.ts +0 -14
- package/packages/@monomind/cli/dist/src/mcp-tools/quality-tools.js +0 -58
- package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.d.ts +0 -17
- package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.js +0 -44
- package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.d.ts +0 -18
- package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +0 -576
- package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.js +0 -431
- package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +0 -411
- package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.d.ts +0 -13
- package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +0 -561
- package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.d.ts +0 -28
- package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.js +0 -514
- package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +0 -397
- package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.d.ts +0 -27
- package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +0 -76
- package/packages/@monomind/cli/dist/src/mcp-tools/types.d.ts +0 -58
- package/packages/@monomind/cli/dist/src/mcp-tools/types.js +0 -98
- package/packages/@monomind/cli/dist/src/memory/embedding-operations.d.ts +0 -58
- package/packages/@monomind/cli/dist/src/memory/embedding-operations.js +0 -262
- package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.d.ts +0 -319
- package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.js +0 -698
- package/packages/@monomind/cli/dist/src/memory/hnsw-operations.d.ts +0 -142
- package/packages/@monomind/cli/dist/src/memory/hnsw-operations.js +0 -465
- package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +0 -368
- package/packages/@monomind/cli/dist/src/memory/intelligence.js +0 -1456
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +0 -333
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +0 -1104
- package/packages/@monomind/cli/dist/src/memory/memory-crud.d.ts +0 -67
- package/packages/@monomind/cli/dist/src/memory/memory-crud.js +0 -454
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.d.ts +0 -101
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +0 -431
- package/packages/@monomind/cli/dist/src/memory/memory-kg.d.ts +0 -186
- package/packages/@monomind/cli/dist/src/memory/memory-kg.js +0 -450
- package/packages/@monomind/cli/dist/src/memory/memory-migrations.d.ts +0 -30
- package/packages/@monomind/cli/dist/src/memory/memory-migrations.js +0 -136
- package/packages/@monomind/cli/dist/src/memory/memory-read.d.ts +0 -87
- package/packages/@monomind/cli/dist/src/memory/memory-read.js +0 -333
- package/packages/@monomind/cli/dist/src/memory/memory-schema.d.ts +0 -13
- package/packages/@monomind/cli/dist/src/memory/memory-schema.js +0 -167
- package/packages/@monomind/cli/dist/src/memory/query-router.d.ts +0 -44
- package/packages/@monomind/cli/dist/src/memory/query-router.js +0 -113
- package/packages/@monomind/cli/dist/src/memory/sona-optimizer.d.ts +0 -237
- package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +0 -647
- package/packages/@monomind/cli/dist/src/monovector/command-outcomes.d.ts +0 -37
- package/packages/@monomind/cli/dist/src/monovector/command-outcomes.js +0 -126
- package/packages/@monomind/cli/dist/src/monovector/coverage-router.d.ts +0 -103
- package/packages/@monomind/cli/dist/src/monovector/coverage-router.js +0 -341
- package/packages/@monomind/cli/dist/src/monovector/coverage-tools.d.ts +0 -14
- package/packages/@monomind/cli/dist/src/monovector/coverage-tools.js +0 -115
- package/packages/@monomind/cli/dist/src/monovector/diff-classifier.d.ts +0 -174
- package/packages/@monomind/cli/dist/src/monovector/diff-classifier.js +0 -738
- package/packages/@monomind/cli/dist/src/monovector/index.d.ts +0 -54
- package/packages/@monomind/cli/dist/src/monovector/index.js +0 -55
- package/packages/@monomind/cli/dist/src/monovector/init-state.d.ts +0 -35
- package/packages/@monomind/cli/dist/src/monovector/init-state.js +0 -36
- package/packages/@monomind/cli/dist/src/monovector/route-outcomes.d.ts +0 -56
- package/packages/@monomind/cli/dist/src/monovector/route-outcomes.js +0 -189
- package/packages/@monomind/cli/dist/src/observability/replay-reader.d.ts +0 -40
- package/packages/@monomind/cli/dist/src/observability/replay-reader.js +0 -138
- package/packages/@monomind/cli/dist/src/orgrt/broker.d.ts +0 -26
- package/packages/@monomind/cli/dist/src/orgrt/broker.js +0 -73
- package/packages/@monomind/cli/dist/src/orgrt/bus.d.ts +0 -27
- package/packages/@monomind/cli/dist/src/orgrt/bus.js +0 -71
- package/packages/@monomind/cli/dist/src/orgrt/daemon.d.ts +0 -175
- package/packages/@monomind/cli/dist/src/orgrt/daemon.js +0 -965
- package/packages/@monomind/cli/dist/src/orgrt/forwarder.d.ts +0 -16
- package/packages/@monomind/cli/dist/src/orgrt/forwarder.js +0 -171
- package/packages/@monomind/cli/dist/src/orgrt/inbox.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/orgrt/inbox.js +0 -91
- package/packages/@monomind/cli/dist/src/orgrt/mailbox.d.ts +0 -49
- package/packages/@monomind/cli/dist/src/orgrt/mailbox.js +0 -75
- package/packages/@monomind/cli/dist/src/orgrt/migrate.d.ts +0 -26
- package/packages/@monomind/cli/dist/src/orgrt/migrate.js +0 -118
- package/packages/@monomind/cli/dist/src/orgrt/policy.d.ts +0 -28
- package/packages/@monomind/cli/dist/src/orgrt/policy.js +0 -146
- package/packages/@monomind/cli/dist/src/orgrt/provider.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/orgrt/provider.js +0 -55
- package/packages/@monomind/cli/dist/src/orgrt/reporting.d.ts +0 -40
- package/packages/@monomind/cli/dist/src/orgrt/reporting.js +0 -134
- package/packages/@monomind/cli/dist/src/orgrt/scheduler.d.ts +0 -13
- package/packages/@monomind/cli/dist/src/orgrt/scheduler.js +0 -48
- package/packages/@monomind/cli/dist/src/orgrt/server.d.ts +0 -9
- package/packages/@monomind/cli/dist/src/orgrt/server.js +0 -88
- package/packages/@monomind/cli/dist/src/orgrt/session.d.ts +0 -62
- package/packages/@monomind/cli/dist/src/orgrt/session.js +0 -157
- package/packages/@monomind/cli/dist/src/orgrt/templates.d.ts +0 -17
- package/packages/@monomind/cli/dist/src/orgrt/templates.js +0 -62
- package/packages/@monomind/cli/dist/src/orgrt/test-loop.d.ts +0 -12
- package/packages/@monomind/cli/dist/src/orgrt/test-loop.js +0 -108
- package/packages/@monomind/cli/dist/src/orgrt/types.d.ts +0 -910
- package/packages/@monomind/cli/dist/src/orgrt/types.js +0 -57
- package/packages/@monomind/cli/dist/src/output.d.ts +0 -133
- package/packages/@monomind/cli/dist/src/output.js +0 -529
- package/packages/@monomind/cli/dist/src/parser.d.ts +0 -93
- package/packages/@monomind/cli/dist/src/parser.js +0 -651
- package/packages/@monomind/cli/dist/src/pricing/model-pricing.d.ts +0 -41
- package/packages/@monomind/cli/dist/src/pricing/model-pricing.js +0 -61
- package/packages/@monomind/cli/dist/src/production/circuit-breaker.d.ts +0 -121
- package/packages/@monomind/cli/dist/src/production/circuit-breaker.js +0 -262
- package/packages/@monomind/cli/dist/src/production/error-handler.d.ts +0 -119
- package/packages/@monomind/cli/dist/src/production/error-handler.js +0 -324
- package/packages/@monomind/cli/dist/src/production/index.d.ts +0 -6
- package/packages/@monomind/cli/dist/src/production/index.js +0 -6
- package/packages/@monomind/cli/dist/src/production/monitoring.d.ts +0 -181
- package/packages/@monomind/cli/dist/src/production/monitoring.js +0 -375
- package/packages/@monomind/cli/dist/src/production/rate-limiter.d.ts +0 -125
- package/packages/@monomind/cli/dist/src/production/rate-limiter.js +0 -218
- package/packages/@monomind/cli/dist/src/production/retry.d.ts +0 -48
- package/packages/@monomind/cli/dist/src/production/retry.js +0 -189
- package/packages/@monomind/cli/dist/src/prompt.d.ts +0 -44
- package/packages/@monomind/cli/dist/src/prompt.js +0 -501
- package/packages/@monomind/cli/dist/src/routing/embed-worker.d.ts +0 -2
- package/packages/@monomind/cli/dist/src/routing/embed-worker.js +0 -79
- package/packages/@monomind/cli/dist/src/routing/embedder.d.ts +0 -31
- package/packages/@monomind/cli/dist/src/routing/embedder.js +0 -0
- package/packages/@monomind/cli/dist/src/routing/llm-caller.d.ts +0 -24
- package/packages/@monomind/cli/dist/src/routing/llm-caller.js +0 -134
- package/packages/@monomind/cli/dist/src/routing/route-layer-factory.d.ts +0 -24
- package/packages/@monomind/cli/dist/src/routing/route-layer-factory.js +0 -239
- package/packages/@monomind/cli/dist/src/services/config-file-manager.d.ts +0 -80
- package/packages/@monomind/cli/dist/src/services/config-file-manager.js +0 -401
- package/packages/@monomind/cli/dist/src/services/crash-reporter.d.ts +0 -42
- package/packages/@monomind/cli/dist/src/services/crash-reporter.js +0 -374
- package/packages/@monomind/cli/dist/src/suggest.d.ts +0 -53
- package/packages/@monomind/cli/dist/src/suggest.js +0 -197
- package/packages/@monomind/cli/dist/src/sync/checker.d.ts +0 -12
- package/packages/@monomind/cli/dist/src/sync/checker.js +0 -26
- package/packages/@monomind/cli/dist/src/transfer/anonymization/index.d.ts +0 -22
- package/packages/@monomind/cli/dist/src/transfer/anonymization/index.js +0 -192
- package/packages/@monomind/cli/dist/src/transfer/types.d.ts +0 -245
- package/packages/@monomind/cli/dist/src/transfer/types.js +0 -6
- package/packages/@monomind/cli/dist/src/types.d.ts +0 -190
- package/packages/@monomind/cli/dist/src/types.js +0 -20
- package/packages/@monomind/cli/dist/src/ui/collector.mjs +0 -879
- package/packages/@monomind/cli/dist/src/ui/dashboard.html +0 -13949
- package/packages/@monomind/cli/dist/src/ui/data/agent-avatars.html +0 -763
- package/packages/@monomind/cli/dist/src/ui/data/agent-avatars.json +0 -966
- package/packages/@monomind/cli/dist/src/ui/data/avatars/account-strategist.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/accounts-payable.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/adaptive-coordinator.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/adaptive-coordinator2.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/ai-citation.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/ai-engineer.svg +0 -61
- package/packages/@monomind/cli/dist/src/ui/data/avatars/analytics-reporter.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/api-tester.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/architecture.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/automation-governance.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/backend-dev.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/benchmarker.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/blockchain-auditor.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/byzantine-coord.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/case-analyst.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/cicd-engineer.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/cloud-architect.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/code-review-swarm.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/coder-v119.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/coder.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/collective-coord.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/compliance-auditor.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/consensus-coordinator.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/content-creator.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/crdt-synchronizer.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/cro-specialist.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/data-consolidator.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/data-engineer.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/database-optimizer.svg +0 -61
- package/packages/@monomind/cli/dist/src/ui/data/avatars/deal-strategist.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/defender.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/devops-automator.svg +0 -56
- package/packages/@monomind/cli/dist/src/ui/data/avatars/discovery-coach.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/email-marketing.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/embedded-firmware.svg +0 -61
- package/packages/@monomind/cli/dist/src/ui/data/avatars/evidence-collector.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/experiment-tracker.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/feedback-synthesizer.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/finance-tracker.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/frontend-developer.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/game-audio-engineer.svg +0 -59
- package/packages/@monomind/cli/dist/src/ui/data/avatars/game-designer.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/gossip-coordinator.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/hierarchical-coord.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/incident-commander.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/infrastructure.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/input-validator.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/ios-developer.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/issue-tracker.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/judge.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/launch-strategist.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/legal-compliance.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/level-designer.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/load-balancer.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/mcp-builder.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/memory-coordinator.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/mesh-coordinator.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/ml-developer.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/mobile-app-builder.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/mobile-dev.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/model-qa.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/narrative-designer.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/outbound-strategist.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/path-validator.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/payment-agent.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/perf-analyzer.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/pipeline-analyst.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/planner.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/pr-manager.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/pricing-strategist.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/product-manager.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/production-validator.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/project-shepherd.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/proposal-strategist.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/prosecutor.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/pseudocode.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/queen-coordinator.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/quorum-manager.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/raft-manager.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/reality-checker.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/recruitment.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/refinement.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/release-manager.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/repo-architect.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/researcher.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/resource-allocator.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/reviewer.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/safe-executor.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/sales-coach.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/sales-engineer.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/scout-explorer.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/security-architect.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/security-auditor.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/senior-developer.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/senior-pm.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/seo-specialist.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/social-media.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/solidity-engineer.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/sparc-coder.svg +0 -58
- package/packages/@monomind/cli/dist/src/ui/data/avatars/sparc-coord.svg +0 -56
- package/packages/@monomind/cli/dist/src/ui/data/avatars/specification.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/sprint-prioritizer.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/sre.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/studio-operations.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/studio-producer.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/support-responder.svg +0 -56
- package/packages/@monomind/cli/dist/src/ui/data/avatars/system-architect.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/task-orchestrator.svg +0 -56
- package/packages/@monomind/cli/dist/src/ui/data/avatars/technical-artist.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/technical-writer.svg +0 -59
- package/packages/@monomind/cli/dist/src/ui/data/avatars/tester.svg +0 -53
- package/packages/@monomind/cli/dist/src/ui/data/avatars/threat-detection.svg +0 -61
- package/packages/@monomind/cli/dist/src/ui/data/avatars/trend-researcher.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/trial-director.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/unity-architect.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/visionos-engineer.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/worker-specialist.svg +0 -55
- package/packages/@monomind/cli/dist/src/ui/data/avatars/workflow-architect.svg +0 -57
- package/packages/@monomind/cli/dist/src/ui/data/avatars/workflow-automation.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/data/avatars/zk-steward.svg +0 -54
- package/packages/@monomind/cli/dist/src/ui/mastermind-diagram-fallback.html +0 -1069
- package/packages/@monomind/cli/dist/src/ui/orgs-files.js +0 -192
- package/packages/@monomind/cli/dist/src/ui/orgs.html +0 -2513
- package/packages/@monomind/cli/dist/src/ui/server.mjs +0 -7256
- package/packages/@monomind/cli/dist/src/ui/sse-manager.mjs +0 -119
- package/packages/@monomind/cli/dist/src/update/checker.d.ts +0 -34
- package/packages/@monomind/cli/dist/src/update/checker.js +0 -278
- package/packages/@monomind/cli/dist/src/update/executor.d.ts +0 -32
- package/packages/@monomind/cli/dist/src/update/executor.js +0 -235
- package/packages/@monomind/cli/dist/src/update/index.d.ts +0 -43
- package/packages/@monomind/cli/dist/src/update/index.js +0 -108
- package/packages/@monomind/cli/dist/src/update/rate-limiter.d.ts +0 -37
- package/packages/@monomind/cli/dist/src/update/rate-limiter.js +0 -190
- package/packages/@monomind/cli/dist/src/update/validator.d.ts +0 -17
- package/packages/@monomind/cli/dist/src/update/validator.js +0 -166
- package/packages/@monomind/cli/dist/src/utils/cosine-similarity.d.ts +0 -22
- package/packages/@monomind/cli/dist/src/utils/cosine-similarity.js +0 -38
- package/packages/@monomind/cli/dist/src/utils/input-guards.d.ts +0 -66
- package/packages/@monomind/cli/dist/src/utils/input-guards.js +0 -263
- package/packages/@monomind/cli/dist/src/utils/json-file.d.ts +0 -33
- package/packages/@monomind/cli/dist/src/utils/json-file.js +0 -57
- package/packages/@monomind/cli/dist/src/utils/parse-jsonl.d.ts +0 -6
- package/packages/@monomind/cli/dist/src/utils/parse-jsonl.js +0 -22
- package/packages/@monomind/cli/dist/src/utils/resource-governor.d.ts +0 -32
- package/packages/@monomind/cli/dist/src/utils/resource-governor.js +0 -115
- package/packages/@monomind/cli/package.json +0 -127
- package/packages/@monomind/cli/scripts/deploy-ipfs-node.sh +0 -153
- package/packages/@monomind/cli/scripts/publish.sh +0 -61
- package/packages/@monomind/cli/scripts/sync-claude-assets.sh +0 -19
- package/packages/@monomind/cli/scripts/understand-analyze.mjs +0 -1078
- package/scripts/build-fs.mjs +0 -75
- package/scripts/build-monovector.sh +0 -10
- package/scripts/generate-agent-avatars.mjs +0 -492
- package/scripts/generate-channel-profile-assets.sh +0 -67
- package/scripts/growth-content-calendar.mjs +0 -260
- package/scripts/growth-profile-kit.mjs +0 -156
- package/scripts/install.sh +0 -392
- package/scripts/publish-monovector.sh +0 -20
- package/scripts/ua-enrich.mjs +0 -229
- package/scripts/ua-import.mjs +0 -288
- package/scripts/verify-appliance.sh +0 -571
|
@@ -1,1237 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hive-Mind MCP Tools for CLI
|
|
3
|
-
*
|
|
4
|
-
* Tool definitions for multi-agent coordination and voting.
|
|
5
|
-
*
|
|
6
|
-
* Honest scope note: the "consensus strategies" here are vote-count thresholds
|
|
7
|
-
* applied to a single in-process tally — NOT distributed consensus protocols.
|
|
8
|
-
* There is no log replication, leader election, network partitioning, or
|
|
9
|
-
* adversarial fault model. 'bft' = require 2f+1 votes, 'raft' = require
|
|
10
|
-
* majority, 'quorum' = configurable preset (majority/supermajority/unanimous).
|
|
11
|
-
* The names are kept for CLI/API compatibility.
|
|
12
|
-
*/
|
|
13
|
-
import { existsSync, readFileSync, statSync, writeFileSync, renameSync, mkdirSync } from 'node:fs';
|
|
14
|
-
import { randomBytes } from 'node:crypto';
|
|
15
|
-
import { join } from 'node:path';
|
|
16
|
-
import { getProjectCwd, getMonomindDataRoot, migrateLegacyStoreFile } from './types.js';
|
|
17
|
-
import { weightedTally } from '../consensus/tally.js';
|
|
18
|
-
// Reuse agent-tools.ts's hardened store loader (50MB size cap + __proto__
|
|
19
|
-
// rejection) instead of maintaining a second, weaker copy that reads the
|
|
20
|
-
// same physical file — see loadAgentStore export note there.
|
|
21
|
-
import { loadAgentStore, loadAgentStoreOrNull } from './agent-tools.js';
|
|
22
|
-
// Storage paths
|
|
23
|
-
const STORAGE_DIR = '.monomind';
|
|
24
|
-
const HIVE_DIR = 'hive-mind';
|
|
25
|
-
const HIVE_FILE = 'state.json';
|
|
26
|
-
/**
|
|
27
|
-
* Calculate required votes for a given strategy and total node count.
|
|
28
|
-
*/
|
|
29
|
-
function calculateRequiredVotes(strategy, totalNodes, quorumPreset = 'majority') {
|
|
30
|
-
if (totalNodes <= 0)
|
|
31
|
-
return 1;
|
|
32
|
-
switch (strategy) {
|
|
33
|
-
case 'bft':
|
|
34
|
-
// BFT: requires 2/3 + 1 of total nodes
|
|
35
|
-
return Math.floor((totalNodes * 2) / 3) + 1;
|
|
36
|
-
case 'raft':
|
|
37
|
-
// Raft: simple majority
|
|
38
|
-
return Math.floor(totalNodes / 2) + 1;
|
|
39
|
-
case 'quorum':
|
|
40
|
-
switch (quorumPreset) {
|
|
41
|
-
case 'unanimous':
|
|
42
|
-
return totalNodes;
|
|
43
|
-
case 'supermajority':
|
|
44
|
-
return Math.floor((totalNodes * 2) / 3) + 1;
|
|
45
|
-
case 'majority':
|
|
46
|
-
default:
|
|
47
|
-
return Math.floor(totalNodes / 2) + 1;
|
|
48
|
-
}
|
|
49
|
-
default:
|
|
50
|
-
return Math.floor(totalNodes / 2) + 1;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Detect Byzantine behavior: a voter who has cast conflicting votes
|
|
55
|
-
* across proposals in the same round (same type, overlapping time).
|
|
56
|
-
* Here we check if the voter already voted differently on this proposal
|
|
57
|
-
* (which shouldn't happen if we block double-votes, so this checks
|
|
58
|
-
* cross-proposal conflicting votes for same type within the pending set).
|
|
59
|
-
*/
|
|
60
|
-
function detectByzantineVoters(pending, currentProposal, voterId, newVote) {
|
|
61
|
-
// Check if voter cast opposite votes on proposals of the same type
|
|
62
|
-
for (const p of pending) {
|
|
63
|
-
if (p.proposalId === currentProposal.proposalId)
|
|
64
|
-
continue;
|
|
65
|
-
if (p.type !== currentProposal.type)
|
|
66
|
-
continue;
|
|
67
|
-
if (voterId in p.votes && p.votes[voterId] !== newVote) {
|
|
68
|
-
return true; // Conflicting vote detected
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Try to resolve a proposal based on its strategy.
|
|
75
|
-
* Returns 'approved', 'rejected', or null if still pending.
|
|
76
|
-
*/
|
|
77
|
-
function tryResolveProposal(proposal, totalNodes) {
|
|
78
|
-
const votesFor = Object.values(proposal.votes).filter(v => v).length;
|
|
79
|
-
const votesAgainst = Object.values(proposal.votes).filter(v => !v).length;
|
|
80
|
-
const required = calculateRequiredVotes(proposal.strategy, totalNodes, proposal.quorumPreset);
|
|
81
|
-
if (votesFor >= required)
|
|
82
|
-
return 'approved';
|
|
83
|
-
if (votesAgainst >= required)
|
|
84
|
-
return 'rejected';
|
|
85
|
-
// For quorum with 'unanimous', also reject if any vote is against
|
|
86
|
-
if (proposal.strategy === 'quorum' && proposal.quorumPreset === 'unanimous' && votesAgainst > 0) {
|
|
87
|
-
return 'rejected';
|
|
88
|
-
}
|
|
89
|
-
// Check if it's impossible to reach quorum (remaining potential votes can't tip it)
|
|
90
|
-
const totalVotes = Object.keys(proposal.votes).length;
|
|
91
|
-
const remaining = totalNodes - totalVotes;
|
|
92
|
-
if (votesFor + remaining < required && votesAgainst + remaining < required) {
|
|
93
|
-
// Deadlock: neither side can win -- reject
|
|
94
|
-
return 'rejected';
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
function getHiveDir() {
|
|
99
|
-
return join(getMonomindDataRoot(), HIVE_DIR);
|
|
100
|
-
}
|
|
101
|
-
function getHivePath() {
|
|
102
|
-
return join(getHiveDir(), HIVE_FILE);
|
|
103
|
-
}
|
|
104
|
-
function ensureHiveDir() {
|
|
105
|
-
const dir = getHiveDir();
|
|
106
|
-
if (!existsSync(dir)) {
|
|
107
|
-
mkdirSync(dir, { recursive: true });
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
const MAX_HIVE_STATE_BYTES = 10 * 1024 * 1024; // 10 MB
|
|
111
|
-
function loadHiveState() {
|
|
112
|
-
try {
|
|
113
|
-
const path = getHivePath();
|
|
114
|
-
migrateLegacyStoreFile(path, join(HIVE_DIR, HIVE_FILE));
|
|
115
|
-
if (existsSync(path) && statSync(path).size <= MAX_HIVE_STATE_BYTES) {
|
|
116
|
-
const data = readFileSync(path, 'utf-8');
|
|
117
|
-
return JSON.parse(data);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
catch (e) {
|
|
121
|
-
if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
|
|
122
|
-
console.error('[hive-mind-tools] failed to parse hive state.json — resetting to default state:', e);
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
initialized: false,
|
|
126
|
-
topology: 'mesh',
|
|
127
|
-
workers: [],
|
|
128
|
-
consensus: { pending: [], history: [] },
|
|
129
|
-
sharedMemory: {},
|
|
130
|
-
createdAt: new Date().toISOString(),
|
|
131
|
-
updatedAt: new Date().toISOString(),
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
function saveHiveState(state) {
|
|
135
|
-
ensureHiveDir();
|
|
136
|
-
state.updatedAt = new Date().toISOString();
|
|
137
|
-
const dest = getHivePath();
|
|
138
|
-
const tmp = `${dest}.${process.pid}.${Date.now()}.tmp`;
|
|
139
|
-
writeFileSync(tmp, JSON.stringify(state, null, 2), 'utf-8');
|
|
140
|
-
renameSync(tmp, dest);
|
|
141
|
-
}
|
|
142
|
-
const SESSION_SECRET_FILE = 'session-secret';
|
|
143
|
-
/**
|
|
144
|
-
* Resolve the HMAC signing secret used for consensus vote/audit records.
|
|
145
|
-
*
|
|
146
|
-
* Previously this was read exclusively from MONOMIND_SESSION_SECRET, which
|
|
147
|
-
* nothing in `init`/`doctor`/docs ever sets — so by default every consensus
|
|
148
|
-
* decision silently produced zero audit records (writes were skipped, and
|
|
149
|
-
* hive-mind_audit_verify refused to run at all). To make the audit trail
|
|
150
|
-
* work out of the box, fall back to a per-project secret generated once and
|
|
151
|
-
* persisted alongside the hive state (0600-equivalent: kept out of state.json
|
|
152
|
-
* and never returned by any tool). MONOMIND_SESSION_SECRET still takes
|
|
153
|
-
* precedence for callers that want to manage/rotate the secret themselves.
|
|
154
|
-
*/
|
|
155
|
-
function getOrCreateSessionSecret() {
|
|
156
|
-
const envSecret = process.env.MONOMIND_SESSION_SECRET;
|
|
157
|
-
if (envSecret)
|
|
158
|
-
return envSecret;
|
|
159
|
-
const path = join(getHiveDir(), SESSION_SECRET_FILE);
|
|
160
|
-
try {
|
|
161
|
-
if (existsSync(path)) {
|
|
162
|
-
const existing = readFileSync(path, 'utf-8').trim();
|
|
163
|
-
if (existing)
|
|
164
|
-
return existing;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
catch { /* fall through to regeneration */ }
|
|
168
|
-
try {
|
|
169
|
-
ensureHiveDir();
|
|
170
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
171
|
-
const secret = randomBytes(32).toString('hex');
|
|
172
|
-
const tmp = `${path}.${process.pid}.${Date.now()}.tmp`;
|
|
173
|
-
writeFileSync(tmp, secret, 'utf-8');
|
|
174
|
-
renameSync(tmp, path);
|
|
175
|
-
return secret;
|
|
176
|
-
}
|
|
177
|
-
catch {
|
|
178
|
-
// Filesystem unavailable — fall back to an ephemeral in-process secret.
|
|
179
|
-
// Audit records signed with this won't verify across process restarts,
|
|
180
|
-
// but propose/vote/resolve still function.
|
|
181
|
-
return randomBytes(32).toString('hex');
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
// Import agent store helpers for spawn functionality
|
|
185
|
-
import { existsSync as agentStoreExists, writeFileSync as writeAgentStore, mkdirSync as mkdirAgentStore } from 'node:fs';
|
|
186
|
-
const HIVE_RESERVED_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
187
|
-
function saveAgentStore(store) {
|
|
188
|
-
const storeDir = join(getMonomindDataRoot(), 'agents');
|
|
189
|
-
if (!agentStoreExists(storeDir)) {
|
|
190
|
-
mkdirAgentStore(storeDir, { recursive: true });
|
|
191
|
-
}
|
|
192
|
-
const dest = join(storeDir, 'store.json');
|
|
193
|
-
const tmp = `${dest}.${process.pid}.${Date.now()}.tmp`;
|
|
194
|
-
writeAgentStore(tmp, JSON.stringify(store, null, 2), 'utf-8');
|
|
195
|
-
renameSync(tmp, dest);
|
|
196
|
-
}
|
|
197
|
-
// Every hive-mind_* tool operates on a single JSON state file in one process —
|
|
198
|
-
// "consensus"/"spawn"/"broadcast" etc. are vote-threshold bookkeeping and
|
|
199
|
-
// record-keeping, not real distributed coordination (see CLAUDE.md's Hive-Mind
|
|
200
|
-
// Consensus section and hive-mind_consensus's own description). Only status/join
|
|
201
|
-
// are legitimate no-drama primitives (read state / register into it) and stay
|
|
202
|
-
// visible by default; everything else is gated behind MONOMIND_MCP_SPECULATIVE=1.
|
|
203
|
-
/** Ungated — internal/test use only. MCP clients get `hiveMindTools` below. */
|
|
204
|
-
export const allHiveMindTools = [
|
|
205
|
-
{
|
|
206
|
-
name: 'hive-mind_spawn',
|
|
207
|
-
description: 'Write worker agent records into the agent store and register their ids on the hive state file (combines agent_spawn + hive-mind_join). Creates bookkeeping entries only — no process, thread, or agent is started. Real concurrency comes from Claude Code\'s Task tool.',
|
|
208
|
-
category: 'hive-mind',
|
|
209
|
-
inputSchema: {
|
|
210
|
-
type: 'object',
|
|
211
|
-
properties: {
|
|
212
|
-
count: { type: 'number', description: 'Number of workers to spawn (default: 1)', default: 1 },
|
|
213
|
-
role: { type: 'string', enum: ['worker', 'specialist', 'scout'], description: 'Worker role in hive', default: 'worker' },
|
|
214
|
-
agentType: { type: 'string', description: 'Agent type for spawned workers', default: 'worker' },
|
|
215
|
-
prefix: { type: 'string', description: 'Prefix for worker IDs', default: 'hive-worker' },
|
|
216
|
-
},
|
|
217
|
-
},
|
|
218
|
-
handler: async (input) => {
|
|
219
|
-
const state = loadHiveState();
|
|
220
|
-
if (!state.initialized) {
|
|
221
|
-
return { success: false, error: 'Hive-mind not initialized. Run hive-mind/init first.' };
|
|
222
|
-
}
|
|
223
|
-
const count = Math.min(Math.max(1, input.count || 1), 20); // Cap at 20
|
|
224
|
-
// Cap role/agentType/prefix: used as JSON keys and stored values in agentStore
|
|
225
|
-
// on disk; an oversized prefix inflates the generated agentId key and config.
|
|
226
|
-
const MAX_HIVE_ROLE_LEN = 256;
|
|
227
|
-
const MAX_HIVE_PREFIX_LEN = 128;
|
|
228
|
-
const rawRole = input.role || 'worker';
|
|
229
|
-
const role = typeof rawRole === 'string' && rawRole.length > MAX_HIVE_ROLE_LEN
|
|
230
|
-
? rawRole.slice(0, MAX_HIVE_ROLE_LEN) : rawRole;
|
|
231
|
-
const rawAgentType = input.agentType || 'worker';
|
|
232
|
-
const agentType = typeof rawAgentType === 'string' && rawAgentType.length > MAX_HIVE_ROLE_LEN
|
|
233
|
-
? rawAgentType.slice(0, MAX_HIVE_ROLE_LEN) : rawAgentType;
|
|
234
|
-
const rawPrefix = input.prefix || 'hive-worker';
|
|
235
|
-
const prefix = typeof rawPrefix === 'string' && rawPrefix.length > MAX_HIVE_PREFIX_LEN
|
|
236
|
-
? rawPrefix.slice(0, MAX_HIVE_PREFIX_LEN) : rawPrefix;
|
|
237
|
-
// Must use the null-aware loader here (this handler mutates and saves)
|
|
238
|
-
// — loadAgentStore() on a corrupt/oversized store.json now returns the
|
|
239
|
-
// empty default, and saving that back would wipe every real agent.
|
|
240
|
-
const agentStore = loadAgentStoreOrNull();
|
|
241
|
-
if (!agentStore) {
|
|
242
|
-
return { success: false, error: 'Agent store is unreadable/corrupt — refusing to spawn hive workers to avoid overwriting real agent data.' };
|
|
243
|
-
}
|
|
244
|
-
const spawnedWorkers = [];
|
|
245
|
-
for (let i = 0; i < count; i++) {
|
|
246
|
-
const agentId = `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
|
|
247
|
-
if (HIVE_RESERVED_KEYS.has(agentId))
|
|
248
|
-
continue;
|
|
249
|
-
// Create agent record (like agent/spawn)
|
|
250
|
-
agentStore.agents[agentId] = {
|
|
251
|
-
agentId,
|
|
252
|
-
agentType,
|
|
253
|
-
status: 'idle',
|
|
254
|
-
health: 1.0,
|
|
255
|
-
taskCount: 0,
|
|
256
|
-
config: { role, hiveRole: role },
|
|
257
|
-
createdAt: new Date().toISOString(),
|
|
258
|
-
domain: 'hive-mind',
|
|
259
|
-
};
|
|
260
|
-
// Join to hive-mind (like hive-mind/join)
|
|
261
|
-
const MAX_HIVE_AGENTS = 100;
|
|
262
|
-
if (!state.workers.includes(agentId)) {
|
|
263
|
-
if (state.workers.length >= MAX_HIVE_AGENTS) {
|
|
264
|
-
return { success: false, error: `Hive has reached max agent capacity (${MAX_HIVE_AGENTS})` };
|
|
265
|
-
}
|
|
266
|
-
state.workers.push(agentId);
|
|
267
|
-
}
|
|
268
|
-
spawnedWorkers.push({
|
|
269
|
-
agentId,
|
|
270
|
-
role,
|
|
271
|
-
joinedAt: new Date().toISOString(),
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
saveAgentStore(agentStore);
|
|
275
|
-
saveHiveState(state);
|
|
276
|
-
return {
|
|
277
|
-
success: true,
|
|
278
|
-
spawned: count,
|
|
279
|
-
workers: spawnedWorkers,
|
|
280
|
-
totalWorkers: state.workers.length,
|
|
281
|
-
hiveStatus: 'active',
|
|
282
|
-
message: `Spawned ${count} worker(s) and joined them to the hive-mind`,
|
|
283
|
-
};
|
|
284
|
-
},
|
|
285
|
-
},
|
|
286
|
-
{
|
|
287
|
-
name: 'hive-mind_init',
|
|
288
|
-
description: 'Create the hive state file recording topology, consensus strategy, and an empty worker list. Writes JSON state only — nothing is started, and no collective process exists. Note "gossip" and "crdt" strategies are rejected: they are not implemented.',
|
|
289
|
-
category: 'hive-mind',
|
|
290
|
-
inputSchema: {
|
|
291
|
-
type: 'object',
|
|
292
|
-
properties: {
|
|
293
|
-
topology: { type: 'string', enum: ['mesh', 'hierarchical', 'ring', 'star'], description: 'Network topology' },
|
|
294
|
-
queenId: { type: 'string', description: 'Initial queen agent ID' },
|
|
295
|
-
consensus: { type: 'string', enum: ['byzantine', 'bft', 'raft', 'quorum'], description: 'Consensus strategy to govern hive-mind_consensus propose/vote (gossip/crdt are planned but not implemented and fall back to byzantine). Default: byzantine.' },
|
|
296
|
-
maxAgents: { type: 'number', description: 'Maximum number of agents in the hive. Default: 15.' },
|
|
297
|
-
persist: { type: 'boolean', description: 'Whether to persist hive state to disk. Default: true.' },
|
|
298
|
-
memoryBackend: { type: 'string', description: 'Shared memory backend for the hive. Default: hybrid.' },
|
|
299
|
-
},
|
|
300
|
-
},
|
|
301
|
-
handler: async (input) => {
|
|
302
|
-
const hiveId = `hive-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
303
|
-
// Cap queenId: stored in hive state JSON as the queen's agentId field.
|
|
304
|
-
const MAX_QUEEN_ID_LEN = 256;
|
|
305
|
-
const rawQueenId = input.queenId || `queen-${Date.now()}`;
|
|
306
|
-
const queenId = typeof rawQueenId === 'string' && rawQueenId.length > MAX_QUEEN_ID_LEN
|
|
307
|
-
? rawQueenId.slice(0, MAX_QUEEN_ID_LEN) : rawQueenId;
|
|
308
|
-
const now = new Date().toISOString();
|
|
309
|
-
// Validate consensus strategy: gossip and crdt are planned but not implemented
|
|
310
|
-
const SUPPORTED_CONSENSUS = ['byzantine', 'bft', 'raft', 'quorum'];
|
|
311
|
-
const PLANNED_CONSENSUS = ['gossip', 'crdt'];
|
|
312
|
-
const requestedConsensus = input.consensus || 'byzantine';
|
|
313
|
-
const consensusWarning = PLANNED_CONSENSUS.includes(requestedConsensus)
|
|
314
|
-
? `Strategy "${requestedConsensus}" is planned but not yet implemented; defaulting to "byzantine".`
|
|
315
|
-
: undefined;
|
|
316
|
-
const effectiveConsensus = PLANNED_CONSENSUS.includes(requestedConsensus)
|
|
317
|
-
? 'byzantine'
|
|
318
|
-
: (SUPPORTED_CONSENSUS.includes(requestedConsensus) ? requestedConsensus : 'byzantine');
|
|
319
|
-
const state = {
|
|
320
|
-
initialized: true,
|
|
321
|
-
hiveId,
|
|
322
|
-
topology: input.topology || 'mesh',
|
|
323
|
-
queen: { agentId: queenId, electedAt: now, term: 1 },
|
|
324
|
-
workers: [],
|
|
325
|
-
// Persist the chosen strategy on the hive state so hive-mind_consensus
|
|
326
|
-
// propose/vote default to it instead of silently using 'raft'.
|
|
327
|
-
// 'byzantine' is the CLI-facing name; the internal ConsensusStrategy type uses 'bft'.
|
|
328
|
-
consensusStrategy: (effectiveConsensus === 'byzantine' ? 'bft' : effectiveConsensus),
|
|
329
|
-
consensus: { pending: [], history: [] },
|
|
330
|
-
sharedMemory: {},
|
|
331
|
-
createdAt: now,
|
|
332
|
-
updatedAt: now,
|
|
333
|
-
};
|
|
334
|
-
// Single write — a prior version of this handler saved state twice
|
|
335
|
-
// (once before setting consensusStrategy, once after), which was
|
|
336
|
-
// redundant.
|
|
337
|
-
saveHiveState(state);
|
|
338
|
-
return {
|
|
339
|
-
success: true,
|
|
340
|
-
hiveId,
|
|
341
|
-
topology: state.topology,
|
|
342
|
-
consensus: effectiveConsensus,
|
|
343
|
-
queenId,
|
|
344
|
-
neuralLearning: 'unavailable',
|
|
345
|
-
status: 'initialized',
|
|
346
|
-
...(consensusWarning ? { warning: consensusWarning } : {}),
|
|
347
|
-
config: {
|
|
348
|
-
topology: state.topology,
|
|
349
|
-
consensus: effectiveConsensus,
|
|
350
|
-
maxAgents: input.maxAgents || 15,
|
|
351
|
-
persist: input.persist !== false,
|
|
352
|
-
memoryBackend: input.memoryBackend || 'hybrid',
|
|
353
|
-
},
|
|
354
|
-
createdAt: state.createdAt,
|
|
355
|
-
};
|
|
356
|
-
},
|
|
357
|
-
},
|
|
358
|
-
{
|
|
359
|
-
name: 'hive-mind_status',
|
|
360
|
-
description: 'Get hive-mind status',
|
|
361
|
-
category: 'hive-mind',
|
|
362
|
-
inputSchema: {
|
|
363
|
-
type: 'object',
|
|
364
|
-
properties: {
|
|
365
|
-
verbose: { type: 'boolean', description: 'Include detailed information' },
|
|
366
|
-
},
|
|
367
|
-
},
|
|
368
|
-
handler: async (input) => {
|
|
369
|
-
const state = loadHiveState();
|
|
370
|
-
const uptime = state.createdAt ? Date.now() - new Date(state.createdAt).getTime() : 0;
|
|
371
|
-
// Load agent store once for all workers
|
|
372
|
-
const agentStore = loadAgentStore();
|
|
373
|
-
// Compute real task metrics from task store
|
|
374
|
-
const taskStorePath = join(getMonomindDataRoot(), 'tasks', 'store.json');
|
|
375
|
-
migrateLegacyStoreFile(taskStorePath, join('tasks', 'store.json'));
|
|
376
|
-
let pendingTaskCount = 0;
|
|
377
|
-
let activeTaskCount = 0;
|
|
378
|
-
let completedTaskCount = 0;
|
|
379
|
-
try {
|
|
380
|
-
if (existsSync(taskStorePath) && statSync(taskStorePath).size <= MAX_HIVE_STATE_BYTES) {
|
|
381
|
-
const taskStore = JSON.parse(readFileSync(taskStorePath, 'utf-8'));
|
|
382
|
-
for (const task of Object.values(taskStore.tasks || {})) {
|
|
383
|
-
if (task.status === 'pending')
|
|
384
|
-
pendingTaskCount++;
|
|
385
|
-
else if (task.status === 'in_progress')
|
|
386
|
-
activeTaskCount++;
|
|
387
|
-
else if (task.status === 'completed')
|
|
388
|
-
completedTaskCount++;
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
catch (e) {
|
|
393
|
-
if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
|
|
394
|
-
console.error('[hive-mind-tools] failed to parse task store — task counts default to 0:', e);
|
|
395
|
-
}
|
|
396
|
-
const workerCount = Math.max(1, state.workers.length);
|
|
397
|
-
const realLoad = activeTaskCount / workerCount;
|
|
398
|
-
const status = {
|
|
399
|
-
// CLI expected fields
|
|
400
|
-
hiveId: state.hiveId ?? `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
|
|
401
|
-
status: state.initialized ? 'active' : 'offline',
|
|
402
|
-
topology: state.topology,
|
|
403
|
-
// Reflect the strategy actually chosen at hive-mind_init (persisted
|
|
404
|
-
// as state.consensusStrategy so it "actually governs voting" — see
|
|
405
|
-
// the field's doc comment) instead of hardcoding a default that
|
|
406
|
-
// ignored what was configured. 'bft' is the internal name for the
|
|
407
|
-
// CLI-facing 'byzantine' strategy.
|
|
408
|
-
consensus: state.consensusStrategy
|
|
409
|
-
? (state.consensusStrategy === 'bft' ? 'byzantine' : state.consensusStrategy)
|
|
410
|
-
: 'byzantine',
|
|
411
|
-
queen: state.queen ? {
|
|
412
|
-
id: state.queen.agentId,
|
|
413
|
-
agentId: state.queen.agentId,
|
|
414
|
-
status: 'active',
|
|
415
|
-
load: Math.round(realLoad * 1000) / 1000,
|
|
416
|
-
tasksQueued: pendingTaskCount,
|
|
417
|
-
electedAt: state.queen.electedAt,
|
|
418
|
-
term: state.queen.term,
|
|
419
|
-
} : { id: 'N/A', status: 'offline', load: 0, tasksQueued: 0 },
|
|
420
|
-
workers: state.workers.map(w => {
|
|
421
|
-
const agent = agentStore.agents[w];
|
|
422
|
-
return {
|
|
423
|
-
id: w,
|
|
424
|
-
type: agent?.agentType || 'worker',
|
|
425
|
-
status: agent?.status || 'unknown',
|
|
426
|
-
// AgentRecord has no currentTask field — always null. Kept in the
|
|
427
|
-
// response shape for API stability; was already dead before this
|
|
428
|
-
// (the previous `as unknown as Record<string, unknown>` cast hid
|
|
429
|
-
// that `agent?.currentTask` never matched a real field).
|
|
430
|
-
currentTask: null,
|
|
431
|
-
tasksCompleted: agent?.taskCount || 0,
|
|
432
|
-
};
|
|
433
|
-
}),
|
|
434
|
-
metrics: {
|
|
435
|
-
totalTasks: pendingTaskCount + activeTaskCount + completedTaskCount,
|
|
436
|
-
completedTasks: completedTaskCount,
|
|
437
|
-
activeTasks: activeTaskCount,
|
|
438
|
-
pendingTasks: pendingTaskCount,
|
|
439
|
-
failedTasks: 0,
|
|
440
|
-
consensusRounds: state.consensus.history.length,
|
|
441
|
-
memoryUsage: `${Object.keys(state.sharedMemory).length * 2} KB`,
|
|
442
|
-
},
|
|
443
|
-
health: {
|
|
444
|
-
overall: 'healthy',
|
|
445
|
-
queen: state.queen ? 'healthy' : 'unhealthy',
|
|
446
|
-
workers: state.workers.length > 0 ? 'healthy' : 'degraded',
|
|
447
|
-
consensus: 'healthy',
|
|
448
|
-
memory: 'healthy',
|
|
449
|
-
},
|
|
450
|
-
// Additional fields
|
|
451
|
-
id: state.hiveId ?? `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
|
|
452
|
-
initialized: state.initialized,
|
|
453
|
-
workerCount: state.workers.length,
|
|
454
|
-
pendingConsensus: state.consensus.pending.length,
|
|
455
|
-
sharedMemoryKeys: Object.keys(state.sharedMemory).length,
|
|
456
|
-
uptime,
|
|
457
|
-
createdAt: state.createdAt,
|
|
458
|
-
updatedAt: state.updatedAt,
|
|
459
|
-
};
|
|
460
|
-
if (input.verbose) {
|
|
461
|
-
return {
|
|
462
|
-
...status,
|
|
463
|
-
workerDetails: state.workers,
|
|
464
|
-
consensusHistory: state.consensus.history.slice(-10),
|
|
465
|
-
sharedMemory: state.sharedMemory,
|
|
466
|
-
};
|
|
467
|
-
}
|
|
468
|
-
return status;
|
|
469
|
-
},
|
|
470
|
-
},
|
|
471
|
-
{
|
|
472
|
-
name: 'hive-mind_join',
|
|
473
|
-
description: 'Join an agent to the hive-mind',
|
|
474
|
-
category: 'hive-mind',
|
|
475
|
-
inputSchema: {
|
|
476
|
-
type: 'object',
|
|
477
|
-
properties: {
|
|
478
|
-
agentId: { type: 'string', description: 'Agent ID to join' },
|
|
479
|
-
role: { type: 'string', enum: ['worker', 'specialist', 'scout'], description: 'Agent role in hive' },
|
|
480
|
-
},
|
|
481
|
-
required: ['agentId'],
|
|
482
|
-
},
|
|
483
|
-
handler: async (input) => {
|
|
484
|
-
const state = loadHiveState();
|
|
485
|
-
const agentId = input.agentId;
|
|
486
|
-
// Reject IDs that would mutate Object.prototype when used as a key on the
|
|
487
|
-
// JSON-loaded plain object `agentStore.agents` (read in hive-mind_status).
|
|
488
|
-
if (typeof agentId !== 'string' || agentId.length === 0 || agentId.length > 128 ||
|
|
489
|
-
HIVE_RESERVED_KEYS.has(agentId) || !/^[a-zA-Z0-9_-]+$/.test(agentId)) {
|
|
490
|
-
return { success: false, error: 'Invalid agentId' };
|
|
491
|
-
}
|
|
492
|
-
if (!state.initialized) {
|
|
493
|
-
return { success: false, error: 'Hive-mind not initialized' };
|
|
494
|
-
}
|
|
495
|
-
const MAX_HIVE_AGENTS = 100;
|
|
496
|
-
if (!state.workers.includes(agentId)) {
|
|
497
|
-
if (state.workers.length >= MAX_HIVE_AGENTS) {
|
|
498
|
-
return { success: false, error: `Hive has reached max agent capacity (${MAX_HIVE_AGENTS})` };
|
|
499
|
-
}
|
|
500
|
-
state.workers.push(agentId);
|
|
501
|
-
saveHiveState(state);
|
|
502
|
-
}
|
|
503
|
-
return {
|
|
504
|
-
success: true,
|
|
505
|
-
agentId,
|
|
506
|
-
role: input.role || 'worker',
|
|
507
|
-
totalWorkers: state.workers.length,
|
|
508
|
-
joinedAt: new Date().toISOString(),
|
|
509
|
-
};
|
|
510
|
-
},
|
|
511
|
-
},
|
|
512
|
-
{
|
|
513
|
-
name: 'hive-mind_leave',
|
|
514
|
-
description: 'Remove an agent from the hive-mind',
|
|
515
|
-
category: 'hive-mind',
|
|
516
|
-
inputSchema: {
|
|
517
|
-
type: 'object',
|
|
518
|
-
properties: {
|
|
519
|
-
agentId: { type: 'string', description: 'Agent ID to remove' },
|
|
520
|
-
},
|
|
521
|
-
required: ['agentId'],
|
|
522
|
-
},
|
|
523
|
-
handler: async (input) => {
|
|
524
|
-
const state = loadHiveState();
|
|
525
|
-
const agentId = input.agentId;
|
|
526
|
-
if (typeof agentId !== 'string' || agentId.length === 0 || agentId.length > 128 ||
|
|
527
|
-
HIVE_RESERVED_KEYS.has(agentId) || !/^[a-zA-Z0-9_-]+$/.test(agentId)) {
|
|
528
|
-
return { success: false, error: 'Invalid agentId' };
|
|
529
|
-
}
|
|
530
|
-
const index = state.workers.indexOf(agentId);
|
|
531
|
-
if (index > -1) {
|
|
532
|
-
state.workers.splice(index, 1);
|
|
533
|
-
saveHiveState(state);
|
|
534
|
-
return {
|
|
535
|
-
success: true,
|
|
536
|
-
agentId,
|
|
537
|
-
leftAt: new Date().toISOString(),
|
|
538
|
-
remainingWorkers: state.workers.length,
|
|
539
|
-
};
|
|
540
|
-
}
|
|
541
|
-
return { success: false, agentId, error: 'Agent not in hive' };
|
|
542
|
-
},
|
|
543
|
-
},
|
|
544
|
-
{
|
|
545
|
-
name: 'hive-mind_consensus',
|
|
546
|
-
description: 'Propose or vote on a threshold-based decision, single-process only. "bft"/"raft"/"quorum" are vote-count thresholds (2f+1 / majority / configurable preset) over one JSON state file — NOT real distributed consensus protocols (no leader election, log replication, or network model). Names kept for CLI/API compatibility.',
|
|
547
|
-
category: 'hive-mind',
|
|
548
|
-
inputSchema: {
|
|
549
|
-
type: 'object',
|
|
550
|
-
properties: {
|
|
551
|
-
action: { type: 'string', enum: ['propose', 'vote', 'status', 'list'], description: 'Consensus action' },
|
|
552
|
-
proposalId: { type: 'string', description: 'Proposal ID (for vote/status)' },
|
|
553
|
-
type: { type: 'string', description: 'Proposal type (for propose)' },
|
|
554
|
-
value: { description: 'Proposal value (for propose)' },
|
|
555
|
-
vote: { type: 'boolean', description: 'Vote (true=for, false=against)' },
|
|
556
|
-
voterId: { type: 'string', description: 'Voter agent ID' },
|
|
557
|
-
strategy: { type: 'string', enum: ['bft', 'raft', 'quorum'], description: 'Consensus strategy (default: raft)' },
|
|
558
|
-
quorumPreset: { type: 'string', enum: ['unanimous', 'majority', 'supermajority'], description: 'Quorum threshold preset (for quorum strategy, default: majority)' },
|
|
559
|
-
term: { type: 'number', description: 'Term number (for raft strategy)' },
|
|
560
|
-
timeoutMs: { type: 'number', description: 'Timeout in ms for raft re-proposal (default: 30000)' },
|
|
561
|
-
minDivergenceRounds: { type: 'number', description: 'O-Information anti-groupthink gate: minimum rounds with divergent votes required before resolution (arXiv:2510.05174). Default: 0 (disabled).' },
|
|
562
|
-
},
|
|
563
|
-
required: ['action'],
|
|
564
|
-
},
|
|
565
|
-
handler: async (input) => {
|
|
566
|
-
const state = loadHiveState();
|
|
567
|
-
const action = input.action;
|
|
568
|
-
// Default to the strategy chosen at hive-mind_init (state.consensusStrategy);
|
|
569
|
-
// fall back to 'raft' only when the hive hasn't been initialized with one.
|
|
570
|
-
const rawStrategy = input.strategy || state.consensusStrategy || 'raft';
|
|
571
|
-
// Gossip and CRDT are planned but not yet implemented -- reject early
|
|
572
|
-
// with an honest message instead of silently falling through.
|
|
573
|
-
const UNIMPLEMENTED_STRATEGIES = ['gossip', 'crdt'];
|
|
574
|
-
if (UNIMPLEMENTED_STRATEGIES.includes(rawStrategy)) {
|
|
575
|
-
return {
|
|
576
|
-
action,
|
|
577
|
-
error: `Strategy "${rawStrategy}" is planned but not yet implemented. Available strategies: bft, raft, quorum.`,
|
|
578
|
-
availableStrategies: ['bft', 'raft', 'quorum'],
|
|
579
|
-
};
|
|
580
|
-
}
|
|
581
|
-
const strategy = rawStrategy;
|
|
582
|
-
const totalNodes = state.workers.length;
|
|
583
|
-
if (action === 'propose') {
|
|
584
|
-
const proposalId = `proposal-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
585
|
-
const quorumPreset = input.quorumPreset || 'majority';
|
|
586
|
-
const term = input.term || (state.queen?.term ?? 1);
|
|
587
|
-
const timeoutMs = input.timeoutMs || 30000;
|
|
588
|
-
// Raft: check if there's already a pending proposal for this term
|
|
589
|
-
if (strategy === 'raft') {
|
|
590
|
-
const existingTermProposal = state.consensus.pending.find(p => p.strategy === 'raft' && p.term === term && p.status === 'pending');
|
|
591
|
-
if (existingTermProposal) {
|
|
592
|
-
return {
|
|
593
|
-
action,
|
|
594
|
-
error: `Raft term ${term} already has a pending proposal: ${existingTermProposal.proposalId}. Wait for resolution or use a higher term.`,
|
|
595
|
-
existingProposalId: existingTermProposal.proposalId,
|
|
596
|
-
term,
|
|
597
|
-
};
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
const required = calculateRequiredVotes(strategy, totalNodes, quorumPreset);
|
|
601
|
-
const minDivergenceRounds = typeof input.minDivergenceRounds === 'number'
|
|
602
|
-
? Math.max(0, input.minDivergenceRounds)
|
|
603
|
-
: 0;
|
|
604
|
-
// Cap proposal fields: stored in state.consensus.pending and then
|
|
605
|
-
// state.consensus.history (up to 1000 entries). An unbounded value
|
|
606
|
-
// inflates the on-disk hive state by up to 1000 × value size.
|
|
607
|
-
const MAX_PROPOSAL_TYPE_LEN = 128;
|
|
608
|
-
const MAX_PROPOSAL_VOTER_ID_LEN = 256;
|
|
609
|
-
const MAX_PROPOSAL_VALUE_BYTES = 64 * 1024; // 64 KB
|
|
610
|
-
const rawProposalType = input.type || 'general';
|
|
611
|
-
const proposalType = typeof rawProposalType === 'string' && rawProposalType.length > MAX_PROPOSAL_TYPE_LEN
|
|
612
|
-
? rawProposalType.slice(0, MAX_PROPOSAL_TYPE_LEN) : rawProposalType;
|
|
613
|
-
const rawVoterId = input.voterId || 'system';
|
|
614
|
-
const proposedBy = typeof rawVoterId === 'string' && rawVoterId.length > MAX_PROPOSAL_VOTER_ID_LEN
|
|
615
|
-
? rawVoterId.slice(0, MAX_PROPOSAL_VOTER_ID_LEN) : rawVoterId;
|
|
616
|
-
// Cap value if it's a string; leave non-string values as-is (they are
|
|
617
|
-
// JSON-serialised by saveHiveState which uses JSON.stringify — bounded
|
|
618
|
-
// objects are fine).
|
|
619
|
-
const rawValue = input.value;
|
|
620
|
-
const cappedValue = typeof rawValue === 'string' && rawValue.length > MAX_PROPOSAL_VALUE_BYTES
|
|
621
|
-
? rawValue.slice(0, MAX_PROPOSAL_VALUE_BYTES) : rawValue;
|
|
622
|
-
const proposal = {
|
|
623
|
-
proposalId,
|
|
624
|
-
type: proposalType,
|
|
625
|
-
value: cappedValue,
|
|
626
|
-
proposedBy,
|
|
627
|
-
proposedAt: new Date().toISOString(),
|
|
628
|
-
votes: {},
|
|
629
|
-
status: 'pending',
|
|
630
|
-
strategy,
|
|
631
|
-
term: strategy === 'raft' ? term : undefined,
|
|
632
|
-
quorumPreset: strategy === 'quorum' ? quorumPreset : undefined,
|
|
633
|
-
byzantineVoters: strategy === 'bft' ? [] : undefined,
|
|
634
|
-
timeoutAt: strategy === 'raft' ? new Date(Date.now() + timeoutMs).toISOString() : undefined,
|
|
635
|
-
minDivergenceRounds: minDivergenceRounds > 0 ? minDivergenceRounds : undefined,
|
|
636
|
-
divergenceRoundsSeen: 0,
|
|
637
|
-
};
|
|
638
|
-
state.consensus.pending.push(proposal);
|
|
639
|
-
saveHiveState(state);
|
|
640
|
-
return {
|
|
641
|
-
action,
|
|
642
|
-
proposalId,
|
|
643
|
-
type: proposal.type,
|
|
644
|
-
strategy,
|
|
645
|
-
status: 'pending',
|
|
646
|
-
required,
|
|
647
|
-
totalNodes,
|
|
648
|
-
term: proposal.term,
|
|
649
|
-
quorumPreset: proposal.quorumPreset,
|
|
650
|
-
timeoutAt: proposal.timeoutAt,
|
|
651
|
-
minDivergenceRounds: proposal.minDivergenceRounds,
|
|
652
|
-
};
|
|
653
|
-
}
|
|
654
|
-
if (action === 'vote') {
|
|
655
|
-
const proposal = state.consensus.pending.find(p => p.proposalId === input.proposalId);
|
|
656
|
-
if (!proposal) {
|
|
657
|
-
return { action, error: 'Proposal not found or already resolved' };
|
|
658
|
-
}
|
|
659
|
-
const voterId = input.voterId;
|
|
660
|
-
if (!voterId) {
|
|
661
|
-
return { action, error: 'voterId is required for voting' };
|
|
662
|
-
}
|
|
663
|
-
if (totalNodes === 0) {
|
|
664
|
-
return { action, error: 'No workers in hive — cannot vote' };
|
|
665
|
-
}
|
|
666
|
-
if (!state.workers.includes(voterId)) {
|
|
667
|
-
return { action, error: `Voter ${voterId} is not a member of this hive` };
|
|
668
|
-
}
|
|
669
|
-
const voteValue = input.vote;
|
|
670
|
-
const proposalStrategy = proposal.strategy || 'raft';
|
|
671
|
-
const required = calculateRequiredVotes(proposalStrategy, totalNodes, proposal.quorumPreset);
|
|
672
|
-
// Prevent double-voting
|
|
673
|
-
if (voterId in proposal.votes) {
|
|
674
|
-
const previousVote = proposal.votes[voterId];
|
|
675
|
-
if (previousVote === voteValue) {
|
|
676
|
-
return {
|
|
677
|
-
action,
|
|
678
|
-
error: `Voter ${voterId} has already cast the same vote on this proposal`,
|
|
679
|
-
proposalId: proposal.proposalId,
|
|
680
|
-
existingVote: previousVote,
|
|
681
|
-
};
|
|
682
|
-
}
|
|
683
|
-
// Conflicting vote from same voter
|
|
684
|
-
if (proposalStrategy === 'bft') {
|
|
685
|
-
// BFT: detect as Byzantine behavior
|
|
686
|
-
if (!proposal.byzantineVoters)
|
|
687
|
-
proposal.byzantineVoters = [];
|
|
688
|
-
if (!proposal.byzantineVoters.includes(voterId)) {
|
|
689
|
-
proposal.byzantineVoters.push(voterId);
|
|
690
|
-
}
|
|
691
|
-
// Remove their vote entirely -- Byzantine voter is excluded
|
|
692
|
-
delete proposal.votes[voterId];
|
|
693
|
-
saveHiveState(state);
|
|
694
|
-
return {
|
|
695
|
-
action,
|
|
696
|
-
proposalId: proposal.proposalId,
|
|
697
|
-
voterId,
|
|
698
|
-
byzantineDetected: true,
|
|
699
|
-
message: `Byzantine behavior detected: voter ${voterId} attempted conflicting vote. Vote invalidated.`,
|
|
700
|
-
byzantineVoters: proposal.byzantineVoters,
|
|
701
|
-
status: proposal.status,
|
|
702
|
-
};
|
|
703
|
-
}
|
|
704
|
-
if (proposalStrategy === 'raft') {
|
|
705
|
-
// Raft: only one vote per node per term, reject the change
|
|
706
|
-
return {
|
|
707
|
-
action,
|
|
708
|
-
error: `Raft: voter ${voterId} already voted in term ${proposal.term}. Cannot change vote.`,
|
|
709
|
-
proposalId: proposal.proposalId,
|
|
710
|
-
term: proposal.term,
|
|
711
|
-
};
|
|
712
|
-
}
|
|
713
|
-
// Quorum: reject double-vote
|
|
714
|
-
return {
|
|
715
|
-
action,
|
|
716
|
-
error: `Voter ${voterId} has already voted on this proposal`,
|
|
717
|
-
proposalId: proposal.proposalId,
|
|
718
|
-
};
|
|
719
|
-
}
|
|
720
|
-
// BFT: check for cross-proposal Byzantine behavior
|
|
721
|
-
if (proposalStrategy === 'bft') {
|
|
722
|
-
const isByzantine = detectByzantineVoters(state.consensus.pending, proposal, voterId, voteValue);
|
|
723
|
-
if (isByzantine) {
|
|
724
|
-
if (!proposal.byzantineVoters)
|
|
725
|
-
proposal.byzantineVoters = [];
|
|
726
|
-
if (!proposal.byzantineVoters.includes(voterId)) {
|
|
727
|
-
proposal.byzantineVoters.push(voterId);
|
|
728
|
-
}
|
|
729
|
-
saveHiveState(state);
|
|
730
|
-
return {
|
|
731
|
-
action,
|
|
732
|
-
proposalId: proposal.proposalId,
|
|
733
|
-
voterId,
|
|
734
|
-
byzantineDetected: true,
|
|
735
|
-
message: `Byzantine behavior detected: voter ${voterId} cast conflicting votes across proposals of same type. Vote rejected.`,
|
|
736
|
-
byzantineVoters: proposal.byzantineVoters,
|
|
737
|
-
status: proposal.status,
|
|
738
|
-
};
|
|
739
|
-
}
|
|
740
|
-
}
|
|
741
|
-
// Record the vote
|
|
742
|
-
proposal.votes[voterId] = voteValue;
|
|
743
|
-
const votesFor = Object.values(proposal.votes).filter(v => v).length;
|
|
744
|
-
const votesAgainst = Object.values(proposal.votes).filter(v => !v).length;
|
|
745
|
-
// O-Information divergence tracking (arXiv:2510.05174)
|
|
746
|
-
// Count this voting round as divergent if not all votes are the same direction.
|
|
747
|
-
// A divergent round signals synergy is still "in play" among agents.
|
|
748
|
-
const allVotes = Object.values(proposal.votes);
|
|
749
|
-
const isUnanimous = allVotes.every(v => v) || allVotes.every(v => !v);
|
|
750
|
-
if (!isUnanimous && allVotes.length >= 2) {
|
|
751
|
-
proposal.divergenceRoundsSeen = (proposal.divergenceRoundsSeen ?? 0) + 1;
|
|
752
|
-
}
|
|
753
|
-
// CP-WBFT: weighted tally using uniform confidence (1.0) until probe scores available
|
|
754
|
-
// Source: https://arxiv.org/abs/2511.10400
|
|
755
|
-
const weightedVotes = Object.entries(proposal.votes).map(([aid, v]) => ({
|
|
756
|
-
agentId: aid,
|
|
757
|
-
vote: v,
|
|
758
|
-
confidence: 1.0, // uniform until confidence-probe is wired
|
|
759
|
-
}));
|
|
760
|
-
const cpwbftTally = weightedTally(weightedVotes);
|
|
761
|
-
// O-Information gate: defer resolution if we haven't seen enough divergent rounds.
|
|
762
|
-
// BUT: if every expected voter has already cast a vote (electorate
|
|
763
|
-
// exhausted), no more votes can ever arrive to produce a divergent
|
|
764
|
-
// round — a unanimous first-round vote would otherwise deadlock the
|
|
765
|
-
// proposal permanently since divergenceRoundsSeen only increments on
|
|
766
|
-
// disagreement. Treat electorate exhaustion as a terminal condition
|
|
767
|
-
// that opens the gate regardless of divergence.
|
|
768
|
-
const totalVotesCast = Object.keys(proposal.votes).length;
|
|
769
|
-
const electorateExhausted = totalNodes > 0 && totalVotesCast >= totalNodes;
|
|
770
|
-
const divergenceGateOpen = !proposal.minDivergenceRounds
|
|
771
|
-
|| (proposal.divergenceRoundsSeen ?? 0) >= proposal.minDivergenceRounds
|
|
772
|
-
|| electorateExhausted;
|
|
773
|
-
// Try to resolve
|
|
774
|
-
const resolution = divergenceGateOpen ? tryResolveProposal(proposal, totalNodes) : null;
|
|
775
|
-
let resolved = false;
|
|
776
|
-
if (resolution !== null) {
|
|
777
|
-
resolved = true;
|
|
778
|
-
proposal.status = resolution;
|
|
779
|
-
state.consensus.history.push({
|
|
780
|
-
proposalId: proposal.proposalId,
|
|
781
|
-
type: proposal.type,
|
|
782
|
-
result: resolution,
|
|
783
|
-
votes: { for: votesFor, against: votesAgainst },
|
|
784
|
-
decidedAt: new Date().toISOString(),
|
|
785
|
-
strategy: proposalStrategy,
|
|
786
|
-
term: proposal.term,
|
|
787
|
-
byzantineDetected: proposal.byzantineVoters?.length ? proposal.byzantineVoters : undefined,
|
|
788
|
-
});
|
|
789
|
-
if (state.consensus.history.length > 1000) {
|
|
790
|
-
state.consensus.history = state.consensus.history.slice(-1000);
|
|
791
|
-
}
|
|
792
|
-
state.consensus.pending = state.consensus.pending.filter(p => p.proposalId !== proposal.proposalId);
|
|
793
|
-
}
|
|
794
|
-
saveHiveState(state);
|
|
795
|
-
// Persist consensus result for searchable history
|
|
796
|
-
if (resolved) {
|
|
797
|
-
try {
|
|
798
|
-
const bridge = await import('../memory/memory-bridge.js');
|
|
799
|
-
await bridge.bridgeStoreEntry({
|
|
800
|
-
key: `consensus-${proposal.proposalId}`,
|
|
801
|
-
value: JSON.stringify({
|
|
802
|
-
proposalId: proposal.proposalId,
|
|
803
|
-
type: proposal.type,
|
|
804
|
-
strategy: proposalStrategy,
|
|
805
|
-
status: proposal.status,
|
|
806
|
-
votes: proposal.votes,
|
|
807
|
-
resolvedAt: new Date().toISOString(),
|
|
808
|
-
}),
|
|
809
|
-
namespace: 'hive-consensus',
|
|
810
|
-
tags: [proposal.type, proposalStrategy || 'raft', proposal.status],
|
|
811
|
-
});
|
|
812
|
-
}
|
|
813
|
-
catch { /* SQLite memory backend not available — JSON store is primary */ }
|
|
814
|
-
// Persist consensus audit record — uses MONOMIND_SESSION_SECRET when
|
|
815
|
-
// set, otherwise a per-project generated-and-persisted secret so the
|
|
816
|
-
// audit trail is populated by default (see getOrCreateSessionSecret).
|
|
817
|
-
const sessionSecret = getOrCreateSessionSecret();
|
|
818
|
-
try {
|
|
819
|
-
const { AuditWriter } = await import('../consensus/audit-writer.js');
|
|
820
|
-
const auditDir = join(getProjectCwd(), STORAGE_DIR, 'consensus');
|
|
821
|
-
const writer = new AuditWriter(auditDir);
|
|
822
|
-
const now = new Date().toISOString();
|
|
823
|
-
const voteEntries = Object.entries(proposal.votes).map(([agentId, vote]) => ({
|
|
824
|
-
agentId,
|
|
825
|
-
agentSlug: agentId,
|
|
826
|
-
vote,
|
|
827
|
-
votedAt: now,
|
|
828
|
-
}));
|
|
829
|
-
writer.record({
|
|
830
|
-
decisionId: proposal.proposalId,
|
|
831
|
-
swarmId: `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
|
|
832
|
-
protocol: (proposalStrategy === 'bft' ? 'byzantine' : proposalStrategy === 'raft' ? 'raft' : 'quorum'),
|
|
833
|
-
topic: proposal.type,
|
|
834
|
-
decision: resolution,
|
|
835
|
-
votes: voteEntries,
|
|
836
|
-
quorumRequired: required,
|
|
837
|
-
quorumThreshold: required / Math.max(totalNodes, 1),
|
|
838
|
-
round: (proposal.divergenceRoundsSeen ?? 0) + 1,
|
|
839
|
-
startedAt: proposal.proposedAt,
|
|
840
|
-
completedAt: now,
|
|
841
|
-
sessionSecret,
|
|
842
|
-
});
|
|
843
|
-
}
|
|
844
|
-
catch (e) {
|
|
845
|
-
if (process.env.MONOMIND_LOG_LEVEL === 'debug') {
|
|
846
|
-
process.stderr.write(`[hive-consensus] Audit write failed: ${e.message}\n`);
|
|
847
|
-
}
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
return {
|
|
851
|
-
action,
|
|
852
|
-
proposalId: proposal.proposalId,
|
|
853
|
-
voterId,
|
|
854
|
-
vote: voteValue,
|
|
855
|
-
strategy: proposalStrategy,
|
|
856
|
-
votesFor,
|
|
857
|
-
votesAgainst,
|
|
858
|
-
required,
|
|
859
|
-
totalNodes,
|
|
860
|
-
resolved,
|
|
861
|
-
result: resolved ? resolution : undefined,
|
|
862
|
-
status: proposal.status,
|
|
863
|
-
term: proposal.term,
|
|
864
|
-
byzantineVoters: proposal.byzantineVoters?.length ? proposal.byzantineVoters : undefined,
|
|
865
|
-
cpwbft: cpwbftTally,
|
|
866
|
-
// O-Information divergence gate status
|
|
867
|
-
divergenceGateOpen,
|
|
868
|
-
divergenceRoundsSeen: proposal.divergenceRoundsSeen ?? 0,
|
|
869
|
-
minDivergenceRounds: proposal.minDivergenceRounds,
|
|
870
|
-
divergenceHint: !divergenceGateOpen
|
|
871
|
-
? `O-Information gate: ${proposal.divergenceRoundsSeen ?? 0}/${proposal.minDivergenceRounds} divergent rounds seen. Resolution deferred to prevent groupthink.`
|
|
872
|
-
: undefined,
|
|
873
|
-
};
|
|
874
|
-
}
|
|
875
|
-
if (action === 'status') {
|
|
876
|
-
const proposal = state.consensus.pending.find(p => p.proposalId === input.proposalId);
|
|
877
|
-
if (!proposal) {
|
|
878
|
-
// Check history
|
|
879
|
-
const historical = state.consensus.history.find(h => h.proposalId === input.proposalId);
|
|
880
|
-
if (historical) {
|
|
881
|
-
return { action, ...historical, historical: true, resolved: true };
|
|
882
|
-
}
|
|
883
|
-
return { action, error: 'Proposal not found' };
|
|
884
|
-
}
|
|
885
|
-
const votesFor = Object.values(proposal.votes).filter(v => v).length;
|
|
886
|
-
const votesAgainst = Object.values(proposal.votes).filter(v => !v).length;
|
|
887
|
-
const proposalStrategy = proposal.strategy || 'raft';
|
|
888
|
-
const required = calculateRequiredVotes(proposalStrategy, totalNodes, proposal.quorumPreset);
|
|
889
|
-
// Raft: check timeout
|
|
890
|
-
let timedOut = false;
|
|
891
|
-
if (proposalStrategy === 'raft' && proposal.timeoutAt) {
|
|
892
|
-
timedOut = new Date().getTime() > new Date(proposal.timeoutAt).getTime();
|
|
893
|
-
}
|
|
894
|
-
return {
|
|
895
|
-
action,
|
|
896
|
-
proposalId: proposal.proposalId,
|
|
897
|
-
type: proposal.type,
|
|
898
|
-
strategy: proposalStrategy,
|
|
899
|
-
status: proposal.status,
|
|
900
|
-
votesFor,
|
|
901
|
-
votesAgainst,
|
|
902
|
-
totalVotes: Object.keys(proposal.votes).length,
|
|
903
|
-
required,
|
|
904
|
-
totalNodes,
|
|
905
|
-
resolved: false,
|
|
906
|
-
term: proposal.term,
|
|
907
|
-
quorumPreset: proposal.quorumPreset,
|
|
908
|
-
byzantineVoters: proposal.byzantineVoters?.length ? proposal.byzantineVoters : undefined,
|
|
909
|
-
timedOut,
|
|
910
|
-
timeoutAt: proposal.timeoutAt,
|
|
911
|
-
hint: timedOut ? `Raft timeout reached. Re-propose with term ${(proposal.term || 1) + 1}.` : undefined,
|
|
912
|
-
};
|
|
913
|
-
}
|
|
914
|
-
if (action === 'list') {
|
|
915
|
-
return {
|
|
916
|
-
action,
|
|
917
|
-
pending: state.consensus.pending.map(p => ({
|
|
918
|
-
proposalId: p.proposalId,
|
|
919
|
-
type: p.type,
|
|
920
|
-
strategy: p.strategy || 'raft',
|
|
921
|
-
proposedAt: p.proposedAt,
|
|
922
|
-
totalVotes: Object.keys(p.votes).length,
|
|
923
|
-
required: calculateRequiredVotes(p.strategy || 'raft', totalNodes, p.quorumPreset),
|
|
924
|
-
term: p.term,
|
|
925
|
-
status: p.status,
|
|
926
|
-
})),
|
|
927
|
-
recentHistory: state.consensus.history.slice(-5),
|
|
928
|
-
};
|
|
929
|
-
}
|
|
930
|
-
return { action, error: 'Unknown action' };
|
|
931
|
-
},
|
|
932
|
-
},
|
|
933
|
-
{
|
|
934
|
-
name: 'hive-mind_broadcast',
|
|
935
|
-
description: 'Append a message to a shared array on the hive state file (capped at 100 entries). This is a noticeboard, not message delivery — there are no live listeners, and a worker only sees it if something later reads that state. The reported recipient count is just the number of ids in the worker list.',
|
|
936
|
-
category: 'hive-mind',
|
|
937
|
-
inputSchema: {
|
|
938
|
-
type: 'object',
|
|
939
|
-
properties: {
|
|
940
|
-
message: { type: 'string', description: 'Message to broadcast' },
|
|
941
|
-
priority: { type: 'string', enum: ['low', 'normal', 'high', 'critical'], description: 'Message priority' },
|
|
942
|
-
fromId: { type: 'string', description: 'Sender agent ID' },
|
|
943
|
-
},
|
|
944
|
-
required: ['message'],
|
|
945
|
-
},
|
|
946
|
-
handler: async (input) => {
|
|
947
|
-
const state = loadHiveState();
|
|
948
|
-
if (!state.initialized) {
|
|
949
|
-
return { success: false, error: 'Hive-mind not initialized' };
|
|
950
|
-
}
|
|
951
|
-
// Cap inputs: message/fromId are stored directly in the shared-memory JSON
|
|
952
|
-
// state (up to 100 broadcasts kept). An uncapped message lets an attacker
|
|
953
|
-
// inflate the on-disk hive state by up to 100 × message size per call.
|
|
954
|
-
const MAX_BROADCAST_MSG_LEN = 1024 * 1024; // 1 MB
|
|
955
|
-
const MAX_FROM_ID_LEN = 256;
|
|
956
|
-
const MAX_PRIORITY_LEN = 16;
|
|
957
|
-
const rawMessage = input.message;
|
|
958
|
-
const message = typeof rawMessage === 'string' && rawMessage.length > MAX_BROADCAST_MSG_LEN
|
|
959
|
-
? rawMessage.slice(0, MAX_BROADCAST_MSG_LEN)
|
|
960
|
-
: rawMessage;
|
|
961
|
-
const rawFromId = input.fromId || 'system';
|
|
962
|
-
const fromId = typeof rawFromId === 'string' && rawFromId.length > MAX_FROM_ID_LEN
|
|
963
|
-
? rawFromId.slice(0, MAX_FROM_ID_LEN)
|
|
964
|
-
: rawFromId;
|
|
965
|
-
const rawPriority = input.priority || 'normal';
|
|
966
|
-
const priority = typeof rawPriority === 'string' && rawPriority.length > MAX_PRIORITY_LEN
|
|
967
|
-
? rawPriority.slice(0, MAX_PRIORITY_LEN)
|
|
968
|
-
: rawPriority;
|
|
969
|
-
const messageId = `msg-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
970
|
-
// Store in shared memory
|
|
971
|
-
const messages = state.sharedMemory.broadcasts || [];
|
|
972
|
-
messages.push({
|
|
973
|
-
messageId,
|
|
974
|
-
message,
|
|
975
|
-
priority,
|
|
976
|
-
fromId,
|
|
977
|
-
timestamp: new Date().toISOString(),
|
|
978
|
-
});
|
|
979
|
-
// Keep only last 100 broadcasts
|
|
980
|
-
state.sharedMemory.broadcasts = messages.slice(-100);
|
|
981
|
-
saveHiveState(state);
|
|
982
|
-
return {
|
|
983
|
-
success: true,
|
|
984
|
-
messageId,
|
|
985
|
-
recipients: state.workers.length,
|
|
986
|
-
priority,
|
|
987
|
-
broadcastAt: new Date().toISOString(),
|
|
988
|
-
};
|
|
989
|
-
},
|
|
990
|
-
},
|
|
991
|
-
{
|
|
992
|
-
name: 'hive-mind_shutdown',
|
|
993
|
-
description: 'Shutdown the hive-mind and terminate all workers',
|
|
994
|
-
category: 'hive-mind',
|
|
995
|
-
inputSchema: {
|
|
996
|
-
type: 'object',
|
|
997
|
-
properties: {
|
|
998
|
-
graceful: { type: 'boolean', description: 'Graceful shutdown (wait for pending tasks)', default: true },
|
|
999
|
-
force: { type: 'boolean', description: 'Force immediate shutdown', default: false },
|
|
1000
|
-
},
|
|
1001
|
-
},
|
|
1002
|
-
handler: async (input) => {
|
|
1003
|
-
const state = loadHiveState();
|
|
1004
|
-
if (!state.initialized) {
|
|
1005
|
-
return { success: false, error: 'Hive-mind not initialized or already shut down' };
|
|
1006
|
-
}
|
|
1007
|
-
const graceful = input.graceful !== false;
|
|
1008
|
-
const force = input.force === true;
|
|
1009
|
-
const workerCount = state.workers.length;
|
|
1010
|
-
const pendingConsensus = state.consensus.pending.length;
|
|
1011
|
-
// If graceful and there are pending consensus items, warn (unless forced)
|
|
1012
|
-
if (graceful && pendingConsensus > 0 && !force) {
|
|
1013
|
-
return {
|
|
1014
|
-
success: false,
|
|
1015
|
-
error: `Cannot gracefully shutdown with ${pendingConsensus} pending consensus items. Use force: true to override.`,
|
|
1016
|
-
pendingConsensus,
|
|
1017
|
-
workerCount,
|
|
1018
|
-
};
|
|
1019
|
-
}
|
|
1020
|
-
// Clear workers from agent store. Must use the null-aware loader here
|
|
1021
|
-
// (this handler mutates and saves) — loadAgentStore() on a corrupt/
|
|
1022
|
-
// oversized store.json now returns the empty default, and deleting
|
|
1023
|
-
// from + saving that back would wipe every real agent, not just the
|
|
1024
|
-
// hive workers being shut down.
|
|
1025
|
-
const agentStore = loadAgentStoreOrNull();
|
|
1026
|
-
if (!agentStore) {
|
|
1027
|
-
return { success: false, error: 'Agent store is unreadable/corrupt — refusing to shut down to avoid overwriting real agent data.', pendingConsensus, workerCount };
|
|
1028
|
-
}
|
|
1029
|
-
for (const workerId of state.workers) {
|
|
1030
|
-
if (agentStore.agents[workerId]) {
|
|
1031
|
-
delete agentStore.agents[workerId];
|
|
1032
|
-
}
|
|
1033
|
-
}
|
|
1034
|
-
saveAgentStore(agentStore);
|
|
1035
|
-
// Reset hive state
|
|
1036
|
-
const shutdownTime = new Date().toISOString();
|
|
1037
|
-
const previousQueen = state.queen?.agentId;
|
|
1038
|
-
state.initialized = false;
|
|
1039
|
-
state.queen = undefined;
|
|
1040
|
-
state.workers = [];
|
|
1041
|
-
state.consensus.pending = [];
|
|
1042
|
-
// Keep history for reference
|
|
1043
|
-
state.sharedMemory = {};
|
|
1044
|
-
saveHiveState(state);
|
|
1045
|
-
return {
|
|
1046
|
-
success: true,
|
|
1047
|
-
shutdownAt: shutdownTime,
|
|
1048
|
-
graceful,
|
|
1049
|
-
workersTerminated: workerCount,
|
|
1050
|
-
previousQueen,
|
|
1051
|
-
consensusCleared: pendingConsensus,
|
|
1052
|
-
message: `Hive-mind shutdown complete. ${workerCount} workers terminated.`,
|
|
1053
|
-
};
|
|
1054
|
-
},
|
|
1055
|
-
},
|
|
1056
|
-
{
|
|
1057
|
-
name: 'hive-mind_memory',
|
|
1058
|
-
description: 'Read or write a shared JSON blob on the hive state file. Plain key/value bookkeeping in a single local file — not a distributed or replicated store.',
|
|
1059
|
-
category: 'hive-mind',
|
|
1060
|
-
inputSchema: {
|
|
1061
|
-
type: 'object',
|
|
1062
|
-
properties: {
|
|
1063
|
-
action: { type: 'string', enum: ['get', 'set', 'delete', 'list'], description: 'Memory action' },
|
|
1064
|
-
key: { type: 'string', description: 'Memory key' },
|
|
1065
|
-
value: { description: 'Value to store (for set)' },
|
|
1066
|
-
},
|
|
1067
|
-
required: ['action'],
|
|
1068
|
-
},
|
|
1069
|
-
handler: async (input) => {
|
|
1070
|
-
const state = loadHiveState();
|
|
1071
|
-
const action = input.action;
|
|
1072
|
-
const key = input.key;
|
|
1073
|
-
const MAX_HIVE_MEMORY_KEY_LEN = 256;
|
|
1074
|
-
const MAX_HIVE_MEMORY_VALUE_BYTES = 1024 * 1024; // 1 MB
|
|
1075
|
-
const MAX_HIVE_MEMORY_KEYS = 1000;
|
|
1076
|
-
if (action === 'get') {
|
|
1077
|
-
if (!key)
|
|
1078
|
-
return { action, error: 'Key required' };
|
|
1079
|
-
if (typeof key !== 'string' || key.length > MAX_HIVE_MEMORY_KEY_LEN || HIVE_RESERVED_KEYS.has(key)) {
|
|
1080
|
-
return { action, error: 'Invalid key' };
|
|
1081
|
-
}
|
|
1082
|
-
return {
|
|
1083
|
-
action,
|
|
1084
|
-
key,
|
|
1085
|
-
value: Object.hasOwn(state.sharedMemory, key) ? state.sharedMemory[key] : undefined,
|
|
1086
|
-
exists: Object.hasOwn(state.sharedMemory, key),
|
|
1087
|
-
};
|
|
1088
|
-
}
|
|
1089
|
-
if (action === 'set') {
|
|
1090
|
-
if (!key)
|
|
1091
|
-
return { action, error: 'Key required' };
|
|
1092
|
-
if (typeof key !== 'string' || key.length > MAX_HIVE_MEMORY_KEY_LEN || HIVE_RESERVED_KEYS.has(key)) {
|
|
1093
|
-
return { action, error: 'Invalid key' };
|
|
1094
|
-
}
|
|
1095
|
-
// Cap value if it's a string; otherwise serialize and check byte size
|
|
1096
|
-
const rawValue = input.value;
|
|
1097
|
-
const cappedValue = typeof rawValue === 'string' && rawValue.length > MAX_HIVE_MEMORY_VALUE_BYTES
|
|
1098
|
-
? rawValue.slice(0, MAX_HIVE_MEMORY_VALUE_BYTES)
|
|
1099
|
-
: rawValue;
|
|
1100
|
-
// Enforce max number of distinct keys to prevent unbounded growth
|
|
1101
|
-
const keyCount = Object.keys(state.sharedMemory).length;
|
|
1102
|
-
if (!Object.hasOwn(state.sharedMemory, key) && keyCount >= MAX_HIVE_MEMORY_KEYS) {
|
|
1103
|
-
return { action, error: `Shared memory full (max ${MAX_HIVE_MEMORY_KEYS} keys)` };
|
|
1104
|
-
}
|
|
1105
|
-
state.sharedMemory[key] = cappedValue;
|
|
1106
|
-
saveHiveState(state);
|
|
1107
|
-
// Also store for searchable hive memory
|
|
1108
|
-
try {
|
|
1109
|
-
const bridge = await import('../memory/memory-bridge.js');
|
|
1110
|
-
await bridge.bridgeStoreEntry({
|
|
1111
|
-
key: `hive-memory-${key}`,
|
|
1112
|
-
value: JSON.stringify(input.value),
|
|
1113
|
-
namespace: 'hive-memory',
|
|
1114
|
-
});
|
|
1115
|
-
}
|
|
1116
|
-
catch { /* SQLite memory backend not available */ }
|
|
1117
|
-
return {
|
|
1118
|
-
action,
|
|
1119
|
-
key,
|
|
1120
|
-
success: true,
|
|
1121
|
-
updatedAt: new Date().toISOString(),
|
|
1122
|
-
};
|
|
1123
|
-
}
|
|
1124
|
-
if (action === 'delete') {
|
|
1125
|
-
if (!key)
|
|
1126
|
-
return { action, error: 'Key required' };
|
|
1127
|
-
if (typeof key !== 'string' || key.length > MAX_HIVE_MEMORY_KEY_LEN || HIVE_RESERVED_KEYS.has(key)) {
|
|
1128
|
-
return { action, error: 'Invalid key' };
|
|
1129
|
-
}
|
|
1130
|
-
const existed = Object.hasOwn(state.sharedMemory, key);
|
|
1131
|
-
delete state.sharedMemory[key];
|
|
1132
|
-
saveHiveState(state);
|
|
1133
|
-
return {
|
|
1134
|
-
action,
|
|
1135
|
-
key,
|
|
1136
|
-
deleted: existed,
|
|
1137
|
-
};
|
|
1138
|
-
}
|
|
1139
|
-
if (action === 'list') {
|
|
1140
|
-
return {
|
|
1141
|
-
action,
|
|
1142
|
-
keys: Object.keys(state.sharedMemory),
|
|
1143
|
-
count: Object.keys(state.sharedMemory).length,
|
|
1144
|
-
};
|
|
1145
|
-
}
|
|
1146
|
-
return { action, error: 'Unknown action' };
|
|
1147
|
-
},
|
|
1148
|
-
},
|
|
1149
|
-
{
|
|
1150
|
-
name: 'hive-mind_audit_list',
|
|
1151
|
-
description: 'List tamper-evident consensus audit records (HMAC-signed JSONL trail)',
|
|
1152
|
-
category: 'hive-mind',
|
|
1153
|
-
inputSchema: {
|
|
1154
|
-
type: 'object',
|
|
1155
|
-
properties: {
|
|
1156
|
-
swarmId: { type: 'string', description: 'Filter by swarm ID (optional)' },
|
|
1157
|
-
limit: { type: 'number', description: 'Max records to return (default: 50, max: 500)' },
|
|
1158
|
-
},
|
|
1159
|
-
},
|
|
1160
|
-
handler: async (input) => {
|
|
1161
|
-
try {
|
|
1162
|
-
const { AuditWriter } = await import('../consensus/audit-writer.js');
|
|
1163
|
-
const auditDir = join(getProjectCwd(), STORAGE_DIR, 'consensus');
|
|
1164
|
-
const writer = new AuditWriter(auditDir);
|
|
1165
|
-
const limit = Math.min(Math.max(1, input.limit || 50), 500);
|
|
1166
|
-
const swarmId = input.swarmId;
|
|
1167
|
-
const records = writer.listDecisions(swarmId, limit);
|
|
1168
|
-
return {
|
|
1169
|
-
success: true,
|
|
1170
|
-
count: records.length,
|
|
1171
|
-
records: records.map(r => ({
|
|
1172
|
-
decisionId: r.decisionId,
|
|
1173
|
-
swarmId: r.swarmId,
|
|
1174
|
-
protocol: r.protocol,
|
|
1175
|
-
topic: r.topic,
|
|
1176
|
-
decision: r.decision,
|
|
1177
|
-
voteCount: r.votes.length,
|
|
1178
|
-
quorumAchieved: r.quorumAchieved,
|
|
1179
|
-
round: r.round,
|
|
1180
|
-
durationMs: r.durationMs,
|
|
1181
|
-
completedAt: r.completedAt,
|
|
1182
|
-
signed: !!r.recordSignature,
|
|
1183
|
-
})),
|
|
1184
|
-
};
|
|
1185
|
-
}
|
|
1186
|
-
catch (e) {
|
|
1187
|
-
return { success: false, error: `Audit trail unavailable: ${e.message}` };
|
|
1188
|
-
}
|
|
1189
|
-
},
|
|
1190
|
-
},
|
|
1191
|
-
{
|
|
1192
|
-
name: 'hive-mind_audit_verify',
|
|
1193
|
-
description: 'Verify tamper-evidence of a consensus decision (checks HMAC signatures on all votes and the record itself)',
|
|
1194
|
-
category: 'hive-mind',
|
|
1195
|
-
inputSchema: {
|
|
1196
|
-
type: 'object',
|
|
1197
|
-
properties: {
|
|
1198
|
-
decisionId: { type: 'string', description: 'Decision/proposal ID to verify' },
|
|
1199
|
-
},
|
|
1200
|
-
required: ['decisionId'],
|
|
1201
|
-
},
|
|
1202
|
-
handler: async (input) => {
|
|
1203
|
-
// Uses MONOMIND_SESSION_SECRET when set, otherwise the same
|
|
1204
|
-
// per-project generated-and-persisted secret used to sign records
|
|
1205
|
-
// in hive-mind_consensus (see getOrCreateSessionSecret).
|
|
1206
|
-
const sessionSecret = getOrCreateSessionSecret();
|
|
1207
|
-
const decisionId = input.decisionId;
|
|
1208
|
-
if (typeof decisionId !== 'string' || decisionId.length === 0 || decisionId.length > 256) {
|
|
1209
|
-
return { success: false, error: 'Invalid decisionId' };
|
|
1210
|
-
}
|
|
1211
|
-
try {
|
|
1212
|
-
const { AuditWriter } = await import('../consensus/audit-writer.js');
|
|
1213
|
-
const auditDir = join(getProjectCwd(), STORAGE_DIR, 'consensus');
|
|
1214
|
-
const writer = new AuditWriter(auditDir);
|
|
1215
|
-
const result = writer.verifyDecision(decisionId, sessionSecret);
|
|
1216
|
-
return {
|
|
1217
|
-
success: true,
|
|
1218
|
-
decisionId,
|
|
1219
|
-
valid: result.valid,
|
|
1220
|
-
invalidVotes: result.invalidVotes,
|
|
1221
|
-
message: result.valid
|
|
1222
|
-
? 'All vote signatures and record signature verified — no tampering detected.'
|
|
1223
|
-
: `Verification failed: ${result.invalidVotes.length} invalid vote(s) or record signature mismatch.`,
|
|
1224
|
-
};
|
|
1225
|
-
}
|
|
1226
|
-
catch (e) {
|
|
1227
|
-
return { success: false, error: `Audit verification failed: ${e.message}` };
|
|
1228
|
-
}
|
|
1229
|
-
},
|
|
1230
|
-
},
|
|
1231
|
-
];
|
|
1232
|
-
const SPECULATIVE = process.env['MONOMIND_MCP_SPECULATIVE'] === '1';
|
|
1233
|
-
const CORE_HIVE_MIND_NAMES = new Set(['hive-mind_status', 'hive-mind_join']);
|
|
1234
|
-
export const hiveMindTools = SPECULATIVE
|
|
1235
|
-
? allHiveMindTools
|
|
1236
|
-
: allHiveMindTools.filter(t => CORE_HIVE_MIND_NAMES.has(t.name));
|
|
1237
|
-
//# sourceMappingURL=hive-mind-tools.js.map
|