@buoy-design/cli 0.1.0 → 0.1.2

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 (146) hide show
  1. package/dist/commands/audit.d.ts +3 -0
  2. package/dist/commands/audit.d.ts.map +1 -0
  3. package/dist/commands/audit.js +235 -0
  4. package/dist/commands/audit.js.map +1 -0
  5. package/dist/commands/baseline.d.ts +39 -0
  6. package/dist/commands/baseline.d.ts.map +1 -0
  7. package/dist/commands/baseline.js +298 -0
  8. package/dist/commands/baseline.js.map +1 -0
  9. package/dist/commands/check.d.ts +16 -0
  10. package/dist/commands/check.d.ts.map +1 -0
  11. package/dist/commands/check.js +168 -0
  12. package/dist/commands/check.js.map +1 -0
  13. package/dist/commands/ci.d.ts +2 -2
  14. package/dist/commands/ci.d.ts.map +1 -1
  15. package/dist/commands/ci.js +124 -142
  16. package/dist/commands/ci.js.map +1 -1
  17. package/dist/commands/compare.d.ts +3 -0
  18. package/dist/commands/compare.d.ts.map +1 -0
  19. package/dist/commands/compare.js +170 -0
  20. package/dist/commands/compare.js.map +1 -0
  21. package/dist/commands/drift.d.ts +1 -1
  22. package/dist/commands/drift.d.ts.map +1 -1
  23. package/dist/commands/drift.js +79 -121
  24. package/dist/commands/drift.js.map +1 -1
  25. package/dist/commands/explain.d.ts +3 -0
  26. package/dist/commands/explain.d.ts.map +1 -0
  27. package/dist/commands/explain.js +212 -0
  28. package/dist/commands/explain.js.map +1 -0
  29. package/dist/commands/graph.d.ts +3 -0
  30. package/dist/commands/graph.d.ts.map +1 -0
  31. package/dist/commands/graph.js +430 -0
  32. package/dist/commands/graph.js.map +1 -0
  33. package/dist/commands/index.d.ts +14 -8
  34. package/dist/commands/index.d.ts.map +1 -1
  35. package/dist/commands/index.js +14 -8
  36. package/dist/commands/index.js.map +1 -1
  37. package/dist/commands/init.d.ts +1 -1
  38. package/dist/commands/init.d.ts.map +1 -1
  39. package/dist/commands/init.js +404 -237
  40. package/dist/commands/init.js.map +1 -1
  41. package/dist/commands/plugins.d.ts.map +1 -1
  42. package/dist/commands/plugins.js +32 -41
  43. package/dist/commands/plugins.js.map +1 -1
  44. package/dist/commands/scan.d.ts +1 -1
  45. package/dist/commands/scan.d.ts.map +1 -1
  46. package/dist/commands/scan.js +107 -219
  47. package/dist/commands/scan.js.map +1 -1
  48. package/dist/commands/status.d.ts +1 -1
  49. package/dist/commands/status.d.ts.map +1 -1
  50. package/dist/commands/status.js +114 -122
  51. package/dist/commands/status.js.map +1 -1
  52. package/dist/commands/tokens.d.ts +3 -0
  53. package/dist/commands/tokens.d.ts.map +1 -0
  54. package/dist/commands/tokens.js +261 -0
  55. package/dist/commands/tokens.js.map +1 -0
  56. package/dist/config/auto-detect.d.ts +21 -0
  57. package/dist/config/auto-detect.d.ts.map +1 -0
  58. package/dist/config/auto-detect.js +278 -0
  59. package/dist/config/auto-detect.js.map +1 -0
  60. package/dist/config/loader.d.ts.map +1 -1
  61. package/dist/config/loader.js +17 -0
  62. package/dist/config/loader.js.map +1 -1
  63. package/dist/config/schema.d.ts +63 -63
  64. package/dist/config/schema.d.ts.map +1 -1
  65. package/dist/config/schema.js +20 -2
  66. package/dist/config/schema.js.map +1 -1
  67. package/dist/constants.d.ts +36 -0
  68. package/dist/constants.d.ts.map +1 -0
  69. package/dist/constants.js +37 -0
  70. package/dist/constants.js.map +1 -0
  71. package/dist/detect/frameworks.d.ts +11 -2
  72. package/dist/detect/frameworks.d.ts.map +1 -1
  73. package/dist/detect/frameworks.js +78 -78
  74. package/dist/detect/frameworks.js.map +1 -1
  75. package/dist/detect/index.d.ts +1 -0
  76. package/dist/detect/index.d.ts.map +1 -1
  77. package/dist/detect/index.js +3 -0
  78. package/dist/detect/index.js.map +1 -1
  79. package/dist/detect/monorepo-patterns.d.ts +54 -0
  80. package/dist/detect/monorepo-patterns.d.ts.map +1 -0
  81. package/dist/detect/monorepo-patterns.js +209 -0
  82. package/dist/detect/monorepo-patterns.js.map +1 -0
  83. package/dist/detect/project-detector.d.ts +1 -1
  84. package/dist/detect/project-detector.d.ts.map +1 -1
  85. package/dist/detect/project-detector.js +132 -0
  86. package/dist/detect/project-detector.js.map +1 -1
  87. package/dist/explain/agents.d.ts +31 -0
  88. package/dist/explain/agents.d.ts.map +1 -0
  89. package/dist/explain/agents.js +507 -0
  90. package/dist/explain/agents.js.map +1 -0
  91. package/dist/hooks/index.d.ts +26 -0
  92. package/dist/hooks/index.d.ts.map +1 -0
  93. package/dist/hooks/index.js +283 -0
  94. package/dist/hooks/index.js.map +1 -0
  95. package/dist/index.d.ts +3 -3
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +13 -7
  98. package/dist/index.js.map +1 -1
  99. package/dist/integrations/github-formatter.d.ts +55 -0
  100. package/dist/integrations/github-formatter.d.ts.map +1 -0
  101. package/dist/integrations/github-formatter.js +391 -0
  102. package/dist/integrations/github-formatter.js.map +1 -0
  103. package/dist/integrations/github.d.ts +95 -0
  104. package/dist/integrations/github.d.ts.map +1 -0
  105. package/dist/integrations/github.js +281 -0
  106. package/dist/integrations/github.js.map +1 -0
  107. package/dist/integrations/index.d.ts +4 -0
  108. package/dist/integrations/index.d.ts.map +1 -0
  109. package/dist/integrations/index.js +4 -0
  110. package/dist/integrations/index.js.map +1 -0
  111. package/dist/output/formatters.d.ts.map +1 -1
  112. package/dist/output/formatters.js +5 -10
  113. package/dist/output/formatters.js.map +1 -1
  114. package/dist/scan/orchestrator.d.ts +76 -0
  115. package/dist/scan/orchestrator.d.ts.map +1 -0
  116. package/dist/scan/orchestrator.js +247 -0
  117. package/dist/scan/orchestrator.js.map +1 -0
  118. package/dist/services/ai-analysis.d.ts +54 -0
  119. package/dist/services/ai-analysis.d.ts.map +1 -0
  120. package/dist/services/ai-analysis.js +239 -0
  121. package/dist/services/ai-analysis.js.map +1 -0
  122. package/dist/services/drift-analysis.d.ts +77 -0
  123. package/dist/services/drift-analysis.d.ts.map +1 -0
  124. package/dist/services/drift-analysis.js +145 -0
  125. package/dist/services/drift-analysis.js.map +1 -0
  126. package/package.json +17 -5
  127. package/dist/commands/__tests__/ci.test.d.ts +0 -2
  128. package/dist/commands/__tests__/ci.test.d.ts.map +0 -1
  129. package/dist/commands/__tests__/ci.test.js +0 -33
  130. package/dist/commands/__tests__/ci.test.js.map +0 -1
  131. package/dist/commands/bootstrap.d.ts +0 -3
  132. package/dist/commands/bootstrap.d.ts.map +0 -1
  133. package/dist/commands/bootstrap.js +0 -458
  134. package/dist/commands/bootstrap.js.map +0 -1
  135. package/dist/plugins/index.d.ts +0 -3
  136. package/dist/plugins/index.d.ts.map +0 -1
  137. package/dist/plugins/index.js +0 -3
  138. package/dist/plugins/index.js.map +0 -1
  139. package/dist/plugins/loader.d.ts +0 -11
  140. package/dist/plugins/loader.d.ts.map +0 -1
  141. package/dist/plugins/loader.js +0 -77
  142. package/dist/plugins/loader.js.map +0 -1
  143. package/dist/plugins/registry.d.ts +0 -15
  144. package/dist/plugins/registry.d.ts.map +0 -1
  145. package/dist/plugins/registry.js +0 -32
  146. package/dist/plugins/registry.js.map +0 -1
@@ -0,0 +1,391 @@
1
+ import { COMMENT_MARKER, INLINE_MARKER_PREFIX, INLINE_MARKER_SUFFIX } from './github.js';
2
+ export function formatPRComment(results, _context) {
3
+ const lines = [COMMENT_MARKER];
4
+ // Header
5
+ lines.push('## 🔱 Buoy Design Drift Report');
6
+ lines.push('');
7
+ // Walkthrough section (like CodeRabbit)
8
+ lines.push('### Walkthrough');
9
+ if (results.summary.total === 0) {
10
+ lines.push('No design drift detected. Your code maintains full alignment with the design system.');
11
+ }
12
+ else {
13
+ lines.push(generateWalkthrough(results));
14
+ }
15
+ lines.push('');
16
+ // Changes table
17
+ if (results.summary.total > 0) {
18
+ lines.push('### Changes');
19
+ lines.push('');
20
+ lines.push('| File | Drift Signals | Severity |');
21
+ lines.push('|------|---------------|----------|');
22
+ const byFile = groupByFile(results.signals);
23
+ for (const [file, signals] of Object.entries(byFile).slice(0, 15)) {
24
+ const maxSeverity = getMaxSeverity(signals);
25
+ const severityIcon = maxSeverity === 'critical' ? '🔴' : maxSeverity === 'warning' ? '🟡' : '🔵';
26
+ lines.push(`| \`${file}\` | ${signals.length} | ${severityIcon} ${maxSeverity} |`);
27
+ }
28
+ if (Object.keys(byFile).length > 15) {
29
+ lines.push(`| ... | *${Object.keys(byFile).length - 15} more files* | |`);
30
+ }
31
+ lines.push('');
32
+ }
33
+ // Pre-merge checks section
34
+ lines.push('### Pre-merge checks');
35
+ lines.push('');
36
+ const { critical, warning } = results.summary;
37
+ if (critical > 0) {
38
+ lines.push(`| Check | Status | Details |`);
39
+ lines.push(`|-------|--------|---------|`);
40
+ lines.push(`| Design System Compliance | ❌ Failed | ${critical} critical drift signal${critical === 1 ? '' : 's'} detected |`);
41
+ if (warning > 0) {
42
+ lines.push(`| Token Usage | ⚠️ Warning | ${warning} warning${warning === 1 ? '' : 's'} to review |`);
43
+ }
44
+ }
45
+ else if (warning > 0) {
46
+ lines.push(`| Check | Status | Details |`);
47
+ lines.push(`|-------|--------|---------|`);
48
+ lines.push(`| Design System Compliance | ⚠️ Warning | ${warning} warning${warning === 1 ? '' : 's'} to review |`);
49
+ lines.push(`| Critical Issues | ✅ Passed | No critical drift detected |`);
50
+ }
51
+ else {
52
+ lines.push(`| Check | Status |`);
53
+ lines.push(`|-------|--------|`);
54
+ lines.push(`| Design System Compliance | ✅ Passed |`);
55
+ lines.push(`| Token Usage | ✅ Passed |`);
56
+ }
57
+ lines.push('');
58
+ // Actionable comments summary
59
+ if (results.summary.total > 0) {
60
+ lines.push(`### 📜 Review details`);
61
+ lines.push('');
62
+ lines.push(`**Actionable comments posted: ${Math.min(results.summary.critical + results.summary.warning, 10)}**`);
63
+ lines.push('');
64
+ // Critical issues with full detail
65
+ const criticals = results.signals.filter(s => s.severity === 'critical');
66
+ if (criticals.length > 0) {
67
+ lines.push('<details>');
68
+ lines.push(`<summary>🔴 Critical Issues (${criticals.length})</summary>`);
69
+ lines.push('');
70
+ for (const signal of criticals) {
71
+ lines.push(formatSignalDetail(signal));
72
+ lines.push('');
73
+ }
74
+ lines.push('</details>');
75
+ lines.push('');
76
+ }
77
+ // Warnings
78
+ const warnings = results.signals.filter(s => s.severity === 'warning');
79
+ if (warnings.length > 0) {
80
+ lines.push('<details>');
81
+ lines.push(`<summary>🟡 Warnings (${warnings.length})</summary>`);
82
+ lines.push('');
83
+ for (const signal of warnings.slice(0, 10)) {
84
+ lines.push(formatSignalDetail(signal));
85
+ lines.push('');
86
+ }
87
+ if (warnings.length > 10) {
88
+ lines.push(`*... and ${warnings.length - 10} more warnings*`);
89
+ lines.push('');
90
+ }
91
+ lines.push('</details>');
92
+ lines.push('');
93
+ }
94
+ // Info collapsed
95
+ const infos = results.signals.filter(s => s.severity === 'info');
96
+ if (infos.length > 0) {
97
+ lines.push('<details>');
98
+ lines.push(`<summary>🔵 Info (${infos.length})</summary>`);
99
+ lines.push('');
100
+ for (const signal of infos.slice(0, 5)) {
101
+ lines.push(`- \`${signal.component || '-'}\`: ${signal.message}`);
102
+ }
103
+ if (infos.length > 5) {
104
+ lines.push(`- *... and ${infos.length - 5} more*`);
105
+ }
106
+ lines.push('');
107
+ lines.push('</details>');
108
+ lines.push('');
109
+ }
110
+ }
111
+ // Finishing touches section
112
+ lines.push('### ✨ Finishing touches');
113
+ lines.push('');
114
+ lines.push('React to this comment to provide feedback:');
115
+ lines.push('- 👍 = All drift is intentional, approve');
116
+ lines.push('- 👎 = Issues need to be fixed');
117
+ lines.push('- 😕 = Need clarification on design system rules');
118
+ lines.push('');
119
+ // Footer
120
+ lines.push('---');
121
+ lines.push('<sub>🔱 <a href="https://github.com/dylantarre/buoy">Buoy</a> - Design drift detection for the AI era</sub>');
122
+ return lines.join('\n');
123
+ }
124
+ function generateWalkthrough(results) {
125
+ const { critical, warning, info } = results.summary;
126
+ const parts = [];
127
+ if (critical > 0) {
128
+ parts.push(`Found **${critical} critical** design system violation${critical === 1 ? '' : 's'} that should be addressed before merging`);
129
+ }
130
+ if (warning > 0) {
131
+ parts.push(`${warning} warning${warning === 1 ? '' : 's'} for hardcoded values or inconsistent patterns`);
132
+ }
133
+ if (info > 0) {
134
+ parts.push(`${info} informational suggestion${info === 1 ? '' : 's'}`);
135
+ }
136
+ // Group by type for summary
137
+ const byType = new Map();
138
+ for (const signal of results.signals) {
139
+ byType.set(signal.type, (byType.get(signal.type) || 0) + 1);
140
+ }
141
+ const typeDescriptions = [];
142
+ for (const [type, count] of byType) {
143
+ const label = type.replace(/-/g, ' ');
144
+ typeDescriptions.push(`${count} ${label}`);
145
+ }
146
+ if (typeDescriptions.length > 0) {
147
+ parts.push(`Issues include: ${typeDescriptions.join(', ')}.`);
148
+ }
149
+ return parts.join('. ') + '.';
150
+ }
151
+ function groupByFile(signals) {
152
+ const groups = {};
153
+ for (const signal of signals) {
154
+ const file = signal.file || 'unknown';
155
+ if (!groups[file])
156
+ groups[file] = [];
157
+ groups[file].push(signal);
158
+ }
159
+ return groups;
160
+ }
161
+ function getMaxSeverity(signals) {
162
+ if (signals.some(s => s.severity === 'critical'))
163
+ return 'critical';
164
+ if (signals.some(s => s.severity === 'warning'))
165
+ return 'warning';
166
+ return 'info';
167
+ }
168
+ function formatSignalDetail(signal) {
169
+ const lines = [];
170
+ const icon = signal.severity === 'critical' ? '🔴' : signal.severity === 'warning' ? '🟡' : '🔵';
171
+ const typeLabel = signal.type.replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase());
172
+ // File location
173
+ const location = signal.file ? `\`${signal.file}${signal.line ? `:${signal.line}` : ''}\`` : '';
174
+ lines.push(`#### ${icon} ${typeLabel}`);
175
+ if (location) {
176
+ lines.push(`📍 ${location}`);
177
+ }
178
+ lines.push('');
179
+ lines.push(`> ${signal.message}`);
180
+ if (signal.component) {
181
+ lines.push('');
182
+ lines.push(`**Component:** \`${signal.component}\``);
183
+ }
184
+ if (signal.suggestion) {
185
+ lines.push('');
186
+ lines.push(`**💡 Suggestion:** ${signal.suggestion}`);
187
+ }
188
+ return lines.join('\n');
189
+ }
190
+ /**
191
+ * Format an inline comment for a specific drift signal (CodeRabbit style)
192
+ */
193
+ export function formatInlineComment(signal, signalId) {
194
+ const lines = [];
195
+ // Add hidden marker with signal ID for tracking
196
+ if (signalId) {
197
+ lines.push(`${INLINE_MARKER_PREFIX}${signalId}${INLINE_MARKER_SUFFIX}`);
198
+ }
199
+ // Severity badge (CodeRabbit style)
200
+ const severityBadge = signal.severity === 'critical'
201
+ ? '⚠️ Potential issue | 🔴 Critical'
202
+ : signal.severity === 'warning'
203
+ ? '⚠️ Potential issue | 🟠 Warning'
204
+ : '💡 Suggestion | 🔵 Info';
205
+ // Header with type
206
+ const typeLabel = signal.type.replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase());
207
+ lines.push(`**${severityBadge}**`);
208
+ lines.push('');
209
+ lines.push(`### ${typeLabel}`);
210
+ lines.push('');
211
+ // Message
212
+ lines.push(signal.message);
213
+ // Component context
214
+ if (signal.component) {
215
+ lines.push('');
216
+ lines.push(`**Component:** \`${signal.component}\``);
217
+ }
218
+ // Committable suggestion (if we have current/expected values)
219
+ if (signal.currentValue && signal.expectedValue) {
220
+ lines.push('');
221
+ lines.push('```diff');
222
+ lines.push(`- ${signal.currentValue}`);
223
+ lines.push(`+ ${signal.expectedValue}`);
224
+ lines.push('```');
225
+ lines.push('');
226
+ lines.push('<details>');
227
+ lines.push('<summary>📝 Committable suggestion</summary>');
228
+ lines.push('');
229
+ lines.push('```suggestion');
230
+ lines.push(signal.expectedValue);
231
+ lines.push('```');
232
+ lines.push('</details>');
233
+ }
234
+ else if (signal.suggestion) {
235
+ lines.push('');
236
+ lines.push(`> 💡 **Suggestion:** ${signal.suggestion}`);
237
+ }
238
+ // Reaction hint
239
+ lines.push('');
240
+ lines.push('---');
241
+ lines.push('<sub>React with 👍 to acknowledge as intentional, or 👎 if it needs fixing.</sub>');
242
+ return lines.join('\n');
243
+ }
244
+ /**
245
+ * Format a signal for inline commenting from a DriftSignal
246
+ */
247
+ export function formatDriftSignalForInline(drift, signalId) {
248
+ return formatInlineComment({
249
+ type: drift.type,
250
+ severity: drift.severity,
251
+ message: drift.message,
252
+ component: drift.source.entityName,
253
+ suggestion: drift.details.suggestions?.[0],
254
+ currentValue: drift.details.actual,
255
+ expectedValue: drift.details.expected,
256
+ }, signalId);
257
+ }
258
+ /**
259
+ * Format PR comment with AI-powered analysis (CodeRabbit style)
260
+ */
261
+ export function formatAIPRComment(analysis, results) {
262
+ const lines = [COMMENT_MARKER];
263
+ // Header with AI badge
264
+ lines.push('## 🔱 Buoy Design Drift Report');
265
+ lines.push('');
266
+ lines.push('*🤖 AI-powered analysis enabled*');
267
+ lines.push('');
268
+ // AI Overview (the "walkthrough")
269
+ lines.push('### Walkthrough');
270
+ lines.push(analysis.overview);
271
+ lines.push('');
272
+ // Risk level badge
273
+ const riskIcon = analysis.riskLevel === 'high' ? '🔴' : analysis.riskLevel === 'medium' ? '🟡' : '🟢';
274
+ lines.push(`**Risk Level:** ${riskIcon} ${analysis.riskLevel.toUpperCase()}`);
275
+ lines.push('');
276
+ // Changes table
277
+ if (results.summary.total > 0) {
278
+ lines.push('### Changes');
279
+ lines.push('');
280
+ lines.push('| File | Drift Signals | Severity |');
281
+ lines.push('|------|---------------|----------|');
282
+ const byFile = groupByFile(results.signals);
283
+ for (const [file, signals] of Object.entries(byFile).slice(0, 15)) {
284
+ const maxSeverity = getMaxSeverity(signals);
285
+ const severityIcon = maxSeverity === 'critical' ? '🔴' : maxSeverity === 'warning' ? '🟡' : '🔵';
286
+ lines.push(`| \`${file}\` | ${signals.length} | ${severityIcon} ${maxSeverity} |`);
287
+ }
288
+ if (Object.keys(byFile).length > 15) {
289
+ lines.push(`| ... | *${Object.keys(byFile).length - 15} more files* | |`);
290
+ }
291
+ lines.push('');
292
+ }
293
+ // Pre-merge checks
294
+ lines.push('### Pre-merge checks');
295
+ lines.push('');
296
+ lines.push('| Check | Status | Details |');
297
+ lines.push('|-------|--------|---------|');
298
+ if (analysis.riskLevel === 'high') {
299
+ lines.push(`| Design System Compliance | ❌ Failed | ${results.summary.critical} critical issues require attention |`);
300
+ }
301
+ else if (analysis.riskLevel === 'medium') {
302
+ lines.push(`| Design System Compliance | ⚠️ Warning | Review recommended before merge |`);
303
+ }
304
+ else {
305
+ lines.push(`| Design System Compliance | ✅ Passed | Low risk, minor issues only |`);
306
+ }
307
+ // Check for intentional drift
308
+ const intentionalCount = [...analysis.criticalIssues, ...analysis.warnings].filter(a => a.isLikelyIntentional).length;
309
+ if (intentionalCount > 0) {
310
+ lines.push(`| Intentional Drift | ℹ️ Info | ${intentionalCount} issue${intentionalCount === 1 ? '' : 's'} appear intentional |`);
311
+ }
312
+ lines.push('');
313
+ // AI-Analyzed Issues
314
+ if (analysis.criticalIssues.length > 0) {
315
+ lines.push('### 📜 AI Analysis - Critical Issues');
316
+ lines.push('');
317
+ for (const issue of analysis.criticalIssues) {
318
+ lines.push(formatAIAnalyzedIssue(issue));
319
+ lines.push('');
320
+ }
321
+ }
322
+ if (analysis.warnings.length > 0) {
323
+ lines.push('<details>');
324
+ lines.push(`<summary>🟡 AI Analysis - Warnings (${analysis.warnings.length})</summary>`);
325
+ lines.push('');
326
+ for (const issue of analysis.warnings) {
327
+ lines.push(formatAIAnalyzedIssue(issue));
328
+ lines.push('');
329
+ }
330
+ lines.push('</details>');
331
+ lines.push('');
332
+ }
333
+ // Recommendations
334
+ if (analysis.recommendations.length > 0) {
335
+ lines.push('### 💡 Recommendations');
336
+ lines.push('');
337
+ for (const rec of analysis.recommendations) {
338
+ lines.push(`- ${rec}`);
339
+ }
340
+ lines.push('');
341
+ }
342
+ // Finishing touches
343
+ lines.push('### ✨ Finishing touches');
344
+ lines.push('');
345
+ lines.push('React to provide feedback:');
346
+ lines.push('- 👍 = Approve all flagged drift as intentional');
347
+ lines.push('- 👎 = Issues need fixing before merge');
348
+ lines.push('- 😕 = Need clarification on design system rules');
349
+ lines.push('');
350
+ // Footer
351
+ lines.push('---');
352
+ lines.push('<sub>🔱 <a href="https://github.com/dylantarre/buoy">Buoy</a> - AI-powered design drift detection</sub>');
353
+ return lines.join('\n');
354
+ }
355
+ function formatAIAnalyzedIssue(issue) {
356
+ const lines = [];
357
+ const icon = issue.signal.severity === 'critical' ? '🔴' : issue.signal.severity === 'warning' ? '🟡' : '🔵';
358
+ const typeLabel = issue.signal.type.replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase());
359
+ // Action badge
360
+ const actionBadge = issue.suggestedAction === 'fix'
361
+ ? '⚠️ **Needs Fix**'
362
+ : issue.suggestedAction === 'approve'
363
+ ? '✅ **Likely Intentional**'
364
+ : '💬 **Discuss**';
365
+ lines.push(`#### ${icon} ${typeLabel}`);
366
+ const location = issue.signal.source.location;
367
+ if (location) {
368
+ lines.push(`📍 \`${location}\``);
369
+ }
370
+ lines.push('');
371
+ lines.push(`> ${issue.signal.message}`);
372
+ lines.push('');
373
+ // AI Analysis
374
+ lines.push(`**🤖 AI Analysis:** ${issue.analysis}`);
375
+ lines.push('');
376
+ lines.push(`**Suggested Action:** ${actionBadge}`);
377
+ if (issue.isLikelyIntentional) {
378
+ lines.push('');
379
+ lines.push(`*Confidence: ${Math.round(issue.confidence * 100)}% - This drift appears intentional based on context.*`);
380
+ }
381
+ // Related history
382
+ if (issue.relatedHistory.length > 0) {
383
+ lines.push('');
384
+ lines.push('**Context:**');
385
+ for (const h of issue.relatedHistory) {
386
+ lines.push(`- ${h}`);
387
+ }
388
+ }
389
+ return lines.join('\n');
390
+ }
391
+ //# sourceMappingURL=github-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-formatter.js","sourceRoot":"","sources":["../../src/integrations/github-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ export declare const COMMENT_MARKER = "<!-- buoy-drift-report -->";
2
+ export declare const INLINE_MARKER_PREFIX = "<!-- buoy-drift:";
3
+ export declare const INLINE_MARKER_SUFFIX = " -->";
4
+ export declare const REACTION_APPROVED = "+1";
5
+ export declare const REACTION_DISPUTED = "-1";
6
+ export declare const REACTION_CONFUSED = "confused";
7
+ export interface CommentReaction {
8
+ user: string;
9
+ reaction: '+1' | '-1' | 'laugh' | 'hooray' | 'confused' | 'heart' | 'rocket' | 'eyes';
10
+ createdAt: Date;
11
+ }
12
+ export interface ReviewComment {
13
+ id: number;
14
+ body: string;
15
+ path: string;
16
+ line: number | null;
17
+ user: string;
18
+ createdAt: Date;
19
+ reactions: CommentReaction[];
20
+ driftSignalId?: string;
21
+ }
22
+ export interface PRInfo {
23
+ number: number;
24
+ title: string;
25
+ author: string;
26
+ headSha: string;
27
+ baseSha: string;
28
+ headBranch: string;
29
+ baseBranch: string;
30
+ createdAt: Date;
31
+ updatedAt: Date;
32
+ filesChanged: PRFile[];
33
+ }
34
+ export interface PRFile {
35
+ filename: string;
36
+ status: 'added' | 'removed' | 'modified' | 'renamed' | 'copied' | 'changed' | 'unchanged';
37
+ additions: number;
38
+ deletions: number;
39
+ patch?: string;
40
+ }
41
+ export interface GitHubContext {
42
+ token: string;
43
+ owner: string;
44
+ repo: string;
45
+ prNumber: number;
46
+ }
47
+ export declare class GitHubClient {
48
+ private octokit;
49
+ private context;
50
+ constructor(context: GitHubContext);
51
+ findExistingComment(): Promise<number | null>;
52
+ createOrUpdateComment(body: string): Promise<void>;
53
+ deleteComment(): Promise<void>;
54
+ /**
55
+ * Get PR information including files changed
56
+ */
57
+ getPRInfo(): Promise<PRInfo>;
58
+ /**
59
+ * Get all review comments on the PR with their reactions
60
+ */
61
+ getReviewComments(): Promise<ReviewComment[]>;
62
+ /**
63
+ * Get reactions for a specific comment
64
+ */
65
+ getCommentReactions(commentId: number): Promise<CommentReaction[]>;
66
+ /**
67
+ * Get feedback summary from reactions on Buoy comments
68
+ */
69
+ getFeedbackSummary(): Promise<{
70
+ approved: string[];
71
+ disputed: string[];
72
+ confused: string[];
73
+ }>;
74
+ /**
75
+ * Create an inline review comment on a specific file and line
76
+ */
77
+ createInlineComment(path: string, line: number, body: string, driftSignalId?: string): Promise<number>;
78
+ /**
79
+ * Find all inline comments created by Buoy
80
+ */
81
+ findBuoyInlineComments(): Promise<ReviewComment[]>;
82
+ /**
83
+ * Get drift signals that have been acknowledged (approved via reaction)
84
+ */
85
+ getAcknowledgedDriftSignals(): Promise<string[]>;
86
+ /**
87
+ * Delete all inline Buoy comments (for cleanup/reset)
88
+ */
89
+ deleteInlineComments(): Promise<number>;
90
+ }
91
+ export declare function parseRepoString(repoString: string): {
92
+ owner: string;
93
+ repo: string;
94
+ };
95
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/integrations/github.ts"],"names":[],"mappings":"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"}