milens 0.6.4 → 0.6.5

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 (67) hide show
  1. package/.agents/skills/adapters/SKILL.md +20 -0
  2. package/.agents/skills/analyzer/SKILL.md +35 -13
  3. package/.agents/skills/apps/SKILL.md +25 -1
  4. package/.agents/skills/docs/SKILL.md +32 -5
  5. package/.agents/skills/milens/SKILL.md +36 -6
  6. package/.agents/skills/milens-architect/SKILL.md +128 -0
  7. package/.agents/skills/milens-debugger/SKILL.md +141 -0
  8. package/.agents/skills/orchestrator/SKILL.md +59 -0
  9. package/.agents/skills/parser/SKILL.md +35 -14
  10. package/.agents/skills/root/SKILL.md +39 -17
  11. package/.agents/skills/scripts/SKILL.md +21 -3
  12. package/.agents/skills/security/SKILL.md +32 -11
  13. package/.agents/skills/server/SKILL.md +45 -19
  14. package/.agents/skills/store/SKILL.md +40 -18
  15. package/.agents/skills/test/SKILL.md +57 -9
  16. package/LICENSE +21 -75
  17. package/README.md +260 -433
  18. package/dist/agents-md.d.ts.map +1 -1
  19. package/dist/agents-md.js +5 -3
  20. package/dist/agents-md.js.map +1 -1
  21. package/dist/analyzer/engine.d.ts +1 -0
  22. package/dist/analyzer/engine.d.ts.map +1 -1
  23. package/dist/analyzer/engine.js +36 -6
  24. package/dist/analyzer/engine.js.map +1 -1
  25. package/dist/cli.js +296 -19
  26. package/dist/cli.js.map +1 -1
  27. package/dist/orchestrator/orchestrator.d.ts +65 -0
  28. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  29. package/dist/orchestrator/orchestrator.js +178 -0
  30. package/dist/orchestrator/orchestrator.js.map +1 -0
  31. package/dist/orchestrator/reporter.d.ts +15 -0
  32. package/dist/orchestrator/reporter.d.ts.map +1 -0
  33. package/dist/orchestrator/reporter.js +38 -0
  34. package/dist/orchestrator/reporter.js.map +1 -0
  35. package/dist/security/rules.d.ts.map +1 -1
  36. package/dist/security/rules.js +4 -1
  37. package/dist/security/rules.js.map +1 -1
  38. package/dist/server/hooks.d.ts +3 -0
  39. package/dist/server/hooks.d.ts.map +1 -1
  40. package/dist/server/hooks.js +79 -0
  41. package/dist/server/hooks.js.map +1 -1
  42. package/dist/server/mcp-prompts.d.ts.map +1 -1
  43. package/dist/server/mcp-prompts.js +1 -1
  44. package/dist/server/mcp-prompts.js.map +1 -1
  45. package/dist/server/mcp.d.ts.map +1 -1
  46. package/dist/server/mcp.js +418 -15
  47. package/dist/server/mcp.js.map +1 -1
  48. package/dist/server/watcher.d.ts +39 -0
  49. package/dist/server/watcher.d.ts.map +1 -0
  50. package/dist/server/watcher.js +134 -0
  51. package/dist/server/watcher.js.map +1 -0
  52. package/dist/skills.js +51 -7
  53. package/dist/skills.js.map +1 -1
  54. package/dist/store/annotations.d.ts.map +1 -1
  55. package/dist/store/annotations.js +18 -15
  56. package/dist/store/annotations.js.map +1 -1
  57. package/dist/store/confidence.d.ts +10 -0
  58. package/dist/store/confidence.d.ts.map +1 -1
  59. package/dist/store/confidence.js +28 -1
  60. package/dist/store/confidence.js.map +1 -1
  61. package/dist/store/db.d.ts +16 -0
  62. package/dist/store/db.d.ts.map +1 -1
  63. package/dist/store/db.js +121 -7
  64. package/dist/store/db.js.map +1 -1
  65. package/dist/store/schema.sql +24 -9
  66. package/docs/README.md +3 -5
  67. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../src/agents-md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA0CzC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA+EvE"}
1
+ {"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../src/agents-md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA0CzC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgFvE"}
package/dist/agents-md.js CHANGED
@@ -100,12 +100,14 @@ export function generateAgentsMd(db, rootPath) {
100
100
  lines.push('- `/milens:tdd <symbol>` — write tests with coverage analysis');
101
101
  lines.push('- `/milens:security` — security audit');
102
102
  lines.push('- `/milens:refactor <symbol>` — safe refactor with blast radius check');
103
+ lines.push('- `/milens:architect` — analyze architecture, domains, coupling');
104
+ lines.push('- `/milens:debugger <symbol>` — root cause analysis with execution tracing');
103
105
  lines.push('');
104
106
  lines.push('## Session Startup');
105
107
  lines.push('When starting work, call:');
106
- lines.push('1. session_start({agent: "your-agent-name"})');
107
- lines.push('2. recall({}) — retrieve past annotations');
108
- lines.push('3. codebase_summary({}) — refresh context');
108
+ lines.push('1. mcp_milens_session_start({agent: "your-agent-name", repo: "<workspaceRoot>"})');
109
+ lines.push('2. mcp_milens_recall({repo: "<workspaceRoot>"}) — retrieve past annotations');
110
+ lines.push('3. mcp_milens_codebase_summary({repo: "<workspaceRoot>"}) — refresh context');
109
111
  lines.push('');
110
112
  return lines.join('\n');
111
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../src/agents-md.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../src/agents-md.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ interface EngineOptions {
6
6
  force?: boolean;
7
7
  aliases?: Record<string, string>;
8
8
  embeddings?: boolean;
9
+ files?: string[];
9
10
  }
10
11
  export declare function analyze(opts: EngineOptions): Promise<AnalysisStats>;
11
12
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/analyzer/engine.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAyJ,aAAa,EAAE,MAAM,aAAa,CAAC;AAgExM,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAmBD,wBAAsB,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAkTzE"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/analyzer/engine.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAyJ,aAAa,EAAE,MAAM,aAAa,CAAC;AAgExM,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAqCD,wBAAsB,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CA0TzE"}
@@ -1,8 +1,8 @@
1
- import { readFileSync } from 'node:fs';
1
+ import { readFileSync, statSync } from 'node:fs';
2
2
  import { readFile } from 'node:fs/promises';
3
3
  import { resolve } from 'node:path';
4
4
  import { scanFiles } from './scanner.js';
5
- import { langForFile } from '../parser/languages.js';
5
+ import { langForFile, supportedExtensions } from '../parser/languages.js';
6
6
  import { getParser, loadLanguage } from '../parser/loader.js';
7
7
  import { extractFromTree, clearQueryCache } from '../parser/extract.js';
8
8
  import { extractVueScript, extractVueTemplateRefs } from '../parser/lang-vue.js';
@@ -70,15 +70,45 @@ function buildChunks(files) {
70
70
  chunks.push(current);
71
71
  return chunks;
72
72
  }
73
+ function scanFilesWithFilter(rootPath, filePaths, verbose = false) {
74
+ const exts = new Set(supportedExtensions());
75
+ const results = [];
76
+ for (const relPath of filePaths) {
77
+ const abs = resolve(rootPath, relPath);
78
+ try {
79
+ const stat = statSync(abs);
80
+ if (!stat.isFile())
81
+ continue;
82
+ }
83
+ catch {
84
+ continue;
85
+ }
86
+ const ext = '.' + relPath.split('.').pop()?.toLowerCase();
87
+ if (exts.has(ext)) {
88
+ results.push({ relativePath: relPath.replace(/\\/g, '/'), absolutePath: abs });
89
+ }
90
+ }
91
+ if (verbose)
92
+ console.log(`[scan] Filtered to ${results.length} of ${filePaths.length} specified files`);
93
+ return results;
94
+ }
73
95
  export async function analyze(opts) {
74
96
  const t0 = Date.now();
75
97
  const rootPath = resolve(opts.rootPath);
76
98
  const db = new Database(opts.dbPath);
77
99
  const aliases = opts.aliases ?? {};
78
- if (opts.force)
79
- db.clear();
80
- // Phase 1: Scan files
81
- const files = scanFiles(rootPath, opts.verbose);
100
+ if (opts.force) {
101
+ if (opts.files && opts.files.length > 0) {
102
+ db.clearFiles(opts.files);
103
+ }
104
+ else {
105
+ db.clear();
106
+ }
107
+ }
108
+ // Phase 1: Scan files (or use explicit file list for incremental)
109
+ const files = opts.files && opts.files.length > 0
110
+ ? scanFilesWithFilter(rootPath, opts.files, opts.verbose)
111
+ : scanFiles(rootPath, opts.verbose);
82
112
  if (opts.verbose)
83
113
  console.log(`[scan] Found ${files.length} source files`);
84
114
  // Phase 2: Group files by language for cache-friendly processing
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/analyzer/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/analyzer/engine.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from 'commander';
3
3
  import { resolve, join, dirname, basename } from 'node:path';
4
- import { mkdirSync, readFileSync, rmSync } from 'node:fs';
4
+ import { mkdirSync, readFileSync, rmSync, existsSync } from 'node:fs';
5
5
  import { createHash } from 'node:crypto';
6
6
  import { fileURLToPath } from 'node:url';
7
7
  import { loadAliases } from './analyzer/config.js';
@@ -19,6 +19,7 @@ program
19
19
  .option('-o, --output <dir>', 'Output directory for database')
20
20
  .option('-v, --verbose', 'Show detailed progress')
21
21
  .option('-f, --force', 'Force full re-index')
22
+ .option('--files <paths...>', 'Only re-index specific files (relative to root)')
22
23
  .option('-s, --skills', 'Generate skill files for all supported editors')
23
24
  .option('--skills-copilot', 'Generate skill files for GitHub Copilot only')
24
25
  .option('--skills-cursor', 'Generate skill files for Cursor only')
@@ -41,6 +42,7 @@ program
41
42
  force: opts.force,
42
43
  aliases,
43
44
  embeddings: opts.embeddings,
45
+ files: opts.files,
44
46
  });
45
47
  // Register in global registry
46
48
  const contentHash = createHash('sha256').update(JSON.stringify(stats)).digest('hex').slice(0, 12);
@@ -195,15 +197,19 @@ program
195
197
  program
196
198
  .command('list')
197
199
  .description('List all indexed repositories')
198
- .action(async () => {
200
+ .option('-p, --path <path>', 'Repository root path (filter by path prefix)')
201
+ .action(async (opts) => {
199
202
  const { RepoRegistry } = await import('./store/registry.js');
200
203
  const entries = new RepoRegistry().listAll();
201
- if (entries.length === 0) {
204
+ const filtered = opts.path
205
+ ? entries.filter((e) => e.rootPath.startsWith(resolve(opts.path)))
206
+ : entries;
207
+ if (filtered.length === 0) {
202
208
  console.log('No indexed repositories.');
203
209
  return;
204
210
  }
205
- console.log(`${entries.length} indexed repositories:\n`);
206
- for (const entry of entries) {
211
+ console.log(`${filtered.length} indexed repositories:\n`);
212
+ for (const entry of filtered) {
207
213
  console.log(` ${entry.rootPath}`);
208
214
  console.log(` DB: ${entry.dbPath}`);
209
215
  console.log(` Indexed: ${entry.analyzedAt}`);
@@ -506,12 +512,22 @@ program
506
512
  `# Milens Evolved ${key.toUpperCase()} Rules`,
507
513
  `# Auto-generated from ${anns.length} high-confidence annotations`,
508
514
  '',
515
+ '## Discovered Knowledge',
516
+ '',
509
517
  ];
510
518
  for (const a of anns) {
511
- lines.push(`- **${a.symbol}**: ${a.value}`);
519
+ lines.push(`- **\`${a.symbol}\`**: ${a.value}`);
512
520
  }
513
- // Write to .agents/skills/{key}.md
514
- const skillDir = pathJoin(resolve(opts.path), '.agents', 'skills', `milens-${key}`);
521
+ lines.push('');
522
+ lines.push('## Using This Knowledge');
523
+ lines.push('Before editing any symbol mentioned above:');
524
+ lines.push('1. `mcp_milens_impact({target: "<symbol>", repo: "<workspaceRoot>"})` — check blast radius');
525
+ lines.push('2. `mcp_milens_context({name: "<symbol>", repo: "<workspaceRoot>"})` — see callers/callees');
526
+ lines.push('3. If depth-1 dependents > 5 → **STOP and warn** before proceeding');
527
+ lines.push('');
528
+ lines.push('> See `milens/SKILL.md` for full mandatory workflows and tool reference.');
529
+ // Write to .agents/skills/milens-evolved-{key}.md (avoid collision with domain skills)
530
+ const skillDir = pathJoin(resolve(opts.path), '.agents', 'skills', `milens-evolved-${key}`);
515
531
  if (!existsSync(skillDir))
516
532
  mkdirSync(skillDir, { recursive: true });
517
533
  writeFileSync(pathJoin(skillDir, 'SKILL.md'), lines.join('\n'));
@@ -569,9 +585,34 @@ program
569
585
  switch (name) {
570
586
  case 'tdd': {
571
587
  const coverage = db.getTestCoverage();
572
- console.log(`Test Coverage Gaps:`);
573
- console.log(` Exported: ${coverage.exportedProductionSymbols} | Tested: ${coverage.testedSymbols} | Coverage: ${Math.round(coverage.testedSymbols / Math.max(1, coverage.exportedProductionSymbols) * 100)}%`);
574
- console.log(`\nRun test_coverage_gaps() via MCP for prioritized list.`);
588
+ const coveragePct = Math.round(coverage.testedSymbols / Math.max(1, coverage.exportedProductionSymbols) * 100);
589
+ console.log('╔══════════════════════════════════╗');
590
+ console.log('║ TDD Workflow Coverage ║');
591
+ console.log('╠══════════════════════════════════╣');
592
+ console.log(`║ Exported: ${String(coverage.exportedProductionSymbols).padEnd(5)} | Tested: ${String(coverage.testedSymbols).padEnd(5)} ║`);
593
+ console.log(`║ Coverage: ${String(coveragePct).padStart(3)}%${''.padEnd(20)}║`);
594
+ console.log('╚══════════════════════════════════╝');
595
+ const gaps = db.getTestCoverageGaps(15);
596
+ if (gaps.length > 0) {
597
+ console.log(`\n🧪 Top ${gaps.length} Untested Symbols (by risk):`);
598
+ for (let i = 0; i < gaps.length; i++) {
599
+ const s = gaps[i];
600
+ const incoming = db.getIncomingLinks(s.id).filter((l) => l.type !== 'contains');
601
+ const risk = s.heat && s.heat > 80 ? '🔴 CRITICAL' : s.heat && s.heat > 50 ? '🟠 HIGH' : s.heat && s.heat > 30 ? '🟡 MEDIUM' : '🟢 LOW';
602
+ console.log(` ${i + 1}. ${s.name} [${s.kind}] ${s.filePath}:${s.startLine} — heat:${s.heat ?? 0}, deps:${incoming.length} → ${risk}`);
603
+ }
604
+ }
605
+ else {
606
+ console.log(`\n✅ All exported symbols have test coverage.`);
607
+ }
608
+ const testFiles = coverage.testFiles > 0
609
+ ? ` Test files found: ${coverage.testFiles}`
610
+ : ` ⚠ No test files detected in index.`;
611
+ console.log(`\n${testFiles}`);
612
+ console.log(`\n📋 Next steps:`);
613
+ console.log(` 1. Run \`milens workflow tdd\` after each change to track gaps`);
614
+ console.log(` 2. Use \`milens serve\` + MCP \`test_plan({name: "symbol"})\` for per-symbol test strategy`);
615
+ console.log(` 3. Use MCP \`test_generate({symbol: "symbol"})\` to auto-generate test file`);
575
616
  break;
576
617
  }
577
618
  case 'review': {
@@ -625,11 +666,204 @@ program
625
666
  }
626
667
  case 'onboard': {
627
668
  const summary = db.getCodebaseSummary();
628
- console.log(`Milens Onboarding Report:`);
629
- console.log(` Symbols: ${summary.symbols} | Links: ${summary.links} | Files: ${summary.files}`);
630
- console.log(` Coverage: ${summary.coveragePct}%`);
631
- console.log(`\nSession startup — call:`);
632
- console.log(` 1. session_start() codebase_summary() recall()`);
669
+ const coverage = db.getTestCoverage();
670
+ console.log('╔══════════════════════════════════╗');
671
+ console.log('║ Milens Onboarding Report ║');
672
+ console.log('╚══════════════════════════════════╝\n');
673
+ console.log(`📊 Codebase: ${summary.symbols} symbols, ${summary.links} links, ${summary.files} files`);
674
+ console.log(`🧪 Test coverage: ${summary.coveragePct}% (${summary.testedSymbols}/${summary.exportedSymbols} exported)\n`);
675
+ if (summary.domains.length > 0) {
676
+ console.log('🗂️ Domain clusters:');
677
+ for (const d of summary.domains.slice(0, 8)) {
678
+ const pct = summary.symbols > 0 ? Math.round(d.symbols / summary.symbols * 100) : 0;
679
+ console.log(` ${d.domain}: ${d.files}f, ${d.symbols}s (${pct}%)`);
680
+ }
681
+ console.log();
682
+ }
683
+ if (summary.topHubs.length > 0) {
684
+ console.log('⭐ Key entry points:');
685
+ for (const h of summary.topHubs.slice(0, 8)) {
686
+ const incoming = db.getIncomingLinks(h.id).filter((l) => l.type !== 'contains');
687
+ console.log(` ${h.name} [${h.kind}] ${h.filePath}:${h.startLine} — heat:${h.heat ?? 0}, deps:${incoming.length}`);
688
+ }
689
+ console.log();
690
+ }
691
+ const deadCode = db.findDeadCode(undefined, 5);
692
+ if (deadCode.length > 0) {
693
+ console.log(`⚠ Dead code candidates: ${deadCode.length}`);
694
+ for (const s of deadCode.slice(0, 3)) {
695
+ console.log(` ${s.name} [${s.kind}] ${s.filePath}:${s.startLine}`);
696
+ }
697
+ console.log();
698
+ }
699
+ console.log('📋 Getting started:');
700
+ console.log(' 1. Run `milens workflow tdd` to see coverage gaps');
701
+ console.log(' 2. Run `milens workflow review` before committing changes');
702
+ console.log(' 3. Run `milens serve` for MCP integration with your AI agent');
703
+ break;
704
+ }
705
+ case 'security-scan': {
706
+ console.log('╔══════════════════════════════════╗');
707
+ console.log('║ Security Scan Workflow ║');
708
+ console.log('╚══════════════════════════════════╝\n');
709
+ try {
710
+ const { loadRules } = await import('./security/rules.js');
711
+ const { readFileSync, readdirSync, statSync } = await import('node:fs');
712
+ const { join: pathJoin, relative: pathRel } = await import('node:path');
713
+ const rules = loadRules().filter(r => r.enabled);
714
+ console.log(`Loaded ${rules.length} active security rules\n`);
715
+ const findings = [];
716
+ const MAX_FILE_SIZE = 200 * 1024;
717
+ function scanDir(dir) {
718
+ try {
719
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
720
+ const fullPath = pathJoin(dir, entry.name);
721
+ if (entry.isDirectory()) {
722
+ if (['node_modules', '.git', 'dist', 'build', '.next', '__pycache__', '.venv', 'vendor', 'coverage'].includes(entry.name))
723
+ continue;
724
+ scanDir(fullPath);
725
+ }
726
+ else if (entry.isFile()) {
727
+ const ext = entry.name.split('.').pop()?.toLowerCase() || '';
728
+ if (!['ts', 'js', 'tsx', 'jsx', 'py', 'go', 'rs', 'java', 'rb', 'php', 'sql', 'sh', 'yaml', 'yml', 'json', 'html', 'css', 'vue'].includes(ext))
729
+ continue;
730
+ try {
731
+ const stat = statSync(fullPath);
732
+ if (stat.size > MAX_FILE_SIZE)
733
+ return;
734
+ const content = readFileSync(fullPath, 'utf-8');
735
+ for (const rule of rules) {
736
+ for (const pattern of rule.patterns) {
737
+ pattern.lastIndex = 0;
738
+ let match;
739
+ while ((match = pattern.exec(content)) !== null) {
740
+ const lineNum = content.substring(0, match.index).split('\n').length;
741
+ findings.push({
742
+ severity: rule.severity,
743
+ rule: rule.id,
744
+ file: pathRel(root, fullPath).replace(/\\/g, '/'),
745
+ line: lineNum,
746
+ match: match[0].length > 80 ? match[0].slice(0, 77) + '...' : match[0],
747
+ category: rule.category,
748
+ fix: rule.fix,
749
+ });
750
+ }
751
+ }
752
+ }
753
+ }
754
+ catch { /* skip unreadable */ }
755
+ }
756
+ }
757
+ }
758
+ catch { /* skip unreadable dir */ }
759
+ }
760
+ scanDir(root);
761
+ const bySeverity = {};
762
+ const byCategory = {};
763
+ for (const f of findings) {
764
+ bySeverity[f.severity] = (bySeverity[f.severity] || 0) + 1;
765
+ byCategory[f.category] = (byCategory[f.category] || 0) + 1;
766
+ }
767
+ console.log(`📊 Summary: ${findings.length} findings`);
768
+ if (findings.length > 0) {
769
+ for (const s of ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW']) {
770
+ if (bySeverity[s])
771
+ console.log(` ${s}: ${bySeverity[s]}`);
772
+ }
773
+ console.log();
774
+ // Show top findings by severity
775
+ const sorted = [...findings].sort((a, b) => {
776
+ const order = { CRITICAL: 0, HIGH: 1, MEDIUM: 2, LOW: 3 };
777
+ return (order[a.severity] ?? 4) - (order[b.severity] ?? 4);
778
+ });
779
+ for (const f of sorted.slice(0, 20)) {
780
+ const sevIcon = f.severity === 'CRITICAL' ? '🔴' : f.severity === 'HIGH' ? '🟠' : f.severity === 'MEDIUM' ? '🟡' : '🟢';
781
+ console.log(`${sevIcon} [${f.severity}] ${f.rule} — ${f.file}:${f.line}`);
782
+ console.log(` ${f.match.slice(0, 100)}`);
783
+ if (f.fix)
784
+ console.log(` 💡 Fix: ${f.fix}`);
785
+ }
786
+ if (findings.length > 20) {
787
+ console.log(`\n... and ${findings.length - 20} more (limit to 20). Run \`milens security scan\` for full output.`);
788
+ }
789
+ }
790
+ else {
791
+ console.log('✅ No security issues found.');
792
+ }
793
+ }
794
+ catch (e) {
795
+ console.error(`Security scan failed: ${e.message || e}`);
796
+ }
797
+ break;
798
+ }
799
+ case 'refactor': {
800
+ const deadCode = db.findDeadCode(undefined, 20);
801
+ console.log('Refactor Workflow — Dead Code Candidates:');
802
+ if (deadCode.length === 0) {
803
+ console.log(' No dead code found.');
804
+ }
805
+ else {
806
+ for (const s of deadCode) {
807
+ console.log(` ${s.name} [${s.kind}] ${s.filePath}:${s.startLine}`);
808
+ }
809
+ }
810
+ console.log(`\nRun 'milens analyze --force' to refresh the index before refactoring.`);
811
+ break;
812
+ }
813
+ case 'handoff': {
814
+ const store = new AnnotationStore(db.connection);
815
+ console.log('╔══════════════════════════════════╗');
816
+ console.log('║ Handoff Workflow ║');
817
+ console.log('╚══════════════════════════════════╝\n');
818
+ // Show recent sessions
819
+ const recentAnns = store.recall({ limit: 30 });
820
+ const sessions = new Set();
821
+ for (const a of recentAnns) {
822
+ if (a.sessionId)
823
+ sessions.add(a.sessionId);
824
+ }
825
+ console.log(`📋 Indexed annotations: ${store.getAnnotationCount()}`);
826
+ console.log(`📂 Recent sessions: ${sessions.size}`);
827
+ try {
828
+ const allAnnotations = store.recall({ limit: 100 });
829
+ // Group by key for summary
830
+ const byKey = new Map();
831
+ for (const a of allAnnotations) {
832
+ const group = byKey.get(a.key) || { count: 0, symbols: [], topConfidence: 0 };
833
+ group.count++;
834
+ if (group.symbols.length < 5)
835
+ group.symbols.push(a.symbol);
836
+ if (a.confidence > group.topConfidence)
837
+ group.topConfidence = a.confidence;
838
+ byKey.set(a.key, group);
839
+ }
840
+ if (byKey.size > 0) {
841
+ console.log(`\n🗂️ Knowledge by category:`);
842
+ for (const [key, group] of byKey) {
843
+ const pct = Math.round(group.topConfidence * 100);
844
+ const bar = '█'.repeat(Math.round(group.topConfidence * 10));
845
+ console.log(` [${key}] ${group.count} annotations, top confidence: ${bar} ${pct}%`);
846
+ if (group.symbols.length > 0) {
847
+ console.log(` Symbols: ${group.symbols.join(', ')}`);
848
+ }
849
+ }
850
+ }
851
+ // Promotable annotations (high confidence)
852
+ const promotable = allAnnotations.filter(a => a.confidence >= 0.8);
853
+ if (promotable.length > 0) {
854
+ console.log(`\n⭐ ${promotable.length} high-confidence annotations ready for promotion:`);
855
+ for (const a of promotable.slice(0, 5)) {
856
+ console.log(` [${a.key}] ${a.symbol}: ${a.value.slice(0, 80)}`);
857
+ }
858
+ console.log(`\n Run \`milens evolve -p "${root}"\` to promote these to rules/skills.`);
859
+ }
860
+ }
861
+ catch { /* annotations may not be available */ }
862
+ console.log(`\n📋 CLI handoff commands:`);
863
+ console.log(` 1. milens workflow onboard --path <path> → fresh agent onboarding`);
864
+ console.log(` 2. milens workflow review --path <path> → pre-handoff review`);
865
+ console.log(` 3. milens evolve -p <path> → promote knowledge to rules`);
866
+ console.log(`\n💡 Tip: Use \`milens serve\` + MCP for full session_start() → annotate() → handoff() flow.`);
633
867
  break;
634
868
  }
635
869
  default:
@@ -878,11 +1112,14 @@ securityCmd
878
1112
  .option('-p, --path <path>', 'Repository root path', '.')
879
1113
  .option('--scope <scope>', 'all|secrets|injection|unicode|dangerous|config|data-leak|crypto|auth|file-access', 'all')
880
1114
  .option('--severity <severity>', 'CRITICAL|HIGH|MEDIUM|LOW')
1115
+ .option('--limit <limit>', 'Max findings to report', '30')
881
1116
  .option('--format <format>', 'table|json|markdown', 'table')
882
1117
  .action(async (opts) => {
883
1118
  const root = resolve(opts.path);
1119
+ const maxFindings = parseInt(opts.limit) || 30;
1120
+ const MAX_FILE_SIZE = 200 * 1024; // skip files >200KB to avoid regex timeout
884
1121
  const { loadRules } = await import('./security/rules.js');
885
- const { readFileSync, existsSync, readdirSync } = await import('node:fs');
1122
+ const { readFileSync, existsSync, readdirSync, statSync } = await import('node:fs');
886
1123
  const { join: pathJoin, relative: pathRelative } = await import('node:path');
887
1124
  const rules = loadRules();
888
1125
  const filtered = rules.filter(r => {
@@ -911,6 +1148,12 @@ securityCmd
911
1148
  if (!['ts', 'js', 'tsx', 'jsx', 'py', 'go', 'rs', 'java', 'rb', 'php', 'sql', 'sh', 'yaml', 'yml', 'json', 'html', 'css'].includes(ext))
912
1149
  continue;
913
1150
  try {
1151
+ const stat = statSync(fullPath);
1152
+ if (stat.size > MAX_FILE_SIZE) {
1153
+ if (opts.format === 'table')
1154
+ console.log(` Skipping large file: ${pathRelative(root, fullPath)} (${(stat.size / 1024).toFixed(0)}KB)`);
1155
+ return;
1156
+ }
914
1157
  const content = readFileSync(fullPath, 'utf-8');
915
1158
  const lines = content.split('\n');
916
1159
  for (const rule of filtered) {
@@ -949,7 +1192,7 @@ securityCmd
949
1192
  console.log(` ${s}: ${c}`);
950
1193
  }
951
1194
  console.log();
952
- for (const f of findings.slice(0, 30)) {
1195
+ for (const f of findings.slice(0, maxFindings)) {
953
1196
  console.log(`[${f.severity}] ${f.rule} ${f.file}:${f.line} — ${f.match}`);
954
1197
  }
955
1198
  });
@@ -993,7 +1236,11 @@ program
993
1236
  console.log(`\nRe-indexing ${files.length} changed file(s)...`);
994
1237
  const { execSync } = await import('node:child_process');
995
1238
  try {
996
- execSync(`npx milens analyze -p "${root}" --force`, { stdio: 'pipe', cwd: root });
1239
+ const fileArgs = files.map(f => `"${f}"`).join(' ');
1240
+ const cmd = process.argv[1]
1241
+ ? `node ${process.argv[1]} analyze -p "${root}" --force --files ${fileArgs}`
1242
+ : `npx milens analyze -p "${root}" --force --files ${fileArgs}`;
1243
+ execSync(cmd, { stdio: 'pipe', cwd: root });
997
1244
  console.log(`✓ Index updated`);
998
1245
  }
999
1246
  catch {
@@ -1021,6 +1268,36 @@ program
1021
1268
  console.error('File watching failed. Use `milens analyze -p . --force` to manually re-index.');
1022
1269
  }
1023
1270
  });
1271
+ program
1272
+ .command('orchestrate')
1273
+ .description('Run full review cycle: detect changes → risk → coverage gaps → dead code')
1274
+ .option('-p, --path <path>', 'Repository root path', '.')
1275
+ .option('--emoji', 'Use emoji in output')
1276
+ .action(async (opts) => {
1277
+ const root = resolve(opts.path);
1278
+ const dbPath = join(root, '.milens', 'milens.db');
1279
+ if (!existsSync(dbPath)) {
1280
+ console.error(`No milens database found. Run \`milens analyze\` first.`);
1281
+ process.exit(1);
1282
+ }
1283
+ const { Orchestrator } = await import('./orchestrator/orchestrator.js');
1284
+ const orchestrator = new Orchestrator({ rootPath: root, dbPath, useEmoji: opts.emoji });
1285
+ // Mark changed files from git diff
1286
+ try {
1287
+ const { execFileSync } = await import('node:child_process');
1288
+ const diffOut = execFileSync('git', ['diff', '--name-only', 'HEAD'], { cwd: root, encoding: 'utf-8' });
1289
+ const staged = execFileSync('git', ['diff', '--cached', '--name-only'], { cwd: root, encoding: 'utf-8' });
1290
+ const changed = [...new Set([...diffOut.trim().split('\n'), ...staged.trim().split('\n')])].filter(Boolean);
1291
+ for (const f of changed)
1292
+ orchestrator.subscribe(f);
1293
+ }
1294
+ catch {
1295
+ console.error('Not a git repository or git not available.');
1296
+ process.exit(1);
1297
+ }
1298
+ const report = await orchestrator.runAndFormat();
1299
+ console.log(report);
1300
+ });
1024
1301
  program.parse();
1025
1302
  // ── Helpers ──
1026
1303
  function deleteIndex(dbPath) {