repomemory 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +151 -104
  2. package/dist/commands/analyze.d.ts +2 -0
  3. package/dist/commands/analyze.d.ts.map +1 -1
  4. package/dist/commands/analyze.js +162 -188
  5. package/dist/commands/analyze.js.map +1 -1
  6. package/dist/commands/dashboard.d.ts +5 -0
  7. package/dist/commands/dashboard.d.ts.map +1 -0
  8. package/dist/commands/dashboard.js +520 -0
  9. package/dist/commands/dashboard.js.map +1 -0
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +33 -34
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/serve.d.ts.map +1 -1
  14. package/dist/commands/serve.js +2 -1
  15. package/dist/commands/serve.js.map +1 -1
  16. package/dist/commands/setup.d.ts.map +1 -1
  17. package/dist/commands/setup.js +151 -35
  18. package/dist/commands/setup.js.map +1 -1
  19. package/dist/commands/status.d.ts +4 -0
  20. package/dist/commands/status.d.ts.map +1 -0
  21. package/dist/commands/status.js +87 -0
  22. package/dist/commands/status.js.map +1 -0
  23. package/dist/commands/sync.d.ts.map +1 -1
  24. package/dist/commands/sync.js +57 -27
  25. package/dist/commands/sync.js.map +1 -1
  26. package/dist/commands/wizard.d.ts +4 -0
  27. package/dist/commands/wizard.d.ts.map +1 -0
  28. package/dist/commands/wizard.js +184 -0
  29. package/dist/commands/wizard.js.map +1 -0
  30. package/dist/index.js +37 -42
  31. package/dist/index.js.map +1 -1
  32. package/dist/lib/ai-provider.d.ts +11 -0
  33. package/dist/lib/ai-provider.d.ts.map +1 -1
  34. package/dist/lib/ai-provider.js +138 -69
  35. package/dist/lib/ai-provider.js.map +1 -1
  36. package/dist/lib/config.d.ts +11 -15
  37. package/dist/lib/config.d.ts.map +1 -1
  38. package/dist/lib/config.js +33 -21
  39. package/dist/lib/config.js.map +1 -1
  40. package/dist/lib/context-store.d.ts +11 -0
  41. package/dist/lib/context-store.d.ts.map +1 -1
  42. package/dist/lib/context-store.js +51 -18
  43. package/dist/lib/context-store.js.map +1 -1
  44. package/dist/lib/git.d.ts +1 -0
  45. package/dist/lib/git.d.ts.map +1 -1
  46. package/dist/lib/git.js +34 -20
  47. package/dist/lib/git.js.map +1 -1
  48. package/dist/lib/json-repair.d.ts +24 -0
  49. package/dist/lib/json-repair.d.ts.map +1 -0
  50. package/dist/lib/json-repair.js +140 -0
  51. package/dist/lib/json-repair.js.map +1 -0
  52. package/dist/lib/repo-scanner.d.ts.map +1 -1
  53. package/dist/lib/repo-scanner.js +103 -26
  54. package/dist/lib/repo-scanner.js.map +1 -1
  55. package/dist/lib/search.d.ts +10 -4
  56. package/dist/lib/search.d.ts.map +1 -1
  57. package/dist/lib/search.js +136 -51
  58. package/dist/lib/search.js.map +1 -1
  59. package/dist/mcp/server.d.ts.map +1 -1
  60. package/dist/mcp/server.js +128 -54
  61. package/dist/mcp/server.js.map +1 -1
  62. package/package.json +20 -8
@@ -5,146 +5,8 @@ import { ContextStore } from "../lib/context-store.js";
5
5
  import { SearchIndex } from "../lib/search.js";
6
6
  import { scanRepo } from "../lib/repo-scanner.js";
7
7
  import { getGitInfo, getRecentDiffs } from "../lib/git.js";
8
- import { createProvider } from "../lib/ai-provider.js";
9
- /**
10
- * Robustly extracts a JSON object from an AI response that may contain
11
- * markdown code fences, preamble text, or other wrapping.
12
- */
13
- function extractJSON(raw) {
14
- let text = raw.trim();
15
- // Strategy 1: Strip outermost code fences (greedy to match last ```)
16
- const fenceMatch = text.match(/^```(?:json)?\s*\n([\s\S]*)\n\s*```\s*$/);
17
- if (fenceMatch) {
18
- text = fenceMatch[1].trim();
19
- }
20
- // Strategy 2: If still wrapped in non-JSON text, find first { to last }
21
- if (!text.startsWith("{")) {
22
- const firstBrace = text.indexOf("{");
23
- const lastBrace = text.lastIndexOf("}");
24
- if (firstBrace !== -1 && lastBrace > firstBrace) {
25
- text = text.slice(firstBrace, lastBrace + 1);
26
- }
27
- }
28
- // Try parsing (with multiple repair strategies)
29
- const attempts = [
30
- () => text,
31
- () => fixJsonNewlines(text),
32
- () => repairTruncatedJSON(text),
33
- () => repairTruncatedJSON(fixJsonNewlines(text)),
34
- ];
35
- let lastError = null;
36
- for (const attempt of attempts) {
37
- try {
38
- return JSON.parse(attempt());
39
- }
40
- catch (e) {
41
- lastError = e;
42
- }
43
- }
44
- throw lastError;
45
- }
46
- /**
47
- * Fixes actual newlines inside JSON string values by replacing them with \n.
48
- * Walks the string character by character, tracking whether we're inside a string.
49
- */
50
- function fixJsonNewlines(json) {
51
- const chars = [];
52
- let inString = false;
53
- let escaped = false;
54
- for (let i = 0; i < json.length; i++) {
55
- const ch = json[i];
56
- if (escaped) {
57
- chars.push(ch);
58
- escaped = false;
59
- continue;
60
- }
61
- if (ch === "\\") {
62
- chars.push(ch);
63
- escaped = true;
64
- continue;
65
- }
66
- if (ch === '"') {
67
- inString = !inString;
68
- chars.push(ch);
69
- continue;
70
- }
71
- if (inString && ch === "\n") {
72
- chars.push("\\n");
73
- continue;
74
- }
75
- if (inString && ch === "\r") {
76
- continue; // Skip carriage returns
77
- }
78
- if (inString && ch === "\t") {
79
- chars.push("\\t");
80
- continue;
81
- }
82
- chars.push(ch);
83
- }
84
- return chars.join("");
85
- }
86
- /**
87
- * Repairs a truncated JSON string by closing any open strings, arrays, and objects.
88
- * Handles the common case where the AI response was cut off mid-output.
89
- */
90
- function repairTruncatedJSON(json) {
91
- let text = json.trim();
92
- // If it ends cleanly, nothing to repair
93
- if (text.endsWith("}")) {
94
- try {
95
- JSON.parse(text);
96
- return text;
97
- }
98
- catch {
99
- // Fall through to repair
100
- }
101
- }
102
- // Find what's open — track nesting
103
- let inString = false;
104
- let escaped = false;
105
- const stack = []; // Track open brackets
106
- for (let i = 0; i < text.length; i++) {
107
- const ch = text[i];
108
- if (escaped) {
109
- escaped = false;
110
- continue;
111
- }
112
- if (ch === "\\") {
113
- escaped = true;
114
- continue;
115
- }
116
- if (ch === '"') {
117
- inString = !inString;
118
- continue;
119
- }
120
- if (inString)
121
- continue;
122
- if (ch === "{")
123
- stack.push("}");
124
- else if (ch === "[")
125
- stack.push("]");
126
- else if (ch === "}" || ch === "]")
127
- stack.pop();
128
- }
129
- // Close open string if needed
130
- if (inString) {
131
- text += '"';
132
- }
133
- // Remove trailing comma
134
- text = text.replace(/,\s*$/, "");
135
- // Close all open brackets in reverse order
136
- while (stack.length > 0) {
137
- const closer = stack.pop();
138
- // Remove any trailing incomplete entry before closing
139
- if (closer === "]") {
140
- // Remove trailing incomplete object in array
141
- text = text.replace(/,\s*\{[^}]*$/, "");
142
- text = text.replace(/,\s*"[^"]*$/, "");
143
- }
144
- text += closer;
145
- }
146
- return text;
147
- }
8
+ import { createProvider, validateApiKey, estimateCost, AIError } from "../lib/ai-provider.js";
9
+ import { extractJSON } from "../lib/json-repair.js";
148
10
  const ANALYSIS_SYSTEM_PROMPT = `You are repomemory, an expert at analyzing codebases and creating structured knowledge bases for AI coding agents.
149
11
 
150
12
  Your job is to analyze a repository and produce a comprehensive, well-organized knowledge base that helps AI agents (Claude Code, Cursor, Copilot, etc.) work effectively in this codebase from the very first message.
@@ -208,13 +70,30 @@ export async function analyzeCommand(options) {
208
70
  config.provider = options.provider;
209
71
  if (options.model)
210
72
  config.model = options.model;
73
+ // Validate API key before doing any expensive work
74
+ const hasKey = await validateApiKey(config);
75
+ if (!hasKey) {
76
+ const envVar = {
77
+ anthropic: "ANTHROPIC_API_KEY",
78
+ openai: "OPENAI_API_KEY",
79
+ gemini: "GEMINI_API_KEY",
80
+ grok: "GROK_API_KEY",
81
+ }[config.provider];
82
+ console.error(chalk.red(`\n\u2717 No API key found for ${config.provider}.`));
83
+ console.error(chalk.dim(` Set ${envVar} and try again.`));
84
+ process.exit(1);
85
+ }
211
86
  const store = new ContextStore(repoRoot, config);
212
87
  if (!store.exists()) {
213
- console.log(chalk.yellow(" No .context/ directory found. Running init first..."));
88
+ console.log(chalk.yellow("\u26a0 No .context/ directory found. Initializing..."));
214
89
  store.scaffold();
215
90
  }
216
- console.log(chalk.bold("\n🔍 Scanning repository...\n"));
217
- // Scan repo
91
+ // Check merge mode
92
+ const existingEntries = options.merge ? store.listEntries() : [];
93
+ if (options.merge && existingEntries.length > 0) {
94
+ console.log(chalk.dim(` Merge mode: ${existingEntries.length} existing entries will be preserved.`));
95
+ }
96
+ console.log(chalk.bold("\n\ud83d\udd0d Scanning repository...\n"));
218
97
  const scan = scanRepo(repoRoot, config);
219
98
  console.log(` ${chalk.cyan("Files:")} ${scan.stats.totalFiles}`);
220
99
  console.log(` ${chalk.cyan("Directories:")} ${scan.stats.totalDirs}`);
@@ -226,8 +105,7 @@ export async function analyzeCommand(options) {
226
105
  console.log(` ${chalk.cyan("Frameworks:")} ${scan.stats.frameworks.join(", ")}`);
227
106
  }
228
107
  console.log(` ${chalk.cyan("Key files found:")} ${scan.keyFiles.length}`);
229
- // Get git info
230
- console.log(chalk.bold("\n📜 Reading git history...\n"));
108
+ console.log(chalk.bold("\n\ud83d\udcdc Reading git history...\n"));
231
109
  const git = getGitInfo(repoRoot, config.maxGitCommits);
232
110
  if (git.isGitRepo) {
233
111
  console.log(` ${chalk.cyan("Commits:")} ${git.totalCommits}`);
@@ -238,25 +116,72 @@ export async function analyzeCommand(options) {
238
116
  else {
239
117
  console.log(chalk.dim(" Not a git repository"));
240
118
  }
241
- // Get recent diffs for deeper analysis
242
119
  const recentDiffs = git.isGitRepo ? getRecentDiffs(repoRoot, 20) : "";
243
- // Build the analysis prompt
244
- const userPrompt = buildAnalysisPrompt(scan, git, recentDiffs);
245
- if (options.verbose) {
246
- console.log(chalk.dim(`\n Prompt size: ~${Math.round(userPrompt.length / 4)} tokens`));
120
+ const userPrompt = buildAnalysisPrompt(scan, git, recentDiffs, options.merge ? existingEntries : undefined);
121
+ // Estimate tokens and cost
122
+ const estimatedInputTokens = Math.round(userPrompt.length / 4) + 2000; // +2000 for system prompt
123
+ const estimatedOutputTokens = 32000;
124
+ const cost = estimateCost(config.provider, config.model, estimatedInputTokens, estimatedOutputTokens);
125
+ console.log(chalk.dim(`\n Estimated input: ~${estimatedInputTokens.toLocaleString()} tokens`));
126
+ console.log(chalk.dim(` Estimated cost: ${cost}`));
127
+ // Dry run mode
128
+ if (options.dryRun) {
129
+ console.log(chalk.bold("\n\ud83d\udccb Dry run complete.\n"));
130
+ console.log(` Would analyze with ${chalk.cyan(config.provider)} (${config.model})`);
131
+ console.log(` Prompt size: ~${Math.round(userPrompt.length / 4).toLocaleString()} tokens`);
132
+ console.log(` Key files to analyze: ${scan.keyFiles.length}`);
133
+ console.log(` Estimated cost: ${cost}`);
134
+ if (options.verbose) {
135
+ console.log(chalk.dim("\n Files that would be analyzed:"));
136
+ for (const f of scan.keyFiles.slice(0, 20)) {
137
+ console.log(chalk.dim(` ${f.path}`));
138
+ }
139
+ if (scan.keyFiles.length > 20) {
140
+ console.log(chalk.dim(` ... and ${scan.keyFiles.length - 20} more`));
141
+ }
142
+ }
143
+ return;
247
144
  }
248
- // Call AI
249
- console.log(chalk.bold(`\n🤖 Analyzing with ${config.provider} (${config.model})...\n`));
145
+ // Call AI with retry
146
+ console.log(chalk.bold(`\n\ud83e\udd16 Analyzing with ${config.provider} (${config.model})...\n`));
147
+ const ora = (await import("ora")).default;
148
+ const spinner = ora({
149
+ text: "Analyzing codebase...",
150
+ color: "cyan",
151
+ }).start();
250
152
  const provider = await createProvider(config);
153
+ let response;
154
+ const maxRetries = 2;
251
155
  const startTime = Date.now();
252
- const response = await provider.generate([
253
- { role: "system", content: ANALYSIS_SYSTEM_PROMPT },
254
- { role: "user", content: userPrompt },
255
- ], { maxTokens: 64000, temperature: 0.2 });
156
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
157
+ try {
158
+ response = await provider.generate([
159
+ { role: "system", content: ANALYSIS_SYSTEM_PROMPT },
160
+ { role: "user", content: userPrompt },
161
+ ], { maxTokens: 64000, temperature: 0.2 });
162
+ break;
163
+ }
164
+ catch (err) {
165
+ const isRetryable = err instanceof AIError && err.isRetryable;
166
+ if (attempt < maxRetries && isRetryable) {
167
+ const delay = Math.pow(2, attempt + 1) * 1000;
168
+ spinner.text = `Retrying in ${delay / 1000}s (attempt ${attempt + 2}/${maxRetries + 1})...`;
169
+ await new Promise((resolve) => setTimeout(resolve, delay));
170
+ continue;
171
+ }
172
+ spinner.fail("Analysis failed");
173
+ throw err;
174
+ }
175
+ }
176
+ if (!response) {
177
+ spinner.fail("Analysis failed after retries");
178
+ process.exit(1);
179
+ }
256
180
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
257
- console.log(chalk.dim(` Completed in ${elapsed}s`));
181
+ spinner.succeed(`Analysis complete in ${elapsed}s`);
258
182
  if (response.tokensUsed) {
259
- console.log(chalk.dim(` Tokens used: ${response.tokensUsed.toLocaleString()}`));
183
+ const actualCost = estimateCost(config.provider, config.model, response.inputTokens || 0, response.outputTokens || 0);
184
+ console.log(chalk.dim(` Tokens: ${response.tokensUsed.toLocaleString()} | Cost: ${actualCost}`));
260
185
  }
261
186
  // Parse response
262
187
  let analysis;
@@ -264,7 +189,6 @@ export async function analyzeCommand(options) {
264
189
  analysis = extractJSON(response.content);
265
190
  }
266
191
  catch (e) {
267
- // Save raw response for debugging
268
192
  const debugPath = join(repoRoot, ".context", ".last-response.txt");
269
193
  try {
270
194
  const { writeFileSync: wf } = await import("fs");
@@ -272,7 +196,7 @@ export async function analyzeCommand(options) {
272
196
  console.error(chalk.dim(` Raw response saved to ${debugPath}`));
273
197
  }
274
198
  catch { }
275
- console.error(chalk.red(`\n Failed to parse AI response as JSON: ${e.message}`));
199
+ console.error(chalk.red(`\n\u2717 Failed to parse AI response as JSON: ${e.message}`));
276
200
  if (options.verbose) {
277
201
  console.error(chalk.dim(response.content.slice(0, 500)));
278
202
  }
@@ -280,62 +204,103 @@ export async function analyzeCommand(options) {
280
204
  process.exit(1);
281
205
  }
282
206
  // Write everything
283
- console.log(chalk.bold("\n📝 Writing context files...\n"));
284
- // Index
285
- store.writeIndex(analysis.index);
286
- console.log(` ${chalk.green("✓")} index.md`);
287
- // Facts
207
+ console.log(chalk.bold("\n\ud83d\udcdd Writing context files...\n"));
208
+ // In merge mode, only overwrite index, add new facts/decisions/regressions
209
+ if (!options.merge) {
210
+ store.writeIndex(analysis.index);
211
+ console.log(` ${chalk.green("\u2713")} index.md`);
212
+ }
213
+ else {
214
+ // In merge mode, append new info to index
215
+ const existingIndex = store.readIndex();
216
+ if (!existingIndex || existingIndex.includes("Run `repomemory analyze` to populate")) {
217
+ store.writeIndex(analysis.index);
218
+ console.log(` ${chalk.green("\u2713")} index.md (replaced placeholder)`);
219
+ }
220
+ else {
221
+ console.log(` ${chalk.yellow("\u2192")} index.md (preserved existing)`);
222
+ }
223
+ }
224
+ const existingFilenames = new Set(existingEntries.map((e) => `${e.category}/${e.filename}`));
288
225
  for (const fact of analysis.facts || []) {
226
+ const key = `facts/${fact.filename.toLowerCase().replace(/[^a-z0-9._-]/g, "-")}.md`;
227
+ if (options.merge && existingFilenames.has(key)) {
228
+ console.log(` ${chalk.yellow("\u2192")} ${key} (preserved existing)`);
229
+ continue;
230
+ }
289
231
  const path = store.writeEntry("facts", fact.filename, fact.content);
290
- console.log(` ${chalk.green("")} ${path}`);
232
+ console.log(` ${chalk.green("\u2713")} ${path}`);
291
233
  }
292
- // Decisions
293
234
  for (const decision of analysis.decisions || []) {
235
+ const key = `decisions/${decision.filename.toLowerCase().replace(/[^a-z0-9._-]/g, "-")}.md`;
236
+ if (options.merge && existingFilenames.has(key)) {
237
+ console.log(` ${chalk.yellow("\u2192")} ${key} (preserved existing)`);
238
+ continue;
239
+ }
294
240
  const path = store.writeEntry("decisions", decision.filename, decision.content);
295
- console.log(` ${chalk.green("")} ${path}`);
241
+ console.log(` ${chalk.green("\u2713")} ${path}`);
296
242
  }
297
- // Regressions
298
243
  for (const regression of analysis.regressions || []) {
244
+ const key = `regressions/${regression.filename.toLowerCase().replace(/[^a-z0-9._-]/g, "-")}.md`;
245
+ if (options.merge && existingFilenames.has(key)) {
246
+ console.log(` ${chalk.yellow("\u2192")} ${key} (preserved existing)`);
247
+ continue;
248
+ }
299
249
  const path = store.writeEntry("regressions", regression.filename, regression.content);
300
- console.log(` ${chalk.green("")} ${path}`);
250
+ console.log(` ${chalk.green("\u2713")} ${path}`);
301
251
  }
302
252
  // Build search index
303
- console.log(chalk.bold("\n🔎 Building search index...\n"));
253
+ const spinnerIndex = ora({ text: "Building search index...", color: "cyan" }).start();
304
254
  const searchIndex = new SearchIndex(store.path, store);
305
- searchIndex.rebuild();
255
+ await searchIndex.rebuild();
306
256
  searchIndex.close();
257
+ spinnerIndex.succeed("Search index built");
258
+ // Coverage report
307
259
  const stats = store.getStats();
308
- console.log(` ${chalk.green("✓")} Indexed ${stats.totalFiles} files across ${Object.keys(stats.categories).length} categories`);
309
- // Summary
310
- console.log(chalk.bold("\n✨ Analysis complete!\n"));
311
- console.log(` ${chalk.cyan("Facts:")} ${(analysis.facts || []).length} files`);
312
- console.log(` ${chalk.cyan("Decisions:")} ${(analysis.decisions || []).length} files`);
313
- console.log(` ${chalk.cyan("Regressions:")} ${(analysis.regressions || []).length} files`);
314
- console.log();
260
+ const factsCount = (analysis.facts || []).length;
261
+ const decisionsCount = (analysis.decisions || []).length;
262
+ const regressionsCount = (analysis.regressions || []).length;
263
+ console.log(chalk.bold("\n\u2728 Analysis complete!\n"));
264
+ // Beautiful coverage bars
265
+ printCoverageBar("Facts", factsCount, 8);
266
+ printCoverageBar("Decisions", decisionsCount, 5);
267
+ printCoverageBar("Regressions", regressionsCount, 3);
268
+ console.log(chalk.dim(`\n Total: ${stats.totalFiles} files | ${(stats.totalSize / 1024).toFixed(1)}KB\n`));
315
269
  console.log(chalk.bold("Next:"));
316
- console.log(` ${chalk.dim("")} Review .context/ files and edit as needed`);
317
- console.log(` ${chalk.dim("")} Run ${chalk.cyan("repomemory serve")} to start the MCP server`);
318
- console.log(` ${chalk.dim("")} Commit .context/ to git to share with your team`);
270
+ console.log(` ${chalk.dim("\u2022")} Review .context/ files and edit as needed`);
271
+ console.log(` ${chalk.dim("\u2022")} Run ${chalk.cyan("repomemory setup claude")} to connect your AI tool`);
272
+ console.log(` ${chalk.dim("\u2022")} Run ${chalk.cyan("repomemory analyze --merge")} to update without overwriting`);
273
+ console.log(` ${chalk.dim("\u2022")} Commit .context/ to git to share with your team`);
319
274
  }
320
- function buildAnalysisPrompt(scan, git, recentDiffs) {
275
+ function printCoverageBar(label, count, max) {
276
+ const filled = Math.min(count, max);
277
+ const percentage = Math.min(100, Math.round((count / max) * 100));
278
+ const barLength = 20;
279
+ const filledLength = Math.round((filled / max) * barLength);
280
+ let color = chalk.green;
281
+ if (percentage < 40)
282
+ color = chalk.red;
283
+ else if (percentage < 70)
284
+ color = chalk.yellow;
285
+ const bar = color("\u2588".repeat(filledLength)) + chalk.dim("\u2591".repeat(barLength - filledLength));
286
+ const label_ = label.padEnd(12);
287
+ console.log(` ${label_} ${bar} ${percentage}% (${count} files)`);
288
+ }
289
+ function buildAnalysisPrompt(scan, git, recentDiffs, existingEntries) {
321
290
  const parts = [];
322
- // Project structure
323
291
  parts.push("## Repository Structure\n```");
324
- parts.push(scan.tree.slice(0, 5000)); // Cap tree size
292
+ parts.push(scan.tree.slice(0, 5000));
325
293
  parts.push("```");
326
- // Stats
327
294
  parts.push("\n## Repository Stats");
328
295
  parts.push(`- Files: ${scan.stats.totalFiles}`);
329
296
  parts.push(`- Languages: ${JSON.stringify(scan.stats.languages)}`);
330
297
  parts.push(`- Frameworks: ${scan.stats.frameworks.join(", ") || "none detected"}`);
331
298
  parts.push(`- Package managers: ${scan.stats.packageManagers.join(", ") || "none detected"}`);
332
299
  parts.push(`- Monorepo: ${scan.stats.hasMonorepo}`);
333
- // Key files
334
300
  parts.push("\n## Key Files\n");
335
301
  for (const file of scan.keyFiles) {
336
302
  parts.push(`### ${file.path}\n\`\`\`\n${file.content.slice(0, 8000)}\n\`\`\`\n`);
337
303
  }
338
- // Git info
339
304
  if (git.isGitRepo) {
340
305
  parts.push("\n## Git Information");
341
306
  parts.push(`- Total commits: ${git.totalCommits}`);
@@ -355,6 +320,15 @@ function buildAnalysisPrompt(scan, git, recentDiffs) {
355
320
  parts.push("```");
356
321
  }
357
322
  }
323
+ // If merge mode, tell the AI what already exists
324
+ if (existingEntries && existingEntries.length > 0) {
325
+ parts.push("\n## Existing Context (DO NOT duplicate these — create NEW entries for uncovered areas)");
326
+ for (const entry of existingEntries) {
327
+ if (entry.category !== "root") {
328
+ parts.push(`- ${entry.category}/${entry.filename}: ${entry.title}`);
329
+ }
330
+ }
331
+ }
358
332
  return parts.join("\n");
359
333
  }
360
334
  //# sourceMappingURL=analyze.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function dashboardCommand(options: {
2
+ dir?: string;
3
+ port?: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAKA,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,iBAkE9E"}