monomind 1.18.9 → 1.18.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/@monomind/cli/dist/src/agents/registry-builder.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +2 -3
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-commands.d.ts +1 -2
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-commands.js +1 -2
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-gaps.d.ts +1 -2
- package/packages/@monomind/cli/dist/src/commands/hooks-coverage-gaps.js +2 -117
- package/packages/@monomind/cli/dist/src/commands/hooks.js +1 -2
- package/packages/@monomind/cli/dist/src/commands/index.d.ts +0 -1
- package/packages/@monomind/cli/dist/src/commands/index.js +0 -1
- package/packages/@monomind/cli/dist/src/commands/security-misc.js +0 -1
- package/packages/@monomind/cli/dist/src/init/executor.d.ts +3 -0
- package/packages/@monomind/cli/dist/src/init/executor.js +20 -111
- package/packages/@monomind/cli/dist/src/mcp-client.js +0 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +0 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/index.js +0 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/quality/coverage-analysis/track-trends.d.ts +4 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/quality/test-generation/suggest-tests.d.ts +4 -4
- package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +0 -1
- package/packages/@monomind/cli/package.json +1 -1
- package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.d.ts +0 -134
- package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +0 -340
- package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.d.ts +0 -36
- package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.js +0 -125
- package/packages/@monomind/cli/dist/src/commands/benchmark.d.ts +0 -10
- package/packages/@monomind/cli/dist/src/commands/benchmark.js +0 -586
- package/packages/@monomind/cli/dist/src/commands/migrate.d.ts +0 -8
- package/packages/@monomind/cli/dist/src/commands/migrate.js +0 -789
- package/packages/@monomind/cli/dist/src/commands/monovector/backup.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/monovector/backup.js +0 -752
- package/packages/@monomind/cli/dist/src/commands/monovector/benchmark.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/monovector/benchmark.js +0 -502
- package/packages/@monomind/cli/dist/src/commands/monovector/import.d.ts +0 -18
- package/packages/@monomind/cli/dist/src/commands/monovector/import.js +0 -374
- package/packages/@monomind/cli/dist/src/commands/monovector/index.d.ts +0 -29
- package/packages/@monomind/cli/dist/src/commands/monovector/index.js +0 -129
- package/packages/@monomind/cli/dist/src/commands/monovector/init.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/monovector/init.js +0 -481
- package/packages/@monomind/cli/dist/src/commands/monovector/migrate.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/monovector/migrate.js +0 -500
- package/packages/@monomind/cli/dist/src/commands/monovector/optimize.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/monovector/optimize.js +0 -515
- package/packages/@monomind/cli/dist/src/commands/monovector/setup.d.ts +0 -18
- package/packages/@monomind/cli/dist/src/commands/monovector/setup.js +0 -775
- package/packages/@monomind/cli/dist/src/commands/monovector/status.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/monovector/status.js +0 -491
- package/packages/@monomind/cli/dist/src/commands/progress.d.ts +0 -11
- package/packages/@monomind/cli/dist/src/commands/progress.js +0 -261
- package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.d.ts +0 -14
- package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +0 -353
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monomind",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.11",
|
|
4
4
|
"description": "Monomind - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -34,7 +34,7 @@ function collectMdFiles(root, base = root) {
|
|
|
34
34
|
continue;
|
|
35
35
|
results.push(...collectMdFiles(full, base));
|
|
36
36
|
}
|
|
37
|
-
else if (stat.isFile() && extname(entry) === '.md') {
|
|
37
|
+
else if (stat.isFile() && extname(entry) === '.md' && !entry.startsWith('._')) {
|
|
38
38
|
results.push(full);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -456,9 +456,8 @@ export async function checkMemoryProficiency() {
|
|
|
456
456
|
if (stats.totalDecisions === 0) {
|
|
457
457
|
return {
|
|
458
458
|
name: 'Memory Proficiency',
|
|
459
|
-
status: '
|
|
460
|
-
message: '
|
|
461
|
-
fix: 'Complete tasks with pre-task/post-task hooks enabled',
|
|
459
|
+
status: 'pass',
|
|
460
|
+
message: 'AutoMem active — no decisions recorded yet (builds up over sessions)',
|
|
462
461
|
};
|
|
463
462
|
}
|
|
464
463
|
const successPct = Math.round(stats.successRate * 100);
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Hooks Coverage Commands
|
|
3
|
-
* Coverage-aware routing
|
|
3
|
+
* Coverage-aware routing and statusline generation.
|
|
4
4
|
* Extracted from hooks.ts to reduce file size.
|
|
5
5
|
*/
|
|
6
6
|
import type { Command } from '../types.js';
|
|
7
7
|
export { coverageRouteCommand } from './hooks-coverage-routing.js';
|
|
8
8
|
export { coverageSuggestCommand } from './hooks-coverage-routing.js';
|
|
9
9
|
export { coverageGapsCommand } from './hooks-coverage-gaps.js';
|
|
10
|
-
export { progressHookCommand } from './hooks-coverage-gaps.js';
|
|
11
10
|
export declare const statuslineCommand: Command;
|
|
12
11
|
//# sourceMappingURL=hooks-coverage-commands.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Hooks Coverage Commands
|
|
3
|
-
* Coverage-aware routing
|
|
3
|
+
* Coverage-aware routing and statusline generation.
|
|
4
4
|
* Extracted from hooks.ts to reduce file size.
|
|
5
5
|
*/
|
|
6
6
|
import { output } from '../output.js';
|
|
@@ -8,7 +8,6 @@ import { output } from '../output.js';
|
|
|
8
8
|
export { coverageRouteCommand } from './hooks-coverage-routing.js';
|
|
9
9
|
export { coverageSuggestCommand } from './hooks-coverage-routing.js';
|
|
10
10
|
export { coverageGapsCommand } from './hooks-coverage-gaps.js';
|
|
11
|
-
export { progressHookCommand } from './hooks-coverage-gaps.js';
|
|
12
11
|
// Statusline subcommand - generates dynamic status display
|
|
13
12
|
export const statuslineCommand = {
|
|
14
13
|
name: 'statusline',
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Coverage gaps
|
|
2
|
+
* Coverage gaps hook commands
|
|
3
3
|
*/
|
|
4
4
|
import type { Command } from '../types.js';
|
|
5
5
|
export declare const coverageGapsCommand: Command;
|
|
6
|
-
export declare const progressHookCommand: Command;
|
|
7
6
|
//# sourceMappingURL=hooks-coverage-gaps.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Coverage gaps
|
|
2
|
+
* Coverage gaps hook commands
|
|
3
3
|
*/
|
|
4
4
|
import { output } from '../output.js';
|
|
5
|
-
import { callMCPTool
|
|
5
|
+
import { callMCPTool } from '../mcp-client.js';
|
|
6
6
|
import { readCoverageFromDisk, classifyCoverageGap, suggestAgentsForFile, } from './hooks-coverage-utils.js';
|
|
7
7
|
export const coverageGapsCommand = {
|
|
8
8
|
name: 'coverage-gaps',
|
|
@@ -216,119 +216,4 @@ export const coverageGapsCommand = {
|
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
};
|
|
219
|
-
export const progressHookCommand = {
|
|
220
|
-
name: 'progress',
|
|
221
|
-
description: 'Check implementation progress via hooks',
|
|
222
|
-
options: [
|
|
223
|
-
{
|
|
224
|
-
name: 'detailed',
|
|
225
|
-
short: 'd',
|
|
226
|
-
description: 'Show detailed breakdown by category',
|
|
227
|
-
type: 'boolean',
|
|
228
|
-
default: false
|
|
229
|
-
},
|
|
230
|
-
{
|
|
231
|
-
name: 'sync',
|
|
232
|
-
short: 's',
|
|
233
|
-
description: 'Sync and persist progress to file',
|
|
234
|
-
type: 'boolean',
|
|
235
|
-
default: false
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
name: 'summary',
|
|
239
|
-
description: 'Show human-readable summary',
|
|
240
|
-
type: 'boolean',
|
|
241
|
-
default: false
|
|
242
|
-
}
|
|
243
|
-
],
|
|
244
|
-
examples: [
|
|
245
|
-
{ command: 'monomind hooks progress', description: 'Check current progress' },
|
|
246
|
-
{ command: 'monomind hooks progress -d', description: 'Detailed breakdown' },
|
|
247
|
-
{ command: 'monomind hooks progress --sync', description: 'Sync progress to file' },
|
|
248
|
-
{ command: 'monomind hooks progress --summary', description: 'Human-readable summary' }
|
|
249
|
-
],
|
|
250
|
-
action: async (ctx) => {
|
|
251
|
-
const detailed = ctx.flags.detailed;
|
|
252
|
-
const sync = ctx.flags.sync;
|
|
253
|
-
const summary = ctx.flags.summary;
|
|
254
|
-
try {
|
|
255
|
-
if (summary) {
|
|
256
|
-
const spinner = output.createSpinner({ text: 'Getting progress summary...' });
|
|
257
|
-
spinner.start();
|
|
258
|
-
const result = await callMCPTool('progress_summary', {});
|
|
259
|
-
spinner.stop();
|
|
260
|
-
if (ctx.flags.format === 'json') {
|
|
261
|
-
output.printJson(result);
|
|
262
|
-
return { success: true, data: result };
|
|
263
|
-
}
|
|
264
|
-
output.writeln();
|
|
265
|
-
output.writeln(result.summary);
|
|
266
|
-
return { success: true, data: result };
|
|
267
|
-
}
|
|
268
|
-
if (sync) {
|
|
269
|
-
const spinner = output.createSpinner({ text: 'Syncing progress...' });
|
|
270
|
-
spinner.start();
|
|
271
|
-
const result = await callMCPTool('progress_sync', {});
|
|
272
|
-
spinner.stop();
|
|
273
|
-
if (ctx.flags.format === 'json') {
|
|
274
|
-
output.printJson(result);
|
|
275
|
-
return { success: true, data: result };
|
|
276
|
-
}
|
|
277
|
-
output.writeln();
|
|
278
|
-
output.printSuccess(`Progress synced: ${result.progress}%`);
|
|
279
|
-
output.writeln(output.dim(` Persisted to .monomind/metrics/v1-progress.json`));
|
|
280
|
-
output.writeln(output.dim(` Last updated: ${result.lastUpdated}`));
|
|
281
|
-
return { success: true, data: result };
|
|
282
|
-
}
|
|
283
|
-
const spinner = output.createSpinner({ text: 'Checking v1 progress...' });
|
|
284
|
-
spinner.start();
|
|
285
|
-
const result = await callMCPTool('progress_check', { detailed });
|
|
286
|
-
spinner.stop();
|
|
287
|
-
if (ctx.flags.format === 'json') {
|
|
288
|
-
output.printJson(result);
|
|
289
|
-
return { success: true, data: result };
|
|
290
|
-
}
|
|
291
|
-
output.writeln();
|
|
292
|
-
const progressValue = result.overall ?? result.progress ?? 0;
|
|
293
|
-
const barWidth = 30;
|
|
294
|
-
const filled = Math.round((progressValue / 100) * barWidth);
|
|
295
|
-
const empty = barWidth - filled;
|
|
296
|
-
const bar = output.success('█'.repeat(filled)) + output.dim('░'.repeat(empty));
|
|
297
|
-
output.writeln(output.bold('v1 Implementation Progress'));
|
|
298
|
-
output.writeln();
|
|
299
|
-
output.writeln(`[${bar}] ${progressValue}%`);
|
|
300
|
-
output.writeln();
|
|
301
|
-
if (detailed && result.cli) {
|
|
302
|
-
output.writeln(output.highlight('CLI Commands:') + ` ${result.cli.progress}% (${result.cli.commands}/${result.cli.target})`);
|
|
303
|
-
output.writeln(output.highlight('MCP Tools:') + ` ${result.mcp?.progress ?? 0}% (${result.mcp?.tools ?? 0}/${result.mcp?.target ?? 0})`);
|
|
304
|
-
output.writeln(output.highlight('Hooks:') + ` ${result.hooks?.progress ?? 0}% (${result.hooks?.subcommands ?? 0}/${result.hooks?.target ?? 0})`);
|
|
305
|
-
output.writeln(output.highlight('Packages:') + ` ${result.packages?.progress ?? 0}% (${result.packages?.total ?? 0}/${result.packages?.target ?? 0})`);
|
|
306
|
-
output.writeln(output.highlight('DDD Structure:') + ` ${result.ddd?.progress ?? 0}% (${result.packages?.withDDD ?? 0}/${result.packages?.total ?? 0})`);
|
|
307
|
-
output.writeln();
|
|
308
|
-
if (result.codebase) {
|
|
309
|
-
output.writeln(output.dim(`Codebase: ${result.codebase.totalFiles} files, ${result.codebase.totalLines.toLocaleString()} lines`));
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
else if (result.breakdown) {
|
|
313
|
-
output.writeln('Breakdown:');
|
|
314
|
-
for (const [category, value] of Object.entries(result.breakdown)) {
|
|
315
|
-
output.writeln(` ${output.highlight(category)}: ${value}`);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
if (result.lastUpdated) {
|
|
319
|
-
output.writeln(output.dim(`Last updated: ${result.lastUpdated}`));
|
|
320
|
-
}
|
|
321
|
-
return { success: true, data: result };
|
|
322
|
-
}
|
|
323
|
-
catch (error) {
|
|
324
|
-
if (error instanceof MCPClientError) {
|
|
325
|
-
output.printError(`Progress check failed: ${error.message}`);
|
|
326
|
-
}
|
|
327
|
-
else {
|
|
328
|
-
output.printError(`Progress check failed: ${String(error)}`);
|
|
329
|
-
}
|
|
330
|
-
return { success: false, exitCode: 1 };
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
};
|
|
334
219
|
//# sourceMappingURL=hooks-coverage-gaps.js.map
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import { output } from '../output.js';
|
|
14
14
|
import { callMCPTool, MCPClientError } from '../mcp-client.js';
|
|
15
15
|
import { intelligenceCommand, workerCommand } from './hooks-workers.js';
|
|
16
|
-
import { coverageRouteCommand, coverageSuggestCommand, coverageGapsCommand,
|
|
16
|
+
import { coverageRouteCommand, coverageSuggestCommand, coverageGapsCommand, statuslineCommand, } from './hooks-coverage-commands.js';
|
|
17
17
|
import { tokenOptimizeCommand, modelRouteCommand, modelOutcomeCommand, modelStatsCommand, teammateIdleCommand, taskCompletedCommand, notifyCommand, } from './hooks-extended-commands.js';
|
|
18
18
|
import { preEditCommand, postEditCommand, preCommandCommand, postCommandCommand, } from './hooks-core-commands.js';
|
|
19
19
|
import { routeCommand, explainCommand, pretrainCommand, buildAgentsCommand, metricsCommand, transferCommand, listCommand, } from './hooks-routing-commands.js';
|
|
@@ -423,7 +423,6 @@ export const hooksCommand = {
|
|
|
423
423
|
intelligenceCommand,
|
|
424
424
|
notifyCommand,
|
|
425
425
|
workerCommand,
|
|
426
|
-
progressHookCommand,
|
|
427
426
|
statuslineCommand,
|
|
428
427
|
// Coverage-aware routing commands
|
|
429
428
|
coverageRouteCommand,
|
|
@@ -53,7 +53,6 @@ export declare function getCompletionsCommand(): Promise<Command | undefined>;
|
|
|
53
53
|
export declare function getAnalyzeCommand(): Promise<Command | undefined>;
|
|
54
54
|
export declare function getRouteCommand(): Promise<Command | undefined>;
|
|
55
55
|
export declare function getIssuesCommand(): Promise<Command | undefined>;
|
|
56
|
-
export declare function getMonovectorCommand(): Promise<Command | undefined>;
|
|
57
56
|
export declare function getGuidanceCommand(): Promise<Command | undefined>;
|
|
58
57
|
export declare function getCleanupCommand(): Promise<Command | undefined>;
|
|
59
58
|
export declare function getAutopilotCommand(): Promise<Command | undefined>;
|
|
@@ -234,7 +234,6 @@ export async function getCompletionsCommand() { return loadCommand('completions'
|
|
|
234
234
|
export async function getAnalyzeCommand() { return loadCommand('analyze'); }
|
|
235
235
|
export async function getRouteCommand() { return loadCommand('route'); }
|
|
236
236
|
export async function getIssuesCommand() { return loadCommand('issues'); }
|
|
237
|
-
export async function getMonovectorCommand() { return loadCommand('monovector'); }
|
|
238
237
|
export async function getGuidanceCommand() { return loadCommand('guidance'); }
|
|
239
238
|
export async function getCleanupCommand() { return loadCommand('cleanup'); }
|
|
240
239
|
export async function getAutopilotCommand() { return loadCommand('autopilot'); }
|
|
@@ -133,7 +133,6 @@ export const defendCommand = {
|
|
|
133
133
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
134
134
|
let createMonoDefence;
|
|
135
135
|
try {
|
|
136
|
-
// @ts-expect-error — optional peer dep resolved at runtime
|
|
137
136
|
const aidefence = await import('monofence-ai');
|
|
138
137
|
createMonoDefence = aidefence.createMonoDefence;
|
|
139
138
|
}
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
* Main execution logic for V1 initialization
|
|
4
4
|
*/
|
|
5
5
|
import type { InitOptions, InitResult } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Execute initialization
|
|
8
|
+
*/
|
|
6
9
|
export declare function executeInit(options: InitOptions): Promise<InitResult>;
|
|
7
10
|
/**
|
|
8
11
|
* Upgrade result interface
|
|
@@ -186,88 +186,6 @@ const DIRECTORIES = {
|
|
|
186
186
|
/**
|
|
187
187
|
* Execute initialization
|
|
188
188
|
*/
|
|
189
|
-
/**
|
|
190
|
-
* Remove legacy ruv-swarm configuration from existing project files.
|
|
191
|
-
* Safe to call even if no legacy config exists.
|
|
192
|
-
*/
|
|
193
|
-
function cleanupLegacyTools(targetDir) {
|
|
194
|
-
const cleaned = [];
|
|
195
|
-
// Helper to fix MCP server args: replace @monomind/cli@latest with monomind@latest
|
|
196
|
-
function fixMcpArgs(servers) {
|
|
197
|
-
let changed = false;
|
|
198
|
-
for (const name of Object.keys(servers)) {
|
|
199
|
-
const srv = servers[name];
|
|
200
|
-
if (Array.isArray(srv.args)) {
|
|
201
|
-
srv.args = srv.args.map((a) => {
|
|
202
|
-
if (typeof a === 'string' && a.includes('@monomind/cli@')) {
|
|
203
|
-
changed = true;
|
|
204
|
-
return a.replace(/@monomind\/cli@[^\s]*/g, 'monomind@latest');
|
|
205
|
-
}
|
|
206
|
-
return a;
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
return changed;
|
|
211
|
-
}
|
|
212
|
-
// Clean ruv-swarm from .mcp.json and fix old MCP package name
|
|
213
|
-
const mcpJsonPath = path.join(targetDir, '.mcp.json');
|
|
214
|
-
if (fs.existsSync(mcpJsonPath) && fs.statSync(mcpJsonPath).size <= MAX_EXEC_FILE_BYTES) {
|
|
215
|
-
try {
|
|
216
|
-
const mcp = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));
|
|
217
|
-
let mcpChanged = false;
|
|
218
|
-
if (mcp.mcpServers && mcp.mcpServers['ruv-swarm']) {
|
|
219
|
-
delete mcp.mcpServers['ruv-swarm'];
|
|
220
|
-
mcpChanged = true;
|
|
221
|
-
cleaned.push('.mcp.json: removed ruv-swarm entry');
|
|
222
|
-
}
|
|
223
|
-
if (mcp.mcpServers && fixMcpArgs(mcp.mcpServers)) {
|
|
224
|
-
mcpChanged = true;
|
|
225
|
-
cleaned.push('.mcp.json: updated MCP package name to monomind@latest');
|
|
226
|
-
}
|
|
227
|
-
if (mcpChanged) {
|
|
228
|
-
atomicWriteFile(mcpJsonPath, JSON.stringify(mcp, null, 2));
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
catch { /* non-fatal */ }
|
|
232
|
-
}
|
|
233
|
-
// Clean ruv-swarm from .claude/settings.json hooks and fix MCP package name
|
|
234
|
-
const settingsPath = path.join(targetDir, '.claude', 'settings.json');
|
|
235
|
-
if (fs.existsSync(settingsPath) && fs.statSync(settingsPath).size <= MAX_EXEC_FILE_BYTES) {
|
|
236
|
-
try {
|
|
237
|
-
const raw = fs.readFileSync(settingsPath, 'utf-8');
|
|
238
|
-
const settings = JSON.parse(raw);
|
|
239
|
-
let settingsChanged = false;
|
|
240
|
-
if (raw.includes('ruv-swarm')) {
|
|
241
|
-
// Remove legacy ruv-swarm hook entries from all hook arrays
|
|
242
|
-
const hookKeys = ['PreToolUse', 'PostToolUse', 'UserPromptSubmit', 'SessionStart', 'SessionEnd', 'Stop', 'SubagentStart', 'SubagentStop', 'PreCompact'];
|
|
243
|
-
for (const key of hookKeys) {
|
|
244
|
-
if (Array.isArray(settings.hooks?.[key])) {
|
|
245
|
-
const before = settings.hooks[key].length;
|
|
246
|
-
settings.hooks[key] = settings.hooks[key].filter((entry) => {
|
|
247
|
-
const str = JSON.stringify(entry);
|
|
248
|
-
return !str.includes('ruv-swarm');
|
|
249
|
-
});
|
|
250
|
-
if (settings.hooks[key].length !== before)
|
|
251
|
-
settingsChanged = true;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
if (settingsChanged) {
|
|
255
|
-
cleaned.push('.claude/settings.json: removed ruv-swarm hooks');
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
// Fix wrong MCP package name in mcpServers
|
|
259
|
-
if (settings.mcpServers && fixMcpArgs(settings.mcpServers)) {
|
|
260
|
-
settingsChanged = true;
|
|
261
|
-
cleaned.push('.claude/settings.json: updated MCP package name to monomind@latest');
|
|
262
|
-
}
|
|
263
|
-
if (settingsChanged) {
|
|
264
|
-
atomicWriteFile(settingsPath, JSON.stringify(settings, null, 2));
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
catch { /* non-fatal */ }
|
|
268
|
-
}
|
|
269
|
-
return cleaned;
|
|
270
|
-
}
|
|
271
189
|
export async function executeInit(options) {
|
|
272
190
|
// Detect platform
|
|
273
191
|
const platform = detectPlatform();
|
|
@@ -290,11 +208,6 @@ export async function executeInit(options) {
|
|
|
290
208
|
};
|
|
291
209
|
const targetDir = options.targetDir;
|
|
292
210
|
try {
|
|
293
|
-
// Remove legacy ruv-swarm configs before writing new ones
|
|
294
|
-
const legacyCleaned = cleanupLegacyTools(targetDir);
|
|
295
|
-
for (const msg of legacyCleaned) {
|
|
296
|
-
result.created.files.push(`[cleaned] ${msg}`);
|
|
297
|
-
}
|
|
298
211
|
// Create directory structure
|
|
299
212
|
await createDirectories(targetDir, options, result);
|
|
300
213
|
// Scan directory and save fingerprint (non-fatal if failed)
|
|
@@ -678,11 +591,6 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
678
591
|
settingsUpdated: [],
|
|
679
592
|
};
|
|
680
593
|
try {
|
|
681
|
-
// Fix legacy ruv-swarm configs and old MCP package names
|
|
682
|
-
const legacyCleaned = cleanupLegacyTools(targetDir);
|
|
683
|
-
for (const msg of legacyCleaned) {
|
|
684
|
-
result.updated.push(`[cleaned] ${msg}`);
|
|
685
|
-
}
|
|
686
594
|
// Ensure required directories exist
|
|
687
595
|
const dirs = [
|
|
688
596
|
'.claude/helpers',
|
|
@@ -701,7 +609,7 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
701
609
|
if (sourceHelpersForUpgrade) {
|
|
702
610
|
const destHelpersDir = path.join(targetDir, '.claude', 'helpers');
|
|
703
611
|
// Copy top-level critical files atomically
|
|
704
|
-
const criticalHelpers = ['auto-memory-hook.mjs', 'hook-handler.cjs', 'intelligence.cjs'];
|
|
612
|
+
const criticalHelpers = ['auto-memory-hook.mjs', 'hook-handler.cjs', 'intelligence.cjs', 'statusline.cjs', 'graphify-freshen.cjs'];
|
|
705
613
|
for (const helperName of criticalHelpers) {
|
|
706
614
|
const targetPath = path.join(destHelpersDir, helperName);
|
|
707
615
|
const sourcePath = path.join(sourceHelpersForUpgrade, helperName);
|
|
@@ -760,26 +668,27 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
760
668
|
fs.renameSync(tmp, targetPath);
|
|
761
669
|
}
|
|
762
670
|
}
|
|
763
|
-
// 1.
|
|
671
|
+
// 1. Statusline fallback — only generate if source copy above didn't cover it
|
|
764
672
|
const statuslinePath = path.join(targetDir, '.claude', 'helpers', 'statusline.cjs');
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
673
|
+
if (!sourceHelpersForUpgrade || !fs.existsSync(path.join(sourceHelpersForUpgrade, 'statusline.cjs'))) {
|
|
674
|
+
const upgradeOptions = {
|
|
675
|
+
...DEFAULT_INIT_OPTIONS,
|
|
676
|
+
targetDir,
|
|
677
|
+
force: true,
|
|
678
|
+
statusline: {
|
|
679
|
+
...DEFAULT_INIT_OPTIONS.statusline,
|
|
680
|
+
refreshInterval: 5000,
|
|
681
|
+
},
|
|
682
|
+
};
|
|
683
|
+
const statuslineContent = generateStatuslineScript(upgradeOptions);
|
|
684
|
+
if (fs.existsSync(statuslinePath)) {
|
|
685
|
+
result.updated.push('.claude/helpers/statusline.cjs');
|
|
686
|
+
}
|
|
687
|
+
else {
|
|
688
|
+
result.created.push('.claude/helpers/statusline.cjs');
|
|
689
|
+
}
|
|
690
|
+
atomicWriteFile(statuslinePath, statuslineContent);
|
|
781
691
|
}
|
|
782
|
-
atomicWriteFile(statuslinePath, statuslineContent);
|
|
783
692
|
// 2. Create MISSING metrics files only (preserve existing data)
|
|
784
693
|
const metricsDir = path.join(targetDir, '.monomind', 'metrics');
|
|
785
694
|
const securityDir = path.join(targetDir, '.monomind', 'security');
|
|
@@ -18,7 +18,6 @@ import { sessionTools } from './mcp-tools/session-tools.js';
|
|
|
18
18
|
import { hiveMindTools } from './mcp-tools/hive-mind-tools.js';
|
|
19
19
|
import { workflowTools } from './mcp-tools/workflow-tools.js';
|
|
20
20
|
import { analyzeTools } from './mcp-tools/analyze-tools.js';
|
|
21
|
-
import { progressTools } from './mcp-tools/progress-tools.js';
|
|
22
21
|
import { embeddingsTools } from './mcp-tools/embeddings-tools.js';
|
|
23
22
|
import { claimsTools } from './mcp-tools/claims-tools.js';
|
|
24
23
|
import { securityTools } from './mcp-tools/security-tools.js';
|
|
@@ -72,7 +71,6 @@ registerTools([
|
|
|
72
71
|
...hiveMindTools,
|
|
73
72
|
...workflowTools,
|
|
74
73
|
...analyzeTools,
|
|
75
|
-
...progressTools,
|
|
76
74
|
...embeddingsTools,
|
|
77
75
|
...claimsTools,
|
|
78
76
|
...securityTools,
|
|
@@ -18,7 +18,6 @@ export { sessionTools } from './session-tools.js';
|
|
|
18
18
|
export { hiveMindTools } from './hive-mind-tools.js';
|
|
19
19
|
export { workflowTools } from './workflow-tools.js';
|
|
20
20
|
export { analyzeTools } from './analyze-tools.js';
|
|
21
|
-
export { progressTools } from './progress-tools.js';
|
|
22
21
|
export { transferTools } from './transfer-tools.js';
|
|
23
22
|
export { securityTools } from './security-tools.js';
|
|
24
23
|
export { embeddingsTools } from './embeddings-tools.js';
|
|
@@ -18,7 +18,6 @@ export { sessionTools } from './session-tools.js';
|
|
|
18
18
|
export { hiveMindTools } from './hive-mind-tools.js';
|
|
19
19
|
export { workflowTools } from './workflow-tools.js';
|
|
20
20
|
export { analyzeTools } from './analyze-tools.js';
|
|
21
|
-
export { progressTools } from './progress-tools.js';
|
|
22
21
|
export { transferTools } from './transfer-tools.js';
|
|
23
22
|
export { securityTools } from './security-tools.js';
|
|
24
23
|
export { embeddingsTools } from './embeddings-tools.js';
|
package/packages/@monomind/cli/dist/src/mcp-tools/quality/coverage-analysis/track-trends.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare const TrackTrendsInputSchema: z.ZodObject<{
|
|
|
15
15
|
includeProjections: z.ZodDefault<z.ZodBoolean>;
|
|
16
16
|
compareBaseline: z.ZodOptional<z.ZodString>;
|
|
17
17
|
}, "strip", z.ZodTypeAny, {
|
|
18
|
-
metrics: ("function" | "line" | "
|
|
18
|
+
metrics: ("function" | "line" | "branch" | "statement" | "overall")[];
|
|
19
19
|
timeRange: "30d" | "7d" | "14d" | "90d" | "180d" | "365d";
|
|
20
20
|
groupBy: "commit" | "day" | "week" | "month";
|
|
21
21
|
detectRegressions: boolean;
|
|
@@ -24,7 +24,7 @@ export declare const TrackTrendsInputSchema: z.ZodObject<{
|
|
|
24
24
|
targetPath?: string | undefined;
|
|
25
25
|
compareBaseline?: string | undefined;
|
|
26
26
|
}, {
|
|
27
|
-
metrics?: ("function" | "line" | "
|
|
27
|
+
metrics?: ("function" | "line" | "branch" | "statement" | "overall")[] | undefined;
|
|
28
28
|
timeRange?: "30d" | "7d" | "14d" | "90d" | "180d" | "365d" | undefined;
|
|
29
29
|
targetPath?: string | undefined;
|
|
30
30
|
groupBy?: "commit" | "day" | "week" | "month" | undefined;
|
|
@@ -141,7 +141,7 @@ export declare const toolDefinition: {
|
|
|
141
141
|
includeProjections: z.ZodDefault<z.ZodBoolean>;
|
|
142
142
|
compareBaseline: z.ZodOptional<z.ZodString>;
|
|
143
143
|
}, "strip", z.ZodTypeAny, {
|
|
144
|
-
metrics: ("function" | "line" | "
|
|
144
|
+
metrics: ("function" | "line" | "branch" | "statement" | "overall")[];
|
|
145
145
|
timeRange: "30d" | "7d" | "14d" | "90d" | "180d" | "365d";
|
|
146
146
|
groupBy: "commit" | "day" | "week" | "month";
|
|
147
147
|
detectRegressions: boolean;
|
|
@@ -150,7 +150,7 @@ export declare const toolDefinition: {
|
|
|
150
150
|
targetPath?: string | undefined;
|
|
151
151
|
compareBaseline?: string | undefined;
|
|
152
152
|
}, {
|
|
153
|
-
metrics?: ("function" | "line" | "
|
|
153
|
+
metrics?: ("function" | "line" | "branch" | "statement" | "overall")[] | undefined;
|
|
154
154
|
timeRange?: "30d" | "7d" | "14d" | "90d" | "180d" | "365d" | undefined;
|
|
155
155
|
targetPath?: string | undefined;
|
|
156
156
|
groupBy?: "commit" | "day" | "week" | "month" | undefined;
|
package/packages/@monomind/cli/dist/src/mcp-tools/quality/test-generation/suggest-tests.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare const SuggestTestsInputSchema: z.ZodObject<{
|
|
|
16
16
|
}, "strip", z.ZodTypeAny, {
|
|
17
17
|
framework: "vitest" | "jest" | "mocha" | "pytest" | "junit";
|
|
18
18
|
targetPath: string;
|
|
19
|
-
focusAreas: ("
|
|
19
|
+
focusAreas: ("branches" | "lines" | "functions" | "edge-cases" | "error-handling" | "boundaries")[];
|
|
20
20
|
maxSuggestions: number;
|
|
21
21
|
priorityBy: "risk" | "complexity" | "coverage-impact" | "change-frequency";
|
|
22
22
|
includeCode: boolean;
|
|
@@ -25,7 +25,7 @@ export declare const SuggestTestsInputSchema: z.ZodObject<{
|
|
|
25
25
|
targetPath: string;
|
|
26
26
|
framework?: "vitest" | "jest" | "mocha" | "pytest" | "junit" | undefined;
|
|
27
27
|
coverageReport?: string | undefined;
|
|
28
|
-
focusAreas?: ("
|
|
28
|
+
focusAreas?: ("branches" | "lines" | "functions" | "edge-cases" | "error-handling" | "boundaries")[] | undefined;
|
|
29
29
|
maxSuggestions?: number | undefined;
|
|
30
30
|
priorityBy?: "risk" | "complexity" | "coverage-impact" | "change-frequency" | undefined;
|
|
31
31
|
includeCode?: boolean | undefined;
|
|
@@ -121,7 +121,7 @@ export declare const toolDefinition: {
|
|
|
121
121
|
}, "strip", z.ZodTypeAny, {
|
|
122
122
|
framework: "vitest" | "jest" | "mocha" | "pytest" | "junit";
|
|
123
123
|
targetPath: string;
|
|
124
|
-
focusAreas: ("
|
|
124
|
+
focusAreas: ("branches" | "lines" | "functions" | "edge-cases" | "error-handling" | "boundaries")[];
|
|
125
125
|
maxSuggestions: number;
|
|
126
126
|
priorityBy: "risk" | "complexity" | "coverage-impact" | "change-frequency";
|
|
127
127
|
includeCode: boolean;
|
|
@@ -130,7 +130,7 @@ export declare const toolDefinition: {
|
|
|
130
130
|
targetPath: string;
|
|
131
131
|
framework?: "vitest" | "jest" | "mocha" | "pytest" | "junit" | undefined;
|
|
132
132
|
coverageReport?: string | undefined;
|
|
133
|
-
focusAreas?: ("
|
|
133
|
+
focusAreas?: ("branches" | "lines" | "functions" | "edge-cases" | "error-handling" | "boundaries")[] | undefined;
|
|
134
134
|
maxSuggestions?: number | undefined;
|
|
135
135
|
priorityBy?: "risk" | "complexity" | "coverage-impact" | "change-frequency" | undefined;
|
|
136
136
|
includeCode?: boolean | undefined;
|
|
@@ -393,7 +393,6 @@ const monofenceIsSafeTool = {
|
|
|
393
393
|
}
|
|
394
394
|
try {
|
|
395
395
|
await getMonoFence(); // triggers auto-install if package is missing
|
|
396
|
-
// @ts-expect-error — optional peer dep resolved at runtime
|
|
397
396
|
const { isSafe } = await import('monofence-ai');
|
|
398
397
|
const safe = isSafe(input);
|
|
399
398
|
return {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monoes/monomindcli",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Monomind CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code",
|
|
6
6
|
"main": "dist/src/index.js",
|