codekin 0.5.5 → 0.6.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.
- package/dist/assets/index-BvKzbtKg.css +1 -0
- package/dist/assets/index-D59Xr9pK.js +182 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/server/dist/approval-manager.js +1 -1
- package/server/dist/claude-process.d.ts +8 -5
- package/server/dist/claude-process.js +21 -63
- package/server/dist/claude-process.js.map +1 -1
- package/server/dist/coding-process.d.ts +83 -0
- package/server/dist/coding-process.js +32 -0
- package/server/dist/coding-process.js.map +1 -0
- package/server/dist/commit-event-handler.js +1 -0
- package/server/dist/commit-event-handler.js.map +1 -1
- package/server/dist/docs-routes.js +22 -1
- package/server/dist/docs-routes.js.map +1 -1
- package/server/dist/native-permissions.js +2 -1
- package/server/dist/native-permissions.js.map +1 -1
- package/server/dist/opencode-process.d.ts +104 -0
- package/server/dist/opencode-process.js +657 -0
- package/server/dist/opencode-process.js.map +1 -0
- package/server/dist/orchestrator-children.d.ts +9 -0
- package/server/dist/orchestrator-children.js +28 -1
- package/server/dist/orchestrator-children.js.map +1 -1
- package/server/dist/orchestrator-manager.js +17 -0
- package/server/dist/orchestrator-manager.js.map +1 -1
- package/server/dist/orchestrator-routes.js +8 -1
- package/server/dist/orchestrator-routes.js.map +1 -1
- package/server/dist/prompt-router.d.ts +2 -2
- package/server/dist/prompt-router.js +12 -0
- package/server/dist/prompt-router.js.map +1 -1
- package/server/dist/session-lifecycle.d.ts +4 -4
- package/server/dist/session-lifecycle.js +42 -21
- package/server/dist/session-lifecycle.js.map +1 -1
- package/server/dist/session-manager.d.ts +9 -0
- package/server/dist/session-manager.js +87 -45
- package/server/dist/session-manager.js.map +1 -1
- package/server/dist/session-persistence.d.ts +1 -0
- package/server/dist/session-persistence.js +3 -1
- package/server/dist/session-persistence.js.map +1 -1
- package/server/dist/session-routes.js +15 -1
- package/server/dist/session-routes.js.map +1 -1
- package/server/dist/stepflow-handler.d.ts +2 -2
- package/server/dist/stepflow-handler.js +4 -4
- package/server/dist/stepflow-handler.js.map +1 -1
- package/server/dist/tool-labels.d.ts +8 -0
- package/server/dist/tool-labels.js +51 -0
- package/server/dist/tool-labels.js.map +1 -0
- package/server/dist/tsconfig.tsbuildinfo +1 -1
- package/server/dist/types.d.ts +25 -10
- package/server/dist/types.js +4 -1
- package/server/dist/types.js.map +1 -1
- package/server/dist/webhook-dedup.d.ts +11 -0
- package/server/dist/webhook-dedup.js +23 -0
- package/server/dist/webhook-dedup.js.map +1 -1
- package/server/dist/webhook-handler.d.ts +20 -4
- package/server/dist/webhook-handler.js +256 -20
- package/server/dist/webhook-handler.js.map +1 -1
- package/server/dist/webhook-pr-cache.d.ts +57 -0
- package/server/dist/webhook-pr-cache.js +95 -0
- package/server/dist/webhook-pr-cache.js.map +1 -0
- package/server/dist/webhook-pr-github.d.ts +68 -0
- package/server/dist/webhook-pr-github.js +202 -0
- package/server/dist/webhook-pr-github.js.map +1 -0
- package/server/dist/webhook-pr-prompt.d.ts +27 -0
- package/server/dist/webhook-pr-prompt.js +251 -0
- package/server/dist/webhook-pr-prompt.js.map +1 -0
- package/server/dist/webhook-types.d.ts +70 -1
- package/server/dist/webhook-workspace.js +20 -1
- package/server/dist/webhook-workspace.js.map +1 -1
- package/server/dist/workflow-config.d.ts +2 -0
- package/server/dist/workflow-config.js.map +1 -1
- package/server/dist/workflow-loader.js +3 -0
- package/server/dist/workflow-loader.js.map +1 -1
- package/server/dist/workflow-routes.js +6 -2
- package/server/dist/workflow-routes.js.map +1 -1
- package/server/dist/ws-message-handler.js +22 -3
- package/server/dist/ws-message-handler.js.map +1 -1
- package/server/dist/ws-server.js +4 -2
- package/server/dist/ws-server.js.map +1 -1
- package/dist/assets/index-BFkKlY3O.js +0 -182
- package/dist/assets/index-CjEQkT2b.css +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GitHub webhook handler for automated CI failure triage.
|
|
2
|
+
* GitHub webhook handler for automated CI failure triage and PR code review.
|
|
3
3
|
*
|
|
4
|
-
* Processes incoming
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Processes incoming webhook events:
|
|
5
|
+
* - `workflow_run` (completed+failed) → spawns Claude session for CI diagnosis
|
|
6
|
+
* - `pull_request` (opened/synchronize/reopened/ready_for_review) → spawns Claude session for code review
|
|
7
7
|
*
|
|
8
8
|
* Event lifecycle / state machine:
|
|
9
9
|
* received → (filtered/duplicate/capped)
|
|
@@ -18,14 +18,19 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { randomUUID } from 'crypto';
|
|
20
20
|
import { verifyHmacSignature } from './crypto-utils.js';
|
|
21
|
-
import { WebhookDedup, computeIdempotencyKey } from './webhook-dedup.js';
|
|
21
|
+
import { WebhookDedup, computeIdempotencyKey, computePrIdempotencyKey } from './webhook-dedup.js';
|
|
22
22
|
import { checkGhHealth, fetchFailedLogs, fetchJobs, fetchAnnotations, fetchCommitMessage, fetchPRTitle } from './webhook-github.js';
|
|
23
|
+
import { fetchPrDiff, fetchPrFiles, fetchPrCommits, fetchPrReviewComments, fetchPrReviews, fetchExistingReviewComment } from './webhook-pr-github.js';
|
|
24
|
+
import { buildPrReviewPrompt } from './webhook-pr-prompt.js';
|
|
25
|
+
import { loadPrCache, ensureCacheDir, archivePrCache, deletePrCache } from './webhook-pr-cache.js';
|
|
23
26
|
import { buildPrompt } from './webhook-prompt.js';
|
|
24
27
|
import { createWorkspace, cleanupWorkspace } from './webhook-workspace.js';
|
|
25
28
|
import { WebhookHandlerBase } from './webhook-handler-base.js';
|
|
26
29
|
import { REPOS_ROOT } from './config.js';
|
|
27
30
|
/** How long an event can stay in 'processing' before the watchdog marks it as error. */
|
|
28
31
|
const PROCESSING_TIMEOUT_MS = 5 * 60 * 1000;
|
|
32
|
+
/** Supported pull_request actions for code review. */
|
|
33
|
+
const PR_REVIEW_ACTIONS = ['opened', 'synchronize', 'reopened', 'ready_for_review'];
|
|
29
34
|
export class WebhookHandler extends WebhookHandlerBase {
|
|
30
35
|
config;
|
|
31
36
|
sessions;
|
|
@@ -53,6 +58,29 @@ export class WebhookHandler extends WebhookHandlerBase {
|
|
|
53
58
|
cleanupWorkspace(sessionId);
|
|
54
59
|
}
|
|
55
60
|
});
|
|
61
|
+
// Auto-kill PR review sessions after Claude completes its turn so they don't
|
|
62
|
+
// sit idle waiting for more input and consume memory indefinitely.
|
|
63
|
+
sessions.onSessionResult((sessionId, isError) => {
|
|
64
|
+
if (isError)
|
|
65
|
+
return;
|
|
66
|
+
const event = this.getEvents().find(e => e.sessionId === sessionId && (e.status === 'session_created' || e.status === 'processing'));
|
|
67
|
+
if (!event)
|
|
68
|
+
return;
|
|
69
|
+
this.updateEventStatus(event.id, 'completed');
|
|
70
|
+
console.log(`[webhook] Session ${sessionId} completed review, scheduling cleanup`);
|
|
71
|
+
this.sessions.stopClaude(sessionId); // suppress auto-restart
|
|
72
|
+
setTimeout(() => {
|
|
73
|
+
this.sessions.delete(sessionId);
|
|
74
|
+
}, 2000);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if we are at the session cap (for reuse across event types).
|
|
79
|
+
*/
|
|
80
|
+
isAtSessionCap() {
|
|
81
|
+
const activeWebhookSessions = this.sessions.list().filter(s => s.source === 'webhook' && s.active).length;
|
|
82
|
+
const processingEvents = this.countByStatus('processing');
|
|
83
|
+
return (activeWebhookSessions + processingEvents) >= this.config.maxConcurrentSessions;
|
|
56
84
|
}
|
|
57
85
|
/**
|
|
58
86
|
* Run gh CLI health check. Must be called on startup.
|
|
@@ -105,7 +133,7 @@ export class WebhookHandler extends WebhookHandlerBase {
|
|
|
105
133
|
if (!this.verifySignature(rawBody, headers.signature)) {
|
|
106
134
|
return { statusCode: 401, body: { error: 'Invalid signature' } };
|
|
107
135
|
}
|
|
108
|
-
// --- Parse payload ---
|
|
136
|
+
// --- Parse payload (generic parse, dispatch by event type) ---
|
|
109
137
|
let payload;
|
|
110
138
|
try {
|
|
111
139
|
payload = JSON.parse(rawBody.toString('utf-8'));
|
|
@@ -113,14 +141,23 @@ export class WebhookHandler extends WebhookHandlerBase {
|
|
|
113
141
|
catch {
|
|
114
142
|
return { statusCode: 400, body: { error: 'Malformed JSON payload' } };
|
|
115
143
|
}
|
|
116
|
-
// --- Event type
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
144
|
+
// --- Event type dispatch ---
|
|
145
|
+
switch (headers.event) {
|
|
146
|
+
case 'workflow_run':
|
|
147
|
+
return this.handleWorkflowRunEvent(payload, eventId, headers);
|
|
148
|
+
case 'pull_request':
|
|
149
|
+
return this.handlePullRequestEvent(payload, eventId, headers);
|
|
150
|
+
default:
|
|
151
|
+
return {
|
|
152
|
+
statusCode: 200,
|
|
153
|
+
body: { accepted: false, eventId, status: 'filtered', filterReason: `Event type '${headers.event}' not supported` },
|
|
154
|
+
};
|
|
122
155
|
}
|
|
123
|
-
|
|
156
|
+
}
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
// workflow_run handling (existing logic, extracted into its own method)
|
|
159
|
+
// ---------------------------------------------------------------------------
|
|
160
|
+
async handleWorkflowRunEvent(payload, eventId, headers) {
|
|
124
161
|
const wr = payload.workflow_run;
|
|
125
162
|
if (!wr) {
|
|
126
163
|
return { statusCode: 400, body: { error: 'Missing workflow_run in payload' } };
|
|
@@ -172,13 +209,7 @@ export class WebhookHandler extends WebhookHandlerBase {
|
|
|
172
209
|
};
|
|
173
210
|
}
|
|
174
211
|
// --- Session cap check ---
|
|
175
|
-
|
|
176
|
-
// (session not yet created) to prevent concurrent webhooks from bypassing the
|
|
177
|
-
// cap during the async setup window (gh API calls, workspace cloning, etc.).
|
|
178
|
-
const activeWebhookSessions = this.sessions.list().filter(s => s.source === 'webhook' && s.active).length;
|
|
179
|
-
const processingEvents = this.countByStatus('processing');
|
|
180
|
-
const effectiveConcurrency = activeWebhookSessions + processingEvents;
|
|
181
|
-
if (effectiveConcurrency >= this.config.maxConcurrentSessions) {
|
|
212
|
+
if (this.isAtSessionCap()) {
|
|
182
213
|
this.recordEvent({
|
|
183
214
|
id: eventId,
|
|
184
215
|
idempotencyKey,
|
|
@@ -217,6 +248,7 @@ export class WebhookHandler extends WebhookHandlerBase {
|
|
|
217
248
|
sessionId,
|
|
218
249
|
};
|
|
219
250
|
this.recordEvent(webhookEvent);
|
|
251
|
+
this.dedup.recordProcessed(eventId, idempotencyKey);
|
|
220
252
|
// Process asynchronously — don't block the 202 response
|
|
221
253
|
this.processWebhookAsync(payload, webhookEvent, sessionId).catch(err => {
|
|
222
254
|
console.error('[webhook] Async processing error:', err);
|
|
@@ -326,6 +358,210 @@ export class WebhookHandler extends WebhookHandlerBase {
|
|
|
326
358
|
}
|
|
327
359
|
}
|
|
328
360
|
}
|
|
361
|
+
// ---------------------------------------------------------------------------
|
|
362
|
+
// pull_request handling (PR code review)
|
|
363
|
+
// ---------------------------------------------------------------------------
|
|
364
|
+
async handlePullRequestEvent(payload, eventId,
|
|
365
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
366
|
+
_headers) {
|
|
367
|
+
const pr = payload.pull_request;
|
|
368
|
+
if (!pr) {
|
|
369
|
+
return { statusCode: 400, body: { error: 'Missing pull_request in payload' } };
|
|
370
|
+
}
|
|
371
|
+
// --- Closed/merged handling (cleanup, no review) ---
|
|
372
|
+
if (payload.action === 'closed') {
|
|
373
|
+
return this.handlePrClosed(payload, eventId);
|
|
374
|
+
}
|
|
375
|
+
// --- Action filter ---
|
|
376
|
+
if (!PR_REVIEW_ACTIONS.includes(payload.action)) {
|
|
377
|
+
return {
|
|
378
|
+
statusCode: 200,
|
|
379
|
+
body: {
|
|
380
|
+
accepted: false,
|
|
381
|
+
eventId,
|
|
382
|
+
status: 'filtered',
|
|
383
|
+
filterReason: `PR action '${payload.action}' not supported (only ${PR_REVIEW_ACTIONS.join(', ')})`,
|
|
384
|
+
},
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
// --- Draft filter ---
|
|
388
|
+
if (pr.draft) {
|
|
389
|
+
return {
|
|
390
|
+
statusCode: 200,
|
|
391
|
+
body: { accepted: false, eventId, status: 'filtered', filterReason: 'PR is a draft' },
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
// --- Actor allowlist ---
|
|
395
|
+
const actorLower = (payload.sender?.login ?? '').toLowerCase();
|
|
396
|
+
if (this.config.actorAllowlist.length > 0 && !this.config.actorAllowlist.some(a => a.toLowerCase() === actorLower)) {
|
|
397
|
+
return {
|
|
398
|
+
statusCode: 200,
|
|
399
|
+
body: { accepted: false, eventId, status: 'filtered', filterReason: `Actor '${payload.sender?.login}' not in allowlist` },
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
// --- Deduplication ---
|
|
403
|
+
const headSha = pr.head?.sha ?? '';
|
|
404
|
+
const idempotencyKey = computePrIdempotencyKey(payload.repository.full_name, pr.number, payload.action, headSha);
|
|
405
|
+
if (this.dedup.isDuplicate(eventId, idempotencyKey)) {
|
|
406
|
+
return {
|
|
407
|
+
statusCode: 200,
|
|
408
|
+
body: { accepted: false, eventId, status: 'duplicate' },
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
// --- Session cap ---
|
|
412
|
+
if (this.isAtSessionCap()) {
|
|
413
|
+
return {
|
|
414
|
+
statusCode: 429,
|
|
415
|
+
body: { error: 'Max concurrent webhook sessions reached', max: this.config.maxConcurrentSessions },
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
// --- Pre-allocate session ID and respond 202 ---
|
|
419
|
+
const sessionId = randomUUID();
|
|
420
|
+
const repo = payload.repository.full_name;
|
|
421
|
+
const webhookEvent = {
|
|
422
|
+
id: eventId,
|
|
423
|
+
idempotencyKey,
|
|
424
|
+
receivedAt: new Date().toISOString(),
|
|
425
|
+
event: 'pull_request',
|
|
426
|
+
action: payload.action,
|
|
427
|
+
repo,
|
|
428
|
+
branch: pr.head?.ref ?? 'unknown',
|
|
429
|
+
workflow: `PR #${pr.number}`,
|
|
430
|
+
runId: pr.number,
|
|
431
|
+
runAttempt: 1,
|
|
432
|
+
conclusion: 'pending',
|
|
433
|
+
status: 'processing',
|
|
434
|
+
sessionId,
|
|
435
|
+
};
|
|
436
|
+
this.recordEvent(webhookEvent);
|
|
437
|
+
this.dedup.recordProcessed(eventId, idempotencyKey);
|
|
438
|
+
// Process asynchronously
|
|
439
|
+
this.processPrReviewAsync(payload, webhookEvent, sessionId).catch(err => {
|
|
440
|
+
console.error('[webhook] PR review async processing error:', err);
|
|
441
|
+
this.updateEventStatus(eventId, 'error', String(err));
|
|
442
|
+
});
|
|
443
|
+
return {
|
|
444
|
+
statusCode: 202,
|
|
445
|
+
body: { accepted: true, eventId, status: 'processing', sessionId },
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Handle PR closed/merged — archive or delete the review cache and kill any
|
|
450
|
+
* active review sessions for this PR.
|
|
451
|
+
*/
|
|
452
|
+
async handlePrClosed(payload, eventId) {
|
|
453
|
+
const pr = payload.pull_request;
|
|
454
|
+
const repo = payload.repository.full_name;
|
|
455
|
+
const merged = pr.merged ?? false;
|
|
456
|
+
console.log(`[webhook] PR #${pr.number} ${merged ? 'merged' : 'closed'} in ${repo}`);
|
|
457
|
+
// Archive (merged) or delete (closed without merge) the cache
|
|
458
|
+
try {
|
|
459
|
+
if (merged) {
|
|
460
|
+
archivePrCache(repo, pr.number);
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
deletePrCache(repo, pr.number);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
catch (err) {
|
|
467
|
+
console.warn(`[webhook] Failed to clean up PR cache for ${repo}#${pr.number}:`, err);
|
|
468
|
+
}
|
|
469
|
+
// Kill any active review sessions for this PR
|
|
470
|
+
const prLabel = `PR #${pr.number}`;
|
|
471
|
+
const activeEvents = this.getEvents().filter(e => e.repo === repo && e.workflow === prLabel && (e.status === 'processing' || e.status === 'session_created'));
|
|
472
|
+
for (const event of activeEvents) {
|
|
473
|
+
if (event.sessionId) {
|
|
474
|
+
this.sessions.stopClaude(event.sessionId);
|
|
475
|
+
setTimeout(() => this.sessions.delete(event.sessionId), 1000);
|
|
476
|
+
}
|
|
477
|
+
this.updateEventStatus(event.id, 'completed');
|
|
478
|
+
}
|
|
479
|
+
return {
|
|
480
|
+
statusCode: 200,
|
|
481
|
+
body: { accepted: true, eventId, status: 'completed', action: merged ? 'archived' : 'deleted' },
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Async background processing for PR review: fetch PR context, create workspace,
|
|
486
|
+
* create session, send review prompt.
|
|
487
|
+
*/
|
|
488
|
+
async processPrReviewAsync(payload, event, sessionId) {
|
|
489
|
+
const pr = payload.pull_request;
|
|
490
|
+
const repo = payload.repository.full_name;
|
|
491
|
+
const repoName = payload.repository.name;
|
|
492
|
+
const prNumber = pr.number;
|
|
493
|
+
const headSha = pr.head?.sha ?? '';
|
|
494
|
+
const baseRef = pr.base?.ref ?? 'main';
|
|
495
|
+
console.log(`[webhook] Processing PR review: ${repo}#${prNumber} (${pr.title})`);
|
|
496
|
+
// --- Ensure cache dir ---
|
|
497
|
+
ensureCacheDir(repo, prNumber);
|
|
498
|
+
// --- Load prior review cache ---
|
|
499
|
+
const priorCache = loadPrCache(repo, prNumber);
|
|
500
|
+
// --- Fetch PR context (all calls degrade gracefully) ---
|
|
501
|
+
const [diffResult, files, commits, reviewComments, reviews, existingComment] = await Promise.all([
|
|
502
|
+
fetchPrDiff(repo, prNumber),
|
|
503
|
+
fetchPrFiles(repo, prNumber),
|
|
504
|
+
fetchPrCommits(repo, prNumber),
|
|
505
|
+
fetchPrReviewComments(repo, prNumber),
|
|
506
|
+
fetchPrReviews(repo, prNumber),
|
|
507
|
+
fetchExistingReviewComment(repo, prNumber),
|
|
508
|
+
]);
|
|
509
|
+
const prContext = {
|
|
510
|
+
repo,
|
|
511
|
+
repoName,
|
|
512
|
+
prNumber,
|
|
513
|
+
prTitle: pr.title,
|
|
514
|
+
prBody: pr.body ?? '',
|
|
515
|
+
prUrl: pr.html_url ?? '',
|
|
516
|
+
author: pr.user?.login ?? 'unknown',
|
|
517
|
+
headBranch: pr.head?.ref ?? 'unknown',
|
|
518
|
+
baseBranch: baseRef,
|
|
519
|
+
headSha,
|
|
520
|
+
baseSha: pr.base?.sha ?? '',
|
|
521
|
+
beforeSha: payload.before,
|
|
522
|
+
action: payload.action,
|
|
523
|
+
changedFiles: pr.changed_files ?? 0,
|
|
524
|
+
additions: pr.additions ?? 0,
|
|
525
|
+
deletions: pr.deletions ?? 0,
|
|
526
|
+
diff: diffResult.diff,
|
|
527
|
+
fileList: files,
|
|
528
|
+
commitMessages: commits,
|
|
529
|
+
reviewComments,
|
|
530
|
+
reviews,
|
|
531
|
+
existingComment: existingComment != null ? String(existingComment) : null,
|
|
532
|
+
priorCache: priorCache ?? null,
|
|
533
|
+
};
|
|
534
|
+
// --- Create workspace ---
|
|
535
|
+
let workspacePath;
|
|
536
|
+
const headRepo = pr.head?.repo?.clone_url ?? payload.repository.clone_url;
|
|
537
|
+
try {
|
|
538
|
+
workspacePath = await createWorkspace(sessionId, repo, headRepo, pr.head?.ref ?? baseRef, headSha);
|
|
539
|
+
}
|
|
540
|
+
catch (err) {
|
|
541
|
+
console.error(`[webhook] Failed to create workspace for PR ${repo}#${prNumber}:`, err);
|
|
542
|
+
this.updateEventStatus(event.id, 'error', `Workspace creation failed: ${err}`);
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
// --- Create session ---
|
|
546
|
+
const groupDir = `${REPOS_ROOT}/${repoName}`;
|
|
547
|
+
const sessionName = `review/${repoName}/PR-${prNumber}`;
|
|
548
|
+
this.sessions.create(sessionName, workspacePath, {
|
|
549
|
+
source: 'webhook',
|
|
550
|
+
id: sessionId,
|
|
551
|
+
groupDir,
|
|
552
|
+
allowedTools: ['Bash(git:*)', 'Bash(gh:*)'],
|
|
553
|
+
});
|
|
554
|
+
console.log(`[webhook] PR review session created: ${sessionName} (${sessionId})`);
|
|
555
|
+
this.updateEventStatus(event.id, 'session_created');
|
|
556
|
+
// Broadcast
|
|
557
|
+
const updatedEvent = this.getEvent(event.id);
|
|
558
|
+
if (updatedEvent)
|
|
559
|
+
this.broadcastWebhookEvent(updatedEvent);
|
|
560
|
+
// --- Build and send prompt ---
|
|
561
|
+
const prompt = buildPrReviewPrompt(prContext, workspacePath);
|
|
562
|
+
this.sessions.sendInput(sessionId, prompt);
|
|
563
|
+
console.log(`[webhook] PR review prompt sent to session ${sessionId}`);
|
|
564
|
+
}
|
|
329
565
|
getConfig() {
|
|
330
566
|
return {
|
|
331
567
|
enabled: this.config.enabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-handler.js","sourceRoot":"","sources":["../webhook-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webhook-handler.js","sourceRoot":"","sources":["../webhook-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-PR context cache for webhook reviews.
|
|
3
|
+
*
|
|
4
|
+
* Stores Claude's prior review findings and codebase familiarity notes
|
|
5
|
+
* so subsequent reviews of the same PR can build on prior context.
|
|
6
|
+
*
|
|
7
|
+
* Cache location: ~/.codekin/pr-cache/{owner}/{repo}/pr-{number}.json
|
|
8
|
+
*/
|
|
9
|
+
/** Structured finding from a PR review. */
|
|
10
|
+
export interface PrFinding {
|
|
11
|
+
severity: 'critical' | 'must-fix' | 'suggestion' | 'minor' | 'nitpick';
|
|
12
|
+
file: string;
|
|
13
|
+
line: number | null;
|
|
14
|
+
description: string;
|
|
15
|
+
status: 'new' | 'open' | 'fixed';
|
|
16
|
+
}
|
|
17
|
+
/** Shape of the cached PR review context. */
|
|
18
|
+
export interface PrCacheData {
|
|
19
|
+
prNumber: number;
|
|
20
|
+
repo: string;
|
|
21
|
+
lastReviewedSha: string;
|
|
22
|
+
timestamp: string;
|
|
23
|
+
priorReviewSummary: string;
|
|
24
|
+
codebaseContext: string;
|
|
25
|
+
reviewFindings: string;
|
|
26
|
+
verdict?: 'approve' | 'request_changes' | 'comment';
|
|
27
|
+
structuredFindings?: PrFinding[];
|
|
28
|
+
author?: string;
|
|
29
|
+
prTitle?: string;
|
|
30
|
+
changedFiles?: number;
|
|
31
|
+
additions?: number;
|
|
32
|
+
deletions?: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Return the absolute path for a PR's cache file (pure, no side effects).
|
|
36
|
+
*/
|
|
37
|
+
export declare function getCachePath(repo: string, prNumber: number): string;
|
|
38
|
+
/**
|
|
39
|
+
* Ensure the cache directory exists for a given repo, then return the cache file path.
|
|
40
|
+
* Use this when the caller intends to write (or instruct Claude to write) the cache file.
|
|
41
|
+
*/
|
|
42
|
+
export declare function ensureCacheDir(repo: string, prNumber: number): string;
|
|
43
|
+
/**
|
|
44
|
+
* Load cached review context for a PR.
|
|
45
|
+
* Returns undefined if the cache doesn't exist, is malformed, or is missing required fields.
|
|
46
|
+
*/
|
|
47
|
+
export declare function loadPrCache(repo: string, prNumber: number): PrCacheData | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Archive a PR's cache file (move to archived/ subdirectory).
|
|
50
|
+
* Used when a PR is merged. No-op if cache doesn't exist.
|
|
51
|
+
*/
|
|
52
|
+
export declare function archivePrCache(repo: string, prNumber: number): void;
|
|
53
|
+
/**
|
|
54
|
+
* Delete a PR's cache file.
|
|
55
|
+
* Used when a PR is closed without merging. No-op if cache doesn't exist.
|
|
56
|
+
*/
|
|
57
|
+
export declare function deletePrCache(repo: string, prNumber: number): void;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-PR context cache for webhook reviews.
|
|
3
|
+
*
|
|
4
|
+
* Stores Claude's prior review findings and codebase familiarity notes
|
|
5
|
+
* so subsequent reviews of the same PR can build on prior context.
|
|
6
|
+
*
|
|
7
|
+
* Cache location: ~/.codekin/pr-cache/{owner}/{repo}/pr-{number}.json
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync } from 'fs';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
import { join } from 'path';
|
|
12
|
+
const REQUIRED_FIELDS = [
|
|
13
|
+
'prNumber', 'repo', 'lastReviewedSha', 'timestamp',
|
|
14
|
+
'priorReviewSummary', 'codebaseContext', 'reviewFindings',
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* Return the absolute path for a PR's cache file (pure, no side effects).
|
|
18
|
+
*/
|
|
19
|
+
export function getCachePath(repo, prNumber) {
|
|
20
|
+
const [owner, name] = repo.split('/');
|
|
21
|
+
return join(homedir(), '.codekin', 'pr-cache', owner, name, `pr-${prNumber}.json`);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Ensure the cache directory exists for a given repo, then return the cache file path.
|
|
25
|
+
* Use this when the caller intends to write (or instruct Claude to write) the cache file.
|
|
26
|
+
*/
|
|
27
|
+
export function ensureCacheDir(repo, prNumber) {
|
|
28
|
+
const [owner, name] = repo.split('/');
|
|
29
|
+
const dir = join(homedir(), '.codekin', 'pr-cache', owner, name);
|
|
30
|
+
mkdirSync(dir, { recursive: true });
|
|
31
|
+
return join(dir, `pr-${prNumber}.json`);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Load cached review context for a PR.
|
|
35
|
+
* Returns undefined if the cache doesn't exist, is malformed, or is missing required fields.
|
|
36
|
+
*/
|
|
37
|
+
export function loadPrCache(repo, prNumber) {
|
|
38
|
+
const [owner, name] = repo.split('/');
|
|
39
|
+
const cachePath = join(homedir(), '.codekin', 'pr-cache', owner, name, `pr-${prNumber}.json`);
|
|
40
|
+
if (!existsSync(cachePath))
|
|
41
|
+
return undefined;
|
|
42
|
+
try {
|
|
43
|
+
const raw = readFileSync(cachePath, 'utf-8');
|
|
44
|
+
const data = JSON.parse(raw);
|
|
45
|
+
// Validate required fields
|
|
46
|
+
for (const field of REQUIRED_FIELDS) {
|
|
47
|
+
if (data[field] === undefined || data[field] === null) {
|
|
48
|
+
console.warn(`[pr-cache] Cache for ${repo} PR #${prNumber} missing field '${field}', ignoring`);
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return data;
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
console.warn(`[pr-cache] Failed to load cache for ${repo} PR #${prNumber}:`, err);
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Archive a PR's cache file (move to archived/ subdirectory).
|
|
61
|
+
* Used when a PR is merged. No-op if cache doesn't exist.
|
|
62
|
+
*/
|
|
63
|
+
export function archivePrCache(repo, prNumber) {
|
|
64
|
+
const source = getCachePath(repo, prNumber);
|
|
65
|
+
if (!existsSync(source))
|
|
66
|
+
return;
|
|
67
|
+
try {
|
|
68
|
+
const [owner, name] = repo.split('/');
|
|
69
|
+
const archivedDir = join(homedir(), '.codekin', 'pr-cache', owner, name, 'archived');
|
|
70
|
+
mkdirSync(archivedDir, { recursive: true });
|
|
71
|
+
const dest = join(archivedDir, `pr-${prNumber}.json`);
|
|
72
|
+
renameSync(source, dest);
|
|
73
|
+
console.log(`[pr-cache] Archived cache for ${repo} PR #${prNumber}`);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.warn(`[pr-cache] Failed to archive cache for ${repo} PR #${prNumber}:`, err);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Delete a PR's cache file.
|
|
81
|
+
* Used when a PR is closed without merging. No-op if cache doesn't exist.
|
|
82
|
+
*/
|
|
83
|
+
export function deletePrCache(repo, prNumber) {
|
|
84
|
+
const path = getCachePath(repo, prNumber);
|
|
85
|
+
if (!existsSync(path))
|
|
86
|
+
return;
|
|
87
|
+
try {
|
|
88
|
+
unlinkSync(path);
|
|
89
|
+
console.log(`[pr-cache] Deleted cache for ${repo} PR #${prNumber}`);
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
console.warn(`[pr-cache] Failed to delete cache for ${repo} PR #${prNumber}:`, err);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=webhook-pr-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-pr-cache.js","sourceRoot":"","sources":["../webhook-pr-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub API helpers for pull request webhook processing.
|
|
3
|
+
*
|
|
4
|
+
* All functions delegate to the `gh` CLI and degrade gracefully — errors are
|
|
5
|
+
* logged as warnings and an empty result is returned so callers can proceed
|
|
6
|
+
* with partial data.
|
|
7
|
+
*/
|
|
8
|
+
type GhRunner = (args: string[]) => Promise<string>;
|
|
9
|
+
/** @internal Test-only: override the gh CLI runner */
|
|
10
|
+
export declare function _setGhRunner(runner: GhRunner): void;
|
|
11
|
+
/** @internal Test-only: reset to default gh CLI runner */
|
|
12
|
+
export declare function _resetGhRunner(): void;
|
|
13
|
+
/**
|
|
14
|
+
* Fetch the unified diff for a pull request.
|
|
15
|
+
* Truncates to ~100KB with a note if larger.
|
|
16
|
+
*
|
|
17
|
+
* @param repo - GitHub repo in `owner/name` format.
|
|
18
|
+
* @param prNumber - Pull request number.
|
|
19
|
+
* @returns The diff text, or empty string on error.
|
|
20
|
+
*/
|
|
21
|
+
export declare function fetchPrDiff(repo: string, prNumber: number): Promise<{
|
|
22
|
+
diff: string;
|
|
23
|
+
truncated: boolean;
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Fetch the list of changed files for a pull request with stats.
|
|
27
|
+
*
|
|
28
|
+
* @param repo - GitHub repo in `owner/name` format.
|
|
29
|
+
* @param prNumber - Pull request number.
|
|
30
|
+
* @returns Formatted file list, or empty string on error.
|
|
31
|
+
*/
|
|
32
|
+
export declare function fetchPrFiles(repo: string, prNumber: number): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* Fetch commit messages for a pull request.
|
|
35
|
+
*
|
|
36
|
+
* @param repo - GitHub repo in `owner/name` format.
|
|
37
|
+
* @param prNumber - Pull request number.
|
|
38
|
+
* @returns Formatted commit list, or empty string on error.
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* Fetch existing review comments (inline code comments) for a pull request.
|
|
42
|
+
*
|
|
43
|
+
* @param repo - GitHub repo in `owner/name` format.
|
|
44
|
+
* @param prNumber - Pull request number.
|
|
45
|
+
* @returns Formatted comment list, or empty string on error.
|
|
46
|
+
*/
|
|
47
|
+
export declare function fetchPrReviewComments(repo: string, prNumber: number): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Fetch review summaries (approve/request changes/comment) for a pull request.
|
|
50
|
+
*
|
|
51
|
+
* @param repo - GitHub repo in `owner/name` format.
|
|
52
|
+
* @param prNumber - Pull request number.
|
|
53
|
+
* @returns Formatted review list, or empty string on error.
|
|
54
|
+
*/
|
|
55
|
+
export declare function fetchPrReviews(repo: string, prNumber: number): Promise<string>;
|
|
56
|
+
/** HTML marker embedded in Codekin review comments for identification. */
|
|
57
|
+
export declare const REVIEW_COMMENT_MARKER = "<!-- codekin-review -->";
|
|
58
|
+
/**
|
|
59
|
+
* Find an existing Codekin review summary comment on a PR.
|
|
60
|
+
* Searches issue comments (top-level conversation comments) for the marker.
|
|
61
|
+
*
|
|
62
|
+
* @param repo - GitHub repo in `owner/name` format.
|
|
63
|
+
* @param prNumber - Pull request number.
|
|
64
|
+
* @returns The comment ID if found, or undefined.
|
|
65
|
+
*/
|
|
66
|
+
export declare function fetchExistingReviewComment(repo: string, prNumber: number): Promise<number | undefined>;
|
|
67
|
+
export declare function fetchPrCommits(repo: string, prNumber: number): Promise<string>;
|
|
68
|
+
export {};
|