leadcode 0.2.1 → 1.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 (105) hide show
  1. package/dist/analyzers/detection.d.ts.map +1 -1
  2. package/dist/analyzers/detection.js +55 -5
  3. package/dist/analyzers/detection.js.map +1 -1
  4. package/dist/context7/client.d.ts +17 -0
  5. package/dist/context7/client.d.ts.map +1 -0
  6. package/dist/context7/client.js +82 -0
  7. package/dist/context7/client.js.map +1 -0
  8. package/dist/context7/index.d.ts +5 -0
  9. package/dist/context7/index.d.ts.map +1 -0
  10. package/dist/context7/index.js +3 -0
  11. package/dist/context7/index.js.map +1 -0
  12. package/dist/context7/queries.d.ts +11 -0
  13. package/dist/context7/queries.d.ts.map +1 -0
  14. package/dist/context7/queries.js +229 -0
  15. package/dist/context7/queries.js.map +1 -0
  16. package/dist/i18n/en.d.ts.map +1 -1
  17. package/dist/i18n/en.js +3 -242
  18. package/dist/i18n/en.js.map +1 -1
  19. package/dist/i18n/fr.d.ts.map +1 -1
  20. package/dist/i18n/fr.js +21 -260
  21. package/dist/i18n/fr.js.map +1 -1
  22. package/dist/i18n/types.d.ts +2 -232
  23. package/dist/i18n/types.d.ts.map +1 -1
  24. package/dist/index.js +13 -19
  25. package/dist/index.js.map +1 -1
  26. package/dist/templates/claude-md.d.ts +3 -2
  27. package/dist/templates/claude-md.d.ts.map +1 -1
  28. package/dist/templates/claude-md.js +97 -65
  29. package/dist/templates/claude-md.js.map +1 -1
  30. package/dist/tools/fetch-docs.d.ts +13 -0
  31. package/dist/tools/fetch-docs.d.ts.map +1 -0
  32. package/dist/tools/fetch-docs.js +141 -0
  33. package/dist/tools/fetch-docs.js.map +1 -0
  34. package/dist/tools/generate-claude-md.d.ts.map +1 -1
  35. package/dist/tools/generate-claude-md.js +12 -12
  36. package/dist/tools/generate-claude-md.js.map +1 -1
  37. package/dist/tools/update-claude-md.d.ts.map +1 -1
  38. package/dist/tools/update-claude-md.js +63 -11
  39. package/dist/tools/update-claude-md.js.map +1 -1
  40. package/dist/tools/validate-claude-md.d.ts.map +1 -1
  41. package/dist/tools/validate-claude-md.js +10 -48
  42. package/dist/tools/validate-claude-md.js.map +1 -1
  43. package/dist/types.d.ts +2 -43
  44. package/dist/types.d.ts.map +1 -1
  45. package/package.json +1 -1
  46. package/dist/rules/auth.d.ts +0 -3
  47. package/dist/rules/auth.d.ts.map +0 -1
  48. package/dist/rules/auth.js +0 -48
  49. package/dist/rules/auth.js.map +0 -1
  50. package/dist/rules/cross-stack.d.ts +0 -3
  51. package/dist/rules/cross-stack.d.ts.map +0 -1
  52. package/dist/rules/cross-stack.js +0 -320
  53. package/dist/rules/cross-stack.js.map +0 -1
  54. package/dist/rules/drizzle.d.ts +0 -3
  55. package/dist/rules/drizzle.d.ts.map +0 -1
  56. package/dist/rules/drizzle.js +0 -43
  57. package/dist/rules/drizzle.js.map +0 -1
  58. package/dist/rules/index.d.ts +0 -7
  59. package/dist/rules/index.d.ts.map +0 -1
  60. package/dist/rules/index.js +0 -104
  61. package/dist/rules/index.js.map +0 -1
  62. package/dist/rules/nextjs.d.ts +0 -4
  63. package/dist/rules/nextjs.d.ts.map +0 -1
  64. package/dist/rules/nextjs.js +0 -86
  65. package/dist/rules/nextjs.js.map +0 -1
  66. package/dist/rules/node.d.ts +0 -3
  67. package/dist/rules/node.d.ts.map +0 -1
  68. package/dist/rules/node.js +0 -61
  69. package/dist/rules/node.js.map +0 -1
  70. package/dist/rules/prisma.d.ts +0 -3
  71. package/dist/rules/prisma.d.ts.map +0 -1
  72. package/dist/rules/prisma.js +0 -44
  73. package/dist/rules/prisma.js.map +0 -1
  74. package/dist/rules/react.d.ts +0 -3
  75. package/dist/rules/react.d.ts.map +0 -1
  76. package/dist/rules/react.js +0 -58
  77. package/dist/rules/react.js.map +0 -1
  78. package/dist/rules/state.d.ts +0 -3
  79. package/dist/rules/state.d.ts.map +0 -1
  80. package/dist/rules/state.js +0 -54
  81. package/dist/rules/state.js.map +0 -1
  82. package/dist/rules/tailwind.d.ts +0 -3
  83. package/dist/rules/tailwind.d.ts.map +0 -1
  84. package/dist/rules/tailwind.js +0 -41
  85. package/dist/rules/tailwind.js.map +0 -1
  86. package/dist/rules/trpc.d.ts +0 -3
  87. package/dist/rules/trpc.d.ts.map +0 -1
  88. package/dist/rules/trpc.js +0 -35
  89. package/dist/rules/trpc.js.map +0 -1
  90. package/dist/rules/typescript.d.ts +0 -3
  91. package/dist/rules/typescript.d.ts.map +0 -1
  92. package/dist/rules/typescript.js +0 -54
  93. package/dist/rules/typescript.js.map +0 -1
  94. package/dist/rules/validation.d.ts +0 -3
  95. package/dist/rules/validation.d.ts.map +0 -1
  96. package/dist/rules/validation.js +0 -38
  97. package/dist/rules/validation.js.map +0 -1
  98. package/dist/tools/detect-gaps.d.ts +0 -3
  99. package/dist/tools/detect-gaps.d.ts.map +0 -1
  100. package/dist/tools/detect-gaps.js +0 -34
  101. package/dist/tools/detect-gaps.js.map +0 -1
  102. package/dist/tools/suggest.d.ts +0 -3
  103. package/dist/tools/suggest.d.ts.map +0 -1
  104. package/dist/tools/suggest.js +0 -99
  105. package/dist/tools/suggest.js.map +0 -1
@@ -1,34 +0,0 @@
1
- import * as z from "zod";
2
- import { detectGaps } from "../rules/index.js";
3
- export function registerDetectGaps(server) {
4
- server.registerTool("detect-gaps", {
5
- title: "Detect Gaps",
6
- description: "Analyzes a repo analysis result and identifies structural gaps: missing error handling, no validation, no test framework, missing patterns, etc. Returns gaps with severity levels.",
7
- inputSchema: {
8
- analysis: z
9
- .string()
10
- .describe("JSON string of the RepoAnalysis object (output of analyze-repo)"),
11
- },
12
- }, async ({ analysis: analysisStr }) => {
13
- try {
14
- const analysis = JSON.parse(analysisStr);
15
- const gaps = detectGaps(analysis);
16
- return {
17
- content: [
18
- {
19
- type: "text",
20
- text: JSON.stringify({ gaps, total: gaps.length }, null, 2),
21
- },
22
- ],
23
- };
24
- }
25
- catch (err) {
26
- const message = err instanceof Error ? err.message : String(err);
27
- return {
28
- isError: true,
29
- content: [{ type: "text", text: `detect-gaps failed: ${message}` }],
30
- };
31
- }
32
- });
33
- }
34
- //# sourceMappingURL=detect-gaps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detect-gaps.js","sourceRoot":"","sources":["../../src/tools/detect-gaps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,qLAAqL;QACvL,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;SAC/E;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAiB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAElC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC5D;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,uBAAuB,OAAO,EAAE,EAAE,CAAC;aAC7E,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function registerSuggest(server: McpServer): void;
3
- //# sourceMappingURL=suggest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/tools/suggest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8EzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+BvD"}
@@ -1,99 +0,0 @@
1
- import * as z from "zod";
2
- import { getMessages } from "../i18n/index.js";
3
- function opt(o, level) {
4
- return { level, description: o.description, pros: o.pros, cons: o.cons, claudeImpact: o.claudeImpact };
5
- }
6
- function buildSuggestions(analysis, gaps) {
7
- const m = getMessages("en").suggestions;
8
- const suggestions = [];
9
- for (const gap of gaps) {
10
- switch (gap.category) {
11
- case "testing":
12
- suggestions.push({
13
- topic: m.testing.topic,
14
- options: [opt(m.testing.simple, "simple"), opt(m.testing.clean, "clean"), opt(m.testing.scalable, "scalable")],
15
- });
16
- break;
17
- case "input-validation":
18
- suggestions.push({ topic: m.inputValidation.topic, options: [opt(m.inputValidation.simple, "simple"), opt(m.inputValidation.clean, "clean")] });
19
- break;
20
- case "error-handling":
21
- suggestions.push({ topic: m.errorHandling.topic, options: [opt(m.errorHandling.simple, "simple"), opt(m.errorHandling.clean, "clean")] });
22
- break;
23
- case "shared-schemas":
24
- suggestions.push({ topic: m.schemaOrg.topic, options: [opt(m.schemaOrg.simple, "simple"), opt(m.schemaOrg.clean, "clean")] });
25
- break;
26
- case "component-structure":
27
- suggestions.push({ topic: m.componentStructure.topic, options: [opt(m.componentStructure.simple, "simple"), opt(m.componentStructure.clean, "clean")] });
28
- break;
29
- case "auth-middleware":
30
- suggestions.push({ topic: m.authMiddleware.topic, options: [opt(m.authMiddleware.simple, "simple"), opt(m.authMiddleware.clean, "clean")] });
31
- break;
32
- case "loading-states":
33
- suggestions.push({ topic: m.loadingStates.topic, options: [opt(m.loadingStates.simple, "simple"), opt(m.loadingStates.clean, "clean")] });
34
- break;
35
- case "metadata":
36
- suggestions.push({ topic: m.metadata.topic, options: [opt(m.metadata.simple, "simple"), opt(m.metadata.clean, "clean")] });
37
- break;
38
- case "prisma-client-singleton":
39
- suggestions.push({ topic: m.prismaClient.topic, options: [opt(m.prismaClient.simple, "simple")] });
40
- break;
41
- case "auth-session":
42
- suggestions.push({ topic: m.authSession.topic, options: [opt(m.authSession.simple, "simple"), opt(m.authSession.clean, "clean")] });
43
- break;
44
- case "env-validation":
45
- suggestions.push({ topic: m.envValidation.topic, options: [opt(m.envValidation.simple, "simple"), opt(m.envValidation.clean, "clean")] });
46
- break;
47
- case "types-dir":
48
- suggestions.push({ topic: m.typesDir.topic, options: [opt(m.typesDir.simple, "simple")] });
49
- break;
50
- case "store-organization":
51
- suggestions.push({ topic: m.storeOrg.topic, options: [opt(m.storeOrg.simple, "simple")] });
52
- break;
53
- case "drizzle-schema-org":
54
- suggestions.push({ topic: m.drizzleSchema.topic, options: [opt(m.drizzleSchema.simple, "simple"), opt(m.drizzleSchema.clean, "clean")] });
55
- break;
56
- default:
57
- suggestions.push({
58
- topic: gap.message,
59
- options: [{
60
- level: "simple",
61
- description: `Address: ${gap.message}`,
62
- pros: m.genericPros,
63
- cons: m.genericCons,
64
- claudeImpact: m.genericClaudeImpact,
65
- }],
66
- });
67
- break;
68
- }
69
- }
70
- return suggestions;
71
- }
72
- export function registerSuggest(server) {
73
- server.registerTool("suggest-conventions", {
74
- title: "Suggest Conventions",
75
- description: "Given a repo analysis and detected gaps, proposes structured options (simple / clean / scalable) for each gap. Each option includes pros, cons, and impact on Claude Code behavior.",
76
- inputSchema: {
77
- analysis: z.string().describe("JSON string of RepoAnalysis"),
78
- gaps: z.string().describe("JSON string of gaps array (output of detect-gaps)"),
79
- },
80
- }, async ({ analysis: analysisStr, gaps: gapsStr }) => {
81
- try {
82
- const analysis = JSON.parse(analysisStr);
83
- const parsed = JSON.parse(gapsStr);
84
- const gaps = Array.isArray(parsed) ? parsed : parsed.gaps;
85
- const suggestions = buildSuggestions(analysis, gaps);
86
- return {
87
- content: [{ type: "text", text: JSON.stringify({ suggestions }, null, 2) }],
88
- };
89
- }
90
- catch (err) {
91
- const message = err instanceof Error ? err.message : String(err);
92
- return {
93
- isError: true,
94
- content: [{ type: "text", text: `suggest-conventions failed: ${message}` }],
95
- };
96
- }
97
- });
98
- }
99
- //# sourceMappingURL=suggest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/tools/suggest.ts"],"names":[],"mappings":"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"}