leadcode 0.1.2 → 0.2.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/dist/i18n/en.d.ts +3 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +368 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/fr.d.ts +3 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +368 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/index.d.ts +6 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +15 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/types.d.ts +355 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +2 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/index.js +75 -38
- package/dist/index.js.map +1 -1
- package/dist/templates/claude-md.d.ts +2 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +115 -106
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/tools/generate-claude-md.d.ts.map +1 -1
- package/dist/tools/generate-claude-md.js +12 -4
- package/dist/tools/generate-claude-md.js.map +1 -1
- package/dist/tools/suggest.d.ts.map +1 -1
- package/dist/tools/suggest.js +47 -230
- package/dist/tools/suggest.js.map +1 -1
- package/dist/tools/update-claude-md.d.ts.map +1 -1
- package/dist/tools/update-claude-md.js +25 -6
- package/dist/tools/update-claude-md.js.map +1 -1
- package/dist/tools/validate-claude-md.d.ts.map +1 -1
- package/dist/tools/validate-claude-md.js +25 -18
- package/dist/tools/validate-claude-md.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@ import { analyzeDependencies } from "../analyzers/dependencies.js";
|
|
|
5
5
|
import { analyzeStructure } from "../analyzers/structure.js";
|
|
6
6
|
import { detectFramework, detectStack } from "../analyzers/detection.js";
|
|
7
7
|
import { getConventions, getActiveCrossRefs, detectGaps, } from "../rules/index.js";
|
|
8
|
+
import { getMessages, interpolate } from "../i18n/index.js";
|
|
8
9
|
export function registerValidateClaudeMd(server) {
|
|
9
10
|
server.registerTool("validate-claude-md", {
|
|
10
11
|
title: "Validate CLAUDE.md",
|
|
@@ -13,9 +14,15 @@ export function registerValidateClaudeMd(server) {
|
|
|
13
14
|
projectPath: z
|
|
14
15
|
.string()
|
|
15
16
|
.describe("Absolute path to the project root directory"),
|
|
17
|
+
language: z
|
|
18
|
+
.enum(["en", "fr"])
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Output language for validation messages (default: en)"),
|
|
16
21
|
},
|
|
17
|
-
}, async ({ projectPath }) => {
|
|
22
|
+
}, async ({ projectPath, language }) => {
|
|
18
23
|
try {
|
|
24
|
+
const locale = language ?? "en";
|
|
25
|
+
const msg = getMessages(locale);
|
|
19
26
|
const claudeMdPath = join(projectPath, "CLAUDE.md");
|
|
20
27
|
try {
|
|
21
28
|
await stat(claudeMdPath);
|
|
@@ -23,7 +30,7 @@ export function registerValidateClaudeMd(server) {
|
|
|
23
30
|
catch {
|
|
24
31
|
return {
|
|
25
32
|
isError: true,
|
|
26
|
-
content: [{ type: "text", text:
|
|
33
|
+
content: [{ type: "text", text: interpolate(msg.validation.noClaudeMd, { path: claudeMdPath }) }],
|
|
27
34
|
};
|
|
28
35
|
}
|
|
29
36
|
const claudeMd = await readFile(claudeMdPath, "utf-8");
|
|
@@ -51,28 +58,28 @@ export function registerValidateClaudeMd(server) {
|
|
|
51
58
|
drifts.push({
|
|
52
59
|
type: "outdated",
|
|
53
60
|
section: "Stack",
|
|
54
|
-
message:
|
|
61
|
+
message: interpolate(msg.validation.frameworkVersionOutdated, { version: framework.version }),
|
|
55
62
|
});
|
|
56
63
|
}
|
|
57
64
|
}
|
|
58
65
|
// Check for new techs not mentioned
|
|
59
66
|
const techFields = [
|
|
60
|
-
[
|
|
61
|
-
[
|
|
62
|
-
[
|
|
63
|
-
[
|
|
64
|
-
[
|
|
65
|
-
[
|
|
66
|
-
[
|
|
67
|
-
[
|
|
68
|
-
[
|
|
67
|
+
[msg.templates.stackLabels.orm, detected.orm],
|
|
68
|
+
[msg.templates.stackLabels.auth, detected.auth],
|
|
69
|
+
[msg.templates.stackLabels.validation, detected.validation],
|
|
70
|
+
[msg.templates.stackLabels.css, detected.css],
|
|
71
|
+
[msg.templates.stackLabels.testing, detected.testing],
|
|
72
|
+
[msg.templates.stackLabels.i18n, detected.i18n],
|
|
73
|
+
[msg.templates.stackLabels.payments, detected.payments],
|
|
74
|
+
[msg.templates.stackLabels.stateManagement, detected.stateManagement],
|
|
75
|
+
[msg.templates.stackLabels.uiComponents, detected.uiComponents],
|
|
69
76
|
];
|
|
70
77
|
for (const [label, value] of techFields) {
|
|
71
78
|
if (value && !claudeMd.toLowerCase().includes(value.toLowerCase())) {
|
|
72
79
|
drifts.push({
|
|
73
80
|
type: "missing",
|
|
74
81
|
section: "Stack",
|
|
75
|
-
message:
|
|
82
|
+
message: interpolate(msg.validation.techMissing, { label, value }),
|
|
76
83
|
});
|
|
77
84
|
}
|
|
78
85
|
}
|
|
@@ -83,7 +90,7 @@ export function registerValidateClaudeMd(server) {
|
|
|
83
90
|
drifts.push({
|
|
84
91
|
type: "missing",
|
|
85
92
|
section: "Conventions",
|
|
86
|
-
message:
|
|
93
|
+
message: interpolate(msg.validation.conventionMissing, { description: conv.description }),
|
|
87
94
|
});
|
|
88
95
|
}
|
|
89
96
|
}
|
|
@@ -95,7 +102,7 @@ export function registerValidateClaudeMd(server) {
|
|
|
95
102
|
drifts.push({
|
|
96
103
|
type: "missing",
|
|
97
104
|
section: "Cross-Stack Rules",
|
|
98
|
-
message:
|
|
105
|
+
message: interpolate(msg.validation.crossStackMissing, { combo }),
|
|
99
106
|
});
|
|
100
107
|
}
|
|
101
108
|
}
|
|
@@ -106,7 +113,7 @@ export function registerValidateClaudeMd(server) {
|
|
|
106
113
|
drifts.push({
|
|
107
114
|
type: "missing",
|
|
108
115
|
section: "Gaps",
|
|
109
|
-
message:
|
|
116
|
+
message: interpolate(msg.validation.gapStillExists, { message: gap.message }),
|
|
110
117
|
});
|
|
111
118
|
}
|
|
112
119
|
return {
|
|
@@ -118,8 +125,8 @@ export function registerValidateClaudeMd(server) {
|
|
|
118
125
|
drifts,
|
|
119
126
|
total: drifts.length,
|
|
120
127
|
summary: drifts.length === 0
|
|
121
|
-
?
|
|
122
|
-
:
|
|
128
|
+
? msg.validation.inSync
|
|
129
|
+
: interpolate(msg.validation.driftsFound, { count: drifts.length }),
|
|
123
130
|
}, null, 2),
|
|
124
131
|
},
|
|
125
132
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-claude-md.js","sourceRoot":"","sources":["../../src/tools/validate-claude-md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EACL,cAAc,EAEd,kBAAkB,EAClB,UAAU,GACX,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"validate-claude-md.js","sourceRoot":"","sources":["../../src/tools/validate-claude-md.ts"],"names":[],"mappings":"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"}
|