aidoc-kit 0.1.0 → 0.1.1

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 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 Scan a project and build the knowledge base
196
- --path <dir> Project root (default: .)
197
- --write Write missing @ai-* blocks (interactive confirmation)
198
- --dry Preview generated blocks without writing anything
199
-
200
- chunk Summarise large files (≥150 lines) into .codemod/chunks/*.md
201
- --path <dir> Project root (default: .)
202
-
203
- run Apply transformation rules
204
- --path <dir> Project root (default: .)
205
- --dry Preview changes without writing
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 ───────────────────────────────────────────────────────────
@@ -143,20 +177,123 @@ async function cmdChunk() {
143
177
  console.log('💡 Dis à ton agent : "Lis .codemod/chunks/ avant de modifier un gros fichier"');
144
178
  }
145
179
  }
180
+ // ─── enrich ──────────────────────────────────────────────────────────────
181
+ async function cmdEnrich() {
182
+ const projectRoot = (0, node_path_1.resolve)(getFlag('--path') ?? '.');
183
+ const dry = hasFlag('--dry');
184
+ const config = (0, config_1.loadConfig)(projectRoot);
185
+ // CLI flags take priority over aidoc.config values
186
+ const provider = (getFlag('--provider') ?? config.enrich?.provider ?? 'gemini');
187
+ const model = getFlag('--model') ?? config.enrich?.model ?? defaultModel(provider);
188
+ const apiKey = getFlag('--key') ?? config.enrich?.key;
189
+ const host = getFlag('--host') ?? config.enrich?.host;
190
+ console.log(`\naidoc-kit enrich → ${projectRoot}`);
191
+ console.log(`Provider : ${provider} / Model : ${model}${dry ? ' (dry-run)' : ''}\n`);
192
+ const allFiles = (0, scanner_1.walkDir)(projectRoot);
193
+ const reverseMap = (0, scanner_1.buildReverseImportMap)(allFiles);
194
+ const ignorePatterns = config.ignore ?? [];
195
+ // Only enrich files without an existing @ai-context (non-default content)
196
+ const toEnrich = allFiles.filter(f => {
197
+ const rel = (0, node_path_1.relative)(projectRoot, f);
198
+ if (ignorePatterns.length > 0 && (0, config_1.isIgnored)(rel, ignorePatterns))
199
+ return false;
200
+ try {
201
+ const src = (0, enricher_1.readSourceLines)(f).join('\n');
202
+ // Skip if already has a non-generated context
203
+ return src.includes('@ai-agent') && src.includes('[GÉNÉRÉ]');
204
+ }
205
+ catch {
206
+ return false;
207
+ }
208
+ });
209
+ if (toEnrich.length === 0) {
210
+ console.log('Aucun fichier avec un bloc @ai-context généré trouvé.');
211
+ console.log('Lance `npx aidoc-kit scan --write` d’abord.');
212
+ return;
213
+ }
214
+ console.log(`${toEnrich.length} fichier(s) à enrichir :\n`);
215
+ toEnrich.forEach(f => console.log(` - ${(0, node_path_1.relative)(projectRoot, f)}`));
216
+ if (dry) {
217
+ console.log('\n[dry-run] Aucune modification écrite.');
218
+ return;
219
+ }
220
+ console.log();
221
+ let enriched = 0;
222
+ let failed = 0;
223
+ for (const filePath of toEnrich) {
224
+ const rel = (0, node_path_1.relative)(projectRoot, filePath);
225
+ const lines = (0, enricher_1.readSourceLines)(filePath);
226
+ const importedBy = (reverseMap.get(filePath) ?? []).map(f => (0, node_path_1.relative)(projectRoot, f));
227
+ // Extract export names from existing @ai-context line
228
+ const contextLine = lines.find(l => l.includes('[GÉNÉRÉ] Ce fichier exporte'));
229
+ const exportNames = contextLine
230
+ ? (contextLine.split(':')[1] ?? '').trim().split(',').map(s => s.trim()).filter(Boolean)
231
+ : [];
232
+ const prompt = (0, enricher_1.buildPrompt)(rel, exportNames, importedBy, lines);
233
+ try {
234
+ const description = await (0, enricher_1.callLLM)(prompt, { provider, model, apiKey, host, dryRun: false });
235
+ if (!description) {
236
+ console.log(` ⚠️ ${rel} — réponse vide, bloc original conservé`);
237
+ failed++;
238
+ continue;
239
+ }
240
+ // Replace [GÉNÉRÉ] line with LLM description
241
+ const source = lines.join('\n');
242
+ const updated = source.replace(/\[GÉNÉRÉ\] Ce fichier exporte[^\n]*/, description.replace(/\$/g, '$$$$'));
243
+ if (source !== updated) {
244
+ const { writeFileSync } = await Promise.resolve().then(() => __importStar(require('node:fs')));
245
+ writeFileSync(filePath, updated, 'utf-8');
246
+ console.log(` ✓ ${rel}`);
247
+ enriched++;
248
+ }
249
+ else {
250
+ console.log(` — ${rel} (aucun changement)`);
251
+ }
252
+ }
253
+ catch (err) {
254
+ const message = err instanceof Error ? err.message : String(err);
255
+ console.log(` ✖ ${rel} — ${message}`);
256
+ failed++;
257
+ }
258
+ }
259
+ console.log(`\n✓ ${enriched} fichier(s) enrichi(s)${failed > 0 ? `, ${failed} échec(s)` : ''}`);
260
+ }
261
+ function defaultModel(provider) {
262
+ const defaults = {
263
+ openai: 'gpt-4o-mini',
264
+ anthropic: 'claude-3-5-haiku-20241022',
265
+ gemini: 'gemini-2.0-flash',
266
+ groq: 'llama-3.1-8b-instant',
267
+ mistral: 'mistral-small-latest',
268
+ ollama: 'llama3.2',
269
+ };
270
+ return defaults[provider];
271
+ }
146
272
  // ─── help ──────────────────────────────────────────────────────────────────
147
273
  function printHelp() {
148
274
  console.log(`
149
275
  aidoc-kit — AI-native documentation toolkit
150
276
 
151
277
  Commandes :
152
- scan Scanner un projet et construire la knowledge base
153
- --path <dir> Dossier racine (défaut: .)
154
- --write Écrire les blocs @ai-* manquants (confirmation interactive)
155
- --dry Afficher les blocs générés sans modifier les fichiers
278
+ scan Scanner un projet et construire la knowledge base
279
+ --path <dir> Dossier racine (défaut: .)
280
+ --write Écrire les blocs @ai-* manquants (confirmation interactive)
281
+ --dry Afficher les blocs générés sans modifier les fichiers
156
282
 
157
- run Appliquer les règles de transformation
158
- --path <dir> Dossier racine (défaut: .)
159
- --dry Afficher les changements sans modifier les fichiers
283
+ chunk Résumer les gros fichiers (≥150 lignes) dans .codemod/chunks/
284
+ --path <dir> Dossier racine (défaut: .)
285
+
286
+ enrich Enrichir les blocs @ai-context avec un LLM
287
+ --provider openai | anthropic | gemini | groq | mistral | ollama
288
+ --model Modèle à utiliser (défaut selon provider)
289
+ --key Clé API (non nécessaire pour ollama)
290
+ --host Hôte Ollama (défaut: http://localhost:11434)
291
+ --path <dir> Dossier racine (défaut: .)
292
+ --dry Lister les fichiers sans modifier
293
+
294
+ run Appliquer les règles de transformation
295
+ --path <dir> Dossier racine (défaut: .)
296
+ --dry Afficher les changements sans modifier les fichiers
160
297
 
161
298
  Config :
162
299
  Créer un fichier aidoc.config.js (ou .json) à la racine du projet :
@@ -165,6 +302,7 @@ Config :
165
302
  agents: { '@/lib/permissions': 'permissions-expert', 'stripe': 'billing-expert' },
166
303
  ignore: ['src/generated/**', '**/*.test.ts'],
167
304
  validate: 'npm run typecheck',
305
+ enrich: { provider: 'gemini', model: 'gemini-2.0-flash', key: process.env.GEMINI_API_KEY },
168
306
  }
169
307
 
170
308
  Exemples :
@@ -174,6 +312,13 @@ Exemples :
174
312
  npx aidoc-kit run --dry
175
313
  npx aidoc-kit chunk
176
314
  npx aidoc-kit chunk --path ./src
315
+ npx aidoc-kit enrich --provider gemini --model gemini-2.0-flash --key YOUR_KEY
316
+ npx aidoc-kit enrich --provider openai --model gpt-4o-mini --key sk-...
317
+ npx aidoc-kit enrich --provider anthropic --model claude-3-5-haiku-20241022 --key sk-ant-...
318
+ npx aidoc-kit enrich --provider groq --model llama-3.1-8b-instant --key gsk_...
319
+ npx aidoc-kit enrich --provider mistral --model mistral-small-latest --key ...
320
+ npx aidoc-kit enrich --provider ollama --model llama3.2
321
+ npx aidoc-kit enrich --dry
177
322
  `);
178
323
  }
179
324
  // ─── Dispatch ─────────────────────────────────────────────────────────────
@@ -193,6 +338,12 @@ switch (command) {
193
338
  process.exit(1);
194
339
  });
195
340
  break;
341
+ case 'enrich':
342
+ cmdEnrich().catch((err) => {
343
+ console.error(err);
344
+ process.exit(1);
345
+ });
346
+ break;
196
347
  default:
197
348
  printHelp();
198
349
  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/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;
@@ -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;CAClB;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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidoc-kit",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "AI-native documentation scanner for JS/TS projects",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",