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.
- package/.claude-plugin/plugin.json +8 -0
- package/.mcp.json +8 -0
- package/README.md +151 -104
- package/dist/commands/analyze.d.ts +2 -0
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +162 -188
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/dashboard.d.ts +5 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +520 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +33 -34
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +2 -1
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +151 -35
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.d.ts +4 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +87 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +57 -27
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/wizard.d.ts +4 -0
- package/dist/commands/wizard.d.ts.map +1 -0
- package/dist/commands/wizard.js +184 -0
- package/dist/commands/wizard.js.map +1 -0
- package/dist/index.js +37 -42
- package/dist/index.js.map +1 -1
- package/dist/lib/ai-provider.d.ts +11 -0
- package/dist/lib/ai-provider.d.ts.map +1 -1
- package/dist/lib/ai-provider.js +139 -69
- package/dist/lib/ai-provider.js.map +1 -1
- package/dist/lib/config.d.ts +11 -15
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +34 -22
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/context-store.d.ts +11 -0
- package/dist/lib/context-store.d.ts.map +1 -1
- package/dist/lib/context-store.js +51 -18
- package/dist/lib/context-store.js.map +1 -1
- package/dist/lib/git.d.ts +1 -0
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +34 -20
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/json-repair.d.ts +24 -0
- package/dist/lib/json-repair.d.ts.map +1 -0
- package/dist/lib/json-repair.js +140 -0
- package/dist/lib/json-repair.js.map +1 -0
- package/dist/lib/repo-scanner.d.ts.map +1 -1
- package/dist/lib/repo-scanner.js +103 -26
- package/dist/lib/repo-scanner.js.map +1 -1
- package/dist/lib/search.d.ts +10 -4
- package/dist/lib/search.d.ts.map +1 -1
- package/dist/lib/search.js +136 -51
- package/dist/lib/search.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +163 -54
- package/dist/mcp/server.js.map +1 -1
- package/package.json +25 -9
- package/server.json +46 -0
- 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,
|
|
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":"
|
|
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"}
|
package/dist/commands/setup.js
CHANGED
|
@@ -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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
|
96
|
-
console.log(` ${chalk.green("
|
|
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/\`
|
|
117
|
-
- \`.context/decisions/\`
|
|
118
|
-
- \`.context/regressions/\`
|
|
119
|
-
- \`.context/sessions/\`
|
|
120
|
-
- \`.context/changelog/\`
|
|
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("
|
|
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
|
|
132
|
-
console.log(` ${chalk.green("
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,OAAyB;IAEzB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAE9C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -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("
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
...
|
|
75
|
+
...newCommitLines.map((line) => `- ${line}`),
|
|
59
76
|
"",
|
|
60
77
|
].join("\n");
|
|
61
78
|
store.appendEntry("changelog", changelogFile, appendContent);
|
|
62
|
-
console.log(` ${chalk.green("
|
|
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("
|
|
93
|
+
console.log(` ${chalk.green("\u2713")} Created changelog/${changelogFile}`);
|
|
67
94
|
}
|
|
68
|
-
// Update
|
|
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("
|
|
75
|
-
console.log(chalk.bold("\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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|