@mycodemap/mycodemap 1.9.0 → 2.0.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 (194) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +138 -928
  3. package/README.zh-CN.md +1096 -0
  4. package/dist/cli/commands/analyze-options.d.ts.map +1 -1
  5. package/dist/cli/commands/analyze-options.js +8 -0
  6. package/dist/cli/commands/analyze-options.js.map +1 -1
  7. package/dist/cli/commands/analyze.d.ts.map +1 -1
  8. package/dist/cli/commands/analyze.js +60 -41
  9. package/dist/cli/commands/analyze.js.map +1 -1
  10. package/dist/cli/commands/benchmark.d.ts +8 -0
  11. package/dist/cli/commands/benchmark.d.ts.map +1 -0
  12. package/dist/cli/commands/benchmark.js +150 -0
  13. package/dist/cli/commands/benchmark.js.map +1 -0
  14. package/dist/cli/commands/deps.d.ts +2 -1
  15. package/dist/cli/commands/deps.d.ts.map +1 -1
  16. package/dist/cli/commands/deps.js +107 -78
  17. package/dist/cli/commands/deps.js.map +1 -1
  18. package/dist/cli/commands/doctor.d.ts +3 -0
  19. package/dist/cli/commands/doctor.d.ts.map +1 -0
  20. package/dist/cli/commands/doctor.js +34 -0
  21. package/dist/cli/commands/doctor.js.map +1 -0
  22. package/dist/cli/commands/query.d.ts +1 -0
  23. package/dist/cli/commands/query.d.ts.map +1 -1
  24. package/dist/cli/commands/query.js +123 -140
  25. package/dist/cli/commands/query.js.map +1 -1
  26. package/dist/cli/doctor/check-agent.d.ts +3 -0
  27. package/dist/cli/doctor/check-agent.d.ts.map +1 -0
  28. package/dist/cli/doctor/check-agent.js +60 -0
  29. package/dist/cli/doctor/check-agent.js.map +1 -0
  30. package/dist/cli/doctor/check-ghost-commands.d.ts +3 -0
  31. package/dist/cli/doctor/check-ghost-commands.d.ts.map +1 -0
  32. package/dist/cli/doctor/check-ghost-commands.js +86 -0
  33. package/dist/cli/doctor/check-ghost-commands.js.map +1 -0
  34. package/dist/cli/doctor/check-native-deps.d.ts +3 -0
  35. package/dist/cli/doctor/check-native-deps.d.ts.map +1 -0
  36. package/dist/cli/doctor/check-native-deps.js +54 -0
  37. package/dist/cli/doctor/check-native-deps.js.map +1 -0
  38. package/dist/cli/doctor/check-workspace-drift.d.ts +3 -0
  39. package/dist/cli/doctor/check-workspace-drift.d.ts.map +1 -0
  40. package/dist/cli/doctor/check-workspace-drift.js +83 -0
  41. package/dist/cli/doctor/check-workspace-drift.js.map +1 -0
  42. package/dist/cli/doctor/formatter.d.ts +20 -0
  43. package/dist/cli/doctor/formatter.d.ts.map +1 -0
  44. package/dist/cli/doctor/formatter.js +91 -0
  45. package/dist/cli/doctor/formatter.js.map +1 -0
  46. package/dist/cli/doctor/index.d.ts +8 -0
  47. package/dist/cli/doctor/index.d.ts.map +1 -0
  48. package/dist/cli/doctor/index.js +9 -0
  49. package/dist/cli/doctor/index.js.map +1 -0
  50. package/dist/cli/doctor/orchestrator.d.ts +3 -0
  51. package/dist/cli/doctor/orchestrator.d.ts.map +1 -0
  52. package/dist/cli/doctor/orchestrator.js +37 -0
  53. package/dist/cli/doctor/orchestrator.js.map +1 -0
  54. package/dist/cli/doctor/types.d.ts +19 -0
  55. package/dist/cli/doctor/types.d.ts.map +1 -0
  56. package/dist/cli/doctor/types.js +4 -0
  57. package/dist/cli/doctor/types.js.map +1 -0
  58. package/dist/cli/index.js +72 -20
  59. package/dist/cli/index.js.map +1 -1
  60. package/dist/cli/interface-contract/commands/analyze.d.ts +3 -0
  61. package/dist/cli/interface-contract/commands/analyze.d.ts.map +1 -0
  62. package/dist/cli/interface-contract/commands/analyze.js +138 -0
  63. package/dist/cli/interface-contract/commands/analyze.js.map +1 -0
  64. package/dist/cli/interface-contract/commands/benchmark.d.ts +3 -0
  65. package/dist/cli/interface-contract/commands/benchmark.d.ts.map +1 -0
  66. package/dist/cli/interface-contract/commands/benchmark.js +107 -0
  67. package/dist/cli/interface-contract/commands/benchmark.js.map +1 -0
  68. package/dist/cli/interface-contract/commands/deps.d.ts +3 -0
  69. package/dist/cli/interface-contract/commands/deps.d.ts.map +1 -0
  70. package/dist/cli/interface-contract/commands/deps.js +129 -0
  71. package/dist/cli/interface-contract/commands/deps.js.map +1 -0
  72. package/dist/cli/interface-contract/commands/doctor.d.ts +3 -0
  73. package/dist/cli/interface-contract/commands/doctor.d.ts.map +1 -0
  74. package/dist/cli/interface-contract/commands/doctor.js +59 -0
  75. package/dist/cli/interface-contract/commands/doctor.js.map +1 -0
  76. package/dist/cli/interface-contract/commands/index.d.ts +9 -0
  77. package/dist/cli/interface-contract/commands/index.d.ts.map +1 -0
  78. package/dist/cli/interface-contract/commands/index.js +18 -0
  79. package/dist/cli/interface-contract/commands/index.js.map +1 -0
  80. package/dist/cli/interface-contract/commands/init.d.ts +3 -0
  81. package/dist/cli/interface-contract/commands/init.d.ts.map +1 -0
  82. package/dist/cli/interface-contract/commands/init.js +87 -0
  83. package/dist/cli/interface-contract/commands/init.js.map +1 -0
  84. package/dist/cli/interface-contract/commands/query.d.ts +3 -0
  85. package/dist/cli/interface-contract/commands/query.d.ts.map +1 -0
  86. package/dist/cli/interface-contract/commands/query.js +185 -0
  87. package/dist/cli/interface-contract/commands/query.js.map +1 -0
  88. package/dist/cli/interface-contract/index.d.ts +22 -0
  89. package/dist/cli/interface-contract/index.d.ts.map +1 -0
  90. package/dist/cli/interface-contract/index.js +41 -0
  91. package/dist/cli/interface-contract/index.js.map +1 -0
  92. package/dist/cli/interface-contract/schema.d.ts +30 -0
  93. package/dist/cli/interface-contract/schema.d.ts.map +1 -0
  94. package/dist/cli/interface-contract/schema.js +72 -0
  95. package/dist/cli/interface-contract/schema.js.map +1 -0
  96. package/dist/cli/interface-contract/types.d.ts +76 -0
  97. package/dist/cli/interface-contract/types.d.ts.map +1 -0
  98. package/dist/cli/interface-contract/types.js +4 -0
  99. package/dist/cli/interface-contract/types.js.map +1 -0
  100. package/dist/cli/output/apply-suggestion.d.ts +12 -0
  101. package/dist/cli/output/apply-suggestion.d.ts.map +1 -0
  102. package/dist/cli/output/apply-suggestion.js +29 -0
  103. package/dist/cli/output/apply-suggestion.js.map +1 -0
  104. package/dist/cli/output/error-codes.d.ts +22 -0
  105. package/dist/cli/output/error-codes.d.ts.map +1 -0
  106. package/dist/cli/output/error-codes.js +82 -0
  107. package/dist/cli/output/error-codes.js.map +1 -0
  108. package/dist/cli/output/errors.d.ts +14 -0
  109. package/dist/cli/output/errors.d.ts.map +1 -0
  110. package/dist/cli/output/errors.js +170 -0
  111. package/dist/cli/output/errors.js.map +1 -0
  112. package/dist/cli/output/index.d.ts +13 -0
  113. package/dist/cli/output/index.d.ts.map +1 -0
  114. package/dist/cli/output/index.js +11 -0
  115. package/dist/cli/output/index.js.map +1 -0
  116. package/dist/cli/output/mode.d.ts +12 -0
  117. package/dist/cli/output/mode.d.ts.map +1 -0
  118. package/dist/cli/output/mode.js +23 -0
  119. package/dist/cli/output/mode.js.map +1 -0
  120. package/dist/cli/output/progress.d.ts +9 -0
  121. package/dist/cli/output/progress.d.ts.map +1 -0
  122. package/dist/cli/output/progress.js +65 -0
  123. package/dist/cli/output/progress.js.map +1 -0
  124. package/dist/cli/output/render.d.ts +11 -0
  125. package/dist/cli/output/render.d.ts.map +1 -0
  126. package/dist/cli/output/render.js +18 -0
  127. package/dist/cli/output/render.js.map +1 -0
  128. package/dist/cli/output/types.d.ts +53 -0
  129. package/dist/cli/output/types.d.ts.map +1 -0
  130. package/dist/cli/output/types.js +14 -0
  131. package/dist/cli/output/types.js.map +1 -0
  132. package/dist/cli/output/wasm-fallback.d.ts +13 -0
  133. package/dist/cli/output/wasm-fallback.d.ts.map +1 -0
  134. package/dist/cli/output/wasm-fallback.js +92 -0
  135. package/dist/cli/output/wasm-fallback.js.map +1 -0
  136. package/dist/cli/tree-sitter-check.d.ts +6 -1
  137. package/dist/cli/tree-sitter-check.d.ts.map +1 -1
  138. package/dist/cli/tree-sitter-check.js +23 -1
  139. package/dist/cli/tree-sitter-check.js.map +1 -1
  140. package/dist/infrastructure/storage/adapters/SQLiteStorage.d.ts.map +1 -1
  141. package/dist/infrastructure/storage/adapters/SQLiteStorage.js +2 -2
  142. package/dist/infrastructure/storage/adapters/SQLiteStorage.js.map +1 -1
  143. package/dist/infrastructure/storage/adapters/sqlite-loader.d.ts +23 -0
  144. package/dist/infrastructure/storage/adapters/sqlite-loader.d.ts.map +1 -0
  145. package/dist/infrastructure/storage/adapters/sqlite-loader.js +210 -0
  146. package/dist/infrastructure/storage/adapters/sqlite-loader.js.map +1 -0
  147. package/dist/orchestrator/types.d.ts +2 -0
  148. package/dist/orchestrator/types.d.ts.map +1 -1
  149. package/dist/orchestrator/types.js.map +1 -1
  150. package/dist/parser/implementations/tree-sitter-loader.d.ts +16 -0
  151. package/dist/parser/implementations/tree-sitter-loader.d.ts.map +1 -0
  152. package/dist/parser/implementations/tree-sitter-loader.js +105 -0
  153. package/dist/parser/implementations/tree-sitter-loader.js.map +1 -0
  154. package/dist/parser/implementations/tree-sitter-parser.d.ts +3 -0
  155. package/dist/parser/implementations/tree-sitter-parser.d.ts.map +1 -1
  156. package/dist/parser/implementations/tree-sitter-parser.js +8 -3
  157. package/dist/parser/implementations/tree-sitter-parser.js.map +1 -1
  158. package/dist/server/mcp/schema-adapter.d.ts +45 -0
  159. package/dist/server/mcp/schema-adapter.d.ts.map +1 -0
  160. package/dist/server/mcp/schema-adapter.js +290 -0
  161. package/dist/server/mcp/schema-adapter.js.map +1 -0
  162. package/dist/server/mcp/server.d.ts.map +1 -1
  163. package/dist/server/mcp/server.js +32 -2
  164. package/dist/server/mcp/server.js.map +1 -1
  165. package/docs/AI_ASSISTANT_SETUP.md +169 -12
  166. package/docs/README.md +40 -1
  167. package/docs/SETUP_GUIDE.md +11 -14
  168. package/docs/ai-guide/COMMANDS.md +68 -10
  169. package/docs/ai-guide/INTEGRATION.md +77 -10
  170. package/docs/ai-guide/OUTPUT.md +295 -2
  171. package/docs/ai-guide/PROMPTS.md +2 -2
  172. package/docs/ai-guide/QUICKSTART.md +28 -1
  173. package/docs/ai-guide/README.md +2 -2
  174. package/docs/archive/ideation/2026-04-15-executable-architecture-constitution-ideation-archive.md +70 -0
  175. package/docs/archive/ideation/2026-04-20-mycodemap-init-enhancements-ideation-archive.md +109 -0
  176. package/docs/archive/ideation/2026-04-22-rules-entry-docs-optimization-consolidated-ideation-archive.md +54 -0
  177. package/docs/ideation/2026-04-15-executable-architecture-constitution-ideation.md +10 -22
  178. package/docs/ideation/2026-04-20-mycodemap-init-enhancements-ideation.md +15 -60
  179. package/docs/ideation/2026-04-22-rules-entry-docs-optimization-consolidated-ideation.md +47 -52
  180. package/docs/ideation/2026-04-29-ux-install-agent-experience-ideation.md +256 -0
  181. package/docs/plans/2026-04-30-install-guide-and-repo-analyzer-design.md +394 -0
  182. package/docs/rules/README.md +1 -0
  183. package/docs/rules/architecture-guardrails.md +2 -1
  184. package/docs/rules/engineering-with-codex-openai.md +1 -1
  185. package/docs/rules/harness.md +106 -0
  186. package/docs/rules/pre-release-checklist.md +28 -0
  187. package/docs/rules/testing.md +51 -0
  188. package/examples/claude/skills/mycodemap-repo-analyzer/SKILL.md +294 -0
  189. package/examples/claude/skills/mycodemap-repo-analyzer/references/analysis-guide.md +166 -0
  190. package/examples/claude/skills/mycodemap-repo-analyzer/references/module-analysis-guide.md +150 -0
  191. package/package.json +7 -4
  192. package/scripts/sync-analyze-docs.js +2 -2
  193. package/scripts/validate-docs.js +113 -16
  194. package/docs/references/tmp.md +0 -527
@@ -0,0 +1,54 @@
1
+ // [META] since:2026-04-30 | owner:cli-team | stable:false
2
+ // [WHY] Native dependency health checker — verifies tree-sitter and better-sqlite3 can be loaded, reuses tree-sitter-check pattern
3
+ import { createRequire } from 'node:module';
4
+ import { detectTreeSitterSync } from '../tree-sitter-check.js';
5
+ function checkBetterSqlite3() {
6
+ try {
7
+ const projectRequire = createRequire(import.meta.url);
8
+ projectRequire('better-sqlite3');
9
+ return {
10
+ category: 'runtime',
11
+ severity: 'ok',
12
+ id: 'better-sqlite3-available',
13
+ message: 'better-sqlite3 native module loads successfully',
14
+ remediation: 'No action needed',
15
+ };
16
+ }
17
+ catch (error) {
18
+ const errorMessage = error instanceof Error ? error.message : String(error);
19
+ return {
20
+ category: 'runtime',
21
+ severity: 'error',
22
+ id: 'native-dep-missing',
23
+ message: `better-sqlite3 cannot be loaded: ${errorMessage}`,
24
+ remediation: 'Run npm install to rebuild native dependencies, or use --wasm-fallback if available',
25
+ };
26
+ }
27
+ }
28
+ export function checkNativeDeps() {
29
+ const results = [];
30
+ // Check tree-sitter using existing detection pattern
31
+ const treeSitterInfo = detectTreeSitterSync();
32
+ if (treeSitterInfo.isAvailable) {
33
+ results.push({
34
+ category: 'runtime',
35
+ severity: 'ok',
36
+ id: 'tree-sitter-available',
37
+ message: `tree-sitter is available${treeSitterInfo.version ? ` (v${treeSitterInfo.version})` : ''}`,
38
+ remediation: 'No action needed',
39
+ });
40
+ }
41
+ else {
42
+ results.push({
43
+ category: 'runtime',
44
+ severity: 'error',
45
+ id: 'native-dep-missing',
46
+ message: `tree-sitter cannot be loaded: ${treeSitterInfo.error ?? 'unknown error'}`,
47
+ remediation: 'Run npm install to rebuild native dependencies, or use --wasm-fallback if available',
48
+ });
49
+ }
50
+ // Check better-sqlite3 using same try-import pattern
51
+ results.push(checkBetterSqlite3());
52
+ return results;
53
+ }
54
+ //# sourceMappingURL=check-native-deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-native-deps.js","sourceRoot":"","sources":["../../../src/cli/doctor/check-native-deps.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,mIAAmI;AAEnI,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACjC,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,IAAI;YACd,EAAE,EAAE,0BAA0B;YAC9B,OAAO,EAAE,iDAAiD;YAC1D,WAAW,EAAE,kBAAkB;SAChC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,OAAO;YACjB,EAAE,EAAE,oBAAoB;YACxB,OAAO,EAAE,oCAAoC,YAAY,EAAE;YAC3D,WAAW,EAAE,qFAAqF;SACnG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,qDAAqD;IACrD,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,IAAI;YACd,EAAE,EAAE,uBAAuB;YAC3B,OAAO,EAAE,2BAA2B,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACnG,WAAW,EAAE,kBAAkB;SAChC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,OAAO;YACjB,EAAE,EAAE,oBAAoB;YACxB,OAAO,EAAE,iCAAiC,cAAc,CAAC,KAAK,IAAI,eAAe,EAAE;YACnF,WAAW,EAAE,qFAAqF;SACnG,CAAC,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAEnC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DiagnosticResult } from './types.js';
2
+ export declare function checkWorkspaceDrift(rootDir: string): DiagnosticResult[];
3
+ //# sourceMappingURL=check-workspace-drift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-workspace-drift.d.ts","sourceRoot":"","sources":["../../../src/cli/doctor/check-workspace-drift.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAiBnD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAmFvE"}
@@ -0,0 +1,83 @@
1
+ // [META] since:2026-04-30 | owner:cli-team | stable:false
2
+ // [WHY] Workspace drift detection — compares init-last.json receipt asset paths against actual filesystem state
3
+ import { existsSync, readFileSync } from 'node:fs';
4
+ import path from 'node:path';
5
+ const RECEIPT_RELATIVE_PATH = '.mycodemap/status/init-last.json';
6
+ export function checkWorkspaceDrift(rootDir) {
7
+ const receiptPath = path.join(rootDir, RECEIPT_RELATIVE_PATH);
8
+ if (!existsSync(receiptPath)) {
9
+ return [
10
+ {
11
+ category: 'config',
12
+ severity: 'warn',
13
+ id: 'workspace-not-initialized',
14
+ message: 'No init receipt found — workspace has not been initialized',
15
+ remediation: "Run 'codemap init' to create the workspace",
16
+ nextCommand: 'mycodemap init',
17
+ },
18
+ ];
19
+ }
20
+ let receipt;
21
+ try {
22
+ const raw = readFileSync(receiptPath, 'utf8');
23
+ receipt = JSON.parse(raw);
24
+ }
25
+ catch {
26
+ return [
27
+ {
28
+ category: 'config',
29
+ severity: 'error',
30
+ id: 'receipt-invalid',
31
+ message: 'init-last.json exists but cannot be parsed',
32
+ remediation: "Run 'codemap init' to regenerate the receipt",
33
+ nextCommand: 'mycodemap init',
34
+ },
35
+ ];
36
+ }
37
+ if (!Array.isArray(receipt.assets)) {
38
+ return [
39
+ {
40
+ category: 'config',
41
+ severity: 'error',
42
+ id: 'receipt-invalid',
43
+ message: 'init-last.json has no assets array',
44
+ remediation: "Run 'codemap init' to regenerate the receipt",
45
+ nextCommand: 'mycodemap init',
46
+ },
47
+ ];
48
+ }
49
+ const driftResults = [];
50
+ for (const asset of receipt.assets) {
51
+ if (!asset.path) {
52
+ continue;
53
+ }
54
+ const absolutePath = path.resolve(rootDir, asset.path);
55
+ if (!existsSync(absolutePath)) {
56
+ const relativePath = path.relative(rootDir, absolutePath);
57
+ const isToolOwned = asset.ownership === 'tool-owned';
58
+ driftResults.push({
59
+ category: 'config',
60
+ severity: isToolOwned ? 'error' : 'warn',
61
+ id: 'workspace-drift-detected',
62
+ message: `Receipt asset "${asset.key}" (${asset.label}) not found at ${relativePath}`,
63
+ remediation: isToolOwned
64
+ ? "Run 'codemap init' to recreate missing tool-owned files"
65
+ : 'Verify if the file was intentionally removed, or run codemap init to recreate it',
66
+ nextCommand: isToolOwned ? 'mycodemap init' : undefined,
67
+ });
68
+ }
69
+ }
70
+ if (driftResults.length === 0) {
71
+ return [
72
+ {
73
+ category: 'config',
74
+ severity: 'ok',
75
+ id: 'workspace-drift-ok',
76
+ message: 'All receipt assets match the filesystem',
77
+ remediation: 'No action needed',
78
+ },
79
+ ];
80
+ }
81
+ return driftResults;
82
+ }
83
+ //# sourceMappingURL=check-workspace-drift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-workspace-drift.js","sourceRoot":"","sources":["../../../src/cli/doctor/check-workspace-drift.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { DiagnosticResult } from './types.js';
2
+ /**
3
+ * Build serializable data array from diagnostics — same filtering logic as
4
+ * formatDoctorJson but returns the array of objects instead of a JSON string.
5
+ * Used by renderOutput for JSON mode output.
6
+ */
7
+ export declare function formatDoctorJsonData(results: DiagnosticResult[]): Record<string, string>[];
8
+ /**
9
+ * Format diagnostics as a JSON flat array — simple, grepable, jq-friendly.
10
+ * Each element: {category, severity, id, message, remediation}
11
+ * nextCommand is included only when defined.
12
+ */
13
+ export declare function formatDoctorJson(results: DiagnosticResult[]): string;
14
+ /**
15
+ * Format diagnostics as a colorized table — human-friendly for TTY output.
16
+ * Columns: CATEGORY, SEVERITY, ID, MESSAGE
17
+ * Grouped by category order with a summary line.
18
+ */
19
+ export declare function formatDoctorReport(results: DiagnosticResult[]): string;
20
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/cli/doctor/formatter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,YAAY,CAAC;AAkCvE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAc1F;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAiCtE"}
@@ -0,0 +1,91 @@
1
+ // [META] since:2026-04-30 | owner:cli-team | stable:false
2
+ // [WHY] TTY-aware output formatting — JSON flat array for non-TTY/CI, colorized table for interactive terminals
3
+ import chalk from 'chalk';
4
+ const CATEGORY_ORDER = {
5
+ install: 0,
6
+ config: 1,
7
+ runtime: 2,
8
+ agent: 3,
9
+ };
10
+ const CATEGORY_WIDTH = 10;
11
+ const SEVERITY_WIDTH = 8;
12
+ const ID_WIDTH = 28;
13
+ function severityLabel(severity) {
14
+ switch (severity) {
15
+ case 'error':
16
+ return chalk.red('error');
17
+ case 'warn':
18
+ return chalk.yellow('warn');
19
+ case 'ok':
20
+ return chalk.green('ok');
21
+ case 'info':
22
+ return chalk.cyan('info');
23
+ }
24
+ }
25
+ function sortByCategory(results) {
26
+ return [...results].sort((a, b) => {
27
+ const orderA = CATEGORY_ORDER[a.category] ?? 99;
28
+ const orderB = CATEGORY_ORDER[b.category] ?? 99;
29
+ return orderA - orderB;
30
+ });
31
+ }
32
+ /**
33
+ * Build serializable data array from diagnostics — same filtering logic as
34
+ * formatDoctorJson but returns the array of objects instead of a JSON string.
35
+ * Used by renderOutput for JSON mode output.
36
+ */
37
+ export function formatDoctorJsonData(results) {
38
+ return results.map((r) => {
39
+ const entry = {
40
+ category: r.category,
41
+ severity: r.severity,
42
+ id: r.id,
43
+ message: r.message,
44
+ remediation: r.remediation,
45
+ };
46
+ if (r.nextCommand) {
47
+ entry.nextCommand = r.nextCommand;
48
+ }
49
+ return entry;
50
+ });
51
+ }
52
+ /**
53
+ * Format diagnostics as a JSON flat array — simple, grepable, jq-friendly.
54
+ * Each element: {category, severity, id, message, remediation}
55
+ * nextCommand is included only when defined.
56
+ */
57
+ export function formatDoctorJson(results) {
58
+ return JSON.stringify(formatDoctorJsonData(results), null, 2);
59
+ }
60
+ /**
61
+ * Format diagnostics as a colorized table — human-friendly for TTY output.
62
+ * Columns: CATEGORY, SEVERITY, ID, MESSAGE
63
+ * Grouped by category order with a summary line.
64
+ */
65
+ export function formatDoctorReport(results) {
66
+ const sorted = sortByCategory(results);
67
+ const lines = [];
68
+ // Header
69
+ const header = 'CATEGORY'.padEnd(CATEGORY_WIDTH) +
70
+ 'SEVERITY'.padEnd(SEVERITY_WIDTH) +
71
+ 'ID'.padEnd(ID_WIDTH) +
72
+ 'MESSAGE';
73
+ lines.push(header);
74
+ lines.push('-'.repeat(header.length));
75
+ // Data rows
76
+ for (const r of sorted) {
77
+ const category = r.category.padEnd(CATEGORY_WIDTH);
78
+ const severity = severityLabel(r.severity).padEnd(SEVERITY_WIDTH + 9); // +9 for ANSI escape codes from chalk
79
+ const id = r.id.padEnd(ID_WIDTH);
80
+ lines.push(`${category}${severity}${id}${r.message}`);
81
+ }
82
+ // Summary line
83
+ const errorCount = results.filter((r) => r.severity === 'error').length;
84
+ const warnCount = results.filter((r) => r.severity === 'warn').length;
85
+ const infoCount = results.filter((r) => r.severity === 'info').length;
86
+ const okCount = results.filter((r) => r.severity === 'ok').length;
87
+ lines.push('');
88
+ lines.push(`Total: ${results.length} diagnostics (${errorCount} errors, ${warnCount} warnings, ${infoCount} info, ${okCount} passed)`);
89
+ return lines.join('\n');
90
+ }
91
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/cli/doctor/formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type { DiagnosticCategory, DiagnosticResult, DiagnosticSeverity, DoctorOptions, DoctorReport, } from './types.js';
2
+ export { runDoctor } from './orchestrator.js';
3
+ export { formatDoctorJson, formatDoctorReport } from './formatter.js';
4
+ export { checkGhostCommands } from './check-ghost-commands.js';
5
+ export { checkNativeDeps } from './check-native-deps.js';
6
+ export { checkWorkspaceDrift } from './check-workspace-drift.js';
7
+ export { checkAgent } from './check-agent.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/doctor/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ // [META] since:2026-04-30 | owner:cli-team | stable:false
2
+ // [WHY] Public API for the doctor module — orchestrator, formatters, types, individual checkers
3
+ export { runDoctor } from './orchestrator.js';
4
+ export { formatDoctorJson, formatDoctorReport } from './formatter.js';
5
+ export { checkGhostCommands } from './check-ghost-commands.js';
6
+ export { checkNativeDeps } from './check-native-deps.js';
7
+ export { checkWorkspaceDrift } from './check-workspace-drift.js';
8
+ export { checkAgent } from './check-agent.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/doctor/index.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,gGAAgG;AAUhG,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DoctorOptions, DoctorReport } from './types.js';
2
+ export declare function runDoctor(options: DoctorOptions): Promise<DoctorReport>;
3
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/cli/doctor/orchestrator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAoB,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhF,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAgC7E"}
@@ -0,0 +1,37 @@
1
+ // [META] since:2026-04-30 | owner:cli-team | stable:false
2
+ // [WHY] Orchestrate all doctor checkers and compute aggregate exit code per CONTEXT.md exit behavior decision
3
+ import { checkGhostCommands } from './check-ghost-commands.js';
4
+ import { checkNativeDeps } from './check-native-deps.js';
5
+ import { checkWorkspaceDrift } from './check-workspace-drift.js';
6
+ import { checkAgent } from './check-agent.js';
7
+ export async function runDoctor(options) {
8
+ const rootDir = options.cwd ?? process.cwd();
9
+ // Run all checkers in parallel — ghost/native/workspace are sync, agent is async
10
+ const [ghostResults, nativeResults, workspaceResults, agentResults] = await Promise.all([
11
+ Promise.resolve(checkGhostCommands(rootDir)),
12
+ Promise.resolve(checkNativeDeps()),
13
+ Promise.resolve(checkWorkspaceDrift(rootDir)),
14
+ checkAgent(),
15
+ ]);
16
+ const results = [
17
+ ...ghostResults,
18
+ ...nativeResults,
19
+ ...workspaceResults,
20
+ ...agentResults,
21
+ ];
22
+ // Compute exit code: 0=all pass, 1=has errors, 2=warnings only
23
+ const hasErrors = results.some((r) => r.severity === 'error');
24
+ const hasWarnings = results.some((r) => r.severity === 'warn');
25
+ let exitCode;
26
+ if (hasErrors) {
27
+ exitCode = 1;
28
+ }
29
+ else if (hasWarnings) {
30
+ exitCode = 2;
31
+ }
32
+ else {
33
+ exitCode = 0;
34
+ }
35
+ return { results, exitCode };
36
+ }
37
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/cli/doctor/orchestrator.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,8GAA8G;AAE9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAE7C,iFAAiF;IACjF,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtF,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC7C,UAAU,EAAE;KACb,CAAC,CAAC;IAEH,MAAM,OAAO,GAAuB;QAClC,GAAG,YAAY;QACf,GAAG,aAAa;QAChB,GAAG,gBAAgB;QACnB,GAAG,YAAY;KAChB,CAAC;IAEF,+DAA+D;IAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAE/D,IAAI,QAAgB,CAAC;IACrB,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type DiagnosticCategory = 'install' | 'config' | 'runtime' | 'agent';
2
+ export type DiagnosticSeverity = 'ok' | 'warn' | 'error' | 'info';
3
+ export interface DiagnosticResult {
4
+ category: DiagnosticCategory;
5
+ severity: DiagnosticSeverity;
6
+ id: string;
7
+ message: string;
8
+ remediation: string;
9
+ nextCommand?: string;
10
+ }
11
+ export interface DoctorOptions {
12
+ json?: boolean;
13
+ cwd?: string;
14
+ }
15
+ export interface DoctorReport {
16
+ results: DiagnosticResult[];
17
+ exitCode: number;
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/doctor/types.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAC5E,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,4 @@
1
+ // [META] since:2026-04-30 | owner:cli-team | stable:false
2
+ // [WHY] Shared diagnostic types for codemap doctor — single source of truth for checker output shape
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/doctor/types.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,qGAAqG"}
package/dist/cli/index.js CHANGED
@@ -18,6 +18,8 @@ import { historyCommand } from './commands/history.js';
18
18
  import { publishStatusCommand } from './commands/publish-status.js';
19
19
  import { readinessGateCommand } from './commands/readiness-gate.js';
20
20
  import { mcpCommand, isMcpStartInvocation } from './commands/mcp.js';
21
+ import { doctorCommand } from './commands/doctor.js';
22
+ import { benchmarkCommand } from './commands/benchmark.js';
21
23
  import { shipCommand } from './commands/ship/index.js';
22
24
  import { ANALYZE_COMMAND_DESCRIPTION, configureAnalyzeCommand } from './commands/analyze-options.js';
23
25
  import { setupRuntimeLogging } from './runtime-logger.js';
@@ -25,9 +27,21 @@ import { runFirstRunGuide } from './first-run-guide.js';
25
27
  import { printMigrationWarning } from './paths.js';
26
28
  import { validatePlatform } from './platform-check.js';
27
29
  import { formatRemovedCommandMessage, getRemovedTopLevelCommand } from './removed-commands.js';
28
- import { commandRequiresTreeSitter, validateTreeSitter } from './tree-sitter-check.js';
30
+ import { commandRequiresTreeSitter, validateTreeSitterAsync } from './tree-sitter-check.js';
31
+ import { getFullContract } from './interface-contract/index.js';
32
+ import { tryApplySuggestion } from './output/apply-suggestion.js';
33
+ import { resolveOutputMode, formatError } from './output/index.js';
29
34
  const program = new Command();
30
35
  const cliArgs = process.argv.slice(2);
36
+ // --schema must bypass all startup side effects to keep stdout machine-parseable
37
+ // Only intercept at root level (no subcommand present) so valid subcommand args
38
+ // that happen to be exactly --schema are not hijacked.
39
+ const firstArg = cliArgs[0];
40
+ const isRootLevel = !firstArg || firstArg.startsWith('-');
41
+ if (isRootLevel && cliArgs.includes('--schema')) {
42
+ console.log(JSON.stringify(getFullContract(), null, 2));
43
+ process.exit(0);
44
+ }
31
45
  const shouldBypassHumanStartupSideEffects = isMcpStartInvocation(cliArgs);
32
46
  const removedCommand = getRemovedTopLevelCommand(cliArgs);
33
47
  if (removedCommand) {
@@ -52,27 +66,41 @@ catch (error) {
52
66
  process.exit(1);
53
67
  }
54
68
  /**
55
- * 包装命令 action,按需检测 tree-sitter
69
+ * 统一命令 action 包装器:tree-sitter 检查 + 集中式错误处理 + suggestion 自动修复
56
70
  */
57
- function wrapWithTreeSitterCheck(commandName, action) {
58
- return async (options) => {
59
- if (commandRequiresTreeSitter(commandName)) {
60
- try {
61
- validateTreeSitter();
71
+ async function createActionHandler(commandName, action) {
72
+ return async (...args) => {
73
+ try {
74
+ if (commandRequiresTreeSitter(commandName)) {
75
+ await validateTreeSitterAsync();
62
76
  }
63
- catch (error) {
64
- console.error(error instanceof Error ? error.message : String(error));
65
- process.exit(1);
77
+ await action(...args);
78
+ }
79
+ catch (error) {
80
+ const mode = resolveOutputMode({});
81
+ const formatted = formatError(error, mode, commandName);
82
+ process.stdout.write(formatted + '\n');
83
+ // 尝试自动修复(如果 --apply-suggestion 已设置且错误是 ActionableError)
84
+ const cliOpts = program.opts();
85
+ if (cliOpts.applySuggestion && error && typeof error === 'object' && 'nextCommand' in error) {
86
+ const suggestionResult = await tryApplySuggestion(error, { applySuggestion: cliOpts.applySuggestion, wasmFallback: cliOpts.wasmFallback }, mode);
87
+ if (suggestionResult.success) {
88
+ process.exitCode = 0;
89
+ return;
90
+ }
66
91
  }
92
+ process.exitCode = 1;
67
93
  }
68
- return action(options);
69
94
  };
70
95
  }
71
96
  program
72
97
  .name('mycodemap')
73
98
  .alias('codemap') // 兼容旧命令名
74
99
  .description('TypeScript 代码地图工具 - 为 AI 辅助开发提供结构化上下文')
75
- .version('0.1.0');
100
+ .version('0.1.0')
101
+ .option('--apply-suggestion', 'Allow automatic execution of high-confidence remediation suggestions (confidence >= 0.8)')
102
+ .option('--wasm-fallback', 'Automatically use WASM fallback when native dependencies fail to compile')
103
+ .option('--native', 'Force native binary usage for tree-sitter and better-sqlite3 (disables WASM fallback)');
76
104
  program
77
105
  .command('init')
78
106
  .description('初始化并收敛 CodeMap 项目状态')
@@ -86,7 +114,7 @@ program
86
114
  .option('-o, --output <dir>', '输出目录', '.mycodemap')
87
115
  .option('--symbol-level', '额外 materialize symbol-level 调用依赖到代码图存储', false)
88
116
  .option('--ai-context', '为每个文件生成 AI 描述(需要 AI Provider)', false)
89
- .action(async (options, command) => {
117
+ .action(await createActionHandler('generate', async (options, command) => {
90
118
  await generateCommand({
91
119
  ...options,
92
120
  __optionSources: {
@@ -94,7 +122,7 @@ program
94
122
  output: command.getOptionValueSource('output'),
95
123
  },
96
124
  });
97
- });
125
+ }));
98
126
  program.addCommand(designCommand);
99
127
  program
100
128
  .command('query')
@@ -105,6 +133,7 @@ program
105
133
  .option('-S, --search <word>', '模糊搜索')
106
134
  .option('-l, --limit <number>', '限制结果数量', '50')
107
135
  .option('-j, --json', 'JSON 格式输出')
136
+ .option('--human', '强制人类可读输出')
108
137
  .option('--structured', '输出完全结构化的 JSON(不包含自然语言字符串,需要配合 --json 使用)')
109
138
  .option('-v, --verbose', '显示性能指标')
110
139
  .option('-r, --regex', '使用正则表达式搜索(仅适用于 -S/--search)')
@@ -119,15 +148,16 @@ program
119
148
  .description('分析项目模块依赖关系')
120
149
  .option('-m, --module <path>', '查看指定模块的依赖')
121
150
  .option('-j, --json', 'JSON 格式输出')
151
+ .option('--human', '强制人类可读输出')
122
152
  .option('--structured', '输出完全结构化的 JSON(不包含自然语言字符串,需要配合 --json 使用)')
123
- .action(depsCommand);
153
+ .action(await createActionHandler('deps', depsCommand));
124
154
  program
125
155
  .command('cycles')
126
156
  .description('检测项目中的循环依赖')
127
157
  .option('-d, --depth <number>', '检测深度', '5')
128
158
  .option('-j, --json', 'JSON 格式输出')
129
159
  .option('--structured', '输出完全结构化的 JSON(不包含自然语言字符串,需要配合 --json 使用)')
130
- .action(cyclesCommand);
160
+ .action(await createActionHandler('cycles', cyclesCommand));
131
161
  program
132
162
  .command('complexity')
133
163
  .description('分析代码复杂度(圈复杂度、认知复杂度、可维护性)')
@@ -135,7 +165,7 @@ program
135
165
  .option('-d, --detail', '显示函数级复杂度详情(使用 AST 精确分析)')
136
166
  .option('-j, --json', 'JSON 格式输出')
137
167
  .option('--structured', '输出完全结构化的 JSON(不包含自然语言字符串,需要配合 --json 使用)')
138
- .action(complexityCommand);
168
+ .action(await createActionHandler('complexity', complexityCommand));
139
169
  program
140
170
  .command('impact')
141
171
  .description('分析文件变更的影响范围')
@@ -143,14 +173,14 @@ program
143
173
  .option('-t, --transitive', '包含传递依赖')
144
174
  .option('-j, --json', 'JSON 格式输出')
145
175
  .option('--structured', '输出完全结构化的 JSON(不包含自然语言字符串,需要配合 --json 使用)')
146
- .action(impactCommand);
176
+ .action(await createActionHandler('impact', impactCommand));
147
177
  configureAnalyzeCommand(program
148
178
  .command('analyze')
149
- .description(ANALYZE_COMMAND_DESCRIPTION)).action(async () => {
179
+ .description(ANALYZE_COMMAND_DESCRIPTION)).action(await createActionHandler('analyze', async () => {
150
180
  const { analyzeCommand } = await import('./commands/analyze.js');
151
181
  // 跳过 program name 和 command name
152
182
  await analyzeCommand(process.argv.slice(2));
153
- });
183
+ }));
154
184
  // CI Gateway 命令
155
185
  program.addCommand(ciCommand);
156
186
  // Contract gate 命令
@@ -163,6 +193,17 @@ program.addCommand(publishStatusCommand);
163
193
  program.addCommand(readinessGateCommand);
164
194
  // Experimental MCP 命令
165
195
  program.addCommand(mcpCommand);
196
+ // Doctor command
197
+ program.addCommand(doctorCommand);
198
+ // Benchmark command
199
+ program
200
+ .command('benchmark')
201
+ .description('Compare WASM vs Native performance')
202
+ .option('-t, --target <path>', 'Target repository', '.')
203
+ .option('-m, --mode <mode>', 'Benchmark mode: native, wasm, both', 'both')
204
+ .option('-i, --iterations <n>', 'Number of iterations', '3')
205
+ .option('-j, --json', 'JSON output')
206
+ .action(benchmarkCommand);
166
207
  // Workflow 命令
167
208
  program.addCommand(workflowCommand);
168
209
  // Export 命令
@@ -180,5 +221,16 @@ program
180
221
  .option('--verbose', '显示详细输出')
181
222
  .option('--yes, -y', '置信度 60-75 时自动确认(不询问)')
182
223
  .action(shipCommand);
224
+ // Handle --native flag: disable WASM fallback before any command runs
225
+ const cliOpts = program.opts();
226
+ if (cliOpts.native) {
227
+ process.env.CODEMAP_USE_WASM_TREE_SITTER = '0';
228
+ process.env.CODEMAP_USE_WASM_BETTER_SQLITE3 = '0';
229
+ }
230
+ // Handle --wasm-fallback flag: activate WASM fallback before any command runs
231
+ if (cliOpts.wasmFallback) {
232
+ process.env.CODEMAP_USE_WASM_TREE_SITTER = '1';
233
+ process.env.CODEMAP_USE_WASM_BETTER_SQLITE3 = '1';
234
+ }
183
235
  program.parse();
184
236
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CommandContract } from '../types.js';
2
+ export declare const analyzeContract: CommandContract;
3
+ //# sourceMappingURL=analyze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../../src/cli/interface-contract/commands/analyze.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,eAAO,MAAM,eAAe,EAAE,eAsI7B,CAAC"}