repomemory 0.1.0 → 0.2.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.
Files changed (66) hide show
  1. package/.claude-plugin/plugin.json +8 -0
  2. package/.mcp.json +8 -0
  3. package/README.md +151 -104
  4. package/dist/commands/analyze.d.ts +2 -0
  5. package/dist/commands/analyze.d.ts.map +1 -1
  6. package/dist/commands/analyze.js +162 -188
  7. package/dist/commands/analyze.js.map +1 -1
  8. package/dist/commands/dashboard.d.ts +5 -0
  9. package/dist/commands/dashboard.d.ts.map +1 -0
  10. package/dist/commands/dashboard.js +520 -0
  11. package/dist/commands/dashboard.js.map +1 -0
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +33 -34
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/serve.d.ts.map +1 -1
  16. package/dist/commands/serve.js +2 -1
  17. package/dist/commands/serve.js.map +1 -1
  18. package/dist/commands/setup.d.ts.map +1 -1
  19. package/dist/commands/setup.js +151 -35
  20. package/dist/commands/setup.js.map +1 -1
  21. package/dist/commands/status.d.ts +4 -0
  22. package/dist/commands/status.d.ts.map +1 -0
  23. package/dist/commands/status.js +87 -0
  24. package/dist/commands/status.js.map +1 -0
  25. package/dist/commands/sync.d.ts.map +1 -1
  26. package/dist/commands/sync.js +57 -27
  27. package/dist/commands/sync.js.map +1 -1
  28. package/dist/commands/wizard.d.ts +4 -0
  29. package/dist/commands/wizard.d.ts.map +1 -0
  30. package/dist/commands/wizard.js +184 -0
  31. package/dist/commands/wizard.js.map +1 -0
  32. package/dist/index.js +37 -42
  33. package/dist/index.js.map +1 -1
  34. package/dist/lib/ai-provider.d.ts +11 -0
  35. package/dist/lib/ai-provider.d.ts.map +1 -1
  36. package/dist/lib/ai-provider.js +139 -69
  37. package/dist/lib/ai-provider.js.map +1 -1
  38. package/dist/lib/config.d.ts +11 -15
  39. package/dist/lib/config.d.ts.map +1 -1
  40. package/dist/lib/config.js +34 -22
  41. package/dist/lib/config.js.map +1 -1
  42. package/dist/lib/context-store.d.ts +11 -0
  43. package/dist/lib/context-store.d.ts.map +1 -1
  44. package/dist/lib/context-store.js +51 -18
  45. package/dist/lib/context-store.js.map +1 -1
  46. package/dist/lib/git.d.ts +1 -0
  47. package/dist/lib/git.d.ts.map +1 -1
  48. package/dist/lib/git.js +34 -20
  49. package/dist/lib/git.js.map +1 -1
  50. package/dist/lib/json-repair.d.ts +24 -0
  51. package/dist/lib/json-repair.d.ts.map +1 -0
  52. package/dist/lib/json-repair.js +140 -0
  53. package/dist/lib/json-repair.js.map +1 -0
  54. package/dist/lib/repo-scanner.d.ts.map +1 -1
  55. package/dist/lib/repo-scanner.js +103 -26
  56. package/dist/lib/repo-scanner.js.map +1 -1
  57. package/dist/lib/search.d.ts +10 -4
  58. package/dist/lib/search.d.ts.map +1 -1
  59. package/dist/lib/search.js +136 -51
  60. package/dist/lib/search.js.map +1 -1
  61. package/dist/mcp/server.d.ts.map +1 -1
  62. package/dist/mcp/server.js +163 -54
  63. package/dist/mcp/server.js.map +1 -1
  64. package/package.json +25 -9
  65. package/server.json +46 -0
  66. package/skills/repomemory/SKILL.md +29 -0
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAyB;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEpC,yDAAyD;IACzD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAE7D,MAAM,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAyB;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEpC,yDAAyD;IACzD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC,CAAC;IAE/G,MAAM,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,iBAgB1B"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAMA,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,iBA0B1B"}
@@ -1,8 +1,14 @@
1
1
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
2
2
  import { join } from "path";
3
3
  import chalk from "chalk";
4
+ const SUPPORTED_TOOLS = ["claude", "cursor", "copilot", "windsurf", "cline", "aider", "continue"];
4
5
  export async function setupCommand(tool, options) {
5
6
  const repoRoot = options.dir || process.cwd();
7
+ if (!SUPPORTED_TOOLS.includes(tool)) {
8
+ console.log(chalk.red(`Unknown tool: ${tool}`));
9
+ console.log(chalk.dim(`Supported: ${SUPPORTED_TOOLS.join(", ")}`));
10
+ process.exit(1);
11
+ }
6
12
  switch (tool) {
7
13
  case "claude":
8
14
  return setupClaude(repoRoot);
@@ -10,14 +16,17 @@ export async function setupCommand(tool, options) {
10
16
  return setupCursor(repoRoot);
11
17
  case "copilot":
12
18
  return setupCopilot(repoRoot);
13
- default:
14
- console.log(chalk.red(`Unknown tool: ${tool}`));
15
- console.log(chalk.dim("Supported: claude, cursor, copilot"));
16
- process.exit(1);
19
+ case "windsurf":
20
+ return setupWindsurf(repoRoot);
21
+ case "cline":
22
+ return setupCline(repoRoot);
23
+ case "aider":
24
+ return setupAider(repoRoot);
25
+ case "continue":
26
+ return setupContinue(repoRoot);
17
27
  }
18
28
  }
19
29
  function setupClaude(repoRoot) {
20
- // Add MCP server to .claude/settings.json or project-level settings
21
30
  const claudeDir = join(repoRoot, ".claude");
22
31
  mkdirSync(claudeDir, { recursive: true });
23
32
  const settingsPath = join(claudeDir, "settings.json");
@@ -30,7 +39,6 @@ function setupClaude(repoRoot) {
30
39
  // Start fresh
31
40
  }
32
41
  }
33
- // Add MCP server config
34
42
  const mcpServers = (settings.mcpServers || {});
35
43
  mcpServers["repomemory"] = {
36
44
  command: "npx",
@@ -38,24 +46,14 @@ function setupClaude(repoRoot) {
38
46
  };
39
47
  settings.mcpServers = mcpServers;
40
48
  writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
41
- // Also update CLAUDE.md to point to .context/
42
- const claudeMdPath = join(repoRoot, "CLAUDE.md");
43
- const contextNote = `\n## Repository Context\nThis repo uses [repomemory](https://github.com/repomemory/repomemory) for persistent AI memory.\nRead \`.context/index.md\` for instant orientation. The MCP server provides \`context_search\` and \`context_write\` tools.\n`;
44
- if (existsSync(claudeMdPath)) {
45
- const existing = readFileSync(claudeMdPath, "utf-8");
46
- if (!existing.includes("repomemory")) {
47
- writeFileSync(claudeMdPath, existing + contextNote);
48
- console.log(` ${chalk.green("āœ“")} Updated CLAUDE.md with repomemory reference`);
49
- }
50
- }
51
- console.log(chalk.green("\nāœ“ Claude Code configured!\n"));
49
+ console.log(chalk.green("\n\u2713 Claude Code configured!\n"));
52
50
  console.log(chalk.bold("Added to .claude/settings.json:"));
53
51
  console.log(chalk.dim(JSON.stringify({ "repomemory": mcpServers["repomemory"] }, null, 2)));
54
52
  console.log();
55
53
  console.log(chalk.dim("The MCP server will auto-start when Claude Code opens this project."));
54
+ console.log(chalk.dim("Your agent can use context_search, context_write, context_read, context_list, and context_delete."));
56
55
  }
57
56
  function setupCursor(repoRoot) {
58
- // Create .cursor/rules/repomemory.mdc
59
57
  const cursorDir = join(repoRoot, ".cursor", "rules");
60
58
  mkdirSync(cursorDir, { recursive: true });
61
59
  const ruleContent = `---
@@ -83,22 +81,21 @@ Read \`.context/index.md\` for immediate project understanding.
83
81
  ## Context Files
84
82
  \`\`\`
85
83
  .context/
86
- ā”œā”€ā”€ index.md — Quick orientation
87
- ā”œā”€ā”€ facts/ — Architecture, patterns, integrations
88
- ā”œā”€ā”€ decisions/ — Why things are this way
89
- ā”œā”€ā”€ regressions/ — Known gotchas and past bugs
90
- ā”œā”€ā”€ sessions/ — Session summaries
91
- └── changelog/ — Monthly change logs
84
+ \u251c\u2500\u2500 index.md \u2014 Quick orientation
85
+ \u251c\u2500\u2500 facts/ \u2014 Architecture, patterns, integrations
86
+ \u251c\u2500\u2500 decisions/ \u2014 Why things are this way
87
+ \u251c\u2500\u2500 regressions/ \u2014 Known gotchas and past bugs
88
+ \u251c\u2500\u2500 sessions/ \u2014 Session summaries
89
+ \u2514\u2500\u2500 changelog/ \u2014 Monthly change logs
92
90
  \`\`\`
93
91
  `;
94
92
  writeFileSync(join(cursorDir, "repomemory.mdc"), ruleContent);
95
- console.log(chalk.green("\nāœ“ Cursor configured!\n"));
96
- console.log(` ${chalk.green("āœ“")} Created .cursor/rules/repomemory.mdc`);
93
+ console.log(chalk.green("\n\u2713 Cursor configured!\n"));
94
+ console.log(` ${chalk.green("\u2713")} Created .cursor/rules/repomemory.mdc`);
97
95
  console.log();
98
96
  console.log(chalk.dim("Cursor will auto-load the repomemory rule for all files."));
99
97
  }
100
98
  function setupCopilot(repoRoot) {
101
- // Create .github/copilot-instructions.md addition
102
99
  const githubDir = join(repoRoot, ".github");
103
100
  mkdirSync(githubDir, { recursive: true });
104
101
  const instructionsPath = join(githubDir, "copilot-instructions.md");
@@ -113,22 +110,141 @@ This project uses repomemory for persistent AI memory.
113
110
  4. Check \`.context/regressions/\` for known issues
114
111
 
115
112
  ## Context Structure
116
- - \`.context/facts/\` — Architecture, patterns, integrations
117
- - \`.context/decisions/\` — Architectural decisions with rationale
118
- - \`.context/regressions/\` — Known issues and past bugs
119
- - \`.context/sessions/\` — AI session summaries
120
- - \`.context/changelog/\` — Monthly change logs
113
+ - \`.context/facts/\` \u2014 Architecture, patterns, integrations
114
+ - \`.context/decisions/\` \u2014 Architectural decisions with rationale
115
+ - \`.context/regressions/\` \u2014 Known issues and past bugs
116
+ - \`.context/sessions/\` \u2014 AI session summaries
117
+ - \`.context/changelog/\` \u2014 Monthly change logs
121
118
  `;
122
119
  let existing = "";
123
120
  if (existsSync(instructionsPath)) {
124
121
  existing = readFileSync(instructionsPath, "utf-8");
125
122
  if (existing.includes("repomemory")) {
126
- console.log(chalk.yellow("⚠ copilot-instructions.md already references repomemory"));
123
+ console.log(chalk.yellow("\u26a0 copilot-instructions.md already references repomemory"));
127
124
  return;
128
125
  }
129
126
  }
130
127
  writeFileSync(instructionsPath, existing + "\n" + content);
131
- console.log(chalk.green("\nāœ“ GitHub Copilot configured!\n"));
132
- console.log(` ${chalk.green("āœ“")} Updated .github/copilot-instructions.md`);
128
+ console.log(chalk.green("\n\u2713 GitHub Copilot configured!\n"));
129
+ console.log(` ${chalk.green("\u2713")} Updated .github/copilot-instructions.md`);
130
+ }
131
+ function setupWindsurf(repoRoot) {
132
+ const rulesPath = join(repoRoot, ".windsurfrules");
133
+ const content = `# Repository Context — repomemory
134
+
135
+ This project uses repomemory for persistent AI memory across sessions.
136
+
137
+ ## Before Starting Work
138
+ 1. Read \`.context/index.md\` for immediate project understanding
139
+ 2. Search \`.context/facts/\` for architecture documentation relevant to your task
140
+ 3. Check \`.context/decisions/\` before proposing alternative approaches
141
+ 4. Review \`.context/regressions/\` before touching code that has broken before
142
+
143
+ ## During Your Session
144
+ - Document important discoveries in \`.context/sessions/\`
145
+ - Record bug patterns in \`.context/regressions/\`
146
+ - Record architectural decisions in \`.context/decisions/\`
147
+
148
+ ## Context Structure
149
+ - \`.context/facts/\` — Architecture, patterns, how things work
150
+ - \`.context/decisions/\` — Why things are this way (prevents re-debating)
151
+ - \`.context/regressions/\` — Known gotchas (prevents re-breaking)
152
+ - \`.context/sessions/\` — What happened in previous AI sessions
153
+ - \`.context/changelog/\` — Monthly git history
154
+ `;
155
+ if (existsSync(rulesPath)) {
156
+ const existing = readFileSync(rulesPath, "utf-8");
157
+ if (existing.includes("repomemory")) {
158
+ console.log(chalk.yellow("\u26a0 .windsurfrules already references repomemory"));
159
+ return;
160
+ }
161
+ writeFileSync(rulesPath, existing + "\n" + content);
162
+ }
163
+ else {
164
+ writeFileSync(rulesPath, content);
165
+ }
166
+ console.log(chalk.green("\n\u2713 Windsurf configured!\n"));
167
+ console.log(` ${chalk.green("\u2713")} Created/updated .windsurfrules`);
168
+ }
169
+ function setupCline(repoRoot) {
170
+ const rulesPath = join(repoRoot, ".clinerules");
171
+ const content = `# Repository Context — repomemory
172
+
173
+ This project uses repomemory for persistent AI memory across sessions.
174
+
175
+ ## Always Do First
176
+ 1. Read \`.context/index.md\` for project orientation
177
+ 2. Search relevant \`.context/facts/\` files for your current task
178
+ 3. Check \`.context/decisions/\` before suggesting alternatives
179
+ 4. Review \`.context/regressions/\` before modifying fragile code
180
+
181
+ ## Write Back
182
+ - Record session discoveries in \`.context/sessions/\`
183
+ - Record new bug patterns in \`.context/regressions/\`
184
+ - Record new decisions in \`.context/decisions/\`
185
+ `;
186
+ if (existsSync(rulesPath)) {
187
+ const existing = readFileSync(rulesPath, "utf-8");
188
+ if (existing.includes("repomemory")) {
189
+ console.log(chalk.yellow("\u26a0 .clinerules already references repomemory"));
190
+ return;
191
+ }
192
+ writeFileSync(rulesPath, existing + "\n" + content);
193
+ }
194
+ else {
195
+ writeFileSync(rulesPath, content);
196
+ }
197
+ console.log(chalk.green("\n\u2713 Cline configured!\n"));
198
+ console.log(` ${chalk.green("\u2713")} Created/updated .clinerules`);
199
+ }
200
+ function setupAider(repoRoot) {
201
+ const conventionsPath = join(repoRoot, ".aider.conf.yml");
202
+ const readPath = join(repoRoot, ".context", "index.md");
203
+ // Aider uses read: to auto-include files in context
204
+ const content = `# repomemory — auto-include context files
205
+ read:
206
+ - .context/index.md
207
+ `;
208
+ if (existsSync(conventionsPath)) {
209
+ const existing = readFileSync(conventionsPath, "utf-8");
210
+ if (existing.includes("repomemory") || existing.includes(".context/")) {
211
+ console.log(chalk.yellow("\u26a0 .aider.conf.yml already references repomemory"));
212
+ return;
213
+ }
214
+ writeFileSync(conventionsPath, existing + "\n" + content);
215
+ }
216
+ else {
217
+ writeFileSync(conventionsPath, content);
218
+ }
219
+ console.log(chalk.green("\n\u2713 Aider configured!\n"));
220
+ console.log(` ${chalk.green("\u2713")} Created/updated .aider.conf.yml`);
221
+ console.log(chalk.dim(` Aider will auto-include .context/index.md in every session.`));
222
+ if (!existsSync(readPath)) {
223
+ console.log(chalk.yellow(` \u26a0 Run \`repomemory init && repomemory analyze\` first to generate context files.`));
224
+ }
225
+ }
226
+ function setupContinue(repoRoot) {
227
+ const continueDir = join(repoRoot, ".continue");
228
+ mkdirSync(continueDir, { recursive: true });
229
+ const rulesPath = join(continueDir, "rules", "repomemory.md");
230
+ mkdirSync(join(continueDir, "rules"), { recursive: true });
231
+ const content = `# Repository Context — repomemory
232
+
233
+ This project uses repomemory for persistent AI memory across sessions.
234
+
235
+ ## Before Starting Work
236
+ 1. Read \`.context/index.md\` for project orientation
237
+ 2. Check \`.context/facts/\` for architecture docs
238
+ 3. Review \`.context/decisions/\` before proposing alternatives
239
+ 4. Check \`.context/regressions/\` for known issues
240
+
241
+ ## During Your Session
242
+ - Record discoveries in \`.context/sessions/\`
243
+ - Record bug patterns in \`.context/regressions/\`
244
+ - Record decisions in \`.context/decisions/\`
245
+ `;
246
+ writeFileSync(rulesPath, content);
247
+ console.log(chalk.green("\n\u2713 Continue configured!\n"));
248
+ console.log(` ${chalk.green("\u2713")} Created .continue/rules/repomemory.md`);
133
249
  }
134
250
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function statusCommand(options: {
2
+ dir?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,iBA2E5D"}
@@ -0,0 +1,87 @@
1
+ import chalk from "chalk";
2
+ import { loadConfig } from "../lib/config.js";
3
+ import { ContextStore } from "../lib/context-store.js";
4
+ export async function statusCommand(options) {
5
+ const repoRoot = options.dir || process.cwd();
6
+ const config = loadConfig(repoRoot);
7
+ const store = new ContextStore(repoRoot, config);
8
+ if (!store.exists()) {
9
+ console.log(chalk.red("\u2717 No .context/ directory found."));
10
+ console.log(chalk.dim(" Run `repomemory init` to get started."));
11
+ process.exit(1);
12
+ }
13
+ const stats = store.getStats();
14
+ const entries = store.listEntries();
15
+ console.log(chalk.bold("\n\ud83d\udcca repomemory status\n"));
16
+ console.log(` ${chalk.cyan("Total files:")} ${stats.totalFiles}`);
17
+ console.log(` ${chalk.cyan("Total size:")} ${(stats.totalSize / 1024).toFixed(1)}KB`);
18
+ console.log(` ${chalk.cyan("Provider:")} ${config.provider} (${config.model})`);
19
+ // Freshness info
20
+ if (stats.newestFile) {
21
+ console.log(` ${chalk.cyan("Last updated:")} ${formatAge(stats.newestFile.age)} (${stats.newestFile.path})`);
22
+ }
23
+ if (stats.stalestFile && stats.stalestFile.age > 30 * 24 * 60 * 60 * 1000) {
24
+ console.log(` ${chalk.yellow("\u26a0 Stalest file:")} ${formatAge(stats.stalestFile.age)} (${stats.stalestFile.path})`);
25
+ }
26
+ console.log();
27
+ // Category breakdown with visual bars
28
+ const maxCount = Math.max(...Object.values(stats.categories).map(Number), 1);
29
+ for (const [category, count] of Object.entries(stats.categories)) {
30
+ const barLength = 15;
31
+ const filled = Math.round((count / maxCount) * barLength);
32
+ const bar = chalk.cyan("\u2588".repeat(filled)) + chalk.dim("\u2591".repeat(barLength - filled));
33
+ const label = (category + "/").padEnd(14);
34
+ console.log(` ${chalk.bold(label)} ${bar} ${count} files`);
35
+ const catEntries = entries.filter((e) => e.category === category);
36
+ for (const entry of catEntries) {
37
+ const sizeKb = (entry.sizeBytes / 1024).toFixed(1);
38
+ const age = formatAge(Date.now() - entry.lastModified.getTime());
39
+ const staleMarker = isStale(entry.lastModified) ? chalk.yellow(" (stale)") : "";
40
+ console.log(` ${chalk.dim("\u2022")} ${entry.filename} \u2014 ${entry.title} (${sizeKb}KB, ${age})${staleMarker}`);
41
+ }
42
+ console.log();
43
+ }
44
+ // Coverage assessment
45
+ const factsCount = stats.categories["facts"] || 0;
46
+ const decisionsCount = stats.categories["decisions"] || 0;
47
+ const regressionsCount = stats.categories["regressions"] || 0;
48
+ const sessionsCount = stats.categories["sessions"] || 0;
49
+ const suggestions = [];
50
+ if (factsCount === 0)
51
+ suggestions.push("Run `repomemory analyze` to generate architecture facts");
52
+ if (decisionsCount === 0)
53
+ suggestions.push("Document key architectural decisions in decisions/");
54
+ if (regressionsCount === 0)
55
+ suggestions.push("Record known gotchas in regressions/ to prevent repeat bugs");
56
+ if (sessionsCount === 0)
57
+ suggestions.push("AI agents can use context_write to record session summaries");
58
+ if (stats.stalestFile && stats.stalestFile.age > 90 * 24 * 60 * 60 * 1000) {
59
+ suggestions.push("Some context files are >90 days old \u2014 run `repomemory analyze --merge` to refresh");
60
+ }
61
+ if (suggestions.length > 0) {
62
+ console.log(chalk.bold(" Suggestions:"));
63
+ for (const suggestion of suggestions) {
64
+ console.log(` ${chalk.yellow("\u2192")} ${suggestion}`);
65
+ }
66
+ console.log();
67
+ }
68
+ }
69
+ function formatAge(ms) {
70
+ const seconds = Math.floor(ms / 1000);
71
+ if (seconds < 60)
72
+ return "just now";
73
+ if (seconds < 3600)
74
+ return `${Math.floor(seconds / 60)}m ago`;
75
+ if (seconds < 86400)
76
+ return `${Math.floor(seconds / 3600)}h ago`;
77
+ const days = Math.floor(seconds / 86400);
78
+ if (days < 30)
79
+ return `${days}d ago`;
80
+ if (days < 365)
81
+ return `${Math.floor(days / 30)}mo ago`;
82
+ return `${Math.floor(days / 365)}y ago`;
83
+ }
84
+ function isStale(date) {
85
+ return Date.now() - date.getTime() > 60 * 24 * 60 * 60 * 1000; // 60 days
86
+ }
87
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAQA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,iBAkFA"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAQA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,iBAuHA"}
@@ -4,74 +4,104 @@ import { join } from "path";
4
4
  import { loadConfig } from "../lib/config.js";
5
5
  import { ContextStore } from "../lib/context-store.js";
6
6
  import { SearchIndex } from "../lib/search.js";
7
- import { getGitDiffSummary } from "../lib/git.js";
7
+ import { getGitDiffSummary, getLastCommitHash } from "../lib/git.js";
8
8
  export async function syncCommand(options) {
9
9
  const repoRoot = options.dir || process.cwd();
10
10
  const config = loadConfig(repoRoot);
11
11
  const store = new ContextStore(repoRoot, config);
12
12
  if (!store.exists()) {
13
- console.log(chalk.red("āœ— No .context/ directory found. Run `repomemory init` first."));
13
+ console.log(chalk.red("\u2717 No .context/ directory found. Run `repomemory init` first."));
14
14
  process.exit(1);
15
15
  }
16
- // Determine sync period
17
16
  const now = new Date();
18
17
  const yearMonth = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}`;
19
- // Check last sync timestamp
18
+ // Track last sync with both date and commit hash for deduplication
20
19
  const syncFile = join(store.path, ".last-sync");
20
+ const hashFile = join(store.path, ".last-sync-hash");
21
21
  let lastSync = options.since || "";
22
+ let lastHash = "";
22
23
  if (!lastSync && existsSync(syncFile)) {
23
24
  lastSync = readFileSync(syncFile, "utf-8").trim();
24
25
  }
26
+ if (existsSync(hashFile)) {
27
+ lastHash = readFileSync(hashFile, "utf-8").trim();
28
+ }
25
29
  if (!lastSync) {
26
- // Default to 30 days ago
27
30
  const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
28
31
  lastSync = thirtyDaysAgo.toISOString().split("T")[0];
29
32
  }
30
- console.log(chalk.bold(`\nšŸ“… Syncing git history since ${lastSync}...\n`));
33
+ // Get current HEAD hash
34
+ const currentHash = getLastCommitHash(repoRoot);
35
+ // Skip if no new commits since last sync
36
+ if (lastHash && currentHash && lastHash === currentHash) {
37
+ console.log(chalk.dim("\n Already up to date. No new commits since last sync."));
38
+ return;
39
+ }
40
+ console.log(chalk.bold(`\n\ud83d\udcc5 Syncing git history since ${lastSync}...\n`));
31
41
  const commits = getGitDiffSummary(repoRoot, lastSync);
32
42
  if (!commits.trim()) {
33
43
  console.log(chalk.dim(" No new commits since last sync."));
44
+ // Still update the hash
45
+ if (currentHash) {
46
+ writeFileSync(hashFile, currentHash);
47
+ }
34
48
  return;
35
49
  }
36
50
  const commitLines = commits.split("\n").filter(Boolean);
37
- console.log(` ${chalk.cyan("New commits:")} ${commitLines.length}`);
38
- // Build changelog entry
39
- const changelogContent = [
40
- `# Changelog — ${yearMonth}`,
41
- "",
42
- `*Synced: ${now.toISOString().split("T")[0]}*`,
43
- "",
44
- "## Commits",
45
- "",
46
- ...commitLines.map((line) => `- ${line}`),
47
- "",
48
- ].join("\n");
49
- // Write or append to monthly changelog
51
+ // Deduplicate: if we have an existing changelog, filter out commits we already recorded
50
52
  const changelogFile = `${yearMonth}.md`;
51
53
  const existingChangelog = store.readEntry("changelog", changelogFile);
54
+ let newCommitLines = commitLines;
55
+ if (existingChangelog) {
56
+ const existingHashes = new Set([...existingChangelog.matchAll(/\b([a-f0-9]{7,})\b/g)].map((m) => m[1]));
57
+ newCommitLines = commitLines.filter((line) => {
58
+ const hashMatch = line.match(/^([a-f0-9]{7,})\s/);
59
+ return !hashMatch || !existingHashes.has(hashMatch[1]);
60
+ });
61
+ }
62
+ if (newCommitLines.length === 0) {
63
+ console.log(chalk.dim(" All commits already recorded."));
64
+ writeFileSync(syncFile, now.toISOString().split("T")[0]);
65
+ if (currentHash)
66
+ writeFileSync(hashFile, currentHash);
67
+ return;
68
+ }
69
+ console.log(` ${chalk.cyan("New commits:")} ${newCommitLines.length}`);
52
70
  if (existingChangelog) {
53
- // Append new commits section
54
71
  const appendContent = [
55
72
  "",
56
73
  `## Synced ${now.toISOString().split("T")[0]}`,
57
74
  "",
58
- ...commitLines.map((line) => `- ${line}`),
75
+ ...newCommitLines.map((line) => `- ${line}`),
59
76
  "",
60
77
  ].join("\n");
61
78
  store.appendEntry("changelog", changelogFile, appendContent);
62
- console.log(` ${chalk.green("āœ“")} Appended to changelog/${changelogFile}`);
79
+ console.log(` ${chalk.green("\u2713")} Appended to changelog/${changelogFile}`);
63
80
  }
64
81
  else {
82
+ const changelogContent = [
83
+ `# Changelog \u2014 ${yearMonth}`,
84
+ "",
85
+ `*Synced: ${now.toISOString().split("T")[0]}*`,
86
+ "",
87
+ "## Commits",
88
+ "",
89
+ ...newCommitLines.map((line) => `- ${line}`),
90
+ "",
91
+ ].join("\n");
65
92
  store.writeEntry("changelog", changelogFile, changelogContent);
66
- console.log(` ${chalk.green("āœ“")} Created changelog/${changelogFile}`);
93
+ console.log(` ${chalk.green("\u2713")} Created changelog/${changelogFile}`);
67
94
  }
68
- // Update last sync timestamp
95
+ // Update sync markers
69
96
  writeFileSync(syncFile, now.toISOString().split("T")[0]);
97
+ if (currentHash) {
98
+ writeFileSync(hashFile, currentHash);
99
+ }
70
100
  // Rebuild search index
71
101
  const searchIndex = new SearchIndex(store.path, store);
72
- searchIndex.rebuild();
102
+ await searchIndex.rebuild();
73
103
  searchIndex.close();
74
- console.log(` ${chalk.green("āœ“")} Search index updated`);
75
- console.log(chalk.bold("\n✨ Sync complete!\n"));
104
+ console.log(` ${chalk.green("\u2713")} Search index updated`);
105
+ console.log(chalk.bold("\n\u2728 Sync complete!\n"));
76
106
  }
77
107
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function wizardCommand(options: {
2
+ dir?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/commands/wizard.ts"],"names":[],"mappings":"AAkCA,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,iBAqL5D"}