monomind 1.18.8 → 1.18.10
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/commands/doctor-project-checks.d.ts +1 -0
- package/packages/@monomind/cli/dist/src/commands/doctor-project-checks.js +17 -1
- package/packages/@monomind/cli/dist/src/commands/doctor.js +15 -1
- 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 -4
- package/packages/@monomind/cli/dist/src/commands/index.js +0 -22
- 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/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.10",
|
|
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",
|
|
@@ -12,6 +12,7 @@ export declare function checkMcpServers(): Promise<HealthCheck>;
|
|
|
12
12
|
export declare function checkMonograph(): Promise<HealthCheck>;
|
|
13
13
|
export declare function checkMonographFreshness(): Promise<HealthCheck>;
|
|
14
14
|
export declare function checkMonoesMemory(): Promise<HealthCheck>;
|
|
15
|
+
export declare function fixStaleHelpers(): Promise<boolean>;
|
|
15
16
|
export declare function checkHelpersFresh(): Promise<HealthCheck>;
|
|
16
17
|
export declare function checkMonoesIntegration(): Promise<HealthCheck>;
|
|
17
18
|
export declare function checkGitignoreCoverage(): Promise<HealthCheck>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Doctor — project/monomind health checks
|
|
3
3
|
* Config, daemon, memory, API keys, MCP, monograph, helpers, routing, gates, gitignore
|
|
4
4
|
*/
|
|
5
|
-
import { existsSync, readFileSync, statSync, mkdirSync } from 'fs';
|
|
5
|
+
import { existsSync, readFileSync, statSync, mkdirSync, copyFileSync } from 'fs';
|
|
6
6
|
import { join, dirname } from 'path';
|
|
7
7
|
import { fileURLToPath } from 'url';
|
|
8
8
|
import { execSync } from 'child_process';
|
|
@@ -279,6 +279,22 @@ async function _detectStaleHelpers() {
|
|
|
279
279
|
}
|
|
280
280
|
return { stale, missing };
|
|
281
281
|
}
|
|
282
|
+
export async function fixStaleHelpers() {
|
|
283
|
+
const { stale } = await _detectStaleHelpers();
|
|
284
|
+
let fixed = 0;
|
|
285
|
+
for (const name of stale) {
|
|
286
|
+
const local = join(process.cwd(), '.claude', 'helpers', name);
|
|
287
|
+
const bundled = _resolveBundledHelper(join('.claude', 'helpers', name));
|
|
288
|
+
if (bundled) {
|
|
289
|
+
try {
|
|
290
|
+
copyFileSync(bundled, local);
|
|
291
|
+
fixed++;
|
|
292
|
+
}
|
|
293
|
+
catch { /* skip */ }
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return fixed > 0;
|
|
297
|
+
}
|
|
282
298
|
export async function checkHelpersFresh() {
|
|
283
299
|
try {
|
|
284
300
|
const { stale, missing } = await _detectStaleHelpers();
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import * as path from 'path';
|
|
8
8
|
import { output } from '../output.js';
|
|
9
9
|
import { checkNodeVersion, checkNpmVersion, checkGit, checkGitRepo, checkDiskSpace, checkBuildTools, checkVersionFreshness, checkClaudeCode, installClaudeCode, } from './doctor-env-checks.js';
|
|
10
|
-
import { checkConfigFile, checkDaemonStatus, checkMemoryDatabase, checkApiKeys, checkMcpServers, checkMonograph, checkMonographFreshness, checkMonoesMemory, checkHelpersFresh, checkMonoesIntegration, checkGuidanceGates, checkGitignoreCoverage, checkAgentRegistry, checkMemoryProficiency, } from './doctor-project-checks.js';
|
|
10
|
+
import { checkConfigFile, checkDaemonStatus, checkMemoryDatabase, checkApiKeys, checkMcpServers, checkMonograph, checkMonographFreshness, checkMonoesMemory, checkHelpersFresh, fixStaleHelpers, checkMonoesIntegration, checkGuidanceGates, checkGitignoreCoverage, checkAgentRegistry, checkMemoryProficiency, } from './doctor-project-checks.js';
|
|
11
11
|
import { checkMonoesTools, fixMonoesTools } from './doctor-monoes-checks.js';
|
|
12
12
|
function formatCheck(check) {
|
|
13
13
|
const icon = check.status === 'pass' ? output.success('✓') :
|
|
@@ -145,6 +145,20 @@ export const doctorCommand = {
|
|
|
145
145
|
output.writeln(formatCheck(newCheck));
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
+
const helpersResult = results.find(r => r.name === 'Helper Files');
|
|
149
|
+
if (helpersResult && helpersResult.status !== 'pass') {
|
|
150
|
+
if (await fixStaleHelpers()) {
|
|
151
|
+
const newCheck = await checkHelpersFresh();
|
|
152
|
+
const idx = results.findIndex(r => r.name === 'Helper Files');
|
|
153
|
+
if (idx !== -1) {
|
|
154
|
+
results[idx] = newCheck;
|
|
155
|
+
const fixIdx = fixes.findIndex(f => f.startsWith('Helper Files:'));
|
|
156
|
+
if (fixIdx !== -1 && newCheck.status === 'pass')
|
|
157
|
+
fixes.splice(fixIdx, 1);
|
|
158
|
+
}
|
|
159
|
+
output.writeln(formatCheck(newCheck));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
148
162
|
}
|
|
149
163
|
const passed = results.filter(r => r.status === 'pass').length;
|
|
150
164
|
const warnings = results.filter(r => r.status === 'warn').length;
|
|
@@ -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,
|
|
@@ -24,7 +24,6 @@ export { doctorCommand } from './doctor.js';
|
|
|
24
24
|
export { neuralCommand } from './neural.js';
|
|
25
25
|
export { performanceCommand } from './performance.js';
|
|
26
26
|
export { securityCommand } from './security.js';
|
|
27
|
-
export { monovectorCommand } from './monovector/index.js';
|
|
28
27
|
export { hiveMindCommand } from './hive-mind.js';
|
|
29
28
|
export { guidanceCommand } from './guidance.js';
|
|
30
29
|
export { cleanupCommand } from './cleanup.js';
|
|
@@ -39,7 +38,6 @@ export { reportCrashCommand } from './report-crash.js';
|
|
|
39
38
|
export { crashReportingCommand } from './crash-reporting.js';
|
|
40
39
|
export { docCommand } from './doc.js';
|
|
41
40
|
export declare function getConfigCommand(): Promise<Command | undefined>;
|
|
42
|
-
export declare function getMigrateCommand(): Promise<Command | undefined>;
|
|
43
41
|
export declare function getWorkflowCommand(): Promise<Command | undefined>;
|
|
44
42
|
export declare function getHiveMindCommand(): Promise<Command | undefined>;
|
|
45
43
|
export declare function getProcessCommand(): Promise<Command | undefined>;
|
|
@@ -54,9 +52,7 @@ export declare function getClaimsCommand(): Promise<Command | undefined>;
|
|
|
54
52
|
export declare function getCompletionsCommand(): Promise<Command | undefined>;
|
|
55
53
|
export declare function getAnalyzeCommand(): Promise<Command | undefined>;
|
|
56
54
|
export declare function getRouteCommand(): Promise<Command | undefined>;
|
|
57
|
-
export declare function getProgressCommand(): Promise<Command | undefined>;
|
|
58
55
|
export declare function getIssuesCommand(): Promise<Command | undefined>;
|
|
59
|
-
export declare function getMonovectorCommand(): Promise<Command | undefined>;
|
|
60
56
|
export declare function getGuidanceCommand(): Promise<Command | undefined>;
|
|
61
57
|
export declare function getCleanupCommand(): Promise<Command | undefined>;
|
|
62
58
|
export declare function getAutopilotCommand(): Promise<Command | undefined>;
|
|
@@ -25,7 +25,6 @@ const commandLoaders = {
|
|
|
25
25
|
memory: () => import('./memory.js'),
|
|
26
26
|
mcp: () => import('./mcp.js'),
|
|
27
27
|
config: () => import('./config.js'),
|
|
28
|
-
migrate: () => import('./migrate.js'),
|
|
29
28
|
hooks: () => import('./hooks.js'),
|
|
30
29
|
workflow: () => import('./workflow.js'),
|
|
31
30
|
'hive-mind': () => import('./hive-mind.js'),
|
|
@@ -45,16 +44,10 @@ const commandLoaders = {
|
|
|
45
44
|
analyze: () => import('./analyze.js'),
|
|
46
45
|
// Q-Learning Routing Commands
|
|
47
46
|
route: () => import('./route.js'),
|
|
48
|
-
// Progress Commands
|
|
49
|
-
progress: () => import('./progress.js'),
|
|
50
47
|
// Issue Claims Commands (ADR-016)
|
|
51
48
|
issues: () => import('./issues.js'),
|
|
52
49
|
// Auto-update System (ADR-025)
|
|
53
50
|
update: () => import('./update.js'),
|
|
54
|
-
// MonoVector PostgreSQL Bridge
|
|
55
|
-
monovector: () => import('./monovector/index.js'),
|
|
56
|
-
// Benchmark Suite (Pre-training, Neural, Memory)
|
|
57
|
-
benchmark: () => import('./benchmark.js'),
|
|
58
51
|
// Guidance Control Plane
|
|
59
52
|
guidance: () => import('./guidance.js'),
|
|
60
53
|
'transfer-store': () => import('./transfer-store.js'),
|
|
@@ -130,17 +123,14 @@ import { doctorCommand } from './doctor.js';
|
|
|
130
123
|
import { neuralCommand } from './neural.js';
|
|
131
124
|
import { performanceCommand } from './performance.js';
|
|
132
125
|
import { securityCommand } from './security.js';
|
|
133
|
-
import { monovectorCommand } from './monovector/index.js';
|
|
134
126
|
import { hiveMindCommand } from './hive-mind.js';
|
|
135
127
|
import browseCommand from './browse.js';
|
|
136
128
|
// Additional commands for categorized help display
|
|
137
129
|
import { configCommand } from './config.js';
|
|
138
130
|
import { completionsCommand } from './completions.js';
|
|
139
|
-
import { migrateCommand } from './migrate.js';
|
|
140
131
|
import { workflowCommand } from './workflow.js';
|
|
141
132
|
import { analyzeCommand } from './analyze.js';
|
|
142
133
|
import { routeCommand } from './route.js';
|
|
143
|
-
import { progressCommand } from './progress.js';
|
|
144
134
|
import { providersCommand } from './providers.js';
|
|
145
135
|
import { deploymentCommand } from './deployment.js';
|
|
146
136
|
import { claimsCommand } from './claims.js';
|
|
@@ -152,7 +142,6 @@ import { cleanupCommand } from './cleanup.js';
|
|
|
152
142
|
import { autopilotCommand } from './autopilot.js';
|
|
153
143
|
import { monographCommand } from './monograph.js';
|
|
154
144
|
import replayCommand from './replay.js';
|
|
155
|
-
import { benchmarkCommand } from './benchmark.js';
|
|
156
145
|
import storeCommand from './transfer-store.js';
|
|
157
146
|
import tokensCommand from './tokens.js';
|
|
158
147
|
import { platformsCommand } from './platforms.js';
|
|
@@ -179,14 +168,12 @@ loadedCommands.set('doctor', doctorCommand);
|
|
|
179
168
|
loadedCommands.set('neural', neuralCommand);
|
|
180
169
|
loadedCommands.set('performance', performanceCommand);
|
|
181
170
|
loadedCommands.set('security', securityCommand);
|
|
182
|
-
loadedCommands.set('monovector', monovectorCommand);
|
|
183
171
|
loadedCommands.set('hive-mind', hiveMindCommand);
|
|
184
172
|
loadedCommands.set('guidance', guidanceCommand);
|
|
185
173
|
loadedCommands.set('cleanup', cleanupCommand);
|
|
186
174
|
loadedCommands.set('autopilot', autopilotCommand);
|
|
187
175
|
loadedCommands.set('monograph', monographCommand);
|
|
188
176
|
loadedCommands.set('replay', replayCommand);
|
|
189
|
-
loadedCommands.set('benchmark', benchmarkCommand);
|
|
190
177
|
loadedCommands.set('transfer-store', storeCommand);
|
|
191
178
|
loadedCommands.set('tokens', tokensCommand);
|
|
192
179
|
loadedCommands.set('platforms', platformsCommand);
|
|
@@ -217,7 +204,6 @@ export { doctorCommand } from './doctor.js';
|
|
|
217
204
|
export { neuralCommand } from './neural.js';
|
|
218
205
|
export { performanceCommand } from './performance.js';
|
|
219
206
|
export { securityCommand } from './security.js';
|
|
220
|
-
export { monovectorCommand } from './monovector/index.js';
|
|
221
207
|
export { hiveMindCommand } from './hive-mind.js';
|
|
222
208
|
export { guidanceCommand } from './guidance.js';
|
|
223
209
|
export { cleanupCommand } from './cleanup.js';
|
|
@@ -233,7 +219,6 @@ export { crashReportingCommand } from './crash-reporting.js';
|
|
|
233
219
|
export { docCommand } from './doc.js';
|
|
234
220
|
// Lazy-loaded command re-exports (for backwards compatibility, but async-only)
|
|
235
221
|
export async function getConfigCommand() { return loadCommand('config'); }
|
|
236
|
-
export async function getMigrateCommand() { return loadCommand('migrate'); }
|
|
237
222
|
export async function getWorkflowCommand() { return loadCommand('workflow'); }
|
|
238
223
|
export async function getHiveMindCommand() { return loadCommand('hive-mind'); }
|
|
239
224
|
export async function getProcessCommand() { return loadCommand('process'); }
|
|
@@ -248,9 +233,7 @@ export async function getClaimsCommand() { return loadCommand('claims'); }
|
|
|
248
233
|
export async function getCompletionsCommand() { return loadCommand('completions'); }
|
|
249
234
|
export async function getAnalyzeCommand() { return loadCommand('analyze'); }
|
|
250
235
|
export async function getRouteCommand() { return loadCommand('route'); }
|
|
251
|
-
export async function getProgressCommand() { return loadCommand('progress'); }
|
|
252
236
|
export async function getIssuesCommand() { return loadCommand('issues'); }
|
|
253
|
-
export async function getMonovectorCommand() { return loadCommand('monovector'); }
|
|
254
237
|
export async function getGuidanceCommand() { return loadCommand('guidance'); }
|
|
255
238
|
export async function getCleanupCommand() { return loadCommand('cleanup'); }
|
|
256
239
|
export async function getAutopilotCommand() { return loadCommand('autopilot'); }
|
|
@@ -276,7 +259,6 @@ export const commands = [
|
|
|
276
259
|
neuralCommand,
|
|
277
260
|
performanceCommand,
|
|
278
261
|
securityCommand,
|
|
279
|
-
monovectorCommand,
|
|
280
262
|
hiveMindCommand,
|
|
281
263
|
guidanceCommand,
|
|
282
264
|
cleanupCommand,
|
|
@@ -312,23 +294,19 @@ export const commandsByCategory = {
|
|
|
312
294
|
securityCommand,
|
|
313
295
|
performanceCommand,
|
|
314
296
|
hiveMindCommand,
|
|
315
|
-
monovectorCommand,
|
|
316
297
|
guidanceCommand,
|
|
317
298
|
autopilotCommand,
|
|
318
|
-
benchmarkCommand,
|
|
319
299
|
],
|
|
320
300
|
utility: [
|
|
321
301
|
configCommand,
|
|
322
302
|
doctorCommand,
|
|
323
303
|
daemonCommand,
|
|
324
304
|
completionsCommand,
|
|
325
|
-
migrateCommand,
|
|
326
305
|
workflowCommand,
|
|
327
306
|
],
|
|
328
307
|
analysis: [
|
|
329
308
|
analyzeCommand,
|
|
330
309
|
routeCommand,
|
|
331
|
-
progressCommand,
|
|
332
310
|
monographCommand,
|
|
333
311
|
replayCommand,
|
|
334
312
|
tokensCommand,
|
|
@@ -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';
|