@theihtisham/agent-shadow-brain 1.1.0 → 1.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 +73 -237
  2. package/dist/brain/auto-update.d.ts +9 -0
  3. package/dist/brain/auto-update.d.ts.map +1 -0
  4. package/dist/brain/auto-update.js +59 -0
  5. package/dist/brain/auto-update.js.map +1 -0
  6. package/dist/brain/code-metrics.d.ts +18 -0
  7. package/dist/brain/code-metrics.d.ts.map +1 -0
  8. package/dist/brain/code-metrics.js +224 -0
  9. package/dist/brain/code-metrics.js.map +1 -0
  10. package/dist/brain/custom-rules.d.ts +14 -0
  11. package/dist/brain/custom-rules.d.ts.map +1 -0
  12. package/dist/brain/custom-rules.js +108 -0
  13. package/dist/brain/custom-rules.js.map +1 -0
  14. package/dist/brain/framework-presets.d.ts +34 -0
  15. package/dist/brain/framework-presets.d.ts.map +1 -0
  16. package/dist/brain/framework-presets.js +556 -0
  17. package/dist/brain/framework-presets.js.map +1 -0
  18. package/dist/brain/health-score.d.ts +42 -0
  19. package/dist/brain/health-score.d.ts.map +1 -0
  20. package/dist/brain/health-score.js +257 -0
  21. package/dist/brain/health-score.js.map +1 -0
  22. package/dist/brain/notifier.d.ts +26 -0
  23. package/dist/brain/notifier.d.ts.map +1 -0
  24. package/dist/brain/notifier.js +151 -0
  25. package/dist/brain/notifier.js.map +1 -0
  26. package/dist/brain/orchestrator.d.ts +64 -1
  27. package/dist/brain/orchestrator.d.ts.map +1 -1
  28. package/dist/brain/orchestrator.js +239 -3
  29. package/dist/brain/orchestrator.js.map +1 -1
  30. package/dist/brain/pr-generator.d.ts +19 -0
  31. package/dist/brain/pr-generator.d.ts.map +1 -0
  32. package/dist/brain/pr-generator.js +199 -0
  33. package/dist/brain/pr-generator.js.map +1 -0
  34. package/dist/brain/project-config.d.ts +14 -0
  35. package/dist/brain/project-config.d.ts.map +1 -0
  36. package/dist/brain/project-config.js +121 -0
  37. package/dist/brain/project-config.js.map +1 -0
  38. package/dist/brain/report-generator.d.ts +20 -0
  39. package/dist/brain/report-generator.d.ts.map +1 -0
  40. package/dist/brain/report-generator.js +386 -0
  41. package/dist/brain/report-generator.js.map +1 -0
  42. package/dist/brain/smart-fix.d.ts +24 -0
  43. package/dist/brain/smart-fix.d.ts.map +1 -0
  44. package/dist/brain/smart-fix.js +276 -0
  45. package/dist/brain/smart-fix.js.map +1 -0
  46. package/dist/brain/vuln-scanner.d.ts +16 -0
  47. package/dist/brain/vuln-scanner.d.ts.map +1 -0
  48. package/dist/brain/vuln-scanner.js +279 -0
  49. package/dist/brain/vuln-scanner.js.map +1 -0
  50. package/dist/cli.js +560 -57
  51. package/dist/cli.js.map +1 -1
  52. package/dist/dashboard/server.d.ts +22 -0
  53. package/dist/dashboard/server.d.ts.map +1 -0
  54. package/dist/dashboard/server.js +502 -0
  55. package/dist/dashboard/server.js.map +1 -0
  56. package/dist/index.d.ts +19 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +19 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/types.d.ts +92 -0
  61. package/dist/types.d.ts.map +1 -1
  62. package/package.json +88 -77
@@ -5,6 +5,17 @@ import { LLMClient } from './llm-client.js';
5
5
  import { ProjectContextBuilder } from './project-context.js';
6
6
  import { Analyzer } from './analyzer.js';
7
7
  import { PatternMemory } from './pattern-memory.js';
8
+ import { HealthScoreEngine } from './health-score.js';
9
+ import { SmartFixEngine } from './smart-fix.js';
10
+ import { detectFramework, applyFrameworkRules } from './framework-presets.js';
11
+ import { ReportGenerator } from './report-generator.js';
12
+ import { CustomRulesEngine } from './custom-rules.js';
13
+ import { PRGenerator } from './pr-generator.js';
14
+ import { Notifier } from './notifier.js';
15
+ import { CodeMetricsEngine } from './code-metrics.js';
16
+ import { ProjectConfigLoader } from './project-config.js';
17
+ import { VulnScanner } from './vuln-scanner.js';
18
+ import { checkForUpdate, formatUpdateNotice } from './auto-update.js';
8
19
  import { FileWatcher } from '../watchers/file-watcher.js';
9
20
  import { GitWatcher } from '../watchers/git-watcher.js';
10
21
  import { createAdapter, detectRunningAgents } from '../adapters/index.js';
@@ -12,12 +23,18 @@ export class Orchestrator extends EventEmitter {
12
23
  constructor(config) {
13
24
  super();
14
25
  this.adapters = [];
26
+ this.notifier = null;
15
27
  this.running = false;
16
28
  this.analyzing = false;
17
29
  this.pendingChanges = [];
18
30
  this.debounceTimer = null;
19
31
  this.currentSession = null;
20
32
  this.startTime = 0;
33
+ this.lastHealthScore = null;
34
+ this.lastFixes = [];
35
+ this.lastMetrics = null;
36
+ this.lastVulns = [];
37
+ this.updateCheck = null;
21
38
  this.config = config;
22
39
  this.llmClient = new LLMClient({
23
40
  provider: config.provider,
@@ -27,14 +44,41 @@ export class Orchestrator extends EventEmitter {
27
44
  this.contextBuilder = new ProjectContextBuilder(config.projectDir);
28
45
  this.analyzer = new Analyzer(this.llmClient, config.brainPersonality, config.reviewDepth);
29
46
  this.patternMemory = new PatternMemory();
47
+ this.healthEngine = new HealthScoreEngine();
48
+ this.fixEngine = new SmartFixEngine(this.llmClient);
49
+ this.reportGen = new ReportGenerator();
50
+ this.customRulesEngine = new CustomRulesEngine(config.projectDir);
51
+ this.prGenerator = new PRGenerator(this.llmClient);
52
+ this.metricsEngine = new CodeMetricsEngine(config.projectDir);
53
+ this.projectConfigLoader = new ProjectConfigLoader(config.projectDir);
54
+ this.vulnScanner = new VulnScanner(config.projectDir);
30
55
  this.fileWatcher = new FileWatcher(config.projectDir);
31
56
  this.gitWatcher = new GitWatcher(config.projectDir);
57
+ // Load project config and setup notifier if configured
58
+ const projectConfig = this.projectConfigLoader.load();
59
+ if (projectConfig.notifications) {
60
+ const nc = projectConfig.notifications;
61
+ this.notifier = new Notifier({
62
+ webhook: nc.webhook,
63
+ slack: nc.slack,
64
+ discord: nc.discord,
65
+ minInterval: nc.minInterval,
66
+ });
67
+ }
68
+ // Check for updates asynchronously
69
+ checkForUpdate().then(check => {
70
+ this.updateCheck = check;
71
+ if (check.hasUpdate) {
72
+ this.emit('info', formatUpdateNotice(check));
73
+ }
74
+ }).catch(() => { });
32
75
  }
33
76
  async start() {
34
77
  if (this.running)
35
78
  return;
36
- // Load pattern memory
79
+ // Load pattern memory + health history
37
80
  await this.patternMemory.load();
81
+ await this.healthEngine.load();
38
82
  this.startTime = Date.now();
39
83
  this.currentSession = {
40
84
  id: crypto.randomUUID(),
@@ -94,6 +138,7 @@ export class Orchestrator extends EventEmitter {
94
138
  }
95
139
  catch { /* ignore */ }
96
140
  await this.patternMemory.save();
141
+ await this.healthEngine.save();
97
142
  this.emit('stopped');
98
143
  }
99
144
  async reviewOnce() {
@@ -111,16 +156,60 @@ export class Orchestrator extends EventEmitter {
111
156
  const agentMemory = this.adapters.length > 0
112
157
  ? await this.adapters[0].readMemory().catch(() => undefined)
113
158
  : undefined;
114
- const insights = await this.analyzer.analyze({
159
+ let insights = await this.analyzer.analyze({
115
160
  changes,
116
161
  context,
117
162
  activity: activities,
118
163
  agentMemory,
119
164
  });
165
+ // ── Apply framework-specific rules ─────────────────────────────────
166
+ const framework = detectFramework(context.structure || [], {}, context.language || []);
167
+ if (framework !== 'unknown') {
168
+ const allContent = changes.map(c => c.content || c.diff || '').join('\n');
169
+ const frameworkResults = applyFrameworkRules(framework, context.structure || [], allContent);
170
+ for (const r of frameworkResults) {
171
+ insights.push({
172
+ type: r.type || 'warning',
173
+ priority: r.priority || 'medium',
174
+ title: `[${framework}] ${r.message}`,
175
+ content: r.fix || r.message,
176
+ files: [],
177
+ timestamp: new Date(),
178
+ });
179
+ }
180
+ }
120
181
  // Add metadata
121
182
  for (const insight of insights) {
122
183
  insight.timestamp = new Date();
123
184
  }
185
+ // ── Apply custom rules ────────────────────────────────────────────
186
+ this.customRulesEngine.load();
187
+ const customInsights = this.customRulesEngine.applyRules(changes);
188
+ if (customInsights.length > 0) {
189
+ insights.push(...customInsights);
190
+ }
191
+ // ── Health Score ──────────────────────────────────────────────────
192
+ const healthScore = this.healthEngine.compute(insights, changes, context);
193
+ this.lastHealthScore = healthScore;
194
+ this.emit('health-score', { score: healthScore });
195
+ // ── Smart Fix Engine ──────────────────────────────────────────────
196
+ const fixes = this.fixEngine.generateFixes(changes, insights);
197
+ this.lastFixes = fixes;
198
+ if (fixes.length > 0) {
199
+ this.emit('fixes', { fixes });
200
+ }
201
+ // ── Notify on critical insights ───────────────────────────────────
202
+ if (this.notifier) {
203
+ const criticals = insights.filter(i => i.priority === 'critical');
204
+ if (criticals.length > 0) {
205
+ this.notifier.send({
206
+ type: 'critical-insight',
207
+ title: `${criticals.length} critical issue(s) found`,
208
+ message: criticals.map(i => i.title).join('\n'),
209
+ timestamp: new Date(),
210
+ }).catch(() => { });
211
+ }
212
+ }
124
213
  // Inject if auto-inject is enabled
125
214
  if (this.config.autoInject) {
126
215
  await this.injectInsights(insights);
@@ -132,9 +221,118 @@ export class Orchestrator extends EventEmitter {
132
221
  this.emit('insights', { insights });
133
222
  return insights;
134
223
  }
224
+ /** Generate a full report (HTML/markdown/JSON) */
225
+ async generateReport(format = 'html') {
226
+ const context = await this.contextBuilder.build([]);
227
+ const changes = await this.getGitChanges();
228
+ const insights = this.currentSession?.insights || [];
229
+ const fixes = this.lastFixes;
230
+ const healthScore = this.lastHealthScore || this.healthEngine.compute(insights, changes, context);
231
+ return this.reportGen.generate(insights, changes, context, healthScore, fixes, { format });
232
+ }
233
+ /** Generate GitHub Actions workflow YAML */
234
+ async generateCIWorkflow() {
235
+ const context = await this.contextBuilder.build([]);
236
+ return this.reportGen.generate([], [], context, undefined, undefined, { format: 'github-actions' });
237
+ }
238
+ /** Generate pre-commit hook script */
239
+ generatePreCommitHook() {
240
+ return this.reportGen.generatePreCommitHook();
241
+ }
242
+ /** Get smart fix suggestions for current changes */
243
+ async getSmartFixes() {
244
+ const context = await this.contextBuilder.build([]);
245
+ const changes = await this.getGitChanges();
246
+ const insights = this.currentSession?.insights || [];
247
+ return this.fixEngine.generateFixes(changes, insights);
248
+ }
249
+ /** Get current health score */
250
+ async getHealthScore() {
251
+ const context = await this.contextBuilder.build([]);
252
+ const changes = await this.getGitChanges();
253
+ const insights = this.currentSession?.insights || [];
254
+ const score = this.healthEngine.compute(insights, changes, context);
255
+ this.lastHealthScore = score;
256
+ return score;
257
+ }
258
+ /** Format fix suggestions for terminal display */
259
+ formatFixes(fixes) {
260
+ return this.fixEngine.formatFixes(fixes);
261
+ }
262
+ /** Format health score for terminal display */
263
+ formatHealthScore(score) {
264
+ return this.healthEngine.formatConsole(score);
265
+ }
266
+ getLastHealthScore() { return this.lastHealthScore; }
267
+ getLastFixes() { return this.lastFixes; }
268
+ getLastMetrics() { return this.lastMetrics; }
269
+ getLastVulns() { return this.lastVulns; }
270
+ getUpdateCheck() { return this.updateCheck; }
135
271
  getSession() {
136
272
  return this.currentSession;
137
273
  }
274
+ // ── v1.2.0: Custom Rules ────────────────────────────────────────────
275
+ getCustomRules() {
276
+ return this.customRulesEngine.getRules();
277
+ }
278
+ addCustomRule(rule) {
279
+ this.customRulesEngine.addRule(rule);
280
+ this.customRulesEngine.save();
281
+ }
282
+ removeCustomRule(id) {
283
+ this.customRulesEngine.removeRule(id);
284
+ this.customRulesEngine.save();
285
+ }
286
+ // ── v1.2.0: PR Generator ────────────────────────────────────────────
287
+ async generatePRDescription(changes, branch) {
288
+ return this.prGenerator.generatePRDescription(changes, branch);
289
+ }
290
+ async generateCommitMessage(changes) {
291
+ return this.prGenerator.generateCommitMessage(changes);
292
+ }
293
+ // ── v1.2.0: Vulnerability Scanner ────────────────────────────────────
294
+ async runVulnScan() {
295
+ this.lastVulns = await this.vulnScanner.scan();
296
+ return this.lastVulns;
297
+ }
298
+ formatVulns(vulns, format = 'text') {
299
+ switch (format) {
300
+ case 'json': return this.vulnScanner.formatJSON(vulns);
301
+ case 'markdown': return this.vulnScanner.toMarkdown(vulns);
302
+ default: return this.vulnScanner.formatConsole(vulns);
303
+ }
304
+ }
305
+ // ── v1.2.0: Code Metrics ────────────────────────────────────────────
306
+ async computeMetrics() {
307
+ const projectConfig = this.projectConfigLoader.load();
308
+ this.lastMetrics = this.metricsEngine.compute();
309
+ return this.lastMetrics;
310
+ }
311
+ formatMetrics(metrics, format = 'text') {
312
+ switch (format) {
313
+ case 'json': return this.metricsEngine.formatJSON(metrics);
314
+ case 'markdown': return this.metricsEngine.toMarkdown(metrics);
315
+ default: return this.metricsEngine.formatConsole(metrics);
316
+ }
317
+ }
318
+ // ── v1.2.0: Notifications ────────────────────────────────────────────
319
+ async sendNotification(type, title, message) {
320
+ if (!this.notifier)
321
+ return { sent: false, channels: [] };
322
+ return this.notifier.send({ type, title, message, timestamp: new Date() });
323
+ }
324
+ async testNotifications() {
325
+ if (!this.notifier)
326
+ return [];
327
+ return this.notifier.test();
328
+ }
329
+ // ── v1.2.0: Project Config ───────────────────────────────────────────
330
+ getProjectConfig() {
331
+ return this.projectConfigLoader.get();
332
+ }
333
+ saveProjectConfig(config) {
334
+ this.projectConfigLoader.save(config);
335
+ }
138
336
  getStatus() {
139
337
  return {
140
338
  running: this.running,
@@ -147,6 +345,13 @@ export class Orchestrator extends EventEmitter {
147
345
  provider: this.config.provider,
148
346
  model: this.config.model,
149
347
  projectDir: this.config.projectDir,
348
+ healthScore: this.lastHealthScore?.overall ?? null,
349
+ healthGrade: this.lastHealthScore?.grade ?? null,
350
+ fixCount: this.lastFixes.length,
351
+ vulnCount: this.lastVulns.length,
352
+ customRuleCount: this.customRulesEngine.getRules().length,
353
+ updateAvailable: this.updateCheck?.hasUpdate ?? false,
354
+ latestVersion: this.updateCheck?.latest ?? null,
150
355
  };
151
356
  }
152
357
  setupWatchers() {
@@ -203,15 +408,36 @@ export class Orchestrator extends EventEmitter {
203
408
  const agentMemory = this.adapters.length > 0
204
409
  ? await this.adapters[0].readMemory().catch(() => undefined)
205
410
  : undefined;
206
- const insights = await this.analyzer.analyze({
411
+ let insights = await this.analyzer.analyze({
207
412
  changes,
208
413
  context,
209
414
  activity: activities,
210
415
  agentMemory,
211
416
  });
417
+ // ── Framework rules ────────────────────────────────────────────
418
+ const framework = detectFramework(context.structure || [], {}, context.language || []);
419
+ if (framework !== 'unknown') {
420
+ const allContent = changes.map(c => c.content || c.diff || '').join('\n');
421
+ const frameworkResults = applyFrameworkRules(framework, context.structure || [], allContent);
422
+ for (const r of frameworkResults) {
423
+ insights.push({
424
+ type: r.type || 'warning',
425
+ priority: r.priority || 'medium',
426
+ title: `[${framework}] ${r.message}`,
427
+ content: r.fix || r.message,
428
+ files: [],
429
+ timestamp: new Date(),
430
+ });
431
+ }
432
+ }
212
433
  // Enhance with pattern memory insights
213
434
  const patternInsights = this.patternMemory.getPatternInsights(changes);
214
435
  insights.push(...patternInsights);
436
+ // ── Apply custom rules ────────────────────────────────────────
437
+ const customInsights = this.customRulesEngine.applyRules(changes);
438
+ if (customInsights.length > 0) {
439
+ insights.push(...customInsights);
440
+ }
215
441
  // Record patterns
216
442
  this.patternMemory.recordFileCorrelation(changes);
217
443
  this.patternMemory.recordChangeFrequency(changes);
@@ -221,6 +447,16 @@ export class Orchestrator extends EventEmitter {
221
447
  for (const insight of insights) {
222
448
  insight.timestamp = new Date();
223
449
  }
450
+ // ── Health Score ──────────────────────────────────────────────
451
+ const healthScore = this.healthEngine.compute(insights, changes, context);
452
+ this.lastHealthScore = healthScore;
453
+ this.emit('health-score', { score: healthScore });
454
+ // ── Smart Fix Engine ──────────────────────────────────────────
455
+ const fixes = this.fixEngine.generateFixes(changes, insights);
456
+ this.lastFixes = fixes;
457
+ if (fixes.length > 0) {
458
+ this.emit('fixes', { fixes });
459
+ }
224
460
  if (this.config.autoInject) {
225
461
  await this.injectInsights(insights);
226
462
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/brain/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/brain/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { LLMClient } from './llm-client.js';
2
+ import { FileChange, PRDescription, CommitMessage } from '../types.js';
3
+ export declare class PRGenerator {
4
+ private llmClient;
5
+ constructor(llmClient?: LLMClient);
6
+ generatePRDescription(changes: FileChange[], branch?: string): Promise<PRDescription>;
7
+ generateCommitMessage(changes: FileChange[]): Promise<CommitMessage>;
8
+ private summarizeChanges;
9
+ private buildPRPrompt;
10
+ private buildCommitPrompt;
11
+ private parsePRResponse;
12
+ private parseCommitResponse;
13
+ private ruleBasedPR;
14
+ private ruleBasedCommit;
15
+ private inferTitle;
16
+ formatPR(pr: PRDescription): string;
17
+ formatCommit(msg: CommitMessage): string;
18
+ }
19
+ //# sourceMappingURL=pr-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-generator.d.ts","sourceRoot":"","sources":["../../src/brain/pr-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvE,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAmB;gBAExB,SAAS,CAAC,EAAE,SAAS;IAI3B,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAcrF,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAc1E,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,WAAW;IA0CnB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,UAAU;IAWlB,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM;IASnC,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM;CAQzC"}
@@ -0,0 +1,199 @@
1
+ // src/brain/pr-generator.ts — Auto-generate PR descriptions & commit messages from diffs
2
+ export class PRGenerator {
3
+ constructor(llmClient) {
4
+ this.llmClient = llmClient || null;
5
+ }
6
+ async generatePRDescription(changes, branch) {
7
+ const summary = this.summarizeChanges(changes);
8
+ if (this.llmClient) {
9
+ try {
10
+ const prompt = this.buildPRPrompt(summary, branch);
11
+ const response = await this.llmClient.complete(prompt, 'You are a senior developer writing clear PR descriptions. Return valid JSON only.');
12
+ return this.parsePRResponse(response);
13
+ }
14
+ catch { /* fall back to rule-based */ }
15
+ }
16
+ return this.ruleBasedPR(changes, summary);
17
+ }
18
+ async generateCommitMessage(changes) {
19
+ const summary = this.summarizeChanges(changes);
20
+ if (this.llmClient) {
21
+ try {
22
+ const prompt = this.buildCommitPrompt(summary);
23
+ const response = await this.llmClient.complete(prompt, 'Return valid JSON only.');
24
+ return this.parseCommitResponse(response);
25
+ }
26
+ catch { /* fall back */ }
27
+ }
28
+ return this.ruleBasedCommit(changes, summary);
29
+ }
30
+ summarizeChanges(changes) {
31
+ const added = changes.filter(c => c.type === 'add').map(c => c.path);
32
+ const modified = changes.filter(c => c.type === 'modify').map(c => c.path);
33
+ const deleted = changes.filter(c => c.type === 'delete').map(c => c.path);
34
+ const renamed = changes.filter(c => c.type === 'rename').map(c => `${c.oldPath} → ${c.path}`);
35
+ let out = '';
36
+ if (added.length)
37
+ out += `Added: ${added.join(', ')}\n`;
38
+ if (modified.length)
39
+ out += `Modified: ${modified.join(', ')}\n`;
40
+ if (deleted.length)
41
+ out += `Deleted: ${deleted.join(', ')}\n`;
42
+ if (renamed.length)
43
+ out += `Renamed: ${renamed.join(', ')}\n`;
44
+ // Sample diff content
45
+ const diffSamples = changes.slice(0, 5).map(c => {
46
+ const content = c.content || c.diff || '';
47
+ return `--- ${c.path} ---\n${content.slice(0, 500)}`;
48
+ }).join('\n\n');
49
+ return out + '\nDiff samples:\n' + diffSamples;
50
+ }
51
+ buildPRPrompt(summary, branch) {
52
+ return `Analyze these code changes and generate a PR description as JSON:
53
+ {
54
+ "title": "short PR title (<72 chars)",
55
+ "body": "markdown PR body with summary, changes list, test plan",
56
+ "type": "feat|fix|refactor|docs|test|chore|perf",
57
+ "scope": "optional scope like 'auth', 'api', etc",
58
+ "breaking": false
59
+ }
60
+
61
+ Branch: ${branch || 'unknown'}
62
+ Changes:
63
+ ${summary}`;
64
+ }
65
+ buildCommitPrompt(summary) {
66
+ return `Generate a conventional commit message for these changes as JSON:
67
+ {
68
+ "conventional": "type(scope): short message",
69
+ "short": "short message without prefix",
70
+ "detailed": "multi-line detailed message"
71
+ }
72
+
73
+ Changes:
74
+ ${summary}`;
75
+ }
76
+ parsePRResponse(response) {
77
+ try {
78
+ const cleaned = response.replace(/```json?\n?/g, '').replace(/```/g, '').trim();
79
+ const parsed = JSON.parse(cleaned);
80
+ return {
81
+ title: parsed.title || 'Update codebase',
82
+ body: parsed.body || '',
83
+ type: parsed.type || 'chore',
84
+ scope: parsed.scope,
85
+ breaking: parsed.breaking === true,
86
+ };
87
+ }
88
+ catch {
89
+ return { title: 'Update codebase', body: response, type: 'chore', breaking: false };
90
+ }
91
+ }
92
+ parseCommitResponse(response) {
93
+ try {
94
+ const cleaned = response.replace(/```json?\n?/g, '').replace(/```/g, '').trim();
95
+ const parsed = JSON.parse(cleaned);
96
+ return {
97
+ conventional: parsed.conventional || 'chore: update code',
98
+ short: parsed.short || 'update code',
99
+ detailed: parsed.detailed || '',
100
+ };
101
+ }
102
+ catch {
103
+ return { conventional: 'chore: update code', short: 'update code', detailed: response };
104
+ }
105
+ }
106
+ ruleBasedPR(changes, summary) {
107
+ const types = {};
108
+ for (const c of changes)
109
+ types[c.type] = (types[c.type] || 0) + 1;
110
+ const hasTests = changes.some(c => c.path.includes('.test.') || c.path.includes('.spec.'));
111
+ const hasDocs = changes.some(c => c.path.includes('.md') || c.path.includes('docs/'));
112
+ const hasDeps = changes.some(c => c.path.includes('package.json') || c.path.includes('requirements'));
113
+ const hasConfig = changes.some(c => c.path.includes('.config') || c.path.includes('tsconfig'));
114
+ let prType = 'feat';
115
+ let scope;
116
+ if (changes.every(c => c.path.includes('.test.') || c.path.includes('.spec.')))
117
+ prType = 'test';
118
+ else if (changes.every(c => c.path.endsWith('.md')))
119
+ prType = 'docs';
120
+ else if (hasDeps && changes.length <= 3)
121
+ prType = 'chore';
122
+ else if (hasConfig && !hasTests)
123
+ prType = 'refactor';
124
+ else if (types['delete'] && !types['add'])
125
+ prType = 'refactor';
126
+ // Detect scope from common patterns
127
+ for (const c of changes) {
128
+ if (c.path.includes('auth')) {
129
+ scope = 'auth';
130
+ break;
131
+ }
132
+ if (c.path.includes('api')) {
133
+ scope = 'api';
134
+ break;
135
+ }
136
+ if (c.path.includes('ui') || c.path.includes('component')) {
137
+ scope = 'ui';
138
+ break;
139
+ }
140
+ if (c.path.includes('db') || c.path.includes('migration')) {
141
+ scope = 'db';
142
+ break;
143
+ }
144
+ }
145
+ const added = changes.filter(c => c.type === 'add');
146
+ const modified = changes.filter(c => c.type === 'modify');
147
+ const deleted = changes.filter(c => c.type === 'delete');
148
+ let body = '## Summary\n\n';
149
+ if (added.length)
150
+ body += `- Added ${added.length} file(s)\n`;
151
+ if (modified.length)
152
+ body += `- Modified ${modified.length} file(s)\n`;
153
+ if (deleted.length)
154
+ body += `- Removed ${deleted.length} file(s)\n`;
155
+ if (hasTests)
156
+ body += '\n## Test Plan\n- Verify test suite passes\n';
157
+ if (hasDeps)
158
+ body += '\n> **Note:** Dependency changes detected — review for compatibility.\n';
159
+ const title = `${prType}${scope ? `(${scope})` : ''}: ${this.inferTitle(changes)}`;
160
+ return { title, body, type: prType, scope, breaking: false };
161
+ }
162
+ ruleBasedCommit(changes, summary) {
163
+ const pr = this.ruleBasedPR(changes, summary);
164
+ return {
165
+ conventional: pr.title,
166
+ short: pr.title.split(': ').slice(-1)[0],
167
+ detailed: pr.body.replace(/^## /gm, '').trim(),
168
+ };
169
+ }
170
+ inferTitle(changes) {
171
+ if (changes.length === 1) {
172
+ const p = changes[0].path;
173
+ const name = p.split('/').pop() || p;
174
+ return `update ${name}`;
175
+ }
176
+ const dirs = new Set(changes.map(c => c.path.split('/').slice(0, -1).join('/') || 'root'));
177
+ if (dirs.size === 1)
178
+ return `update ${[...dirs][0]}`;
179
+ return `update ${changes.length} files`;
180
+ }
181
+ formatPR(pr) {
182
+ let out = `\n Generated PR Description\n`;
183
+ out += ` ${'─'.repeat(50)}\n\n`;
184
+ out += ` Title: ${pr.title}\n\n`;
185
+ out += ` Type: ${pr.type}${pr.scope ? ` (${pr.scope})` : ''}${pr.breaking ? ' [BREAKING]' : ''}\n\n`;
186
+ out += ` Body:\n ${pr.body.split('\n').join('\n ')}\n`;
187
+ return out;
188
+ }
189
+ formatCommit(msg) {
190
+ let out = `\n Generated Commit Message\n`;
191
+ out += ` ${'─'.repeat(50)}\n\n`;
192
+ out += ` Conventional: ${msg.conventional}\n`;
193
+ out += ` Short: ${msg.short}\n`;
194
+ if (msg.detailed)
195
+ out += ` Detailed:\n ${msg.detailed.split('\n').join('\n ')}\n`;
196
+ return out;
197
+ }
198
+ }
199
+ //# sourceMappingURL=pr-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-generator.js","sourceRoot":"","sources":["../../src/brain/pr-generator.ts"],"names":[],"mappings":"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"}