monomind 1.19.0 โ†’ 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (883) hide show
  1. package/README.md +13 -17
  2. package/package.json +16 -35
  3. package/packages/@monomind/cli/.claude/agents/github/issue-tracker.md +0 -2
  4. package/packages/@monomind/cli/.claude/agents/github/pr-manager.md +0 -2
  5. package/packages/@monomind/cli/.claude/agents/github/repo-architect.md +3 -11
  6. package/packages/@monomind/cli/.claude/agents/goal/goal-planner.md +0 -1
  7. package/packages/@monomind/cli/.claude/commands/github/issue-tracker.md +0 -2
  8. package/packages/@monomind/cli/.claude/commands/github/pr-manager.md +0 -2
  9. package/packages/@monomind/cli/.claude/commands/github/repo-architect.md +3 -10
  10. package/packages/@monomind/cli/.claude/commands/mastermind/help.md +3 -3
  11. package/packages/@monomind/cli/.claude/commands/workflows/README.md +0 -1
  12. package/packages/@monomind/cli/.claude/commands/workflows/workflow-create.md +0 -1
  13. package/packages/@monomind/cli/.claude/commands/workflows/workflow-execute.md +1 -3
  14. package/packages/@monomind/cli/.claude/commands/workflows/workflow-export.md +0 -2
  15. package/packages/@monomind/cli/.claude/helpers/handlers/agent-start-handler.cjs +18 -1
  16. package/packages/@monomind/cli/.claude/helpers/handlers/edit-handler.cjs +15 -0
  17. package/packages/@monomind/cli/.claude/helpers/handlers/gates-handler.cjs +2 -8
  18. package/packages/@monomind/cli/.claude/helpers/handlers/route-handler.cjs +149 -7
  19. package/packages/@monomind/cli/.claude/helpers/handlers/session-handler.cjs +47 -25
  20. package/packages/@monomind/cli/.claude/helpers/handlers/session-restore-handler.cjs +80 -43
  21. package/packages/@monomind/cli/.claude/helpers/handlers/task-handler.cjs +8 -4
  22. package/packages/@monomind/cli/.claude/helpers/hook-handler.cjs +69 -16
  23. package/packages/@monomind/cli/.claude/helpers/intelligence.cjs +100 -9
  24. package/packages/@monomind/cli/.claude/helpers/router.cjs +78 -5
  25. package/packages/@monomind/cli/.claude/helpers/skill-registry.json +0 -189
  26. package/packages/@monomind/cli/.claude/helpers/token-tracker.cjs +10 -0
  27. package/packages/@monomind/cli/.claude/skills/github-toolkit/SKILL.md +60 -0
  28. package/packages/@monomind/cli/.claude/skills/hive-mind-advanced/SKILL.md +0 -15
  29. package/packages/@monomind/cli/.claude/skills/hooks-automation/SKILL.md +0 -1
  30. package/packages/@monomind/cli/.claude/skills/mastermind-skills/_protocol.md +1 -1
  31. package/packages/@monomind/cli/.claude/skills/mastermind-skills/build.md +1 -2
  32. package/packages/@monomind/cli/.claude/skills/memory-toolkit/SKILL.md +75 -0
  33. package/packages/@monomind/cli/.claude/skills/specialagent/SKILL.md +2 -4
  34. package/packages/@monomind/cli/.claude/skills/swarm-advanced/SKILL.md +0 -1
  35. package/packages/@monomind/cli/README.md +13 -17
  36. package/packages/@monomind/cli/dist/src/autopilot-state.js +4 -5
  37. package/packages/@monomind/cli/dist/src/browser/dashboard/server.js +129 -2
  38. package/packages/@monomind/cli/dist/src/browser/dashboard/ui.html +214 -1764
  39. package/packages/@monomind/cli/dist/src/capabilities/index.d.ts +0 -2
  40. package/packages/@monomind/cli/dist/src/capabilities/index.js +0 -1
  41. package/packages/@monomind/cli/dist/src/commands/agent-lifecycle.js +2 -6
  42. package/packages/@monomind/cli/dist/src/commands/analyze.d.ts +0 -4
  43. package/packages/@monomind/cli/dist/src/commands/analyze.js +1 -29
  44. package/packages/@monomind/cli/dist/src/commands/browse-workflow.js +2 -2
  45. package/packages/@monomind/cli/dist/src/commands/completions.js +3 -22
  46. package/packages/@monomind/cli/dist/src/commands/config.js +0 -6
  47. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.d.ts +12 -2
  48. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +130 -22
  49. package/packages/@monomind/cli/dist/src/commands/doctor.js +6 -5
  50. package/packages/@monomind/cli/dist/src/commands/guidance.d.ts +5 -1
  51. package/packages/@monomind/cli/dist/src/commands/guidance.js +11 -556
  52. package/packages/@monomind/cli/dist/src/commands/hive-mind-comms.js +11 -4
  53. package/packages/@monomind/cli/dist/src/commands/hive-mind.d.ts +4 -4
  54. package/packages/@monomind/cli/dist/src/commands/hive-mind.js +9 -6
  55. package/packages/@monomind/cli/dist/src/commands/hooks-formatting.d.ts +1 -5
  56. package/packages/@monomind/cli/dist/src/commands/hooks-formatting.js +1 -18
  57. package/packages/@monomind/cli/dist/src/commands/hooks-workers.d.ts +1 -1
  58. package/packages/@monomind/cli/dist/src/commands/hooks-workers.js +82 -330
  59. package/packages/@monomind/cli/dist/src/commands/index.d.ts +0 -5
  60. package/packages/@monomind/cli/dist/src/commands/index.js +0 -45
  61. package/packages/@monomind/cli/dist/src/commands/init-wizard.js +1 -1
  62. package/packages/@monomind/cli/dist/src/commands/init.js +4 -24
  63. package/packages/@monomind/cli/dist/src/commands/neural-core.js +11 -11
  64. package/packages/@monomind/cli/dist/src/commands/neural-optimize.js +9 -11
  65. package/packages/@monomind/cli/dist/src/commands/neural-registry.js +10 -10
  66. package/packages/@monomind/cli/dist/src/commands/providers.js +90 -1
  67. package/packages/@monomind/cli/dist/src/commands/search-universal.d.ts +7 -1
  68. package/packages/@monomind/cli/dist/src/commands/search-universal.js +59 -5
  69. package/packages/@monomind/cli/dist/src/commands/security-cve.js +3 -5
  70. package/packages/@monomind/cli/dist/src/commands/session.js +143 -3
  71. package/packages/@monomind/cli/dist/src/commands/start.js +0 -18
  72. package/packages/@monomind/cli/dist/src/commands/swarm.js +112 -65
  73. package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +43 -1
  74. package/packages/@monomind/cli/dist/src/consensus/tally.d.ts +19 -0
  75. package/packages/@monomind/cli/dist/src/consensus/tally.js +34 -0
  76. package/packages/@monomind/cli/dist/src/index.d.ts +3 -2
  77. package/packages/@monomind/cli/dist/src/index.js +9 -12
  78. package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +10 -14
  79. package/packages/@monomind/cli/dist/src/init/executor.js +39 -86
  80. package/packages/@monomind/cli/dist/src/init/settings-generator.js +0 -12
  81. package/packages/@monomind/cli/dist/src/init/statusline-generator.js +62 -0
  82. package/packages/@monomind/cli/dist/src/init/types.d.ts +2 -6
  83. package/packages/@monomind/cli/dist/src/init/types.js +0 -3
  84. package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.js +18 -8
  85. package/packages/@monomind/cli/dist/src/mcp-client.js +0 -2
  86. package/packages/@monomind/cli/dist/src/mcp-server.js +12 -14
  87. package/packages/@monomind/cli/dist/src/mcp-tools/coherence/coherence-check.js +1 -19
  88. package/packages/@monomind/cli/dist/src/mcp-tools/coherence/types.d.ts +21 -20
  89. package/packages/@monomind/cli/dist/src/mcp-tools/coherence/types.js +3 -18
  90. package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +1 -7
  91. package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.js +2 -2
  92. package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +7 -17
  93. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -1
  94. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +174 -38
  95. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-advanced.d.ts +18 -0
  96. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-advanced.js +25 -0
  97. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.d.ts +4 -8
  98. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.js +33 -482
  99. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.d.ts +1 -0
  100. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.js +51 -43
  101. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-synthesis.d.ts +31 -0
  102. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-synthesis.js +196 -0
  103. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +10 -8
  104. package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +0 -1
  105. package/packages/@monomind/cli/dist/src/mcp-tools/index.js +0 -1
  106. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +20 -29
  107. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.d.ts +6 -0
  108. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +78 -220
  109. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.d.ts +9 -4
  110. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +242 -506
  111. package/packages/@monomind/cli/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +12 -12
  112. package/packages/@monomind/cli/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +4 -4
  113. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +103 -0
  114. package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +2 -1
  115. package/packages/@monomind/cli/dist/src/memory/intelligence.js +56 -43
  116. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +14 -9
  117. package/packages/@monomind/cli/dist/src/memory/memory-read.js +1 -19
  118. package/packages/@monomind/cli/dist/src/orgrt/types.d.ts +847 -0
  119. package/packages/@monomind/cli/dist/src/orgrt/types.js +51 -0
  120. package/packages/@monomind/cli/dist/src/parser.js +31 -5
  121. package/packages/@monomind/cli/dist/src/suggest.js +1 -7
  122. package/packages/@monomind/cli/dist/src/transfer/store/discovery.d.ts +3 -2
  123. package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +22 -70
  124. package/packages/@monomind/cli/dist/src/ui/collector.mjs +69 -44
  125. package/packages/@monomind/cli/dist/src/ui/dashboard.html +112 -25
  126. package/packages/@monomind/cli/dist/src/ui/orgs.html +54 -0
  127. package/packages/@monomind/cli/dist/src/ui/server.mjs +87 -12
  128. package/packages/@monomind/cli/dist/src/update/checker.js +0 -1
  129. package/packages/@monomind/cli/dist/src/utils/cosine-similarity.d.ts +22 -0
  130. package/packages/@monomind/cli/dist/src/utils/cosine-similarity.js +38 -0
  131. package/packages/@monomind/cli/dist/src/utils/input-guards.d.ts +51 -0
  132. package/packages/@monomind/cli/dist/src/utils/input-guards.js +223 -0
  133. package/packages/@monomind/cli/dist/src/utils/json-file.d.ts +33 -0
  134. package/packages/@monomind/cli/dist/src/utils/json-file.js +57 -0
  135. package/packages/@monomind/cli/package.json +11 -7
  136. package/packages/@monomind/cli/scripts/sync-claude-assets.sh +16 -20
  137. package/scripts/generate-agent-avatars.mjs +0 -8
  138. package/.claude/agents/architecture/system-design/arch-system-design.md +0 -54
  139. package/.claude/agents/consensus/crdt-synchronizer.md +0 -977
  140. package/.claude/agents/consensus/quorum-manager.md +0 -803
  141. package/.claude/agents/consensus/security-manager.md +0 -602
  142. package/.claude/agents/core/coder.md +0 -262
  143. package/.claude/agents/core/coordinator.md +0 -71
  144. package/.claude/agents/core/planner.md +0 -170
  145. package/.claude/agents/core/researcher.md +0 -197
  146. package/.claude/agents/core/reviewer.md +0 -327
  147. package/.claude/agents/core/tester.md +0 -318
  148. package/.claude/agents/design/design-monodesign.md +0 -121
  149. package/.claude/agents/engineering/engineering-ai-data-remediation-engineer.md +0 -212
  150. package/.claude/agents/engineering/engineering-ai-engineer.md +0 -165
  151. package/.claude/agents/engineering/engineering-autonomous-optimization-architect.md +0 -108
  152. package/.claude/agents/engineering/engineering-backend-architect.md +0 -254
  153. package/.claude/agents/engineering/engineering-code-reviewer.md +0 -95
  154. package/.claude/agents/engineering/engineering-data-engineer.md +0 -307
  155. package/.claude/agents/engineering/engineering-database-optimizer.md +0 -200
  156. package/.claude/agents/engineering/engineering-devops-automator.md +0 -430
  157. package/.claude/agents/engineering/engineering-embedded-firmware-engineer.md +0 -174
  158. package/.claude/agents/engineering/engineering-feishu-integration-developer.md +0 -607
  159. package/.claude/agents/engineering/engineering-frontend-developer.md +0 -249
  160. package/.claude/agents/engineering/engineering-git-workflow-master.md +0 -108
  161. package/.claude/agents/engineering/engineering-incident-response-commander.md +0 -482
  162. package/.claude/agents/engineering/engineering-mobile-app-builder.md +0 -499
  163. package/.claude/agents/engineering/engineering-rapid-prototyper.md +0 -463
  164. package/.claude/agents/engineering/engineering-security-engineer.md +0 -303
  165. package/.claude/agents/engineering/engineering-senior-developer.md +0 -195
  166. package/.claude/agents/engineering/engineering-software-architect.md +0 -100
  167. package/.claude/agents/engineering/engineering-solidity-smart-contract-engineer.md +0 -528
  168. package/.claude/agents/engineering/engineering-sre.md +0 -114
  169. package/.claude/agents/engineering/engineering-technical-writer.md +0 -412
  170. package/.claude/agents/engineering/engineering-threat-detection-engineer.md +0 -540
  171. package/.claude/agents/engineering/engineering-wechat-mini-program-developer.md +0 -351
  172. package/.claude/agents/generated/case-analyst.md +0 -50
  173. package/.claude/agents/generated/channel-intelligence-director.md +0 -87
  174. package/.claude/agents/generated/chief-growth-officer.md +0 -88
  175. package/.claude/agents/generated/churn-analyst.md +0 -53
  176. package/.claude/agents/generated/code-reviewer.md +0 -55
  177. package/.claude/agents/generated/code-validator.md +0 -57
  178. package/.claude/agents/generated/complexity-scanner.md +0 -56
  179. package/.claude/agents/generated/content-seo-strategist.md +0 -90
  180. package/.claude/agents/generated/copy-editor.md +0 -45
  181. package/.claude/agents/generated/court-reporter.md +0 -50
  182. package/.claude/agents/generated/defender.md +0 -51
  183. package/.claude/agents/generated/devbot-orchestrator.md +0 -58
  184. package/.claude/agents/generated/devbot-planner.md +0 -63
  185. package/.claude/agents/generated/developer-community-strategist.md +0 -91
  186. package/.claude/agents/generated/editor-in-chief.md +0 -45
  187. package/.claude/agents/generated/fact-checker.md +0 -45
  188. package/.claude/agents/generated/impact-assessor.md +0 -54
  189. package/.claude/agents/generated/judge.md +0 -51
  190. package/.claude/agents/generated/outreach-partnership-strategist.md +0 -90
  191. package/.claude/agents/generated/prosecutor.md +0 -51
  192. package/.claude/agents/generated/reporter.md +0 -45
  193. package/.claude/agents/generated/social-media-strategist.md +0 -91
  194. package/.claude/agents/generated/video-visual-strategist.md +0 -90
  195. package/.claude/agents/github/code-review-swarm.md +0 -557
  196. package/.claude/agents/github/github-modes.md +0 -154
  197. package/.claude/agents/github/issue-tracker.md +0 -299
  198. package/.claude/agents/github/multi-repo-swarm.md +0 -525
  199. package/.claude/agents/github/pr-manager.md +0 -163
  200. package/.claude/agents/github/project-board-sync.md +0 -478
  201. package/.claude/agents/github/release-manager.md +0 -296
  202. package/.claude/agents/github/repo-architect.md +0 -359
  203. package/.claude/agents/github/swarm-issue.md +0 -548
  204. package/.claude/agents/github/swarm-pr.md +0 -427
  205. package/.claude/agents/github/sync-coordinator.md +0 -355
  206. package/.claude/agents/github/workflow-automation.md +0 -640
  207. package/.claude/agents/goal/goal-planner.md +0 -168
  208. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +0 -129
  209. package/.claude/agents/hive-mind/queen-coordinator.md +0 -202
  210. package/.claude/agents/hive-mind/scout-explorer.md +0 -241
  211. package/.claude/agents/hive-mind/swarm-memory-manager.md +0 -192
  212. package/.claude/agents/hive-mind/worker-specialist.md +0 -216
  213. package/.claude/agents/marketing/marketing-competitive-content.md +0 -155
  214. package/.claude/agents/marketing/marketing-cro-specialist.md +0 -147
  215. package/.claude/agents/marketing/marketing-email-specialist.md +0 -90
  216. package/.claude/agents/marketing/marketing-launch-strategist.md +0 -129
  217. package/.claude/agents/marketing/marketing-pricing-strategist.md +0 -127
  218. package/.claude/agents/optimization/benchmark-suite.md +0 -665
  219. package/.claude/agents/optimization/load-balancer.md +0 -431
  220. package/.claude/agents/optimization/performance-monitor.md +0 -672
  221. package/.claude/agents/optimization/resource-allocator.md +0 -674
  222. package/.claude/agents/optimization/topology-optimizer.md +0 -808
  223. package/.claude/agents/reengineer-squad/boss.md +0 -113
  224. package/.claude/agents/reengineer-squad/critic-architect.md +0 -132
  225. package/.claude/agents/reengineer-squad/git-manager.md +0 -145
  226. package/.claude/agents/reengineer-squad/idea-generator.md +0 -95
  227. package/.claude/agents/reengineer-squad/implementer.md +0 -112
  228. package/.claude/agents/reengineer-squad/integration-planner.md +0 -112
  229. package/.claude/agents/reengineer-squad/source-analyst.md +0 -103
  230. package/.claude/agents/reengineer-squad/target-analyst.md +0 -118
  231. package/.claude/agents/reengineer-squad/tester.md +0 -105
  232. package/.claude/agents/schemas/architecture-output.json +0 -43
  233. package/.claude/agents/schemas/code-review-output.json +0 -28
  234. package/.claude/agents/schemas/generic-task-input.json +0 -12
  235. package/.claude/agents/schemas/implementation-output.json +0 -18
  236. package/.claude/agents/schemas/research-output.json +0 -31
  237. package/.claude/agents/schemas/security-audit-output.json +0 -29
  238. package/.claude/agents/schemas/test-report-output.json +0 -29
  239. package/.claude/agents/sparc/architecture.md +0 -453
  240. package/.claude/agents/sparc/pseudocode.md +0 -299
  241. package/.claude/agents/sparc/refinement.md +0 -504
  242. package/.claude/agents/sparc/specification.md +0 -258
  243. package/.claude/agents/specialists/integration-architect.md +0 -94
  244. package/.claude/agents/specialized/agentic-identity-trust.md +0 -388
  245. package/.claude/agents/specialized/agents-orchestrator.md +0 -368
  246. package/.claude/agents/specialized/automation-governance-architect.md +0 -217
  247. package/.claude/agents/specialized/blockchain-security-auditor.md +0 -497
  248. package/.claude/agents/specialized/compliance-auditor.md +0 -159
  249. package/.claude/agents/specialized/identity-graph-operator.md +0 -261
  250. package/.claude/agents/specialized/lsp-index-engineer.md +0 -315
  251. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +0 -89
  252. package/.claude/agents/specialized/specialized-cultural-intelligence-strategist.md +0 -89
  253. package/.claude/agents/specialized/specialized-developer-advocate.md +0 -318
  254. package/.claude/agents/specialized/specialized-document-generator.md +0 -56
  255. package/.claude/agents/specialized/specialized-mcp-builder.md +0 -64
  256. package/.claude/agents/specialized/specialized-model-qa.md +0 -489
  257. package/.claude/agents/specialized/specialized-workflow-architect.md +0 -595
  258. package/.claude/agents/specialized/zk-steward.md +0 -212
  259. package/.claude/agents/swarm/mesh-coordinator.md +0 -363
  260. package/.claude/agents/templates/automation-smart-agent.md +0 -185
  261. package/.claude/agents/templates/coordinator-swarm-init.md +0 -83
  262. package/.claude/agents/templates/implementer-sparc-coder.md +0 -231
  263. package/.claude/agents/testing/production-validator.md +0 -375
  264. package/.claude/agents/testing/tdd-london-swarm.md +0 -241
  265. package/.claude/agents/testing/testing-accessibility-auditor.md +0 -322
  266. package/.claude/agents/testing/testing-api-tester.md +0 -307
  267. package/.claude/agents/testing/testing-evidence-collector.md +0 -213
  268. package/.claude/agents/testing/testing-performance-benchmarker.md +0 -269
  269. package/.claude/agents/testing/testing-test-results-analyzer.md +0 -306
  270. package/.claude/agents/testing/testing-tool-evaluator.md +0 -395
  271. package/.claude/agents/testing/testing-workflow-optimizer.md +0 -451
  272. package/.claude/commands/agents/README.md +0 -14
  273. package/.claude/commands/agents/agent-capabilities.md +0 -25
  274. package/.claude/commands/agents/agent-coordination.md +0 -32
  275. package/.claude/commands/agents/agent-spawning.md +0 -32
  276. package/.claude/commands/agents/agent-types.md +0 -30
  277. package/.claude/commands/analysis/README.md +0 -18
  278. package/.claude/commands/analysis/bottleneck-detect.md +0 -69
  279. package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
  280. package/.claude/commands/analysis/performance-report.md +0 -52
  281. package/.claude/commands/analysis/token-usage.md +0 -47
  282. package/.claude/commands/automation/README.md +0 -19
  283. package/.claude/commands/automation/auto-agent.md +0 -86
  284. package/.claude/commands/automation/self-healing.md +0 -108
  285. package/.claude/commands/automation/session-memory.md +0 -89
  286. package/.claude/commands/automation/smart-agents.md +0 -81
  287. package/.claude/commands/automation/smart-spawn.md +0 -66
  288. package/.claude/commands/automation/workflow-select.md +0 -60
  289. package/.claude/commands/coordination/README.md +0 -13
  290. package/.claude/commands/coordination/agent-spawn.md +0 -69
  291. package/.claude/commands/coordination/swarm-init.md +0 -82
  292. package/.claude/commands/coordination/task-orchestrate.md +0 -79
  293. package/.claude/commands/github/README.md +0 -24
  294. package/.claude/commands/github/github-modes.md +0 -151
  295. package/.claude/commands/github/issue-tracker.md +0 -293
  296. package/.claude/commands/github/pr-manager.md +0 -173
  297. package/.claude/commands/github/release-manager.md +0 -343
  298. package/.claude/commands/github/repo-architect.md +0 -379
  299. package/.claude/commands/github/sync-coordinator.md +0 -297
  300. package/.claude/commands/hive-mind/README.md +0 -42
  301. package/.claude/commands/hive-mind/hive-mind-consensus.md +0 -72
  302. package/.claude/commands/hive-mind/hive-mind-init.md +0 -68
  303. package/.claude/commands/hive-mind/hive-mind-memory.md +0 -73
  304. package/.claude/commands/hive-mind/hive-mind-spawn.md +0 -82
  305. package/.claude/commands/hive-mind/hive-mind-status.md +0 -56
  306. package/.claude/commands/hive-mind/hive-mind-stop.md +0 -55
  307. package/.claude/commands/hive-mind/hive-mind.md +0 -87
  308. package/.claude/commands/hooks/README.md +0 -66
  309. package/.claude/commands/hooks/overview.md +0 -112
  310. package/.claude/commands/hooks/post-edit.md +0 -78
  311. package/.claude/commands/hooks/post-task.md +0 -62
  312. package/.claude/commands/hooks/pre-edit.md +0 -81
  313. package/.claude/commands/hooks/pre-task.md +0 -73
  314. package/.claude/commands/hooks/session-end.md +0 -82
  315. package/.claude/commands/hooks/setup.md +0 -132
  316. package/.claude/commands/mastermind/_repeat.md +0 -492
  317. package/.claude/commands/mastermind/_taskfile.md +0 -232
  318. package/.claude/commands/mastermind/adr.md +0 -9
  319. package/.claude/commands/mastermind/approve.md +0 -91
  320. package/.claude/commands/mastermind/architect.md +0 -52
  321. package/.claude/commands/mastermind/autodev.md +0 -28
  322. package/.claude/commands/mastermind/brain.md +0 -99
  323. package/.claude/commands/mastermind/budget.md +0 -5
  324. package/.claude/commands/mastermind/build.md +0 -23
  325. package/.claude/commands/mastermind/code-review.md +0 -314
  326. package/.claude/commands/mastermind/content.md +0 -23
  327. package/.claude/commands/mastermind/createorg.md +0 -136
  328. package/.claude/commands/mastermind/createtask.md +0 -372
  329. package/.claude/commands/mastermind/debug.md +0 -19
  330. package/.claude/commands/mastermind/design.md +0 -17
  331. package/.claude/commands/mastermind/do.md +0 -525
  332. package/.claude/commands/mastermind/execute.md +0 -17
  333. package/.claude/commands/mastermind/finance.md +0 -23
  334. package/.claude/commands/mastermind/finish.md +0 -17
  335. package/.claude/commands/mastermind/graph-status.md +0 -5
  336. package/.claude/commands/mastermind/help.md +0 -115
  337. package/.claude/commands/mastermind/idea.md +0 -23
  338. package/.claude/commands/mastermind/ideate.md +0 -258
  339. package/.claude/commands/mastermind/improve.md +0 -342
  340. package/.claude/commands/mastermind/loops.md +0 -5
  341. package/.claude/commands/mastermind/marketing.md +0 -23
  342. package/.claude/commands/mastermind/master.md +0 -1124
  343. package/.claude/commands/mastermind/memory.md +0 -227
  344. package/.claude/commands/mastermind/okf-export.md +0 -14
  345. package/.claude/commands/mastermind/okf-import.md +0 -15
  346. package/.claude/commands/mastermind/ops.md +0 -23
  347. package/.claude/commands/mastermind/orgs.md +0 -18
  348. package/.claude/commands/mastermind/orgstatus.md +0 -56
  349. package/.claude/commands/mastermind/plan.md +0 -23
  350. package/.claude/commands/mastermind/receive-review.md +0 -17
  351. package/.claude/commands/mastermind/references/antigravity-tools.md +0 -60
  352. package/.claude/commands/mastermind/references/claude-code-tools.md +0 -50
  353. package/.claude/commands/mastermind/references/codex-tools.md +0 -64
  354. package/.claude/commands/mastermind/references/copilot-tools.md +0 -49
  355. package/.claude/commands/mastermind/references/gemini-tools.md +0 -63
  356. package/.claude/commands/mastermind/references/pi-tools.md +0 -28
  357. package/.claude/commands/mastermind/release.md +0 -23
  358. package/.claude/commands/mastermind/repeat.md +0 -254
  359. package/.claude/commands/mastermind/research.md +0 -23
  360. package/.claude/commands/mastermind/review.md +0 -34
  361. package/.claude/commands/mastermind/runorg.md +0 -153
  362. package/.claude/commands/mastermind/sales.md +0 -23
  363. package/.claude/commands/mastermind/skill-builder.md +0 -17
  364. package/.claude/commands/mastermind/specialagents.md +0 -122
  365. package/.claude/commands/mastermind/stoporg.md +0 -75
  366. package/.claude/commands/mastermind/swarm.md +0 -158
  367. package/.claude/commands/mastermind/taskdev.md +0 -23
  368. package/.claude/commands/mastermind/tdd.md +0 -19
  369. package/.claude/commands/mastermind/techport.md +0 -27
  370. package/.claude/commands/mastermind/understand.md +0 -136
  371. package/.claude/commands/mastermind/verify.md +0 -19
  372. package/.claude/commands/mastermind/worktree.md +0 -17
  373. package/.claude/commands/mastermind.md +0 -121
  374. package/.claude/commands/memory/README.md +0 -79
  375. package/.claude/commands/memory/memory-search.md +0 -77
  376. package/.claude/commands/monitoring/README.md +0 -69
  377. package/.claude/commands/monitoring/agent-metrics.md +0 -65
  378. package/.claude/commands/monitoring/agents.md +0 -71
  379. package/.claude/commands/monitoring/status.md +0 -108
  380. package/.claude/commands/monobrowse.md +0 -21
  381. package/.claude/commands/monoes/README.md +0 -30
  382. package/.claude/commands/monoes/install.md +0 -163
  383. package/.claude/commands/monoes/monoagent.md +0 -148
  384. package/.claude/commands/monoes/monoclip.md +0 -64
  385. package/.claude/commands/monoes/monotask.md +0 -137
  386. package/.claude/commands/monograph/README.md +0 -102
  387. package/.claude/commands/monograph/monograph-build.md +0 -79
  388. package/.claude/commands/monograph/monograph-search.md +0 -96
  389. package/.claude/commands/monograph/monograph-stats.md +0 -53
  390. package/.claude/commands/monograph/monograph-watch.md +0 -63
  391. package/.claude/commands/monograph/monograph-wiki.md +0 -91
  392. package/.claude/commands/optimization/auto-topology.md +0 -85
  393. package/.claude/commands/optimization/performance-optimize.md +0 -79
  394. package/.claude/commands/pair/README.md +0 -79
  395. package/.claude/commands/pair/examples.md +0 -156
  396. package/.claude/commands/pair/modes.md +0 -122
  397. package/.claude/commands/pair/session.md +0 -124
  398. package/.claude/commands/sparc/analyzer.md +0 -35
  399. package/.claude/commands/sparc/architect.md +0 -36
  400. package/.claude/commands/sparc/ask.md +0 -56
  401. package/.claude/commands/sparc/batch-executor.md +0 -37
  402. package/.claude/commands/sparc/code.md +0 -48
  403. package/.claude/commands/sparc/coder.md +0 -37
  404. package/.claude/commands/sparc/debug.md +0 -42
  405. package/.claude/commands/sparc/debugger.md +0 -37
  406. package/.claude/commands/sparc/designer.md +0 -36
  407. package/.claude/commands/sparc/devops.md +0 -68
  408. package/.claude/commands/sparc/docs-writer.md +0 -39
  409. package/.claude/commands/sparc/documenter.md +0 -37
  410. package/.claude/commands/sparc/innovator.md +0 -37
  411. package/.claude/commands/sparc/integration.md +0 -42
  412. package/.claude/commands/sparc/mcp.md +0 -76
  413. package/.claude/commands/sparc/memory-manager.md +0 -57
  414. package/.claude/commands/sparc/optimizer.md +0 -37
  415. package/.claude/commands/sparc/orchestrator.md +0 -70
  416. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +0 -42
  417. package/.claude/commands/sparc/refinement-optimization-mode.md +0 -42
  418. package/.claude/commands/sparc/researcher.md +0 -37
  419. package/.claude/commands/sparc/reviewer.md +0 -37
  420. package/.claude/commands/sparc/security-review.md +0 -39
  421. package/.claude/commands/sparc/sparc-modes.md +0 -120
  422. package/.claude/commands/sparc/sparc.md +0 -71
  423. package/.claude/commands/sparc/spec-pseudocode.md +0 -39
  424. package/.claude/commands/sparc/supabase-admin.md +0 -301
  425. package/.claude/commands/sparc/swarm-coordinator.md +0 -50
  426. package/.claude/commands/sparc/tdd.md +0 -37
  427. package/.claude/commands/sparc/tester.md +0 -37
  428. package/.claude/commands/sparc/tutorial.md +0 -38
  429. package/.claude/commands/sparc/workflow-manager.md +0 -37
  430. package/.claude/commands/sparc.md +0 -112
  431. package/.claude/commands/stream-chain/pipeline.md +0 -116
  432. package/.claude/commands/stream-chain/run.md +0 -156
  433. package/.claude/commands/swarm/README.md +0 -40
  434. package/.claude/commands/swarm/analysis.md +0 -73
  435. package/.claude/commands/swarm/development.md +0 -72
  436. package/.claude/commands/swarm/examples.md +0 -103
  437. package/.claude/commands/swarm/maintenance.md +0 -75
  438. package/.claude/commands/swarm/optimization.md +0 -84
  439. package/.claude/commands/swarm/research.md +0 -76
  440. package/.claude/commands/swarm/swarm.md +0 -79
  441. package/.claude/commands/swarm/testing.md +0 -80
  442. package/.claude/commands/tokens.md +0 -18
  443. package/.claude/commands/truth/start.md +0 -121
  444. package/.claude/commands/ts.md +0 -14
  445. package/.claude/commands/workflows/README.md +0 -65
  446. package/.claude/commands/workflows/development.md +0 -86
  447. package/.claude/commands/workflows/research.md +0 -89
  448. package/.claude/commands/workflows/workflow-create.md +0 -84
  449. package/.claude/commands/workflows/workflow-execute.md +0 -103
  450. package/.claude/commands/workflows/workflow-export.md +0 -90
  451. package/.claude/helpers/control-start.cjs +0 -184
  452. package/.claude/helpers/event-logger.cjs +0 -155
  453. package/.claude/helpers/extras-registry.json +0 -5141
  454. package/.claude/helpers/graphify-freshen.cjs +0 -140
  455. package/.claude/helpers/handlers/adr-draft-handler.cjs +0 -78
  456. package/.claude/helpers/handlers/agent-start-handler.cjs +0 -83
  457. package/.claude/helpers/handlers/budget-status-handler.cjs +0 -14
  458. package/.claude/helpers/handlers/capture-handler.cjs +0 -583
  459. package/.claude/helpers/handlers/compact-handler.cjs +0 -35
  460. package/.claude/helpers/handlers/edit-handler.cjs +0 -145
  461. package/.claude/helpers/handlers/gates-handler.cjs +0 -138
  462. package/.claude/helpers/handlers/graph-status-handler.cjs +0 -45
  463. package/.claude/helpers/handlers/loops-status-handler.cjs +0 -48
  464. package/.claude/helpers/handlers/route-handler.cjs +0 -381
  465. package/.claude/helpers/handlers/session-handler.cjs +0 -234
  466. package/.claude/helpers/handlers/session-restore-handler.cjs +0 -375
  467. package/.claude/helpers/handlers/stats-handler.cjs +0 -14
  468. package/.claude/helpers/handlers/task-handler.cjs +0 -206
  469. package/.claude/helpers/hook-handler.cjs +0 -765
  470. package/.claude/helpers/intelligence.cjs +0 -338
  471. package/.claude/helpers/learning-service.mjs +0 -61
  472. package/.claude/helpers/loop-tracker.cjs +0 -119
  473. package/.claude/helpers/mastermind-activate.cjs +0 -35
  474. package/.claude/helpers/memory-palace.cjs +0 -461
  475. package/.claude/helpers/memory.cjs +0 -193
  476. package/.claude/helpers/metrics-db.mjs +0 -87
  477. package/.claude/helpers/monolean-activate.cjs +0 -30
  478. package/.claude/helpers/monolean-config.cjs +0 -76
  479. package/.claude/helpers/monolean-instructions.cjs +0 -109
  480. package/.claude/helpers/monolean-propagate.cjs +0 -13
  481. package/.claude/helpers/monolean-tracker.cjs +0 -18
  482. package/.claude/helpers/router.cjs +0 -364
  483. package/.claude/helpers/session.cjs +0 -140
  484. package/.claude/helpers/skill-registry.json +0 -1043
  485. package/.claude/helpers/statusline.cjs +0 -1344
  486. package/.claude/helpers/toggle-statusline.cjs +0 -73
  487. package/.claude/helpers/token-tracker.cjs +0 -934
  488. package/.claude/helpers/utils/micro-agents.cjs +0 -354
  489. package/.claude/helpers/utils/monograph.cjs +0 -480
  490. package/.claude/helpers/utils/telemetry.cjs +0 -146
  491. package/.claude/mcp.json +0 -3
  492. package/.claude/scheduled_tasks.lock +0 -1
  493. package/.claude/settings.json +0 -475
  494. package/.claude/skills/.monomind/data/ranked-context.json +0 -5
  495. package/.claude/skills/.monomind/sessions/current.json +0 -13
  496. package/.claude/skills/.monomind/sessions/session-1777829336455.json +0 -15
  497. package/.claude/skills/.monomind/sessions/session-1777831614725.json +0 -15
  498. package/.claude/skills/.monomind/sessions/session-1777832095857.json +0 -15
  499. package/.claude/skills/.monomind/sessions/session-1777839814183.json +0 -15
  500. package/.claude/skills/.monomind/sessions/session-1777841847131.json +0 -15
  501. package/.claude/skills/.monomind/sessions/session-1777843309463.json +0 -15
  502. package/.claude/skills/.monomind/sessions/session-1777880867159.json +0 -15
  503. package/.claude/skills/.monomind/sessions/session-1777881884593.json +0 -15
  504. package/.claude/skills/.monomind/sessions/session-1777884090471.json +0 -15
  505. package/.claude/skills/.monomind/sessions/session-1777884808221.json +0 -15
  506. package/.claude/skills/.monomind/sessions/session-1777885672155.json +0 -15
  507. package/.claude/skills/.monomind/sessions/session-1777886852818.json +0 -15
  508. package/.claude/skills/.monomind/sessions/session-1777896532690.json +0 -15
  509. package/.claude/skills/agent-browser-testing/SKILL.md +0 -964
  510. package/.claude/skills/agentic-jujutsu/SKILL.md +0 -645
  511. package/.claude/skills/github-issue-triage/SKILL.md +0 -354
  512. package/.claude/skills/github-repo-recap/SKILL.md +0 -207
  513. package/.claude/skills/hive-mind-advanced/SKILL.md +0 -709
  514. package/.claude/skills/hooks-automation/SKILL.md +0 -1193
  515. package/.claude/skills/mastermind-skills/_agent-select.md +0 -132
  516. package/.claude/skills/mastermind-skills/_delegation.md +0 -83
  517. package/.claude/skills/mastermind-skills/_intake.md +0 -83
  518. package/.claude/skills/mastermind-skills/_protocol.md +0 -404
  519. package/.claude/skills/mastermind-skills/_repeat.md +0 -171
  520. package/.claude/skills/mastermind-skills/access.md +0 -236
  521. package/.claude/skills/mastermind-skills/activity.md +0 -191
  522. package/.claude/skills/mastermind-skills/adapter-manager.md +0 -259
  523. package/.claude/skills/mastermind-skills/adapters.md +0 -204
  524. package/.claude/skills/mastermind-skills/agent-detail.md +0 -242
  525. package/.claude/skills/mastermind-skills/agents.md +0 -178
  526. package/.claude/skills/mastermind-skills/approval-detail.md +0 -259
  527. package/.claude/skills/mastermind-skills/approve.md +0 -188
  528. package/.claude/skills/mastermind-skills/architect.md +0 -862
  529. package/.claude/skills/mastermind-skills/autodev.md +0 -360
  530. package/.claude/skills/mastermind-skills/backup.md +0 -197
  531. package/.claude/skills/mastermind-skills/bootstrap.md +0 -190
  532. package/.claude/skills/mastermind-skills/budgets.md +0 -237
  533. package/.claude/skills/mastermind-skills/build.md +0 -170
  534. package/.claude/skills/mastermind-skills/code-quality-reviewer-prompt.md +0 -60
  535. package/.claude/skills/mastermind-skills/companies.md +0 -256
  536. package/.claude/skills/mastermind-skills/content.md +0 -197
  537. package/.claude/skills/mastermind-skills/costs.md +0 -151
  538. package/.claude/skills/mastermind-skills/createorg.md +0 -862
  539. package/.claude/skills/mastermind-skills/debug.md +0 -232
  540. package/.claude/skills/mastermind-skills/design.md +0 -189
  541. package/.claude/skills/mastermind-skills/diagnose.md +0 -249
  542. package/.claude/skills/mastermind-skills/env.md +0 -198
  543. package/.claude/skills/mastermind-skills/environments.md +0 -250
  544. package/.claude/skills/mastermind-skills/execute.md +0 -104
  545. package/.claude/skills/mastermind-skills/export.md +0 -333
  546. package/.claude/skills/mastermind-skills/finance.md +0 -166
  547. package/.claude/skills/mastermind-skills/finish.md +0 -251
  548. package/.claude/skills/mastermind-skills/goal-detail.md +0 -255
  549. package/.claude/skills/mastermind-skills/goals.md +0 -149
  550. package/.claude/skills/mastermind-skills/heartbeat.md +0 -164
  551. package/.claude/skills/mastermind-skills/idea.md +0 -1142
  552. package/.claude/skills/mastermind-skills/implementer-prompt.md +0 -109
  553. package/.claude/skills/mastermind-skills/import.md +0 -281
  554. package/.claude/skills/mastermind-skills/inbox.md +0 -214
  555. package/.claude/skills/mastermind-skills/instance-settings.md +0 -315
  556. package/.claude/skills/mastermind-skills/instance.md +0 -233
  557. package/.claude/skills/mastermind-skills/invite-landing.md +0 -227
  558. package/.claude/skills/mastermind-skills/invites.md +0 -254
  559. package/.claude/skills/mastermind-skills/issue-detail.md +0 -291
  560. package/.claude/skills/mastermind-skills/issues.md +0 -235
  561. package/.claude/skills/mastermind-skills/join-queue.md +0 -170
  562. package/.claude/skills/mastermind-skills/liveness.md +0 -392
  563. package/.claude/skills/mastermind-skills/marketing.md +0 -228
  564. package/.claude/skills/mastermind-skills/memory.md +0 -321
  565. package/.claude/skills/mastermind-skills/monitor.md +0 -1284
  566. package/.claude/skills/mastermind-skills/monotask.md +0 -350
  567. package/.claude/skills/mastermind-skills/my-issues.md +0 -146
  568. package/.claude/skills/mastermind-skills/new-agent.md +0 -241
  569. package/.claude/skills/mastermind-skills/ops.md +0 -168
  570. package/.claude/skills/mastermind-skills/org-chart.md +0 -209
  571. package/.claude/skills/mastermind-skills/org-settings.md +0 -254
  572. package/.claude/skills/mastermind-skills/orgs.md +0 -98
  573. package/.claude/skills/mastermind-skills/orgstatus.md +0 -194
  574. package/.claude/skills/mastermind-skills/plan-to-tasks.md +0 -136
  575. package/.claude/skills/mastermind-skills/plan.md +0 -198
  576. package/.claude/skills/mastermind-skills/plugin-manager.md +0 -241
  577. package/.claude/skills/mastermind-skills/plugin-settings.md +0 -273
  578. package/.claude/skills/mastermind-skills/plugins.md +0 -190
  579. package/.claude/skills/mastermind-skills/profile.md +0 -187
  580. package/.claude/skills/mastermind-skills/project-detail.md +0 -249
  581. package/.claude/skills/mastermind-skills/project-workspace.md +0 -244
  582. package/.claude/skills/mastermind-skills/projects.md +0 -164
  583. package/.claude/skills/mastermind-skills/receive-review.md +0 -213
  584. package/.claude/skills/mastermind-skills/references/copywriting-frameworks.md +0 -181
  585. package/.claude/skills/mastermind-skills/references/persuasion-psychology.md +0 -158
  586. package/.claude/skills/mastermind-skills/release.md +0 -168
  587. package/.claude/skills/mastermind-skills/research.md +0 -168
  588. package/.claude/skills/mastermind-skills/review.md +0 -233
  589. package/.claude/skills/mastermind-skills/routine-detail.md +0 -253
  590. package/.claude/skills/mastermind-skills/routines.md +0 -203
  591. package/.claude/skills/mastermind-skills/runorg.md +0 -714
  592. package/.claude/skills/mastermind-skills/sales.md +0 -170
  593. package/.claude/skills/mastermind-skills/search.md +0 -186
  594. package/.claude/skills/mastermind-skills/secrets.md +0 -199
  595. package/.claude/skills/mastermind-skills/skill-builder.md +0 -274
  596. package/.claude/skills/mastermind-skills/skills.md +0 -156
  597. package/.claude/skills/mastermind-skills/spec-reviewer-prompt.md +0 -63
  598. package/.claude/skills/mastermind-skills/stoporg.md +0 -138
  599. package/.claude/skills/mastermind-skills/taskdev.md +0 -307
  600. package/.claude/skills/mastermind-skills/tasks.md +0 -149
  601. package/.claude/skills/mastermind-skills/tdd.md +0 -394
  602. package/.claude/skills/mastermind-skills/techport.md +0 -777
  603. package/.claude/skills/mastermind-skills/threads.md +0 -259
  604. package/.claude/skills/mastermind-skills/tree-control.md +0 -250
  605. package/.claude/skills/mastermind-skills/verify.md +0 -196
  606. package/.claude/skills/mastermind-skills/wiki.md +0 -314
  607. package/.claude/skills/mastermind-skills/workspace-detail.md +0 -317
  608. package/.claude/skills/mastermind-skills/workspaces.md +0 -261
  609. package/.claude/skills/mastermind-skills/worktree.md +0 -215
  610. package/.claude/skills/monodesign/SKILL.md +0 -333
  611. package/.claude/skills/monodesign/adapt.md +0 -53
  612. package/.claude/skills/monodesign/agents/monodesign-asset-producer.md +0 -100
  613. package/.claude/skills/monodesign/animate.md +0 -65
  614. package/.claude/skills/monodesign/audit.md +0 -89
  615. package/.claude/skills/monodesign/bolder.md +0 -50
  616. package/.claude/skills/monodesign/clarify.md +0 -64
  617. package/.claude/skills/monodesign/colorize.md +0 -68
  618. package/.claude/skills/monodesign/craft.md +0 -51
  619. package/.claude/skills/monodesign/critique.md +0 -66
  620. package/.claude/skills/monodesign/delight.md +0 -47
  621. package/.claude/skills/monodesign/distill.md +0 -56
  622. package/.claude/skills/monodesign/document.md +0 -83
  623. package/.claude/skills/monodesign/extract.md +0 -74
  624. package/.claude/skills/monodesign/harden.md +0 -65
  625. package/.claude/skills/monodesign/live.md +0 -59
  626. package/.claude/skills/monodesign/onboard.md +0 -50
  627. package/.claude/skills/monodesign/optimize.md +0 -64
  628. package/.claude/skills/monodesign/overdrive.md +0 -56
  629. package/.claude/skills/monodesign/polish.md +0 -68
  630. package/.claude/skills/monodesign/quieter.md +0 -57
  631. package/.claude/skills/monodesign/reference/adapt.md +0 -190
  632. package/.claude/skills/monodesign/reference/animate.md +0 -175
  633. package/.claude/skills/monodesign/reference/antipatterns-catalog.md +0 -359
  634. package/.claude/skills/monodesign/reference/audit.md +0 -133
  635. package/.claude/skills/monodesign/reference/bolder.md +0 -113
  636. package/.claude/skills/monodesign/reference/brand-workflow.md +0 -180
  637. package/.claude/skills/monodesign/reference/brand.md +0 -114
  638. package/.claude/skills/monodesign/reference/clarify.md +0 -174
  639. package/.claude/skills/monodesign/reference/codex.md +0 -107
  640. package/.claude/skills/monodesign/reference/cognitive-load.md +0 -106
  641. package/.claude/skills/monodesign/reference/color-and-contrast.md +0 -105
  642. package/.claude/skills/monodesign/reference/colorize.md +0 -154
  643. package/.claude/skills/monodesign/reference/component-specs.md +0 -260
  644. package/.claude/skills/monodesign/reference/component-states.md +0 -274
  645. package/.claude/skills/monodesign/reference/component-system.md +0 -358
  646. package/.claude/skills/monodesign/reference/copy-formulas.md +0 -160
  647. package/.claude/skills/monodesign/reference/craft.md +0 -196
  648. package/.claude/skills/monodesign/reference/critique.md +0 -213
  649. package/.claude/skills/monodesign/reference/delight.md +0 -302
  650. package/.claude/skills/monodesign/reference/design-principles.md +0 -246
  651. package/.claude/skills/monodesign/reference/distill.md +0 -111
  652. package/.claude/skills/monodesign/reference/document.md +0 -427
  653. package/.claude/skills/monodesign/reference/extract.md +0 -69
  654. package/.claude/skills/monodesign/reference/harden.md +0 -347
  655. package/.claude/skills/monodesign/reference/heuristics-scoring.md +0 -234
  656. package/.claude/skills/monodesign/reference/hooks.md +0 -99
  657. package/.claude/skills/monodesign/reference/image-prompts.md +0 -130
  658. package/.claude/skills/monodesign/reference/interaction-design.md +0 -195
  659. package/.claude/skills/monodesign/reference/layout.md +0 -141
  660. package/.claude/skills/monodesign/reference/live.md +0 -622
  661. package/.claude/skills/monodesign/reference/motion-design.md +0 -109
  662. package/.claude/skills/monodesign/reference/onboard.md +0 -234
  663. package/.claude/skills/monodesign/reference/optimize.md +0 -258
  664. package/.claude/skills/monodesign/reference/overdrive.md +0 -130
  665. package/.claude/skills/monodesign/reference/personas.md +0 -179
  666. package/.claude/skills/monodesign/reference/polish.md +0 -233
  667. package/.claude/skills/monodesign/reference/pre-delivery-checklist.md +0 -108
  668. package/.claude/skills/monodesign/reference/product.md +0 -62
  669. package/.claude/skills/monodesign/reference/quieter.md +0 -99
  670. package/.claude/skills/monodesign/reference/responsive-design.md +0 -114
  671. package/.claude/skills/monodesign/reference/shape.md +0 -151
  672. package/.claude/skills/monodesign/reference/spatial-design.md +0 -100
  673. package/.claude/skills/monodesign/reference/teach.md +0 -156
  674. package/.claude/skills/monodesign/reference/token-architecture.md +0 -222
  675. package/.claude/skills/monodesign/reference/typeset.md +0 -124
  676. package/.claude/skills/monodesign/reference/typography.md +0 -159
  677. package/.claude/skills/monodesign/reference/ux-research.md +0 -143
  678. package/.claude/skills/monodesign/reference/ux-rules.md +0 -211
  679. package/.claude/skills/monodesign/reference/ux-writing.md +0 -107
  680. package/.claude/skills/monodesign/shape.md +0 -71
  681. package/.claude/skills/monodesign/teach.md +0 -69
  682. package/.claude/skills/monodesign/typeset.md +0 -59
  683. package/.claude/skills/monolean/SKILL.md +0 -118
  684. package/.claude/skills/monolean-audit/SKILL.md +0 -41
  685. package/.claude/skills/monolean-debt/SKILL.md +0 -46
  686. package/.claude/skills/monolean-help/SKILL.md +0 -60
  687. package/.claude/skills/monolean-review/SKILL.md +0 -57
  688. package/.claude/skills/monomind/.monomind/registry.json +0 -6
  689. package/.claude/skills/monomind/browse-agentcore.md +0 -115
  690. package/.claude/skills/monomind/browse-electron.md +0 -188
  691. package/.claude/skills/monomind/browse-qa.md +0 -228
  692. package/.claude/skills/monomind/browse-references/authentication.md +0 -161
  693. package/.claude/skills/monomind/browse-references/trust-boundaries.md +0 -40
  694. package/.claude/skills/monomind/browse-references/video-recording.md +0 -83
  695. package/.claude/skills/monomind/browse-slack.md +0 -188
  696. package/.claude/skills/monomind/browse-vercel.md +0 -239
  697. package/.claude/skills/monomind/browse.md +0 -724
  698. package/.claude/skills/monomotion/SKILL.md +0 -145
  699. package/.claude/skills/monomotion/rules/api-control.md +0 -139
  700. package/.claude/skills/monomotion/rules/effects.md +0 -109
  701. package/.claude/skills/monomotion/rules/integration.md +0 -140
  702. package/.claude/skills/monomotion/rules/scroll.md +0 -131
  703. package/.claude/skills/monomotion/rules/sequencing.md +0 -105
  704. package/.claude/skills/monomotion/rules/svg.md +0 -101
  705. package/.claude/skills/monomotion/rules/text.md +0 -119
  706. package/.claude/skills/pair-programming/SKILL.md +0 -1202
  707. package/.claude/skills/performance-analysis/SKILL.md +0 -560
  708. package/.claude/skills/skill-builder/SKILL.md +0 -910
  709. package/.claude/skills/sparc-methodology/SKILL.md +0 -950
  710. package/.claude/skills/specialagent/SKILL.md +0 -208
  711. package/.claude/skills/stop-slop/SKILL.md +0 -67
  712. package/.claude/skills/stop-slop/references/examples.md +0 -61
  713. package/.claude/skills/stop-slop/references/phrases.md +0 -130
  714. package/.claude/skills/stop-slop/references/structures.md +0 -136
  715. package/.claude/skills/swarm-advanced/SKILL.md +0 -937
  716. package/.claude/skills/swarm-orchestration/SKILL.md +0 -179
  717. package/.claude/skills/verification-quality/SKILL.md +0 -674
  718. package/.claude/workflows/feature-dev.yaml +0 -18
  719. package/.claude/workflows/security-audit.yaml +0 -10
  720. package/packages/@monomind/cli/.claude/agents/generated/case-analyst.md +0 -50
  721. package/packages/@monomind/cli/.claude/agents/generated/channel-intelligence-director.md +0 -87
  722. package/packages/@monomind/cli/.claude/agents/generated/chief-growth-officer.md +0 -88
  723. package/packages/@monomind/cli/.claude/agents/generated/churn-analyst.md +0 -53
  724. package/packages/@monomind/cli/.claude/agents/generated/code-reviewer.md +0 -55
  725. package/packages/@monomind/cli/.claude/agents/generated/code-validator.md +0 -57
  726. package/packages/@monomind/cli/.claude/agents/generated/complexity-scanner.md +0 -56
  727. package/packages/@monomind/cli/.claude/agents/generated/content-seo-strategist.md +0 -90
  728. package/packages/@monomind/cli/.claude/agents/generated/copy-editor.md +0 -45
  729. package/packages/@monomind/cli/.claude/agents/generated/court-reporter.md +0 -50
  730. package/packages/@monomind/cli/.claude/agents/generated/defender.md +0 -51
  731. package/packages/@monomind/cli/.claude/agents/generated/devbot-orchestrator.md +0 -58
  732. package/packages/@monomind/cli/.claude/agents/generated/devbot-planner.md +0 -63
  733. package/packages/@monomind/cli/.claude/agents/generated/developer-community-strategist.md +0 -91
  734. package/packages/@monomind/cli/.claude/agents/generated/editor-in-chief.md +0 -45
  735. package/packages/@monomind/cli/.claude/agents/generated/fact-checker.md +0 -45
  736. package/packages/@monomind/cli/.claude/agents/generated/impact-assessor.md +0 -54
  737. package/packages/@monomind/cli/.claude/agents/generated/judge.md +0 -51
  738. package/packages/@monomind/cli/.claude/agents/generated/outreach-partnership-strategist.md +0 -90
  739. package/packages/@monomind/cli/.claude/agents/generated/prosecutor.md +0 -51
  740. package/packages/@monomind/cli/.claude/agents/generated/reporter.md +0 -45
  741. package/packages/@monomind/cli/.claude/agents/generated/social-media-strategist.md +0 -91
  742. package/packages/@monomind/cli/.claude/agents/generated/video-visual-strategist.md +0 -90
  743. package/packages/@monomind/cli/.claude/agents/reengineer-squad/boss.md +0 -113
  744. package/packages/@monomind/cli/.claude/agents/reengineer-squad/critic-architect.md +0 -132
  745. package/packages/@monomind/cli/.claude/agents/reengineer-squad/git-manager.md +0 -145
  746. package/packages/@monomind/cli/.claude/agents/reengineer-squad/idea-generator.md +0 -95
  747. package/packages/@monomind/cli/.claude/agents/reengineer-squad/implementer.md +0 -112
  748. package/packages/@monomind/cli/.claude/agents/reengineer-squad/integration-planner.md +0 -112
  749. package/packages/@monomind/cli/.claude/agents/reengineer-squad/source-analyst.md +0 -103
  750. package/packages/@monomind/cli/.claude/agents/reengineer-squad/target-analyst.md +0 -118
  751. package/packages/@monomind/cli/.claude/agents/reengineer-squad/tester.md +0 -105
  752. package/packages/@monomind/cli/.claude/agents/sparc/architecture.md +0 -453
  753. package/packages/@monomind/cli/.claude/agents/sparc/pseudocode.md +0 -299
  754. package/packages/@monomind/cli/.claude/agents/sparc/refinement.md +0 -504
  755. package/packages/@monomind/cli/.claude/agents/sparc/specification.md +0 -258
  756. package/packages/@monomind/cli/.claude/agents/templates/implementer-sparc-coder.md +0 -231
  757. package/packages/@monomind/cli/.claude/commands/sparc/analyzer.md +0 -35
  758. package/packages/@monomind/cli/.claude/commands/sparc/architect.md +0 -36
  759. package/packages/@monomind/cli/.claude/commands/sparc/ask.md +0 -56
  760. package/packages/@monomind/cli/.claude/commands/sparc/batch-executor.md +0 -37
  761. package/packages/@monomind/cli/.claude/commands/sparc/code.md +0 -48
  762. package/packages/@monomind/cli/.claude/commands/sparc/coder.md +0 -37
  763. package/packages/@monomind/cli/.claude/commands/sparc/debug.md +0 -42
  764. package/packages/@monomind/cli/.claude/commands/sparc/debugger.md +0 -37
  765. package/packages/@monomind/cli/.claude/commands/sparc/designer.md +0 -36
  766. package/packages/@monomind/cli/.claude/commands/sparc/devops.md +0 -68
  767. package/packages/@monomind/cli/.claude/commands/sparc/docs-writer.md +0 -39
  768. package/packages/@monomind/cli/.claude/commands/sparc/documenter.md +0 -37
  769. package/packages/@monomind/cli/.claude/commands/sparc/innovator.md +0 -37
  770. package/packages/@monomind/cli/.claude/commands/sparc/integration.md +0 -42
  771. package/packages/@monomind/cli/.claude/commands/sparc/mcp.md +0 -76
  772. package/packages/@monomind/cli/.claude/commands/sparc/memory-manager.md +0 -57
  773. package/packages/@monomind/cli/.claude/commands/sparc/optimizer.md +0 -37
  774. package/packages/@monomind/cli/.claude/commands/sparc/orchestrator.md +0 -70
  775. package/packages/@monomind/cli/.claude/commands/sparc/post-deployment-monitoring-mode.md +0 -42
  776. package/packages/@monomind/cli/.claude/commands/sparc/refinement-optimization-mode.md +0 -42
  777. package/packages/@monomind/cli/.claude/commands/sparc/researcher.md +0 -37
  778. package/packages/@monomind/cli/.claude/commands/sparc/reviewer.md +0 -37
  779. package/packages/@monomind/cli/.claude/commands/sparc/security-review.md +0 -39
  780. package/packages/@monomind/cli/.claude/commands/sparc/sparc-modes.md +0 -120
  781. package/packages/@monomind/cli/.claude/commands/sparc/sparc.md +0 -71
  782. package/packages/@monomind/cli/.claude/commands/sparc/spec-pseudocode.md +0 -39
  783. package/packages/@monomind/cli/.claude/commands/sparc/supabase-admin.md +0 -301
  784. package/packages/@monomind/cli/.claude/commands/sparc/swarm-coordinator.md +0 -50
  785. package/packages/@monomind/cli/.claude/commands/sparc/tdd.md +0 -37
  786. package/packages/@monomind/cli/.claude/commands/sparc/tester.md +0 -37
  787. package/packages/@monomind/cli/.claude/commands/sparc/tutorial.md +0 -38
  788. package/packages/@monomind/cli/.claude/commands/sparc/workflow-manager.md +0 -37
  789. package/packages/@monomind/cli/.claude/commands/sparc.md +0 -112
  790. package/packages/@monomind/cli/.claude/skills/sparc-methodology/SKILL.md +0 -950
  791. package/packages/@monomind/cli/dist/src/capabilities/enrichment.d.ts +0 -44
  792. package/packages/@monomind/cli/dist/src/capabilities/enrichment.js +0 -141
  793. package/packages/@monomind/cli/dist/src/commands/analyze-boundaries.d.ts +0 -14
  794. package/packages/@monomind/cli/dist/src/commands/analyze-boundaries.js +0 -295
  795. package/packages/@monomind/cli/dist/src/commands/analyze-graph.d.ts +0 -14
  796. package/packages/@monomind/cli/dist/src/commands/analyze-graph.js +0 -304
  797. package/packages/@monomind/cli/dist/src/commands/claims.d.ts +0 -10
  798. package/packages/@monomind/cli/dist/src/commands/claims.js +0 -650
  799. package/packages/@monomind/cli/dist/src/commands/daemon.d.ts +0 -8
  800. package/packages/@monomind/cli/dist/src/commands/daemon.js +0 -681
  801. package/packages/@monomind/cli/dist/src/commands/enrich.d.ts +0 -10
  802. package/packages/@monomind/cli/dist/src/commands/enrich.js +0 -58
  803. package/packages/@monomind/cli/dist/src/commands/issues.d.ts +0 -21
  804. package/packages/@monomind/cli/dist/src/commands/issues.js +0 -575
  805. package/packages/@monomind/cli/dist/src/commands/workflow.d.ts +0 -8
  806. package/packages/@monomind/cli/dist/src/commands/workflow.js +0 -575
  807. package/packages/@monomind/cli/dist/src/consensus/vote-signer.d.ts +0 -36
  808. package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +0 -88
  809. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
  810. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +0 -717
  811. package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +0 -198
  812. package/packages/@monomind/cli/dist/src/services/claim-service.js +0 -890
  813. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.d.ts +0 -311
  814. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +0 -1183
  815. package/packages/@monomind/cli/dist/src/services/worker-daemon.d.ts +0 -230
  816. package/packages/@monomind/cli/dist/src/services/worker-daemon.js +0 -1350
  817. package/packages/@monomind/cli/dist/src/ui/.monomind/capture/active-run.json +0 -1
  818. package/packages/@monomind/guidance/README.md +0 -87
  819. package/packages/@monomind/guidance/dist/adversarial.d.ts +0 -284
  820. package/packages/@monomind/guidance/dist/adversarial.js +0 -572
  821. package/packages/@monomind/guidance/dist/analyzer.d.ts +0 -530
  822. package/packages/@monomind/guidance/dist/analyzer.js +0 -2518
  823. package/packages/@monomind/guidance/dist/artifacts.d.ts +0 -283
  824. package/packages/@monomind/guidance/dist/artifacts.js +0 -356
  825. package/packages/@monomind/guidance/dist/authority.d.ts +0 -290
  826. package/packages/@monomind/guidance/dist/authority.js +0 -558
  827. package/packages/@monomind/guidance/dist/capabilities.d.ts +0 -209
  828. package/packages/@monomind/guidance/dist/capabilities.js +0 -485
  829. package/packages/@monomind/guidance/dist/coherence.d.ts +0 -233
  830. package/packages/@monomind/guidance/dist/coherence.js +0 -378
  831. package/packages/@monomind/guidance/dist/compiler.d.ts +0 -87
  832. package/packages/@monomind/guidance/dist/compiler.js +0 -425
  833. package/packages/@monomind/guidance/dist/conformance-kit.d.ts +0 -225
  834. package/packages/@monomind/guidance/dist/conformance-kit.js +0 -629
  835. package/packages/@monomind/guidance/dist/continue-gate.d.ts +0 -214
  836. package/packages/@monomind/guidance/dist/continue-gate.js +0 -353
  837. package/packages/@monomind/guidance/dist/crypto-utils.d.ts +0 -17
  838. package/packages/@monomind/guidance/dist/crypto-utils.js +0 -24
  839. package/packages/@monomind/guidance/dist/evolution.d.ts +0 -282
  840. package/packages/@monomind/guidance/dist/evolution.js +0 -500
  841. package/packages/@monomind/guidance/dist/gates.d.ts +0 -79
  842. package/packages/@monomind/guidance/dist/gates.js +0 -302
  843. package/packages/@monomind/guidance/dist/gateway.d.ts +0 -206
  844. package/packages/@monomind/guidance/dist/gateway.js +0 -452
  845. package/packages/@monomind/guidance/dist/generators.d.ts +0 -153
  846. package/packages/@monomind/guidance/dist/generators.js +0 -682
  847. package/packages/@monomind/guidance/dist/headless.d.ts +0 -177
  848. package/packages/@monomind/guidance/dist/headless.js +0 -342
  849. package/packages/@monomind/guidance/dist/hooks.d.ts +0 -109
  850. package/packages/@monomind/guidance/dist/hooks.js +0 -347
  851. package/packages/@monomind/guidance/dist/index.d.ts +0 -203
  852. package/packages/@monomind/guidance/dist/index.js +0 -320
  853. package/packages/@monomind/guidance/dist/ledger.d.ts +0 -162
  854. package/packages/@monomind/guidance/dist/ledger.js +0 -375
  855. package/packages/@monomind/guidance/dist/manifest-validator.d.ts +0 -289
  856. package/packages/@monomind/guidance/dist/manifest-validator.js +0 -838
  857. package/packages/@monomind/guidance/dist/memory-gate.d.ts +0 -222
  858. package/packages/@monomind/guidance/dist/memory-gate.js +0 -382
  859. package/packages/@monomind/guidance/dist/meta-governance.d.ts +0 -265
  860. package/packages/@monomind/guidance/dist/meta-governance.js +0 -348
  861. package/packages/@monomind/guidance/dist/optimizer.d.ts +0 -104
  862. package/packages/@monomind/guidance/dist/optimizer.js +0 -329
  863. package/packages/@monomind/guidance/dist/persistence.d.ts +0 -189
  864. package/packages/@monomind/guidance/dist/persistence.js +0 -464
  865. package/packages/@monomind/guidance/dist/proof.d.ts +0 -185
  866. package/packages/@monomind/guidance/dist/proof.js +0 -238
  867. package/packages/@monomind/guidance/dist/retriever.d.ts +0 -116
  868. package/packages/@monomind/guidance/dist/retriever.js +0 -394
  869. package/packages/@monomind/guidance/dist/ruvbot-integration.d.ts +0 -370
  870. package/packages/@monomind/guidance/dist/ruvbot-integration.js +0 -738
  871. package/packages/@monomind/guidance/dist/temporal.d.ts +0 -428
  872. package/packages/@monomind/guidance/dist/temporal.js +0 -660
  873. package/packages/@monomind/guidance/dist/trust.d.ts +0 -283
  874. package/packages/@monomind/guidance/dist/trust.js +0 -474
  875. package/packages/@monomind/guidance/dist/truth-anchors.d.ts +0 -276
  876. package/packages/@monomind/guidance/dist/truth-anchors.js +0 -488
  877. package/packages/@monomind/guidance/dist/types.d.ts +0 -378
  878. package/packages/@monomind/guidance/dist/types.js +0 -10
  879. package/packages/@monomind/guidance/dist/uncertainty.d.ts +0 -372
  880. package/packages/@monomind/guidance/dist/uncertainty.js +0 -619
  881. package/packages/@monomind/guidance/dist/wasm-kernel.d.ts +0 -48
  882. package/packages/@monomind/guidance/dist/wasm-kernel.js +0 -158
  883. package/packages/@monomind/guidance/package.json +0 -119
@@ -1,1344 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Monomind V1 Statusline Generator (Optimized)
4
- * Displays real-time v1 implementation progress and system status
5
- *
6
- * Usage: node statusline.cjs [--json] [--compact]
7
- *
8
- * Performance notes:
9
- * - Single git execSync call (combines branch + status + upstream)
10
- * - No recursive file reading (only stat/readdir, never read test contents)
11
- * - No ps aux calls (uses process.memoryUsage() + file-based metrics)
12
- * - Strict 2s timeout on all execSync calls
13
- * - Shared settings cache across functions
14
- */
15
-
16
- /* eslint-disable @typescript-eslint/no-var-requires */
17
- const fs = require('fs');
18
- const path = require('path');
19
- const { execSync, spawnSync } = require('child_process');
20
- const os = require('os');
21
-
22
- // Configuration
23
- const CONFIG = {
24
- maxAgents: 15,
25
- };
26
-
27
- const CWD = process.env.CLAUDE_PROJECT_DIR || process.cwd();
28
-
29
- // Read monomind version โ€” check global install first, then CWD package.json
30
- function getVersion() {
31
- // 1. Monomind global install: script lives at <install>/packages/@monomind/cli/dist/src/init/
32
- // or user project: .claude/helpers/statusline.cjs
33
- // Walk up to find a monomind package.json (has "name":"monomind" or "@monomind/cli")
34
- const scriptDir = path.dirname(__filename);
35
- const walkCandidates = [
36
- path.join(scriptDir, '..', '..', 'package.json'), // dist/src -> @monomind/cli
37
- path.join(scriptDir, '..', '..', '..', 'package.json'), // -> monomind umbrella
38
- path.join(scriptDir, '..', '..', '..', '..', 'package.json'),
39
- ];
40
- for (const p of walkCandidates) {
41
- try {
42
- const pkg = JSON.parse(fs.readFileSync(p, 'utf-8'));
43
- if (pkg.version && (pkg.name === 'monomind' || pkg.name === '@monomind/cli' || (pkg.name || '').startsWith('@monomind'))) {
44
- return `v${pkg.version}`;
45
- }
46
- } catch { /* ignore */ }
47
- }
48
- // 2. Fallback: npm global prefix
49
- try {
50
- const { execSync } = require('child_process');
51
- const prefix = execSync('npm config get prefix', { encoding: 'utf-8', timeout: 2000 }).trim();
52
- const pkg = JSON.parse(fs.readFileSync(path.join(prefix, 'lib', 'node_modules', 'monomind', 'package.json'), 'utf-8'));
53
- if (pkg.version) return `v${pkg.version}`;
54
- } catch { /* ignore */ }
55
- return 'v1.0.6';
56
- }
57
- const VERSION = getVersion();
58
-
59
- // ANSI colors
60
- const c = {
61
- reset: '\x1b[0m',
62
- bold: '\x1b[1m',
63
- dim: '\x1b[2m',
64
- red: '\x1b[0;31m',
65
- green: '\x1b[0;32m',
66
- yellow: '\x1b[0;33m',
67
- blue: '\x1b[0;34m',
68
- purple: '\x1b[0;35m',
69
- cyan: '\x1b[0;36m',
70
- brightRed: '\x1b[1;31m',
71
- brightGreen: '\x1b[1;32m',
72
- brightYellow: '\x1b[1;33m',
73
- brightBlue: '\x1b[1;34m',
74
- brightPurple: '\x1b[1;35m',
75
- brightCyan: '\x1b[1;36m',
76
- brightWhite: '\x1b[1;37m',
77
- };
78
-
79
- // Safe execSync with strict timeout (returns empty string on failure)
80
- function safeExec(cmd, timeoutMs = 2000) {
81
- try {
82
- return execSync(cmd, {
83
- encoding: 'utf-8',
84
- timeout: timeoutMs,
85
- stdio: ['pipe', 'pipe', 'pipe'],
86
- }).trim();
87
- } catch {
88
- return '';
89
- }
90
- }
91
-
92
- // Safe JSON file reader (returns null on failure)
93
- function readJSON(filePath) {
94
- try {
95
- if (fs.existsSync(filePath)) {
96
- return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
97
- }
98
- } catch { /* ignore */ }
99
- return null;
100
- }
101
-
102
- // Safe file stat (returns null on failure)
103
- function safeStat(filePath) {
104
- try {
105
- return fs.statSync(filePath);
106
- } catch { /* ignore */ }
107
- return null;
108
- }
109
-
110
- // Shared settings cache โ€” read once, used by multiple functions
111
- let _settingsCache = undefined;
112
- function getSettings() {
113
- if (_settingsCache !== undefined) return _settingsCache;
114
- _settingsCache = readJSON(path.join(CWD, '.claude', 'settings.json'))
115
- || readJSON(path.join(CWD, '.claude', 'settings.local.json'))
116
- || null;
117
- return _settingsCache;
118
- }
119
-
120
- // Project identifier โ€” github owner/repo from git remote, else folder name
121
- function getProjectName() {
122
- try {
123
- const remote = safeExec('git remote get-url origin 2>/dev/null', 2000).trim();
124
- if (remote) {
125
- const m = remote.match(/[/:]([\w.-]+)\/([\w.-]+?)(?:\.git)?$/);
126
- if (m) return `${m[1]}/${m[2]}`;
127
- }
128
- } catch { /* ignore */ }
129
- return path.basename(CWD);
130
- }
131
-
132
- // โ”€โ”€โ”€ Data Collection (all pure-Node.js or single-exec) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
133
-
134
- // Get all git info in ONE shell call
135
- function getGitInfo() {
136
- const result = {
137
- name: 'user', gitBranch: '', modified: 0, untracked: 0,
138
- staged: 0, ahead: 0, behind: 0,
139
- };
140
-
141
- // Single shell: get user.name, branch, porcelain status, and upstream diff
142
- const script = [
143
- 'git config user.name 2>/dev/null || echo user',
144
- 'echo "---SEP---"',
145
- 'git branch --show-current 2>/dev/null',
146
- 'echo "---SEP---"',
147
- 'git status --porcelain 2>/dev/null',
148
- 'echo "---SEP---"',
149
- 'git rev-list --left-right --count HEAD...@{upstream} 2>/dev/null || echo "0 0"',
150
- ].join('; ');
151
-
152
- const raw = safeExec(`sh -c '${script}'`, 3000);
153
- if (!raw) return result;
154
-
155
- const parts = raw.split('---SEP---').map(s => s.trim());
156
- if (parts.length >= 4) {
157
- result.name = parts[0] || 'user';
158
- result.gitBranch = parts[1] || '';
159
-
160
- // Parse porcelain status
161
- if (parts[2]) {
162
- for (const line of parts[2].split('\n')) {
163
- if (!line || line.length < 2) continue;
164
- const x = line[0], y = line[1];
165
- if (x === '?' && y === '?') { result.untracked++; continue; }
166
- if (x !== ' ' && x !== '?') result.staged++;
167
- if (y !== ' ' && y !== '?') result.modified++;
168
- }
169
- }
170
-
171
- // Parse ahead/behind
172
- const ab = (parts[3] || '0 0').split(/\s+/);
173
- result.ahead = parseInt(ab[0]) || 0;
174
- result.behind = parseInt(ab[1]) || 0;
175
- }
176
-
177
- return result;
178
- }
179
-
180
- // Normalise a model ID string to a short display name
181
- function modelLabel(id) {
182
- if (id.includes('opus')) return 'Opus 4.6';
183
- if (id.includes('sonnet')) return 'Sonnet 4.6';
184
- if (id.includes('haiku')) return 'Haiku 4.5';
185
- return id.split('-').slice(1, 3).join(' ');
186
- }
187
-
188
- // Read the last assistant model from the most recent session JSONL.
189
- // Claude Code writes each assistant turn to ~/.claude/projects/<escaped-cwd>/<uuid>.jsonl
190
- // with a "message.model" field โ€” this is the most accurate live source and
191
- // correctly reflects /model session overrides.
192
- function getModelFromSessionJSONL() {
193
- try {
194
- // Escape CWD the same way Claude Code does: replace '/' with '-'
195
- const escaped = CWD.replace(/\//g, '-');
196
- const projectsDir = path.join(os.homedir(), '.claude', 'projects', escaped);
197
- if (!fs.existsSync(projectsDir)) return null;
198
-
199
- // Most recently modified JSONL = current (or latest) session
200
- const files = fs.readdirSync(projectsDir)
201
- .filter(f => f.endsWith('.jsonl'))
202
- .map(f => ({ f, mt: (() => { try { return fs.statSync(path.join(projectsDir, f)).mtimeMs; } catch { return 0; } })() }))
203
- .sort((a, b) => b.mt - a.mt);
204
- if (files.length === 0) return null;
205
-
206
- const sessionFile = path.join(projectsDir, files[0].f);
207
- // Guard against OOM: skip session files larger than 10 MB
208
- try { if (fs.statSync(sessionFile).size > 10 * 1024 * 1024) return null; } catch { return null; }
209
- const raw = fs.readFileSync(sessionFile, 'utf-8');
210
- const lines = raw.split('\n').filter(Boolean);
211
-
212
- // Scan from the end to find the most recent assistant model
213
- for (let i = lines.length - 1; i >= 0; i--) {
214
- try {
215
- const entry = JSON.parse(lines[i]);
216
- const model = entry?.message?.model || entry?.model;
217
- if (model && typeof model === 'string' && model.startsWith('claude')) {
218
- return model;
219
- }
220
- } catch { /* skip malformed line */ }
221
- }
222
- } catch { /* ignore */ }
223
- return null;
224
- }
225
-
226
- // Detect model name from Claude config (pure file reads, no exec)
227
- function getModelName() {
228
- // PRIMARY: scan the live session JSONL โ€” reflects /model overrides in real time
229
- const sessionModel = getModelFromSessionJSONL();
230
- if (sessionModel) return modelLabel(sessionModel);
231
-
232
- // SECONDARY: ~/.claude.json lastModelUsage for this exact project path
233
- // (longest-prefix match to avoid short paths like /Users matching first)
234
- try {
235
- const claudeConfig = readJSON(path.join(os.homedir(), '.claude.json'));
236
- if (claudeConfig?.projects) {
237
- let bestMatch = null;
238
- let bestLen = -1;
239
- for (const [projectPath, projectConfig] of Object.entries(claudeConfig.projects)) {
240
- if (CWD === projectPath || CWD.startsWith(projectPath + '/')) {
241
- if (projectPath.length > bestLen) {
242
- bestLen = projectPath.length;
243
- bestMatch = projectConfig;
244
- }
245
- }
246
- }
247
- if (bestMatch?.lastModelUsage) {
248
- const usage = bestMatch.lastModelUsage;
249
- const ids = Object.keys(usage);
250
- if (ids.length > 0) {
251
- let bestId = ids[ids.length - 1];
252
- let bestTokens = -1;
253
- for (const id of ids) {
254
- const e = usage[id] || {};
255
- const tokens = (e.inputTokens || 0) + (e.outputTokens || 0);
256
- if (tokens > bestTokens) { bestTokens = tokens; bestId = id; }
257
- }
258
- return modelLabel(bestId);
259
- }
260
- }
261
- }
262
- } catch { /* ignore */ }
263
-
264
- // TERTIARY: settings.json model field (configured default, not live session).
265
- const settings = getSettings();
266
- if (settings?.model) return modelLabel(settings.model);
267
-
268
- // QUATERNARY: read ANTHROPIC_MODEL or CLAUDE_MODEL env var (set by the CLI at launch)
269
- const envModel = process.env.ANTHROPIC_MODEL || process.env.CLAUDE_MODEL || process.env.MODEL;
270
- if (envModel && envModel.startsWith('claude')) return modelLabel(envModel);
271
-
272
- // QUINARY: current model from the model ID in the env injected by Claude Code itself
273
- const claudeModel = process.env.CLAUDE_CODE_MODEL;
274
- if (claudeModel) return modelLabel(claudeModel);
275
-
276
- return 'Sonnet 4.6'; // known current default rather than the generic "Claude Code"
277
- }
278
-
279
- // Get learning stats from memory database (pure stat calls)
280
- function getLearningStats() {
281
- const memoryPaths = [
282
- path.join(CWD, '.swarm', 'memory.db'),
283
- path.join(CWD, '.monomind', 'memory.db'),
284
- path.join(CWD, '.claude', 'memory.db'),
285
- path.join(CWD, 'data', 'memory.db'),
286
- path.join(CWD, '.lancedb', 'memory.db'),
287
- ];
288
-
289
- for (const dbPath of memoryPaths) {
290
- const stat = safeStat(dbPath);
291
- if (stat) {
292
- const sizeKB = stat.size / 1024;
293
- const patterns = Math.floor(sizeKB / 2);
294
- return {
295
- patterns,
296
- sessions: Math.max(1, Math.floor(patterns / 10)),
297
- };
298
- }
299
- }
300
-
301
- // Check session files count
302
- let sessions = 0;
303
- try {
304
- const sessDir = path.join(CWD, '.claude', 'sessions');
305
- if (fs.existsSync(sessDir)) {
306
- sessions = fs.readdirSync(sessDir).filter(f => f.endsWith('.json')).length;
307
- }
308
- } catch { /* ignore */ }
309
-
310
- return { patterns: 0, sessions };
311
- }
312
-
313
- // progress from metrics files (pure file reads)
314
- function getv1Progress() {
315
- const learning = getLearningStats();
316
- const totalDomains = 5;
317
-
318
- const dddData = readJSON(path.join(CWD, '.monomind', 'metrics', 'ddd-progress.json'));
319
- let dddProgress = dddData?.progress || 0;
320
- let domainsCompleted = Math.min(5, Math.floor(dddProgress / 20));
321
-
322
- if (dddProgress === 0 && learning.patterns > 0) {
323
- if (learning.patterns >= 500) domainsCompleted = 5;
324
- else if (learning.patterns >= 200) domainsCompleted = 4;
325
- else if (learning.patterns >= 100) domainsCompleted = 3;
326
- else if (learning.patterns >= 50) domainsCompleted = 2;
327
- else if (learning.patterns >= 10) domainsCompleted = 1;
328
- dddProgress = Math.floor((domainsCompleted / totalDomains) * 100);
329
- }
330
-
331
- return {
332
- domainsCompleted, totalDomains, dddProgress,
333
- patternsLearned: learning.patterns,
334
- sessionsCompleted: learning.sessions,
335
- };
336
- }
337
-
338
- // Security status (pure file reads)
339
- function getSecurityStatus() {
340
- const auditData = readJSON(path.join(CWD, '.monomind', 'security', 'audit-status.json'));
341
- if (auditData) {
342
- const auditDate = auditData.lastAudit || auditData.lastScan;
343
- if (!auditDate) {
344
- // No audit has ever run โ€” show as pending, not stale
345
- return { status: 'PENDING', cvesFixed: 0, totalCves: 0 };
346
- }
347
- const auditAge = Date.now() - new Date(auditDate).getTime();
348
- const isStale = auditAge > 7 * 24 * 60 * 60 * 1000;
349
- return {
350
- status: isStale ? 'STALE' : (auditData.status || 'PENDING'),
351
- cvesFixed: auditData.cvesFixed || 0,
352
- totalCves: auditData.totalCves || 0,
353
- };
354
- }
355
-
356
- let scanCount = 0;
357
- try {
358
- const scanDir = path.join(CWD, '.claude', 'security-scans');
359
- if (fs.existsSync(scanDir)) {
360
- scanCount = fs.readdirSync(scanDir).filter(f => f.endsWith('.json')).length;
361
- }
362
- } catch { /* ignore */ }
363
-
364
- return {
365
- status: scanCount > 0 ? 'SCANNED' : 'NONE',
366
- cvesFixed: 0,
367
- totalCves: 0,
368
- };
369
- }
370
-
371
- // Swarm status (pure file reads, NO ps aux)
372
- function getSwarmStatus() {
373
- const staleThresholdMs = 5 * 60 * 1000;
374
- const agentRegTtlMs = 30 * 60 * 1000; // registration files expire after 30 min
375
- const now = Date.now();
376
-
377
- // PRIMARY: count live registration files written by SubagentStart hook
378
- // Each file = one active sub-agent. Stale files (>30 min) are ignored.
379
- const regDir = path.join(CWD, '.monomind', 'agents', 'registrations');
380
- if (fs.existsSync(regDir)) {
381
- try {
382
- const files = fs.readdirSync(regDir).filter(f => f.endsWith('.json'));
383
- const liveCount = files.filter(f => {
384
- try {
385
- return (now - fs.statSync(path.join(regDir, f)).mtimeMs) < agentRegTtlMs;
386
- } catch { return false; }
387
- }).length;
388
- if (liveCount > 0) {
389
- return {
390
- activeAgents: liveCount,
391
- maxAgents: CONFIG.maxAgents,
392
- coordinationActive: true,
393
- };
394
- }
395
- } catch { /* fall through */ }
396
- }
397
-
398
- // SECONDARY: swarm-state.json written by MCP swarm_init โ€” trust if fresh
399
- const swarmStatePath = path.join(CWD, '.monomind', 'swarm', 'swarm-state.json');
400
- const swarmState = readJSON(swarmStatePath);
401
- if (swarmState) {
402
- const updatedAt = swarmState.updatedAt || swarmState.startedAt;
403
- const age = updatedAt ? now - new Date(updatedAt).getTime() : Infinity;
404
- if (age < staleThresholdMs) {
405
- return {
406
- activeAgents: swarmState.agents?.length || swarmState.agentCount || 0,
407
- maxAgents: swarmState.maxAgents || CONFIG.maxAgents,
408
- coordinationActive: true,
409
- };
410
- }
411
- }
412
-
413
- // TERTIARY: swarm-activity.json refreshed by post-task hook
414
- const activityData = readJSON(path.join(CWD, '.monomind', 'metrics', 'swarm-activity.json'));
415
- if (activityData?.swarm) {
416
- const updatedAt = activityData.timestamp || activityData.swarm.timestamp;
417
- const age = updatedAt ? now - new Date(updatedAt).getTime() : Infinity;
418
- if (age < staleThresholdMs) {
419
- return {
420
- activeAgents: activityData.swarm.agent_count || 0,
421
- maxAgents: CONFIG.maxAgents,
422
- coordinationActive: activityData.swarm.coordination_active || activityData.swarm.active || false,
423
- };
424
- }
425
- }
426
-
427
- return { activeAgents: 0, maxAgents: CONFIG.maxAgents, coordinationActive: false };
428
- }
429
-
430
- // System metrics (uses process.memoryUsage() โ€” no shell spawn)
431
- function getSystemMetrics() {
432
- const memoryMB = Math.floor(process.memoryUsage().heapUsed / 1024 / 1024);
433
- const learning = getLearningStats();
434
- const lancedb = getLanceDBStats();
435
-
436
- // Intelligence from learning.json
437
- const learningData = readJSON(path.join(CWD, '.monomind', 'metrics', 'learning.json'));
438
- let intelligencePct = 0;
439
- let contextPct = 0;
440
-
441
- if (learningData?.intelligence?.score !== undefined) {
442
- intelligencePct = Math.min(100, Math.floor(learningData.intelligence.score));
443
- } else {
444
- // Use actual vector/entry counts โ€” 2000 entries = 100%
445
- const fromPatterns = learning.patterns > 0 ? Math.min(100, Math.floor(learning.patterns / 20)) : 0;
446
- const fromVectors = lancedb.vectorCount > 0 ? Math.min(100, Math.floor(lancedb.vectorCount / 20)) : 0;
447
- intelligencePct = Math.max(fromPatterns, fromVectors);
448
- }
449
-
450
- // Maturity fallback (pure fs checks, no git exec)
451
- if (intelligencePct === 0) {
452
- let score = 0;
453
- if (fs.existsSync(path.join(CWD, '.claude'))) score += 15;
454
- const srcDirs = ['src', 'lib', 'app', 'packages', 'v1'];
455
- for (const d of srcDirs) { if (fs.existsSync(path.join(CWD, d))) { score += 15; break; } }
456
- const testDirs = ['tests', 'test', '__tests__', 'spec'];
457
- for (const d of testDirs) { if (fs.existsSync(path.join(CWD, d))) { score += 10; break; } }
458
- const cfgFiles = ['package.json', 'tsconfig.json', 'pyproject.toml', 'Cargo.toml', 'go.mod'];
459
- for (const f of cfgFiles) { if (fs.existsSync(path.join(CWD, f))) { score += 5; break; } }
460
- intelligencePct = Math.min(100, score);
461
- }
462
-
463
- if (learningData?.sessions?.total !== undefined) {
464
- contextPct = Math.min(100, learningData.sessions.total * 5);
465
- } else {
466
- contextPct = Math.min(100, Math.floor(learning.sessions * 5));
467
- }
468
-
469
- // Sub-agents from file metrics (no ps aux)
470
- let subAgents = 0;
471
- const activityData = readJSON(path.join(CWD, '.monomind', 'metrics', 'swarm-activity.json'));
472
- if (activityData?.processes?.estimated_agents) {
473
- subAgents = activityData.processes.estimated_agents;
474
- }
475
-
476
- return { memoryMB, contextPct, intelligencePct, subAgents };
477
- }
478
-
479
- // ADR status (count files only โ€” don't read contents)
480
- function getADRStatus() {
481
- // Count actual ADR files first โ€” compliance JSON may be stale
482
- const adrPaths = [
483
- path.join(CWD, 'packages', 'implementation', 'adrs'),
484
- path.join(CWD, 'docs', 'adrs'),
485
- path.join(CWD, '.monomind', 'adrs'),
486
- ];
487
-
488
- for (const adrPath of adrPaths) {
489
- try {
490
- if (fs.existsSync(adrPath)) {
491
- const files = fs.readdirSync(adrPath).filter(f =>
492
- f.endsWith('.md') && (f.startsWith('ADR-') || f.startsWith('adr-') || /^\d{4}-/.test(f))
493
- );
494
- // Report actual count โ€” don't guess compliance without reading files
495
- return { count: files.length, implemented: files.length, compliance: 0 };
496
- }
497
- } catch { /* ignore */ }
498
- }
499
-
500
- return { count: 0, implemented: 0, compliance: 0 };
501
- }
502
-
503
- // Hooks status (shared settings cache)
504
- function getHooksStatus() {
505
- let enabled = 0;
506
- let total = 0;
507
- const settings = getSettings();
508
-
509
- if (settings?.hooks) {
510
- for (const category of Object.keys(settings.hooks)) {
511
- const matchers = settings.hooks[category];
512
- if (!Array.isArray(matchers)) continue;
513
- for (const matcher of matchers) {
514
- const hooks = matcher?.hooks;
515
- if (Array.isArray(hooks)) {
516
- total += hooks.length;
517
- enabled += hooks.length;
518
- }
519
- }
520
- }
521
- }
522
-
523
- try {
524
- const hooksDir = path.join(CWD, '.claude', 'hooks');
525
- if (fs.existsSync(hooksDir)) {
526
- const hookFiles = fs.readdirSync(hooksDir).filter(f => f.endsWith('.js') || f.endsWith('.sh')).length;
527
- total = Math.max(total, hookFiles);
528
- enabled = Math.max(enabled, hookFiles);
529
- }
530
- } catch { /* ignore */ }
531
-
532
- return { enabled, total };
533
- }
534
-
535
- // Active agent โ€” reads last routing result persisted by hook-handler
536
- function getActiveAgent() {
537
- const routeFile = path.join(CWD, '.monomind', 'last-route.json');
538
- try {
539
- if (!fs.existsSync(routeFile)) return null;
540
- const data = JSON.parse(fs.readFileSync(routeFile, 'utf-8'));
541
- if (!data || !data.agent) return null;
542
-
543
- // Stale after 30 minutes (session likely changed)
544
- const age = Date.now() - new Date(data.updatedAt || 0).getTime();
545
- if (age > 30 * 60 * 1000) return null;
546
-
547
- // Prefer display name if set (from load-agent), else format the slug
548
- const displayName = data.name || data.agent
549
- .replace(/-/g, ' ')
550
- .replace(/\b\w/g, c => c.toUpperCase());
551
-
552
- return {
553
- slug: data.agent,
554
- name: displayName,
555
- category: data.category || null,
556
- confidence: data.confidence || 0,
557
- activated: data.activated || false, // true = manually loaded extras agent
558
- };
559
- } catch { return null; }
560
- }
561
-
562
- // LanceDB stats โ€” count real entries, not file-size heuristics
563
- function getLanceDBStats() {
564
- let vectorCount = 0;
565
- let dbSizeKB = 0;
566
- let namespaces = 0;
567
- let hasHnsw = false;
568
-
569
- // 1. Count real entries from auto-memory-store.json
570
- const storePath = path.join(CWD, '.monomind', 'data', 'auto-memory-store.json');
571
- const storeStat = safeStat(storePath);
572
- if (storeStat) {
573
- dbSizeKB += storeStat.size / 1024;
574
- try {
575
- const store = JSON.parse(fs.readFileSync(storePath, 'utf-8'));
576
- if (Array.isArray(store)) vectorCount += store.length;
577
- else if (store?.entries) vectorCount += store.entries.length;
578
- } catch { /* fall back to size estimate */ }
579
- }
580
-
581
- // 2. Count entries from ranked-context.json
582
- const rankedPath = path.join(CWD, '.monomind', 'data', 'ranked-context.json');
583
- try {
584
- const ranked = readJSON(rankedPath);
585
- if (ranked?.entries?.length > vectorCount) vectorCount = ranked.entries.length;
586
- } catch { /* ignore */ }
587
-
588
- // 3. Add DB file sizes
589
- const dbFiles = [
590
- path.join(CWD, 'data', 'memory.db'),
591
- path.join(CWD, '.monomind', 'memory.db'),
592
- path.join(CWD, '.swarm', 'memory.db'),
593
- ];
594
- for (const f of dbFiles) {
595
- const stat = safeStat(f);
596
- if (stat) {
597
- dbSizeKB += stat.size / 1024;
598
- namespaces++;
599
- }
600
- }
601
-
602
- // 4. Check for graph data
603
- const graphPath = path.join(CWD, 'data', 'memory.graph');
604
- const graphStat = safeStat(graphPath);
605
- if (graphStat) dbSizeKB += graphStat.size / 1024;
606
-
607
- // 5. HNSW index
608
- const hnswPaths = [
609
- path.join(CWD, '.swarm', 'hnsw.index'),
610
- path.join(CWD, '.monomind', 'hnsw.index'),
611
- ];
612
- for (const p of hnswPaths) {
613
- const stat = safeStat(p);
614
- if (stat) {
615
- hasHnsw = true;
616
- break;
617
- }
618
- }
619
-
620
- // HNSW is available if memory package is present
621
- if (!hasHnsw) {
622
- const memPkgPaths = [
623
- path.join(CWD, 'packages', '@monoes', 'memory', 'dist'),
624
- path.join(CWD, 'node_modules', '@monoes', 'memory'),
625
- ];
626
- for (const p of memPkgPaths) {
627
- if (fs.existsSync(p)) { hasHnsw = true; break; }
628
- }
629
- }
630
-
631
- return { vectorCount, dbSizeKB: Math.floor(dbSizeKB), namespaces, hasHnsw };
632
- }
633
-
634
- // Test stats (count files only โ€” NO reading file contents)
635
- function getTestStats() {
636
- let testFiles = 0;
637
-
638
- function countTestFiles(dir, depth = 0) {
639
- if (depth > 6) return;
640
- try {
641
- if (!fs.existsSync(dir)) return;
642
- const entries = fs.readdirSync(dir, { withFileTypes: true });
643
- for (const entry of entries) {
644
- if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
645
- countTestFiles(path.join(dir, entry.name), depth + 1);
646
- } else if (entry.isFile()) {
647
- const n = entry.name;
648
- if (n.includes('.test.') || n.includes('.spec.') || n.includes('_test.') || n.includes('_spec.')) {
649
- testFiles++;
650
- }
651
- }
652
- }
653
- } catch { /* ignore */ }
654
- }
655
-
656
- // Scan all source directories
657
- for (const d of ['tests', 'test', '__tests__', 'src', 'v1']) {
658
- countTestFiles(path.join(CWD, d));
659
- }
660
-
661
- // Estimate ~4 test cases per file (avoids reading every file)
662
- return { testFiles, testCases: testFiles * 4 };
663
- }
664
-
665
- // Integration status (shared settings + file checks)
666
- function getIntegrationStatus() {
667
- const mcpServers = { total: 0, enabled: 0 };
668
- const settings = getSettings();
669
-
670
- if (settings?.mcpServers && typeof settings.mcpServers === 'object') {
671
- const servers = Object.keys(settings.mcpServers);
672
- mcpServers.total = servers.length;
673
- mcpServers.enabled = settings.enabledMcpjsonServers
674
- ? settings.enabledMcpjsonServers.filter(s => servers.includes(s)).length
675
- : servers.length;
676
- }
677
-
678
- // Fallback: .mcp.json
679
- if (mcpServers.total === 0) {
680
- const mcpConfig = readJSON(path.join(CWD, '.mcp.json'))
681
- || readJSON(path.join(os.homedir(), '.claude', 'mcp.json'));
682
- if (mcpConfig?.mcpServers) {
683
- const s = Object.keys(mcpConfig.mcpServers);
684
- mcpServers.total = s.length;
685
- mcpServers.enabled = s.length;
686
- }
687
- }
688
-
689
- const hasDatabase = ['.swarm/memory.db', '.monomind/memory.db', 'data/memory.db']
690
- .some(p => fs.existsSync(path.join(CWD, p)));
691
- const hasApi = !!(process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY);
692
-
693
- return { mcpServers, hasDatabase, hasApi };
694
- }
695
-
696
- // Session stats (pure file reads)
697
- function getSessionStats() {
698
- for (const p of ['.monomind/session.json', '.claude/session.json']) {
699
- const data = readJSON(path.join(CWD, p));
700
- if (data?.startTime) {
701
- const diffMs = Date.now() - new Date(data.startTime).getTime();
702
- const mins = Math.floor(diffMs / 60000);
703
- const duration = mins < 60 ? `${mins}m` : `${Math.floor(mins / 60)}h${mins % 60}m`;
704
- return { duration };
705
- }
706
- }
707
- return { duration: '' };
708
- }
709
-
710
- // โ”€โ”€โ”€ Extended 256-color palette โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
711
- const x = {
712
- // Backgrounds (used sparingly for labels)
713
- bgPurple: '\x1b[48;5;55m',
714
- bgTeal: '\x1b[48;5;23m',
715
- bgReset: '\x1b[49m',
716
- // Foregrounds
717
- purple: '\x1b[38;5;141m', // soft lavender-purple (brand)
718
- violet: '\x1b[38;5;99m', // deeper purple
719
- teal: '\x1b[38;5;51m', // bright teal
720
- mint: '\x1b[38;5;120m', // soft green
721
- gold: '\x1b[38;5;220m', // warm gold
722
- orange: '\x1b[38;5;208m', // alert orange
723
- coral: '\x1b[38;5;203m', // error red-pink
724
- sky: '\x1b[38;5;117m', // soft blue
725
- rose: '\x1b[38;5;218m', // warm pink
726
- slate: '\x1b[38;5;245m', // neutral grey
727
- white: '\x1b[38;5;255m', // bright white
728
- green: '\x1b[38;5;82m', // vivid green
729
- red: '\x1b[38;5;196m', // vivid red
730
- yellow: '\x1b[38;5;226m', // vivid yellow
731
- // Shared
732
- bold: '\x1b[1m',
733
- dim: '\x1b[2m',
734
- reset: '\x1b[0m',
735
- };
736
-
737
- // โ”€โ”€ Helpers โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
738
-
739
- // Block progress bar: โ–ฐโ–ฐโ–ฐโ–ฑโ–ฑ (5 blocks)
740
- function blockBar(current, total, width = 5) {
741
- const filled = Math.min(width, Math.round((current / Math.max(total, 1)) * width));
742
- return '\u25B0'.repeat(filled) + `${x.slate}\u25B1${x.reset}`.repeat(width - filled);
743
- }
744
-
745
- // Health dot: โ— colored by status
746
- function dot(ok) {
747
- if (ok === 'good') return `${x.green}โ—${x.reset}`;
748
- if (ok === 'warn') return `${x.gold}โ—${x.reset}`;
749
- if (ok === 'error') return `${x.coral}โ—${x.reset}`;
750
- return `${x.slate}โ—${x.reset}`; // 'none'
751
- }
752
-
753
- // Pill badge: [ LABEL ] with background
754
- function badge(label, color) {
755
- return `${color}[${label}]${x.reset}`;
756
- }
757
-
758
- // Divider character
759
- const DIV = `${x.slate}โ”‚${x.reset}`;
760
- const SEP = `${x.slate}โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€${x.reset}`;
761
-
762
- // Pct โ†’ color
763
- function pctColor(pct) {
764
- if (pct >= 75) return x.green;
765
- if (pct >= 40) return x.gold;
766
- if (pct > 0) return x.orange;
767
- return x.slate;
768
- }
769
-
770
- // Security status โ†’ label + color
771
- function secBadge(status) {
772
- if (status === 'CLEAN') return { label: 'โœ” CLEAN', col: x.green };
773
- if (status === 'STALE') return { label: 'โŸณ STALE', col: x.gold };
774
- if (status === 'IN_PROGRESS') return { label: 'โŸณ RUNNING', col: x.sky };
775
- if (status === 'SCANNED') return { label: 'โœ” SCANNED', col: x.mint };
776
- if (status === 'PENDING') return { label: 'โธ PENDING', col: x.gold };
777
- return { label: 'โœ– NONE', col: x.slate };
778
- }
779
-
780
- // โ”€โ”€ Knowledge & trigger stats (Tasks 28 + 32) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
781
- function getKnowledgeStats() {
782
- const chunksPath = path.join(CWD, '.monomind', 'knowledge', 'chunks.jsonl');
783
- const skillsPath = path.join(CWD, '.monomind', 'skills.jsonl');
784
- let chunks = 0, skills = 0;
785
- try {
786
- if (fs.existsSync(chunksPath)) {
787
- chunks = fs.readFileSync(chunksPath, 'utf-8').split('\n').filter(Boolean).length;
788
- }
789
- } catch { /* ignore */ }
790
- try {
791
- if (fs.existsSync(skillsPath)) {
792
- skills = fs.readFileSync(skillsPath, 'utf-8').split('\n').filter(Boolean).length;
793
- }
794
- } catch { /* ignore */ }
795
- return { chunks, skills };
796
- }
797
-
798
- function getTriggerStats() {
799
- const indexPath = path.join(CWD, '.monomind', 'trigger-index.json');
800
- try {
801
- if (!fs.existsSync(indexPath)) return { triggers: 0, agents: 0 };
802
- const raw = JSON.parse(fs.readFileSync(indexPath, 'utf-8'));
803
- const idx = raw.index || raw;
804
- const triggers = Object.keys(idx).length;
805
- const agents = Object.values(idx).flat().length;
806
- return { triggers, agents };
807
- } catch { return { triggers: 0, agents: 0 }; }
808
- }
809
-
810
- // Hook latency โ€” surface slow per-prompt hooks in the statusline.
811
- function getHookLatency() {
812
- const p = path.join(CWD, '.monomind', 'metrics', 'hook-latency.json');
813
- try {
814
- if (!fs.existsSync(p)) return null;
815
- const d = JSON.parse(fs.readFileSync(p, 'utf-8'));
816
- const perPrompt = ['route'];
817
- let totalMs = 0; let count = 0;
818
- for (const h of perPrompt) {
819
- if (d[h] && d[h].mean) { totalMs += d[h].mean; count++; }
820
- }
821
- if (count === 0) return null;
822
- let slowest = null;
823
- for (const k of Object.keys(d)) {
824
- if (k === 'lastUpdated' || !d[k] || typeof d[k] !== 'object') continue;
825
- if (!slowest || d[k].mean > slowest.mean) slowest = { name: k, mean: d[k].mean };
826
- }
827
- return { perPromptMs: totalMs, slowest: slowest };
828
- } catch { return null; }
829
- }
830
-
831
- // Graph usage telemetry โ€” counts ALL graph wins (MCP calls + silent assists)
832
- // vs greps that got no graph help.
833
- function getGraphUsage() {
834
- const usagePath = path.join(CWD, '.monomind', 'metrics', 'graph-usage.json');
835
- try {
836
- if (!fs.existsSync(usagePath)) return null;
837
- const d = JSON.parse(fs.readFileSync(usagePath, 'utf-8'));
838
- const graphWins = (d.monograph_call || 0) + (d.preresolve_hit || 0)
839
- + (d.graph_assist_search || 0) + (d.graph_assist_neighbors || 0);
840
- const searches = (d.grep_call || 0) + (d.glob_call || 0)
841
- + (d.bash_grep_call || 0) + (d.bash_find_call || 0);
842
- const total = graphWins + searches + (d.preresolve_miss || 0);
843
- if (total === 0) return null;
844
- return { graphWins: graphWins, searches: searches, pct: Math.round((graphWins / total) * 100), dollarsSaved: d.dollars_saved || 0 };
845
- } catch { return null; }
846
- }
847
-
848
- // Graph freshness โ€” compare last build time vs commits since
849
- function getGraphFreshness() {
850
- const lockPath = path.join(CWD, '.monomind', 'graph', '.rebuild-lock');
851
- const dbPath = path.join(CWD, '.monomind', 'monograph.db');
852
- let buildMs = 0;
853
- try {
854
- const lockStat = safeStat(lockPath);
855
- const dbStat = safeStat(dbPath);
856
- buildMs = Math.max(lockStat?.mtimeMs || 0, dbStat?.mtimeMs || 0);
857
- } catch { /* ignore */ }
858
- if (!buildMs) return { commitsBehind: -1, stale: true, fresh: false };
859
- const buildIso = new Date(buildMs).toISOString();
860
- const out = safeExec(`git rev-list --count --since='${buildIso}' HEAD 2>/dev/null`, 1500);
861
- const commitsBehind = parseInt(out, 10) || 0;
862
- return { commitsBehind, stale: commitsBehind > 5, fresh: commitsBehind === 0 };
863
- }
864
-
865
- // Active loops โ€” scan .monomind/loops/*.json, skip stale (>6h)
866
- function getLoopStatus() {
867
- const loopsDir = path.join(CWD, '.monomind', 'loops');
868
- if (!fs.existsSync(loopsDir)) return { count: 0, loops: [] };
869
- const STALE_MS = 6 * 60 * 60 * 1000;
870
- const now = Date.now();
871
- const loops = [];
872
- try {
873
- const files = fs.readdirSync(loopsDir).filter(f =>
874
- f.endsWith('.json') && !f.includes('-hil') && !f.endsWith('.stop'));
875
- for (const f of files) {
876
- const d = readJSON(path.join(loopsDir, f));
877
- if (!d || !d.command) continue;
878
- const last = d.lastRunAt || d.nextRunAt || d.startedAt || 0;
879
- if (last && (now - last) > STALE_MS) continue;
880
- loops.push({
881
- cmd: String(d.command).replace(/^\//,''),
882
- type: d.type || 'repeat',
883
- rep: d.currentRep || 0,
884
- max: d.maxReps || 0,
885
- status: d.status || 'running',
886
- });
887
- }
888
- } catch { /* ignore */ }
889
- return { count: loops.length, loops };
890
- }
891
-
892
- // HIL pending โ€” count <id>-hil.md files with no human response yet
893
- function getHILPending() {
894
- const loopsDir = path.join(CWD, '.monomind', 'loops');
895
- if (!fs.existsSync(loopsDir)) return { pending: 0 };
896
- let pending = 0;
897
- try {
898
- const files = fs.readdirSync(loopsDir).filter(f => f.endsWith('-hil.md'));
899
- for (const f of files) {
900
- try {
901
- const txt = fs.readFileSync(path.join(loopsDir, f), 'utf-8');
902
- const answered = /^[ \t]*>[ \t]+\S/m.test(txt);
903
- if (!answered) pending++;
904
- } catch { /* ignore */ }
905
- }
906
- } catch { /* ignore */ }
907
- return { pending };
908
- }
909
-
910
- // Active org runs โ€” scan .monomind/orgs/*/runs/*.jsonl for recent activity
911
- // Also checks .git/monomind/orgs/ (git-safe path used by mastermind orgs).
912
- // An org is "active" if it has an events file modified within the last 10 minutes.
913
- function getActiveOrgs() {
914
- // Try git-common-dir path first (mastermind orgs store run files there)
915
- let orgsDir = path.join(CWD, '.monomind', 'orgs');
916
- try {
917
- const gitCommon = safeExec('git rev-parse --git-common-dir 2>/dev/null', 1000);
918
- if (gitCommon) {
919
- const candidate = path.isAbsolute(gitCommon)
920
- ? path.join(gitCommon, 'monomind', 'orgs')
921
- : path.join(CWD, gitCommon, 'monomind', 'orgs');
922
- if (fs.existsSync(candidate)) orgsDir = candidate;
923
- }
924
- } catch { /* use default */ }
925
- if (!fs.existsSync(orgsDir)) return { count: 0, orgs: [] };
926
- const STALE_MS = 10 * 60 * 1000; // 10 min
927
- const now = Date.now();
928
- const active = [];
929
- try {
930
- const orgNames = fs.readdirSync(orgsDir).filter(f => !f.startsWith('.'));
931
- for (const orgName of orgNames.slice(0, 20)) {
932
- const runsDir = path.join(orgsDir, orgName, 'runs');
933
- if (!fs.existsSync(runsDir)) continue;
934
- try {
935
- const files = fs.readdirSync(runsDir).filter(f => f.endsWith('.jsonl'));
936
- if (!files.length) continue;
937
- files.sort();
938
- const latest = files[files.length - 1];
939
- const stat = safeStat(path.join(runsDir, latest));
940
- if (!stat) continue;
941
- const age = now - stat.mtimeMs;
942
- if (age < STALE_MS) {
943
- // Check last event type to determine if still running
944
- let isRunning = true;
945
- try {
946
- const MAX_RUN = 512 * 1024; // 512 KiB
947
- if (stat.size <= MAX_RUN) {
948
- const raw = fs.readFileSync(path.join(runsDir, latest), 'utf-8');
949
- const lines = raw.trim().split('\n').filter(Boolean);
950
- if (lines.length) {
951
- const lastEv = JSON.parse(lines[lines.length - 1]);
952
- if (lastEv.type === 'run:complete' || lastEv.type === 'org:complete') isRunning = false;
953
- }
954
- }
955
- } catch { /* treat as running */ }
956
- active.push({ name: orgName, runId: latest.replace('.jsonl', ''), ageMs: age, running: isRunning });
957
- }
958
- } catch { /* skip */ }
959
- }
960
- } catch { /* ignore */ }
961
- return { count: active.length, orgs: active };
962
- }
963
-
964
- // Monograph knowledge graph stats
965
- // Sources, in priority order:
966
- // 1. .monomind/graph/stats.json โ€” explicit cached stats
967
- // 2. .monomind/monograph.db โ€” live SQLite (read counts via sqlite3)
968
- // 3. .monomind/graph/graph.json โ€” legacy JSON dump
969
- function getGraphifyStats() {
970
- const statsPath = path.join(CWD, '.monomind', 'graph', 'stats.json');
971
- const dbPath = path.join(CWD, '.monomind', 'monograph.db');
972
- const graphPath = path.join(CWD, '.monomind', 'graph', 'graph.json');
973
-
974
- try {
975
- const s = readJSON(statsPath);
976
- if (s && s.nodes !== undefined) return { nodes: s.nodes, edges: s.edges || 0, exists: true };
977
- } catch { /* ignore */ }
978
-
979
- try {
980
- if (fs.existsSync(dbPath)) {
981
- // Use spawnSync array args to prevent shell injection via dbPath (CWD-derived)
982
- const result = spawnSync(
983
- 'sqlite3',
984
- [dbPath, 'SELECT (SELECT COUNT(*) FROM nodes), (SELECT COUNT(*) FROM edges);'],
985
- { encoding: 'utf-8', timeout: 1000 }
986
- );
987
- const out = (result.stdout || '').trim();
988
- if (out) {
989
- const [n, e] = out.split('|').map(v => parseInt(v, 10) || 0);
990
- if (n > 0) return { nodes: n, edges: e, exists: true };
991
- }
992
- }
993
- } catch { /* ignore */ }
994
-
995
- try {
996
- const stat = safeStat(graphPath);
997
- if (stat && stat.size < 10 * 1024 * 1024) {
998
- const g = JSON.parse(fs.readFileSync(graphPath, 'utf-8'));
999
- const nodes = Array.isArray(g.nodes) ? g.nodes.length : 0;
1000
- const edges = (Array.isArray(g.edges) ? g.edges : (Array.isArray(g.links) ? g.links : [])).length;
1001
- return { nodes, edges, exists: true };
1002
- }
1003
- } catch { /* ignore */ }
1004
- return { nodes: 0, edges: 0, exists: false };
1005
- }
1006
-
1007
- function getSIBudget() {
1008
- const SI_LIMIT = 1500;
1009
- const siPath = path.join(CWD, '.agents', 'shared_instructions.md');
1010
- try {
1011
- if (!fs.existsSync(siPath)) return null;
1012
- const len = fs.readFileSync(siPath, 'utf-8').length;
1013
- return { len, pct: Math.round((len / SI_LIMIT) * 100), limit: SI_LIMIT };
1014
- } catch { return null; }
1015
- }
1016
-
1017
- // Token cost summary โ€” reads cached .monomind/metrics/token-summary.json (no JSONL scanning).
1018
- // Returns null if file absent, stale (cachedAt is not today in UTC), or cost is zero.
1019
- // All costs are aggregated across ALL Claude Code projects, not just this repo.
1020
- function getTokenCostSummary() {
1021
- const summaryPath = path.join(CWD, '.monomind', 'metrics', 'token-summary.json');
1022
- const d = readJSON(summaryPath);
1023
- if (!d) return null;
1024
-
1025
- // Staleness guard: only show "today" figures when cachedAt is today (UTC)
1026
- const todayUtc = new Date().toISOString().slice(0, 10); // "YYYY-MM-DD"
1027
- const cachedDate = (d.cachedAt || '').slice(0, 10);
1028
- const isFresh = cachedDate === todayUtc;
1029
-
1030
- const todayCost = isFresh ? (d.todayCost || 0) : 0;
1031
- const monthCost = d.monthCost || 0;
1032
- const todayCalls = isFresh ? (d.todayCalls || 0) : 0;
1033
-
1034
- if (monthCost === 0 && todayCost === 0) return null;
1035
-
1036
- return { todayCost, monthCost, todayCalls, isFresh };
1037
- }
1038
-
1039
- // Format a dollar amount compactly: $0.0023, $1.23, $228.87
1040
- function fmtCost(n) {
1041
- if (n >= 100) return '$' + n.toFixed(0);
1042
- if (n >= 1) return '$' + n.toFixed(2);
1043
- if (n >= 0.01) return '$' + n.toFixed(3);
1044
- return '$' + n.toFixed(4);
1045
- }
1046
-
1047
- // โ”€โ”€ Single-line statusline (compact) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1048
- function generateStatusline() {
1049
- const git = getGitInfo();
1050
- const swarm = getSwarmStatus();
1051
- const system = getSystemMetrics();
1052
- const hooks = getHooksStatus();
1053
- const knowledge = getKnowledgeStats();
1054
- const triggers = getTriggerStats();
1055
- const parts = [];
1056
-
1057
- // Brand + swarm dot
1058
- const swarmDot = swarm.coordinationActive ? `${x.green}โ—${x.reset}` : `${x.slate}โ—‹${x.reset}`;
1059
- parts.push(`${x.bold}${x.purple}โ–Š Monomind${x.reset} ${swarmDot}`);
1060
-
1061
- // Git branch + changes (compact)
1062
- if (git.gitBranch) {
1063
- let b = `${x.sky}โއ ${x.bold}${git.gitBranch}${x.reset}`;
1064
- if (git.staged > 0) b += ` ${x.green}+${git.staged}${x.reset}`;
1065
- if (git.modified > 0) b += ` ${x.gold}~${git.modified}${x.reset}`;
1066
- if (git.ahead > 0) b += ` ${x.green}โ†‘${git.ahead}${x.reset}`;
1067
- if (git.behind > 0) b += ` ${x.coral}โ†“${git.behind}${x.reset}`;
1068
- parts.push(b);
1069
- }
1070
-
1071
- // Active agent
1072
- const activeAgent = getActiveAgent();
1073
- if (activeAgent) {
1074
- const col = activeAgent.activated ? x.green : x.sky;
1075
- const icon = activeAgent.activated ? 'โ—' : 'โ†’';
1076
- parts.push(`${col}${icon} ${x.bold}${activeAgent.name}${x.reset}`);
1077
- }
1078
-
1079
- // Active org runs โ€” high signal for users tracking autonomous orgs
1080
- const orgStatus = getActiveOrgs();
1081
- if (orgStatus.count > 0) {
1082
- const runningOrgs = orgStatus.orgs.filter(o => o.running);
1083
- const doneOrgs = orgStatus.orgs.filter(o => !o.running);
1084
- if (runningOrgs.length > 0) {
1085
- const names = runningOrgs.slice(0, 2).map(o => o.name).join(', ');
1086
- parts.push(`${x.green}๐Ÿ› ${x.bold}${names}${x.reset}${runningOrgs.length > 2 ? ` +${runningOrgs.length - 2}` : ''}`);
1087
- } else if (doneOrgs.length > 0) {
1088
- parts.push(`${x.slate}๐Ÿ› ${doneOrgs[0].name} done${x.reset}`);
1089
- }
1090
- }
1091
-
1092
- // Intelligence โ€” only show when non-trivial (>15%) to avoid misleading 0%/noise
1093
- const ic = pctColor(system.intelligencePct);
1094
- if (system.intelligencePct > 15) {
1095
- parts.push(`${ic}๐Ÿ’ก ${system.intelligencePct}%${x.reset}`);
1096
- }
1097
-
1098
- // Knowledge chunks (Task 28) โ€” show when populated
1099
- if (knowledge.chunks > 0) {
1100
- parts.push(`${x.teal}๐Ÿ“š ${knowledge.chunks}k${x.reset}`);
1101
- }
1102
-
1103
- // Triggers (Task 32) โ€” show when populated
1104
- if (triggers.triggers > 0) {
1105
- parts.push(`${x.mint}๐ŸŽฏ ${triggers.triggers}t${x.reset}`);
1106
- }
1107
-
1108
- // Swarm agents (only when active)
1109
- if (swarm.activeAgents > 0) {
1110
- parts.push(`${x.gold}๐Ÿ ${swarm.activeAgents}/${swarm.maxAgents}${x.reset}`);
1111
- }
1112
-
1113
- // Hooks
1114
- if (hooks.enabled > 0) {
1115
- parts.push(`${x.mint}โšก ${hooks.enabled}h${x.reset}`);
1116
- }
1117
-
1118
- // Token cost โ€” today's spend across all projects (from cached summary)
1119
- const tokenCost = getTokenCostSummary();
1120
- if (tokenCost) {
1121
- if (tokenCost.isFresh && tokenCost.todayCost > 0) {
1122
- const col = tokenCost.todayCost > 50 ? x.coral : tokenCost.todayCost > 10 ? x.gold : x.mint;
1123
- parts.push(`${col}${fmtCost(tokenCost.todayCost)} today${x.reset}`);
1124
- } else if (tokenCost.monthCost > 0) {
1125
- parts.push(`${x.slate}${fmtCost(tokenCost.monthCost)} mo${x.reset}`);
1126
- }
1127
- }
1128
-
1129
- return parts.join(` ${DIV} `);
1130
- }
1131
-
1132
- // โ”€โ”€ Multi-line dashboard (full mode) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1133
- function generateDashboard() {
1134
- const git = getGitInfo();
1135
- const progress = getv1Progress();
1136
- const security = getSecurityStatus();
1137
- const swarm = getSwarmStatus();
1138
- const system = getSystemMetrics();
1139
- const adrs = getADRStatus();
1140
- const hooks = getHooksStatus();
1141
- const lancedb = getLanceDBStats();
1142
- const tests = getTestStats();
1143
- const session = getSessionStats();
1144
- const integration = getIntegrationStatus();
1145
- const knowledge = getKnowledgeStats();
1146
- const triggers = getTriggerStats();
1147
- const si = getSIBudget();
1148
- const sec = secBadge(security.status);
1149
- const activeAgent = getActiveAgent();
1150
- const lines = [];
1151
-
1152
- // โ”€โ”€ Header: brand + git + model + session โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1153
- const swarmDot = swarm.coordinationActive ? `${x.green}โ— LIVE${x.reset}` : `${x.slate}โ—‹ IDLE${x.reset}`;
1154
- const projName = getProjectName();
1155
- const cwdName = path.basename(CWD);
1156
- let hdr = `${x.bold}${x.purple}โ–Š Monomind ${VERSION}${x.reset} ${swarmDot} ${x.teal}${x.bold}${projName}${x.reset} ${DIV} ${x.dim}โ—Ž ${cwdName}${x.reset} ${DIV} ${x.violet}โฌก ${git.name}${x.reset}`;
1157
-
1158
- if (git.gitBranch) {
1159
- hdr += ` ${DIV} ${x.sky}โއ ${x.bold}${git.gitBranch}${x.reset}`;
1160
- if (git.staged > 0) hdr += ` ${x.green}+${git.staged}${x.reset}`;
1161
- if (git.modified > 0) hdr += ` ${x.gold}~${git.modified} mod${x.reset}`;
1162
- if (git.untracked > 0) hdr += ` ${x.slate}?${git.untracked}${x.reset}`;
1163
- if (git.ahead > 0) hdr += ` ${x.green}โ†‘${git.ahead}${x.reset}`;
1164
- if (git.behind > 0) hdr += ` ${x.coral}โ†“${git.behind}${x.reset}`;
1165
- }
1166
-
1167
- if (session.duration) hdr += ` ${x.dim}โฑ ${session.duration}${x.reset}`;
1168
-
1169
- lines.push(hdr);
1170
- lines.push(SEP);
1171
-
1172
- // โ”€โ”€ Row 1: Active agent + Loop status โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1173
- let agentStr;
1174
- if (activeAgent) {
1175
- const col = activeAgent.activated ? x.green : x.sky;
1176
- const mark = activeAgent.activated ? `${col}${x.bold}โ— ACTIVE${x.reset} ` : '';
1177
- const conf = activeAgent.activated ? '' : ` ${x.slate}${(activeAgent.confidence * 100).toFixed(0)}%${x.reset}`;
1178
- agentStr = `${mark}${col}๐Ÿ‘ค ${x.bold}${activeAgent.name}${x.reset}${conf}`;
1179
- } else {
1180
- agentStr = `${x.slate}๐Ÿ‘ค no agent routed${x.reset}`;
1181
- }
1182
-
1183
- const loopState = getLoopStatus();
1184
- let loopStr;
1185
- if (loopState.count > 0) {
1186
- const parts = loopState.loops.slice(0, 2).map(l => {
1187
- const status = l.status === 'hil:pending'
1188
- ? `${x.coral}โณ HIL${x.reset}`
1189
- : `${x.green}โŸณ${x.reset}`;
1190
- const tag = l.type === 'tillend'
1191
- ? `${x.bold}${l.cmd}${x.reset}${x.slate} run ${l.rep}${x.reset}`
1192
- : `${x.bold}${l.cmd}${x.reset}${x.slate} ${l.rep}/${l.max}${x.reset}`;
1193
- return `${status} ${tag}`;
1194
- });
1195
- loopStr = `${x.gold}๐Ÿ”„${x.reset} ${parts.join(`${x.slate} ยท ${x.reset}`)}`;
1196
- if (loopState.count > 2) loopStr += `${x.slate} +${loopState.count - 2} more${x.reset}`;
1197
- } else {
1198
- loopStr = `${x.slate}๐Ÿ”„ no active loops${x.reset}`;
1199
- }
1200
-
1201
- // Hook latency โ€” surface when slow (>500ms per prompt)
1202
- const lat = getHookLatency();
1203
- let latStr = '';
1204
- if (lat && lat.perPromptMs > 500) {
1205
- latStr = ` ${DIV} ${x.coral}โšก hooks ${lat.perPromptMs}ms${x.reset}`;
1206
- } else if (lat && lat.perPromptMs > 0) {
1207
- latStr = ` ${DIV} ${x.dim}โšก ${lat.perPromptMs}ms${x.reset}`;
1208
- }
1209
-
1210
- lines.push(`${x.purple}๐Ÿค– AGENT${x.reset} ${agentStr} ${DIV} ${loopStr}${latStr}`);
1211
- lines.push(SEP);
1212
-
1213
- // โ”€โ”€ Row 2: Graph freshness + Pending HIL โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1214
- const gf = getGraphifyStats();
1215
- const freshness = getGraphFreshness();
1216
- let graphStr;
1217
- if (gf.exists) {
1218
- const nodesFmt = gf.nodes >= 1000 ? `${(gf.nodes / 1000).toFixed(0)}k` : `${gf.nodes}`;
1219
- const edgesFmt = gf.edges >= 1000 ? `${(gf.edges / 1000).toFixed(0)}k` : `${gf.edges}`;
1220
- const freshTag = freshness.fresh
1221
- ? `${x.green}โ— fresh${x.reset}`
1222
- : freshness.stale
1223
- ? `${x.coral}โ— ${freshness.commitsBehind} commits stale${x.reset}`
1224
- : `${x.gold}โ— ${freshness.commitsBehind} behind${x.reset}`;
1225
- graphStr = `${x.sky}๐Ÿ”— ${x.bold}${nodesFmt}${x.reset}${x.slate} nodes${x.reset} ${x.bold}${edgesFmt}${x.reset}${x.slate} edges${x.reset} ${freshTag}`;
1226
- } else {
1227
- graphStr = `${x.slate}๐Ÿ”— no graph${x.reset}`;
1228
- }
1229
-
1230
- const hil = getHILPending();
1231
- let contextLine = `${x.teal}๐Ÿง  CONTEXT${x.reset} ${graphStr}`;
1232
- if (hil.pending > 0) {
1233
- contextLine += ` ${DIV} ${x.coral}โœจ ${x.bold}${hil.pending}${x.reset}${x.coral} HIL pending${x.reset}`;
1234
- }
1235
-
1236
- // Graph usage ratio + $ saved
1237
- const usage = getGraphUsage();
1238
- if (usage) {
1239
- const col = usage.pct >= 40 ? x.green : usage.pct >= 15 ? x.gold : x.coral;
1240
- const savedCol = usage.dollarsSaved >= 0.10 ? x.green : x.slate;
1241
- contextLine += ` ${DIV} ${col}๐Ÿ“Š graph ${usage.pct}%${x.reset}${x.slate} ยท grep ${100 - usage.pct}%${x.reset} ${savedCol}๐Ÿ’ฐ $${usage.dollarsSaved.toFixed(2)}${x.reset}`;
1242
- }
1243
-
1244
- // Token cost
1245
- const tokenCost = getTokenCostSummary();
1246
- if (tokenCost) {
1247
- if (tokenCost.isFresh && tokenCost.todayCost > 0) {
1248
- const col = tokenCost.todayCost > 50 ? x.coral : tokenCost.todayCost > 10 ? x.gold : x.mint;
1249
- contextLine += ` ${DIV} ${col}${fmtCost(tokenCost.todayCost)} today${x.reset}${x.dim} ยท ${fmtCost(tokenCost.monthCost)} mo${x.reset}`;
1250
- } else if (tokenCost.monthCost > 0) {
1251
- contextLine += ` ${DIV} ${x.slate}${fmtCost(tokenCost.monthCost)} mo${x.reset}`;
1252
- }
1253
- }
1254
-
1255
- lines.push(contextLine);
1256
-
1257
- // โ”€โ”€ Row 3: Active org runs โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1258
- const orgStatus = getActiveOrgs();
1259
- if (orgStatus.count > 0) {
1260
- lines.push(SEP);
1261
- const orgParts = orgStatus.orgs.slice(0, 5).map(o => {
1262
- const ageMin = Math.floor(o.ageMs / 60000);
1263
- const ageFmt = ageMin < 1 ? 'just now' : ageMin < 60 ? `${ageMin}m ago` : `${Math.floor(ageMin / 60)}h ago`;
1264
- const col = o.running ? x.green : x.slate;
1265
- const dot2 = o.running ? `${x.green}โ—${x.reset}` : `${x.slate}โ—Œ${x.reset}`;
1266
- return `${dot2} ${col}${x.bold}${o.name}${x.reset} ${x.dim}${ageFmt}${x.reset}`;
1267
- });
1268
- lines.push(`${x.purple}๐Ÿ› ORGS${x.reset} ${orgParts.join(` ${DIV} `)}`);
1269
- }
1270
-
1271
- return lines.join('\n');
1272
- }
1273
-
1274
- // โ”€โ”€ JSON output โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1275
- function generateJSON() {
1276
- const git = getGitInfo();
1277
- return {
1278
- user: { name: git.name, gitBranch: git.gitBranch, modelName: getModelName() },
1279
- domains: getv1Progress(),
1280
- security: getSecurityStatus(),
1281
- swarm: getSwarmStatus(),
1282
- system: getSystemMetrics(),
1283
- adrs: getADRStatus(),
1284
- hooks: getHooksStatus(),
1285
- lancedb: getLanceDBStats(),
1286
- tests: getTestStats(),
1287
- git: { modified: git.modified, untracked: git.untracked, staged: git.staged, ahead: git.ahead, behind: git.behind },
1288
- tokenCost: getTokenCostSummary(),
1289
- lastUpdated: new Date().toISOString(),
1290
- };
1291
- }
1292
-
1293
- // โ”€โ”€โ”€ Mode state file โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1294
- const MODE_FILE = path.join(CWD, '.monomind', 'statusline-mode.txt');
1295
-
1296
- function readMode() {
1297
- try {
1298
- if (fs.existsSync(MODE_FILE)) {
1299
- return fs.readFileSync(MODE_FILE, 'utf-8').trim();
1300
- }
1301
- } catch { /* ignore */ }
1302
- return 'full'; // default
1303
- }
1304
-
1305
- // โ”€โ”€โ”€ Testability export (when required as a module, not run as CLI) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1306
- if (require.main !== module) {
1307
- module.exports = {
1308
- readJSON, safeStat, modelLabel,
1309
- getSecurityStatus, getSwarmStatus, getADRStatus,
1310
- getHooksStatus, getActiveAgent, getLanceDBStats,
1311
- getLearningStats, getTestStats, getIntegrationStatus,
1312
- generateJSON,
1313
- };
1314
- }
1315
-
1316
- // โ”€โ”€โ”€ Main โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1317
- if (require.main === module && process.argv.includes('--json')) {
1318
- console.log(JSON.stringify(generateJSON(), null, 2));
1319
- } else if (require.main === module && process.argv.includes('--compact')) {
1320
- console.log(JSON.stringify(generateJSON()));
1321
- } else if (require.main === module && process.argv.includes('--single-line')) {
1322
- console.log(generateStatusline());
1323
- } else if (require.main === module && process.argv.includes('--toggle')) {
1324
- // Toggle mode and print the new view
1325
- const current = readMode();
1326
- const next = current === 'compact' ? 'full' : 'compact';
1327
- try {
1328
- fs.mkdirSync(path.dirname(MODE_FILE), { recursive: true });
1329
- fs.writeFileSync(MODE_FILE, next, 'utf-8');
1330
- } catch { /* ignore */ }
1331
- if (next === 'compact') {
1332
- console.log(generateStatusline());
1333
- } else {
1334
- console.log(generateDashboard());
1335
- }
1336
- } else if (require.main === module) {
1337
- // Default: respect mode state file
1338
- const mode = readMode();
1339
- if (mode === 'compact') {
1340
- console.log(generateStatusline());
1341
- } else {
1342
- console.log(generateDashboard());
1343
- }
1344
- }