monomind 1.19.0 โ†’ 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (870) hide show
  1. package/README.md +2 -5
  2. package/package.json +15 -34
  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/skills/github-toolkit/SKILL.md +60 -0
  27. package/packages/@monomind/cli/.claude/skills/hive-mind-advanced/SKILL.md +0 -15
  28. package/packages/@monomind/cli/.claude/skills/hooks-automation/SKILL.md +0 -1
  29. package/packages/@monomind/cli/.claude/skills/mastermind-skills/_protocol.md +1 -1
  30. package/packages/@monomind/cli/.claude/skills/mastermind-skills/build.md +1 -2
  31. package/packages/@monomind/cli/.claude/skills/memory-toolkit/SKILL.md +75 -0
  32. package/packages/@monomind/cli/.claude/skills/specialagent/SKILL.md +2 -4
  33. package/packages/@monomind/cli/.claude/skills/swarm-advanced/SKILL.md +0 -1
  34. package/packages/@monomind/cli/README.md +2 -5
  35. package/packages/@monomind/cli/dist/src/autopilot-state.js +4 -5
  36. package/packages/@monomind/cli/dist/src/browser/dashboard/server.js +69 -1
  37. package/packages/@monomind/cli/dist/src/browser/dashboard/ui.html +214 -1764
  38. package/packages/@monomind/cli/dist/src/capabilities/index.d.ts +0 -2
  39. package/packages/@monomind/cli/dist/src/capabilities/index.js +0 -1
  40. package/packages/@monomind/cli/dist/src/commands/agent-lifecycle.js +2 -6
  41. package/packages/@monomind/cli/dist/src/commands/analyze.d.ts +0 -4
  42. package/packages/@monomind/cli/dist/src/commands/analyze.js +1 -29
  43. package/packages/@monomind/cli/dist/src/commands/completions.js +3 -22
  44. package/packages/@monomind/cli/dist/src/commands/config.js +0 -6
  45. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.d.ts +12 -2
  46. package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +130 -22
  47. package/packages/@monomind/cli/dist/src/commands/doctor.js +6 -5
  48. package/packages/@monomind/cli/dist/src/commands/guidance.d.ts +5 -1
  49. package/packages/@monomind/cli/dist/src/commands/guidance.js +11 -556
  50. package/packages/@monomind/cli/dist/src/commands/hive-mind-comms.js +11 -4
  51. package/packages/@monomind/cli/dist/src/commands/hive-mind.d.ts +4 -4
  52. package/packages/@monomind/cli/dist/src/commands/hive-mind.js +9 -6
  53. package/packages/@monomind/cli/dist/src/commands/hooks-formatting.d.ts +1 -5
  54. package/packages/@monomind/cli/dist/src/commands/hooks-formatting.js +1 -18
  55. package/packages/@monomind/cli/dist/src/commands/hooks-workers.d.ts +1 -1
  56. package/packages/@monomind/cli/dist/src/commands/hooks-workers.js +82 -330
  57. package/packages/@monomind/cli/dist/src/commands/index.d.ts +0 -5
  58. package/packages/@monomind/cli/dist/src/commands/index.js +0 -45
  59. package/packages/@monomind/cli/dist/src/commands/init-wizard.js +1 -1
  60. package/packages/@monomind/cli/dist/src/commands/init.js +4 -24
  61. package/packages/@monomind/cli/dist/src/commands/neural-core.js +11 -11
  62. package/packages/@monomind/cli/dist/src/commands/neural-optimize.js +9 -11
  63. package/packages/@monomind/cli/dist/src/commands/neural-registry.js +10 -10
  64. package/packages/@monomind/cli/dist/src/commands/providers.js +90 -1
  65. package/packages/@monomind/cli/dist/src/commands/search-universal.d.ts +7 -1
  66. package/packages/@monomind/cli/dist/src/commands/search-universal.js +59 -5
  67. package/packages/@monomind/cli/dist/src/commands/security-cve.js +3 -5
  68. package/packages/@monomind/cli/dist/src/commands/session.js +143 -3
  69. package/packages/@monomind/cli/dist/src/commands/start.js +0 -18
  70. package/packages/@monomind/cli/dist/src/commands/swarm.js +112 -65
  71. package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +43 -1
  72. package/packages/@monomind/cli/dist/src/consensus/tally.d.ts +19 -0
  73. package/packages/@monomind/cli/dist/src/consensus/tally.js +34 -0
  74. package/packages/@monomind/cli/dist/src/index.d.ts +3 -2
  75. package/packages/@monomind/cli/dist/src/index.js +9 -12
  76. package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +10 -14
  77. package/packages/@monomind/cli/dist/src/init/executor.js +39 -86
  78. package/packages/@monomind/cli/dist/src/init/settings-generator.js +0 -12
  79. package/packages/@monomind/cli/dist/src/init/statusline-generator.js +62 -0
  80. package/packages/@monomind/cli/dist/src/init/types.d.ts +2 -6
  81. package/packages/@monomind/cli/dist/src/init/types.js +0 -3
  82. package/packages/@monomind/cli/dist/src/knowledge/document-pipeline.js +18 -8
  83. package/packages/@monomind/cli/dist/src/mcp-client.js +0 -2
  84. package/packages/@monomind/cli/dist/src/mcp-server.js +12 -14
  85. package/packages/@monomind/cli/dist/src/mcp-tools/coherence/coherence-check.js +1 -19
  86. package/packages/@monomind/cli/dist/src/mcp-tools/coherence/types.d.ts +3 -2
  87. package/packages/@monomind/cli/dist/src/mcp-tools/coherence/types.js +3 -18
  88. package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +1 -7
  89. package/packages/@monomind/cli/dist/src/mcp-tools/graphify-tools.js +2 -2
  90. package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +7 -17
  91. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -1
  92. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +174 -38
  93. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-advanced.d.ts +18 -0
  94. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-advanced.js +25 -0
  95. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.d.ts +4 -8
  96. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-intelligence.js +33 -482
  97. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.d.ts +1 -0
  98. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-routing.js +51 -43
  99. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-synthesis.d.ts +31 -0
  100. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-synthesis.js +196 -0
  101. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +10 -8
  102. package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +0 -1
  103. package/packages/@monomind/cli/dist/src/mcp-tools/index.js +0 -1
  104. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +20 -29
  105. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.d.ts +6 -0
  106. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +78 -220
  107. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.d.ts +9 -4
  108. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +242 -506
  109. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +103 -0
  110. package/packages/@monomind/cli/dist/src/memory/intelligence.d.ts +2 -1
  111. package/packages/@monomind/cli/dist/src/memory/intelligence.js +56 -43
  112. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +14 -9
  113. package/packages/@monomind/cli/dist/src/memory/memory-read.js +1 -19
  114. package/packages/@monomind/cli/dist/src/suggest.js +1 -7
  115. package/packages/@monomind/cli/dist/src/transfer/store/discovery.d.ts +3 -2
  116. package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +22 -70
  117. package/packages/@monomind/cli/dist/src/update/checker.js +0 -1
  118. package/packages/@monomind/cli/dist/src/utils/cosine-similarity.d.ts +22 -0
  119. package/packages/@monomind/cli/dist/src/utils/cosine-similarity.js +38 -0
  120. package/packages/@monomind/cli/dist/src/utils/input-guards.d.ts +51 -0
  121. package/packages/@monomind/cli/dist/src/utils/input-guards.js +223 -0
  122. package/packages/@monomind/cli/dist/src/utils/json-file.d.ts +33 -0
  123. package/packages/@monomind/cli/dist/src/utils/json-file.js +57 -0
  124. package/packages/@monomind/cli/package.json +9 -6
  125. package/packages/@monomind/cli/scripts/sync-claude-assets.sh +16 -20
  126. package/scripts/generate-agent-avatars.mjs +0 -8
  127. package/.claude/agents/architecture/system-design/arch-system-design.md +0 -54
  128. package/.claude/agents/consensus/crdt-synchronizer.md +0 -977
  129. package/.claude/agents/consensus/quorum-manager.md +0 -803
  130. package/.claude/agents/consensus/security-manager.md +0 -602
  131. package/.claude/agents/core/coder.md +0 -262
  132. package/.claude/agents/core/coordinator.md +0 -71
  133. package/.claude/agents/core/planner.md +0 -170
  134. package/.claude/agents/core/researcher.md +0 -197
  135. package/.claude/agents/core/reviewer.md +0 -327
  136. package/.claude/agents/core/tester.md +0 -318
  137. package/.claude/agents/design/design-monodesign.md +0 -121
  138. package/.claude/agents/engineering/engineering-ai-data-remediation-engineer.md +0 -212
  139. package/.claude/agents/engineering/engineering-ai-engineer.md +0 -165
  140. package/.claude/agents/engineering/engineering-autonomous-optimization-architect.md +0 -108
  141. package/.claude/agents/engineering/engineering-backend-architect.md +0 -254
  142. package/.claude/agents/engineering/engineering-code-reviewer.md +0 -95
  143. package/.claude/agents/engineering/engineering-data-engineer.md +0 -307
  144. package/.claude/agents/engineering/engineering-database-optimizer.md +0 -200
  145. package/.claude/agents/engineering/engineering-devops-automator.md +0 -430
  146. package/.claude/agents/engineering/engineering-embedded-firmware-engineer.md +0 -174
  147. package/.claude/agents/engineering/engineering-feishu-integration-developer.md +0 -607
  148. package/.claude/agents/engineering/engineering-frontend-developer.md +0 -249
  149. package/.claude/agents/engineering/engineering-git-workflow-master.md +0 -108
  150. package/.claude/agents/engineering/engineering-incident-response-commander.md +0 -482
  151. package/.claude/agents/engineering/engineering-mobile-app-builder.md +0 -499
  152. package/.claude/agents/engineering/engineering-rapid-prototyper.md +0 -463
  153. package/.claude/agents/engineering/engineering-security-engineer.md +0 -303
  154. package/.claude/agents/engineering/engineering-senior-developer.md +0 -195
  155. package/.claude/agents/engineering/engineering-software-architect.md +0 -100
  156. package/.claude/agents/engineering/engineering-solidity-smart-contract-engineer.md +0 -528
  157. package/.claude/agents/engineering/engineering-sre.md +0 -114
  158. package/.claude/agents/engineering/engineering-technical-writer.md +0 -412
  159. package/.claude/agents/engineering/engineering-threat-detection-engineer.md +0 -540
  160. package/.claude/agents/engineering/engineering-wechat-mini-program-developer.md +0 -351
  161. package/.claude/agents/generated/case-analyst.md +0 -50
  162. package/.claude/agents/generated/channel-intelligence-director.md +0 -87
  163. package/.claude/agents/generated/chief-growth-officer.md +0 -88
  164. package/.claude/agents/generated/churn-analyst.md +0 -53
  165. package/.claude/agents/generated/code-reviewer.md +0 -55
  166. package/.claude/agents/generated/code-validator.md +0 -57
  167. package/.claude/agents/generated/complexity-scanner.md +0 -56
  168. package/.claude/agents/generated/content-seo-strategist.md +0 -90
  169. package/.claude/agents/generated/copy-editor.md +0 -45
  170. package/.claude/agents/generated/court-reporter.md +0 -50
  171. package/.claude/agents/generated/defender.md +0 -51
  172. package/.claude/agents/generated/devbot-orchestrator.md +0 -58
  173. package/.claude/agents/generated/devbot-planner.md +0 -63
  174. package/.claude/agents/generated/developer-community-strategist.md +0 -91
  175. package/.claude/agents/generated/editor-in-chief.md +0 -45
  176. package/.claude/agents/generated/fact-checker.md +0 -45
  177. package/.claude/agents/generated/impact-assessor.md +0 -54
  178. package/.claude/agents/generated/judge.md +0 -51
  179. package/.claude/agents/generated/outreach-partnership-strategist.md +0 -90
  180. package/.claude/agents/generated/prosecutor.md +0 -51
  181. package/.claude/agents/generated/reporter.md +0 -45
  182. package/.claude/agents/generated/social-media-strategist.md +0 -91
  183. package/.claude/agents/generated/video-visual-strategist.md +0 -90
  184. package/.claude/agents/github/code-review-swarm.md +0 -557
  185. package/.claude/agents/github/github-modes.md +0 -154
  186. package/.claude/agents/github/issue-tracker.md +0 -299
  187. package/.claude/agents/github/multi-repo-swarm.md +0 -525
  188. package/.claude/agents/github/pr-manager.md +0 -163
  189. package/.claude/agents/github/project-board-sync.md +0 -478
  190. package/.claude/agents/github/release-manager.md +0 -296
  191. package/.claude/agents/github/repo-architect.md +0 -359
  192. package/.claude/agents/github/swarm-issue.md +0 -548
  193. package/.claude/agents/github/swarm-pr.md +0 -427
  194. package/.claude/agents/github/sync-coordinator.md +0 -355
  195. package/.claude/agents/github/workflow-automation.md +0 -640
  196. package/.claude/agents/goal/goal-planner.md +0 -168
  197. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +0 -129
  198. package/.claude/agents/hive-mind/queen-coordinator.md +0 -202
  199. package/.claude/agents/hive-mind/scout-explorer.md +0 -241
  200. package/.claude/agents/hive-mind/swarm-memory-manager.md +0 -192
  201. package/.claude/agents/hive-mind/worker-specialist.md +0 -216
  202. package/.claude/agents/marketing/marketing-competitive-content.md +0 -155
  203. package/.claude/agents/marketing/marketing-cro-specialist.md +0 -147
  204. package/.claude/agents/marketing/marketing-email-specialist.md +0 -90
  205. package/.claude/agents/marketing/marketing-launch-strategist.md +0 -129
  206. package/.claude/agents/marketing/marketing-pricing-strategist.md +0 -127
  207. package/.claude/agents/optimization/benchmark-suite.md +0 -665
  208. package/.claude/agents/optimization/load-balancer.md +0 -431
  209. package/.claude/agents/optimization/performance-monitor.md +0 -672
  210. package/.claude/agents/optimization/resource-allocator.md +0 -674
  211. package/.claude/agents/optimization/topology-optimizer.md +0 -808
  212. package/.claude/agents/reengineer-squad/boss.md +0 -113
  213. package/.claude/agents/reengineer-squad/critic-architect.md +0 -132
  214. package/.claude/agents/reengineer-squad/git-manager.md +0 -145
  215. package/.claude/agents/reengineer-squad/idea-generator.md +0 -95
  216. package/.claude/agents/reengineer-squad/implementer.md +0 -112
  217. package/.claude/agents/reengineer-squad/integration-planner.md +0 -112
  218. package/.claude/agents/reengineer-squad/source-analyst.md +0 -103
  219. package/.claude/agents/reengineer-squad/target-analyst.md +0 -118
  220. package/.claude/agents/reengineer-squad/tester.md +0 -105
  221. package/.claude/agents/schemas/architecture-output.json +0 -43
  222. package/.claude/agents/schemas/code-review-output.json +0 -28
  223. package/.claude/agents/schemas/generic-task-input.json +0 -12
  224. package/.claude/agents/schemas/implementation-output.json +0 -18
  225. package/.claude/agents/schemas/research-output.json +0 -31
  226. package/.claude/agents/schemas/security-audit-output.json +0 -29
  227. package/.claude/agents/schemas/test-report-output.json +0 -29
  228. package/.claude/agents/sparc/architecture.md +0 -453
  229. package/.claude/agents/sparc/pseudocode.md +0 -299
  230. package/.claude/agents/sparc/refinement.md +0 -504
  231. package/.claude/agents/sparc/specification.md +0 -258
  232. package/.claude/agents/specialists/integration-architect.md +0 -94
  233. package/.claude/agents/specialized/agentic-identity-trust.md +0 -388
  234. package/.claude/agents/specialized/agents-orchestrator.md +0 -368
  235. package/.claude/agents/specialized/automation-governance-architect.md +0 -217
  236. package/.claude/agents/specialized/blockchain-security-auditor.md +0 -497
  237. package/.claude/agents/specialized/compliance-auditor.md +0 -159
  238. package/.claude/agents/specialized/identity-graph-operator.md +0 -261
  239. package/.claude/agents/specialized/lsp-index-engineer.md +0 -315
  240. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +0 -89
  241. package/.claude/agents/specialized/specialized-cultural-intelligence-strategist.md +0 -89
  242. package/.claude/agents/specialized/specialized-developer-advocate.md +0 -318
  243. package/.claude/agents/specialized/specialized-document-generator.md +0 -56
  244. package/.claude/agents/specialized/specialized-mcp-builder.md +0 -64
  245. package/.claude/agents/specialized/specialized-model-qa.md +0 -489
  246. package/.claude/agents/specialized/specialized-workflow-architect.md +0 -595
  247. package/.claude/agents/specialized/zk-steward.md +0 -212
  248. package/.claude/agents/swarm/mesh-coordinator.md +0 -363
  249. package/.claude/agents/templates/automation-smart-agent.md +0 -185
  250. package/.claude/agents/templates/coordinator-swarm-init.md +0 -83
  251. package/.claude/agents/templates/implementer-sparc-coder.md +0 -231
  252. package/.claude/agents/testing/production-validator.md +0 -375
  253. package/.claude/agents/testing/tdd-london-swarm.md +0 -241
  254. package/.claude/agents/testing/testing-accessibility-auditor.md +0 -322
  255. package/.claude/agents/testing/testing-api-tester.md +0 -307
  256. package/.claude/agents/testing/testing-evidence-collector.md +0 -213
  257. package/.claude/agents/testing/testing-performance-benchmarker.md +0 -269
  258. package/.claude/agents/testing/testing-test-results-analyzer.md +0 -306
  259. package/.claude/agents/testing/testing-tool-evaluator.md +0 -395
  260. package/.claude/agents/testing/testing-workflow-optimizer.md +0 -451
  261. package/.claude/commands/agents/README.md +0 -14
  262. package/.claude/commands/agents/agent-capabilities.md +0 -25
  263. package/.claude/commands/agents/agent-coordination.md +0 -32
  264. package/.claude/commands/agents/agent-spawning.md +0 -32
  265. package/.claude/commands/agents/agent-types.md +0 -30
  266. package/.claude/commands/analysis/README.md +0 -18
  267. package/.claude/commands/analysis/bottleneck-detect.md +0 -69
  268. package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
  269. package/.claude/commands/analysis/performance-report.md +0 -52
  270. package/.claude/commands/analysis/token-usage.md +0 -47
  271. package/.claude/commands/automation/README.md +0 -19
  272. package/.claude/commands/automation/auto-agent.md +0 -86
  273. package/.claude/commands/automation/self-healing.md +0 -108
  274. package/.claude/commands/automation/session-memory.md +0 -89
  275. package/.claude/commands/automation/smart-agents.md +0 -81
  276. package/.claude/commands/automation/smart-spawn.md +0 -66
  277. package/.claude/commands/automation/workflow-select.md +0 -60
  278. package/.claude/commands/coordination/README.md +0 -13
  279. package/.claude/commands/coordination/agent-spawn.md +0 -69
  280. package/.claude/commands/coordination/swarm-init.md +0 -82
  281. package/.claude/commands/coordination/task-orchestrate.md +0 -79
  282. package/.claude/commands/github/README.md +0 -24
  283. package/.claude/commands/github/github-modes.md +0 -151
  284. package/.claude/commands/github/issue-tracker.md +0 -293
  285. package/.claude/commands/github/pr-manager.md +0 -173
  286. package/.claude/commands/github/release-manager.md +0 -343
  287. package/.claude/commands/github/repo-architect.md +0 -379
  288. package/.claude/commands/github/sync-coordinator.md +0 -297
  289. package/.claude/commands/hive-mind/README.md +0 -42
  290. package/.claude/commands/hive-mind/hive-mind-consensus.md +0 -72
  291. package/.claude/commands/hive-mind/hive-mind-init.md +0 -68
  292. package/.claude/commands/hive-mind/hive-mind-memory.md +0 -73
  293. package/.claude/commands/hive-mind/hive-mind-spawn.md +0 -82
  294. package/.claude/commands/hive-mind/hive-mind-status.md +0 -56
  295. package/.claude/commands/hive-mind/hive-mind-stop.md +0 -55
  296. package/.claude/commands/hive-mind/hive-mind.md +0 -87
  297. package/.claude/commands/hooks/README.md +0 -66
  298. package/.claude/commands/hooks/overview.md +0 -112
  299. package/.claude/commands/hooks/post-edit.md +0 -78
  300. package/.claude/commands/hooks/post-task.md +0 -62
  301. package/.claude/commands/hooks/pre-edit.md +0 -81
  302. package/.claude/commands/hooks/pre-task.md +0 -73
  303. package/.claude/commands/hooks/session-end.md +0 -82
  304. package/.claude/commands/hooks/setup.md +0 -132
  305. package/.claude/commands/mastermind/_repeat.md +0 -492
  306. package/.claude/commands/mastermind/_taskfile.md +0 -232
  307. package/.claude/commands/mastermind/adr.md +0 -9
  308. package/.claude/commands/mastermind/approve.md +0 -91
  309. package/.claude/commands/mastermind/architect.md +0 -52
  310. package/.claude/commands/mastermind/autodev.md +0 -28
  311. package/.claude/commands/mastermind/brain.md +0 -99
  312. package/.claude/commands/mastermind/budget.md +0 -5
  313. package/.claude/commands/mastermind/build.md +0 -23
  314. package/.claude/commands/mastermind/code-review.md +0 -314
  315. package/.claude/commands/mastermind/content.md +0 -23
  316. package/.claude/commands/mastermind/createorg.md +0 -136
  317. package/.claude/commands/mastermind/createtask.md +0 -372
  318. package/.claude/commands/mastermind/debug.md +0 -19
  319. package/.claude/commands/mastermind/design.md +0 -17
  320. package/.claude/commands/mastermind/do.md +0 -525
  321. package/.claude/commands/mastermind/execute.md +0 -17
  322. package/.claude/commands/mastermind/finance.md +0 -23
  323. package/.claude/commands/mastermind/finish.md +0 -17
  324. package/.claude/commands/mastermind/graph-status.md +0 -5
  325. package/.claude/commands/mastermind/help.md +0 -115
  326. package/.claude/commands/mastermind/idea.md +0 -23
  327. package/.claude/commands/mastermind/ideate.md +0 -258
  328. package/.claude/commands/mastermind/improve.md +0 -342
  329. package/.claude/commands/mastermind/loops.md +0 -5
  330. package/.claude/commands/mastermind/marketing.md +0 -23
  331. package/.claude/commands/mastermind/master.md +0 -1124
  332. package/.claude/commands/mastermind/memory.md +0 -227
  333. package/.claude/commands/mastermind/okf-export.md +0 -14
  334. package/.claude/commands/mastermind/okf-import.md +0 -15
  335. package/.claude/commands/mastermind/ops.md +0 -23
  336. package/.claude/commands/mastermind/orgs.md +0 -18
  337. package/.claude/commands/mastermind/orgstatus.md +0 -56
  338. package/.claude/commands/mastermind/plan.md +0 -23
  339. package/.claude/commands/mastermind/receive-review.md +0 -17
  340. package/.claude/commands/mastermind/references/antigravity-tools.md +0 -60
  341. package/.claude/commands/mastermind/references/claude-code-tools.md +0 -50
  342. package/.claude/commands/mastermind/references/codex-tools.md +0 -64
  343. package/.claude/commands/mastermind/references/copilot-tools.md +0 -49
  344. package/.claude/commands/mastermind/references/gemini-tools.md +0 -63
  345. package/.claude/commands/mastermind/references/pi-tools.md +0 -28
  346. package/.claude/commands/mastermind/release.md +0 -23
  347. package/.claude/commands/mastermind/repeat.md +0 -254
  348. package/.claude/commands/mastermind/research.md +0 -23
  349. package/.claude/commands/mastermind/review.md +0 -34
  350. package/.claude/commands/mastermind/runorg.md +0 -153
  351. package/.claude/commands/mastermind/sales.md +0 -23
  352. package/.claude/commands/mastermind/skill-builder.md +0 -17
  353. package/.claude/commands/mastermind/specialagents.md +0 -122
  354. package/.claude/commands/mastermind/stoporg.md +0 -75
  355. package/.claude/commands/mastermind/swarm.md +0 -158
  356. package/.claude/commands/mastermind/taskdev.md +0 -23
  357. package/.claude/commands/mastermind/tdd.md +0 -19
  358. package/.claude/commands/mastermind/techport.md +0 -27
  359. package/.claude/commands/mastermind/understand.md +0 -136
  360. package/.claude/commands/mastermind/verify.md +0 -19
  361. package/.claude/commands/mastermind/worktree.md +0 -17
  362. package/.claude/commands/mastermind.md +0 -121
  363. package/.claude/commands/memory/README.md +0 -79
  364. package/.claude/commands/memory/memory-search.md +0 -77
  365. package/.claude/commands/monitoring/README.md +0 -69
  366. package/.claude/commands/monitoring/agent-metrics.md +0 -65
  367. package/.claude/commands/monitoring/agents.md +0 -71
  368. package/.claude/commands/monitoring/status.md +0 -108
  369. package/.claude/commands/monobrowse.md +0 -21
  370. package/.claude/commands/monoes/README.md +0 -30
  371. package/.claude/commands/monoes/install.md +0 -163
  372. package/.claude/commands/monoes/monoagent.md +0 -148
  373. package/.claude/commands/monoes/monoclip.md +0 -64
  374. package/.claude/commands/monoes/monotask.md +0 -137
  375. package/.claude/commands/monograph/README.md +0 -102
  376. package/.claude/commands/monograph/monograph-build.md +0 -79
  377. package/.claude/commands/monograph/monograph-search.md +0 -96
  378. package/.claude/commands/monograph/monograph-stats.md +0 -53
  379. package/.claude/commands/monograph/monograph-watch.md +0 -63
  380. package/.claude/commands/monograph/monograph-wiki.md +0 -91
  381. package/.claude/commands/optimization/auto-topology.md +0 -85
  382. package/.claude/commands/optimization/performance-optimize.md +0 -79
  383. package/.claude/commands/pair/README.md +0 -79
  384. package/.claude/commands/pair/examples.md +0 -156
  385. package/.claude/commands/pair/modes.md +0 -122
  386. package/.claude/commands/pair/session.md +0 -124
  387. package/.claude/commands/sparc/analyzer.md +0 -35
  388. package/.claude/commands/sparc/architect.md +0 -36
  389. package/.claude/commands/sparc/ask.md +0 -56
  390. package/.claude/commands/sparc/batch-executor.md +0 -37
  391. package/.claude/commands/sparc/code.md +0 -48
  392. package/.claude/commands/sparc/coder.md +0 -37
  393. package/.claude/commands/sparc/debug.md +0 -42
  394. package/.claude/commands/sparc/debugger.md +0 -37
  395. package/.claude/commands/sparc/designer.md +0 -36
  396. package/.claude/commands/sparc/devops.md +0 -68
  397. package/.claude/commands/sparc/docs-writer.md +0 -39
  398. package/.claude/commands/sparc/documenter.md +0 -37
  399. package/.claude/commands/sparc/innovator.md +0 -37
  400. package/.claude/commands/sparc/integration.md +0 -42
  401. package/.claude/commands/sparc/mcp.md +0 -76
  402. package/.claude/commands/sparc/memory-manager.md +0 -57
  403. package/.claude/commands/sparc/optimizer.md +0 -37
  404. package/.claude/commands/sparc/orchestrator.md +0 -70
  405. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +0 -42
  406. package/.claude/commands/sparc/refinement-optimization-mode.md +0 -42
  407. package/.claude/commands/sparc/researcher.md +0 -37
  408. package/.claude/commands/sparc/reviewer.md +0 -37
  409. package/.claude/commands/sparc/security-review.md +0 -39
  410. package/.claude/commands/sparc/sparc-modes.md +0 -120
  411. package/.claude/commands/sparc/sparc.md +0 -71
  412. package/.claude/commands/sparc/spec-pseudocode.md +0 -39
  413. package/.claude/commands/sparc/supabase-admin.md +0 -301
  414. package/.claude/commands/sparc/swarm-coordinator.md +0 -50
  415. package/.claude/commands/sparc/tdd.md +0 -37
  416. package/.claude/commands/sparc/tester.md +0 -37
  417. package/.claude/commands/sparc/tutorial.md +0 -38
  418. package/.claude/commands/sparc/workflow-manager.md +0 -37
  419. package/.claude/commands/sparc.md +0 -112
  420. package/.claude/commands/stream-chain/pipeline.md +0 -116
  421. package/.claude/commands/stream-chain/run.md +0 -156
  422. package/.claude/commands/swarm/README.md +0 -40
  423. package/.claude/commands/swarm/analysis.md +0 -73
  424. package/.claude/commands/swarm/development.md +0 -72
  425. package/.claude/commands/swarm/examples.md +0 -103
  426. package/.claude/commands/swarm/maintenance.md +0 -75
  427. package/.claude/commands/swarm/optimization.md +0 -84
  428. package/.claude/commands/swarm/research.md +0 -76
  429. package/.claude/commands/swarm/swarm.md +0 -79
  430. package/.claude/commands/swarm/testing.md +0 -80
  431. package/.claude/commands/tokens.md +0 -18
  432. package/.claude/commands/truth/start.md +0 -121
  433. package/.claude/commands/ts.md +0 -14
  434. package/.claude/commands/workflows/README.md +0 -65
  435. package/.claude/commands/workflows/development.md +0 -86
  436. package/.claude/commands/workflows/research.md +0 -89
  437. package/.claude/commands/workflows/workflow-create.md +0 -84
  438. package/.claude/commands/workflows/workflow-execute.md +0 -103
  439. package/.claude/commands/workflows/workflow-export.md +0 -90
  440. package/.claude/helpers/control-start.cjs +0 -184
  441. package/.claude/helpers/event-logger.cjs +0 -155
  442. package/.claude/helpers/extras-registry.json +0 -5141
  443. package/.claude/helpers/graphify-freshen.cjs +0 -140
  444. package/.claude/helpers/handlers/adr-draft-handler.cjs +0 -78
  445. package/.claude/helpers/handlers/agent-start-handler.cjs +0 -83
  446. package/.claude/helpers/handlers/budget-status-handler.cjs +0 -14
  447. package/.claude/helpers/handlers/capture-handler.cjs +0 -583
  448. package/.claude/helpers/handlers/compact-handler.cjs +0 -35
  449. package/.claude/helpers/handlers/edit-handler.cjs +0 -145
  450. package/.claude/helpers/handlers/gates-handler.cjs +0 -138
  451. package/.claude/helpers/handlers/graph-status-handler.cjs +0 -45
  452. package/.claude/helpers/handlers/loops-status-handler.cjs +0 -48
  453. package/.claude/helpers/handlers/route-handler.cjs +0 -381
  454. package/.claude/helpers/handlers/session-handler.cjs +0 -234
  455. package/.claude/helpers/handlers/session-restore-handler.cjs +0 -375
  456. package/.claude/helpers/handlers/stats-handler.cjs +0 -14
  457. package/.claude/helpers/handlers/task-handler.cjs +0 -206
  458. package/.claude/helpers/hook-handler.cjs +0 -765
  459. package/.claude/helpers/intelligence.cjs +0 -338
  460. package/.claude/helpers/learning-service.mjs +0 -61
  461. package/.claude/helpers/loop-tracker.cjs +0 -119
  462. package/.claude/helpers/mastermind-activate.cjs +0 -35
  463. package/.claude/helpers/memory-palace.cjs +0 -461
  464. package/.claude/helpers/memory.cjs +0 -193
  465. package/.claude/helpers/metrics-db.mjs +0 -87
  466. package/.claude/helpers/monolean-activate.cjs +0 -30
  467. package/.claude/helpers/monolean-config.cjs +0 -76
  468. package/.claude/helpers/monolean-instructions.cjs +0 -109
  469. package/.claude/helpers/monolean-propagate.cjs +0 -13
  470. package/.claude/helpers/monolean-tracker.cjs +0 -18
  471. package/.claude/helpers/router.cjs +0 -364
  472. package/.claude/helpers/session.cjs +0 -140
  473. package/.claude/helpers/skill-registry.json +0 -1043
  474. package/.claude/helpers/statusline.cjs +0 -1344
  475. package/.claude/helpers/toggle-statusline.cjs +0 -73
  476. package/.claude/helpers/token-tracker.cjs +0 -934
  477. package/.claude/helpers/utils/micro-agents.cjs +0 -354
  478. package/.claude/helpers/utils/monograph.cjs +0 -480
  479. package/.claude/helpers/utils/telemetry.cjs +0 -146
  480. package/.claude/mcp.json +0 -3
  481. package/.claude/scheduled_tasks.lock +0 -1
  482. package/.claude/settings.json +0 -475
  483. package/.claude/skills/.monomind/data/ranked-context.json +0 -5
  484. package/.claude/skills/.monomind/sessions/current.json +0 -13
  485. package/.claude/skills/.monomind/sessions/session-1777829336455.json +0 -15
  486. package/.claude/skills/.monomind/sessions/session-1777831614725.json +0 -15
  487. package/.claude/skills/.monomind/sessions/session-1777832095857.json +0 -15
  488. package/.claude/skills/.monomind/sessions/session-1777839814183.json +0 -15
  489. package/.claude/skills/.monomind/sessions/session-1777841847131.json +0 -15
  490. package/.claude/skills/.monomind/sessions/session-1777843309463.json +0 -15
  491. package/.claude/skills/.monomind/sessions/session-1777880867159.json +0 -15
  492. package/.claude/skills/.monomind/sessions/session-1777881884593.json +0 -15
  493. package/.claude/skills/.monomind/sessions/session-1777884090471.json +0 -15
  494. package/.claude/skills/.monomind/sessions/session-1777884808221.json +0 -15
  495. package/.claude/skills/.monomind/sessions/session-1777885672155.json +0 -15
  496. package/.claude/skills/.monomind/sessions/session-1777886852818.json +0 -15
  497. package/.claude/skills/.monomind/sessions/session-1777896532690.json +0 -15
  498. package/.claude/skills/agent-browser-testing/SKILL.md +0 -964
  499. package/.claude/skills/agentic-jujutsu/SKILL.md +0 -645
  500. package/.claude/skills/github-issue-triage/SKILL.md +0 -354
  501. package/.claude/skills/github-repo-recap/SKILL.md +0 -207
  502. package/.claude/skills/hive-mind-advanced/SKILL.md +0 -709
  503. package/.claude/skills/hooks-automation/SKILL.md +0 -1193
  504. package/.claude/skills/mastermind-skills/_agent-select.md +0 -132
  505. package/.claude/skills/mastermind-skills/_delegation.md +0 -83
  506. package/.claude/skills/mastermind-skills/_intake.md +0 -83
  507. package/.claude/skills/mastermind-skills/_protocol.md +0 -404
  508. package/.claude/skills/mastermind-skills/_repeat.md +0 -171
  509. package/.claude/skills/mastermind-skills/access.md +0 -236
  510. package/.claude/skills/mastermind-skills/activity.md +0 -191
  511. package/.claude/skills/mastermind-skills/adapter-manager.md +0 -259
  512. package/.claude/skills/mastermind-skills/adapters.md +0 -204
  513. package/.claude/skills/mastermind-skills/agent-detail.md +0 -242
  514. package/.claude/skills/mastermind-skills/agents.md +0 -178
  515. package/.claude/skills/mastermind-skills/approval-detail.md +0 -259
  516. package/.claude/skills/mastermind-skills/approve.md +0 -188
  517. package/.claude/skills/mastermind-skills/architect.md +0 -862
  518. package/.claude/skills/mastermind-skills/autodev.md +0 -360
  519. package/.claude/skills/mastermind-skills/backup.md +0 -197
  520. package/.claude/skills/mastermind-skills/bootstrap.md +0 -190
  521. package/.claude/skills/mastermind-skills/budgets.md +0 -237
  522. package/.claude/skills/mastermind-skills/build.md +0 -170
  523. package/.claude/skills/mastermind-skills/code-quality-reviewer-prompt.md +0 -60
  524. package/.claude/skills/mastermind-skills/companies.md +0 -256
  525. package/.claude/skills/mastermind-skills/content.md +0 -197
  526. package/.claude/skills/mastermind-skills/costs.md +0 -151
  527. package/.claude/skills/mastermind-skills/createorg.md +0 -862
  528. package/.claude/skills/mastermind-skills/debug.md +0 -232
  529. package/.claude/skills/mastermind-skills/design.md +0 -189
  530. package/.claude/skills/mastermind-skills/diagnose.md +0 -249
  531. package/.claude/skills/mastermind-skills/env.md +0 -198
  532. package/.claude/skills/mastermind-skills/environments.md +0 -250
  533. package/.claude/skills/mastermind-skills/execute.md +0 -104
  534. package/.claude/skills/mastermind-skills/export.md +0 -333
  535. package/.claude/skills/mastermind-skills/finance.md +0 -166
  536. package/.claude/skills/mastermind-skills/finish.md +0 -251
  537. package/.claude/skills/mastermind-skills/goal-detail.md +0 -255
  538. package/.claude/skills/mastermind-skills/goals.md +0 -149
  539. package/.claude/skills/mastermind-skills/heartbeat.md +0 -164
  540. package/.claude/skills/mastermind-skills/idea.md +0 -1142
  541. package/.claude/skills/mastermind-skills/implementer-prompt.md +0 -109
  542. package/.claude/skills/mastermind-skills/import.md +0 -281
  543. package/.claude/skills/mastermind-skills/inbox.md +0 -214
  544. package/.claude/skills/mastermind-skills/instance-settings.md +0 -315
  545. package/.claude/skills/mastermind-skills/instance.md +0 -233
  546. package/.claude/skills/mastermind-skills/invite-landing.md +0 -227
  547. package/.claude/skills/mastermind-skills/invites.md +0 -254
  548. package/.claude/skills/mastermind-skills/issue-detail.md +0 -291
  549. package/.claude/skills/mastermind-skills/issues.md +0 -235
  550. package/.claude/skills/mastermind-skills/join-queue.md +0 -170
  551. package/.claude/skills/mastermind-skills/liveness.md +0 -392
  552. package/.claude/skills/mastermind-skills/marketing.md +0 -228
  553. package/.claude/skills/mastermind-skills/memory.md +0 -321
  554. package/.claude/skills/mastermind-skills/monitor.md +0 -1284
  555. package/.claude/skills/mastermind-skills/monotask.md +0 -350
  556. package/.claude/skills/mastermind-skills/my-issues.md +0 -146
  557. package/.claude/skills/mastermind-skills/new-agent.md +0 -241
  558. package/.claude/skills/mastermind-skills/ops.md +0 -168
  559. package/.claude/skills/mastermind-skills/org-chart.md +0 -209
  560. package/.claude/skills/mastermind-skills/org-settings.md +0 -254
  561. package/.claude/skills/mastermind-skills/orgs.md +0 -98
  562. package/.claude/skills/mastermind-skills/orgstatus.md +0 -194
  563. package/.claude/skills/mastermind-skills/plan-to-tasks.md +0 -136
  564. package/.claude/skills/mastermind-skills/plan.md +0 -198
  565. package/.claude/skills/mastermind-skills/plugin-manager.md +0 -241
  566. package/.claude/skills/mastermind-skills/plugin-settings.md +0 -273
  567. package/.claude/skills/mastermind-skills/plugins.md +0 -190
  568. package/.claude/skills/mastermind-skills/profile.md +0 -187
  569. package/.claude/skills/mastermind-skills/project-detail.md +0 -249
  570. package/.claude/skills/mastermind-skills/project-workspace.md +0 -244
  571. package/.claude/skills/mastermind-skills/projects.md +0 -164
  572. package/.claude/skills/mastermind-skills/receive-review.md +0 -213
  573. package/.claude/skills/mastermind-skills/references/copywriting-frameworks.md +0 -181
  574. package/.claude/skills/mastermind-skills/references/persuasion-psychology.md +0 -158
  575. package/.claude/skills/mastermind-skills/release.md +0 -168
  576. package/.claude/skills/mastermind-skills/research.md +0 -168
  577. package/.claude/skills/mastermind-skills/review.md +0 -233
  578. package/.claude/skills/mastermind-skills/routine-detail.md +0 -253
  579. package/.claude/skills/mastermind-skills/routines.md +0 -203
  580. package/.claude/skills/mastermind-skills/runorg.md +0 -714
  581. package/.claude/skills/mastermind-skills/sales.md +0 -170
  582. package/.claude/skills/mastermind-skills/search.md +0 -186
  583. package/.claude/skills/mastermind-skills/secrets.md +0 -199
  584. package/.claude/skills/mastermind-skills/skill-builder.md +0 -274
  585. package/.claude/skills/mastermind-skills/skills.md +0 -156
  586. package/.claude/skills/mastermind-skills/spec-reviewer-prompt.md +0 -63
  587. package/.claude/skills/mastermind-skills/stoporg.md +0 -138
  588. package/.claude/skills/mastermind-skills/taskdev.md +0 -307
  589. package/.claude/skills/mastermind-skills/tasks.md +0 -149
  590. package/.claude/skills/mastermind-skills/tdd.md +0 -394
  591. package/.claude/skills/mastermind-skills/techport.md +0 -777
  592. package/.claude/skills/mastermind-skills/threads.md +0 -259
  593. package/.claude/skills/mastermind-skills/tree-control.md +0 -250
  594. package/.claude/skills/mastermind-skills/verify.md +0 -196
  595. package/.claude/skills/mastermind-skills/wiki.md +0 -314
  596. package/.claude/skills/mastermind-skills/workspace-detail.md +0 -317
  597. package/.claude/skills/mastermind-skills/workspaces.md +0 -261
  598. package/.claude/skills/mastermind-skills/worktree.md +0 -215
  599. package/.claude/skills/monodesign/SKILL.md +0 -333
  600. package/.claude/skills/monodesign/adapt.md +0 -53
  601. package/.claude/skills/monodesign/agents/monodesign-asset-producer.md +0 -100
  602. package/.claude/skills/monodesign/animate.md +0 -65
  603. package/.claude/skills/monodesign/audit.md +0 -89
  604. package/.claude/skills/monodesign/bolder.md +0 -50
  605. package/.claude/skills/monodesign/clarify.md +0 -64
  606. package/.claude/skills/monodesign/colorize.md +0 -68
  607. package/.claude/skills/monodesign/craft.md +0 -51
  608. package/.claude/skills/monodesign/critique.md +0 -66
  609. package/.claude/skills/monodesign/delight.md +0 -47
  610. package/.claude/skills/monodesign/distill.md +0 -56
  611. package/.claude/skills/monodesign/document.md +0 -83
  612. package/.claude/skills/monodesign/extract.md +0 -74
  613. package/.claude/skills/monodesign/harden.md +0 -65
  614. package/.claude/skills/monodesign/live.md +0 -59
  615. package/.claude/skills/monodesign/onboard.md +0 -50
  616. package/.claude/skills/monodesign/optimize.md +0 -64
  617. package/.claude/skills/monodesign/overdrive.md +0 -56
  618. package/.claude/skills/monodesign/polish.md +0 -68
  619. package/.claude/skills/monodesign/quieter.md +0 -57
  620. package/.claude/skills/monodesign/reference/adapt.md +0 -190
  621. package/.claude/skills/monodesign/reference/animate.md +0 -175
  622. package/.claude/skills/monodesign/reference/antipatterns-catalog.md +0 -359
  623. package/.claude/skills/monodesign/reference/audit.md +0 -133
  624. package/.claude/skills/monodesign/reference/bolder.md +0 -113
  625. package/.claude/skills/monodesign/reference/brand-workflow.md +0 -180
  626. package/.claude/skills/monodesign/reference/brand.md +0 -114
  627. package/.claude/skills/monodesign/reference/clarify.md +0 -174
  628. package/.claude/skills/monodesign/reference/codex.md +0 -107
  629. package/.claude/skills/monodesign/reference/cognitive-load.md +0 -106
  630. package/.claude/skills/monodesign/reference/color-and-contrast.md +0 -105
  631. package/.claude/skills/monodesign/reference/colorize.md +0 -154
  632. package/.claude/skills/monodesign/reference/component-specs.md +0 -260
  633. package/.claude/skills/monodesign/reference/component-states.md +0 -274
  634. package/.claude/skills/monodesign/reference/component-system.md +0 -358
  635. package/.claude/skills/monodesign/reference/copy-formulas.md +0 -160
  636. package/.claude/skills/monodesign/reference/craft.md +0 -196
  637. package/.claude/skills/monodesign/reference/critique.md +0 -213
  638. package/.claude/skills/monodesign/reference/delight.md +0 -302
  639. package/.claude/skills/monodesign/reference/design-principles.md +0 -246
  640. package/.claude/skills/monodesign/reference/distill.md +0 -111
  641. package/.claude/skills/monodesign/reference/document.md +0 -427
  642. package/.claude/skills/monodesign/reference/extract.md +0 -69
  643. package/.claude/skills/monodesign/reference/harden.md +0 -347
  644. package/.claude/skills/monodesign/reference/heuristics-scoring.md +0 -234
  645. package/.claude/skills/monodesign/reference/hooks.md +0 -99
  646. package/.claude/skills/monodesign/reference/image-prompts.md +0 -130
  647. package/.claude/skills/monodesign/reference/interaction-design.md +0 -195
  648. package/.claude/skills/monodesign/reference/layout.md +0 -141
  649. package/.claude/skills/monodesign/reference/live.md +0 -622
  650. package/.claude/skills/monodesign/reference/motion-design.md +0 -109
  651. package/.claude/skills/monodesign/reference/onboard.md +0 -234
  652. package/.claude/skills/monodesign/reference/optimize.md +0 -258
  653. package/.claude/skills/monodesign/reference/overdrive.md +0 -130
  654. package/.claude/skills/monodesign/reference/personas.md +0 -179
  655. package/.claude/skills/monodesign/reference/polish.md +0 -233
  656. package/.claude/skills/monodesign/reference/pre-delivery-checklist.md +0 -108
  657. package/.claude/skills/monodesign/reference/product.md +0 -62
  658. package/.claude/skills/monodesign/reference/quieter.md +0 -99
  659. package/.claude/skills/monodesign/reference/responsive-design.md +0 -114
  660. package/.claude/skills/monodesign/reference/shape.md +0 -151
  661. package/.claude/skills/monodesign/reference/spatial-design.md +0 -100
  662. package/.claude/skills/monodesign/reference/teach.md +0 -156
  663. package/.claude/skills/monodesign/reference/token-architecture.md +0 -222
  664. package/.claude/skills/monodesign/reference/typeset.md +0 -124
  665. package/.claude/skills/monodesign/reference/typography.md +0 -159
  666. package/.claude/skills/monodesign/reference/ux-research.md +0 -143
  667. package/.claude/skills/monodesign/reference/ux-rules.md +0 -211
  668. package/.claude/skills/monodesign/reference/ux-writing.md +0 -107
  669. package/.claude/skills/monodesign/shape.md +0 -71
  670. package/.claude/skills/monodesign/teach.md +0 -69
  671. package/.claude/skills/monodesign/typeset.md +0 -59
  672. package/.claude/skills/monolean/SKILL.md +0 -118
  673. package/.claude/skills/monolean-audit/SKILL.md +0 -41
  674. package/.claude/skills/monolean-debt/SKILL.md +0 -46
  675. package/.claude/skills/monolean-help/SKILL.md +0 -60
  676. package/.claude/skills/monolean-review/SKILL.md +0 -57
  677. package/.claude/skills/monomind/.monomind/registry.json +0 -6
  678. package/.claude/skills/monomind/browse-agentcore.md +0 -115
  679. package/.claude/skills/monomind/browse-electron.md +0 -188
  680. package/.claude/skills/monomind/browse-qa.md +0 -228
  681. package/.claude/skills/monomind/browse-references/authentication.md +0 -161
  682. package/.claude/skills/monomind/browse-references/trust-boundaries.md +0 -40
  683. package/.claude/skills/monomind/browse-references/video-recording.md +0 -83
  684. package/.claude/skills/monomind/browse-slack.md +0 -188
  685. package/.claude/skills/monomind/browse-vercel.md +0 -239
  686. package/.claude/skills/monomind/browse.md +0 -724
  687. package/.claude/skills/monomotion/SKILL.md +0 -145
  688. package/.claude/skills/monomotion/rules/api-control.md +0 -139
  689. package/.claude/skills/monomotion/rules/effects.md +0 -109
  690. package/.claude/skills/monomotion/rules/integration.md +0 -140
  691. package/.claude/skills/monomotion/rules/scroll.md +0 -131
  692. package/.claude/skills/monomotion/rules/sequencing.md +0 -105
  693. package/.claude/skills/monomotion/rules/svg.md +0 -101
  694. package/.claude/skills/monomotion/rules/text.md +0 -119
  695. package/.claude/skills/pair-programming/SKILL.md +0 -1202
  696. package/.claude/skills/performance-analysis/SKILL.md +0 -560
  697. package/.claude/skills/skill-builder/SKILL.md +0 -910
  698. package/.claude/skills/sparc-methodology/SKILL.md +0 -950
  699. package/.claude/skills/specialagent/SKILL.md +0 -208
  700. package/.claude/skills/stop-slop/SKILL.md +0 -67
  701. package/.claude/skills/stop-slop/references/examples.md +0 -61
  702. package/.claude/skills/stop-slop/references/phrases.md +0 -130
  703. package/.claude/skills/stop-slop/references/structures.md +0 -136
  704. package/.claude/skills/swarm-advanced/SKILL.md +0 -937
  705. package/.claude/skills/swarm-orchestration/SKILL.md +0 -179
  706. package/.claude/skills/verification-quality/SKILL.md +0 -674
  707. package/.claude/workflows/feature-dev.yaml +0 -18
  708. package/.claude/workflows/security-audit.yaml +0 -10
  709. package/packages/@monomind/cli/.claude/agents/generated/case-analyst.md +0 -50
  710. package/packages/@monomind/cli/.claude/agents/generated/channel-intelligence-director.md +0 -87
  711. package/packages/@monomind/cli/.claude/agents/generated/chief-growth-officer.md +0 -88
  712. package/packages/@monomind/cli/.claude/agents/generated/churn-analyst.md +0 -53
  713. package/packages/@monomind/cli/.claude/agents/generated/code-reviewer.md +0 -55
  714. package/packages/@monomind/cli/.claude/agents/generated/code-validator.md +0 -57
  715. package/packages/@monomind/cli/.claude/agents/generated/complexity-scanner.md +0 -56
  716. package/packages/@monomind/cli/.claude/agents/generated/content-seo-strategist.md +0 -90
  717. package/packages/@monomind/cli/.claude/agents/generated/copy-editor.md +0 -45
  718. package/packages/@monomind/cli/.claude/agents/generated/court-reporter.md +0 -50
  719. package/packages/@monomind/cli/.claude/agents/generated/defender.md +0 -51
  720. package/packages/@monomind/cli/.claude/agents/generated/devbot-orchestrator.md +0 -58
  721. package/packages/@monomind/cli/.claude/agents/generated/devbot-planner.md +0 -63
  722. package/packages/@monomind/cli/.claude/agents/generated/developer-community-strategist.md +0 -91
  723. package/packages/@monomind/cli/.claude/agents/generated/editor-in-chief.md +0 -45
  724. package/packages/@monomind/cli/.claude/agents/generated/fact-checker.md +0 -45
  725. package/packages/@monomind/cli/.claude/agents/generated/impact-assessor.md +0 -54
  726. package/packages/@monomind/cli/.claude/agents/generated/judge.md +0 -51
  727. package/packages/@monomind/cli/.claude/agents/generated/outreach-partnership-strategist.md +0 -90
  728. package/packages/@monomind/cli/.claude/agents/generated/prosecutor.md +0 -51
  729. package/packages/@monomind/cli/.claude/agents/generated/reporter.md +0 -45
  730. package/packages/@monomind/cli/.claude/agents/generated/social-media-strategist.md +0 -91
  731. package/packages/@monomind/cli/.claude/agents/generated/video-visual-strategist.md +0 -90
  732. package/packages/@monomind/cli/.claude/agents/reengineer-squad/boss.md +0 -113
  733. package/packages/@monomind/cli/.claude/agents/reengineer-squad/critic-architect.md +0 -132
  734. package/packages/@monomind/cli/.claude/agents/reengineer-squad/git-manager.md +0 -145
  735. package/packages/@monomind/cli/.claude/agents/reengineer-squad/idea-generator.md +0 -95
  736. package/packages/@monomind/cli/.claude/agents/reengineer-squad/implementer.md +0 -112
  737. package/packages/@monomind/cli/.claude/agents/reengineer-squad/integration-planner.md +0 -112
  738. package/packages/@monomind/cli/.claude/agents/reengineer-squad/source-analyst.md +0 -103
  739. package/packages/@monomind/cli/.claude/agents/reengineer-squad/target-analyst.md +0 -118
  740. package/packages/@monomind/cli/.claude/agents/reengineer-squad/tester.md +0 -105
  741. package/packages/@monomind/cli/.claude/agents/sparc/architecture.md +0 -453
  742. package/packages/@monomind/cli/.claude/agents/sparc/pseudocode.md +0 -299
  743. package/packages/@monomind/cli/.claude/agents/sparc/refinement.md +0 -504
  744. package/packages/@monomind/cli/.claude/agents/sparc/specification.md +0 -258
  745. package/packages/@monomind/cli/.claude/agents/templates/implementer-sparc-coder.md +0 -231
  746. package/packages/@monomind/cli/.claude/commands/sparc/analyzer.md +0 -35
  747. package/packages/@monomind/cli/.claude/commands/sparc/architect.md +0 -36
  748. package/packages/@monomind/cli/.claude/commands/sparc/ask.md +0 -56
  749. package/packages/@monomind/cli/.claude/commands/sparc/batch-executor.md +0 -37
  750. package/packages/@monomind/cli/.claude/commands/sparc/code.md +0 -48
  751. package/packages/@monomind/cli/.claude/commands/sparc/coder.md +0 -37
  752. package/packages/@monomind/cli/.claude/commands/sparc/debug.md +0 -42
  753. package/packages/@monomind/cli/.claude/commands/sparc/debugger.md +0 -37
  754. package/packages/@monomind/cli/.claude/commands/sparc/designer.md +0 -36
  755. package/packages/@monomind/cli/.claude/commands/sparc/devops.md +0 -68
  756. package/packages/@monomind/cli/.claude/commands/sparc/docs-writer.md +0 -39
  757. package/packages/@monomind/cli/.claude/commands/sparc/documenter.md +0 -37
  758. package/packages/@monomind/cli/.claude/commands/sparc/innovator.md +0 -37
  759. package/packages/@monomind/cli/.claude/commands/sparc/integration.md +0 -42
  760. package/packages/@monomind/cli/.claude/commands/sparc/mcp.md +0 -76
  761. package/packages/@monomind/cli/.claude/commands/sparc/memory-manager.md +0 -57
  762. package/packages/@monomind/cli/.claude/commands/sparc/optimizer.md +0 -37
  763. package/packages/@monomind/cli/.claude/commands/sparc/orchestrator.md +0 -70
  764. package/packages/@monomind/cli/.claude/commands/sparc/post-deployment-monitoring-mode.md +0 -42
  765. package/packages/@monomind/cli/.claude/commands/sparc/refinement-optimization-mode.md +0 -42
  766. package/packages/@monomind/cli/.claude/commands/sparc/researcher.md +0 -37
  767. package/packages/@monomind/cli/.claude/commands/sparc/reviewer.md +0 -37
  768. package/packages/@monomind/cli/.claude/commands/sparc/security-review.md +0 -39
  769. package/packages/@monomind/cli/.claude/commands/sparc/sparc-modes.md +0 -120
  770. package/packages/@monomind/cli/.claude/commands/sparc/sparc.md +0 -71
  771. package/packages/@monomind/cli/.claude/commands/sparc/spec-pseudocode.md +0 -39
  772. package/packages/@monomind/cli/.claude/commands/sparc/supabase-admin.md +0 -301
  773. package/packages/@monomind/cli/.claude/commands/sparc/swarm-coordinator.md +0 -50
  774. package/packages/@monomind/cli/.claude/commands/sparc/tdd.md +0 -37
  775. package/packages/@monomind/cli/.claude/commands/sparc/tester.md +0 -37
  776. package/packages/@monomind/cli/.claude/commands/sparc/tutorial.md +0 -38
  777. package/packages/@monomind/cli/.claude/commands/sparc/workflow-manager.md +0 -37
  778. package/packages/@monomind/cli/.claude/commands/sparc.md +0 -112
  779. package/packages/@monomind/cli/.claude/skills/sparc-methodology/SKILL.md +0 -950
  780. package/packages/@monomind/cli/dist/src/capabilities/enrichment.d.ts +0 -44
  781. package/packages/@monomind/cli/dist/src/capabilities/enrichment.js +0 -141
  782. package/packages/@monomind/cli/dist/src/commands/analyze-boundaries.d.ts +0 -14
  783. package/packages/@monomind/cli/dist/src/commands/analyze-boundaries.js +0 -295
  784. package/packages/@monomind/cli/dist/src/commands/analyze-graph.d.ts +0 -14
  785. package/packages/@monomind/cli/dist/src/commands/analyze-graph.js +0 -304
  786. package/packages/@monomind/cli/dist/src/commands/claims.d.ts +0 -10
  787. package/packages/@monomind/cli/dist/src/commands/claims.js +0 -650
  788. package/packages/@monomind/cli/dist/src/commands/daemon.d.ts +0 -8
  789. package/packages/@monomind/cli/dist/src/commands/daemon.js +0 -681
  790. package/packages/@monomind/cli/dist/src/commands/enrich.d.ts +0 -10
  791. package/packages/@monomind/cli/dist/src/commands/enrich.js +0 -58
  792. package/packages/@monomind/cli/dist/src/commands/issues.d.ts +0 -21
  793. package/packages/@monomind/cli/dist/src/commands/issues.js +0 -575
  794. package/packages/@monomind/cli/dist/src/commands/workflow.d.ts +0 -8
  795. package/packages/@monomind/cli/dist/src/commands/workflow.js +0 -575
  796. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
  797. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +0 -717
  798. package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +0 -198
  799. package/packages/@monomind/cli/dist/src/services/claim-service.js +0 -890
  800. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.d.ts +0 -311
  801. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +0 -1183
  802. package/packages/@monomind/cli/dist/src/services/worker-daemon.d.ts +0 -230
  803. package/packages/@monomind/cli/dist/src/services/worker-daemon.js +0 -1350
  804. package/packages/@monomind/cli/dist/src/ui/.monomind/capture/active-run.json +0 -1
  805. package/packages/@monomind/guidance/README.md +0 -87
  806. package/packages/@monomind/guidance/dist/adversarial.d.ts +0 -284
  807. package/packages/@monomind/guidance/dist/adversarial.js +0 -572
  808. package/packages/@monomind/guidance/dist/analyzer.d.ts +0 -530
  809. package/packages/@monomind/guidance/dist/analyzer.js +0 -2518
  810. package/packages/@monomind/guidance/dist/artifacts.d.ts +0 -283
  811. package/packages/@monomind/guidance/dist/artifacts.js +0 -356
  812. package/packages/@monomind/guidance/dist/authority.d.ts +0 -290
  813. package/packages/@monomind/guidance/dist/authority.js +0 -558
  814. package/packages/@monomind/guidance/dist/capabilities.d.ts +0 -209
  815. package/packages/@monomind/guidance/dist/capabilities.js +0 -485
  816. package/packages/@monomind/guidance/dist/coherence.d.ts +0 -233
  817. package/packages/@monomind/guidance/dist/coherence.js +0 -378
  818. package/packages/@monomind/guidance/dist/compiler.d.ts +0 -87
  819. package/packages/@monomind/guidance/dist/compiler.js +0 -425
  820. package/packages/@monomind/guidance/dist/conformance-kit.d.ts +0 -225
  821. package/packages/@monomind/guidance/dist/conformance-kit.js +0 -629
  822. package/packages/@monomind/guidance/dist/continue-gate.d.ts +0 -214
  823. package/packages/@monomind/guidance/dist/continue-gate.js +0 -353
  824. package/packages/@monomind/guidance/dist/crypto-utils.d.ts +0 -17
  825. package/packages/@monomind/guidance/dist/crypto-utils.js +0 -24
  826. package/packages/@monomind/guidance/dist/evolution.d.ts +0 -282
  827. package/packages/@monomind/guidance/dist/evolution.js +0 -500
  828. package/packages/@monomind/guidance/dist/gates.d.ts +0 -79
  829. package/packages/@monomind/guidance/dist/gates.js +0 -302
  830. package/packages/@monomind/guidance/dist/gateway.d.ts +0 -206
  831. package/packages/@monomind/guidance/dist/gateway.js +0 -452
  832. package/packages/@monomind/guidance/dist/generators.d.ts +0 -153
  833. package/packages/@monomind/guidance/dist/generators.js +0 -682
  834. package/packages/@monomind/guidance/dist/headless.d.ts +0 -177
  835. package/packages/@monomind/guidance/dist/headless.js +0 -342
  836. package/packages/@monomind/guidance/dist/hooks.d.ts +0 -109
  837. package/packages/@monomind/guidance/dist/hooks.js +0 -347
  838. package/packages/@monomind/guidance/dist/index.d.ts +0 -203
  839. package/packages/@monomind/guidance/dist/index.js +0 -320
  840. package/packages/@monomind/guidance/dist/ledger.d.ts +0 -162
  841. package/packages/@monomind/guidance/dist/ledger.js +0 -375
  842. package/packages/@monomind/guidance/dist/manifest-validator.d.ts +0 -289
  843. package/packages/@monomind/guidance/dist/manifest-validator.js +0 -838
  844. package/packages/@monomind/guidance/dist/memory-gate.d.ts +0 -222
  845. package/packages/@monomind/guidance/dist/memory-gate.js +0 -382
  846. package/packages/@monomind/guidance/dist/meta-governance.d.ts +0 -265
  847. package/packages/@monomind/guidance/dist/meta-governance.js +0 -348
  848. package/packages/@monomind/guidance/dist/optimizer.d.ts +0 -104
  849. package/packages/@monomind/guidance/dist/optimizer.js +0 -329
  850. package/packages/@monomind/guidance/dist/persistence.d.ts +0 -189
  851. package/packages/@monomind/guidance/dist/persistence.js +0 -464
  852. package/packages/@monomind/guidance/dist/proof.d.ts +0 -185
  853. package/packages/@monomind/guidance/dist/proof.js +0 -238
  854. package/packages/@monomind/guidance/dist/retriever.d.ts +0 -116
  855. package/packages/@monomind/guidance/dist/retriever.js +0 -394
  856. package/packages/@monomind/guidance/dist/ruvbot-integration.d.ts +0 -370
  857. package/packages/@monomind/guidance/dist/ruvbot-integration.js +0 -738
  858. package/packages/@monomind/guidance/dist/temporal.d.ts +0 -428
  859. package/packages/@monomind/guidance/dist/temporal.js +0 -660
  860. package/packages/@monomind/guidance/dist/trust.d.ts +0 -283
  861. package/packages/@monomind/guidance/dist/trust.js +0 -474
  862. package/packages/@monomind/guidance/dist/truth-anchors.d.ts +0 -276
  863. package/packages/@monomind/guidance/dist/truth-anchors.js +0 -488
  864. package/packages/@monomind/guidance/dist/types.d.ts +0 -378
  865. package/packages/@monomind/guidance/dist/types.js +0 -10
  866. package/packages/@monomind/guidance/dist/uncertainty.d.ts +0 -372
  867. package/packages/@monomind/guidance/dist/uncertainty.js +0 -619
  868. package/packages/@monomind/guidance/dist/wasm-kernel.d.ts +0 -48
  869. package/packages/@monomind/guidance/dist/wasm-kernel.js +0 -158
  870. 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
- }