@intrect/openswarm 0.12.0 → 0.14.0

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 (45) hide show
  1. package/README.md +2 -2
  2. package/dist/automation/longRunningMonitor.d.ts.map +1 -1
  3. package/dist/automation/longRunningMonitor.js +1 -0
  4. package/dist/automation/longRunningMonitor.js.map +1 -1
  5. package/dist/cli/checkHandler.d.ts.map +1 -1
  6. package/dist/cli/checkHandler.js +113 -125
  7. package/dist/cli/checkHandler.js.map +1 -1
  8. package/dist/cli/fixCommand.d.ts +8 -0
  9. package/dist/cli/fixCommand.d.ts.map +1 -1
  10. package/dist/cli/fixCommand.js +19 -0
  11. package/dist/cli/fixCommand.js.map +1 -1
  12. package/dist/cli/reviewMaxCommand.d.ts +2 -0
  13. package/dist/cli/reviewMaxCommand.d.ts.map +1 -1
  14. package/dist/cli/reviewMaxCommand.js +12 -0
  15. package/dist/cli/reviewMaxCommand.js.map +1 -1
  16. package/dist/cli.js +11 -1
  17. package/dist/cli.js.map +1 -1
  18. package/dist/discord/discordCore.d.ts.map +1 -1
  19. package/dist/discord/discordCore.js.map +1 -1
  20. package/dist/issues/linearBridge.d.ts.map +1 -1
  21. package/dist/issues/linearBridge.js +0 -1
  22. package/dist/issues/linearBridge.js.map +1 -1
  23. package/dist/issues/memoryBridge.d.ts.map +1 -1
  24. package/dist/issues/memoryBridge.js +0 -2
  25. package/dist/issues/memoryBridge.js.map +1 -1
  26. package/dist/knowledge/scanner.js +3 -3
  27. package/dist/knowledge/scanner.js.map +1 -1
  28. package/dist/memory/repoKnowledge.d.ts +12 -1
  29. package/dist/memory/repoKnowledge.d.ts.map +1 -1
  30. package/dist/memory/repoKnowledge.js +32 -0
  31. package/dist/memory/repoKnowledge.js.map +1 -1
  32. package/dist/registry/bsDetector.js +2 -2
  33. package/dist/registry/bsDetector.js.map +1 -1
  34. package/dist/runners/cliRunner.d.ts +2 -0
  35. package/dist/runners/cliRunner.d.ts.map +1 -1
  36. package/dist/runners/cliRunner.js +20 -0
  37. package/dist/runners/cliRunner.js.map +1 -1
  38. package/dist/support/chatMemory.d.ts.map +1 -1
  39. package/dist/support/chatMemory.js +0 -9
  40. package/dist/support/chatMemory.js.map +1 -1
  41. package/dist/support/updateNotifier.d.ts +29 -0
  42. package/dist/support/updateNotifier.d.ts.map +1 -0
  43. package/dist/support/updateNotifier.js +119 -0
  44. package/dist/support/updateNotifier.js.map +1 -0
  45. package/package.json +2 -1
package/README.md CHANGED
@@ -512,8 +512,8 @@ the CLI (fire-and-forget with a short timeout, and failures are silently ignored
512
512
  Full version history lives in **[CHANGELOG.md](CHANGELOG.md)** and the
513
513
  [GitHub Releases](https://github.com/unohee/OpenSwarm/releases) page.
514
514
 
515
- Latest — **v0.12.0**: `openswarm fix` run the CI/test checks, fan a fix-worker
516
- out over the failures, and re-run until green. See CHANGELOG.md for the rest.
515
+ Latest — **v0.14.0**: auto-release on version bump (merge npm publish + tag +
516
+ GitHub release) and a CLI update notifier. See CHANGELOG.md for the rest.
517
517
 
518
518
  ---
519
519
 
@@ -1 +1 @@
1
- {"version":3,"file":"longRunningMonitor.d.ts","sourceRoot":"","sources":["../../src/automation/longRunningMonitor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,wBAAwB,EACxB,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAuP1B;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,wBAAwB,EAAE,GAAG,IAAI,CAcvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,wBAAwB,GAAG,kBAAkB,CA0BpF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAOrD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAoExD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,kBAAkB,EAAE,CAExD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAErE"}
1
+ {"version":3,"file":"longRunningMonitor.d.ts","sourceRoot":"","sources":["../../src/automation/longRunningMonitor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,wBAAwB,EACxB,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAwP1B;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,wBAAwB,EAAE,GAAG,IAAI,CAcvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,wBAAwB,GAAG,kBAAkB,CA0BpF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAOrD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAoExD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,kBAAkB,EAAE,CAExD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAErE"}
@@ -38,6 +38,7 @@ function safeCompileRegex(pattern) {
38
38
  // Argv validation: reject null bytes, newlines, and other control chars.
39
39
  // Because we never spawn a shell, shell metacharacters are inert — only
40
40
  // control characters meaningfully change behavior (e.g. null byte truncation).
41
+ // eslint-disable-next-line no-control-regex
41
42
  const ARGV_SAFE = /^[^\x00-\x1F\x7F]+$/;
42
43
  // Program allowlist for monitor checks. Anything outside this list — or any
43
44
  // absolute path outside of the user's own directories — is rejected before
@@ -1 +1 @@
1
- {"version":3,"file":"longRunningMonitor.js","sourceRoot":"","sources":["../../src/automation/longRunningMonitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"longRunningMonitor.js","sourceRoot":"","sources":["../../src/automation/longRunningMonitor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkHandler.d.ts","sourceRoot":"","sources":["../../src/cli/checkHandler.ts"],"names":[],"mappings":"AAwIA,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;CACd,GACA,OAAO,CAAC,IAAI,CAAC,CAyVf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE;IACJ,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,IAAI,CAAC,CAgHf"}
1
+ {"version":3,"file":"checkHandler.d.ts","sourceRoot":"","sources":["../../src/cli/checkHandler.ts"],"names":[],"mappings":"AA2HA,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;CACd,GACA,OAAO,CAAC,IAAI,CAAC,CAyVf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE;IACJ,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,IAAI,CAAC,CAgHf"}
@@ -7,6 +7,7 @@ import { readFileSync, existsSync } from 'node:fs';
7
7
  import { join } from 'node:path';
8
8
  import { getRegistryStore, closeRegistryStore } from '../registry/sqliteStore.js';
9
9
  import { scanRepository } from '../registry/entityScanner.js';
10
+ import { c, status } from '../support/colors.js';
10
11
  /** package.json name → Cargo.toml → go.mod → 폴더명 순으로 프로젝트 ID 추론 */
11
12
  function resolveProjectId(projectPath) {
12
13
  // 1. package.json의 name 필드
@@ -54,63 +55,50 @@ function resolveProjectId(projectPath) {
54
55
  // 4. 폴더명 폴백
55
56
  return projectPath.split('/').pop() ?? 'unknown';
56
57
  }
57
- // 색상 헬퍼 (ANSI)
58
- const c = {
59
- reset: '\x1b[0m',
60
- bold: '\x1b[1m',
61
- dim: '\x1b[2m',
62
- red: '\x1b[31m',
63
- green: '\x1b[32m',
64
- yellow: '\x1b[33m',
65
- blue: '\x1b[34m',
66
- magenta: '\x1b[35m',
67
- cyan: '\x1b[36m',
68
- gray: '\x1b[90m',
69
- };
70
- function statusBadge(status) {
71
- switch (status) {
72
- case 'active': return `${c.green}●${c.reset} active`;
73
- case 'deprecated': return `${c.red}✗${c.reset} deprecated`;
74
- case 'experimental': return `${c.yellow}◎${c.reset} experimental`;
75
- case 'planned': return `${c.blue}○${c.reset} planned`;
76
- case 'broken': return `${c.red}⚠${c.reset} broken`;
77
- default: return status;
58
+ function statusBadge(statusValue) {
59
+ switch (statusValue) {
60
+ case 'active': return `${c.green('')} active`;
61
+ case 'deprecated': return status.err('deprecated');
62
+ case 'experimental': return `${c.yellow('')} experimental`;
63
+ case 'planned': return `${c.blue('')} planned`;
64
+ case 'broken': return status.warn('broken');
65
+ default: return statusValue;
78
66
  }
79
67
  }
80
68
  function riskBadge(risk) {
81
69
  switch (risk) {
82
- case 'high': return `${c.red}HIGH${c.reset}`;
83
- case 'medium': return `${c.yellow}MED${c.reset}`;
84
- case 'low': return `${c.green}LOW${c.reset}`;
70
+ case 'high': return c.red('HIGH');
71
+ case 'medium': return c.yellow('MED');
72
+ case 'low': return c.green('LOW');
85
73
  default: return risk;
86
74
  }
87
75
  }
88
76
  function severityBadge(sev) {
89
77
  switch (sev) {
90
- case 'critical': return `${c.red}${c.bold}CRITICAL${c.reset}`;
91
- case 'error': return `${c.red}ERROR${c.reset}`;
92
- case 'warning': return `${c.yellow}WARNING${c.reset}`;
93
- case 'info': return `${c.blue}INFO${c.reset}`;
78
+ case 'critical': return c.red(c.bold('CRITICAL'));
79
+ case 'error': return c.red('ERROR');
80
+ case 'warning': return c.yellow('WARNING');
81
+ case 'info': return c.blue('INFO');
94
82
  default: return sev;
95
83
  }
96
84
  }
97
85
  function formatEntity(e, verbose = true) {
98
86
  const lines = [];
99
87
  const loc = e.lineStart ? `:${e.lineStart}${e.lineEnd ? `-${e.lineEnd}` : ''}` : '';
100
- const testIcon = e.hasTests ? `${c.green}✓${c.reset}` : `${c.red}✗${c.reset}`;
101
- lines.push(` ${c.bold}${e.kind}${c.reset} ${c.cyan}${e.name}${c.reset}${c.dim}${loc}${c.reset}` +
88
+ const testIcon = e.hasTests ? status.glyph('ok') : status.glyph('err');
89
+ lines.push(` ${c.bold(e.kind)} ${c.cyan(e.name)}${c.dim(loc)}` +
102
90
  ` ${statusBadge(e.status)} test:${testIcon} risk:${riskBadge(e.riskLevel)}`);
103
91
  if (verbose) {
104
92
  if (e.signature)
105
- lines.push(` ${c.dim}sig: ${e.signature}${c.reset}`);
93
+ lines.push(` ${c.dim(`sig: ${e.signature}`)}`);
106
94
  if (e.author)
107
- lines.push(` ${c.dim}author: ${e.author}${c.reset}`);
95
+ lines.push(` ${c.dim(`author: ${e.author}`)}`);
108
96
  if (e.description)
109
- lines.push(` ${c.dim}${e.description}${c.reset}`);
97
+ lines.push(` ${c.dim(e.description)}`);
110
98
  if (e.deprecatedReason)
111
- lines.push(` ${c.red}reason: ${e.deprecatedReason}${c.reset}`);
99
+ lines.push(` ${c.red(`reason: ${e.deprecatedReason}`)}`);
112
100
  if (e.tags.length > 0) {
113
- lines.push(` ${c.magenta}tags: ${e.tags.map(t => t.value ? `${t.tag}=${t.value}` : t.tag).join(', ')}${c.reset}`);
101
+ lines.push(` ${c.magenta(`tags: ${e.tags.map(t => t.value ? `${t.tag}=${t.value}` : t.tag).join(', ')}`)}`);
114
102
  }
115
103
  for (const w of e.warnings.filter(w => !w.resolved)) {
116
104
  lines.push(` ${severityBadge(w.severity)} [${w.category}] ${w.message}`);
@@ -130,39 +118,39 @@ export async function handleCheck(filePath, opts) {
130
118
  if (opts.scan) {
131
119
  const projectPath = process.cwd();
132
120
  const projectId = opts.project ?? resolveProjectId(projectPath);
133
- console.log(`\n${c.bold}Scanning repository...${c.reset}`);
134
- console.log(` ${c.dim}path: ${projectPath}${c.reset}`);
135
- console.log(` ${c.dim}project: ${projectId}${c.reset}\n`);
121
+ console.log(`\n${c.bold('Scanning repository...')}`);
122
+ console.log(` ${c.dim(`path: ${projectPath}`)}`);
123
+ console.log(` ${c.dim(`project: ${projectId}`)}\n`);
136
124
  const result = await scanRepository(projectPath, projectId, {
137
125
  verbose: opts.verbose,
138
126
  });
139
- console.log(`${c.bold}Scan Complete${c.reset}`);
127
+ console.log(c.bold('Scan Complete'));
140
128
  console.log(`${'─'.repeat(40)}`);
141
- console.log(` Files scanned: ${c.bold}${result.scanned}${c.reset}`);
142
- console.log(` Entities found: ${c.bold}${result.extracted}${c.reset}`);
143
- console.log(` New registered: ${c.green}+${result.registered}${c.reset}`);
144
- console.log(` Updated: ${c.yellow}~${result.updated}${c.reset}`);
145
- console.log(` Marked broken: ${result.removed > 0 ? c.red : c.dim}${result.removed}${c.reset}`);
146
- console.log(` Tests mapped: ${c.cyan}${result.testsMapped}${c.reset}`);
147
- console.log(` Duration: ${c.dim}${result.durationMs}ms${c.reset}`);
129
+ console.log(` Files scanned: ${c.bold(String(result.scanned))}`);
130
+ console.log(` Entities found: ${c.bold(String(result.extracted))}`);
131
+ console.log(` New registered: ${c.green(`+${result.registered}`)}`);
132
+ console.log(` Updated: ${c.yellow(`~${result.updated}`)}`);
133
+ console.log(` Marked broken: ${(result.removed > 0 ? c.red : c.dim)(String(result.removed))}`);
134
+ console.log(` Tests mapped: ${c.cyan(String(result.testsMapped))}`);
135
+ console.log(` Duration: ${c.dim(`${result.durationMs}ms`)}`);
148
136
  if (Object.keys(result.languageBreakdown).length > 0) {
149
- console.log(`\n ${c.dim}By language:${c.reset}`);
137
+ console.log(`\n ${c.dim('By language:')}`);
150
138
  for (const [lang, count] of Object.entries(result.languageBreakdown).sort((a, b) => b[1] - a[1])) {
151
139
  console.log(` ${lang.padEnd(12)} ${count} files`);
152
140
  }
153
141
  }
154
142
  if (result.errors.length > 0) {
155
- console.log(`\n ${c.red}Errors (${result.errors.length}):${c.reset}`);
143
+ console.log(`\n ${c.red(`Errors (${result.errors.length}):`)}`);
156
144
  for (const err of result.errors.slice(0, 10)) {
157
- console.log(` ${c.dim}${err}${c.reset}`);
145
+ console.log(` ${c.dim(err)}`);
158
146
  }
159
147
  if (result.errors.length > 10) {
160
- console.log(` ${c.dim}...and ${result.errors.length - 10} more${c.reset}`);
148
+ console.log(` ${c.dim(`...and ${result.errors.length - 10} more`)}`);
161
149
  }
162
150
  }
163
151
  // 스캔 후 통계 표시
164
152
  const stats = store.getStats(projectId);
165
- console.log(`\n${c.bold}Registry Status${c.reset}`);
153
+ console.log(`\n${c.bold('Registry Status')}`);
166
154
  console.log(` Total: ${stats.total} deprecated: ${stats.deprecated} untested: ${stats.untested} high-risk: ${stats.highRisk} warnings: ${stats.withWarnings}\n`);
167
155
  return;
168
156
  }
@@ -170,48 +158,48 @@ export async function handleCheck(filePath, opts) {
170
158
  if (opts.bs) {
171
159
  const { scanRepository: scanBs } = await import('../registry/bsDetector.js');
172
160
  const projectPath = process.cwd();
173
- console.log(`\n${c.bold}BS Detector${c.reset} — scanning for bad code patterns...`);
174
- console.log(` ${c.dim}path: ${projectPath}${c.reset}\n`);
161
+ console.log(`\n${c.bold('BS Detector')} — scanning for bad code patterns...`);
162
+ console.log(` ${c.dim(`path: ${projectPath}`)}\n`);
175
163
  const result = await scanBs(projectPath, { verbose: opts.verbose });
176
164
  // 결과 출력
177
165
  const statusColor = result.critical > 0 ? c.red : result.warning > 0 ? c.yellow : c.green;
178
166
  const statusText = result.critical > 0 ? 'FAIL' : result.warning > 0 ? 'WARN' : 'CLEAN';
179
- console.log(`${c.bold}BS Scan Result${c.reset}`);
167
+ console.log(c.bold('BS Scan Result'));
180
168
  console.log(`${'─'.repeat(50)}`);
181
- console.log(` Files scanned: ${c.bold}${result.filesScanned}${c.reset}`);
182
- console.log(` BS Score: ${statusColor}${c.bold}${result.bsScore.toFixed(1)}${c.reset} / 5.0`);
183
- console.log(` Status: ${statusColor}${c.bold}${statusText}${c.reset}`);
184
- console.log(` CRITICAL: ${result.critical > 0 ? c.red : c.green}${result.critical}${c.reset}`);
185
- console.log(` WARNING: ${result.warning > 0 ? c.yellow : c.green}${result.warning}${c.reset}`);
186
- console.log(` MINOR: ${result.minor > 0 ? c.dim : c.green}${result.minor}${c.reset}`);
169
+ console.log(` Files scanned: ${c.bold(String(result.filesScanned))}`);
170
+ console.log(` BS Score: ${statusColor(c.bold(result.bsScore.toFixed(1)))} / 5.0`);
171
+ console.log(` Status: ${statusColor(c.bold(statusText))}`);
172
+ console.log(` CRITICAL: ${(result.critical > 0 ? c.red : c.green)(String(result.critical))}`);
173
+ console.log(` WARNING: ${(result.warning > 0 ? c.yellow : c.green)(String(result.warning))}`);
174
+ console.log(` MINOR: ${(result.minor > 0 ? c.dim : c.green)(String(result.minor))}`);
187
175
  if (result.issues.length > 0) {
188
176
  // CRITICAL 먼저
189
177
  const criticals = result.issues.filter(i => i.severity === 'critical');
190
178
  if (criticals.length > 0) {
191
- console.log(`\n ${c.red}${c.bold}CRITICAL (즉시 수정 필요)${c.reset}`);
179
+ console.log(`\n ${c.red(c.bold('CRITICAL (즉시 수정 필요)'))}`);
192
180
  for (const issue of criticals) {
193
- console.log(` ${c.red}${issue.filePath}:${issue.line}${c.reset} — ${issue.message}`);
194
- console.log(` ${c.dim}${issue.matchedText}${c.reset}`);
181
+ console.log(` ${c.red(`${issue.filePath}:${issue.line}`)} — ${issue.message}`);
182
+ console.log(` ${c.dim(issue.matchedText)}`);
195
183
  }
196
184
  }
197
185
  const warnings = result.issues.filter(i => i.severity === 'warning');
198
186
  if (warnings.length > 0) {
199
- console.log(`\n ${c.yellow}WARNING (권장 수정)${c.reset}`);
187
+ console.log(`\n ${c.yellow('WARNING (권장 수정)')}`);
200
188
  for (const issue of warnings.slice(0, 30)) {
201
- console.log(` ${c.yellow}${issue.filePath}:${issue.line}${c.reset} — ${issue.message}`);
189
+ console.log(` ${c.yellow(`${issue.filePath}:${issue.line}`)} — ${issue.message}`);
202
190
  }
203
191
  if (warnings.length > 30) {
204
- console.log(` ${c.dim}...and ${warnings.length - 30} more${c.reset}`);
192
+ console.log(` ${c.dim(`...and ${warnings.length - 30} more`)}`);
205
193
  }
206
194
  }
207
195
  const minors = result.issues.filter(i => i.severity === 'minor');
208
196
  if (minors.length > 0) {
209
- console.log(`\n ${c.dim}MINOR (${minors.length}건)${c.reset}`);
197
+ console.log(`\n ${c.dim(`MINOR (${minors.length}건)`)}`);
210
198
  for (const issue of minors.slice(0, 10)) {
211
- console.log(` ${c.dim}${issue.filePath}:${issue.line} — ${issue.message}${c.reset}`);
199
+ console.log(` ${c.dim(`${issue.filePath}:${issue.line} — ${issue.message}`)}`);
212
200
  }
213
201
  if (minors.length > 10) {
214
- console.log(` ${c.dim}...and ${minors.length - 10} more${c.reset}`);
202
+ console.log(` ${c.dim(`...and ${minors.length - 10} more`)}`);
215
203
  }
216
204
  }
217
205
  }
@@ -251,28 +239,28 @@ export async function handleCheck(filePath, opts) {
251
239
  const sortedDirs = [...tree.keys()].sort();
252
240
  const totalFiles = [...tree.values()].reduce((s, d) => s + d.size, 0);
253
241
  const totalEntities = entities.filter(e => !scopePath || e.filePath.startsWith(scopePath)).length;
254
- console.log(`\n${c.bold}Code Tree${c.reset}${scopePath ? ` (${scopePath})` : ''} — ${totalFiles} files, ${totalEntities} entities\n`);
242
+ console.log(`\n${c.bold('Code Tree')}${scopePath ? ` (${scopePath})` : ''} — ${totalFiles} files, ${totalEntities} entities\n`);
255
243
  for (const dirPath of sortedDirs) {
256
244
  const files = tree.get(dirPath);
257
245
  const dirTotal = [...files.values()].reduce((s, f) => s + f.total, 0);
258
246
  const dirUntested = [...files.values()].reduce((s, f) => s + f.untested, 0);
259
247
  const dirHighRisk = [...files.values()].reduce((s, f) => s + f.highRisk, 0);
260
248
  // Directory header
261
- const riskFlag = dirHighRisk > 0 ? ` ${c.red}${dirHighRisk} high-risk${c.reset}` : '';
262
- console.log(`${c.bold}${dirPath}/${c.reset} ${c.dim}(${dirTotal} entities, ${dirUntested} untested${riskFlag})${c.reset}`);
249
+ const riskFlag = dirHighRisk > 0 ? ` ${c.red(`${dirHighRisk} high-risk`)}` : '';
250
+ console.log(`${c.bold(`${dirPath}/`)} ${c.dim(`(${dirTotal} entities, ${dirUntested} untested`)}${riskFlag}${c.dim(')')}`);
263
251
  // Files in directory
264
252
  const sortedFiles = [...files.entries()].sort((a, b) => b[1].total - a[1].total);
265
253
  for (const [fileName, info] of sortedFiles) {
266
254
  const kindStr = [...info.kinds.entries()].map(([k, n]) => `${n} ${k}`).join(', ');
267
255
  const flags = [];
268
256
  if (info.highRisk > 0)
269
- flags.push(`${c.red}${info.highRisk} high-risk${c.reset}`);
257
+ flags.push(c.red(`${info.highRisk} high-risk`));
270
258
  if (info.deprecated > 0)
271
- flags.push(`${c.red}${info.deprecated} deprecated${c.reset}`);
259
+ flags.push(c.red(`${info.deprecated} deprecated`));
272
260
  const flagStr = flags.length ? ' ' + flags.join(' ') : '';
273
261
  const testPct = info.total > 0 ? Math.round(((info.total - info.untested) / info.total) * 100) : 0;
274
262
  const testColor = testPct === 100 ? c.green : testPct > 50 ? c.yellow : c.red;
275
- console.log(` ${c.cyan}${fileName}${c.reset} ${c.dim}${kindStr}${c.reset} ${testColor}${testPct}% tested${c.reset}${flagStr}`);
263
+ console.log(` ${c.cyan(fileName)} ${c.dim(kindStr)} ${testColor(`${testPct}% tested`)}${flagStr}`);
276
264
  }
277
265
  }
278
266
  console.log();
@@ -316,23 +304,23 @@ export async function handleCheck(filePath, opts) {
316
304
  // --stats: full statistics
317
305
  if (opts.stats) {
318
306
  const stats = store.getStats(opts.project);
319
- console.log(`\n${c.bold}Registry Stats${c.reset}`);
307
+ console.log(`\n${c.bold('Registry Stats')}`);
320
308
  console.log(`${'─'.repeat(40)}`);
321
- console.log(` Total entities: ${c.bold}${stats.total}${c.reset}`);
322
- console.log(` Deprecated: ${stats.deprecated > 0 ? c.red : c.green}${stats.deprecated}${c.reset}`);
323
- console.log(` Untested: ${stats.untested > 0 ? c.yellow : c.green}${stats.untested}${c.reset}`);
324
- console.log(` High risk: ${stats.highRisk > 0 ? c.red : c.green}${stats.highRisk}${c.reset}`);
325
- console.log(` With warnings: ${stats.withWarnings > 0 ? c.yellow : c.green}${stats.withWarnings}${c.reset}`);
309
+ console.log(` Total entities: ${c.bold(String(stats.total))}`);
310
+ console.log(` Deprecated: ${(stats.deprecated > 0 ? c.red : c.green)(String(stats.deprecated))}`);
311
+ console.log(` Untested: ${(stats.untested > 0 ? c.yellow : c.green)(String(stats.untested))}`);
312
+ console.log(` High risk: ${(stats.highRisk > 0 ? c.red : c.green)(String(stats.highRisk))}`);
313
+ console.log(` With warnings: ${(stats.withWarnings > 0 ? c.yellow : c.green)(String(stats.withWarnings))}`);
326
314
  if (stats.byKind.length > 0) {
327
- console.log(`\n ${c.dim}By kind:${c.reset}`);
315
+ console.log(`\n ${c.dim('By kind:')}`);
328
316
  for (const { kind, count } of stats.byKind) {
329
317
  console.log(` ${kind.padEnd(12)} ${count}`);
330
318
  }
331
319
  }
332
320
  if (stats.byStatus.length > 0) {
333
- console.log(`\n ${c.dim}By status:${c.reset}`);
334
- for (const { status, count } of stats.byStatus) {
335
- console.log(` ${status.padEnd(14)} ${count}`);
321
+ console.log(`\n ${c.dim('By status:')}`);
322
+ for (const { status: statusName, count } of stats.byStatus) {
323
+ console.log(` ${statusName.padEnd(14)} ${count}`);
336
324
  }
337
325
  }
338
326
  console.log();
@@ -341,9 +329,9 @@ export async function handleCheck(filePath, opts) {
341
329
  // --deprecated
342
330
  if (opts.deprecated) {
343
331
  const entities = store.deprecatedEntities(opts.project);
344
- console.log(`\n${c.bold}Deprecated Entities${c.reset} (${entities.length})\n`);
332
+ console.log(`\n${c.bold('Deprecated Entities')} (${entities.length})\n`);
345
333
  if (entities.length === 0) {
346
- console.log(` ${c.green}None${c.reset}\n`);
334
+ console.log(` ${c.green('None')}\n`);
347
335
  }
348
336
  else {
349
337
  for (const e of entities)
@@ -355,9 +343,9 @@ export async function handleCheck(filePath, opts) {
355
343
  // --untested
356
344
  if (opts.untested) {
357
345
  const entities = store.untestedEntities(opts.project);
358
- console.log(`\n${c.bold}Untested Active Entities${c.reset} (${entities.length})\n`);
346
+ console.log(`\n${c.bold('Untested Active Entities')} (${entities.length})\n`);
359
347
  if (entities.length === 0) {
360
- console.log(` ${c.green}All tested${c.reset}\n`);
348
+ console.log(` ${c.green('All tested')}\n`);
361
349
  }
362
350
  else {
363
351
  for (const e of entities)
@@ -369,9 +357,9 @@ export async function handleCheck(filePath, opts) {
369
357
  // --high-risk
370
358
  if (opts.highRisk) {
371
359
  const entities = store.highRiskEntities(opts.project);
372
- console.log(`\n${c.bold}High Risk Entities${c.reset} (${entities.length})\n`);
360
+ console.log(`\n${c.bold('High Risk Entities')} (${entities.length})\n`);
373
361
  if (entities.length === 0) {
374
- console.log(` ${c.green}None${c.reset}\n`);
362
+ console.log(` ${c.green('None')}\n`);
375
363
  }
376
364
  else {
377
365
  for (const e of entities)
@@ -383,9 +371,9 @@ export async function handleCheck(filePath, opts) {
383
371
  // --tag
384
372
  if (opts.tag) {
385
373
  const entities = store.entitiesByTag(opts.tag);
386
- console.log(`\n${c.bold}Entities tagged "${opts.tag}"${c.reset} (${entities.length})\n`);
374
+ console.log(`\n${c.bold(`Entities tagged "${opts.tag}"`)} (${entities.length})\n`);
387
375
  if (entities.length === 0) {
388
- console.log(` ${c.dim}No entities with tag "${opts.tag}"${c.reset}\n`);
376
+ console.log(` ${c.dim(`No entities with tag "${opts.tag}"`)}\n`);
389
377
  }
390
378
  else {
391
379
  for (const e of entities)
@@ -397,9 +385,9 @@ export async function handleCheck(filePath, opts) {
397
385
  // --search
398
386
  if (opts.search) {
399
387
  const entities = store.searchEntities(opts.search);
400
- console.log(`\n${c.bold}Search: "${opts.search}"${c.reset} (${entities.length} results)\n`);
388
+ console.log(`\n${c.bold(`Search: "${opts.search}"`)} (${entities.length} results)\n`);
401
389
  if (entities.length === 0) {
402
- console.log(` ${c.dim}No matches${c.reset}\n`);
390
+ console.log(` ${c.dim('No matches')}\n`);
403
391
  }
404
392
  else {
405
393
  for (const e of entities)
@@ -411,12 +399,12 @@ export async function handleCheck(filePath, opts) {
411
399
  // 파일 경로 지정: fileBrief
412
400
  if (filePath) {
413
401
  const brief = store.fileBrief(filePath);
414
- console.log(`\n${c.bold}File Brief: ${filePath}${c.reset}`);
402
+ console.log(`\n${c.bold(`File Brief: ${filePath}`)}`);
415
403
  console.log(`${'─'.repeat(40)}`);
416
- console.log(` ${c.dim}${brief.summary}${c.reset}\n`);
404
+ console.log(` ${c.dim(brief.summary)}\n`);
417
405
  if (brief.entities.length === 0) {
418
- console.log(` ${c.dim}No registered entities for this file.${c.reset}`);
419
- console.log(` ${c.dim}Use \`registerEntity\` mutation to add entries.${c.reset}\n`);
406
+ console.log(` ${c.dim('No registered entities for this file.')}`);
407
+ console.log(` ${c.dim('Use `registerEntity` mutation to add entries.')}\n`);
420
408
  }
421
409
  else {
422
410
  for (const e of brief.entities)
@@ -428,19 +416,19 @@ export async function handleCheck(filePath, opts) {
428
416
  // 인자 없이 호출 시: 간단 통계 + 도움말
429
417
  const stats = store.getStats();
430
418
  if (stats.total === 0) {
431
- console.log(`\n${c.bold}Code Registry${c.reset}: empty`);
432
- console.log(` ${c.dim}Register entities via GraphQL at :3847/graphql${c.reset}`);
433
- console.log(` ${c.dim}or use: openswarm check --help${c.reset}\n`);
419
+ console.log(`\n${c.bold('Code Registry')}: empty`);
420
+ console.log(` ${c.dim('Register entities via GraphQL at :3847/graphql')}`);
421
+ console.log(` ${c.dim('or use: openswarm check --help')}\n`);
434
422
  }
435
423
  else {
436
- console.log(`\n${c.bold}Code Registry${c.reset}: ${stats.total} entities`);
424
+ console.log(`\n${c.bold('Code Registry')}: ${stats.total} entities`);
437
425
  console.log(` ${stats.deprecated} deprecated, ${stats.untested} untested, ${stats.highRisk} high-risk, ${stats.withWarnings} with warnings`);
438
- console.log(`\n ${c.dim}Usage:${c.reset}`);
439
- console.log(` ${c.dim} openswarm check <file> ${c.reset}File brief`);
440
- console.log(` ${c.dim} openswarm check --stats ${c.reset}Full statistics`);
441
- console.log(` ${c.dim} openswarm check --deprecated ${c.reset}Deprecated list`);
442
- console.log(` ${c.dim} openswarm check --untested ${c.reset}Untested list`);
443
- console.log(` ${c.dim} openswarm check --search <q> ${c.reset}Full-text search\n`);
426
+ console.log(`\n ${c.dim('Usage:')}`);
427
+ console.log(` ${c.dim(' openswarm check <file> ')}File brief`);
428
+ console.log(` ${c.dim(' openswarm check --stats ')}Full statistics`);
429
+ console.log(` ${c.dim(' openswarm check --deprecated ')}Deprecated list`);
430
+ console.log(` ${c.dim(' openswarm check --untested ')}Untested list`);
431
+ console.log(` ${c.dim(' openswarm check --search <q> ')}Full-text search\n`);
444
432
  }
445
433
  }
446
434
  finally {
@@ -459,36 +447,36 @@ export async function handleAnnotate(qualifiedName, opts) {
459
447
  // 부분 매칭 시도: name만으로 검색
460
448
  const results = store.searchEntities(qualifiedName, 5);
461
449
  if (results.length === 0) {
462
- console.error(`${c.red}Entity not found: "${qualifiedName}"${c.reset}`);
463
- console.error(`${c.dim}Use qualified name (file::name) or search with: openswarm check --search <query>${c.reset}`);
450
+ console.error(c.red(`Entity not found: "${qualifiedName}"`));
451
+ console.error(c.dim('Use qualified name (file::name) or search with: openswarm check --search <query>'));
464
452
  process.exit(1);
465
453
  }
466
454
  if (results.length === 1) {
467
455
  entity = results[0];
468
456
  }
469
457
  else {
470
- console.log(`${c.yellow}Multiple matches for "${qualifiedName}":${c.reset}\n`);
458
+ console.log(`${c.yellow(`Multiple matches for "${qualifiedName}":`)}\n`);
471
459
  for (const e of results) {
472
- console.log(` ${c.cyan}${e.qualifiedName}${c.reset} ${e.kind} ${statusBadge(e.status)}`);
460
+ console.log(` ${c.cyan(e.qualifiedName)} ${e.kind} ${statusBadge(e.status)}`);
473
461
  }
474
- console.log(`\n${c.dim}Use the full qualified name to annotate a specific entity.${c.reset}`);
462
+ console.log(`\n${c.dim('Use the full qualified name to annotate a specific entity.')}`);
475
463
  return;
476
464
  }
477
465
  }
478
- console.log(`\n${c.bold}Annotating:${c.reset} ${c.cyan}${entity.qualifiedName}${c.reset}\n`);
466
+ console.log(`\n${c.bold('Annotating:')} ${c.cyan(entity.qualifiedName)}\n`);
479
467
  let changed = false;
480
468
  // --deprecate
481
469
  if (opts.deprecate !== undefined) {
482
470
  const reason = typeof opts.deprecate === 'string' ? opts.deprecate : undefined;
483
471
  store.deprecateEntity(entity.id, reason);
484
- console.log(` ${c.red}✗${c.reset} Deprecated${reason ? `: ${reason}` : ''}`);
472
+ console.log(` ${status.err(`Deprecated${reason ? `: ${reason}` : ''}`)}`);
485
473
  changed = true;
486
474
  }
487
475
  // --status
488
476
  if (opts.status) {
489
477
  const validStatuses = ['active', 'deprecated', 'experimental', 'planned', 'broken'];
490
478
  if (!validStatuses.includes(opts.status)) {
491
- console.error(` ${c.red}Invalid status: ${opts.status}. Valid: ${validStatuses.join(', ')}${c.reset}`);
479
+ console.error(` ${c.red(`Invalid status: ${opts.status}. Valid: ${validStatuses.join(', ')}`)}`);
492
480
  }
493
481
  else {
494
482
  store.changeEntityStatus(entity.id, opts.status);
@@ -500,26 +488,26 @@ export async function handleAnnotate(qualifiedName, opts) {
500
488
  if (opts.tag) {
501
489
  const [tagKey, tagValue] = opts.tag.split('=', 2);
502
490
  store.addTag(entity.id, tagKey, tagValue);
503
- console.log(` ${c.magenta}+${c.reset} Tag: ${tagKey}${tagValue ? `=${tagValue}` : ''}`);
491
+ console.log(` ${c.magenta('+')} Tag: ${tagKey}${tagValue ? `=${tagValue}` : ''}`);
504
492
  changed = true;
505
493
  }
506
494
  // --untag
507
495
  if (opts.untag) {
508
496
  store.removeTag(entity.id, opts.untag);
509
- console.log(` ${c.dim}-${c.reset} Removed tag: ${opts.untag}`);
497
+ console.log(` ${c.dim('-')} Removed tag: ${opts.untag}`);
510
498
  changed = true;
511
499
  }
512
500
  // --note
513
501
  if (opts.note) {
514
502
  store.addEvent(entity.id, 'note_added', { content: opts.note, actor: 'cli' });
515
- console.log(` ${c.blue}📝${c.reset} Note added`);
503
+ console.log(` ${c.blue('📝')} Note added`);
516
504
  changed = true;
517
505
  }
518
506
  // --risk
519
507
  if (opts.risk) {
520
508
  const validRisks = ['low', 'medium', 'high'];
521
509
  if (!validRisks.includes(opts.risk)) {
522
- console.error(` ${c.red}Invalid risk: ${opts.risk}. Valid: ${validRisks.join(', ')}${c.reset}`);
510
+ console.error(` ${c.red(`Invalid risk: ${opts.risk}. Valid: ${validRisks.join(', ')}`)}`);
523
511
  }
524
512
  else {
525
513
  store.updateEntity(entity.id, { riskLevel: opts.risk }, 'cli');
@@ -531,8 +519,8 @@ export async function handleAnnotate(qualifiedName, opts) {
531
519
  if (opts.warn) {
532
520
  const warnMatch = opts.warn.match(/^(info|warning|error|critical)\/(security|performance|correctness|style):\s*(.+)/);
533
521
  if (!warnMatch) {
534
- console.error(` ${c.red}Invalid warning format. Use: severity/category: message${c.reset}`);
535
- console.error(` ${c.dim}Example: --warn "error/security: SQL injection risk"${c.reset}`);
522
+ console.error(` ${c.red('Invalid warning format. Use: severity/category: message')}`);
523
+ console.error(` ${c.dim('Example: --warn "error/security: SQL injection risk"')}`);
536
524
  }
537
525
  else {
538
526
  store.addWarning(entity.id, warnMatch[1], warnMatch[2], warnMatch[3]);
@@ -541,13 +529,13 @@ export async function handleAnnotate(qualifiedName, opts) {
541
529
  }
542
530
  }
543
531
  if (!changed) {
544
- console.log(` ${c.dim}No changes. Use --deprecate, --status, --tag, --note, --risk, or --warn${c.reset}`);
532
+ console.log(` ${c.dim('No changes. Use --deprecate, --status, --tag, --note, --risk, or --warn')}`);
545
533
  }
546
534
  // 변경 후 엔티티 상태 표시
547
535
  if (changed) {
548
536
  const updated = store.getEntity(entity.id);
549
537
  if (updated) {
550
- console.log(`\n${c.dim}Updated state:${c.reset}`);
538
+ console.log(`\n${c.dim('Updated state:')}`);
551
539
  console.log(formatEntity(updated));
552
540
  }
553
541
  }