@monoes/monomindcli 2.7.7 → 2.7.8

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 (106) hide show
  1. package/.claude/agents/core/coder.md +9 -0
  2. package/.claude/agents/core/coordinator.md +62 -0
  3. package/.claude/agents/core/planner.md +9 -0
  4. package/.claude/agents/core/reviewer.md +9 -0
  5. package/.claude/agents/core/tester.md +8 -0
  6. package/.claude/helpers/handlers/gates-handler.cjs +180 -47
  7. package/.claude/helpers/handlers/route-handler.cjs +32 -3
  8. package/.claude/helpers/hook-handler.cjs +55 -3
  9. package/.claude/helpers/intelligence.cjs +3 -1
  10. package/.claude/helpers/statusline.cjs +27 -3
  11. package/.claude/helpers/utils/monograph.cjs +104 -18
  12. package/.claude/settings.json +1 -1
  13. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  14. package/dist/src/browser/dashboard/server.js +6 -1
  15. package/dist/src/browser/dashboard/server.js.map +1 -1
  16. package/dist/src/capabilities/index.d.ts +0 -1
  17. package/dist/src/capabilities/index.d.ts.map +1 -1
  18. package/dist/src/capabilities/index.js +8 -1
  19. package/dist/src/capabilities/index.js.map +1 -1
  20. package/dist/src/commands/agent-lifecycle.d.ts.map +1 -1
  21. package/dist/src/commands/agent-lifecycle.js +5 -1
  22. package/dist/src/commands/agent-lifecycle.js.map +1 -1
  23. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  24. package/dist/src/commands/doctor-project-checks.js +8 -1
  25. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  26. package/dist/src/commands/guidance.d.ts.map +1 -1
  27. package/dist/src/commands/guidance.js +8 -2
  28. package/dist/src/commands/guidance.js.map +1 -1
  29. package/dist/src/commands/init.d.ts.map +1 -1
  30. package/dist/src/commands/init.js +18 -4
  31. package/dist/src/commands/init.js.map +1 -1
  32. package/dist/src/commands/memory-crud.d.ts.map +1 -1
  33. package/dist/src/commands/memory-crud.js +7 -1
  34. package/dist/src/commands/memory-crud.js.map +1 -1
  35. package/dist/src/commands/org-observe.d.ts.map +1 -1
  36. package/dist/src/commands/org-observe.js +17 -7
  37. package/dist/src/commands/org-observe.js.map +1 -1
  38. package/dist/src/commands/org.d.ts +11 -0
  39. package/dist/src/commands/org.d.ts.map +1 -1
  40. package/dist/src/commands/org.js +162 -15
  41. package/dist/src/commands/org.js.map +1 -1
  42. package/dist/src/commands/security-scan.d.ts +30 -1
  43. package/dist/src/commands/security-scan.d.ts.map +1 -1
  44. package/dist/src/commands/security-scan.js +182 -69
  45. package/dist/src/commands/security-scan.js.map +1 -1
  46. package/dist/src/commands/swarm.d.ts.map +1 -1
  47. package/dist/src/commands/swarm.js +41 -14
  48. package/dist/src/commands/swarm.js.map +1 -1
  49. package/dist/src/consensus/audit-writer.d.ts.map +1 -1
  50. package/dist/src/consensus/audit-writer.js +11 -10
  51. package/dist/src/consensus/audit-writer.js.map +1 -1
  52. package/dist/src/init/executor.d.ts.map +1 -1
  53. package/dist/src/init/executor.js +138 -22
  54. package/dist/src/init/executor.js.map +1 -1
  55. package/dist/src/init/settings-generator.d.ts.map +1 -1
  56. package/dist/src/init/settings-generator.js +4 -1
  57. package/dist/src/init/settings-generator.js.map +1 -1
  58. package/dist/src/knowledge/document-pipeline.d.ts +17 -0
  59. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  60. package/dist/src/knowledge/document-pipeline.js +62 -3
  61. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  62. package/dist/src/mcp-tools/embeddings-tools.d.ts.map +1 -1
  63. package/dist/src/mcp-tools/embeddings-tools.js +16 -8
  64. package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
  65. package/dist/src/mcp-tools/knowledge-tools.d.ts.map +1 -1
  66. package/dist/src/mcp-tools/knowledge-tools.js +27 -13
  67. package/dist/src/mcp-tools/knowledge-tools.js.map +1 -1
  68. package/dist/src/memory/memory-bridge.d.ts +1 -1
  69. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  70. package/dist/src/memory/memory-bridge.js +5 -1
  71. package/dist/src/memory/memory-bridge.js.map +1 -1
  72. package/dist/src/memory/memory-read.d.ts +7 -2
  73. package/dist/src/memory/memory-read.d.ts.map +1 -1
  74. package/dist/src/memory/memory-read.js +10 -2
  75. package/dist/src/memory/memory-read.js.map +1 -1
  76. package/dist/src/monovector/diff-classifier.d.ts.map +1 -1
  77. package/dist/src/monovector/diff-classifier.js +25 -6
  78. package/dist/src/monovector/diff-classifier.js.map +1 -1
  79. package/dist/src/orgrt/daemon.d.ts +21 -1
  80. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  81. package/dist/src/orgrt/daemon.js +82 -11
  82. package/dist/src/orgrt/daemon.js.map +1 -1
  83. package/dist/src/orgrt/inbox.d.ts.map +1 -1
  84. package/dist/src/orgrt/inbox.js +53 -20
  85. package/dist/src/orgrt/inbox.js.map +1 -1
  86. package/dist/src/parser.d.ts +4 -2
  87. package/dist/src/parser.d.ts.map +1 -1
  88. package/dist/src/parser.js +61 -25
  89. package/dist/src/parser.js.map +1 -1
  90. package/dist/src/services/config-file-manager.d.ts +10 -2
  91. package/dist/src/services/config-file-manager.d.ts.map +1 -1
  92. package/dist/src/services/config-file-manager.js +10 -2
  93. package/dist/src/services/config-file-manager.js.map +1 -1
  94. package/dist/src/ui/collector.mjs +43 -3
  95. package/dist/src/ui/dashboard.html +27 -8
  96. package/dist/src/ui/server.mjs +144 -14
  97. package/dist/tsconfig.tsbuildinfo +1 -1
  98. package/package.json +3 -3
  99. package/dist/src/capabilities/watcher.d.ts +0 -18
  100. package/dist/src/capabilities/watcher.d.ts.map +0 -1
  101. package/dist/src/capabilities/watcher.js +0 -107
  102. package/dist/src/capabilities/watcher.js.map +0 -1
  103. package/dist/src/config-adapter.d.ts +0 -16
  104. package/dist/src/config-adapter.d.ts.map +0 -1
  105. package/dist/src/config-adapter.js +0 -220
  106. package/dist/src/config-adapter.js.map +0 -1
@@ -12,45 +12,97 @@ export const SECRET_PATTERNS = [
12
12
  { pattern: /['"]xox[baprs]-[a-zA-Z0-9-]+['"]/g, type: 'Slack Token' },
13
13
  { pattern: /password\s*[:=]\s*['"][^'"]{8,}['"]/gi, type: 'Hardcoded Password' },
14
14
  ];
15
- export function findSecretsInDir(dir, depthLimit, baseDir, findings) {
16
- if (depthLimit <= 0)
15
+ export function createScanCoverage() {
16
+ return {
17
+ unreadableDirs: [],
18
+ unreadableFiles: [],
19
+ depthTruncatedDirs: [],
20
+ oversizedFiles: [],
21
+ filesScanned: 0,
22
+ dirsScanned: 0,
23
+ };
24
+ }
25
+ /** True when some part of the tree was not examined, for any reason. */
26
+ export function scanWasIncomplete(c) {
27
+ return (c.unreadableDirs.length > 0 ||
28
+ c.unreadableFiles.length > 0 ||
29
+ c.depthTruncatedDirs.length > 0 ||
30
+ c.oversizedFiles.length > 0);
31
+ }
32
+ /** True when the scanner hit a hard failure (not merely a configured limit). */
33
+ export function scanHadErrors(c) {
34
+ return c.unreadableDirs.length > 0 || c.unreadableFiles.length > 0;
35
+ }
36
+ /** Human-readable lines describing every gap in coverage. Empty when complete. */
37
+ export function describeScanGaps(c) {
38
+ const lines = [];
39
+ if (c.unreadableDirs.length > 0) {
40
+ lines.push(`${c.unreadableDirs.length} directory(ies) could not be read (e.g. ${c.unreadableDirs[0]})`);
41
+ }
42
+ if (c.unreadableFiles.length > 0) {
43
+ lines.push(`${c.unreadableFiles.length} file(s) could not be read (e.g. ${c.unreadableFiles[0]})`);
44
+ }
45
+ if (c.depthTruncatedDirs.length > 0) {
46
+ lines.push(`${c.depthTruncatedDirs.length} directory(ies) not scanned — depth limit reached (use --depth deep)`);
47
+ }
48
+ if (c.oversizedFiles.length > 0) {
49
+ lines.push(`${c.oversizedFiles.length} file(s) skipped — larger than 1MB`);
50
+ }
51
+ return lines;
52
+ }
53
+ export function findSecretsInDir(dir, depthLimit, baseDir, findings, coverage = createScanCoverage()) {
54
+ if (depthLimit <= 0) {
55
+ coverage.depthTruncatedDirs.push(relative(baseDir, dir) || dir);
17
56
  return;
57
+ }
58
+ let entries;
18
59
  try {
19
- const entries = readdirSync(dir, { withFileTypes: true });
20
- for (const entry of entries) {
21
- const isDotEnv = /^\.env(\..+)?$/.test(entry.name);
22
- if ((entry.name.startsWith('.') && !isDotEnv) || entry.name === 'node_modules' || entry.name === 'dist')
60
+ entries = readdirSync(dir, { withFileTypes: true });
61
+ }
62
+ catch {
63
+ coverage.unreadableDirs.push(relative(baseDir, dir) || dir);
64
+ return;
65
+ }
66
+ coverage.dirsScanned++;
67
+ for (const entry of entries) {
68
+ const isDotEnv = /^\.env(\..+)?$/.test(entry.name);
69
+ if ((entry.name.startsWith('.') && !isDotEnv) || entry.name === 'node_modules' || entry.name === 'dist')
70
+ continue;
71
+ const fullPath = join(dir, entry.name);
72
+ if (entry.isDirectory()) {
73
+ findSecretsInDir(fullPath, depthLimit - 1, baseDir, findings, coverage);
74
+ }
75
+ else if (entry.isFile() && (/\.(ts|js|json|yml|yaml)$/.test(entry.name) || isDotEnv) && !entry.name.endsWith('.d.ts')) {
76
+ let content;
77
+ try {
78
+ if (statSync(fullPath).size > 1024 * 1024) {
79
+ coverage.oversizedFiles.push(relative(baseDir, fullPath));
80
+ continue;
81
+ }
82
+ content = readFileSync(fullPath, 'utf-8');
83
+ }
84
+ catch {
85
+ coverage.unreadableFiles.push(relative(baseDir, fullPath));
23
86
  continue;
24
- const fullPath = join(dir, entry.name);
25
- if (entry.isDirectory()) {
26
- findSecretsInDir(fullPath, depthLimit - 1, baseDir, findings);
27
87
  }
28
- else if (entry.isFile() && (/\.(ts|js|json|yml|yaml)$/.test(entry.name) || isDotEnv) && !entry.name.endsWith('.d.ts')) {
29
- try {
30
- if (statSync(fullPath).size > 1024 * 1024)
31
- continue;
32
- const content = readFileSync(fullPath, 'utf-8');
33
- const lines = content.split('\n');
34
- for (let i = 0; i < lines.length; i++) {
35
- for (const { pattern, type } of SECRET_PATTERNS) {
36
- pattern.lastIndex = 0;
37
- let m;
38
- while ((m = pattern.exec(lines[i])) !== null) {
39
- findings.push({
40
- severity: output.warning('HIGH'),
41
- type: 'Hardcoded Secret',
42
- location: `${relative(baseDir, fullPath)}:${i + 1}`,
43
- description: type,
44
- });
45
- }
46
- }
88
+ coverage.filesScanned++;
89
+ const lines = content.split('\n');
90
+ for (let i = 0; i < lines.length; i++) {
91
+ for (const { pattern, type } of SECRET_PATTERNS) {
92
+ pattern.lastIndex = 0;
93
+ let m;
94
+ while ((m = pattern.exec(lines[i])) !== null) {
95
+ findings.push({
96
+ severity: output.warning('HIGH'),
97
+ type: 'Hardcoded Secret',
98
+ location: `${relative(baseDir, fullPath)}:${i + 1}`,
99
+ description: type,
100
+ });
47
101
  }
48
102
  }
49
- catch { /* file read error */ }
50
103
  }
51
104
  }
52
105
  }
53
- catch { /* dir read error */ }
54
106
  }
55
107
  // ─── scan subcommand ─────────────────────────────────────────────────────────
56
108
  export const scanCommand = {
@@ -92,6 +144,7 @@ export const scanCommand = {
92
144
  const spinner = output.createSpinner({ text: `Scanning ${target}...`, spinner: 'dots' });
93
145
  spinner.start();
94
146
  const findings = [];
147
+ const coverage = createScanCoverage();
95
148
  let criticalCount = 0, highCount = 0, mediumCount = 0, lowCount = 0;
96
149
  try {
97
150
  const fs = await import('fs');
@@ -156,7 +209,7 @@ export const scanCommand = {
156
209
  spinner.setText('Scanning for hardcoded secrets...');
157
210
  const scanDepth = depth === 'deep' ? 10 : depth === 'standard' ? 5 : 3;
158
211
  const prevCount = findings.length;
159
- findSecretsInDir(path.resolve(target), scanDepth, path.resolve(target), findings);
212
+ findSecretsInDir(path.resolve(target), scanDepth, path.resolve(target), findings, coverage);
160
213
  highCount += findings.length - prevCount;
161
214
  }
162
215
  if ((scanType === 'all' || scanType === 'code') && depth !== 'quick') {
@@ -168,53 +221,74 @@ export const scanCommand = {
168
221
  { pattern: /child_process.*exec[^S]/g, type: 'Command Injection', severity: 'high', desc: 'Possible command injection' },
169
222
  { pattern: /\$\{.*\}.*sql|sql.*\$\{/gi, type: 'SQL Injection', severity: 'high', desc: 'Possible SQL injection' },
170
223
  ];
224
+ // Same coverage accounting as findSecretsInDir: gaps are recorded, never
225
+ // swallowed, so an unreadable tree cannot masquerade as a clean one.
226
+ const codeBase = path.resolve(target);
171
227
  const scanCodeDir = (dir, depthLimit) => {
172
- if (depthLimit <= 0)
228
+ if (depthLimit <= 0) {
229
+ coverage.depthTruncatedDirs.push(path.relative(codeBase, dir) || dir);
173
230
  return;
231
+ }
232
+ let entries;
174
233
  try {
175
- const entries = fs.readdirSync(dir, { withFileTypes: true });
176
- for (const entry of entries) {
177
- if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'dist')
234
+ entries = fs.readdirSync(dir, { withFileTypes: true });
235
+ }
236
+ catch {
237
+ coverage.unreadableDirs.push(path.relative(codeBase, dir) || dir);
238
+ return;
239
+ }
240
+ for (const entry of entries) {
241
+ if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'dist')
242
+ continue;
243
+ const fullPath = path.join(dir, entry.name);
244
+ if (entry.isDirectory()) {
245
+ scanCodeDir(fullPath, depthLimit - 1);
246
+ }
247
+ else if (entry.isFile() && /\.(ts|js|tsx|jsx)$/.test(entry.name) && !entry.name.endsWith('.d.ts')) {
248
+ let content;
249
+ try {
250
+ if (fs.statSync(fullPath).size > 1024 * 1024) {
251
+ coverage.oversizedFiles.push(path.relative(codeBase, fullPath));
252
+ continue;
253
+ }
254
+ content = fs.readFileSync(fullPath, 'utf-8');
255
+ }
256
+ catch {
257
+ coverage.unreadableFiles.push(path.relative(codeBase, fullPath));
178
258
  continue;
179
- const fullPath = path.join(dir, entry.name);
180
- if (entry.isDirectory()) {
181
- scanCodeDir(fullPath, depthLimit - 1);
182
259
  }
183
- else if (entry.isFile() && /\.(ts|js|tsx|jsx)$/.test(entry.name) && !entry.name.endsWith('.d.ts')) {
184
- try {
185
- if (fs.statSync(fullPath).size > 1024 * 1024)
186
- continue;
187
- const content = fs.readFileSync(fullPath, 'utf-8');
188
- const lines = content.split('\n');
189
- for (let i = 0; i < lines.length; i++) {
190
- for (const { pattern, type, severity, desc } of codePatterns) {
191
- pattern.lastIndex = 0;
192
- let m;
193
- while ((m = pattern.exec(lines[i])) !== null) {
194
- if (severity === 'high')
195
- highCount++;
196
- else
197
- mediumCount++;
198
- findings.push({
199
- severity: severity === 'high' ? output.warning('HIGH') : output.warning('MEDIUM'),
200
- type,
201
- location: `${path.relative(target, fullPath)}:${i + 1}`,
202
- description: desc,
203
- });
204
- }
205
- }
260
+ const lines = content.split('\n');
261
+ for (let i = 0; i < lines.length; i++) {
262
+ for (const { pattern, type, severity, desc } of codePatterns) {
263
+ pattern.lastIndex = 0;
264
+ let m;
265
+ while ((m = pattern.exec(lines[i])) !== null) {
266
+ if (severity === 'high')
267
+ highCount++;
268
+ else
269
+ mediumCount++;
270
+ findings.push({
271
+ severity: severity === 'high' ? output.warning('HIGH') : output.warning('MEDIUM'),
272
+ type,
273
+ location: `${path.relative(target, fullPath)}:${i + 1}`,
274
+ description: desc,
275
+ });
206
276
  }
207
277
  }
208
- catch { /* file read error */ }
209
278
  }
210
279
  }
211
280
  }
212
- catch { /* dir read error */ }
213
281
  };
214
282
  const scanDepth = depth === 'deep' ? 10 : 5;
215
283
  scanCodeDir(path.resolve(target), scanDepth);
216
284
  }
217
- spinner.succeed('Scan complete');
285
+ const gaps = describeScanGaps(coverage);
286
+ if (gaps.length > 0) {
287
+ spinner.stop(output.warning('Scan finished with INCOMPLETE coverage'));
288
+ }
289
+ else {
290
+ spinner.succeed('Scan complete');
291
+ }
218
292
  output.writeln();
219
293
  if (findings.length > 0) {
220
294
  output.printTable({
@@ -229,9 +303,19 @@ export const scanCommand = {
229
303
  if (findings.length > 20)
230
304
  output.writeln(output.dim(`... and ${findings.length - 20} more issues`));
231
305
  }
306
+ else if (gaps.length > 0) {
307
+ // Never present an incomplete scan as a clean bill of health.
308
+ output.writeln(output.warning('No security issues found in the parts that could be scanned — coverage was INCOMPLETE (see below).'));
309
+ }
232
310
  else {
233
311
  output.writeln(output.success('No security issues found!'));
234
312
  }
313
+ if (gaps.length > 0) {
314
+ output.writeln();
315
+ output.writeln(output.warning('Incomplete coverage:'));
316
+ for (const g of gaps)
317
+ output.writeln(output.warning(` - ${g}`));
318
+ }
235
319
  output.writeln();
236
320
  output.printBox([
237
321
  `Target: ${target}`,
@@ -240,6 +324,9 @@ export const scanCommand = {
240
324
  ``,
241
325
  `Critical: ${criticalCount} High: ${highCount} Medium: ${mediumCount} Low: ${lowCount}`,
242
326
  `Total Issues: ${findings.length}`,
327
+ ``,
328
+ `Coverage: ${coverage.filesScanned} file(s) in ${coverage.dirsScanned} dir(s) scanned`,
329
+ `Coverage status: ${gaps.length === 0 ? 'complete' : `INCOMPLETE (${gaps.length} gap type(s))`}`,
243
330
  ].join('\n'), 'Scan Summary');
244
331
  if (fix && criticalCount + highCount > 0) {
245
332
  const resolvedTarget = realpathSync(path.resolve(target));
@@ -263,6 +350,11 @@ export const scanCommand = {
263
350
  fixSpinner.fail('Some fixes could not be applied automatically');
264
351
  }
265
352
  }
353
+ // A scan that hit real read errors cannot certify anything — fail loudly.
354
+ // Depth truncation is a configured limit, not an error, so it is reported
355
+ // above but does not by itself flip the exit status.
356
+ if (scanHadErrors(coverage))
357
+ return { success: false };
266
358
  return { success: findings.length === 0 || (criticalCount === 0 && highCount === 0) };
267
359
  }
268
360
  catch (error) {
@@ -307,11 +399,21 @@ export const secretsCommand = {
307
399
  const spinner = output.createSpinner({ text: `Scanning ${targetPath}...`, spinner: 'dots' });
308
400
  spinner.start();
309
401
  const findings = [];
402
+ const coverage = createScanCoverage();
310
403
  const scanDepth = depth === 'deep' ? 10 : depth === 'standard' ? 5 : 3;
311
- findSecretsInDir(resolve(targetPath), scanDepth, resolve(targetPath), findings);
312
- spinner.succeed('Scan complete');
404
+ findSecretsInDir(resolve(targetPath), scanDepth, resolve(targetPath), findings, coverage);
405
+ const gaps = describeScanGaps(coverage);
406
+ if (gaps.length > 0) {
407
+ spinner.stop(output.warning('Scan finished with INCOMPLETE coverage'));
408
+ }
409
+ else {
410
+ spinner.succeed('Scan complete');
411
+ }
313
412
  output.writeln();
314
- if (findings.length === 0) {
413
+ if (findings.length === 0 && gaps.length > 0) {
414
+ output.writeln(output.warning('No secrets found in the parts that could be scanned — coverage was INCOMPLETE.'));
415
+ }
416
+ else if (findings.length === 0) {
315
417
  output.writeln(output.success('No secrets found.'));
316
418
  }
317
419
  else {
@@ -326,9 +428,20 @@ export const secretsCommand = {
326
428
  if (findings.length > 20)
327
429
  output.writeln(output.dim(`... and ${findings.length - 20} more`));
328
430
  }
431
+ if (gaps.length > 0) {
432
+ output.writeln();
433
+ output.writeln(output.warning('Incomplete coverage:'));
434
+ for (const g of gaps)
435
+ output.writeln(output.warning(` - ${g}`));
436
+ }
329
437
  output.writeln();
330
- output.writeln(output.bold('Summary: ') + `${findings.length} secret(s) found in ${targetPath}`);
331
- return { success: findings.length === 0 };
438
+ output.writeln(output.bold('Summary: ') +
439
+ `${findings.length} secret(s) found in ${targetPath} ` +
440
+ `(${coverage.filesScanned} file(s) in ${coverage.dirsScanned} dir(s) scanned, ` +
441
+ `coverage ${gaps.length === 0 ? 'complete' : 'INCOMPLETE'})`);
442
+ // Read errors mean the tree was not fully examined — "no secrets" is not
443
+ // a result we can stand behind, so do not exit 0 on it.
444
+ return { success: findings.length === 0 && !scanHadErrors(coverage) };
332
445
  },
333
446
  };
334
447
  //# sourceMappingURL=security-scan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"security-scan.js","sourceRoot":"","sources":["../../../src/commands/security-scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-scan.js","sourceRoot":"","sources":["../../../src/commands/security-scan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../src/commands/swarm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAu1B1E,eAAO,MAAM,YAAY,EAAE,OA4B1B,CAAC;eA6Da,YAAY"}
1
+ {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../src/commands/swarm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAq3B1E,eAAO,MAAM,YAAY,EAAE,OA4B1B,CAAC;eA6Da,YAAY"}
@@ -8,19 +8,45 @@ import { callMCPTool, MCPClientError } from '../mcp-client.js';
8
8
  import * as fs from 'fs';
9
9
  import * as path from 'path';
10
10
  import { writeJsonFileAtomic } from '../utils/json-file.js';
11
- // Canonical paths shared with MCP tools so CLI and MCP see the same state
12
- const SWARM_STATE_DIR = '.monomind/swarm';
11
+ import { getMonomindDataRoot, getProjectCwd, migrateLegacyStoreFile } from '../mcp-tools/types.js';
12
+ // Canonical paths — resolved through getMonomindDataRoot() so the CLI and the MCP
13
+ // tools (agent-tools.ts / swarm-tools.ts / task-tools.ts) read and write the SAME
14
+ // physical files. These used to be `path.join(process.cwd(), '.monomind/...')`,
15
+ // which only coincides with the canonical root when there is no `.git` directory;
16
+ // inside a real repo the canonical root is `<repo>/.git/monomind`, so the CLI read
17
+ // an empty parallel store ("0 agents" with agents on disk) and `swarm init` wrote a
18
+ // second, divergent swarm-state.json no MCP tool ever read.
19
+ const SWARM_STATE_SUBDIR = 'swarm';
13
20
  const SWARM_STATE_FILE = 'swarm-state.json';
14
- const AGENT_STORE_PATH = '.monomind/agents/store.json';
21
+ const AGENT_STORE_SUBDIR = 'agents';
22
+ const AGENT_STORE_FILE = 'store.json';
23
+ function getSwarmDir() {
24
+ return path.join(getMonomindDataRoot(), SWARM_STATE_SUBDIR);
25
+ }
26
+ // Canonical swarm-state.json path. Also pulls a pre-existing legacy
27
+ // `<cwd>/.monomind/swarm/swarm-state.json` into place (copy, never move; no-op once
28
+ // the canonical file exists or when the two paths coincide) so state written by an
29
+ // older CLI isn't silently orphaned — same helper the MCP tools use.
30
+ function getSwarmStateFile() {
31
+ const file = path.join(getSwarmDir(), SWARM_STATE_FILE);
32
+ migrateLegacyStoreFile(file, path.join(SWARM_STATE_SUBDIR, SWARM_STATE_FILE));
33
+ return file;
34
+ }
35
+ function getAgentStoreFile() {
36
+ const file = path.join(getMonomindDataRoot(), AGENT_STORE_SUBDIR, AGENT_STORE_FILE);
37
+ migrateLegacyStoreFile(file, path.join(AGENT_STORE_SUBDIR, AGENT_STORE_FILE));
38
+ return file;
39
+ }
15
40
  // Get dynamic swarm status from MCP-canonical state files
16
41
  function getSwarmStatus(swarmId) {
17
- const sessionDir = path.join(process.cwd(), '.claude', 'sessions');
42
+ const projectCwd = getProjectCwd();
43
+ const sessionDir = path.join(projectCwd, '.claude', 'sessions');
18
44
  const memoryPaths = [
19
- path.join(process.cwd(), '.monomind', 'memory.db'),
20
- path.join(process.cwd(), '.claude', 'memory.db'),
45
+ path.join(projectCwd, '.monomind', 'memory.db'),
46
+ path.join(projectCwd, '.claude', 'memory.db'),
21
47
  ];
22
- // Read swarm state from MCP-canonical path (.monomind/swarm/swarm-state.json)
23
- const swarmStateFile = path.join(process.cwd(), SWARM_STATE_DIR, SWARM_STATE_FILE);
48
+ // Read swarm state from the MCP-canonical path
49
+ const swarmStateFile = getSwarmStateFile();
24
50
  let swarmState = null;
25
51
  if (fs.existsSync(swarmStateFile)) {
26
52
  try {
@@ -52,10 +78,11 @@ function getSwarmStatus(swarmId) {
52
78
  // Ignore parse errors
53
79
  }
54
80
  }
55
- // Count agents from MCP-canonical agent store (.monomind/agents/store.json)
81
+ // Count agents from the MCP-canonical agent store (the same physical file
82
+ // agent_spawn writes to — see getAgentStoreFile()).
56
83
  let activeAgents = 0;
57
84
  let totalAgents = 0;
58
- const agentStoreFile = path.join(process.cwd(), AGENT_STORE_PATH);
85
+ const agentStoreFile = getAgentStoreFile();
59
86
  if (fs.existsSync(agentStoreFile)) {
60
87
  try {
61
88
  const agentSz = fs.statSync(agentStoreFile).size;
@@ -102,7 +129,7 @@ function getSwarmStatus(swarmId) {
102
129
  let completedTasks = 0;
103
130
  let inProgressTasks = 0;
104
131
  let pendingTasks = 0;
105
- const tasksDir = path.join(process.cwd(), SWARM_STATE_DIR, 'tasks');
132
+ const tasksDir = path.join(getSwarmDir(), 'tasks');
106
133
  if (fs.existsSync(tasksDir)) {
107
134
  try {
108
135
  const taskFiles = fs.readdirSync(tasksDir).filter(f => f.endsWith('.json'));
@@ -311,7 +338,7 @@ const initCommand = {
311
338
  output.printSuccess('Swarm initialized successfully');
312
339
  // Save swarm state to MCP-canonical path so CLI and MCP share state
313
340
  try {
314
- const swarmDir2 = path.join(process.cwd(), SWARM_STATE_DIR);
341
+ const swarmDir2 = getSwarmDir();
315
342
  if (!fs.existsSync(swarmDir2)) {
316
343
  fs.mkdirSync(swarmDir2, { recursive: true });
317
344
  }
@@ -466,7 +493,7 @@ const startCommand = {
466
493
  output.writeln(output.dim(' Run with -v/--verbose for more detail, or `monomind doctor` to check config/permission issues.'));
467
494
  }
468
495
  // Persist swarm state to MCP-canonical path so CLI and MCP share state
469
- const swarmDir = path.join(process.cwd(), SWARM_STATE_DIR);
496
+ const swarmDir = getSwarmDir();
470
497
  if (!fs.existsSync(swarmDir))
471
498
  fs.mkdirSync(swarmDir, { recursive: true });
472
499
  // Read existing store to preserve other swarms
@@ -627,7 +654,7 @@ const stopCommand = {
627
654
  }
628
655
  // Only update persisted swarm state if the MCP call succeeded (#1423)
629
656
  if (mcpStopped) {
630
- const stopStateFile = path.join(process.cwd(), SWARM_STATE_DIR, SWARM_STATE_FILE);
657
+ const stopStateFile = getSwarmStateFile();
631
658
  if (fs.existsSync(stopStateFile)) {
632
659
  try {
633
660
  const stopStatSz = fs.statSync(stopStateFile).size;