aidoc-kit 0.1.0 → 0.1.2
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/README.md +59 -11
- package/dist/cli.js +164 -11
- package/dist/cli.js.map +1 -1
- package/dist/core/enricher.d.ts +20 -0
- package/dist/core/enricher.d.ts.map +1 -0
- package/dist/core/enricher.js +195 -0
- package/dist/core/enricher.js.map +1 -0
- package/dist/core/scanner.d.ts +3 -2
- package/dist/core/scanner.d.ts.map +1 -1
- package/dist/core/scanner.js +16 -6
- package/dist/core/scanner.js.map +1 -1
- package/dist/test-cascade/a.d.ts +2 -0
- package/dist/test-cascade/a.d.ts.map +1 -0
- package/dist/test-cascade/a.js +6 -0
- package/dist/test-cascade/a.js.map +1 -0
- package/dist/test-cascade/b.d.ts +2 -0
- package/dist/test-cascade/b.d.ts.map +1 -0
- package/dist/test-cascade/b.js +6 -0
- package/dist/test-cascade/b.js.map +1 -0
- package/dist/test-cascade/utils.d.ts +2 -0
- package/dist/test-cascade/utils.d.ts.map +1 -0
- package/dist/test-cascade/utils.js +6 -0
- package/dist/test-cascade/utils.js.map +1 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -138,6 +138,46 @@ Or as JSON:
|
|
|
138
138
|
}
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
+
## AI-powered context enrichment
|
|
142
|
+
|
|
143
|
+
Once `scan --write` has generated the base `@ai-*` blocks, run `enrich` to replace the generic `[GÉNÉRÉ]` descriptions with real LLM-written context:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npx aidoc-kit enrich --provider gemini --model gemini-2.0-flash --key YOUR_KEY
|
|
147
|
+
npx aidoc-kit enrich --provider openai --model gpt-4o-mini --key sk-...
|
|
148
|
+
npx aidoc-kit enrich --provider anthropic --model claude-3-5-haiku-20241022 --key sk-ant-...
|
|
149
|
+
npx aidoc-kit enrich --provider groq --model llama-3.1-8b-instant --key gsk_...
|
|
150
|
+
npx aidoc-kit enrich --provider mistral --model mistral-small-latest --key ...
|
|
151
|
+
npx aidoc-kit enrich --provider ollama --model llama3.2 # no key needed — fully local
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Use `--dry` to preview which files would be enriched without making any changes.
|
|
155
|
+
|
|
156
|
+
You can also set the default provider in `aidoc.config.js` to avoid repeating flags:
|
|
157
|
+
|
|
158
|
+
```js
|
|
159
|
+
module.exports = {
|
|
160
|
+
enrich: {
|
|
161
|
+
provider: 'gemini',
|
|
162
|
+
model: 'gemini-2.0-flash',
|
|
163
|
+
key: process.env.GEMINI_API_KEY, // never hardcode keys
|
|
164
|
+
},
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Choosing your LLM for enrich
|
|
169
|
+
|
|
170
|
+
| Provider | Recommended model | Cost | Speed | Best for |
|
|
171
|
+
|----------|-------------------|------|-------|----------|
|
|
172
|
+
| Ollama | llama3.2 | Free | Medium | Local dev, privacy, confidential code |
|
|
173
|
+
| Groq | llama-3.1-8b-instant | Very low | Ultra fast | CI/CD, large projects |
|
|
174
|
+
| Gemini | gemini-2.0-flash-lite | Very low | Fast | Daily use |
|
|
175
|
+
| Anthropic | claude-3-5-haiku | Low | Fast | Best code quality |
|
|
176
|
+
| Mistral | mistral-small-latest | Low | Fast | European data residency |
|
|
177
|
+
| OpenAI | gpt-4o-mini | Low | Fast | General use |
|
|
178
|
+
|
|
179
|
+
> **Privacy note:** Ollama runs entirely on your machine — no code ever leaves your network. This makes it the right choice for client projects or proprietary codebases.
|
|
180
|
+
|
|
141
181
|
## Large file chunking
|
|
142
182
|
|
|
143
183
|
AI agents often truncate large files — reading only the first 50-100 lines of a 500-line file. `aidoc-kit chunk` solves this by pre-summarising every file over 150 lines into a structured Markdown file inside `.codemod/chunks/`.
|
|
@@ -192,17 +232,25 @@ Tell your AI agent: *"Read `.codemod/chunks/` before modifying any large file."*
|
|
|
192
232
|
aidoc-kit — AI-native documentation toolkit
|
|
193
233
|
|
|
194
234
|
Commands:
|
|
195
|
-
scan
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
chunk
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
235
|
+
scan Scan a project and build the knowledge base
|
|
236
|
+
--path <dir> Project root (default: .)
|
|
237
|
+
--write Write missing @ai-* blocks (interactive confirmation)
|
|
238
|
+
--dry Preview generated blocks without writing anything
|
|
239
|
+
|
|
240
|
+
chunk Summarise large files (≥150 lines) into .codemod/chunks/*.md
|
|
241
|
+
--path <dir> Project root (default: .)
|
|
242
|
+
|
|
243
|
+
enrich Enrich @ai-context blocks with real LLM-generated descriptions
|
|
244
|
+
--provider openai | anthropic | gemini | groq | mistral | ollama
|
|
245
|
+
--model Model to use (defaults per provider)
|
|
246
|
+
--key API key (not needed for ollama)
|
|
247
|
+
--host Ollama host (default: http://localhost:11434)
|
|
248
|
+
--path <dir> Project root (default: .)
|
|
249
|
+
--dry List files without modifying
|
|
250
|
+
|
|
251
|
+
run Apply transformation rules
|
|
252
|
+
--path <dir> Project root (default: .)
|
|
253
|
+
--dry Preview changes without writing
|
|
206
254
|
```
|
|
207
255
|
|
|
208
256
|
## Reverse dependency graph
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
3
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
37
|
const node_fs_1 = require("node:fs");
|
|
5
38
|
const node_readline_1 = require("node:readline");
|
|
@@ -8,6 +41,7 @@ const scanner_1 = require("./core/scanner");
|
|
|
8
41
|
const transformer_1 = require("./core/transformer");
|
|
9
42
|
const writer_1 = require("./core/writer");
|
|
10
43
|
const chunker_1 = require("./core/chunker");
|
|
44
|
+
const enricher_1 = require("./core/enricher");
|
|
11
45
|
const config_1 = require("./core/config");
|
|
12
46
|
const index_1 = require("./rules/index");
|
|
13
47
|
// ─── Arg helpers ───────────────────────────────────────────────────────────
|
|
@@ -50,12 +84,14 @@ async function cmdScan() {
|
|
|
50
84
|
console.log(`✓ ${result.docs.length} fichiers avec blocs @ai-*`);
|
|
51
85
|
console.log(`✗ ${filteredWithoutDocs.length} fichiers sans docs${ignorePatterns.length > 0 ? ' (après filtres ignore)' : ''}\n`);
|
|
52
86
|
if (filteredWithoutDocs.length > 0 && (write || dry)) {
|
|
53
|
-
// Build reverse import map
|
|
87
|
+
// Build reverse import map over ALL project files (docs + all undocumented, regardless of
|
|
88
|
+
// ignore patterns) so that @ai-cascade is complete even when some importers are filtered.
|
|
54
89
|
const allAbsFiles = [
|
|
55
90
|
...result.docs.map(d => (0, node_path_1.resolve)(projectRoot, d.file)),
|
|
56
|
-
...
|
|
91
|
+
...result.filesWithoutDocs.map(f => (0, node_path_1.resolve)(projectRoot, f)),
|
|
57
92
|
];
|
|
58
|
-
|
|
93
|
+
// Pass projectRoot so that @/ alias imports (Next.js, Vite) are resolved correctly
|
|
94
|
+
const reverseMap = (0, scanner_1.buildReverseImportMap)(allAbsFiles, projectRoot);
|
|
59
95
|
if (dry) {
|
|
60
96
|
console.log('Aperçu des blocs générés :');
|
|
61
97
|
for (const relFile of filteredWithoutDocs) {
|
|
@@ -123,7 +159,7 @@ async function cmdChunk() {
|
|
|
123
159
|
const projectRoot = (0, node_path_1.resolve)(getFlag('--path') ?? '.');
|
|
124
160
|
console.log(`\naidoc-kit chunk → ${projectRoot}\n`);
|
|
125
161
|
const allFiles = (0, scanner_1.walkDir)(projectRoot);
|
|
126
|
-
const reverseMap = (0, scanner_1.buildReverseImportMap)(allFiles);
|
|
162
|
+
const reverseMap = (0, scanner_1.buildReverseImportMap)(allFiles, projectRoot);
|
|
127
163
|
const codemodDir = (0, node_path_1.join)(projectRoot, '.codemod');
|
|
128
164
|
let chunked = 0;
|
|
129
165
|
for (const filePath of allFiles) {
|
|
@@ -143,20 +179,123 @@ async function cmdChunk() {
|
|
|
143
179
|
console.log('💡 Dis à ton agent : "Lis .codemod/chunks/ avant de modifier un gros fichier"');
|
|
144
180
|
}
|
|
145
181
|
}
|
|
182
|
+
// ─── enrich ──────────────────────────────────────────────────────────────
|
|
183
|
+
async function cmdEnrich() {
|
|
184
|
+
const projectRoot = (0, node_path_1.resolve)(getFlag('--path') ?? '.');
|
|
185
|
+
const dry = hasFlag('--dry');
|
|
186
|
+
const config = (0, config_1.loadConfig)(projectRoot);
|
|
187
|
+
// CLI flags take priority over aidoc.config values
|
|
188
|
+
const provider = (getFlag('--provider') ?? config.enrich?.provider ?? 'gemini');
|
|
189
|
+
const model = getFlag('--model') ?? config.enrich?.model ?? defaultModel(provider);
|
|
190
|
+
const apiKey = getFlag('--key') ?? config.enrich?.key;
|
|
191
|
+
const host = getFlag('--host') ?? config.enrich?.host;
|
|
192
|
+
console.log(`\naidoc-kit enrich → ${projectRoot}`);
|
|
193
|
+
console.log(`Provider : ${provider} / Model : ${model}${dry ? ' (dry-run)' : ''}\n`);
|
|
194
|
+
const allFiles = (0, scanner_1.walkDir)(projectRoot);
|
|
195
|
+
const reverseMap = (0, scanner_1.buildReverseImportMap)(allFiles, projectRoot);
|
|
196
|
+
const ignorePatterns = config.ignore ?? [];
|
|
197
|
+
// Only enrich files without an existing @ai-context (non-default content)
|
|
198
|
+
const toEnrich = allFiles.filter(f => {
|
|
199
|
+
const rel = (0, node_path_1.relative)(projectRoot, f);
|
|
200
|
+
if (ignorePatterns.length > 0 && (0, config_1.isIgnored)(rel, ignorePatterns))
|
|
201
|
+
return false;
|
|
202
|
+
try {
|
|
203
|
+
const src = (0, enricher_1.readSourceLines)(f).join('\n');
|
|
204
|
+
// Skip if already has a non-generated context
|
|
205
|
+
return src.includes('@ai-agent') && src.includes('[GÉNÉRÉ]');
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
if (toEnrich.length === 0) {
|
|
212
|
+
console.log('Aucun fichier avec un bloc @ai-context généré trouvé.');
|
|
213
|
+
console.log('Lance `npx aidoc-kit scan --write` d’abord.');
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
console.log(`${toEnrich.length} fichier(s) à enrichir :\n`);
|
|
217
|
+
toEnrich.forEach(f => console.log(` - ${(0, node_path_1.relative)(projectRoot, f)}`));
|
|
218
|
+
if (dry) {
|
|
219
|
+
console.log('\n[dry-run] Aucune modification écrite.');
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
console.log();
|
|
223
|
+
let enriched = 0;
|
|
224
|
+
let failed = 0;
|
|
225
|
+
for (const filePath of toEnrich) {
|
|
226
|
+
const rel = (0, node_path_1.relative)(projectRoot, filePath);
|
|
227
|
+
const lines = (0, enricher_1.readSourceLines)(filePath);
|
|
228
|
+
const importedBy = (reverseMap.get(filePath) ?? []).map(f => (0, node_path_1.relative)(projectRoot, f));
|
|
229
|
+
// Extract export names from existing @ai-context line
|
|
230
|
+
const contextLine = lines.find(l => l.includes('[GÉNÉRÉ] Ce fichier exporte'));
|
|
231
|
+
const exportNames = contextLine
|
|
232
|
+
? (contextLine.split(':')[1] ?? '').trim().split(',').map(s => s.trim()).filter(Boolean)
|
|
233
|
+
: [];
|
|
234
|
+
const prompt = (0, enricher_1.buildPrompt)(rel, exportNames, importedBy, lines);
|
|
235
|
+
try {
|
|
236
|
+
const description = await (0, enricher_1.callLLM)(prompt, { provider, model, apiKey, host, dryRun: false });
|
|
237
|
+
if (!description) {
|
|
238
|
+
console.log(` ⚠️ ${rel} — réponse vide, bloc original conservé`);
|
|
239
|
+
failed++;
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
// Replace [GÉNÉRÉ] line with LLM description
|
|
243
|
+
const source = lines.join('\n');
|
|
244
|
+
const updated = source.replace(/\[GÉNÉRÉ\] Ce fichier exporte[^\n]*/, description.replace(/\$/g, '$$$$'));
|
|
245
|
+
if (source !== updated) {
|
|
246
|
+
const { writeFileSync } = await Promise.resolve().then(() => __importStar(require('node:fs')));
|
|
247
|
+
writeFileSync(filePath, updated, 'utf-8');
|
|
248
|
+
console.log(` ✓ ${rel}`);
|
|
249
|
+
enriched++;
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
console.log(` — ${rel} (aucun changement)`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
catch (err) {
|
|
256
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
257
|
+
console.log(` ✖ ${rel} — ${message}`);
|
|
258
|
+
failed++;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
console.log(`\n✓ ${enriched} fichier(s) enrichi(s)${failed > 0 ? `, ${failed} échec(s)` : ''}`);
|
|
262
|
+
}
|
|
263
|
+
function defaultModel(provider) {
|
|
264
|
+
const defaults = {
|
|
265
|
+
openai: 'gpt-4o-mini',
|
|
266
|
+
anthropic: 'claude-3-5-haiku-20241022',
|
|
267
|
+
gemini: 'gemini-2.0-flash',
|
|
268
|
+
groq: 'llama-3.1-8b-instant',
|
|
269
|
+
mistral: 'mistral-small-latest',
|
|
270
|
+
ollama: 'llama3.2',
|
|
271
|
+
};
|
|
272
|
+
return defaults[provider];
|
|
273
|
+
}
|
|
146
274
|
// ─── help ──────────────────────────────────────────────────────────────────
|
|
147
275
|
function printHelp() {
|
|
148
276
|
console.log(`
|
|
149
277
|
aidoc-kit — AI-native documentation toolkit
|
|
150
278
|
|
|
151
279
|
Commandes :
|
|
152
|
-
scan
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
280
|
+
scan Scanner un projet et construire la knowledge base
|
|
281
|
+
--path <dir> Dossier racine (défaut: .)
|
|
282
|
+
--write Écrire les blocs @ai-* manquants (confirmation interactive)
|
|
283
|
+
--dry Afficher les blocs générés sans modifier les fichiers
|
|
156
284
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
285
|
+
chunk Résumer les gros fichiers (≥150 lignes) dans .codemod/chunks/
|
|
286
|
+
--path <dir> Dossier racine (défaut: .)
|
|
287
|
+
|
|
288
|
+
enrich Enrichir les blocs @ai-context avec un LLM
|
|
289
|
+
--provider openai | anthropic | gemini | groq | mistral | ollama
|
|
290
|
+
--model Modèle à utiliser (défaut selon provider)
|
|
291
|
+
--key Clé API (non nécessaire pour ollama)
|
|
292
|
+
--host Hôte Ollama (défaut: http://localhost:11434)
|
|
293
|
+
--path <dir> Dossier racine (défaut: .)
|
|
294
|
+
--dry Lister les fichiers sans modifier
|
|
295
|
+
|
|
296
|
+
run Appliquer les règles de transformation
|
|
297
|
+
--path <dir> Dossier racine (défaut: .)
|
|
298
|
+
--dry Afficher les changements sans modifier les fichiers
|
|
160
299
|
|
|
161
300
|
Config :
|
|
162
301
|
Créer un fichier aidoc.config.js (ou .json) à la racine du projet :
|
|
@@ -165,6 +304,7 @@ Config :
|
|
|
165
304
|
agents: { '@/lib/permissions': 'permissions-expert', 'stripe': 'billing-expert' },
|
|
166
305
|
ignore: ['src/generated/**', '**/*.test.ts'],
|
|
167
306
|
validate: 'npm run typecheck',
|
|
307
|
+
enrich: { provider: 'gemini', model: 'gemini-2.0-flash', key: process.env.GEMINI_API_KEY },
|
|
168
308
|
}
|
|
169
309
|
|
|
170
310
|
Exemples :
|
|
@@ -174,6 +314,13 @@ Exemples :
|
|
|
174
314
|
npx aidoc-kit run --dry
|
|
175
315
|
npx aidoc-kit chunk
|
|
176
316
|
npx aidoc-kit chunk --path ./src
|
|
317
|
+
npx aidoc-kit enrich --provider gemini --model gemini-2.0-flash --key YOUR_KEY
|
|
318
|
+
npx aidoc-kit enrich --provider openai --model gpt-4o-mini --key sk-...
|
|
319
|
+
npx aidoc-kit enrich --provider anthropic --model claude-3-5-haiku-20241022 --key sk-ant-...
|
|
320
|
+
npx aidoc-kit enrich --provider groq --model llama-3.1-8b-instant --key gsk_...
|
|
321
|
+
npx aidoc-kit enrich --provider mistral --model mistral-small-latest --key ...
|
|
322
|
+
npx aidoc-kit enrich --provider ollama --model llama3.2
|
|
323
|
+
npx aidoc-kit enrich --dry
|
|
177
324
|
`);
|
|
178
325
|
}
|
|
179
326
|
// ─── Dispatch ─────────────────────────────────────────────────────────────
|
|
@@ -193,6 +340,12 @@ switch (command) {
|
|
|
193
340
|
process.exit(1);
|
|
194
341
|
});
|
|
195
342
|
break;
|
|
343
|
+
case 'enrich':
|
|
344
|
+
cmdEnrich().catch((err) => {
|
|
345
|
+
console.error(err);
|
|
346
|
+
process.exit(1);
|
|
347
|
+
});
|
|
348
|
+
break;
|
|
196
349
|
default:
|
|
197
350
|
printHelp();
|
|
198
351
|
break;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type Provider = 'openai' | 'anthropic' | 'gemini' | 'groq' | 'mistral' | 'ollama';
|
|
2
|
+
export interface EnrichOptions {
|
|
3
|
+
provider: Provider;
|
|
4
|
+
model: string;
|
|
5
|
+
apiKey?: string;
|
|
6
|
+
/** Custom base URL for Ollama (default: http://localhost:11434) */
|
|
7
|
+
host?: string;
|
|
8
|
+
dryRun: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Build the LLM prompt for a given file.
|
|
12
|
+
* Prompt is in English to maximise quality across all models.
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildPrompt(filePath: string, exportNames: string[], importedBy: string[], sourceLines: string[]): string;
|
|
15
|
+
/**
|
|
16
|
+
* Route the prompt to the correct LLM provider.
|
|
17
|
+
*/
|
|
18
|
+
export declare function callLLM(prompt: string, options: EnrichOptions): Promise<string>;
|
|
19
|
+
export declare function readSourceLines(filePath: string): string[];
|
|
20
|
+
//# sourceMappingURL=enricher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enricher.d.ts","sourceRoot":"","sources":["../../src/core/enricher.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;AAExF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;CAChB;AAID;;;GAGG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAYrF;AAiLD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAM1D"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildPrompt = buildPrompt;
|
|
4
|
+
exports.callLLM = callLLM;
|
|
5
|
+
exports.readSourceLines = readSourceLines;
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
// ─── Public API ────────────────────────────────────────────────────────────
|
|
8
|
+
/**
|
|
9
|
+
* Build the LLM prompt for a given file.
|
|
10
|
+
* Prompt is in English to maximise quality across all models.
|
|
11
|
+
*/
|
|
12
|
+
function buildPrompt(filePath, exportNames, importedBy, sourceLines) {
|
|
13
|
+
const first50 = sourceLines.slice(0, 50).join('\n');
|
|
14
|
+
const exportsStr = exportNames.length > 0 ? exportNames.join(', ') : '(none detected)';
|
|
15
|
+
const importedByStr = importedBy.length > 0 ? importedBy.join(', ') : '(none detected)';
|
|
16
|
+
return [
|
|
17
|
+
'You are a code documentation expert.',
|
|
18
|
+
'Analyze this TypeScript/JavaScript file and write a SHORT description (2-3 lines max)',
|
|
19
|
+
'of what this file does, its role in the application, and what it exposes.',
|
|
20
|
+
'Reply ONLY with the description. No introduction, no conclusion, no markdown.',
|
|
21
|
+
'',
|
|
22
|
+
`File: ${filePath}`,
|
|
23
|
+
`Exports: ${exportsStr}`,
|
|
24
|
+
`Imported by: ${importedByStr}`,
|
|
25
|
+
'First 50 lines:',
|
|
26
|
+
first50,
|
|
27
|
+
].join('\n');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Route the prompt to the correct LLM provider.
|
|
31
|
+
*/
|
|
32
|
+
async function callLLM(prompt, options) {
|
|
33
|
+
const { provider, model, apiKey, host } = options;
|
|
34
|
+
switch (provider) {
|
|
35
|
+
case 'openai': return callOpenAI(prompt, model, requireKey(provider, apiKey));
|
|
36
|
+
case 'anthropic': return callAnthropic(prompt, model, requireKey(provider, apiKey));
|
|
37
|
+
case 'gemini': return callGemini(prompt, model, requireKey(provider, apiKey));
|
|
38
|
+
case 'groq': return callGroq(prompt, model, requireKey(provider, apiKey));
|
|
39
|
+
case 'mistral': return callMistral(prompt, model, requireKey(provider, apiKey));
|
|
40
|
+
case 'ollama': return callOllama(prompt, model, host ?? 'http://localhost:11434');
|
|
41
|
+
default: throw new Error(`Unknown provider: ${provider}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// ─── Provider implementations ──────────────────────────────────────────────
|
|
45
|
+
async function callOpenAI(prompt, model, apiKey) {
|
|
46
|
+
const res = await fetchWithRetry('https://api.openai.com/v1/chat/completions', {
|
|
47
|
+
method: 'POST',
|
|
48
|
+
headers: {
|
|
49
|
+
'Content-Type': 'application/json',
|
|
50
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
51
|
+
},
|
|
52
|
+
body: JSON.stringify({
|
|
53
|
+
model,
|
|
54
|
+
messages: [{ role: 'user', content: prompt }],
|
|
55
|
+
max_tokens: 200,
|
|
56
|
+
}),
|
|
57
|
+
}, 'OpenAI');
|
|
58
|
+
const json = await res.json();
|
|
59
|
+
if (json.error)
|
|
60
|
+
throw new Error(`OpenAI error: ${json.error.message}`);
|
|
61
|
+
return json.choices?.[0]?.message?.content?.trim() ?? '';
|
|
62
|
+
}
|
|
63
|
+
async function callAnthropic(prompt, model, apiKey) {
|
|
64
|
+
const res = await fetchWithRetry('https://api.anthropic.com/v1/messages', {
|
|
65
|
+
method: 'POST',
|
|
66
|
+
headers: {
|
|
67
|
+
'Content-Type': 'application/json',
|
|
68
|
+
'x-api-key': apiKey,
|
|
69
|
+
'anthropic-version': '2023-06-01',
|
|
70
|
+
},
|
|
71
|
+
body: JSON.stringify({
|
|
72
|
+
model,
|
|
73
|
+
max_tokens: 200,
|
|
74
|
+
messages: [{ role: 'user', content: prompt }],
|
|
75
|
+
}),
|
|
76
|
+
}, 'Anthropic');
|
|
77
|
+
const json = await res.json();
|
|
78
|
+
if (json.error)
|
|
79
|
+
throw new Error(`Anthropic error: ${json.error.message}`);
|
|
80
|
+
const block = json.content?.find(b => b.type === 'text');
|
|
81
|
+
return block?.text?.trim() ?? '';
|
|
82
|
+
}
|
|
83
|
+
async function callGemini(prompt, model, apiKey) {
|
|
84
|
+
const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`;
|
|
85
|
+
const res = await fetchWithRetry(url, {
|
|
86
|
+
method: 'POST',
|
|
87
|
+
headers: { 'Content-Type': 'application/json' },
|
|
88
|
+
body: JSON.stringify({
|
|
89
|
+
contents: [{ parts: [{ text: prompt }] }],
|
|
90
|
+
generationConfig: { maxOutputTokens: 200 },
|
|
91
|
+
}),
|
|
92
|
+
}, 'Gemini');
|
|
93
|
+
const json = await res.json();
|
|
94
|
+
if (json.error)
|
|
95
|
+
throw new Error(`Gemini error: ${json.error.message}`);
|
|
96
|
+
return json.candidates?.[0]?.content?.parts?.[0]?.text?.trim() ?? '';
|
|
97
|
+
}
|
|
98
|
+
async function callGroq(prompt, model, apiKey) {
|
|
99
|
+
// Groq uses the same API shape as OpenAI
|
|
100
|
+
const res = await fetchWithRetry('https://api.groq.com/openai/v1/chat/completions', {
|
|
101
|
+
method: 'POST',
|
|
102
|
+
headers: {
|
|
103
|
+
'Content-Type': 'application/json',
|
|
104
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
105
|
+
},
|
|
106
|
+
body: JSON.stringify({
|
|
107
|
+
model,
|
|
108
|
+
messages: [{ role: 'user', content: prompt }],
|
|
109
|
+
max_tokens: 200,
|
|
110
|
+
}),
|
|
111
|
+
}, 'Groq');
|
|
112
|
+
const json = await res.json();
|
|
113
|
+
if (json.error)
|
|
114
|
+
throw new Error(`Groq error: ${json.error.message}`);
|
|
115
|
+
return json.choices?.[0]?.message?.content?.trim() ?? '';
|
|
116
|
+
}
|
|
117
|
+
async function callMistral(prompt, model, apiKey) {
|
|
118
|
+
const res = await fetchWithRetry('https://api.mistral.ai/v1/chat/completions', {
|
|
119
|
+
method: 'POST',
|
|
120
|
+
headers: {
|
|
121
|
+
'Content-Type': 'application/json',
|
|
122
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
123
|
+
},
|
|
124
|
+
body: JSON.stringify({
|
|
125
|
+
model,
|
|
126
|
+
messages: [{ role: 'user', content: prompt }],
|
|
127
|
+
max_tokens: 200,
|
|
128
|
+
}),
|
|
129
|
+
}, 'Mistral');
|
|
130
|
+
const json = await res.json();
|
|
131
|
+
if (json.error)
|
|
132
|
+
throw new Error(`Mistral error: ${json.error.message}`);
|
|
133
|
+
return json.choices?.[0]?.message?.content?.trim() ?? '';
|
|
134
|
+
}
|
|
135
|
+
async function callOllama(prompt, model, host) {
|
|
136
|
+
let res;
|
|
137
|
+
try {
|
|
138
|
+
res = await fetch(`${host}/api/generate`, {
|
|
139
|
+
method: 'POST',
|
|
140
|
+
headers: { 'Content-Type': 'application/json' },
|
|
141
|
+
body: JSON.stringify({ model, prompt, stream: false }),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
throw new Error(`Ollama not running. Start with: ollama serve\n (tried ${host})`);
|
|
146
|
+
}
|
|
147
|
+
if (!res.ok) {
|
|
148
|
+
throw new Error(`Ollama error ${res.status}: ${await res.text()}`);
|
|
149
|
+
}
|
|
150
|
+
const json = await res.json();
|
|
151
|
+
if (json.error)
|
|
152
|
+
throw new Error(`Ollama error: ${json.error}`);
|
|
153
|
+
return json.response?.trim() ?? '';
|
|
154
|
+
}
|
|
155
|
+
// ─── Helpers ───────────────────────────────────────────────────────────────
|
|
156
|
+
function requireKey(provider, apiKey) {
|
|
157
|
+
if (!apiKey) {
|
|
158
|
+
throw new Error(`Missing API key for ${provider}. Use --key YOUR_KEY or set it in aidoc.config.js (enrich.key).`);
|
|
159
|
+
}
|
|
160
|
+
return apiKey;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Fetch with a single auto-retry on 429 (rate limit), after a 2s delay.
|
|
164
|
+
* Throws a descriptive error on network failures.
|
|
165
|
+
*/
|
|
166
|
+
async function fetchWithRetry(url, init, providerName) {
|
|
167
|
+
let res;
|
|
168
|
+
try {
|
|
169
|
+
res = await fetch(url, init);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
throw new Error(`Cannot reach ${providerName} API. Check your connection.`);
|
|
173
|
+
}
|
|
174
|
+
if (res.status === 429) {
|
|
175
|
+
// Rate limit — wait 2s and retry once
|
|
176
|
+
await new Promise(r => setTimeout(r, 2000));
|
|
177
|
+
try {
|
|
178
|
+
res = await fetch(url, init);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
throw new Error(`Cannot reach ${providerName} API. Check your connection.`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return res;
|
|
185
|
+
}
|
|
186
|
+
// ─── Source preview helper ─────────────────────────────────────────────────
|
|
187
|
+
function readSourceLines(filePath) {
|
|
188
|
+
try {
|
|
189
|
+
return (0, node_fs_1.readFileSync)(filePath, 'utf-8').split('\n');
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return [];
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=enricher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enricher.js","sourceRoot":"","sources":["../../src/core/enricher.ts"],"names":[],"mappings":";;AAqBA,kCAsBC;AAKD,0BAYC;AAiLD,0CAMC;AAnPD,qCAAsC;AAetC,8EAA8E;AAE9E;;;GAGG;AACH,SAAgB,WAAW,CACzB,QAAgB,EAChB,WAAqB,EACrB,UAAoB,EACpB,WAAqB;IAErB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAA;IACtF,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAEvF,OAAO;QACL,sCAAsC;QACtC,uFAAuF;QACvF,2EAA2E;QAC3E,+EAA+E;QAC/E,EAAE;QACF,SAAS,QAAQ,EAAE;QACnB,YAAY,UAAU,EAAE;QACxB,gBAAgB,aAAa,EAAE;QAC/B,iBAAiB;QACjB,OAAO;KACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,OAAsB;IAClE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IAEjD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,CAAE,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QAC9E,KAAK,WAAW,CAAC,CAAC,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QACnF,KAAK,QAAQ,CAAC,CAAE,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QAC9E,KAAK,MAAM,CAAC,CAAI,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QAC5E,KAAK,SAAS,CAAC,CAAC,OAAO,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QAC/E,KAAK,QAAQ,CAAC,CAAE,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,wBAAwB,CAAC,CAAA;QAClF,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAkB,EAAE,CAAC,CAAA;IACrE,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,KAAa,EAAE,MAAc;IACrE,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,4CAA4C,EAAE;QAC7E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,MAAM,EAAE;SACpC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK;YACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7C,UAAU,EAAE,GAAG;SAChB,CAAC;KACH,EAAE,QAAQ,CAAC,CAAA;IAEZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAG1B,CAAA;IACD,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACtE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAC1D,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,KAAa,EAAE,MAAc;IACxE,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,uCAAuC,EAAE;QACxE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,WAAW,EAAE,MAAM;YACnB,mBAAmB,EAAE,YAAY;SAClC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK;YACL,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;SAC9C,CAAC;KACH,EAAE,WAAW,CAAC,CAAA;IAEf,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAG1B,CAAA;IACD,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACzE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;IACxD,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAClC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,KAAa,EAAE,MAAc;IACrE,MAAM,GAAG,GAAG,2DAA2D,KAAK,wBAAwB,MAAM,EAAE,CAAA;IAC5G,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE;QACpC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACzC,gBAAgB,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE;SAC3C,CAAC;KACH,EAAE,QAAQ,CAAC,CAAA;IAEZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAG1B,CAAA;IACD,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACtE,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACtE,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,KAAa,EAAE,MAAc;IACnE,yCAAyC;IACzC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,iDAAiD,EAAE;QAClF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,MAAM,EAAE;SACpC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK;YACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7C,UAAU,EAAE,GAAG;SAChB,CAAC;KACH,EAAE,MAAM,CAAC,CAAA;IAEV,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAG1B,CAAA;IACD,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACpE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAC1D,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,KAAa,EAAE,MAAc;IACtE,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,4CAA4C,EAAE;QAC7E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,MAAM,EAAE;SACpC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK;YACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7C,UAAU,EAAE,GAAG;SAChB,CAAC;KACH,EAAE,SAAS,CAAC,CAAA;IAEb,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAG1B,CAAA;IACD,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACvE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAC1D,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,KAAa,EAAE,IAAY;IACnE,IAAI,GAAa,CAAA;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,eAAe,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;SACvD,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,0DAA0D,IAAI,GAAG,CAAC,CAAA;IACpF,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA2C,CAAA;IACtE,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAC9D,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACpC,CAAC;AAED,8EAA8E;AAE9E,SAAS,UAAU,CAAC,QAAgB,EAAE,MAA0B;IAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,uBAAuB,QAAQ,iEAAiE,CACjG,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,GAAW,EACX,IAAiB,EACjB,YAAoB;IAEpB,IAAI,GAAa,CAAA;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gBAAgB,YAAY,8BAA8B,CAAC,CAAA;IAC7E,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,sCAAsC;QACtC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,gBAAgB,YAAY,8BAA8B,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,8EAA8E;AAE9E,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,IAAA,sBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC"}
|
package/dist/core/scanner.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { AiDocBlock, ScanResult } from '../types';
|
|
2
2
|
/**
|
|
3
3
|
* Build a map from each file (absolute path) → the set of files that import it.
|
|
4
|
-
*
|
|
4
|
+
* Resolves relative imports (./foo, ../bar) and @/ alias imports common in Next.js projects.
|
|
5
|
+
* Pass `rootDir` to enable @/ alias resolution (mapped to `<rootDir>/src/`).
|
|
5
6
|
*/
|
|
6
|
-
export declare function buildReverseImportMap(files: string[]): Map<string, string[]>;
|
|
7
|
+
export declare function buildReverseImportMap(files: string[], rootDir?: string): Map<string, string[]>;
|
|
7
8
|
export declare function scanProject(rootDir: string): ScanResult;
|
|
8
9
|
export declare function extractAiDocs(filePath: string, rootDir?: string): AiDocBlock | null;
|
|
9
10
|
export declare function walkDir(dir: string): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAStD
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAStD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA+C9F;AAqBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAevD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,UAAU,GAAG,IAAI,CAqC/E;AAID,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA2B7C"}
|
package/dist/core/scanner.js
CHANGED
|
@@ -47,10 +47,11 @@ const IGNORED_DIRS = new Set([
|
|
|
47
47
|
// ─── Public API ────────────────────────────────────────────────────────────
|
|
48
48
|
/**
|
|
49
49
|
* Build a map from each file (absolute path) → the set of files that import it.
|
|
50
|
-
*
|
|
50
|
+
* Resolves relative imports (./foo, ../bar) and @/ alias imports common in Next.js projects.
|
|
51
|
+
* Pass `rootDir` to enable @/ alias resolution (mapped to `<rootDir>/src/`).
|
|
51
52
|
*/
|
|
52
|
-
function buildReverseImportMap(files) {
|
|
53
|
-
// forward: absPath → [absPath of each
|
|
53
|
+
function buildReverseImportMap(files, rootDir) {
|
|
54
|
+
// forward: absPath → [absPath of each resolved import]
|
|
54
55
|
const forward = new Map();
|
|
55
56
|
for (const file of files) {
|
|
56
57
|
let source;
|
|
@@ -65,9 +66,18 @@ function buildReverseImportMap(files) {
|
|
|
65
66
|
ts.forEachChild(sf, node => {
|
|
66
67
|
if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {
|
|
67
68
|
const spec = node.moduleSpecifier.text;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
let resolved = null;
|
|
70
|
+
if (spec.startsWith('.')) {
|
|
71
|
+
// Relative import: ./foo or ../bar
|
|
72
|
+
resolved = resolveImport((0, node_path_1.dirname)(file), spec);
|
|
73
|
+
}
|
|
74
|
+
else if (rootDir && spec.startsWith('@/')) {
|
|
75
|
+
// @/ alias → <rootDir>/src/<rest> (standard Next.js / Vite convention)
|
|
76
|
+
const rest = spec.slice(2); // strip '@/'
|
|
77
|
+
resolved =
|
|
78
|
+
resolveImport((0, node_path_1.join)(rootDir, 'src'), rest) ??
|
|
79
|
+
resolveImport(rootDir, rest);
|
|
80
|
+
}
|
|
71
81
|
if (resolved)
|
|
72
82
|
deps.push(resolved);
|
|
73
83
|
}
|
package/dist/core/scanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a.d.ts","sourceRoot":"","sources":["../../src/test-cascade/a.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,CAAC,QAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a.js","sourceRoot":"","sources":["../../src/test-cascade/a.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAClB,QAAA,CAAC,GAAG,IAAA,aAAK,GAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"b.d.ts","sourceRoot":"","sources":["../../src/test-cascade/b.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,CAAC,QAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"b.js","sourceRoot":"","sources":["../../src/test-cascade/b.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAClB,QAAA,CAAC,GAAG,IAAA,aAAK,GAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test-cascade/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,cAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/test-cascade/utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,CAAA;AAArB,QAAA,KAAK,SAAgB"}
|
package/dist/types.d.ts
CHANGED
|
@@ -53,6 +53,19 @@ export interface AidocConfig {
|
|
|
53
53
|
* @default 'npm run typecheck'
|
|
54
54
|
*/
|
|
55
55
|
validate?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Default LLM provider config for `aidoc-kit enrich`.
|
|
58
|
+
* All fields can be overridden by CLI flags.
|
|
59
|
+
* Never hardcode API keys — use process.env.
|
|
60
|
+
* @example { provider: 'gemini', model: 'gemini-2.0-flash', key: process.env.GEMINI_API_KEY }
|
|
61
|
+
*/
|
|
62
|
+
enrich?: {
|
|
63
|
+
provider?: 'openai' | 'anthropic' | 'gemini' | 'groq' | 'mistral' | 'ollama';
|
|
64
|
+
model?: string;
|
|
65
|
+
key?: string;
|
|
66
|
+
/** Custom Ollama host. @default 'http://localhost:11434' */
|
|
67
|
+
host?: string;
|
|
68
|
+
};
|
|
56
69
|
}
|
|
57
70
|
export interface KnowledgeBase {
|
|
58
71
|
generatedAt: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAIrC,MAAM,WAAW,UAAU;IACzB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,yCAAyC;IACzC,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,oCAAoC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAID,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAA;IAC5D,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,MAAM,GAAG,IAAI,CAAA;CACrE;AAID,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,IAAI,EAAE,UAAU,EAAE,CAAA;IAClB,sDAAsD;IACtD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;CACrB;AAID,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAIrC,MAAM,WAAW,UAAU;IACzB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,yCAAyC;IACzC,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,oCAAoC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAID,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAA;IAC5D,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,MAAM,GAAG,IAAI,CAAA;CACrE;AAID,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,IAAI,EAAE,UAAU,EAAE,CAAA;IAClB,sDAAsD;IACtD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;CACrB;AAID,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;QAC5E,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,4DAA4D;QAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAID,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,MAAM,EAAE,CAAA;QACd,WAAW,EAAE,MAAM,EAAE,CAAA;KACtB,CAAC,CAAA;IACF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACpC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAC7C"}
|