@agentbrain/mcp-server 1.4.38 → 1.4.41
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/dist/tools/save-context.d.ts.map +1 -1
- package/dist/tools/save-context.js +68 -63
- package/dist/tools/save-context.js.map +1 -1
- package/dist/tools/setup-repo.d.ts +1 -0
- package/dist/tools/setup-repo.d.ts.map +1 -1
- package/dist/tools/setup-repo.js +19 -3
- package/dist/tools/setup-repo.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-context.d.ts","sourceRoot":"","sources":["../../src/tools/save-context.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,cAAc,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAA;IAC5D,OAAO,EAAE,MAAM,CAAA;CAChB;
|
|
1
|
+
{"version":3,"file":"save-context.d.ts","sourceRoot":"","sources":["../../src/tools/save-context.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,cAAc,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAA;IAC5D,OAAO,EAAE,MAAM,CAAA;CAChB;AAgGD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4HrF;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;CA0B7B,CAAA"}
|
|
@@ -73,31 +73,28 @@ async function hasAgentBrainSection(filePath) {
|
|
|
73
73
|
return content.includes('── AgentBrain ──');
|
|
74
74
|
}
|
|
75
75
|
/**
|
|
76
|
-
*
|
|
76
|
+
* Update or append AgentBrain section to agent file
|
|
77
77
|
*/
|
|
78
|
-
async function
|
|
78
|
+
async function updateOrAppendAgentSection(filePath, content) {
|
|
79
79
|
const marker = '# ── AgentBrain ──────────────────────────────';
|
|
80
80
|
const endMarker = '# ── End AgentBrain ──────────────────────────';
|
|
81
|
-
if (await hasAgentBrainSection(filePath)) {
|
|
82
|
-
return; // Already has AgentBrain section
|
|
83
|
-
}
|
|
84
81
|
let existingContent = '';
|
|
85
82
|
if (existsSync(filePath)) {
|
|
86
83
|
existingContent = await readFile(filePath, 'utf-8');
|
|
87
84
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
85
|
+
// Check if AgentBrain section already exists
|
|
86
|
+
if (existingContent.includes(marker)) {
|
|
87
|
+
// Replace existing section
|
|
88
|
+
const beforeMarker = existingContent.substring(0, existingContent.indexOf(marker));
|
|
89
|
+
const afterMarker = existingContent.substring(existingContent.indexOf(endMarker) + endMarker.length);
|
|
90
|
+
const newContent = `${beforeMarker}${marker}\n${content}\n${endMarker}${afterMarker}`;
|
|
91
|
+
await writeFile(filePath, newContent, 'utf-8');
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// Append new section
|
|
95
|
+
const agentBrainSection = `\n${marker}\n${content}\n${endMarker}\n`;
|
|
96
|
+
await writeFile(filePath, existingContent + agentBrainSection, 'utf-8');
|
|
98
97
|
}
|
|
99
|
-
// Modern files get replaced entirely (they're auto-loaded)
|
|
100
|
-
await writeFile(filePath, content, 'utf-8');
|
|
101
98
|
}
|
|
102
99
|
export async function saveContext(input) {
|
|
103
100
|
const { repo_path, context, dependency_map, patterns } = input;
|
|
@@ -145,66 +142,74 @@ export async function saveContext(input) {
|
|
|
145
142
|
filesWritten.push('.agentbrain/cache.json');
|
|
146
143
|
// Step 4: Update .gitignore
|
|
147
144
|
await ensureGitignore(expandedPath);
|
|
148
|
-
// Step 5:
|
|
149
|
-
const agentType = detectAgentType(expandedPath);
|
|
150
|
-
// Step 6: Create agent files based on detection
|
|
145
|
+
// Step 5 & 6: Create agent files based on directory detection
|
|
151
146
|
const modernContent = getAgentFileContent(true);
|
|
152
147
|
const legacyContent = getAgentFileContent(false);
|
|
153
|
-
|
|
154
|
-
|
|
148
|
+
let message = '';
|
|
149
|
+
// CURSOR: Check if .cursor/ directory exists
|
|
150
|
+
const cursorDirExists = existsSync(join(expandedPath, '.cursor'));
|
|
151
|
+
if (cursorDirExists) {
|
|
152
|
+
// Modern Cursor: ONLY create .cursor/rules/agentbrain.mdc
|
|
155
153
|
const modernPath = join(expandedPath, '.cursor', 'rules', 'agentbrain.mdc');
|
|
156
|
-
|
|
154
|
+
const modernDir = join(expandedPath, '.cursor', 'rules');
|
|
155
|
+
if (!existsSync(modernDir)) {
|
|
156
|
+
await mkdir(modernDir, { recursive: true });
|
|
157
|
+
}
|
|
158
|
+
await updateOrAppendAgentSection(modernPath, modernContent);
|
|
157
159
|
filesWritten.push('.cursor/rules/agentbrain.mdc');
|
|
158
|
-
|
|
160
|
+
message = 'Detected Cursor (.cursor/ directory found). Created/updated .cursor/rules/agentbrain.mdc';
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
// Legacy Cursor: ONLY create .cursorrules
|
|
159
164
|
const legacyPath = join(expandedPath, '.cursorrules');
|
|
160
|
-
await
|
|
165
|
+
await updateOrAppendAgentSection(legacyPath, legacyContent);
|
|
161
166
|
filesWritten.push('.cursorrules');
|
|
167
|
+
message = 'Created/updated .cursorrules';
|
|
162
168
|
}
|
|
163
|
-
|
|
164
|
-
|
|
169
|
+
// WINDSURF: Check if .windsurf/ directory exists
|
|
170
|
+
const windsurfDirExists = existsSync(join(expandedPath, '.windsurf'));
|
|
171
|
+
if (windsurfDirExists) {
|
|
172
|
+
// Modern Windsurf: ONLY create .windsurf/rules/agentbrain.md
|
|
165
173
|
const modernPath = join(expandedPath, '.windsurf', 'rules', 'agentbrain.md');
|
|
166
|
-
|
|
174
|
+
const modernDir = join(expandedPath, '.windsurf', 'rules');
|
|
175
|
+
if (!existsSync(modernDir)) {
|
|
176
|
+
await mkdir(modernDir, { recursive: true });
|
|
177
|
+
}
|
|
178
|
+
await updateOrAppendAgentSection(modernPath, legacyContent); // Windsurf uses plain markdown
|
|
167
179
|
filesWritten.push('.windsurf/rules/agentbrain.md');
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
filesWritten.push('.windsurfrules');
|
|
172
|
-
}
|
|
173
|
-
else if (agentType === 'claude') {
|
|
174
|
-
// Just create/append to CLAUDE.md
|
|
175
|
-
const claudePath = join(expandedPath, 'CLAUDE.md');
|
|
176
|
-
await appendToAgentFile(claudePath, legacyContent);
|
|
177
|
-
filesWritten.push('CLAUDE.md');
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
// Unknown - create all legacy files as safe default
|
|
181
|
-
const claudePath = join(expandedPath, 'CLAUDE.md');
|
|
182
|
-
const cursorPath = join(expandedPath, '.cursorrules');
|
|
183
|
-
const windsurfPath = join(expandedPath, '.windsurfrules');
|
|
184
|
-
await appendToAgentFile(claudePath, legacyContent);
|
|
185
|
-
await appendToAgentFile(cursorPath, legacyContent);
|
|
186
|
-
await appendToAgentFile(windsurfPath, legacyContent);
|
|
187
|
-
filesWritten.push('CLAUDE.md', '.cursorrules', '.windsurfrules');
|
|
188
|
-
}
|
|
189
|
-
// Step 7: Generate message
|
|
190
|
-
let message = '';
|
|
191
|
-
if (agentType === 'cursor') {
|
|
192
|
-
message = `Detected Cursor (.cursor/ directory found). Created .cursor/rules/agentbrain.mdc (modern, always applied) and .cursorrules (legacy fallback).`;
|
|
193
|
-
}
|
|
194
|
-
else if (agentType === 'windsurf') {
|
|
195
|
-
message = `Detected Windsurf (.windsurf/ directory found). Created .windsurf/rules/agentbrain.md (modern, always applied) and .windsurfrules (legacy fallback).`;
|
|
196
|
-
}
|
|
197
|
-
else if (agentType === 'claude') {
|
|
198
|
-
message = `Detected Claude (CLAUDE.md found). Updated CLAUDE.md with AgentBrain context loading instructions.`;
|
|
180
|
+
if (message)
|
|
181
|
+
message += '; ';
|
|
182
|
+
message += 'Detected Windsurf (.windsurf/ directory found). Created/updated .windsurf/rules/agentbrain.md';
|
|
199
183
|
}
|
|
200
184
|
else {
|
|
201
|
-
|
|
202
|
-
|
|
185
|
+
// Legacy Windsurf: ONLY create .windsurfrules
|
|
186
|
+
const legacyPath = join(expandedPath, '.windsurfrules');
|
|
187
|
+
await updateOrAppendAgentSection(legacyPath, legacyContent);
|
|
188
|
+
filesWritten.push('.windsurfrules');
|
|
189
|
+
if (message)
|
|
190
|
+
message += '; ';
|
|
191
|
+
message += 'Created/updated .windsurfrules';
|
|
192
|
+
}
|
|
193
|
+
// CLAUDE: Always create/update CLAUDE.md
|
|
194
|
+
const claudePath = join(expandedPath, 'CLAUDE.md');
|
|
195
|
+
await updateOrAppendAgentSection(claudePath, legacyContent);
|
|
196
|
+
filesWritten.push('CLAUDE.md');
|
|
197
|
+
if (message)
|
|
198
|
+
message += '; ';
|
|
199
|
+
message += 'Created/updated CLAUDE.md';
|
|
200
|
+
// Determine agent type for response
|
|
201
|
+
let detectedAgent = 'unknown';
|
|
202
|
+
if (cursorDirExists)
|
|
203
|
+
detectedAgent = 'cursor';
|
|
204
|
+
else if (windsurfDirExists)
|
|
205
|
+
detectedAgent = 'windsurf';
|
|
206
|
+
else if (existsSync(join(expandedPath, 'CLAUDE.md')))
|
|
207
|
+
detectedAgent = 'claude';
|
|
203
208
|
return {
|
|
204
209
|
success: true,
|
|
205
210
|
files_written: filesWritten,
|
|
206
|
-
agent_detected:
|
|
207
|
-
message: `Context saved successfully. ${message}
|
|
211
|
+
agent_detected: detectedAgent,
|
|
212
|
+
message: `Context saved successfully. ${message}`,
|
|
208
213
|
};
|
|
209
214
|
}
|
|
210
215
|
export const saveContextSchema = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-context.js","sourceRoot":"","sources":["../../src/tools/save-context.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAE9D;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;AACtB,CAAC;AAkBD;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,cAAuB;IAClD,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;gDAmB0B,CAAA;IAE9C,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;;;;;EAKT,WAAW,EAAE,CAAA;IACb,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IAClD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjD,OAAO,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;AAC7C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"save-context.js","sourceRoot":"","sources":["../../src/tools/save-context.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAE9D;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;AACtB,CAAC;AAkBD;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,cAAuB;IAClD,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;gDAmB0B,CAAA;IAE9C,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;;;;;EAKT,WAAW,EAAE,CAAA;IACb,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IAClD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjD,OAAO,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;AAC7C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,0BAA0B,CAAC,QAAgB,EAAE,OAAe;IACzE,MAAM,MAAM,GAAG,gDAAgD,CAAA;IAC/D,MAAM,SAAS,GAAG,gDAAgD,CAAA;IAElE,IAAI,eAAe,GAAG,EAAE,CAAA;IACxB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,eAAe,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACrD,CAAC;IAED,6CAA6C;IAC7C,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,2BAA2B;QAC3B,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAClF,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAC3C,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,CACtD,CAAA;QACD,MAAM,UAAU,GAAG,GAAG,YAAY,GAAG,MAAM,KAAK,OAAO,KAAK,SAAS,GAAG,WAAW,EAAE,CAAA;QACrF,MAAM,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC;SAAM,CAAC;QACN,qBAAqB;QACrB,MAAM,iBAAiB,GAAG,KAAK,MAAM,KAAK,OAAO,KAAK,SAAS,IAAI,CAAA;QACnE,MAAM,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,EAAE,OAAO,CAAC,CAAA;IACzE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAE9D,gDAAgD;IAChD,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;IAE1C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;IACpD,MAAM,YAAY,GAAa,EAAE,CAAA;IAEjC,2DAA2D;IAC3D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,wCAAwC;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;IAEpD,MAAM,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9C,MAAM,SAAS,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IACpD,MAAM,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAEhD,YAAY,CAAC,IAAI,CAAC,wBAAwB,EAAE,+BAA+B,EAAE,yBAAyB,CAAC,CAAA;IAEvG,oDAAoD;IACpD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAA;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IAChD,MAAM,KAAK,GAAG;QACZ,OAAO;QACP,IAAI,EAAE;YACJ,OAAO,EAAE;gBACP,IAAI,EAAE,SAAkB;gBACxB,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC;YACD,gBAAgB,EAAE;gBAChB,IAAI,EAAE,gBAAyB;gBAC/B,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,UAAmB;gBACzB,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC;SACF;QACD,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAClC,CAAA;IAED,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IACnE,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IAE3C,4BAA4B;IAC5B,MAAM,eAAe,CAAC,YAAY,CAAC,CAAA;IAEnC,8DAA8D;IAC9D,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC/C,MAAM,aAAa,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAEhD,IAAI,OAAO,GAAG,EAAE,CAAA;IAEhB,6CAA6C;IAC7C,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAA;IACjE,IAAI,eAAe,EAAE,CAAC;QACpB,0DAA0D;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAA;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QACxD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7C,CAAC;QACD,MAAM,0BAA0B,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;QAC3D,YAAY,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;QACjD,OAAO,GAAG,0FAA0F,CAAA;IACtG,CAAC;SAAM,CAAC;QACN,0CAA0C;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;QACrD,MAAM,0BAA0B,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;QAC3D,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACjC,OAAO,GAAG,8BAA8B,CAAA;IAC1C,CAAC;IAED,iDAAiD;IACjD,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAA;IACrE,IAAI,iBAAiB,EAAE,CAAC;QACtB,6DAA6D;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,CAAA;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;QAC1D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7C,CAAC;QACD,MAAM,0BAA0B,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA,CAAC,+BAA+B;QAC3F,YAAY,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;QAClD,IAAI,OAAO;YAAE,OAAO,IAAI,IAAI,CAAA;QAC5B,OAAO,IAAI,+FAA+F,CAAA;IAC5G,CAAC;SAAM,CAAC;QACN,8CAA8C;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;QACvD,MAAM,0BAA0B,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;QAC3D,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACnC,IAAI,OAAO;YAAE,OAAO,IAAI,IAAI,CAAA;QAC5B,OAAO,IAAI,gCAAgC,CAAA;IAC7C,CAAC;IAED,yCAAyC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAClD,MAAM,0BAA0B,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;IAC3D,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC9B,IAAI,OAAO;QAAE,OAAO,IAAI,IAAI,CAAA;IAC5B,OAAO,IAAI,2BAA2B,CAAA;IAEtC,oCAAoC;IACpC,IAAI,aAAa,GAAc,SAAS,CAAA;IACxC,IAAI,eAAe;QAAE,aAAa,GAAG,QAAQ,CAAA;SACxC,IAAI,iBAAiB;QAAE,aAAa,GAAG,UAAU,CAAA;SACjD,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAAE,aAAa,GAAG,QAAQ,CAAA;IAE9E,OAAO;QACL,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,YAAY;QAC3B,cAAc,EAAE,aAAa;QAC7B,OAAO,EAAE,+BAA+B,OAAO,EAAE;KAClD,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,8KAA8K;IAChL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4DAA4D;aAC1E;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iEAAiE;aAC/E;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4DAA4D;aAC1E;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,CAAC;KACjE;CACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-repo.d.ts","sourceRoot":"","sources":["../../src/tools/setup-repo.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KAChB,CAAC,CAAA;IACF,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"setup-repo.d.ts","sourceRoot":"","sources":["../../src/tools/setup-repo.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KAChB,CAAC,CAAA;IACF,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAoE/E;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;CAc3B,CAAA"}
|
package/dist/tools/setup-repo.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// MCP tool: setup_repo - scan repo and return data for agent to generate context
|
|
2
|
-
import { scanRepository, readFileContent } from '@agentbrain/core';
|
|
2
|
+
import { scanRepository, readFileContent, installPostCommitHook, isGitRepository } from '@agentbrain/core';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
5
|
/**
|
|
@@ -32,7 +32,22 @@ export async function setupRepo(input) {
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
//
|
|
35
|
+
// Install git hook if in a git repository
|
|
36
|
+
let hookInstalled = false;
|
|
37
|
+
if (isGitRepository(expandedPath)) {
|
|
38
|
+
try {
|
|
39
|
+
await installPostCommitHook(expandedPath);
|
|
40
|
+
hookInstalled = true;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Hook installation failed silently — not critical
|
|
44
|
+
hookInstalled = false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Instructions for the agent - vary based on hook installation
|
|
48
|
+
const hookNote = hookInstalled
|
|
49
|
+
? '\n\nGit hook installed. Context will auto-refresh after every commit — no manual updates needed.'
|
|
50
|
+
: '\n\nGit hook could not be installed. You can manually refresh context by calling setup_repo() again.';
|
|
36
51
|
const instructions = `Based on the file tree and key files above, generate:
|
|
37
52
|
|
|
38
53
|
1. context.md — Architecture overview, key modules, entry points, what the codebase does, tech stack
|
|
@@ -48,11 +63,12 @@ Guidelines:
|
|
|
48
63
|
- Focus on what's unique to this codebase
|
|
49
64
|
- Include specific file paths and module names
|
|
50
65
|
- Identify the main entry points and core business logic
|
|
51
|
-
- Note any important patterns or conventions used consistently`;
|
|
66
|
+
- Note any important patterns or conventions used consistently${hookNote}`;
|
|
52
67
|
return {
|
|
53
68
|
repo_path: expandedPath,
|
|
54
69
|
file_tree: fileTree,
|
|
55
70
|
key_files: keyFiles,
|
|
71
|
+
hook_installed: hookInstalled,
|
|
56
72
|
instructions,
|
|
57
73
|
};
|
|
58
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-repo.js","sourceRoot":"","sources":["../../src/tools/setup-repo.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"setup-repo.js","sourceRoot":"","sources":["../../src/tools/setup-repo.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;AACtB,CAAC;AAiBD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAqB;IACnD,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAE3B,gDAAgD;IAChD,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;IAE1C,4CAA4C;IAC5C,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;IAEvE,gCAAgC;IAChC,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC;SACvC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,kDAAkD;IAClD,MAAM,QAAQ,GAA6C,EAAE,CAAA;IAE7D,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,IAAI,aAAa,GAAG,KAAK,CAAA;IACzB,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,qBAAqB,CAAC,YAAY,CAAC,CAAA;YACzC,aAAa,GAAG,IAAI,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;YACnD,aAAa,GAAG,KAAK,CAAA;QACvB,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,aAAa;QAC5B,CAAC,CAAC,kGAAkG;QACpG,CAAC,CAAC,sGAAsG,CAAA;IAE1G,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;gEAeyC,QAAQ,EAAE,CAAA;IAExE,OAAO;QACL,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,QAAQ;QACnB,cAAc,EAAE,aAAa;QAC7B,YAAY;KACb,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,+LAA+L;IACjM,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;CACF,CAAA"}
|
package/package.json
CHANGED