@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.
- package/CHANGELOG.md +18 -0
- package/README.md +138 -928
- package/README.zh-CN.md +1096 -0
- package/dist/cli/commands/analyze-options.d.ts.map +1 -1
- package/dist/cli/commands/analyze-options.js +8 -0
- package/dist/cli/commands/analyze-options.js.map +1 -1
- package/dist/cli/commands/analyze.d.ts.map +1 -1
- package/dist/cli/commands/analyze.js +60 -41
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/benchmark.d.ts +8 -0
- package/dist/cli/commands/benchmark.d.ts.map +1 -0
- package/dist/cli/commands/benchmark.js +150 -0
- package/dist/cli/commands/benchmark.js.map +1 -0
- package/dist/cli/commands/deps.d.ts +2 -1
- package/dist/cli/commands/deps.d.ts.map +1 -1
- package/dist/cli/commands/deps.js +107 -78
- package/dist/cli/commands/deps.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +34 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/query.d.ts +1 -0
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +123 -140
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/doctor/check-agent.d.ts +3 -0
- package/dist/cli/doctor/check-agent.d.ts.map +1 -0
- package/dist/cli/doctor/check-agent.js +60 -0
- package/dist/cli/doctor/check-agent.js.map +1 -0
- package/dist/cli/doctor/check-ghost-commands.d.ts +3 -0
- package/dist/cli/doctor/check-ghost-commands.d.ts.map +1 -0
- package/dist/cli/doctor/check-ghost-commands.js +86 -0
- package/dist/cli/doctor/check-ghost-commands.js.map +1 -0
- package/dist/cli/doctor/check-native-deps.d.ts +3 -0
- package/dist/cli/doctor/check-native-deps.d.ts.map +1 -0
- package/dist/cli/doctor/check-native-deps.js +54 -0
- package/dist/cli/doctor/check-native-deps.js.map +1 -0
- package/dist/cli/doctor/check-workspace-drift.d.ts +3 -0
- package/dist/cli/doctor/check-workspace-drift.d.ts.map +1 -0
- package/dist/cli/doctor/check-workspace-drift.js +83 -0
- package/dist/cli/doctor/check-workspace-drift.js.map +1 -0
- package/dist/cli/doctor/formatter.d.ts +20 -0
- package/dist/cli/doctor/formatter.d.ts.map +1 -0
- package/dist/cli/doctor/formatter.js +91 -0
- package/dist/cli/doctor/formatter.js.map +1 -0
- package/dist/cli/doctor/index.d.ts +8 -0
- package/dist/cli/doctor/index.d.ts.map +1 -0
- package/dist/cli/doctor/index.js +9 -0
- package/dist/cli/doctor/index.js.map +1 -0
- package/dist/cli/doctor/orchestrator.d.ts +3 -0
- package/dist/cli/doctor/orchestrator.d.ts.map +1 -0
- package/dist/cli/doctor/orchestrator.js +37 -0
- package/dist/cli/doctor/orchestrator.js.map +1 -0
- package/dist/cli/doctor/types.d.ts +19 -0
- package/dist/cli/doctor/types.d.ts.map +1 -0
- package/dist/cli/doctor/types.js +4 -0
- package/dist/cli/doctor/types.js.map +1 -0
- package/dist/cli/index.js +72 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/interface-contract/commands/analyze.d.ts +3 -0
- package/dist/cli/interface-contract/commands/analyze.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/analyze.js +138 -0
- package/dist/cli/interface-contract/commands/analyze.js.map +1 -0
- package/dist/cli/interface-contract/commands/benchmark.d.ts +3 -0
- package/dist/cli/interface-contract/commands/benchmark.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/benchmark.js +107 -0
- package/dist/cli/interface-contract/commands/benchmark.js.map +1 -0
- package/dist/cli/interface-contract/commands/deps.d.ts +3 -0
- package/dist/cli/interface-contract/commands/deps.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/deps.js +129 -0
- package/dist/cli/interface-contract/commands/deps.js.map +1 -0
- package/dist/cli/interface-contract/commands/doctor.d.ts +3 -0
- package/dist/cli/interface-contract/commands/doctor.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/doctor.js +59 -0
- package/dist/cli/interface-contract/commands/doctor.js.map +1 -0
- package/dist/cli/interface-contract/commands/index.d.ts +9 -0
- package/dist/cli/interface-contract/commands/index.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/index.js +18 -0
- package/dist/cli/interface-contract/commands/index.js.map +1 -0
- package/dist/cli/interface-contract/commands/init.d.ts +3 -0
- package/dist/cli/interface-contract/commands/init.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/init.js +87 -0
- package/dist/cli/interface-contract/commands/init.js.map +1 -0
- package/dist/cli/interface-contract/commands/query.d.ts +3 -0
- package/dist/cli/interface-contract/commands/query.d.ts.map +1 -0
- package/dist/cli/interface-contract/commands/query.js +185 -0
- package/dist/cli/interface-contract/commands/query.js.map +1 -0
- package/dist/cli/interface-contract/index.d.ts +22 -0
- package/dist/cli/interface-contract/index.d.ts.map +1 -0
- package/dist/cli/interface-contract/index.js +41 -0
- package/dist/cli/interface-contract/index.js.map +1 -0
- package/dist/cli/interface-contract/schema.d.ts +30 -0
- package/dist/cli/interface-contract/schema.d.ts.map +1 -0
- package/dist/cli/interface-contract/schema.js +72 -0
- package/dist/cli/interface-contract/schema.js.map +1 -0
- package/dist/cli/interface-contract/types.d.ts +76 -0
- package/dist/cli/interface-contract/types.d.ts.map +1 -0
- package/dist/cli/interface-contract/types.js +4 -0
- package/dist/cli/interface-contract/types.js.map +1 -0
- package/dist/cli/output/apply-suggestion.d.ts +12 -0
- package/dist/cli/output/apply-suggestion.d.ts.map +1 -0
- package/dist/cli/output/apply-suggestion.js +29 -0
- package/dist/cli/output/apply-suggestion.js.map +1 -0
- package/dist/cli/output/error-codes.d.ts +22 -0
- package/dist/cli/output/error-codes.d.ts.map +1 -0
- package/dist/cli/output/error-codes.js +82 -0
- package/dist/cli/output/error-codes.js.map +1 -0
- package/dist/cli/output/errors.d.ts +14 -0
- package/dist/cli/output/errors.d.ts.map +1 -0
- package/dist/cli/output/errors.js +170 -0
- package/dist/cli/output/errors.js.map +1 -0
- package/dist/cli/output/index.d.ts +13 -0
- package/dist/cli/output/index.d.ts.map +1 -0
- package/dist/cli/output/index.js +11 -0
- package/dist/cli/output/index.js.map +1 -0
- package/dist/cli/output/mode.d.ts +12 -0
- package/dist/cli/output/mode.d.ts.map +1 -0
- package/dist/cli/output/mode.js +23 -0
- package/dist/cli/output/mode.js.map +1 -0
- package/dist/cli/output/progress.d.ts +9 -0
- package/dist/cli/output/progress.d.ts.map +1 -0
- package/dist/cli/output/progress.js +65 -0
- package/dist/cli/output/progress.js.map +1 -0
- package/dist/cli/output/render.d.ts +11 -0
- package/dist/cli/output/render.d.ts.map +1 -0
- package/dist/cli/output/render.js +18 -0
- package/dist/cli/output/render.js.map +1 -0
- package/dist/cli/output/types.d.ts +53 -0
- package/dist/cli/output/types.d.ts.map +1 -0
- package/dist/cli/output/types.js +14 -0
- package/dist/cli/output/types.js.map +1 -0
- package/dist/cli/output/wasm-fallback.d.ts +13 -0
- package/dist/cli/output/wasm-fallback.d.ts.map +1 -0
- package/dist/cli/output/wasm-fallback.js +92 -0
- package/dist/cli/output/wasm-fallback.js.map +1 -0
- package/dist/cli/tree-sitter-check.d.ts +6 -1
- package/dist/cli/tree-sitter-check.d.ts.map +1 -1
- package/dist/cli/tree-sitter-check.js +23 -1
- package/dist/cli/tree-sitter-check.js.map +1 -1
- package/dist/infrastructure/storage/adapters/SQLiteStorage.d.ts.map +1 -1
- package/dist/infrastructure/storage/adapters/SQLiteStorage.js +2 -2
- package/dist/infrastructure/storage/adapters/SQLiteStorage.js.map +1 -1
- package/dist/infrastructure/storage/adapters/sqlite-loader.d.ts +23 -0
- package/dist/infrastructure/storage/adapters/sqlite-loader.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/sqlite-loader.js +210 -0
- package/dist/infrastructure/storage/adapters/sqlite-loader.js.map +1 -0
- package/dist/orchestrator/types.d.ts +2 -0
- package/dist/orchestrator/types.d.ts.map +1 -1
- package/dist/orchestrator/types.js.map +1 -1
- package/dist/parser/implementations/tree-sitter-loader.d.ts +16 -0
- package/dist/parser/implementations/tree-sitter-loader.d.ts.map +1 -0
- package/dist/parser/implementations/tree-sitter-loader.js +105 -0
- package/dist/parser/implementations/tree-sitter-loader.js.map +1 -0
- package/dist/parser/implementations/tree-sitter-parser.d.ts +3 -0
- package/dist/parser/implementations/tree-sitter-parser.d.ts.map +1 -1
- package/dist/parser/implementations/tree-sitter-parser.js +8 -3
- package/dist/parser/implementations/tree-sitter-parser.js.map +1 -1
- package/dist/server/mcp/schema-adapter.d.ts +45 -0
- package/dist/server/mcp/schema-adapter.d.ts.map +1 -0
- package/dist/server/mcp/schema-adapter.js +290 -0
- package/dist/server/mcp/schema-adapter.js.map +1 -0
- package/dist/server/mcp/server.d.ts.map +1 -1
- package/dist/server/mcp/server.js +32 -2
- package/dist/server/mcp/server.js.map +1 -1
- package/docs/AI_ASSISTANT_SETUP.md +169 -12
- package/docs/README.md +40 -1
- package/docs/SETUP_GUIDE.md +11 -14
- package/docs/ai-guide/COMMANDS.md +68 -10
- package/docs/ai-guide/INTEGRATION.md +77 -10
- package/docs/ai-guide/OUTPUT.md +295 -2
- package/docs/ai-guide/PROMPTS.md +2 -2
- package/docs/ai-guide/QUICKSTART.md +28 -1
- package/docs/ai-guide/README.md +2 -2
- package/docs/archive/ideation/2026-04-15-executable-architecture-constitution-ideation-archive.md +70 -0
- package/docs/archive/ideation/2026-04-20-mycodemap-init-enhancements-ideation-archive.md +109 -0
- package/docs/archive/ideation/2026-04-22-rules-entry-docs-optimization-consolidated-ideation-archive.md +54 -0
- package/docs/ideation/2026-04-15-executable-architecture-constitution-ideation.md +10 -22
- package/docs/ideation/2026-04-20-mycodemap-init-enhancements-ideation.md +15 -60
- package/docs/ideation/2026-04-22-rules-entry-docs-optimization-consolidated-ideation.md +47 -52
- package/docs/ideation/2026-04-29-ux-install-agent-experience-ideation.md +256 -0
- package/docs/plans/2026-04-30-install-guide-and-repo-analyzer-design.md +394 -0
- package/docs/rules/README.md +1 -0
- package/docs/rules/architecture-guardrails.md +2 -1
- package/docs/rules/engineering-with-codex-openai.md +1 -1
- package/docs/rules/harness.md +106 -0
- package/docs/rules/pre-release-checklist.md +28 -0
- package/docs/rules/testing.md +51 -0
- package/examples/claude/skills/mycodemap-repo-analyzer/SKILL.md +294 -0
- package/examples/claude/skills/mycodemap-repo-analyzer/references/analysis-guide.md +166 -0
- package/examples/claude/skills/mycodemap-repo-analyzer/references/module-analysis-guide.md +150 -0
- package/package.json +7 -4
- package/scripts/sync-analyze-docs.js +2 -2
- package/scripts/validate-docs.js +113 -16
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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,
|
|
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
|
-
*
|
|
69
|
+
* 统一命令 action 包装器:tree-sitter 检查 + 集中式错误处理 + suggestion 自动修复
|
|
56
70
|
*/
|
|
57
|
-
function
|
|
58
|
-
return async (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
71
|
+
async function createActionHandler(commandName, action) {
|
|
72
|
+
return async (...args) => {
|
|
73
|
+
try {
|
|
74
|
+
if (commandRequiresTreeSitter(commandName)) {
|
|
75
|
+
await validateTreeSitterAsync();
|
|
62
76
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,kEAAkE;AAClE,6BAA6B;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,yBAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|