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.
Files changed (81) hide show
  1. package/dist/assets/index-BvKzbtKg.css +1 -0
  2. package/dist/assets/index-D59Xr9pK.js +182 -0
  3. package/dist/index.html +2 -2
  4. package/package.json +1 -1
  5. package/server/dist/approval-manager.js +1 -1
  6. package/server/dist/claude-process.d.ts +8 -5
  7. package/server/dist/claude-process.js +21 -63
  8. package/server/dist/claude-process.js.map +1 -1
  9. package/server/dist/coding-process.d.ts +83 -0
  10. package/server/dist/coding-process.js +32 -0
  11. package/server/dist/coding-process.js.map +1 -0
  12. package/server/dist/commit-event-handler.js +1 -0
  13. package/server/dist/commit-event-handler.js.map +1 -1
  14. package/server/dist/docs-routes.js +22 -1
  15. package/server/dist/docs-routes.js.map +1 -1
  16. package/server/dist/native-permissions.js +2 -1
  17. package/server/dist/native-permissions.js.map +1 -1
  18. package/server/dist/opencode-process.d.ts +104 -0
  19. package/server/dist/opencode-process.js +657 -0
  20. package/server/dist/opencode-process.js.map +1 -0
  21. package/server/dist/orchestrator-children.d.ts +9 -0
  22. package/server/dist/orchestrator-children.js +28 -1
  23. package/server/dist/orchestrator-children.js.map +1 -1
  24. package/server/dist/orchestrator-manager.js +17 -0
  25. package/server/dist/orchestrator-manager.js.map +1 -1
  26. package/server/dist/orchestrator-routes.js +8 -1
  27. package/server/dist/orchestrator-routes.js.map +1 -1
  28. package/server/dist/prompt-router.d.ts +2 -2
  29. package/server/dist/prompt-router.js +12 -0
  30. package/server/dist/prompt-router.js.map +1 -1
  31. package/server/dist/session-lifecycle.d.ts +4 -4
  32. package/server/dist/session-lifecycle.js +42 -21
  33. package/server/dist/session-lifecycle.js.map +1 -1
  34. package/server/dist/session-manager.d.ts +9 -0
  35. package/server/dist/session-manager.js +87 -45
  36. package/server/dist/session-manager.js.map +1 -1
  37. package/server/dist/session-persistence.d.ts +1 -0
  38. package/server/dist/session-persistence.js +3 -1
  39. package/server/dist/session-persistence.js.map +1 -1
  40. package/server/dist/session-routes.js +15 -1
  41. package/server/dist/session-routes.js.map +1 -1
  42. package/server/dist/stepflow-handler.d.ts +2 -2
  43. package/server/dist/stepflow-handler.js +4 -4
  44. package/server/dist/stepflow-handler.js.map +1 -1
  45. package/server/dist/tool-labels.d.ts +8 -0
  46. package/server/dist/tool-labels.js +51 -0
  47. package/server/dist/tool-labels.js.map +1 -0
  48. package/server/dist/tsconfig.tsbuildinfo +1 -1
  49. package/server/dist/types.d.ts +25 -10
  50. package/server/dist/types.js +4 -1
  51. package/server/dist/types.js.map +1 -1
  52. package/server/dist/webhook-dedup.d.ts +11 -0
  53. package/server/dist/webhook-dedup.js +23 -0
  54. package/server/dist/webhook-dedup.js.map +1 -1
  55. package/server/dist/webhook-handler.d.ts +20 -4
  56. package/server/dist/webhook-handler.js +256 -20
  57. package/server/dist/webhook-handler.js.map +1 -1
  58. package/server/dist/webhook-pr-cache.d.ts +57 -0
  59. package/server/dist/webhook-pr-cache.js +95 -0
  60. package/server/dist/webhook-pr-cache.js.map +1 -0
  61. package/server/dist/webhook-pr-github.d.ts +68 -0
  62. package/server/dist/webhook-pr-github.js +202 -0
  63. package/server/dist/webhook-pr-github.js.map +1 -0
  64. package/server/dist/webhook-pr-prompt.d.ts +27 -0
  65. package/server/dist/webhook-pr-prompt.js +251 -0
  66. package/server/dist/webhook-pr-prompt.js.map +1 -0
  67. package/server/dist/webhook-types.d.ts +70 -1
  68. package/server/dist/webhook-workspace.js +20 -1
  69. package/server/dist/webhook-workspace.js.map +1 -1
  70. package/server/dist/workflow-config.d.ts +2 -0
  71. package/server/dist/workflow-config.js.map +1 -1
  72. package/server/dist/workflow-loader.js +3 -0
  73. package/server/dist/workflow-loader.js.map +1 -1
  74. package/server/dist/workflow-routes.js +6 -2
  75. package/server/dist/workflow-routes.js.map +1 -1
  76. package/server/dist/ws-message-handler.js +22 -3
  77. package/server/dist/ws-message-handler.js.map +1 -1
  78. package/server/dist/ws-server.js +4 -2
  79. package/server/dist/ws-server.js.map +1 -1
  80. package/dist/assets/index-BFkKlY3O.js +0 -182
  81. 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 `workflow_run` webhook events and, for completed+failed
5
- * runs, spawns a Claude session that receives a structured prompt with logs,
6
- * job info, annotations, and commit context.
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 filter (Phase 1: workflow_run only) ---
117
- if (headers.event !== 'workflow_run') {
118
- return {
119
- statusCode: 200,
120
- body: { accepted: false, eventId, status: 'filtered', filterReason: `Event type '${headers.event}' not supported (Phase 1: workflow_run only)` },
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
- // --- Action + conclusion filter ---
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
- // Count both active webhook sessions AND events still in 'processing' state
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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAIvD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACnI,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,wFAAwF;AACxF,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAE3C,MAAM,OAAO,cAAe,SAAQ,kBAAoD;IAC9E,MAAM,CAAmB;IACzB,QAAQ,CAAgB;IACxB,KAAK,CAAc;IACnB,SAAS,GAAG,KAAK,CAAA;IAEzB,YAAY,MAAyB,EAAE,QAAwB;QAC7D,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAA;QAEvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,EAAE,CAAA;QAE/B,2DAA2D;QAC3D,qEAAqE;QACrE,0DAA0D;QAC1D,QAAQ,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;YAC/D,IAAI,WAAW;gBAAE,OAAM,CAAE,0CAA0C;YAEnE,sEAAsE;YACtE,wEAAwE;YACxE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAA;YACpI,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAuB,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAA;gBACvE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;gBACpG,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,EAAE,MAAM,MAAM,aAAa,SAAS,UAAU,IAAI,GAAG,CAAC,CAAA;gBAE3F,gEAAgE;gBAChE,gBAAgB,CAAC,SAAS,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAA;QACpC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QACjC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,qCAAqC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YAClE,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;QACpF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;QACrD,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAe,EAAE,SAAiB;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QACrC,OAAO,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACpE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CACjB,OAAe,EACf,OAIC;QAKD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAA;QAEhD,wBAAwB;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAE;aAC9F,CAAA;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,sBAAsB,EAAE;aAC7F,CAAA;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE,EAAE,CAAA;QACnF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAA;QAClE,CAAC;QAED,wBAAwB;QACxB,IAAI,OAA2B,CAAA;QAC/B,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAuB,CAAA;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,CAAA;QACvE,CAAC;QAED,yDAAyD;QACzD,IAAI,OAAO,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YACrC,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,OAAO,CAAC,KAAK,8CAA8C,EAAE;aACjJ,CAAA;QACH,CAAC;QAED,qCAAqC;QACrC,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAA;QAC/B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,CAAA;QAChF,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClE,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE;oBACJ,QAAQ,EAAE,KAAK;oBACf,OAAO;oBACP,MAAM,EAAE,UAAU;oBAClB,YAAY,EAAE,UAAU,OAAO,CAAC,MAAM,gBAAgB,EAAE,CAAC,UAAU,IAAI,MAAM,+CAA+C;iBAC7H;aACF,CAAA;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;QAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;YACnH,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE;oBACJ,QAAQ,EAAE,KAAK;oBACf,OAAO;oBACP,MAAM,EAAE,UAAU;oBAClB,YAAY,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,oBAAoB;iBAC3D;aACF,CAAA;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,cAAc,GAAG,qBAAqB,CAC1C,OAAO,CAAC,UAAU,CAAC,SAAS,EAC5B,OAAO,CAAC,KAAK,EACb,EAAE,CAAC,EAAE,EACL,OAAO,CAAC,MAAM,EACd,EAAE,CAAC,UAAU,IAAI,EAAE,EACnB,EAAE,CAAC,WAAW,CACf,CAAA;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,CAAC;gBACf,EAAE,EAAE,OAAO;gBACX,cAAc;gBACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;gBAClC,MAAM,EAAE,EAAE,CAAC,WAAW;gBACtB,QAAQ,EAAE,EAAE,CAAC,IAAI;gBACjB,KAAK,EAAE,EAAE,CAAC,EAAE;gBACZ,UAAU,EAAE,EAAE,CAAC,WAAW;gBAC1B,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;gBACtC,MAAM,EAAE,WAAW;aACpB,CAAC,CAAA;YACF,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;aACxD,CAAA;QACH,CAAC;QAED,4BAA4B;QAC5B,4EAA4E;QAC5E,8EAA8E;QAC9E,6EAA6E;QAC7E,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;QACzG,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;QACzD,MAAM,oBAAoB,GAAG,qBAAqB,GAAG,gBAAgB,CAAA;QACrE,IAAI,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC9D,IAAI,CAAC,WAAW,CAAC;gBACf,EAAE,EAAE,OAAO;gBACX,cAAc;gBACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;gBAClC,MAAM,EAAE,EAAE,CAAC,WAAW;gBACtB,QAAQ,EAAE,EAAE,CAAC,IAAI;gBACjB,KAAK,EAAE,EAAE,CAAC,EAAE;gBACZ,UAAU,EAAE,EAAE,CAAC,WAAW;gBAC1B,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;gBACtC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,4CAA4C,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG;aACxF,CAAC,CAAA;YACF,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;aACnG,CAAA;QACH,CAAC;QAED,kDAAkD;QAClD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAA;QAC9B,MAAM,YAAY,GAAiB;YACjC,EAAE,EAAE,OAAO;YACX,cAAc;YACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;YAClC,MAAM,EAAE,EAAE,CAAC,WAAW;YACtB,QAAQ,EAAE,EAAE,CAAC,IAAI;YACjB,KAAK,EAAE,EAAE,CAAC,EAAE;YACZ,UAAU,EAAE,EAAE,CAAC,WAAW;YAC1B,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;YACtC,MAAM,EAAE,YAAY;YACpB,SAAS;SACV,CAAA;QACD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QAE9B,wDAAwD;QACxD,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACrE,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAA;YACvD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,OAAO;YACL,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE;SACnE,CAAA;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC/B,OAA2B,EAC3B,KAAmB,EACnB,SAAiB;QAEjB,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAA;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAA;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAA;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAA;QAE9C,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,WAAW,GAAG,CAAC,CAAA;QAEnG,+DAA+D;QAC/D,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvE,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC;YACtC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YACtB,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC;YACzC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC;SACtC,CAAC,CAAA;QAEF,+BAA+B;QAC/B,IAAI,WAAsD,CAAA;QAC1D,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;YACjD,WAAW,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,CAAA;QAChE,CAAC;QAED,MAAM,OAAO,GAAmB;YAC9B,IAAI;YACJ,QAAQ;YACR,MAAM,EAAE,EAAE,CAAC,WAAW;YACtB,OAAO,EAAE,EAAE,CAAC,QAAQ;YACpB,YAAY,EAAE,EAAE,CAAC,IAAI;YACrB,KAAK,EAAE,EAAE,CAAC,EAAE;YACZ,SAAS,EAAE,EAAE,CAAC,UAAU;YACxB,UAAU,EAAE,EAAE,CAAC,WAAW;YAC1B,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;YACrB,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,OAAO,EAAE,EAAE,CAAC,QAAQ;YACpB,UAAU;YACV,WAAW;YACX,IAAI;YACJ,WAAW;YACX,aAAa,EAAE,aAAa,IAAI,SAAS;SAC1C,CAAA;QAED,2BAA2B;QAC3B,IAAI,aAAqB,CAAA;QACzB,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,eAAe,CACnC,SAAS,EACT,IAAI,EACJ,OAAO,CAAC,UAAU,CAAC,SAAS,EAC5B,EAAE,CAAC,WAAW,EACd,EAAE,CAAC,QAAQ,CACZ,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4CAA4C,IAAI,GAAG,EAAE,GAAG,CAAC,CAAA;YACvE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,8BAA8B,GAAG,EAAE,CAAC,CAAA;YAC9E,OAAM;QACR,CAAC;QAED,yBAAyB;QACzB,yEAAyE;QACzE,oEAAoE;QACpE,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAA;QAC5C,MAAM,WAAW,GAAG,WAAW,QAAQ,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QACtE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE;YAC/C,MAAM,EAAE,SAAS;YACjB,EAAE,EAAE,SAAS;YACb,QAAQ;SACT,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,8BAA8B,WAAW,KAAK,SAAS,GAAG,CAAC,CAAA;QACvE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAA;QAEnD,8DAA8D;QAC9D,iFAAiF;QACjF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC5C,IAAI,YAAY;YAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAA;QAE1D,gCAAgC;QAChC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC7C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAE1C,OAAO,CAAC,GAAG,CAAC,oCAAoC,SAAS,2BAA2B,CAAC,CAAA;IACvF,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAC,KAAmB;QAC/C,uEAAuE;QACvE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACxC,MAAM,GAAG,GAAoB;YAC3B,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAA;QAED,mCAAmC;QACnC,KAAK,MAAM,WAAW,IAAI,WAAW,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;YACxD,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;SAC3C,CAAA;IACH,CAAC;IAED,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"webhook-handler.js","sourceRoot":"","sources":["../webhook-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAIvD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AACjG,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACnI,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AACrJ,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,wFAAwF;AACxF,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAE3C,sDAAsD;AACtD,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB,CAAU,CAAA;AAE5F,MAAM,OAAO,cAAe,SAAQ,kBAAoD;IAC9E,MAAM,CAAmB;IACzB,QAAQ,CAAgB;IACxB,KAAK,CAAc;IACnB,SAAS,GAAG,KAAK,CAAA;IAEzB,YAAY,MAAyB,EAAE,QAAwB;QAC7D,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAA;QAEvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,EAAE,CAAA;QAE/B,2DAA2D;QAC3D,qEAAqE;QACrE,0DAA0D;QAC1D,QAAQ,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;YAC/D,IAAI,WAAW;gBAAE,OAAM,CAAE,0CAA0C;YAEnE,sEAAsE;YACtE,wEAAwE;YACxE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAA;YACpI,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAuB,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAA;gBACvE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;gBACpG,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,EAAE,MAAM,MAAM,aAAa,SAAS,UAAU,IAAI,GAAG,CAAC,CAAA;gBAE3F,gEAAgE;gBAChE,gBAAgB,CAAC,SAAS,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,6EAA6E;QAC7E,mEAAmE;QACnE,QAAQ,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE;YAC9C,IAAI,OAAO;gBAAE,OAAM;YAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAChG,CAAA;YACD,IAAI,CAAC,KAAK;gBAAE,OAAM;YAElB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;YAC7C,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,uCAAuC,CAAC,CAAA;YAElF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA,CAAC,wBAAwB;YAC5D,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACjC,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;QACzG,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;QACzD,OAAO,CAAC,qBAAqB,GAAG,gBAAgB,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAA;IACxF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAA;QACpC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QACjC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,qCAAqC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YAClE,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;QACpF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;QACrD,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAe,EAAE,SAAiB;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QACrC,OAAO,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACpE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CACjB,OAAe,EACf,OAIC;QAKD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAA;QAEhD,wBAAwB;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAE;aAC9F,CAAA;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,sBAAsB,EAAE;aAC7F,CAAA;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE,EAAE,CAAA;QACnF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAA;QAClE,CAAC;QAED,gEAAgE;QAChE,IAAI,OAAgB,CAAA;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,CAAA;QACvE,CAAC;QAED,8BAA8B;QAC9B,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAA6B,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YACrF,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAA6B,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YACrF;gBACE,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,OAAO,CAAC,KAAK,iBAAiB,EAAE;iBACpH,CAAA;QACL,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,wEAAwE;IACxE,8EAA8E;IAEtE,KAAK,CAAC,sBAAsB,CAClC,OAA2B,EAC3B,OAAe,EACf,OAA+D;QAE/D,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAA;QAC/B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,CAAA;QAChF,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClE,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE;oBACJ,QAAQ,EAAE,KAAK;oBACf,OAAO;oBACP,MAAM,EAAE,UAAU;oBAClB,YAAY,EAAE,UAAU,OAAO,CAAC,MAAM,gBAAgB,EAAE,CAAC,UAAU,IAAI,MAAM,+CAA+C;iBAC7H;aACF,CAAA;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;QAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;YACnH,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE;oBACJ,QAAQ,EAAE,KAAK;oBACf,OAAO;oBACP,MAAM,EAAE,UAAU;oBAClB,YAAY,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,oBAAoB;iBAC3D;aACF,CAAA;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,cAAc,GAAG,qBAAqB,CAC1C,OAAO,CAAC,UAAU,CAAC,SAAS,EAC5B,OAAO,CAAC,KAAK,EACb,EAAE,CAAC,EAAE,EACL,OAAO,CAAC,MAAM,EACd,EAAE,CAAC,UAAU,IAAI,EAAE,EACnB,EAAE,CAAC,WAAW,CACf,CAAA;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,CAAC;gBACf,EAAE,EAAE,OAAO;gBACX,cAAc;gBACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;gBAClC,MAAM,EAAE,EAAE,CAAC,WAAW;gBACtB,QAAQ,EAAE,EAAE,CAAC,IAAI;gBACjB,KAAK,EAAE,EAAE,CAAC,EAAE;gBACZ,UAAU,EAAE,EAAE,CAAC,WAAW;gBAC1B,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;gBACtC,MAAM,EAAE,WAAW;aACpB,CAAC,CAAA;YACF,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;aACxD,CAAA;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC;gBACf,EAAE,EAAE,OAAO;gBACX,cAAc;gBACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;gBAClC,MAAM,EAAE,EAAE,CAAC,WAAW;gBACtB,QAAQ,EAAE,EAAE,CAAC,IAAI;gBACjB,KAAK,EAAE,EAAE,CAAC,EAAE;gBACZ,UAAU,EAAE,EAAE,CAAC,WAAW;gBAC1B,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;gBACtC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,4CAA4C,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG;aACxF,CAAC,CAAA;YACF,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;aACnG,CAAA;QACH,CAAC;QAED,kDAAkD;QAClD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAA;QAC9B,MAAM,YAAY,GAAiB;YACjC,EAAE,EAAE,OAAO;YACX,cAAc;YACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;YAClC,MAAM,EAAE,EAAE,CAAC,WAAW;YACtB,QAAQ,EAAE,EAAE,CAAC,IAAI;YACjB,KAAK,EAAE,EAAE,CAAC,EAAE;YACZ,UAAU,EAAE,EAAE,CAAC,WAAW;YAC1B,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;YACtC,MAAM,EAAE,YAAY;YACpB,SAAS;SACV,CAAA;QACD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;QAEnD,wDAAwD;QACxD,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACrE,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAA;YACvD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,OAAO;YACL,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE;SACnE,CAAA;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC/B,OAA2B,EAC3B,KAAmB,EACnB,SAAiB;QAEjB,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAA;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAA;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAA;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAA;QAE9C,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,WAAW,GAAG,CAAC,CAAA;QAEnG,+DAA+D;QAC/D,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvE,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC;YACtC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YACtB,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC;YACzC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC;SACtC,CAAC,CAAA;QAEF,+BAA+B;QAC/B,IAAI,WAAsD,CAAA;QAC1D,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;YACjD,WAAW,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,CAAA;QAChE,CAAC;QAED,MAAM,OAAO,GAAmB;YAC9B,IAAI;YACJ,QAAQ;YACR,MAAM,EAAE,EAAE,CAAC,WAAW;YACtB,OAAO,EAAE,EAAE,CAAC,QAAQ;YACpB,YAAY,EAAE,EAAE,CAAC,IAAI;YACrB,KAAK,EAAE,EAAE,CAAC,EAAE;YACZ,SAAS,EAAE,EAAE,CAAC,UAAU;YACxB,UAAU,EAAE,EAAE,CAAC,WAAW;YAC1B,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;YACrB,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,OAAO,EAAE,EAAE,CAAC,QAAQ;YACpB,UAAU;YACV,WAAW;YACX,IAAI;YACJ,WAAW;YACX,aAAa,EAAE,aAAa,IAAI,SAAS;SAC1C,CAAA;QAED,2BAA2B;QAC3B,IAAI,aAAqB,CAAA;QACzB,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,eAAe,CACnC,SAAS,EACT,IAAI,EACJ,OAAO,CAAC,UAAU,CAAC,SAAS,EAC5B,EAAE,CAAC,WAAW,EACd,EAAE,CAAC,QAAQ,CACZ,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4CAA4C,IAAI,GAAG,EAAE,GAAG,CAAC,CAAA;YACvE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,8BAA8B,GAAG,EAAE,CAAC,CAAA;YAC9E,OAAM;QACR,CAAC;QAED,yBAAyB;QACzB,yEAAyE;QACzE,oEAAoE;QACpE,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAA;QAC5C,MAAM,WAAW,GAAG,WAAW,QAAQ,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QACtE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE;YAC/C,MAAM,EAAE,SAAS;YACjB,EAAE,EAAE,SAAS;YACb,QAAQ;SACT,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,8BAA8B,WAAW,KAAK,SAAS,GAAG,CAAC,CAAA;QACvE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAA;QAEnD,8DAA8D;QAC9D,iFAAiF;QACjF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC5C,IAAI,YAAY;YAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAA;QAE1D,gCAAgC;QAChC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC7C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAE1C,OAAO,CAAC,GAAG,CAAC,oCAAoC,SAAS,2BAA2B,CAAC,CAAA;IACvF,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAC,KAAmB;QAC/C,uEAAuE;QACvE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACxC,MAAM,GAAG,GAAoB;YAC3B,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAA;QAED,mCAAmC;QACnC,KAAK,MAAM,WAAW,IAAI,WAAW,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,yCAAyC;IACzC,8EAA8E;IAEtE,KAAK,CAAC,sBAAsB,CAClC,OAA2B,EAC3B,OAAe;IACf,6DAA6D;IAC7D,QAAgE;QAEhE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAA;QAC/B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,CAAA;QAChF,CAAC;QAED,sDAAsD;QACtD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC9C,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAE,iBAAuC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE;oBACJ,QAAQ,EAAE,KAAK;oBACf,OAAO;oBACP,MAAM,EAAE,UAAU;oBAClB,YAAY,EAAE,cAAc,OAAO,CAAC,MAAM,yBAAyB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;iBACnG;aACF,CAAA;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE;aACtF,CAAA;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QAC9D,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;YACnH,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE,KAAK,oBAAoB,EAAE;aAC1H,CAAA;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAA;QAClC,MAAM,cAAc,GAAG,uBAAuB,CAC5C,OAAO,CAAC,UAAU,CAAC,SAAS,EAC5B,EAAE,CAAC,MAAM,EACT,OAAO,CAAC,MAAM,EACd,OAAO,CACR,CAAA;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;YACpD,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;aACxD,CAAA;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;aACnG,CAAA;QACH,CAAC;QAED,kDAAkD;QAClD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAA;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAA;QAEzC,MAAM,YAAY,GAAiB;YACjC,EAAE,EAAE,OAAO;YACX,cAAc;YACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI;YACJ,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,SAAS;YACjC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE;YAC5B,KAAK,EAAE,EAAE,CAAC,MAAM;YAChB,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,YAAY;YACpB,SAAS;SACV,CAAA;QACD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;QAEnD,yBAAyB;QACzB,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACtE,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAA;YACjE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,OAAO;YACL,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE;SACnE,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,cAAc,CAC1B,OAA2B,EAC3B,OAAe;QAEf,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAA;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAA;QACzC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,IAAI,KAAK,CAAA;QAEjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,OAAO,IAAI,EAAE,CAAC,CAAA;QAEpF,8DAA8D;QAC9D,IAAI,CAAC;YACH,IAAI,MAAM,EAAE,CAAC;gBACX,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;YACjC,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,6CAA6C,IAAI,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAA;QACtF,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC,MAAM,EAAE,CAAA;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAChH,CAAA;QACD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACzC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAU,CAAC,EAAE,IAAI,CAAC,CAAA;YAChE,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QAC/C,CAAC;QAED,OAAO;YACL,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE;SAChG,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,oBAAoB,CAChC,OAA2B,EAC3B,KAAmB,EACnB,SAAiB;QAEjB,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAA;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAA;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAA;QACxC,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAA;QAC1B,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAA;QAClC,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,MAAM,CAAA;QAEtC,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,IAAI,QAAQ,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAA;QAEhF,2BAA2B;QAC3B,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAE9B,kCAAkC;QAClC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAE9C,0DAA0D;QAC1D,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/F,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC3B,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC5B,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC9B,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC;YACrC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC9B,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC;SAC3C,CAAC,CAAA;QAEF,MAAM,SAAS,GAAuB;YACpC,IAAI;YACJ,QAAQ;YACR,QAAQ;YACR,OAAO,EAAE,EAAE,CAAC,KAAK;YACjB,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE;YACrB,KAAK,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE;YACxB,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;YACnC,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,SAAS;YACrC,UAAU,EAAE,OAAO;YACnB,OAAO;YACP,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;YAC3B,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,MAAM,EAAE,OAAO,CAAC,MAAsC;YACtD,YAAY,EAAE,EAAE,CAAC,aAAa,IAAI,CAAC;YACnC,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC;YAC5B,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC;YAC5B,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,OAAO;YACvB,cAAc;YACd,OAAO;YACP,eAAe,EAAE,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;YACzE,UAAU,EAAE,UAAU,IAAI,IAAI;SAC/B,CAAA;QAED,2BAA2B;QAC3B,IAAI,aAAqB,CAAA;QACzB,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAA;QACzE,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,eAAe,CACnC,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,OAAO,EACvB,OAAO,CACR,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,+CAA+C,IAAI,IAAI,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAA;YACtF,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,8BAA8B,GAAG,EAAE,CAAC,CAAA;YAC9E,OAAM;QACR,CAAC;QAED,yBAAyB;QACzB,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAA;QAC5C,MAAM,WAAW,GAAG,UAAU,QAAQ,OAAO,QAAQ,EAAE,CAAA;QACvD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE;YAC/C,MAAM,EAAE,SAAS;YACjB,EAAE,EAAE,SAAS;YACb,QAAQ;YACR,YAAY,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;SAC5C,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,wCAAwC,WAAW,KAAK,SAAS,GAAG,CAAC,CAAA;QACjF,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAA;QAEnD,YAAY;QACZ,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC5C,IAAI,YAAY;YAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAA;QAE1D,gCAAgC;QAChC,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QAC5D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAE1C,OAAO,CAAC,GAAG,CAAC,8CAA8C,SAAS,EAAE,CAAC,CAAA;IACxE,CAAC;IAED,SAAS;QACP,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;YACxD,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;SAC3C,CAAA;IACH,CAAC;IAED,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;IACvB,CAAC;CACF"}
@@ -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 {};