leadcode 0.2.2 → 1.1.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 (110) hide show
  1. package/README.md +52 -47
  2. package/dist/analyzers/detection.d.ts.map +1 -1
  3. package/dist/analyzers/detection.js +30 -0
  4. package/dist/analyzers/detection.js.map +1 -1
  5. package/dist/context7/client.d.ts +17 -0
  6. package/dist/context7/client.d.ts.map +1 -0
  7. package/dist/context7/client.js +82 -0
  8. package/dist/context7/client.js.map +1 -0
  9. package/dist/context7/fetch-all.d.ts +13 -0
  10. package/dist/context7/fetch-all.d.ts.map +1 -0
  11. package/dist/context7/fetch-all.js +104 -0
  12. package/dist/context7/fetch-all.js.map +1 -0
  13. package/dist/context7/index.d.ts +7 -0
  14. package/dist/context7/index.d.ts.map +1 -0
  15. package/dist/context7/index.js +4 -0
  16. package/dist/context7/index.js.map +1 -0
  17. package/dist/context7/queries.d.ts +11 -0
  18. package/dist/context7/queries.d.ts.map +1 -0
  19. package/dist/context7/queries.js +229 -0
  20. package/dist/context7/queries.js.map +1 -0
  21. package/dist/i18n/en.d.ts.map +1 -1
  22. package/dist/i18n/en.js +1 -242
  23. package/dist/i18n/en.js.map +1 -1
  24. package/dist/i18n/fr.d.ts.map +1 -1
  25. package/dist/i18n/fr.js +19 -260
  26. package/dist/i18n/fr.js.map +1 -1
  27. package/dist/i18n/types.d.ts +0 -232
  28. package/dist/i18n/types.d.ts.map +1 -1
  29. package/dist/index.js +11 -19
  30. package/dist/index.js.map +1 -1
  31. package/dist/templates/claude-md.d.ts +3 -2
  32. package/dist/templates/claude-md.d.ts.map +1 -1
  33. package/dist/templates/claude-md.js +92 -67
  34. package/dist/templates/claude-md.js.map +1 -1
  35. package/dist/tools/fetch-docs.d.ts +3 -0
  36. package/dist/tools/fetch-docs.d.ts.map +1 -0
  37. package/dist/tools/fetch-docs.js +39 -0
  38. package/dist/tools/fetch-docs.js.map +1 -0
  39. package/dist/tools/generate-claude-md.d.ts.map +1 -1
  40. package/dist/tools/generate-claude-md.js +10 -11
  41. package/dist/tools/generate-claude-md.js.map +1 -1
  42. package/dist/tools/update-claude-md.d.ts.map +1 -1
  43. package/dist/tools/update-claude-md.js +9 -11
  44. package/dist/tools/update-claude-md.js.map +1 -1
  45. package/dist/tools/validate-claude-md.d.ts.map +1 -1
  46. package/dist/tools/validate-claude-md.js +10 -48
  47. package/dist/tools/validate-claude-md.js.map +1 -1
  48. package/dist/types.d.ts +0 -43
  49. package/dist/types.d.ts.map +1 -1
  50. package/package.json +1 -1
  51. package/dist/rules/auth.d.ts +0 -3
  52. package/dist/rules/auth.d.ts.map +0 -1
  53. package/dist/rules/auth.js +0 -48
  54. package/dist/rules/auth.js.map +0 -1
  55. package/dist/rules/cross-stack.d.ts +0 -3
  56. package/dist/rules/cross-stack.d.ts.map +0 -1
  57. package/dist/rules/cross-stack.js +0 -320
  58. package/dist/rules/cross-stack.js.map +0 -1
  59. package/dist/rules/drizzle.d.ts +0 -3
  60. package/dist/rules/drizzle.d.ts.map +0 -1
  61. package/dist/rules/drizzle.js +0 -43
  62. package/dist/rules/drizzle.js.map +0 -1
  63. package/dist/rules/index.d.ts +0 -7
  64. package/dist/rules/index.d.ts.map +0 -1
  65. package/dist/rules/index.js +0 -104
  66. package/dist/rules/index.js.map +0 -1
  67. package/dist/rules/nextjs.d.ts +0 -4
  68. package/dist/rules/nextjs.d.ts.map +0 -1
  69. package/dist/rules/nextjs.js +0 -86
  70. package/dist/rules/nextjs.js.map +0 -1
  71. package/dist/rules/node.d.ts +0 -3
  72. package/dist/rules/node.d.ts.map +0 -1
  73. package/dist/rules/node.js +0 -61
  74. package/dist/rules/node.js.map +0 -1
  75. package/dist/rules/prisma.d.ts +0 -3
  76. package/dist/rules/prisma.d.ts.map +0 -1
  77. package/dist/rules/prisma.js +0 -44
  78. package/dist/rules/prisma.js.map +0 -1
  79. package/dist/rules/react.d.ts +0 -3
  80. package/dist/rules/react.d.ts.map +0 -1
  81. package/dist/rules/react.js +0 -58
  82. package/dist/rules/react.js.map +0 -1
  83. package/dist/rules/state.d.ts +0 -3
  84. package/dist/rules/state.d.ts.map +0 -1
  85. package/dist/rules/state.js +0 -51
  86. package/dist/rules/state.js.map +0 -1
  87. package/dist/rules/tailwind.d.ts +0 -3
  88. package/dist/rules/tailwind.d.ts.map +0 -1
  89. package/dist/rules/tailwind.js +0 -41
  90. package/dist/rules/tailwind.js.map +0 -1
  91. package/dist/rules/trpc.d.ts +0 -3
  92. package/dist/rules/trpc.d.ts.map +0 -1
  93. package/dist/rules/trpc.js +0 -35
  94. package/dist/rules/trpc.js.map +0 -1
  95. package/dist/rules/typescript.d.ts +0 -3
  96. package/dist/rules/typescript.d.ts.map +0 -1
  97. package/dist/rules/typescript.js +0 -54
  98. package/dist/rules/typescript.js.map +0 -1
  99. package/dist/rules/validation.d.ts +0 -3
  100. package/dist/rules/validation.d.ts.map +0 -1
  101. package/dist/rules/validation.js +0 -38
  102. package/dist/rules/validation.js.map +0 -1
  103. package/dist/tools/detect-gaps.d.ts +0 -3
  104. package/dist/tools/detect-gaps.d.ts.map +0 -1
  105. package/dist/tools/detect-gaps.js +0 -34
  106. package/dist/tools/detect-gaps.js.map +0 -1
  107. package/dist/tools/suggest.d.ts +0 -3
  108. package/dist/tools/suggest.d.ts.map +0 -1
  109. package/dist/tools/suggest.js +0 -99
  110. package/dist/tools/suggest.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # LeadCode
2
2
 
3
- **Your virtual Lead Tech for Claude Code.** An MCP server that analyzes your codebase, detects structural gaps, and generates a tailored `CLAUDE.md` — so Claude Code understands your project like a senior engineer would.
3
+ **Your virtual Lead Tech for Claude Code.** An MCP server that analyzes your codebase, fetches up-to-date documentation for each detected technology via [Context7](https://context7.com), and generates a tailored `CLAUDE.md` — so Claude Code understands your project like a senior engineer would.
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/leadcode.svg)](https://www.npmjs.com/package/leadcode)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
@@ -17,34 +17,42 @@ Claude Code is powerful, but its output quality depends on context. Without clea
17
17
  - Forget auth checks on new routes
18
18
  - Use inline styles when your project uses Tailwind
19
19
 
20
- **LeadCode fixes this.** It scans your project, detects what you're using, identifies what's missing, and generates a `CLAUDE.md` file that tells Claude Code exactly how to behave in your codebase.
20
+ **LeadCode fixes this.** It scans your project, detects what you're using, fetches the latest documentation for each technology, cross-references them, and generates a `CLAUDE.md` file that tells Claude Code exactly how to behave in your codebase.
21
21
 
22
22
  ## How It Works
23
23
 
24
24
  ```
25
- Your Project ──→ LeadCode ──→ CLAUDE.md ──→ Claude Code knows your rules
25
+ Your Project ──→ LeadCode (detect stack) ──→ Context7 (fetch docs) ──→ CLAUDE.md
26
26
  ```
27
27
 
28
28
  1. **Analyze** — Scans `package.json`, directory structure, and source code patterns
29
- 2. **Detect** — Identifies your stack across 22 categories (framework, ORM, auth, CSS, testing, i18n, etc.)
30
- 3. **Find Gaps** — Detects structural issues (missing error boundaries, no test setup, no validation, etc.)
31
- 4. **Suggest** — Proposes options (simple / clean / scalable) for each gap, with pros, cons, and Claude impact
32
- 5. **Generate** — Writes a structured `CLAUDE.md` with conventions, interdictions, and cross-stack rules
29
+ 2. **Detect** — Identifies your stack across 25+ categories (framework, ORM, auth, CSS, testing, i18n, etc.)
30
+ 3. **Fetch Docs** — Queries Context7 API for up-to-date documentation of each detected technology, including cross-technology best practices (e.g., "how to use Prisma with Next.js App Router")
31
+ 4. **Generate** — Writes a structured `CLAUDE.md` with real, version-specific conventions from official docs
33
32
 
34
33
  ## Installation
35
34
 
36
- LeadCode is an MCP server it's used through Claude Code, not as a standalone CLI.
35
+ LeadCode requires **two MCP servers**: LeadCode itself and Context7 (for documentation fetching).
37
36
 
38
- **One command:**
37
+ **Two commands:**
39
38
 
40
39
  ```bash
41
40
  claude mcp add --scope project leadcode -- npx -y leadcode@latest
41
+ claude mcp add --scope project context7 -- npx -y @upstash/context7-mcp@latest
42
42
  ```
43
43
 
44
- That's it. Restart Claude Code and LeadCode's tools are available.
44
+ Restart Claude Code and you're ready.
45
45
 
46
46
  > Use `--scope user` instead of `--scope project` to install globally across all your projects.
47
47
 
48
+ **Optional:** Set a Context7 API key for higher rate limits (free tier works without it):
49
+
50
+ ```bash
51
+ export CONTEXT7_API_KEY=your_key_here
52
+ ```
53
+
54
+ Get a key at [context7.com/dashboard](https://context7.com/dashboard).
55
+
48
56
  ## Usage
49
57
 
50
58
  ### Quick Start (Recommended)
@@ -55,7 +63,7 @@ Use the built-in prompt in Claude Code:
55
63
  Use the setup-project prompt with /path/to/your/project
56
64
  ```
57
65
 
58
- This walks through the full workflow: analyze → detect gapssuggest fixes → ask your preferences → generate `CLAUDE.md`.
66
+ This walks through the full workflow: analyze → fetch docs → generate `CLAUDE.md`.
59
67
 
60
68
  ### Manual Tool Usage
61
69
 
@@ -68,50 +76,47 @@ Scans a project and returns structured facts — framework, dependencies, direct
68
76
  Call analyze-repo with projectPath: /path/to/project
69
77
  ```
70
78
 
71
- #### `detect-gaps`
72
- Takes the analysis output and identifies structural gaps (missing error handling, no tests, no validation schemas, etc.).
73
-
74
- #### `suggest-conventions`
75
- Proposes options for each gap. Each suggestion includes:
76
- - **Simple** — Minimal setup, quick wins
77
- - **Clean** — Best practices, good DX
78
- - **Scalable** — Full setup for large projects
79
+ #### `fetch-docs`
80
+ Takes the analysis output and fetches up-to-date documentation from Context7 for each detected technology. Also fetches cross-technology docs (e.g., Next.js + Prisma best practices).
79
81
 
80
82
  #### `generate-claude-md`
81
- Generates and writes `CLAUDE.md` to the project root based on the analysis and your choices.
83
+ Generates and writes `CLAUDE.md` to the project root based on the analysis and fetched documentation.
82
84
 
83
85
  #### `validate-claude-md`
84
86
  Checks if an existing `CLAUDE.md` is still in sync with the project. Detects drifts after adding dependencies or changing structure.
85
87
 
86
88
  #### `update-claude-md`
87
- Re-analyzes and regenerates `CLAUDE.md` while preserving your choices from the "Project Decisions" section.
89
+ Re-analyzes the project, re-fetches documentation, and regenerates `CLAUDE.md` while preserving your choices from the "Project Decisions" section.
88
90
 
89
91
  ## What Gets Detected
90
92
 
91
93
  ### Frameworks
92
- Next.js (App/Pages Router), Nuxt, Remix, Astro, SvelteKit, SolidStart, Vite+React, Express, Fastify, Hono
94
+ Next.js (App/Pages Router), Nuxt, Remix, Astro, SvelteKit, SolidStart, Vite+React, React, Express, Fastify, Hono
93
95
 
94
- ### Stack (22 categories)
96
+ ### Stack (25+ categories)
95
97
 
96
98
  | Category | Examples |
97
99
  |----------|----------|
98
- | ORM | Prisma, Drizzle, TypeORM, Mongoose, Kysely |
99
- | Auth | NextAuth, Clerk, Lucia, Supabase Auth, Auth0, Kinde |
100
- | Validation | Zod, Yup, Joi, Valibot |
101
- | CSS | Tailwind, styled-components, Emotion, PandaCSS |
102
- | UI Components | shadcn (auto-detected), Radix, MUI, Chakra, Headless UI |
100
+ | ORM | Prisma, Drizzle, TypeORM, MikroORM, Mongoose, Kysely, Sequelize |
101
+ | Auth | NextAuth, Clerk, Lucia, Supabase Auth, Auth0, Kinde, Better Auth |
102
+ | Validation | Zod, Yup, Joi, Valibot, ArkType |
103
+ | CSS | Tailwind, Chakra, MUI, styled-components, Emotion, Panda, Mantine, Ant Design |
104
+ | UI Components | shadcn (auto-detected), Radix, Headless UI, NextUI, Tremor |
103
105
  | Testing | Vitest, Jest, Playwright, Cypress |
104
- | State | Zustand, Redux, Jotai, Valtio, XState |
105
- | i18n | next-intl, i18next |
106
+ | State | Zustand, Redux, Jotai, Valtio, XState, Recoil, MobX |
107
+ | Data Fetching | TanStack Query, SWR |
108
+ | Forms | React Hook Form, Formik, TanStack Form |
109
+ | i18n | next-intl, i18next, Lingui, react-intl |
106
110
  | Payments | Stripe, LemonSqueezy |
107
- | CMS | Contentlayer, MDX, Sanity, Notion |
108
- | Email | Resend, Nodemailer, SendGrid |
111
+ | CMS | Contentlayer, MDX, Sanity, Notion, Contentful, Strapi |
112
+ | Email | Resend, Nodemailer, SendGrid, Postmark, React Email |
109
113
  | File Upload | UploadThing, Vercel Blob, Multer, S3 |
110
114
  | Realtime | Socket.io, Pusher, Ably |
111
115
  | Jobs | BullMQ, Inngest, Trigger.dev |
112
- | Database | PostgreSQL, MySQL, SQLite, MongoDB, Supabase |
116
+ | Database | PostgreSQL, MySQL, SQLite, MongoDB, Supabase, PlanetScale, Redis |
117
+ | API Style | tRPC, GraphQL |
113
118
  | Monorepo | Turborepo, Nx, Lerna |
114
- | Deployment | Vercel, Netlify, Docker, Fly.io, Railway |
119
+ | Deployment | Vercel |
115
120
  | Runtime | Node, Bun, Deno |
116
121
 
117
122
  ### Code Patterns
@@ -124,29 +129,29 @@ Next.js (App/Pages Router), Nuxt, Remix, Astro, SvelteKit, SolidStart, Vite+Reac
124
129
 
125
130
  ## What Gets Generated
126
131
 
127
- The `CLAUDE.md` includes up to 11 sections, all tailored to your stack:
132
+ The `CLAUDE.md` includes sections tailored to your stack:
128
133
 
129
134
  1. **Architecture Overview** — Framework, data layer, auth, project size
130
- 2. **Stack** — All detected technologies
135
+ 2. **Stack** — All detected technologies with versions
131
136
  3. **Project Structure** — Directories, special files
132
137
  4. **Available Scripts** — `npm run` commands
133
- 5. **File & Naming Conventions** — kebab-case, PascalCase rules
134
- 6. **Import Ordering** — Node builtins external internal relative types
135
- 7. **Conventions** — Stack-specific rules Claude must follow
136
- 8. **Cross-Stack Rules** — Rules for technology combinations (e.g., Next.js + Prisma)
137
- 9. **Interdictions** — Things Claude must never do
138
- 10. **Existing Code Patterns** — Patterns detected in your code to respect
139
- 11. **Claude Code Instructions** — Dynamic instructions based on your stack
138
+ 5. **Per-Technology Conventions** — Up-to-date best practices from official docs (via Context7)
139
+ 6. **Cross-Stack Rules** — Best practices for technology combinations (e.g., Next.js + Prisma, Zod + react-hook-form)
140
+ 7. **File & Naming Conventions** — kebab-case, PascalCase rules
141
+ 8. **Import Ordering** — Node builtins external internal relative → types
142
+ 9. **Existing Code Patterns** — Patterns detected in your code to respect
143
+ 10. **Claude Code Instructions** — Dynamic instructions based on your stack
140
144
 
141
- ### Cross-Stack Rules (18 combinations)
145
+ ### Cross-Technology Documentation
142
146
 
143
- LeadCode generates specific rules for technology pairs:
147
+ LeadCode fetches specific documentation for technology pairs detected in your project:
144
148
 
145
- `next + prisma` · `next + drizzle` · `next + next-auth` · `next + clerk` · `next + supabase-auth` · `next + trpc` · `next + stripe` · `next + next-intl` · `next + react-query` · `next + zod` · `prisma + next-auth` · `prisma + zod` · `trpc + zod` · `express + prisma` · `fastify + prisma` · `tailwind + shadcn` · `tailwind + react`
149
+ `next + prisma` · `next + drizzle` · `next + next-auth` · `next + clerk` · `next + supabase-auth` · `next + zod` · `next + stripe` · `next + react-query` · `next + next-intl` · `next + tailwind` · `next + shadcn` · `zod + react-hook-form` · `trpc + zod` and more.
146
150
 
147
151
  ## Requirements
148
152
 
149
153
  - **Node.js** >= 18
154
+ - **Context7 MCP server** installed alongside LeadCode
150
155
  - The target project must have a `package.json`
151
156
  - Currently optimized for JavaScript/TypeScript projects
152
157
 
@@ -156,7 +161,7 @@ LeadCode generates specific rules for technology pairs:
156
161
  - **Single package.json** — Monorepo support detects the tool but analyzes only the root
157
162
  - **No lint config reading** — Detects ESLint/Biome but doesn't parse their rules
158
163
  - **No CI/CD detection** — GitHub Actions, etc. are not analyzed
159
- - **No test quality analysis** — Detects the runner but doesn't evaluate test coverage
164
+ - **Requires Context7** — Documentation quality depends on Context7's library coverage
160
165
 
161
166
  ## Contributing
162
167
 
@@ -1 +1 @@
1
- {"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../src/analyzers/detection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/E,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAiBnC,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,aAAa,GACvB,aAAa,GAAG,IAAI,CA+DtB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,aAAa,CAoNpE"}
1
+ {"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../src/analyzers/detection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/E,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAiBnC,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,aAAa,GACvB,aAAa,GAAG,IAAI,CA+DtB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,aAAa,CAmOpE"}
@@ -74,12 +74,16 @@ export function detectStack(deps, devDeps) {
74
74
  orm = "drizzle";
75
75
  else if ("typeorm" in all)
76
76
  orm = "typeorm";
77
+ else if ("@mikro-orm/core" in all)
78
+ orm = "mikro-orm";
77
79
  else if ("kysely" in all)
78
80
  orm = "kysely";
79
81
  else if ("mongoose" in all)
80
82
  orm = "mongoose";
81
83
  else if ("sequelize" in all)
82
84
  orm = "sequelize";
85
+ else if ("objection" in all)
86
+ orm = "objection";
83
87
  else if ("@neondatabase/serverless" in all)
84
88
  orm = "neon";
85
89
  else if ("libsql" in all || "@libsql/client" in all)
@@ -106,6 +110,12 @@ export function detectStack(deps, devDeps) {
106
110
  auth = "auth0";
107
111
  else if ("firebase-admin" in all)
108
112
  auth = "firebase";
113
+ else if ("@workos-inc/node" in all)
114
+ auth = "workos";
115
+ else if ("@descope/nextjs-sdk" in all || "@descope/react-sdk" in all)
116
+ auth = "descope";
117
+ else if ("@stytch/nextjs" in all || "@stytch/react" in all)
118
+ auth = "stytch";
109
119
  // Validation
110
120
  let validation = null;
111
121
  if ("zod" in all)
@@ -136,6 +146,10 @@ export function detectStack(deps, devDeps) {
136
146
  css = "vanilla-extract";
137
147
  else if ("unocss" in all)
138
148
  css = "unocss";
149
+ else if ("@mantine/core" in all)
150
+ css = "mantine";
151
+ else if ("antd" in all)
152
+ css = "ant-design";
139
153
  else if ("sass" in all)
140
154
  css = "sass";
141
155
  // Testing
@@ -248,6 +262,12 @@ export function detectStack(deps, devDeps) {
248
262
  database = "mongodb";
249
263
  else if ("@supabase/supabase-js" in all)
250
264
  database = "supabase";
265
+ else if ("@planetscale/database" in all)
266
+ database = "planetscale";
267
+ else if ("ioredis" in all || "@upstash/redis" in all)
268
+ database = "redis";
269
+ else if ("@vercel/postgres" in all)
270
+ database = "vercel-postgres";
251
271
  // Email
252
272
  let email = null;
253
273
  if ("resend" in all)
@@ -324,6 +344,16 @@ export function detectStack(deps, devDeps) {
324
344
  uiComponents = "headless-ui";
325
345
  else if ("@ark-ui/react" in all)
326
346
  uiComponents = "ark-ui";
347
+ else if ("@nextui-org/react" in all)
348
+ uiComponents = "nextui";
349
+ else if ("@tremor/react" in all)
350
+ uiComponents = "tremor";
351
+ else if ("primereact" in all)
352
+ uiComponents = "primereact";
353
+ else if ("react-bootstrap" in all)
354
+ uiComponents = "react-bootstrap";
355
+ else if ("flowbite-react" in all)
356
+ uiComponents = "flowbite";
327
357
  return {
328
358
  orm,
329
359
  auth,
@@ -1 +1 @@
1
- {"version":3,"file":"detection.js","sourceRoot":"","sources":["../../src/analyzers/detection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detection.js","sourceRoot":"","sources":["../../src/analyzers/detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface LibrarySearchResult {
2
+ id: string;
3
+ name: string;
4
+ description?: string;
5
+ totalSnippets: number;
6
+ trustScore?: string;
7
+ versions?: string[];
8
+ }
9
+ export interface DocSnippet {
10
+ title: string;
11
+ content: string;
12
+ source: string;
13
+ }
14
+ export declare function searchLibrary(libraryName: string, query: string): Promise<LibrarySearchResult[]>;
15
+ export declare function fetchDocs(libraryId: string, query: string): Promise<string>;
16
+ export declare function resolveAndFetch(libraryName: string, query: string): Promise<string>;
17
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/context7/client.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAiDD,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAYhC;AAED,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAOjB"}
@@ -0,0 +1,82 @@
1
+ const BASE_URL = "https://context7.com/api/v2";
2
+ const REQUEST_TIMEOUT = 15_000;
3
+ const MAX_RETRIES = 2;
4
+ function getHeaders() {
5
+ const headers = {
6
+ "Accept": "application/json",
7
+ };
8
+ const apiKey = process.env.CONTEXT7_API_KEY;
9
+ if (apiKey) {
10
+ headers["Authorization"] = `Bearer ${apiKey}`;
11
+ }
12
+ return headers;
13
+ }
14
+ async function fetchWithRetry(url, retries = MAX_RETRIES) {
15
+ for (let attempt = 0; attempt <= retries; attempt++) {
16
+ const controller = new AbortController();
17
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);
18
+ try {
19
+ const res = await fetch(url, {
20
+ headers: getHeaders(),
21
+ signal: controller.signal,
22
+ });
23
+ if (res.status === 429) {
24
+ const retryAfter = Number(res.headers.get("Retry-After") ?? "2");
25
+ if (attempt < retries) {
26
+ await new Promise((r) => setTimeout(r, retryAfter * 1000));
27
+ continue;
28
+ }
29
+ }
30
+ if (res.status === 202 && attempt < retries) {
31
+ await new Promise((r) => setTimeout(r, 2000));
32
+ continue;
33
+ }
34
+ return res;
35
+ }
36
+ catch (err) {
37
+ if (attempt === retries)
38
+ throw err;
39
+ await new Promise((r) => setTimeout(r, 1000));
40
+ }
41
+ finally {
42
+ clearTimeout(timeout);
43
+ }
44
+ }
45
+ throw new Error("Max retries exceeded");
46
+ }
47
+ export async function searchLibrary(libraryName, query) {
48
+ const params = new URLSearchParams({ libraryName, query });
49
+ const url = `${BASE_URL}/libs/search?${params}`;
50
+ try {
51
+ const res = await fetchWithRetry(url);
52
+ if (!res.ok)
53
+ return [];
54
+ const data = await res.json();
55
+ return Array.isArray(data) ? data : (data.results ?? []);
56
+ }
57
+ catch {
58
+ return [];
59
+ }
60
+ }
61
+ export async function fetchDocs(libraryId, query) {
62
+ const params = new URLSearchParams({ libraryId, query, type: "txt" });
63
+ const url = `${BASE_URL}/context?${params}`;
64
+ try {
65
+ const res = await fetchWithRetry(url);
66
+ if (!res.ok)
67
+ return "";
68
+ return await res.text();
69
+ }
70
+ catch {
71
+ return "";
72
+ }
73
+ }
74
+ export async function resolveAndFetch(libraryName, query) {
75
+ const results = await searchLibrary(libraryName, query);
76
+ if (results.length === 0)
77
+ return "";
78
+ // Pick best match: highest snippet count with good trust
79
+ const best = results.sort((a, b) => b.totalSnippets - a.totalSnippets)[0];
80
+ return fetchDocs(best.id, query);
81
+ }
82
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/context7/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { RepoAnalysis } from "../types.js";
2
+ export interface FetchedDocs {
3
+ techDocs: Record<string, string>;
4
+ crossDocs: Record<string, string>;
5
+ metadata: {
6
+ techCount: number;
7
+ snippetCount: number;
8
+ failedTechs: string[];
9
+ warning?: string;
10
+ };
11
+ }
12
+ export declare function fetchAllDocs(analysis: RepoAnalysis): Promise<FetchedDocs>;
13
+ //# sourceMappingURL=fetch-all.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-all.d.ts","sourceRoot":"","sources":["../../src/context7/fetch-all.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAiDD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA+E/E"}
@@ -0,0 +1,104 @@
1
+ import { resolveAndFetch } from "./client.js";
2
+ import { TECH_QUERIES } from "./queries.js";
3
+ /** Collect all detected tech identifiers from analysis */
4
+ function collectTechs(analysis) {
5
+ const techs = [];
6
+ if (analysis.framework) {
7
+ techs.push(analysis.framework.name);
8
+ }
9
+ const d = analysis.detected;
10
+ const fields = [
11
+ "orm", "auth", "validation", "css", "testing",
12
+ "stateManagement", "dataFetching", "formLibrary", "apiStyle",
13
+ "i18n", "payments", "realtime", "email", "cms", "jobs",
14
+ "uiComponents",
15
+ ];
16
+ for (const field of fields) {
17
+ const value = d[field];
18
+ if (typeof value === "string") {
19
+ techs.push(value);
20
+ }
21
+ }
22
+ return [...new Set(techs)];
23
+ }
24
+ /** Run promises with concurrency limit */
25
+ async function pMap(items, fn, concurrency) {
26
+ const results = [];
27
+ let index = 0;
28
+ async function next() {
29
+ while (index < items.length) {
30
+ const i = index++;
31
+ results[i] = await fn(items[i]);
32
+ }
33
+ }
34
+ const workers = Array.from({ length: Math.min(concurrency, items.length) }, () => next());
35
+ await Promise.all(workers);
36
+ return results;
37
+ }
38
+ export async function fetchAllDocs(analysis) {
39
+ const techs = collectTechs(analysis);
40
+ const techDocs = {};
41
+ const crossDocs = {};
42
+ const failedTechs = [];
43
+ let snippetCount = 0;
44
+ // Fetch per-tech docs
45
+ const techTasks = techs
46
+ .filter((t) => t in TECH_QUERIES)
47
+ .map((tech) => ({
48
+ tech,
49
+ query: TECH_QUERIES[tech],
50
+ }));
51
+ await pMap(techTasks, async ({ tech, query }) => {
52
+ const allQueries = query.queries.join(". ");
53
+ const docs = await resolveAndFetch(query.libraryName, allQueries);
54
+ if (docs) {
55
+ techDocs[tech] = docs;
56
+ snippetCount++;
57
+ }
58
+ else {
59
+ failedTechs.push(tech);
60
+ }
61
+ }, 5);
62
+ // Fetch cross-tech docs
63
+ const crossTasks = [];
64
+ for (const tech of techs) {
65
+ const mapping = TECH_QUERIES[tech];
66
+ if (!mapping?.crossQueries)
67
+ continue;
68
+ for (const [otherTech, crossQuery] of Object.entries(mapping.crossQueries)) {
69
+ if (techs.includes(otherTech)) {
70
+ const key = `${tech}+${otherTech}`;
71
+ const reverseKey = `${otherTech}+${tech}`;
72
+ if (!(reverseKey in crossDocs) && !crossTasks.some((t) => t.key === reverseKey)) {
73
+ crossTasks.push({ key, libraryName: mapping.libraryName, query: crossQuery });
74
+ }
75
+ }
76
+ }
77
+ }
78
+ await pMap(crossTasks, async ({ key, libraryName, query }) => {
79
+ const docs = await resolveAndFetch(libraryName, query);
80
+ if (docs) {
81
+ crossDocs[key] = docs;
82
+ snippetCount++;
83
+ }
84
+ }, 5);
85
+ // Track techs with no mapping at all
86
+ for (const tech of techs) {
87
+ if (!(tech in TECH_QUERIES) && !failedTechs.includes(tech)) {
88
+ failedTechs.push(tech);
89
+ }
90
+ }
91
+ return {
92
+ techDocs,
93
+ crossDocs,
94
+ metadata: {
95
+ techCount: Object.keys(techDocs).length,
96
+ snippetCount,
97
+ failedTechs,
98
+ ...(failedTechs.length > 0 && {
99
+ warning: `No documentation found for: ${failedTechs.join(", ")}`,
100
+ }),
101
+ },
102
+ };
103
+ }
104
+ //# sourceMappingURL=fetch-all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-all.js","sourceRoot":"","sources":["../../src/context7/fetch-all.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { searchLibrary, fetchDocs, resolveAndFetch } from "./client.js";
2
+ export { TECH_QUERIES } from "./queries.js";
3
+ export { fetchAllDocs } from "./fetch-all.js";
4
+ export type { LibrarySearchResult, DocSnippet } from "./client.js";
5
+ export type { TechQuery } from "./queries.js";
6
+ export type { FetchedDocs } from "./fetch-all.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context7/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { searchLibrary, fetchDocs, resolveAndFetch } from "./client.js";
2
+ export { TECH_QUERIES } from "./queries.js";
3
+ export { fetchAllDocs } from "./fetch-all.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context7/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface TechQuery {
2
+ libraryName: string;
3
+ queries: string[];
4
+ crossQueries?: Record<string, string>;
5
+ }
6
+ /**
7
+ * Maps detected tech identifiers to Context7 library names and relevant queries.
8
+ * This is NOT hardcoded rules — just "what to ask" for each technology.
9
+ */
10
+ export declare const TECH_QUERIES: Record<string, TechQuery>;
11
+ //# sourceMappingURL=queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/context7/queries.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CA8OlD,CAAC"}