@generacy-ai/orchestrator 0.8.0 → 0.10.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 (116) hide show
  1. package/dist/config/loader.d.ts.map +1 -1
  2. package/dist/config/loader.js +15 -0
  3. package/dist/config/loader.js.map +1 -1
  4. package/dist/config/schema.d.ts +30 -0
  5. package/dist/config/schema.d.ts.map +1 -1
  6. package/dist/config/schema.js +13 -1
  7. package/dist/config/schema.js.map +1 -1
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +3 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/routes/health.d.ts +7 -0
  13. package/dist/routes/health.d.ts.map +1 -1
  14. package/dist/routes/health.js +5 -0
  15. package/dist/routes/health.js.map +1 -1
  16. package/dist/routes/internal-relay-events.d.ts +2 -2
  17. package/dist/routes/internal-relay-events.d.ts.map +1 -1
  18. package/dist/routes/internal-relay-events.js +12 -0
  19. package/dist/routes/internal-relay-events.js.map +1 -1
  20. package/dist/routes/retained-tunnel-event.d.ts +20 -0
  21. package/dist/routes/retained-tunnel-event.d.ts.map +1 -0
  22. package/dist/routes/retained-tunnel-event.js +67 -0
  23. package/dist/routes/retained-tunnel-event.js.map +1 -0
  24. package/dist/server.d.ts.map +1 -1
  25. package/dist/server.js +197 -34
  26. package/dist/server.js.map +1 -1
  27. package/dist/services/adaptive-poll-controller.d.ts +75 -0
  28. package/dist/services/adaptive-poll-controller.d.ts.map +1 -0
  29. package/dist/services/adaptive-poll-controller.js +96 -0
  30. package/dist/services/adaptive-poll-controller.js.map +1 -0
  31. package/dist/services/clarification-answer-monitor-service.d.ts +93 -0
  32. package/dist/services/clarification-answer-monitor-service.d.ts.map +1 -0
  33. package/dist/services/clarification-answer-monitor-service.js +452 -0
  34. package/dist/services/clarification-answer-monitor-service.js.map +1 -0
  35. package/dist/services/failure-fingerprint-tracker.d.ts +28 -0
  36. package/dist/services/failure-fingerprint-tracker.d.ts.map +1 -0
  37. package/dist/services/failure-fingerprint-tracker.js +38 -0
  38. package/dist/services/failure-fingerprint-tracker.js.map +1 -0
  39. package/dist/services/index.d.ts +1 -0
  40. package/dist/services/index.d.ts.map +1 -1
  41. package/dist/services/index.js +3 -0
  42. package/dist/services/index.js.map +1 -1
  43. package/dist/services/label-monitor-service.d.ts +21 -2
  44. package/dist/services/label-monitor-service.d.ts.map +1 -1
  45. package/dist/services/label-monitor-service.js +47 -16
  46. package/dist/services/label-monitor-service.js.map +1 -1
  47. package/dist/services/merge-conflict-monitor-service.d.ts +14 -1
  48. package/dist/services/merge-conflict-monitor-service.d.ts.map +1 -1
  49. package/dist/services/merge-conflict-monitor-service.js +46 -13
  50. package/dist/services/merge-conflict-monitor-service.js.map +1 -1
  51. package/dist/services/pr-feedback-monitor-service.d.ts +14 -1
  52. package/dist/services/pr-feedback-monitor-service.d.ts.map +1 -1
  53. package/dist/services/pr-feedback-monitor-service.js +46 -16
  54. package/dist/services/pr-feedback-monitor-service.js.map +1 -1
  55. package/dist/services/relay-bridge.d.ts +1 -0
  56. package/dist/services/relay-bridge.d.ts.map +1 -1
  57. package/dist/services/relay-bridge.js +21 -0
  58. package/dist/services/relay-bridge.js.map +1 -1
  59. package/dist/services/smee-channel-resolver.d.ts +60 -0
  60. package/dist/services/smee-channel-resolver.d.ts.map +1 -0
  61. package/dist/services/smee-channel-resolver.js +177 -0
  62. package/dist/services/smee-channel-resolver.js.map +1 -0
  63. package/dist/services/smee-receiver.d.ts +39 -21
  64. package/dist/services/smee-receiver.d.ts.map +1 -1
  65. package/dist/services/smee-receiver.js +134 -28
  66. package/dist/services/smee-receiver.js.map +1 -1
  67. package/dist/services/webhook-setup-service.d.ts +115 -111
  68. package/dist/services/webhook-setup-service.d.ts.map +1 -1
  69. package/dist/services/webhook-setup-service.js +377 -209
  70. package/dist/services/webhook-setup-service.js.map +1 -1
  71. package/dist/types/api.d.ts +3 -0
  72. package/dist/types/api.d.ts.map +1 -1
  73. package/dist/types/api.js +1 -0
  74. package/dist/types/api.js.map +1 -1
  75. package/dist/types/monitor.d.ts +18 -2
  76. package/dist/types/monitor.d.ts.map +1 -1
  77. package/dist/worker/clarification-markers.d.ts +72 -0
  78. package/dist/worker/clarification-markers.d.ts.map +1 -1
  79. package/dist/worker/clarification-markers.js +111 -0
  80. package/dist/worker/clarification-markers.js.map +1 -1
  81. package/dist/worker/clarification-poster.d.ts +102 -6
  82. package/dist/worker/clarification-poster.d.ts.map +1 -1
  83. package/dist/worker/clarification-poster.js +299 -89
  84. package/dist/worker/clarification-poster.js.map +1 -1
  85. package/dist/worker/claude-cli-worker.d.ts +7 -0
  86. package/dist/worker/claude-cli-worker.d.ts.map +1 -1
  87. package/dist/worker/claude-cli-worker.js +3 -0
  88. package/dist/worker/claude-cli-worker.js.map +1 -1
  89. package/dist/worker/failure-fingerprint.d.ts +41 -0
  90. package/dist/worker/failure-fingerprint.d.ts.map +1 -0
  91. package/dist/worker/failure-fingerprint.js +75 -0
  92. package/dist/worker/failure-fingerprint.js.map +1 -0
  93. package/dist/worker/label-manager.d.ts +42 -0
  94. package/dist/worker/label-manager.d.ts.map +1 -1
  95. package/dist/worker/label-manager.js +108 -4
  96. package/dist/worker/label-manager.js.map +1 -1
  97. package/dist/worker/phase-loop.d.ts +30 -0
  98. package/dist/worker/phase-loop.d.ts.map +1 -1
  99. package/dist/worker/phase-loop.js +124 -26
  100. package/dist/worker/phase-loop.js.map +1 -1
  101. package/dist/worker/pr-feedback-handler.d.ts +13 -0
  102. package/dist/worker/pr-feedback-handler.d.ts.map +1 -1
  103. package/dist/worker/pr-feedback-handler.js +48 -0
  104. package/dist/worker/pr-feedback-handler.js.map +1 -1
  105. package/dist/worker/stage-comment-manager.d.ts +5 -0
  106. package/dist/worker/stage-comment-manager.d.ts.map +1 -1
  107. package/dist/worker/stage-comment-manager.js +8 -1
  108. package/dist/worker/stage-comment-manager.js.map +1 -1
  109. package/dist/worker/terminal-label-op-error.d.ts +1 -1
  110. package/dist/worker/terminal-label-op-error.d.ts.map +1 -1
  111. package/dist/worker/terminal-label-op-error.js.map +1 -1
  112. package/dist/worker/types.d.ts +31 -0
  113. package/dist/worker/types.d.ts.map +1 -1
  114. package/dist/worker/types.js +11 -0
  115. package/dist/worker/types.js.map +1 -1
  116. package/package.json +7 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smee-channel-resolver.js","sourceRoot":"","sources":["../../src/services/smee-channel-resolver.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,7 @@
1
- /**
2
- * Smee.io webhook receiver for GitHub events.
3
- *
4
- * Connects to a smee.io channel URL via Server-Sent Events (SSE) using
5
- * the native fetch API. Receives GitHub webhook payloads forwarded by
6
- * smee.io and feeds them into the LabelMonitorService for processing.
7
- *
8
- * This eliminates the need for polling when a smee channel is configured,
9
- * providing near-instant label event detection with zero GitHub API calls.
10
- */
11
1
  import type { LabelMonitorService } from './label-monitor-service.js';
2
+ import type { PrFeedbackMonitorService } from './pr-feedback-monitor-service.js';
3
+ import type { MergeConflictMonitorService } from './merge-conflict-monitor-service.js';
4
+ import type { ClarificationAnswerMonitorService } from './clarification-answer-monitor-service.js';
12
5
  interface Logger {
13
6
  info(msg: string): void;
14
7
  info(obj: Record<string, unknown>, msg: string): void;
@@ -31,6 +24,23 @@ export interface SmeeReceiverOptions {
31
24
  * @default 5000
32
25
  */
33
26
  baseReconnectDelayMs?: number;
27
+ /**
28
+ * #987: called exactly once, after the first successful SSE connect
29
+ * (immediately after the `Connected to smee.io channel` log line).
30
+ * Subsequent reconnects do NOT re-invoke. Callers use this to flip
31
+ * `webhooksConfigured=true` on the constructed monitors.
32
+ */
33
+ onConnected?: () => void;
34
+ /**
35
+ * #987 FR-004: sibling monitor refs for broad `recordWebhookEvent()`
36
+ * fan-out. On every inbound event whose repo matches `watchedRepos`,
37
+ * the receiver calls `recordWebhookEvent()` on each provided monitor.
38
+ * Per-event processing dispatch fires only where the receiver has a
39
+ * natural entry point (see contracts/smee-receiver-contract.md).
40
+ */
41
+ prFeedbackMonitor?: PrFeedbackMonitorService;
42
+ mergeConflictMonitor?: MergeConflictMonitorService;
43
+ clarificationAnswerMonitor?: ClarificationAnswerMonitorService;
34
44
  }
35
45
  /**
36
46
  * Receives GitHub webhook events from a smee.io channel via SSE.
@@ -40,14 +50,18 @@ export declare class SmeeWebhookReceiver {
40
50
  private readonly logger;
41
51
  private readonly monitorService;
42
52
  private static readonly BASE_RECONNECT_DELAY_MS;
43
- private static readonly MAX_BACKOFF_MS;
44
53
  private readonly channelUrl;
45
54
  private readonly watchedRepos;
46
55
  private readonly clusterGithubUsername;
47
56
  private readonly baseReconnectDelayMs;
57
+ private readonly onConnected;
58
+ private readonly prFeedbackMonitor;
59
+ private readonly mergeConflictMonitor;
60
+ private readonly clarificationAnswerMonitor;
48
61
  private abortController;
49
62
  private running;
50
63
  private reconnectAttempt;
64
+ private connectedOnceFired;
51
65
  constructor(logger: Logger, monitorService: LabelMonitorService, options: SmeeReceiverOptions);
52
66
  /**
53
67
  * Start listening to the smee.io channel.
@@ -71,19 +85,23 @@ export declare class SmeeWebhookReceiver {
71
85
  */
72
86
  private processSSEEvent;
73
87
  /**
74
- * Get the current reconnect delay based on the number of attempts.
75
- * Uses exponential backoff with the current attempt count.
88
+ * Handle `issues.labeled` existing label-monitor path. `recordWebhookEvent`
89
+ * has already been fired by the caller's fan-out.
76
90
  */
77
- private get reconnectDelayMs();
91
+ private dispatchIssueLabeled;
78
92
  /**
79
- * Calculate exponential backoff delay for reconnection attempts.
80
- * Formula: BASE_RECONNECT_DELAY_MS * 2^attempt, capped at MAX_BACKOFF_MS.
81
- * Progression: 5s 10s 20s → 40s → 80s → 160s → 300s (capped).
82
- *
83
- * @param attempt - The current reconnection attempt number (0-indexed)
84
- * @returns Delay in milliseconds before next reconnection attempt
93
+ * Handle `pull_request_review.submitted` / `pull_request_review_comment.created`
94
+ * dispatch to the PR-feedback monitor. Assignee filter is NOT applied here;
95
+ * `PrFeedbackMonitorService.processPrReviewEvent` performs its own PR-link +
96
+ * assignee resolution.
85
97
  */
86
- private calculateBackoffDelay;
98
+ private dispatchPrReviewLike;
99
+ /**
100
+ * Handle `issue_comment.created` — dispatch to the clarification-answer
101
+ * monitor after the assignee filter (mirrors the label-event pattern).
102
+ */
103
+ private dispatchIssueCommentCreated;
104
+ private get reconnectDelayMs();
87
105
  private sleep;
88
106
  }
89
107
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"smee-receiver.d.ts","sourceRoot":"","sources":["../../src/services/smee-receiver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,UAAU,MAAM;IACd,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAa5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAbjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEhD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAC3D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAK;gBAGV,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,EACpD,OAAO,EAAE,mBAAmB;IAQ9B;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C5B;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;YACW,OAAO;IA0CrB;;;;;;OAMG;YACW,eAAe;IA8H7B;;;OAGG;IACH,OAAO,KAAK,gBAAgB,GAE3B;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,KAAK;CAcd"}
1
+ {"version":3,"file":"smee-receiver.d.ts","sourceRoot":"","sources":["../../src/services/smee-receiver.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,KAAK,EAEV,iCAAiC,EAClC,MAAM,2CAA2C,CAAC;AAInD,UAAU,MAAM;IACd,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,0BAA0B,CAAC,EAAE,iCAAiC,CAAC;CAChE;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAiB5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAjBjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAEvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAC3D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuC;IACzE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0C;IAC/E,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAgD;IAC3F,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,kBAAkB,CAAS;gBAGhB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,EACpD,OAAO,EAAE,mBAAmB;IAY9B;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C5B;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;YACW,OAAO;IA2DrB;;;;;;OAMG;YACW,eAAe;IA0E7B;;;OAGG;YACW,oBAAoB;IA8ElC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAkDnC,OAAO,KAAK,gBAAgB,GAK3B;IAED,OAAO,CAAC,KAAK;CAcd"}
@@ -1,3 +1,14 @@
1
+ /**
2
+ * Smee.io webhook receiver for GitHub events.
3
+ *
4
+ * Connects to a smee.io channel URL via Server-Sent Events (SSE) using
5
+ * the native fetch API. Receives GitHub webhook payloads forwarded by
6
+ * smee.io and feeds them into the LabelMonitorService for processing.
7
+ *
8
+ * This eliminates the need for polling when a smee channel is configured,
9
+ * providing near-instant label event detection with zero GitHub API calls.
10
+ */
11
+ import { calculateBackoffDelay } from '@generacy-ai/smee-backoff';
1
12
  /**
2
13
  * Receives GitHub webhook events from a smee.io channel via SSE.
3
14
  * Feeds label events directly into the LabelMonitorService.
@@ -6,14 +17,18 @@ export class SmeeWebhookReceiver {
6
17
  logger;
7
18
  monitorService;
8
19
  static BASE_RECONNECT_DELAY_MS = 5000;
9
- static MAX_BACKOFF_MS = 300000; // 5 minutes
10
20
  channelUrl;
11
21
  watchedRepos;
12
22
  clusterGithubUsername;
13
23
  baseReconnectDelayMs;
24
+ onConnected;
25
+ prFeedbackMonitor;
26
+ mergeConflictMonitor;
27
+ clarificationAnswerMonitor;
14
28
  abortController = null;
15
29
  running = false;
16
30
  reconnectAttempt = 0;
31
+ connectedOnceFired = false;
17
32
  constructor(logger, monitorService, options) {
18
33
  this.logger = logger;
19
34
  this.monitorService = monitorService;
@@ -21,6 +36,10 @@ export class SmeeWebhookReceiver {
21
36
  this.watchedRepos = options.watchedRepos;
22
37
  this.clusterGithubUsername = options.clusterGithubUsername;
23
38
  this.baseReconnectDelayMs = options.baseReconnectDelayMs ?? SmeeWebhookReceiver.BASE_RECONNECT_DELAY_MS;
39
+ this.onConnected = options.onConnected;
40
+ this.prFeedbackMonitor = options.prFeedbackMonitor;
41
+ this.mergeConflictMonitor = options.mergeConflictMonitor;
42
+ this.clarificationAnswerMonitor = options.clarificationAnswerMonitor;
24
43
  }
25
44
  /**
26
45
  * Start listening to the smee.io channel.
@@ -85,6 +104,20 @@ export class SmeeWebhookReceiver {
85
104
  throw new Error('Smee response has no body');
86
105
  }
87
106
  this.logger.info('Connected to smee.io channel');
107
+ // #987: fire the `onConnected` callback exactly once per receiver instance.
108
+ // Subsequent reconnects do NOT re-invoke — the setter is idempotent, but
109
+ // firing once is semantically clearer.
110
+ if (!this.connectedOnceFired) {
111
+ this.connectedOnceFired = true;
112
+ if (this.onConnected) {
113
+ try {
114
+ this.onConnected();
115
+ }
116
+ catch (error) {
117
+ this.logger.warn({ err: String(error) }, 'onConnected callback threw; continuing');
118
+ }
119
+ }
120
+ }
88
121
  const reader = response.body.getReader();
89
122
  const decoder = new TextDecoder();
90
123
  let buffer = '';
@@ -145,19 +178,48 @@ export class SmeeWebhookReceiver {
145
178
  // Smee wraps the webhook payload in a 'body' field
146
179
  const githubEvent = data['x-github-event'];
147
180
  const body = data['body'];
148
- if (!body || githubEvent !== 'issues') {
149
- return; // Only interested in issue events
150
- }
151
- const payload = body;
152
- // Only handle "labeled" action
153
- if (payload.action !== 'labeled')
181
+ if (!body)
154
182
  return;
155
- // Check if this is a watched repository
156
- if (!payload.repository?.owner?.login || !payload.repository?.name)
183
+ // Extract repository once every supported webhook family carries this
184
+ // block. Missing/malformed → drop before any monitor call.
185
+ const repository = body['repository'];
186
+ if (!repository?.owner?.login || !repository.name)
157
187
  return;
158
- const repoKey = `${payload.repository.owner.login}/${payload.repository.name}`;
188
+ const owner = repository.owner.login;
189
+ const repo = repository.name;
190
+ const repoKey = `${owner}/${repo}`;
159
191
  if (!this.watchedRepos.has(repoKey))
160
192
  return;
193
+ // #987 FR-004: broad `recordWebhookEvent()` fan-out. Fires before any
194
+ // per-event processing dispatch so a processing error doesn't disable
195
+ // adaptive-poll health tracking. Unconditional on `x-github-event` type —
196
+ // the staleness safety net only needs `lastWebhookEvent` to be non-null.
197
+ this.monitorService.recordWebhookEvent();
198
+ this.prFeedbackMonitor?.recordWebhookEvent();
199
+ this.mergeConflictMonitor?.recordWebhookEvent();
200
+ this.clarificationAnswerMonitor?.recordWebhookEvent();
201
+ const action = body['action'];
202
+ // Per-event processing dispatch.
203
+ if (githubEvent === 'issues' && action === 'labeled') {
204
+ await this.dispatchIssueLabeled(body, repoKey);
205
+ return;
206
+ }
207
+ if ((githubEvent === 'pull_request_review' && action === 'submitted')
208
+ || (githubEvent === 'pull_request_review_comment' && action === 'created')) {
209
+ this.dispatchPrReviewLike(body, owner, repo, repoKey, githubEvent);
210
+ return;
211
+ }
212
+ if (githubEvent === 'issue_comment' && action === 'created') {
213
+ this.dispatchIssueCommentCreated(body, owner, repo, repoKey);
214
+ return;
215
+ }
216
+ // Any other event type: fan-out already fired above, no per-event dispatch.
217
+ }
218
+ /**
219
+ * Handle `issues.labeled` — existing label-monitor path. `recordWebhookEvent`
220
+ * has already been fired by the caller's fan-out.
221
+ */
222
+ async dispatchIssueLabeled(payload, repoKey) {
161
223
  // Assignee filtering: only process issues assigned to this cluster
162
224
  if (this.clusterGithubUsername) {
163
225
  const assigneeLogins = (payload.issue?.assignees ?? []).map(a => a.login);
@@ -170,7 +232,6 @@ export class SmeeWebhookReceiver {
170
232
  return;
171
233
  }
172
234
  }
173
- // Parse and process the label event
174
235
  const issueLabels = payload.issue?.labels?.map(l => l.name) ?? [];
175
236
  const event = this.monitorService.parseLabelEvent(payload.label.name, payload.repository.owner.login, payload.repository.name, payload.issue.number, issueLabels, 'webhook');
176
237
  if (!event) {
@@ -178,7 +239,6 @@ export class SmeeWebhookReceiver {
178
239
  // in the webhook payload, re-fetch from GitHub to handle stale payloads.
179
240
  if (payload.label.name.startsWith('completed:')) {
180
241
  this.logger.info({ label: payload.label.name, repo: repoKey, issue: payload.issue.number }, 'Webhook completed:* label has no matching waiting-for:* in payload, attempting re-fetch');
181
- this.monitorService.recordWebhookEvent();
182
242
  try {
183
243
  await this.monitorService.verifyAndProcessCompletedLabel(payload.repository.owner.login, payload.repository.name, payload.issue.number, payload.label.name);
184
244
  }
@@ -194,9 +254,6 @@ export class SmeeWebhookReceiver {
194
254
  issue: event.issueNumber,
195
255
  label: event.labelName,
196
256
  }, 'Smee webhook received label event');
197
- // Record webhook event for adaptive polling health tracking
198
- this.monitorService.recordWebhookEvent();
199
- // Process the event
200
257
  try {
201
258
  await this.monitorService.processLabelEvent(event);
202
259
  }
@@ -205,23 +262,72 @@ export class SmeeWebhookReceiver {
205
262
  }
206
263
  }
207
264
  /**
208
- * Get the current reconnect delay based on the number of attempts.
209
- * Uses exponential backoff with the current attempt count.
265
+ * Handle `pull_request_review.submitted` / `pull_request_review_comment.created`
266
+ * dispatch to the PR-feedback monitor. Assignee filter is NOT applied here;
267
+ * `PrFeedbackMonitorService.processPrReviewEvent` performs its own PR-link +
268
+ * assignee resolution.
210
269
  */
211
- get reconnectDelayMs() {
212
- return this.calculateBackoffDelay(this.reconnectAttempt);
270
+ dispatchPrReviewLike(body, owner, repo, repoKey, githubEvent) {
271
+ const monitor = this.prFeedbackMonitor;
272
+ if (!monitor)
273
+ return;
274
+ const pr = body['pull_request'];
275
+ if (!pr?.number || !pr.head?.ref) {
276
+ this.logger.warn({ repo: repoKey, githubEvent }, 'Smee: skipping PR-review event without pull_request.number / head.ref');
277
+ return;
278
+ }
279
+ const event = {
280
+ owner,
281
+ repo,
282
+ prNumber: pr.number,
283
+ prBody: pr.body ?? '',
284
+ branchName: pr.head.ref,
285
+ source: 'webhook',
286
+ };
287
+ monitor.processPrReviewEvent(event).catch((error) => {
288
+ this.logger.error({ err: String(error), repo: repoKey, pr: pr.number, githubEvent }, 'Error processing smee PR-review event');
289
+ });
213
290
  }
214
291
  /**
215
- * Calculate exponential backoff delay for reconnection attempts.
216
- * Formula: BASE_RECONNECT_DELAY_MS * 2^attempt, capped at MAX_BACKOFF_MS.
217
- * Progression: 5s → 10s → 20s → 40s → 80s → 160s → 300s (capped).
218
- *
219
- * @param attempt - The current reconnection attempt number (0-indexed)
220
- * @returns Delay in milliseconds before next reconnection attempt
292
+ * Handle `issue_comment.created` dispatch to the clarification-answer
293
+ * monitor after the assignee filter (mirrors the label-event pattern).
221
294
  */
222
- calculateBackoffDelay(attempt) {
223
- const delay = this.baseReconnectDelayMs * Math.pow(2, attempt);
224
- return Math.min(delay, SmeeWebhookReceiver.MAX_BACKOFF_MS);
295
+ dispatchIssueCommentCreated(body, owner, repo, repoKey) {
296
+ const monitor = this.clarificationAnswerMonitor;
297
+ if (!monitor)
298
+ return;
299
+ const issue = body['issue'];
300
+ if (!issue?.number)
301
+ return;
302
+ const assignees = issue.assignees ?? [];
303
+ if (this.clusterGithubUsername) {
304
+ const assigneeLogins = assignees.map(a => a.login);
305
+ if (assigneeLogins.length === 0) {
306
+ this.logger.warn({ issue: issue.number, repo: repoKey }, 'Smee: skipping issue_comment event on issue with no assignees');
307
+ return;
308
+ }
309
+ if (!assigneeLogins.includes(this.clusterGithubUsername)) {
310
+ this.logger.info({ issue: issue.number, repo: repoKey, assignees: assigneeLogins }, 'Smee: skipping issue_comment event on issue not assigned to this cluster');
311
+ return;
312
+ }
313
+ }
314
+ const issueLabels = (issue.labels ?? []).map(l => l.name);
315
+ const event = {
316
+ owner,
317
+ repo,
318
+ issueNumber: issue.number,
319
+ issueLabels,
320
+ source: 'poll',
321
+ };
322
+ monitor.processClarificationAnswerEvent(event).catch((error) => {
323
+ this.logger.error({ err: String(error), repo: repoKey, issue: issue.number }, 'Error processing smee issue_comment event');
324
+ });
325
+ }
326
+ get reconnectDelayMs() {
327
+ return calculateBackoffDelay(this.reconnectAttempt, {
328
+ base: this.baseReconnectDelayMs,
329
+ cap: 30_000,
330
+ });
225
331
  }
226
332
  sleep(ms, signal) {
227
333
  return new Promise((resolve) => {
@@ -1 +1 @@
1
- {"version":3,"file":"smee-receiver.js","sourceRoot":"","sources":["../../src/services/smee-receiver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smee-receiver.js","sourceRoot":"","sources":["../../src/services/smee-receiver.ts"],"names":[],"mappings":"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"}