@monoes/monomindcli 1.17.0 → 1.17.2

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 (183) hide show
  1. package/.claude/agents/engineering/engineering-security-engineer.md +1 -1
  2. package/.claude/commands/mastermind/_repeat.md +4 -0
  3. package/.claude/commands/mastermind/master.md +52 -1
  4. package/.claude/skills/mastermind/_repeat.md +2 -0
  5. package/dist/src/__tests__/browse-analyzer.test.js +42 -59
  6. package/dist/src/__tests__/browse-analyzer.test.js.map +1 -1
  7. package/dist/src/agents/registry-builder.d.ts +8 -0
  8. package/dist/src/agents/registry-builder.d.ts.map +1 -1
  9. package/dist/src/agents/registry-builder.js +22 -0
  10. package/dist/src/agents/registry-builder.js.map +1 -1
  11. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  12. package/dist/src/browser/dashboard/server.js +18 -0
  13. package/dist/src/browser/dashboard/server.js.map +1 -1
  14. package/dist/src/browser/dashboard/ui.html +37 -125
  15. package/dist/src/commands/agent-lifecycle.d.ts +17 -0
  16. package/dist/src/commands/agent-lifecycle.d.ts.map +1 -0
  17. package/dist/src/commands/agent-lifecycle.js +320 -0
  18. package/dist/src/commands/agent-lifecycle.js.map +1 -0
  19. package/dist/src/commands/agent-ops.d.ts +9 -0
  20. package/dist/src/commands/agent-ops.d.ts.map +1 -0
  21. package/dist/src/commands/agent-ops.js +329 -0
  22. package/dist/src/commands/agent-ops.js.map +1 -0
  23. package/dist/src/commands/agent.d.ts.map +1 -1
  24. package/dist/src/commands/agent.js +5 -907
  25. package/dist/src/commands/agent.js.map +1 -1
  26. package/dist/src/commands/analyze-ast.d.ts +26 -0
  27. package/dist/src/commands/analyze-ast.d.ts.map +1 -0
  28. package/dist/src/commands/analyze-ast.js +284 -0
  29. package/dist/src/commands/analyze-ast.js.map +1 -0
  30. package/dist/src/commands/analyze-boundaries.d.ts +14 -0
  31. package/dist/src/commands/analyze-boundaries.d.ts.map +1 -0
  32. package/dist/src/commands/analyze-boundaries.js +295 -0
  33. package/dist/src/commands/analyze-boundaries.js.map +1 -0
  34. package/dist/src/commands/analyze-diff.d.ts +8 -0
  35. package/dist/src/commands/analyze-diff.d.ts.map +1 -0
  36. package/dist/src/commands/analyze-diff.js +395 -0
  37. package/dist/src/commands/analyze-diff.js.map +1 -0
  38. package/dist/src/commands/analyze-graph.d.ts +14 -0
  39. package/dist/src/commands/analyze-graph.d.ts.map +1 -0
  40. package/dist/src/commands/analyze-graph.js +304 -0
  41. package/dist/src/commands/analyze-graph.js.map +1 -0
  42. package/dist/src/commands/analyze-imports.d.ts +11 -0
  43. package/dist/src/commands/analyze-imports.d.ts.map +1 -0
  44. package/dist/src/commands/analyze-imports.js +287 -0
  45. package/dist/src/commands/analyze-imports.js.map +1 -0
  46. package/dist/src/commands/analyze-symbols.d.ts +14 -0
  47. package/dist/src/commands/analyze-symbols.d.ts.map +1 -0
  48. package/dist/src/commands/analyze-symbols.js +302 -0
  49. package/dist/src/commands/analyze-symbols.js.map +1 -0
  50. package/dist/src/commands/analyze.d.ts +38 -0
  51. package/dist/src/commands/analyze.d.ts.map +1 -1
  52. package/dist/src/commands/analyze.js +12 -1827
  53. package/dist/src/commands/analyze.js.map +1 -1
  54. package/dist/src/commands/doctor-env-checks.d.ts +26 -0
  55. package/dist/src/commands/doctor-env-checks.d.ts.map +1 -0
  56. package/dist/src/commands/doctor-env-checks.js +189 -0
  57. package/dist/src/commands/doctor-env-checks.js.map +1 -0
  58. package/dist/src/commands/doctor-project-checks.d.ts +20 -0
  59. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -0
  60. package/dist/src/commands/doctor-project-checks.js +432 -0
  61. package/dist/src/commands/doctor-project-checks.js.map +1 -0
  62. package/dist/src/commands/doctor.d.ts.map +1 -1
  63. package/dist/src/commands/doctor.js +54 -943
  64. package/dist/src/commands/doctor.js.map +1 -1
  65. package/dist/src/commands/hive-mind-comms.d.ts +11 -0
  66. package/dist/src/commands/hive-mind-comms.d.ts.map +1 -0
  67. package/dist/src/commands/hive-mind-comms.js +242 -0
  68. package/dist/src/commands/hive-mind-comms.js.map +1 -0
  69. package/dist/src/commands/hive-mind-helpers.d.ts +35 -0
  70. package/dist/src/commands/hive-mind-helpers.d.ts.map +1 -0
  71. package/dist/src/commands/hive-mind-helpers.js +203 -0
  72. package/dist/src/commands/hive-mind-helpers.js.map +1 -0
  73. package/dist/src/commands/hive-mind-ops.d.ts +8 -0
  74. package/dist/src/commands/hive-mind-ops.d.ts.map +1 -0
  75. package/dist/src/commands/hive-mind-ops.js +233 -0
  76. package/dist/src/commands/hive-mind-ops.js.map +1 -0
  77. package/dist/src/commands/hive-mind-spawn.d.ts +12 -0
  78. package/dist/src/commands/hive-mind-spawn.d.ts.map +1 -0
  79. package/dist/src/commands/hive-mind-spawn.js +274 -0
  80. package/dist/src/commands/hive-mind-spawn.js.map +1 -0
  81. package/dist/src/commands/hive-mind.d.ts.map +1 -1
  82. package/dist/src/commands/hive-mind.js +10 -1129
  83. package/dist/src/commands/hive-mind.js.map +1 -1
  84. package/dist/src/commands/hooks-coverage-commands.d.ts +4 -4
  85. package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -1
  86. package/dist/src/commands/hooks-coverage-commands.js +19 -819
  87. package/dist/src/commands/hooks-coverage-commands.js.map +1 -1
  88. package/dist/src/commands/hooks-coverage-gaps.d.ts +7 -0
  89. package/dist/src/commands/hooks-coverage-gaps.d.ts.map +1 -0
  90. package/dist/src/commands/hooks-coverage-gaps.js +334 -0
  91. package/dist/src/commands/hooks-coverage-gaps.js.map +1 -0
  92. package/dist/src/commands/hooks-coverage-routing.d.ts +7 -0
  93. package/dist/src/commands/hooks-coverage-routing.d.ts.map +1 -0
  94. package/dist/src/commands/hooks-coverage-routing.js +399 -0
  95. package/dist/src/commands/hooks-coverage-routing.js.map +1 -0
  96. package/dist/src/commands/init-subcommands.d.ts +8 -0
  97. package/dist/src/commands/init-subcommands.d.ts.map +1 -0
  98. package/dist/src/commands/init-subcommands.js +156 -0
  99. package/dist/src/commands/init-subcommands.js.map +1 -0
  100. package/dist/src/commands/init-upgrade.d.ts +6 -0
  101. package/dist/src/commands/init-upgrade.d.ts.map +1 -0
  102. package/dist/src/commands/init-upgrade.js +203 -0
  103. package/dist/src/commands/init-upgrade.js.map +1 -0
  104. package/dist/src/commands/init-wizard.d.ts +6 -0
  105. package/dist/src/commands/init-wizard.d.ts.map +1 -0
  106. package/dist/src/commands/init-wizard.js +246 -0
  107. package/dist/src/commands/init-wizard.js.map +1 -0
  108. package/dist/src/commands/init.d.ts.map +1 -1
  109. package/dist/src/commands/init.js +6 -623
  110. package/dist/src/commands/init.js.map +1 -1
  111. package/dist/src/commands/memory-admin.d.ts +10 -0
  112. package/dist/src/commands/memory-admin.d.ts.map +1 -0
  113. package/dist/src/commands/memory-admin.js +433 -0
  114. package/dist/src/commands/memory-admin.js.map +1 -0
  115. package/dist/src/commands/memory-crud.d.ts +9 -0
  116. package/dist/src/commands/memory-crud.d.ts.map +1 -0
  117. package/dist/src/commands/memory-crud.js +342 -0
  118. package/dist/src/commands/memory-crud.js.map +1 -0
  119. package/dist/src/commands/memory-list.d.ts +10 -0
  120. package/dist/src/commands/memory-list.d.ts.map +1 -0
  121. package/dist/src/commands/memory-list.js +321 -0
  122. package/dist/src/commands/memory-list.js.map +1 -0
  123. package/dist/src/commands/memory-transfer.d.ts +9 -0
  124. package/dist/src/commands/memory-transfer.d.ts.map +1 -0
  125. package/dist/src/commands/memory-transfer.js +372 -0
  126. package/dist/src/commands/memory-transfer.js.map +1 -0
  127. package/dist/src/commands/memory.d.ts +6 -0
  128. package/dist/src/commands/memory.d.ts.map +1 -1
  129. package/dist/src/commands/memory.js +10 -1441
  130. package/dist/src/commands/memory.js.map +1 -1
  131. package/dist/src/commands/neural-core.d.ts +8 -0
  132. package/dist/src/commands/neural-core.d.ts.map +1 -0
  133. package/dist/src/commands/neural-core.js +274 -0
  134. package/dist/src/commands/neural-core.js.map +1 -0
  135. package/dist/src/commands/neural-optimize.d.ts +7 -0
  136. package/dist/src/commands/neural-optimize.d.ts.map +1 -0
  137. package/dist/src/commands/neural-optimize.js +332 -0
  138. package/dist/src/commands/neural-optimize.js.map +1 -0
  139. package/dist/src/commands/neural-registry.d.ts +7 -0
  140. package/dist/src/commands/neural-registry.d.ts.map +1 -0
  141. package/dist/src/commands/neural-registry.js +290 -0
  142. package/dist/src/commands/neural-registry.js.map +1 -0
  143. package/dist/src/commands/neural.d.ts.map +1 -1
  144. package/dist/src/commands/neural.js +3 -974
  145. package/dist/src/commands/neural.js.map +1 -1
  146. package/dist/src/commands/platforms.d.ts.map +1 -1
  147. package/dist/src/commands/platforms.js +327 -7
  148. package/dist/src/commands/platforms.js.map +1 -1
  149. package/dist/src/commands/security-cve.d.ts +6 -0
  150. package/dist/src/commands/security-cve.d.ts.map +1 -0
  151. package/dist/src/commands/security-cve.js +310 -0
  152. package/dist/src/commands/security-cve.js.map +1 -0
  153. package/dist/src/commands/security-misc.d.ts +9 -0
  154. package/dist/src/commands/security-misc.d.ts.map +1 -0
  155. package/dist/src/commands/security-misc.js +293 -0
  156. package/dist/src/commands/security-misc.js.map +1 -0
  157. package/dist/src/commands/security-scan.d.ts +18 -0
  158. package/dist/src/commands/security-scan.d.ts.map +1 -0
  159. package/dist/src/commands/security-scan.js +328 -0
  160. package/dist/src/commands/security-scan.js.map +1 -0
  161. package/dist/src/commands/security.d.ts.map +1 -1
  162. package/dist/src/commands/security.js +3 -958
  163. package/dist/src/commands/security.js.map +1 -1
  164. package/dist/src/commands/session.js +1 -1
  165. package/dist/src/commands/session.js.map +1 -1
  166. package/dist/src/commands/swarm.d.ts.map +1 -1
  167. package/dist/src/commands/swarm.js +23 -17
  168. package/dist/src/commands/swarm.js.map +1 -1
  169. package/dist/src/index.d.ts.map +1 -1
  170. package/dist/src/index.js +8 -37
  171. package/dist/src/index.js.map +1 -1
  172. package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
  173. package/dist/src/mcp-tools/swarm-tools.js +77 -0
  174. package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
  175. package/dist/src/parser.d.ts.map +1 -1
  176. package/dist/src/parser.js +11 -6
  177. package/dist/src/parser.js.map +1 -1
  178. package/dist/src/routing/llm-caller.d.ts.map +1 -1
  179. package/dist/src/routing/llm-caller.js +1 -2
  180. package/dist/src/routing/llm-caller.js.map +1 -1
  181. package/dist/tsconfig.tsbuildinfo +1 -1
  182. package/package.json +2 -3
  183. package/scripts/understand-analyze.mjs +1 -1
@@ -0,0 +1,399 @@
1
+ /**
2
+ * Coverage-aware routing commands: coverage-route, coverage-suggest
3
+ */
4
+ import { output } from '../output.js';
5
+ import { callMCPTool } from '../mcp-client.js';
6
+ import { readCoverageFromDisk, classifyCoverageGap, suggestAgentsForFile, } from './hooks-coverage-utils.js';
7
+ export const coverageRouteCommand = {
8
+ name: 'coverage-route',
9
+ description: 'Route task to agents based on test coverage gaps (monovector integration)',
10
+ options: [
11
+ {
12
+ name: 'task',
13
+ short: 't',
14
+ description: 'Task description to route',
15
+ type: 'string',
16
+ required: true
17
+ },
18
+ {
19
+ name: 'threshold',
20
+ description: 'Coverage threshold percentage (default: 80)',
21
+ type: 'number',
22
+ default: 80
23
+ },
24
+ {
25
+ name: 'no-monovector',
26
+ description: 'Disable monovector integration',
27
+ type: 'boolean',
28
+ default: false
29
+ }
30
+ ],
31
+ examples: [
32
+ { command: 'monomind hooks coverage-route -t "fix bug in auth"', description: 'Route with coverage awareness' },
33
+ { command: 'monomind hooks coverage-route -t "add tests" --threshold 90', description: 'Route with custom threshold' }
34
+ ],
35
+ action: async (ctx) => {
36
+ const task = ctx.args[0] || ctx.flags.task;
37
+ const threshold = ctx.flags.threshold || 80;
38
+ const useMonovector = !ctx.flags['no-monovector'];
39
+ if (!task) {
40
+ output.printError('Task description is required. Use --task or -t flag.');
41
+ return { success: false, exitCode: 1 };
42
+ }
43
+ const spinner = output.createSpinner({ text: 'Analyzing coverage and routing task...' });
44
+ spinner.start();
45
+ const diskCoverage = readCoverageFromDisk();
46
+ if (diskCoverage.found) {
47
+ spinner.succeed(`Coverage data loaded from ${diskCoverage.source}`);
48
+ const taskLower = task.toLowerCase();
49
+ const taskWords = taskLower.split(/\s+/).filter(w => w.length > 2);
50
+ const scoredFiles = diskCoverage.entries
51
+ .filter(e => e.lines < threshold)
52
+ .map(e => {
53
+ const fileNameLower = e.filePath.toLowerCase();
54
+ let relevance = 0;
55
+ for (const word of taskWords) {
56
+ if (fileNameLower.includes(word))
57
+ relevance += 2;
58
+ }
59
+ const coveragePenalty = e.lines / 100;
60
+ return { ...e, relevance, score: relevance + (1 - coveragePenalty) };
61
+ })
62
+ .sort((a, b) => b.score - a.score);
63
+ const gaps = scoredFiles.slice(0, 8).map(e => {
64
+ const { gapType, priority } = classifyCoverageGap(e.lines, threshold);
65
+ return {
66
+ filePath: e.filePath,
67
+ coveragePercent: e.lines,
68
+ gapType,
69
+ priority,
70
+ suggestedAgents: suggestAgentsForFile(e.filePath),
71
+ reason: `${e.lines.toFixed(1)}% coverage, below ${threshold}%`,
72
+ };
73
+ });
74
+ const criticalGaps = gaps.filter(g => g.gapType === 'critical').length;
75
+ const primaryAgent = taskLower.includes('test') ? 'tester' :
76
+ taskLower.includes('security') || taskLower.includes('auth') ? 'security-auditor' :
77
+ taskLower.includes('fix') || taskLower.includes('bug') ? 'coder' : 'tester';
78
+ const suggestions = [];
79
+ if (criticalGaps > 0)
80
+ suggestions.push(`${criticalGaps} critical coverage gaps need immediate attention`);
81
+ if (diskCoverage.summary.overallLineCoverage < threshold) {
82
+ suggestions.push(`Overall line coverage (${diskCoverage.summary.overallLineCoverage.toFixed(1)}%) is below ${threshold}% threshold`);
83
+ }
84
+ if (scoredFiles.length > 8)
85
+ suggestions.push(`${scoredFiles.length - 8} additional files with low coverage`);
86
+ const result = {
87
+ success: true,
88
+ task,
89
+ coverageAware: true,
90
+ gaps,
91
+ routing: {
92
+ primaryAgent,
93
+ confidence: gaps.length > 0 ? 0.85 : 0.6,
94
+ reason: gaps.length > 0
95
+ ? `Routing to ${primaryAgent} based on ${gaps.length} coverage gaps related to task`
96
+ : `No coverage gaps found related to task, routing to ${primaryAgent}`,
97
+ coverageImpact: gaps.length > 0 ? 'high' : 'low',
98
+ },
99
+ suggestions,
100
+ metrics: {
101
+ filesAnalyzed: diskCoverage.summary.totalFiles,
102
+ totalGaps: scoredFiles.length,
103
+ criticalGaps,
104
+ avgCoverage: diskCoverage.summary.overallLineCoverage,
105
+ },
106
+ source: diskCoverage.source,
107
+ };
108
+ if (ctx.flags.format === 'json') {
109
+ output.printJson(result);
110
+ return { success: true, data: result };
111
+ }
112
+ output.writeln();
113
+ output.printBox([
114
+ `Agent: ${output.highlight(result.routing.primaryAgent)}`,
115
+ `Confidence: ${(result.routing.confidence * 100).toFixed(1)}%`,
116
+ `Coverage-Aware: ${output.success('Yes')} (from ${diskCoverage.source})`,
117
+ `Reason: ${result.routing.reason}`
118
+ ].join('\n'), 'Coverage-Aware Routing');
119
+ if (gaps.length > 0) {
120
+ output.writeln();
121
+ output.writeln(output.bold('Priority Coverage Gaps'));
122
+ output.printTable({
123
+ columns: [
124
+ { key: 'filePath', header: 'File', width: 35, format: (v) => {
125
+ const s = String(v);
126
+ return s.length > 32 ? '...' + s.slice(-32) : s;
127
+ } },
128
+ { key: 'coveragePercent', header: 'Coverage', width: 10, align: 'right', format: (v) => `${Number(v).toFixed(1)}%` },
129
+ { key: 'gapType', header: 'Type', width: 10 },
130
+ { key: 'suggestedAgents', header: 'Agent', width: 15, format: (v) => Array.isArray(v) ? v[0] || '' : String(v) }
131
+ ],
132
+ data: gaps.slice(0, 8)
133
+ });
134
+ }
135
+ if (result.metrics.filesAnalyzed > 0) {
136
+ output.writeln();
137
+ output.writeln(output.bold('Coverage Metrics'));
138
+ output.printList([
139
+ `Files Analyzed: ${result.metrics.filesAnalyzed}`,
140
+ `Total Gaps: ${result.metrics.totalGaps}`,
141
+ `Critical Gaps: ${result.metrics.criticalGaps}`,
142
+ `Average Coverage: ${result.metrics.avgCoverage.toFixed(1)}%`
143
+ ]);
144
+ }
145
+ if (suggestions.length > 0) {
146
+ output.writeln();
147
+ output.writeln(output.bold('Suggestions'));
148
+ output.printList(suggestions.map(s => output.dim(s)));
149
+ }
150
+ return { success: true, data: result };
151
+ }
152
+ try {
153
+ const result = await callMCPTool('hooks_coverage-route', { task, threshold, useMonovector });
154
+ spinner.stop();
155
+ if (ctx.flags.format === 'json') {
156
+ output.printJson(result);
157
+ return { success: true, data: result };
158
+ }
159
+ output.writeln();
160
+ output.printBox([
161
+ `Agent: ${output.highlight(result.routing.primaryAgent)}`,
162
+ `Confidence: ${(result.routing.confidence * 100).toFixed(1)}%`,
163
+ `Coverage-Aware: ${result.coverageAware ? output.success('Yes') : output.dim('No coverage data')}`,
164
+ `Reason: ${result.routing.reason}`
165
+ ].join('\n'), 'Coverage-Aware Routing');
166
+ if (result.gaps.length > 0) {
167
+ output.writeln();
168
+ output.writeln(output.bold('Priority Coverage Gaps'));
169
+ output.printTable({
170
+ columns: [
171
+ { key: 'filePath', header: 'File', width: 35, format: (v) => {
172
+ const s = String(v);
173
+ return s.length > 32 ? '...' + s.slice(-32) : s;
174
+ } },
175
+ { key: 'coveragePercent', header: 'Coverage', width: 10, align: 'right', format: (v) => `${Number(v).toFixed(1)}%` },
176
+ { key: 'gapType', header: 'Type', width: 10 },
177
+ { key: 'suggestedAgents', header: 'Agent', width: 15, format: (v) => Array.isArray(v) ? v[0] || '' : String(v) }
178
+ ],
179
+ data: result.gaps.slice(0, 8)
180
+ });
181
+ }
182
+ if (result.metrics.filesAnalyzed > 0) {
183
+ output.writeln();
184
+ output.writeln(output.bold('Coverage Metrics'));
185
+ output.printList([
186
+ `Files Analyzed: ${result.metrics.filesAnalyzed}`,
187
+ `Total Gaps: ${result.metrics.totalGaps}`,
188
+ `Critical Gaps: ${result.metrics.criticalGaps}`,
189
+ `Average Coverage: ${result.metrics.avgCoverage.toFixed(1)}%`
190
+ ]);
191
+ }
192
+ if (result.suggestions.length > 0) {
193
+ output.writeln();
194
+ output.writeln(output.bold('Suggestions'));
195
+ output.printList(result.suggestions.map(s => output.dim(s)));
196
+ }
197
+ return { success: true, data: result };
198
+ }
199
+ catch {
200
+ spinner.fail('No coverage data found');
201
+ output.writeln();
202
+ output.printWarning('No coverage data found. Run your test suite with coverage first.');
203
+ output.writeln();
204
+ output.printList([
205
+ 'Jest: npx jest --coverage',
206
+ 'Vitest: npx vitest --coverage',
207
+ 'nyc: npx nyc npm test',
208
+ 'c8: npx c8 npm test',
209
+ ]);
210
+ output.writeln();
211
+ output.writeln(output.dim('Expected files: coverage/coverage-summary.json, coverage/lcov.info, or .nyc_output/out.json'));
212
+ return { success: false, exitCode: 1 };
213
+ }
214
+ }
215
+ };
216
+ export const coverageSuggestCommand = {
217
+ name: 'coverage-suggest',
218
+ description: 'Suggest coverage improvements for a path (monovector integration)',
219
+ options: [
220
+ {
221
+ name: 'path',
222
+ short: 'p',
223
+ description: 'Path to analyze for coverage suggestions',
224
+ type: 'string',
225
+ required: true
226
+ },
227
+ {
228
+ name: 'threshold',
229
+ description: 'Coverage threshold percentage (default: 80)',
230
+ type: 'number',
231
+ default: 80
232
+ },
233
+ {
234
+ name: 'limit',
235
+ short: 'l',
236
+ description: 'Maximum number of suggestions (default: 20)',
237
+ type: 'number',
238
+ default: 20
239
+ }
240
+ ],
241
+ examples: [
242
+ { command: 'monomind hooks coverage-suggest -p src/', description: 'Suggest improvements for src/' },
243
+ { command: 'monomind hooks coverage-suggest -p src/services --threshold 90', description: 'Stricter threshold' }
244
+ ],
245
+ action: async (ctx) => {
246
+ const targetPath = ctx.args[0] || ctx.flags.path;
247
+ const threshold = ctx.flags.threshold || 80;
248
+ const limit = ctx.flags.limit || 20;
249
+ if (!targetPath) {
250
+ output.printError('Path is required. Use --path or -p flag.');
251
+ return { success: false, exitCode: 1 };
252
+ }
253
+ const spinner = output.createSpinner({ text: `Analyzing coverage for ${targetPath}...` });
254
+ spinner.start();
255
+ const diskCoverage = readCoverageFromDisk();
256
+ if (diskCoverage.found) {
257
+ spinner.succeed(`Coverage data loaded from ${diskCoverage.source}`);
258
+ const pathLower = targetPath.toLowerCase().replace(/\\/g, '/');
259
+ const matchingEntries = diskCoverage.entries.filter(e => {
260
+ const fileLower = e.filePath.toLowerCase().replace(/\\/g, '/');
261
+ return fileLower.includes(pathLower);
262
+ });
263
+ const belowThreshold = matchingEntries.filter(e => e.lines < threshold);
264
+ const suggestions = belowThreshold.slice(0, limit).map(e => {
265
+ const { gapType, priority } = classifyCoverageGap(e.lines, threshold);
266
+ return {
267
+ filePath: e.filePath,
268
+ coveragePercent: e.lines,
269
+ gapType,
270
+ priority,
271
+ suggestedAgents: suggestAgentsForFile(e.filePath),
272
+ reason: e.lines === 0 ? 'No coverage at all' :
273
+ e.lines < 20 ? 'Very low coverage, needs tests' :
274
+ e.lines < 50 ? 'Below 50%, add more tests' :
275
+ `Below ${threshold}% threshold`,
276
+ };
277
+ });
278
+ const totalLinesCov = matchingEntries.length > 0
279
+ ? matchingEntries.reduce((acc, e) => acc + e.lines, 0) / matchingEntries.length
280
+ : 0;
281
+ const totalBranchesCov = matchingEntries.length > 0
282
+ ? matchingEntries.reduce((acc, e) => acc + e.branches, 0) / matchingEntries.length
283
+ : 0;
284
+ const prioritizedFiles = belowThreshold.slice(0, 5).map(e => e.filePath);
285
+ const result = {
286
+ success: true,
287
+ path: targetPath,
288
+ suggestions,
289
+ summary: {
290
+ totalFiles: matchingEntries.length,
291
+ overallLineCoverage: totalLinesCov,
292
+ overallBranchCoverage: totalBranchesCov,
293
+ filesBelowThreshold: belowThreshold.length,
294
+ },
295
+ prioritizedFiles,
296
+ monovectorAvailable: false,
297
+ source: diskCoverage.source,
298
+ };
299
+ if (ctx.flags.format === 'json') {
300
+ output.printJson(result);
301
+ return { success: true, data: result };
302
+ }
303
+ output.writeln();
304
+ output.printBox([
305
+ `Path: ${output.highlight(targetPath)}`,
306
+ `Files Analyzed: ${result.summary.totalFiles}`,
307
+ `Line Coverage: ${result.summary.overallLineCoverage.toFixed(1)}%`,
308
+ `Branch Coverage: ${result.summary.overallBranchCoverage.toFixed(1)}%`,
309
+ `Below Threshold: ${result.summary.filesBelowThreshold} files`,
310
+ `Source: ${output.highlight(diskCoverage.source)}`
311
+ ].join('\n'), 'Coverage Summary');
312
+ if (suggestions.length > 0) {
313
+ output.writeln();
314
+ output.writeln(output.bold('Coverage Improvement Suggestions'));
315
+ output.printTable({
316
+ columns: [
317
+ { key: 'filePath', header: 'File', width: 40, format: (v) => {
318
+ const s = String(v);
319
+ return s.length > 37 ? '...' + s.slice(-37) : s;
320
+ } },
321
+ { key: 'coveragePercent', header: 'Coverage', width: 10, align: 'right', format: (v) => `${Number(v).toFixed(1)}%` },
322
+ { key: 'gapType', header: 'Priority', width: 10 },
323
+ { key: 'reason', header: 'Reason', width: 25 }
324
+ ],
325
+ data: suggestions.slice(0, 15)
326
+ });
327
+ }
328
+ else {
329
+ output.writeln();
330
+ output.printSuccess('All files meet coverage threshold!');
331
+ }
332
+ if (prioritizedFiles.length > 0) {
333
+ output.writeln();
334
+ output.writeln(output.bold('Priority Files (Top 5)'));
335
+ output.printList(prioritizedFiles.slice(0, 5).map(f => output.highlight(f)));
336
+ }
337
+ return { success: true, data: result };
338
+ }
339
+ try {
340
+ const result = await callMCPTool('hooks_coverage-suggest', { path: targetPath, threshold, limit });
341
+ spinner.stop();
342
+ if (ctx.flags.format === 'json') {
343
+ output.printJson(result);
344
+ return { success: true, data: result };
345
+ }
346
+ output.writeln();
347
+ output.printBox([
348
+ `Path: ${output.highlight(result.path)}`,
349
+ `Files Analyzed: ${result.summary.totalFiles}`,
350
+ `Line Coverage: ${result.summary.overallLineCoverage.toFixed(1)}%`,
351
+ `Branch Coverage: ${result.summary.overallBranchCoverage.toFixed(1)}%`,
352
+ `Below Threshold: ${result.summary.filesBelowThreshold} files`,
353
+ `Keyword routing: ${result.monovectorAvailable ? output.success('Available') : output.dim('Unavailable')}`
354
+ ].join('\n'), 'Coverage Summary');
355
+ if (result.suggestions.length > 0) {
356
+ output.writeln();
357
+ output.writeln(output.bold('Coverage Improvement Suggestions'));
358
+ output.printTable({
359
+ columns: [
360
+ { key: 'filePath', header: 'File', width: 40, format: (v) => {
361
+ const s = String(v);
362
+ return s.length > 37 ? '...' + s.slice(-37) : s;
363
+ } },
364
+ { key: 'coveragePercent', header: 'Coverage', width: 10, align: 'right', format: (v) => `${Number(v).toFixed(1)}%` },
365
+ { key: 'gapType', header: 'Priority', width: 10 },
366
+ { key: 'reason', header: 'Reason', width: 25 }
367
+ ],
368
+ data: result.suggestions.slice(0, 15)
369
+ });
370
+ }
371
+ else {
372
+ output.writeln();
373
+ output.printSuccess('All files meet coverage threshold!');
374
+ }
375
+ if (result.prioritizedFiles.length > 0) {
376
+ output.writeln();
377
+ output.writeln(output.bold('Priority Files (Top 5)'));
378
+ output.printList(result.prioritizedFiles.slice(0, 5).map(f => output.highlight(f)));
379
+ }
380
+ return { success: true, data: result };
381
+ }
382
+ catch {
383
+ spinner.fail('No coverage data found');
384
+ output.writeln();
385
+ output.printWarning('No coverage data found. Run your test suite with coverage first.');
386
+ output.writeln();
387
+ output.printList([
388
+ 'Jest: npx jest --coverage',
389
+ 'Vitest: npx vitest --coverage',
390
+ 'nyc: npx nyc npm test',
391
+ 'c8: npx c8 npm test',
392
+ ]);
393
+ output.writeln();
394
+ output.writeln(output.dim('Expected files: coverage/coverage-summary.json, coverage/lcov.info, or .nyc_output/out.json'));
395
+ return { success: false, exitCode: 1 };
396
+ }
397
+ }
398
+ };
399
+ //# sourceMappingURL=hooks-coverage-routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-coverage-routing.js","sourceRoot":"","sources":["../../../src/commands/hooks-coverage-routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Init subcommands: check, skills, hooks
3
+ */
4
+ import type { Command } from '../types.js';
5
+ export declare const checkCommand: Command;
6
+ export declare const skillsCommand: Command;
7
+ export declare const hooksCommand: Command;
8
+ //# sourceMappingURL=init-subcommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-subcommands.d.ts","sourceRoot":"","sources":["../../../src/commands/init-subcommands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAoB1E,eAAO,MAAM,YAAY,EAAE,OAoC1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OAoD3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,OA2D1B,CAAC"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Init subcommands: check, skills, hooks
3
+ */
4
+ import { output } from '../output.js';
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import { executeInit, DEFAULT_INIT_OPTIONS, MINIMAL_INIT_OPTIONS, } from '../init/index.js';
8
+ function isInitialized(cwd) {
9
+ const claudePath = path.join(cwd, '.claude', 'settings.json');
10
+ const monomindPath = path.join(cwd, '.monomind', 'config.yaml');
11
+ return {
12
+ claude: fs.existsSync(claudePath),
13
+ monomind: fs.existsSync(monomindPath),
14
+ };
15
+ }
16
+ export const checkCommand = {
17
+ name: 'check',
18
+ description: 'Check if MonoMind is initialized',
19
+ action: async (ctx) => {
20
+ const initialized = isInitialized(ctx.cwd);
21
+ const result = {
22
+ initialized: initialized.claude || initialized.monomind,
23
+ claude: initialized.claude,
24
+ monomind: initialized.monomind,
25
+ paths: {
26
+ claudeSettings: initialized.claude ? path.join(ctx.cwd, '.claude', 'settings.json') : null,
27
+ monomindConfig: initialized.monomind ? path.join(ctx.cwd, '.monomind', 'config.yaml') : null,
28
+ },
29
+ };
30
+ if (ctx.flags.format === 'json') {
31
+ output.printJson(result);
32
+ return { success: true, data: result };
33
+ }
34
+ if (result.initialized) {
35
+ output.printSuccess('MonoMind is initialized');
36
+ if (initialized.claude) {
37
+ output.printInfo(` Claude Code: .claude/settings.json`);
38
+ }
39
+ if (initialized.monomind) {
40
+ output.printInfo(` Runtime: .monomind/config.yaml`);
41
+ }
42
+ }
43
+ else {
44
+ output.printWarning('MonoMind is not initialized in this directory');
45
+ output.printInfo('Run "monomind init" to initialize');
46
+ }
47
+ return { success: true, data: result };
48
+ },
49
+ };
50
+ export const skillsCommand = {
51
+ name: 'skills',
52
+ description: 'Initialize only skills',
53
+ options: [
54
+ { name: 'all', description: 'Install all skills', type: 'boolean', default: false },
55
+ { name: 'core', description: 'Install core skills', type: 'boolean', default: true },
56
+ { name: 'memory', description: 'Install memory skills', type: 'boolean', default: false },
57
+ { name: 'github', description: 'Install GitHub skills', type: 'boolean', default: false },
58
+ ],
59
+ action: async (ctx) => {
60
+ const options = {
61
+ ...MINIMAL_INIT_OPTIONS,
62
+ targetDir: ctx.cwd,
63
+ force: ctx.flags.force,
64
+ components: {
65
+ settings: false,
66
+ skills: true,
67
+ commands: false,
68
+ agents: false,
69
+ helpers: false,
70
+ statusline: false,
71
+ mcp: false,
72
+ runtime: false,
73
+ claudeMd: false,
74
+ graphify: false,
75
+ },
76
+ skills: {
77
+ all: ctx.flags.all,
78
+ core: ctx.flags.core,
79
+ memory: ctx.flags.memory,
80
+ github: ctx.flags.github,
81
+ browser: false,
82
+ advanced: false,
83
+ },
84
+ };
85
+ const spinner = output.createSpinner({ text: 'Installing skills...' });
86
+ spinner.start();
87
+ const result = await executeInit(options);
88
+ if (result.success) {
89
+ spinner.succeed(`Installed ${result.summary.skillsCount} skills`);
90
+ }
91
+ else {
92
+ spinner.fail('Failed to install skills');
93
+ for (const error of result.errors) {
94
+ output.printError(error);
95
+ }
96
+ }
97
+ return { success: result.success, data: result };
98
+ },
99
+ };
100
+ export const hooksCommand = {
101
+ name: 'hooks',
102
+ description: 'Initialize only hooks configuration',
103
+ options: [
104
+ { name: 'all', description: 'Enable all hooks', type: 'boolean', default: true },
105
+ { name: 'minimal', description: 'Enable only essential hooks', type: 'boolean', default: false },
106
+ ],
107
+ action: async (ctx) => {
108
+ const minimal = ctx.flags.minimal;
109
+ const options = {
110
+ ...DEFAULT_INIT_OPTIONS,
111
+ targetDir: ctx.cwd,
112
+ force: ctx.flags.force,
113
+ components: {
114
+ settings: true,
115
+ skills: false,
116
+ commands: false,
117
+ agents: false,
118
+ helpers: false,
119
+ statusline: false,
120
+ mcp: false,
121
+ runtime: false,
122
+ claudeMd: false,
123
+ graphify: false,
124
+ },
125
+ hooks: minimal
126
+ ? {
127
+ preToolUse: true,
128
+ postToolUse: true,
129
+ userPromptSubmit: false,
130
+ sessionStart: false,
131
+ stop: false,
132
+ preCompact: false,
133
+ notification: false,
134
+ teammateIdle: false,
135
+ taskCompleted: false,
136
+ timeout: 5000,
137
+ continueOnError: true,
138
+ }
139
+ : DEFAULT_INIT_OPTIONS.hooks,
140
+ };
141
+ const spinner = output.createSpinner({ text: 'Creating hooks configuration...' });
142
+ spinner.start();
143
+ const result = await executeInit(options);
144
+ if (result.success) {
145
+ spinner.succeed(`Created settings.json with ${result.summary.hooksEnabled} hooks enabled`);
146
+ }
147
+ else {
148
+ spinner.fail('Failed to create hooks configuration');
149
+ for (const error of result.errors) {
150
+ output.printError(error);
151
+ }
152
+ }
153
+ return { success: result.success, data: result };
154
+ },
155
+ };
156
+ //# sourceMappingURL=init-subcommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-subcommands.js","sourceRoot":"","sources":["../../../src/commands/init-subcommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Init upgrade subcommand — update helpers without losing user data
3
+ */
4
+ import type { Command } from '../types.js';
5
+ export declare const upgradeCommand: Command;
6
+ //# sourceMappingURL=init-upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-upgrade.d.ts","sourceRoot":"","sources":["../../../src/commands/init-upgrade.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAU1E,eAAO,MAAM,cAAc,EAAE,OAgO5B,CAAC"}