@generacy-ai/orchestrator 0.8.0 → 0.9.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 (112) 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 +168 -27
  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 +71 -0
  32. package/dist/services/clarification-answer-monitor-service.d.ts.map +1 -0
  33. package/dist/services/clarification-answer-monitor-service.js +366 -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 +2 -2
  44. package/dist/services/label-monitor-service.d.ts.map +1 -1
  45. package/dist/services/label-monitor-service.js +33 -16
  46. package/dist/services/label-monitor-service.js.map +1 -1
  47. package/dist/services/merge-conflict-monitor-service.d.ts +1 -1
  48. package/dist/services/merge-conflict-monitor-service.d.ts.map +1 -1
  49. package/dist/services/merge-conflict-monitor-service.js +33 -13
  50. package/dist/services/merge-conflict-monitor-service.js.map +1 -1
  51. package/dist/services/pr-feedback-monitor-service.d.ts +1 -1
  52. package/dist/services/pr-feedback-monitor-service.d.ts.map +1 -1
  53. package/dist/services/pr-feedback-monitor-service.js +33 -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/webhook-setup-service.d.ts +115 -111
  64. package/dist/services/webhook-setup-service.d.ts.map +1 -1
  65. package/dist/services/webhook-setup-service.js +377 -209
  66. package/dist/services/webhook-setup-service.js.map +1 -1
  67. package/dist/types/api.d.ts +3 -0
  68. package/dist/types/api.d.ts.map +1 -1
  69. package/dist/types/api.js +1 -0
  70. package/dist/types/api.js.map +1 -1
  71. package/dist/types/monitor.d.ts +15 -2
  72. package/dist/types/monitor.d.ts.map +1 -1
  73. package/dist/worker/clarification-markers.d.ts +62 -0
  74. package/dist/worker/clarification-markers.d.ts.map +1 -1
  75. package/dist/worker/clarification-markers.js +101 -0
  76. package/dist/worker/clarification-markers.js.map +1 -1
  77. package/dist/worker/clarification-poster.d.ts +102 -6
  78. package/dist/worker/clarification-poster.d.ts.map +1 -1
  79. package/dist/worker/clarification-poster.js +299 -89
  80. package/dist/worker/clarification-poster.js.map +1 -1
  81. package/dist/worker/claude-cli-worker.d.ts +7 -0
  82. package/dist/worker/claude-cli-worker.d.ts.map +1 -1
  83. package/dist/worker/claude-cli-worker.js +3 -0
  84. package/dist/worker/claude-cli-worker.js.map +1 -1
  85. package/dist/worker/failure-fingerprint.d.ts +41 -0
  86. package/dist/worker/failure-fingerprint.d.ts.map +1 -0
  87. package/dist/worker/failure-fingerprint.js +75 -0
  88. package/dist/worker/failure-fingerprint.js.map +1 -0
  89. package/dist/worker/label-manager.d.ts +42 -0
  90. package/dist/worker/label-manager.d.ts.map +1 -1
  91. package/dist/worker/label-manager.js +108 -4
  92. package/dist/worker/label-manager.js.map +1 -1
  93. package/dist/worker/phase-loop.d.ts +30 -0
  94. package/dist/worker/phase-loop.d.ts.map +1 -1
  95. package/dist/worker/phase-loop.js +124 -26
  96. package/dist/worker/phase-loop.js.map +1 -1
  97. package/dist/worker/pr-feedback-handler.d.ts +13 -0
  98. package/dist/worker/pr-feedback-handler.d.ts.map +1 -1
  99. package/dist/worker/pr-feedback-handler.js +48 -0
  100. package/dist/worker/pr-feedback-handler.js.map +1 -1
  101. package/dist/worker/stage-comment-manager.d.ts +5 -0
  102. package/dist/worker/stage-comment-manager.d.ts.map +1 -1
  103. package/dist/worker/stage-comment-manager.js +8 -1
  104. package/dist/worker/stage-comment-manager.js.map +1 -1
  105. package/dist/worker/terminal-label-op-error.d.ts +1 -1
  106. package/dist/worker/terminal-label-op-error.d.ts.map +1 -1
  107. package/dist/worker/terminal-label-op-error.js.map +1 -1
  108. package/dist/worker/types.d.ts +31 -0
  109. package/dist/worker/types.d.ts.map +1 -1
  110. package/dist/worker/types.js +11 -0
  111. package/dist/worker/types.js.map +1 -1
  112. package/package.json +5 -5
@@ -1,3 +1,4 @@
1
+ import type { ClusterStatus } from './status-reporter.js';
1
2
  /**
2
3
  * Logger interface matching Pino/Fastify logger shape.
3
4
  *
@@ -60,8 +61,8 @@ export interface WebhookSetupResult {
60
61
  /**
61
62
  * Action taken during webhook setup
62
63
  * - `created`: New webhook was created
63
- * - `skipped`: Active webhook already exists
64
- * - `reactivated`: Inactive webhook was reactivated
64
+ * - `skipped`: Active webhook already exists (or a foreign hook was left alone)
65
+ * - `reactivated`: Inactive webhook was reactivated, or persisted-URL match PATCHed
65
66
  * - `failed`: Setup failed (see `error` field)
66
67
  */
67
68
  action: 'created' | 'skipped' | 'reactivated' | 'failed';
@@ -82,43 +83,75 @@ export interface WebhookSetupSummary {
82
83
  created: number;
83
84
  /** Number of webhooks skipped (already active) */
84
85
  skipped: number;
85
- /** Number of webhooks reactivated (was inactive) */
86
+ /** Number of webhooks reactivated (was inactive or persisted-URL healed) */
86
87
  reactivated: number;
87
88
  /** Number of repositories that failed webhook setup */
88
89
  failed: number;
89
90
  /** Detailed results for each repository */
90
91
  results: WebhookSetupResult[];
91
92
  }
93
+ /** StatusReporter surface the service depends on (kept minimal for DI). */
94
+ interface StatusReporterLike {
95
+ pushStatus(status: ClusterStatus, reason: string): Promise<void>;
96
+ }
97
+ /**
98
+ * Constructor options bundle for optional dependency-injection hooks.
99
+ *
100
+ * All fields are optional so existing callers (and the pre-#972 test suite)
101
+ * keep working. When a hook is absent the corresponding side-effect degrades
102
+ * to a no-op, matching pre-#972 behavior.
103
+ */
104
+ export interface WebhookSetupServiceOptions {
105
+ /**
106
+ * Fires `cluster.bootstrap` relay events on webhook-registration 403.
107
+ * Payload shape per `contracts/webhook-registration-forbidden-event.md`.
108
+ */
109
+ sendRelayEvent?: (channel: string, payload: unknown) => void;
110
+ /**
111
+ * Pushes `degraded` cluster status on webhook-registration 403.
112
+ * Payload shape per `contracts/degraded-status-transition.md`.
113
+ */
114
+ statusReporter?: StatusReporterLike;
115
+ /** Path to the persisted smee channel URL file. Defaults to `/var/lib/generacy/smee-channel`. */
116
+ channelFilePath?: string;
117
+ /** Resolves the current github-app installation id for the 403 event payload. */
118
+ installationIdProvider?: () => Promise<number | null>;
119
+ }
92
120
  /**
93
121
  * Service for auto-configuring GitHub webhooks for monitored repositories.
94
122
  *
95
123
  * When SMEE_CHANNEL_URL is configured, this service verifies and creates
96
124
  * GitHub webhooks for all monitored repositories on orchestrator startup,
97
125
  * ensuring near-instant label detection via Smee instead of 15-minute polling.
98
- *
99
- * Features:
100
- * - Creates missing webhooks pointing to Smee channel URL
101
- * - Skips existing active webhooks (idempotent)
102
- * - Reactivates inactive webhooks and merges events
103
- * - Graceful error handling (per-repo failures don't block startup)
104
- * - Warns on event mismatches without modifying
105
- * - Validates Smee URL format (warns on non-smee.io URLs)
106
- *
107
- * Error Handling:
108
- * - 403/404 errors: Logged as warnings, system falls back to polling
109
- * - Network/API errors: Logged and continue with next repo
110
- * - All errors are non-fatal and don't block orchestrator startup
111
126
  */
112
127
  export declare class WebhookSetupService {
113
128
  private readonly _logger;
114
129
  private readonly _tokenProvider?;
130
+ private readonly _sendRelayEvent?;
131
+ private readonly _statusReporter?;
132
+ private readonly _channelFilePath;
133
+ private readonly _installationIdProvider?;
134
+ /**
135
+ * Set of `owner/repo` values for which the 403 fail-loud triple has already
136
+ * fired within this orchestrator boot. Bounds cloud-side banner noise to
137
+ * at most N events per boot for a cluster with N configured repos
138
+ * (see `contracts/webhook-registration-forbidden-event.md` §"Emission rate").
139
+ */
140
+ private readonly _forbiddenFiredForRepo;
141
+ /**
142
+ * Cached github-app installation id resolved once at startup via
143
+ * `installationIdProvider`. `undefined` means "not yet resolved this boot";
144
+ * `null` means "resolved, but no id available"; `number` means resolved.
145
+ */
146
+ private _installationIdCache;
115
147
  /**
116
148
  * Creates a new WebhookSetupService instance.
117
149
  *
118
150
  * @param logger - Logger instance for structured logging (Pino/Fastify compatible)
119
151
  * @param tokenProvider - Optional async function returning a GH_TOKEN for auth
152
+ * @param options - Optional DI hooks for #972 fail-loud triple + FR-004 persisted-URL healing
120
153
  */
121
- constructor(logger: Logger, tokenProvider?: () => Promise<string | undefined>);
154
+ constructor(logger: Logger, tokenProvider?: () => Promise<string | undefined>, options?: WebhookSetupServiceOptions);
122
155
  /**
123
156
  * Invariant: when a tokenProvider is configured, the env override ALWAYS
124
157
  * carries a `GH_TOKEN` key — never `undefined`. Prevents the `gh` subprocess
@@ -131,111 +164,85 @@ export declare class WebhookSetupService {
131
164
  /**
132
165
  * Ensure webhooks exist for all repositories.
133
166
  *
134
- * This is the main entry point for webhook setup. For each repository:
135
- * 1. Lists existing webhooks via GitHub API
136
- * 2. Checks if a webhook already exists for the Smee channel URL
137
- * 3. Creates missing webhooks, reactivates inactive ones, or skips active ones
138
- * 4. Logs results and continues on errors (graceful degradation)
139
- *
140
- * Per-repository errors are logged but don't block the overall process,
141
- * allowing partial success when some repositories fail (e.g., due to
142
- * insufficient permissions).
167
+ * For each repository, evaluates the decision matrix documented at
168
+ * `specs/972-summary-snappoll-preview/contracts/ensure-webhooks-behavior.md`.
169
+ * Per-repository errors are logged but don't block the overall process.
143
170
  *
144
171
  * @param smeeChannelUrl - The Smee channel URL to configure webhooks for
145
- * (e.g., 'https://smee.io/abc123'). URL is validated
146
- * and a warning is logged if it doesn't point to smee.io.
147
- * @param repositories - List of repositories to ensure webhooks for. Each
148
- * repository is processed sequentially to avoid rate limits.
149
- * @returns Promise resolving to a summary of webhook setup results, including
150
- * aggregate counts and detailed per-repository results.
151
- *
152
- * @example
153
- * ```typescript
154
- * const service = new WebhookSetupService(logger);
155
- * const summary = await service.ensureWebhooks(
156
- * 'https://smee.io/abc123',
157
- * [
158
- * { owner: 'myorg', repo: 'myrepo' },
159
- * { owner: 'myorg', repo: 'another-repo' }
160
- * ]
161
- * );
162
- * console.log(`Created: ${summary.created}, Skipped: ${summary.skipped}, Failed: ${summary.failed}`);
163
- * ```
164
- *
165
- * @see {@link WebhookSetupSummary} for the structure of the returned summary
172
+ * @param repositories - List of repositories to ensure webhooks for
173
+ * @returns Promise resolving to a summary of webhook setup results
166
174
  */
167
175
  ensureWebhooks(smeeChannelUrl: string, repositories: RepositoryConfig[]): Promise<WebhookSetupSummary>;
168
176
  /**
169
177
  * Ensure webhook exists for a single repository.
170
178
  *
171
- * Internal method that handles webhook verification and setup for one repository.
172
- * All errors are caught and converted to a 'failed' result to allow graceful
173
- * degradation.
174
- *
175
- * Logic flow:
176
- * 1. List existing webhooks
177
- * 2. Find webhook matching the Smee URL (case-insensitive)
178
- * 3. If not found: Create new webhook → 'created'
179
- * 4. If found and active: Skip → 'skipped' (warn on event mismatch)
180
- * 5. If found but inactive: Reactivate and merge events → 'reactivated'
181
- *
182
- * @param owner - Repository owner (organization or user)
183
- * @param repo - Repository name
184
- * @param smeeChannelUrl - The Smee channel URL to configure
185
- * @returns Promise resolving to the result of webhook setup for this repository
186
- *
187
- * @throws Never throws - all errors are caught and returned as 'failed' results
179
+ * Implements rows 1-11 of the per-repo decision matrix in
180
+ * `contracts/ensure-webhooks-behavior.md`.
188
181
  */
189
182
  private _ensureWebhookForRepo;
190
183
  /**
191
- * Find a webhook matching the given URL.
184
+ * Read the previously-persisted smee channel URL from disk.
192
185
  *
193
- * Uses case-insensitive URL comparison. No URL normalization is performed -
194
- * simple string matching after lowercasing both URLs. This means that
195
- * 'https://smee.io/ABC' and 'https://smee.io/abc' are considered equal,
196
- * but trailing slashes or different protocols would not match.
186
+ * Returns `null` on ENOENT, on empty content, or on any read/parse error.
187
+ * Written only by `SmeeChannelResolver`; read-only here.
188
+ */
189
+ private _readPersistedChannelUrl;
190
+ /**
191
+ * Decision matrix for choosing what to do with the existing hook set.
197
192
  *
198
- * @param webhooks - Array of webhooks to search through
199
- * @param targetUrl - The URL to match (typically the Smee channel URL)
200
- * @returns The first matching webhook, or undefined if none found
193
+ * Implements rows 4-9 of `contracts/ensure-webhooks-behavior.md`. First
194
+ * match wins. `matches(A, B)` is case-insensitive string equality per
195
+ * `data-model.md` §"Field-Level Validation Rules Summary".
196
+ */
197
+ private _selectExistingHookForUpdate;
198
+ /**
199
+ * Detect whether a `gh api` failure is the 403 fail-loud case.
201
200
  *
202
- * @example
203
- * ```typescript
204
- * const webhooks = [
205
- * { id: 1, active: true, config: { url: 'https://smee.io/ABC' }, events: ['issues'] }
206
- * ];
207
- * const match = this._findMatchingWebhook(webhooks, 'https://smee.io/abc');
208
- * // Returns the webhook with id: 1
209
- * ```
201
+ * Matches the two error patterns GitHub can return for the same underlying
202
+ * failure mode: `HTTP 403` (canonical) and `Resource not accessible by
203
+ * integration` (typical stderr wording). Both patterns fire for the same
204
+ * missing-scope case; matching either is sufficient (case-insensitive
205
+ * substring). See `contracts/webhook-registration-forbidden-event.md`
206
+ * §"Trigger conditions".
210
207
  */
211
- private _findMatchingWebhook;
208
+ private _isForbiddenError;
212
209
  /**
213
- * List webhooks for a repository via GitHub API.
210
+ * Handle any `gh` failure (list, create, or patch) from within
211
+ * `_ensureWebhookForRepo`. On 403 → emit the fail-loud triple; on 404/500
212
+ * → warn-only; on all other errors → generic warn.
214
213
  *
215
- * Uses the `gh` CLI to call `GET /repos/{owner}/{repo}/hooks`.
216
- * Errors are logged and an empty array is returned for graceful degradation.
214
+ * Guarantees the log line is the audit floor (always fires); relay event +
215
+ * status transition are best-effort per the contracts.
216
+ */
217
+ private _handleGhFailure;
218
+ /**
219
+ * Emit the fail-loud triple (warn log + relay event + degraded status) for
220
+ * a webhook-registration 403. Bounded to at most once per `(repo, boot)`
221
+ * per `contracts/webhook-registration-forbidden-event.md` §"Emission rate".
217
222
  *
218
- * @param owner - Repository owner (organization or user)
219
- * @param repo - Repository name
220
- * @returns Promise resolving to an array of webhooks (empty array on error)
223
+ * The log line is synchronous and always succeeds — this is the audit
224
+ * floor. Relay event and status transition are fire-and-forget.
225
+ */
226
+ private _fireForbiddenTriple;
227
+ /**
228
+ * Resolve the github-app installation id, caching the result for the process
229
+ * lifetime. Returns `null` when no provider is configured or the provider
230
+ * cannot resolve an id (per data-model.md, `null` is a valid emit value).
231
+ */
232
+ private _resolveInstallationId;
233
+ /**
234
+ * List webhooks for a repository via GitHub API.
221
235
  *
222
- * @see {@link https://docs.github.com/en/rest/webhooks/repos#list-repository-webhooks}
236
+ * Errors are thrown so the per-repo catch branch can classify them as 403
237
+ * (fail-loud) vs 404/500 (warn-only). Returns an empty array when the API
238
+ * returns a well-formed non-array response.
223
239
  */
224
240
  private _listRepoWebhooks;
225
241
  /**
226
242
  * Create a new webhook for a repository via GitHub API.
227
243
  *
228
- * Uses the `gh` CLI to call `POST /repos/{owner}/{repo}/hooks` with:
229
- * - `config.url`: The Smee channel URL
230
- * - `config.content_type`: 'json'
231
- * - `events`: ['issues']
232
- * - `active`: true
233
- *
234
- * @param owner - Repository owner (organization or user)
235
- * @param repo - Repository name
236
- * @param smeeChannelUrl - The Smee channel URL to configure
237
- * @returns Promise resolving to the webhook ID on success
238
- * @throws Error if webhook creation fails (caught and logged by caller)
244
+ * FR-001: locks the create-time event list to `issues`, `pull_request`,
245
+ * `check_run`, `check_suite`. `content_type` is `json`; `active` is `true`.
239
246
  *
240
247
  * @see {@link https://docs.github.com/en/rest/webhooks/repos#create-a-repository-webhook}
241
248
  */
@@ -243,22 +250,19 @@ export declare class WebhookSetupService {
243
250
  /**
244
251
  * Update an existing webhook (reactivate and/or merge events) via GitHub API.
245
252
  *
246
- * Uses the `gh` CLI to call `PATCH /repos/{owner}/{repo}/hooks/{webhookId}`.
247
- * When reactivating an inactive webhook, this method also merges the 'issues'
248
- * event with any existing events to preserve the webhook's original configuration.
249
- *
250
- * @param owner - Repository owner (organization or user)
251
- * @param repo - Repository name
252
- * @param webhookId - Webhook ID to update
253
- * @param updates - Updates to apply
254
- * @param updates.active - Set webhook active status (true to reactivate)
255
- * @param updates.events - Event types to subscribe to (merged with existing)
256
- * @returns Promise resolving to true on success
257
- * @throws Error if webhook update fails (caught and logged by caller)
253
+ * Used for the `reactivate` decision-matrix row (inactive hook matching
254
+ * current URL). Preserves pre-#972 argv ordering so the existing test
255
+ * assertions (`build correct PATCH request with active flag and merged events`)
256
+ * continue to pass.
258
257
  *
259
258
  * @see {@link https://docs.github.com/en/rest/webhooks/repos#update-a-repository-webhook}
260
259
  */
261
260
  private _updateRepoWebhook;
261
+ /**
262
+ * Update an existing webhook's `config.url` to the current channel (FR-004
263
+ * stale-channel heal). Also enforces the locked events set and active flag.
264
+ */
265
+ private _updateRepoWebhookConfig;
262
266
  }
263
267
  export {};
264
268
  //# sourceMappingURL=webhook-setup-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-setup-service.d.ts","sourceRoot":"","sources":["../../src/services/webhook-setup-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook-setup-service.d.ts","sourceRoot":"","sources":["../../src/services/webhook-setup-service.ts"],"names":[],"mappings":"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"}