@generacy-ai/orchestrator 0.2.1 → 0.4.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 (60) hide show
  1. package/dist/activation/index.d.ts.map +1 -1
  2. package/dist/activation/index.js +46 -0
  3. package/dist/activation/index.js.map +1 -1
  4. package/dist/config/loader.d.ts.map +1 -1
  5. package/dist/config/loader.js +14 -0
  6. package/dist/config/loader.js.map +1 -1
  7. package/dist/config/schema.d.ts +38 -0
  8. package/dist/config/schema.d.ts.map +1 -1
  9. package/dist/config/schema.js +12 -0
  10. package/dist/config/schema.js.map +1 -1
  11. package/dist/conversation/types.d.ts +2 -2
  12. package/dist/routes/health.d.ts +16 -0
  13. package/dist/routes/health.d.ts.map +1 -1
  14. package/dist/routes/health.js +33 -0
  15. package/dist/routes/health.js.map +1 -1
  16. package/dist/routes/internal-relay-events.d.ts +3 -3
  17. package/dist/routes/internal-relay-events.d.ts.map +1 -1
  18. package/dist/routes/internal-relay-events.js +1 -0
  19. package/dist/routes/internal-relay-events.js.map +1 -1
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +109 -3
  22. package/dist/server.js.map +1 -1
  23. package/dist/services/credential-expiry-watcher.d.ts +50 -0
  24. package/dist/services/credential-expiry-watcher.d.ts.map +1 -0
  25. package/dist/services/credential-expiry-watcher.js +137 -0
  26. package/dist/services/credential-expiry-watcher.js.map +1 -0
  27. package/dist/services/github-auth-health.d.ts +42 -0
  28. package/dist/services/github-auth-health.d.ts.map +1 -0
  29. package/dist/services/github-auth-health.js +163 -0
  30. package/dist/services/github-auth-health.js.map +1 -0
  31. package/dist/services/identity-split-detector.d.ts +42 -0
  32. package/dist/services/identity-split-detector.d.ts.map +1 -0
  33. package/dist/services/identity-split-detector.js +55 -0
  34. package/dist/services/identity-split-detector.js.map +1 -0
  35. package/dist/services/identity.d.ts.map +1 -1
  36. package/dist/services/identity.js +15 -2
  37. package/dist/services/identity.js.map +1 -1
  38. package/dist/services/label-monitor-service.d.ts +16 -1
  39. package/dist/services/label-monitor-service.d.ts.map +1 -1
  40. package/dist/services/label-monitor-service.js +17 -2
  41. package/dist/services/label-monitor-service.js.map +1 -1
  42. package/dist/services/pr-feedback-monitor-service.d.ts +5 -2
  43. package/dist/services/pr-feedback-monitor-service.d.ts.map +1 -1
  44. package/dist/services/pr-feedback-monitor-service.js +25 -1
  45. package/dist/services/pr-feedback-monitor-service.js.map +1 -1
  46. package/dist/services/relay-bridge.d.ts +1 -0
  47. package/dist/services/relay-bridge.d.ts.map +1 -1
  48. package/dist/services/relay-bridge.js +8 -0
  49. package/dist/services/relay-bridge.js.map +1 -1
  50. package/dist/types/api.d.ts +44 -5
  51. package/dist/types/api.d.ts.map +1 -1
  52. package/dist/types/api.js +4 -0
  53. package/dist/types/api.js.map +1 -1
  54. package/dist/types/github-auth.d.ts +159 -0
  55. package/dist/types/github-auth.d.ts.map +1 -0
  56. package/dist/types/github-auth.js +35 -0
  57. package/dist/types/github-auth.js.map +1 -0
  58. package/dist/types/relay.d.ts +12 -0
  59. package/dist/types/relay.d.ts.map +1 -1
  60. package/package.json +6 -6
package/dist/server.js CHANGED
@@ -26,6 +26,8 @@ import { RelayBridge } from './services/relay-bridge.js';
26
26
  import { LeaseManager } from './services/lease-manager.js';
27
27
  import { WebhookSetupService } from './services/webhook-setup-service.js';
28
28
  import { createWizardCredsTokenProvider } from './services/wizard-creds-token-provider.js';
29
+ import { GitHubAuthHealthService } from './services/github-auth-health.js';
30
+ import { CredentialExpiryWatcher, readCredentialDescriptors, } from './services/credential-expiry-watcher.js';
29
31
  import { setupWebhookRoutes } from './routes/webhooks.js';
30
32
  import { setupPrWebhookRoutes } from './routes/pr-webhooks.js';
31
33
  import { setupDispatchRoutes } from './routes/dispatch.js';
@@ -47,6 +49,7 @@ import { SessionService } from './services/session-service.js';
47
49
  import { activate } from './activation/index.js';
48
50
  import { StatusReporter } from './services/status-reporter.js';
49
51
  import { PostActivationRetryService } from './services/post-activation-retry.js';
52
+ import { detectIdentitySplit } from './services/identity-split-detector.js';
50
53
  import { TunnelHandler, getCodeServerManager, DockerEngineClient } from '@generacy-ai/control-plane';
51
54
  import { setupInternalRelayEventsRoute } from './routes/internal-relay-events.js';
52
55
  import { setupInternalRefreshMetadataRoute } from './routes/internal-refresh-metadata.js';
@@ -119,6 +122,44 @@ export async function createServer(options = {}) {
119
122
  const wizardCredsTokenProvider = !isWorkerMode
120
123
  ? createWizardCredsTokenProvider('/var/lib/generacy/wizard-credentials.env', server.log)
121
124
  : undefined;
125
+ // Resolve agency dir (matches credhelper-daemon convention). Used by the
126
+ // GitHub auth health service to read credentials.yaml at startup and by the
127
+ // expiry watcher's 60s tick. Safe to compute regardless of mode.
128
+ const agencyDir = process.env['CREDHELPER_AGENCY_DIR'] ?? `${process.cwd()}/.agency`;
129
+ // GitHub auth health service — single owner of `githubAuth` state. The
130
+ // emitEvent closure captures relayClientRef declared below; safe because the
131
+ // service does not emit until monitors call recordResult/maybeRequestRefresh,
132
+ // which happens after server.listen() and (in wizard mode) after activation.
133
+ let relayClientRef = null;
134
+ const githubAuthHealth = !isWorkerMode
135
+ ? new GitHubAuthHealthService({
136
+ emitEvent: (payload) => {
137
+ const client = relayClientRef;
138
+ if (!client || !client.isConnected)
139
+ return;
140
+ client.send({
141
+ type: 'event',
142
+ event: 'cluster.credentials',
143
+ data: payload,
144
+ timestamp: new Date().toISOString(),
145
+ });
146
+ },
147
+ logger: server.log,
148
+ })
149
+ : null;
150
+ // Resolve the github-app credentialId once at startup so monitors can pass
151
+ // it through `health.recordResult(credentialId, ...)`. The expiry watcher
152
+ // refreshes this map on YAML mtime change. When no github-app credential is
153
+ // configured, the value stays undefined and monitors call a no-op variant.
154
+ let githubAppCredentialId;
155
+ if (!isWorkerMode && githubAuthHealth) {
156
+ const initialDescriptors = await readCredentialDescriptors(agencyDir);
157
+ const ghapp = initialDescriptors.find((d) => d.type === 'github-app');
158
+ githubAppCredentialId = ghapp?.credentialId;
159
+ if (initialDescriptors.length > 0) {
160
+ githubAuthHealth.setCredentials(initialDescriptors);
161
+ }
162
+ }
122
163
  // Sync labels for watched repositories (skip in worker mode)
123
164
  if (!isWorkerMode && config.repositories.length > 0) {
124
165
  const labelSyncService = new LabelSyncService(server.log, createGitHubClient, wizardCredsTokenProvider);
@@ -220,7 +261,7 @@ export async function createServer(options = {}) {
220
261
  const monitorConfig = config.smee.channelUrl
221
262
  ? { ...config.monitor, pollIntervalMs: config.smee.fallbackPollIntervalMs, adaptivePolling: false }
222
263
  : config.monitor;
223
- labelMonitorService = new LabelMonitorService(server.log, createGitHubClient, phaseTracker, queueAdapter, monitorConfig, config.repositories, clusterGithubUsername, wizardCredsTokenProvider);
264
+ labelMonitorService = new LabelMonitorService(server.log, createGitHubClient, phaseTracker, queueAdapter, monitorConfig, config.repositories, clusterGithubUsername, wizardCredsTokenProvider, githubAuthHealth ?? undefined, githubAppCredentialId);
224
265
  // Create SmeeWebhookReceiver if Smee channel URL is configured
225
266
  if (config.smee.channelUrl) {
226
267
  const watchedRepos = new Set(config.repositories.map(r => `${r.owner}/${r.repo}`));
@@ -229,15 +270,26 @@ export async function createServer(options = {}) {
229
270
  }
230
271
  // Initialize PR feedback monitor service (if enabled)
231
272
  if (config.prMonitor.enabled) {
232
- prFeedbackMonitorService = new PrFeedbackMonitorService(server.log, createGitHubClient, phaseTracker, queueAdapter, config.prMonitor, config.repositories, clusterGithubUsername, wizardCredsTokenProvider);
273
+ prFeedbackMonitorService = new PrFeedbackMonitorService(server.log, createGitHubClient, phaseTracker, queueAdapter, config.prMonitor, config.repositories, clusterGithubUsername, wizardCredsTokenProvider, githubAuthHealth ?? undefined, githubAppCredentialId);
233
274
  }
234
275
  }
276
+ // Proactive credential expiry watcher (60s timer). Reads .agency/credentials.yaml
277
+ // and asks the auth-health service to request a refresh when <5 min remain.
278
+ // No-op when no credentials.yaml is present (wizard never sealed a credential).
279
+ let credentialExpiryWatcher = null;
280
+ if (!isWorkerMode && githubAuthHealth) {
281
+ credentialExpiryWatcher = new CredentialExpiryWatcher({
282
+ agencyDir,
283
+ health: githubAuthHealth,
284
+ logger: server.log,
285
+ });
286
+ }
235
287
  // Initialize relay bridge (full mode only, when API key is configured)
236
288
  let relayBridge = null;
237
289
  let activationPending = false;
238
290
  // Register internal relay events route BEFORE server.listen() (deferred binding pattern).
239
291
  // The getter resolves to null until activation completes; the route returns 503 in that window.
240
- let relayClientRef = null;
292
+ // (`relayClientRef` is declared above so the GitHubAuthHealthService's emit closure can capture it.)
241
293
  let relayBridgeRef = null;
242
294
  if (!isWorkerMode) {
243
295
  const controlPlaneKey = process.env['ORCHESTRATOR_INTERNAL_API_KEY'];
@@ -270,6 +322,22 @@ export async function createServer(options = {}) {
270
322
  const result = await initializeRelayBridge(config, server, apiKeyStore, (client) => { relayClientRef = client; });
271
323
  relayBridge = result.relayBridge;
272
324
  relayBridgeRef = result.relayBridge;
325
+ // Detect identity split (env GENERACY_CLUSTER_ID vs persisted cluster.json.cluster_id).
326
+ // Best-effort: drops event if relay client unavailable. Once per process lifetime (#750).
327
+ detectIdentitySplit({
328
+ clusterJsonPath: config.activation.clusterJsonPath,
329
+ logger: server.log,
330
+ sendRelayEvent: relayClientRef
331
+ ? (channel, payload) => relayClientRef.send({
332
+ type: 'event',
333
+ event: channel,
334
+ data: payload,
335
+ timestamp: new Date().toISOString(),
336
+ })
337
+ : undefined,
338
+ }).catch((err) => {
339
+ server.log.error({ err }, 'Identity-split detection failed (non-fatal)');
340
+ });
273
341
  // Check if post-activation needs to be retried (activated but completion flag absent)
274
342
  const retryService = new PostActivationRetryService({
275
343
  logger: server.log,
@@ -305,6 +373,11 @@ export async function createServer(options = {}) {
305
373
  redis: async () => redisClient ? 'ok' : 'error',
306
374
  dispatcher: async () => workerDispatcher ? 'ok' : 'error',
307
375
  },
376
+ cluster: {
377
+ id: config.cluster?.id,
378
+ displayName: config.cluster?.displayName,
379
+ },
380
+ githubAuth: () => githubAuthHealth?.snapshot(),
308
381
  });
309
382
  await setupDispatchRoutes(server, queueAdapter);
310
383
  }
@@ -325,6 +398,13 @@ export async function createServer(options = {}) {
325
398
  agentRegistry,
326
399
  integrationRegistry,
327
400
  sessionService,
401
+ healthCheckOptions: {
402
+ cluster: {
403
+ id: config.cluster?.id,
404
+ displayName: config.cluster?.displayName,
405
+ },
406
+ githubAuth: () => githubAuthHealth?.snapshot(),
407
+ },
328
408
  });
329
409
  // Register webhook routes inside an encapsulated plugin so the custom
330
410
  // application/json content-type parser (needed for raw-body signature
@@ -407,6 +487,9 @@ export async function createServer(options = {}) {
407
487
  server.log.error({ err: error }, 'Smee webhook receiver failed');
408
488
  });
409
489
  }
490
+ if (credentialExpiryWatcher) {
491
+ credentialExpiryWatcher.start();
492
+ }
410
493
  if (config.webhookSetup.enabled && config.smee.channelUrl) {
411
494
  const webhookSetupService = new WebhookSetupService(server.log, wizardCredsTokenProvider);
412
495
  webhookSetupService.ensureWebhooks(config.smee.channelUrl, config.repositories).catch((error) => {
@@ -457,6 +540,9 @@ export async function createServer(options = {}) {
457
540
  if (prFeedbackMonitorService) {
458
541
  prFeedbackMonitorService.stopPolling();
459
542
  }
543
+ if (credentialExpiryWatcher) {
544
+ await credentialExpiryWatcher.stop();
545
+ }
460
546
  closeAllSSEConnections();
461
547
  }
462
548
  // Close Redis connection (both modes)
@@ -579,6 +665,22 @@ async function activateInBackground(config, server, apiKeyStore, onInitialized,
579
665
  if (relayBridge) {
580
666
  await relayBridge.start();
581
667
  }
668
+ // Detect identity split after relay bridge has started (wizard-mode path, #750).
669
+ // Same call shape as the existing-key path; once-per-process guard lives in the detector.
670
+ detectIdentitySplit({
671
+ clusterJsonPath: config.activation.clusterJsonPath,
672
+ logger: server.log,
673
+ sendRelayEvent: localRelayClient
674
+ ? (channel, payload) => localRelayClient.send({
675
+ type: 'event',
676
+ event: channel,
677
+ data: payload,
678
+ timestamp: new Date().toISOString(),
679
+ })
680
+ : undefined,
681
+ }).catch((err) => {
682
+ server.log.error({ err }, 'Identity-split detection failed (non-fatal)');
683
+ });
582
684
  // Check if post-activation needs to be retried (wizard-mode: activation just completed
583
685
  // but post-activation may have failed on a prior container lifecycle)
584
686
  const retryService = new PostActivationRetryService({
@@ -652,6 +754,10 @@ async function initializeRelayBridge(config, server, apiKeyStore, setRelayClient
652
754
  sseManager: getSSESubscriptionManager(),
653
755
  logger: server.log,
654
756
  config: config.relay,
757
+ cluster: {
758
+ id: config.cluster?.id,
759
+ displayName: config.cluster?.displayName,
760
+ },
655
761
  engineClient,
656
762
  });
657
763
  const fullModeLeaseManager = new LeaseManager(relayClient, server.log, config.lease);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,OAA4D,MAAM,SAAS,CAAC;AACnF,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,GAAG,MAAM,cAAc,CAAC;AAE/B,OAAO,EAA2B,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3H,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,iCAAiC,EAAE,MAAM,uCAAuC,CAAC;AAgB1F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAA+B,EAAE;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;IAE9C,2BAA2B;IAC3B,MAAM,YAAY,GAChB,MAAM,CAAC,OAAO,CAAC,MAAM;QACnB,CAAC,CAAC;YACE,SAAS,EAAE;gBACT,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE;oBACP,aAAa,EAAE,YAAY;oBAC3B,MAAM,EAAE,cAAc;iBACvB;aACF;SACF;QACH,CAAC,CAAC,IAAI,CAAC;IAEX,0BAA0B;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC;QACrB,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;YAC3B,GAAG,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D;QACD,qBAAqB,EAAE,IAAI,EAAE,0CAA0C;QACvE,GAAG,OAAO,CAAC,cAAc;KAC1B,CAAC,CAAC;IAEH,8CAA8C;IAC9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAElC,2BAA2B;IAC3B,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;IAEpD,4BAA4B;IAC5B,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAE7C,wBAAwB;IACxB,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC1B,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;QAC1B,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW;KACrC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC5B,kCAAkC;QAClC,qBAAqB,EAAE,KAAK,EAAE,qBAAqB;KACpD,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;QAC9B,IAAI,EAAE;YACJ,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;SACrC;KACF,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAE/C,sBAAsB;IACtB,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,kCAAkC;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,mBAAmB,EAAE,CAAC;IACrE,MAAM,cAAc,GAAG,oBAAoB,CAAC;QAC1C,WAAW;QACX,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;QAC5B,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,4BAA4B,CAAC;KACtF,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAE7C,8DAA8D;IAC9D,MAAM,qBAAqB,GAAG,MAAM,sBAAsB,CACxD,MAAM,CAAC,OAAO,CAAC,qBAAqB,EACpC,MAAM,CAAC,GAAG,CACX,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;IAE9C,2EAA2E;IAC3E,MAAM,wBAAwB,GAAG,CAAC,YAAY;QAC5C,CAAC,CAAC,8BAA8B,CAAC,0CAA0C,EAAE,MAAM,CAAC,GAAG,CAAC;QACxF,CAAC,CAAC,SAAS,CAAC;IAEd,yEAAyE;IACzE,4EAA4E;IAC5E,iEAAiE;IACjE,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;IAErE,uEAAuE;IACvE,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,IAAI,cAAc,GAAyD,IAAI,CAAC;IAChF,MAAM,gBAAgB,GAAG,CAAC,YAAY;QACpC,CAAC,CAAC,IAAI,uBAAuB,CAAC;YAC1B,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACrB,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC9B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW;oBAAE,OAAO;gBAC3C,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,qBAAqB;oBAC5B,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACkB,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,EAAE,MAAM,CAAC,GAAG;SACnB,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;IAET,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,IAAI,qBAAyC,CAAC;IAC9C,IAAI,CAAC,YAAY,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,kBAAkB,GAAG,MAAM,yBAAyB,CAAC,SAAS,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACtE,qBAAqB,GAAG,KAAK,EAAE,YAAY,CAAC;QAC5C,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,gBAAgB,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,wBAAwB,CAAC,CAAC;QACxG,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACvE,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,wBAAwB,UAAU,CAAC,eAAe,IAAI,UAAU,CAAC,UAAU,kBAAkB,CAC9F,CAAC;YACF,IAAI,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,UAAU,CAAC,WAAW,iBAAiB,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,WAAW,GAAmB,IAAI,CAAC;IACvC,IAAI,CAAC;QACH,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;YAC1C,oBAAoB,EAAE,CAAC;YACvB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,uCAAuC;SACnE,CAAC,CAAC;QACH,kBAAkB;QAClB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,YAAY,EAAE,CAAC;YACjB,8DAA8D;YAC9D,MAAM,IAAI,KAAK,CACb,sDAAsD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/G,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CACxI,CAAC;QACF,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,iEAAiE;IACjE,IAAI,YAA0B,CAAC;IAC/B,IAAI,WAAW,EAAE,CAAC;QAChB,YAAY,GAAG,IAAI,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE;YAC5D,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;SACvC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE;YAClD,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;SACvC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,sDAAsD;IACtD,IAAI,gBAAgB,GAA4B,IAAI,CAAC;IACrD,IAAI,iBAAiB,GAAyD,IAAI,CAAC;IACnF,IAAI,YAAY,EAAE,CAAC;QACjB,sFAAsF;QACtF,IAAI,eAAwE,CAAC;QAC7E,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;gBAC3F,8GAA8G;gBAC9G,iBAAiB,GAAG,IAAI,eAAe,CAAC;oBACtC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;oBAC3B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;iBAChC,CAA6D,CAAC;gBAC/D,eAAe,GAAG,CAAC,KAAa,EAAE,IAA6B,EAAE,EAAE;oBACjE,IAAI,CAAC;wBACH,IAAI,CAAC,iBAAiB,EAAE,WAAW;4BAAE,OAAO;wBAC5C,iBAAiB,CAAC,IAAI,CAAC;4BACrB,IAAI,EAAE,OAAO;4BACb,KAAK;4BACL,IAAI;4BACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;yBACpC,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,EAAE,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAChE,sCAAsC,CACvC,CAAC;oBACJ,CAAC;gBACH,CAAC,CAAC;gBACF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAC3E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAC/H,gBAAgB,GAAG,IAAI,gBAAgB,CACrC,YAAY,EACZ,WAAW,EACX,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,QAAQ,EACf,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CACjC,CAAC;QAEF,oEAAoE;QACpE,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,kBAAkB,GAAG,IAAI,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACzF,gBAAgB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,IAAI,mBAAmB,GAA+B,IAAI,CAAC;IAC3D,IAAI,wBAAwB,GAAoC,IAAI,CAAC;IACrE,IAAI,YAAY,GAA+B,IAAI,CAAC;IACpD,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,MAAM,YAAY,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAEtE,uFAAuF;QACvF,iEAAiE;QACjE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU;YAC1C,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,eAAe,EAAE,KAAK,EAAE;YACnG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEnB,mBAAmB,GAAG,IAAI,mBAAmB,CAC3C,MAAM,CAAC,GAAG,EACV,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,MAAM,CAAC,YAAY,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,IAAI,SAAS,EAC7B,qBAAqB,CACtB,CAAC;QAEF,+DAA+D;QAC/D,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CACrD,CAAC;YACF,YAAY,GAAG,IAAI,mBAAmB,CACpC,MAAM,CAAC,GAAG,EACV,mBAAmB,EACnB,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAC5E,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kCAAkC,CAAC,CAAC;QAC9F,CAAC;QAED,sDAAsD;QACtD,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC7B,wBAAwB,GAAG,IAAI,wBAAwB,CACrD,MAAM,CAAC,GAAG,EACV,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,YAAY,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,IAAI,SAAS,EAC7B,qBAAqB,CACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kFAAkF;IAClF,4EAA4E;IAC5E,gFAAgF;IAChF,IAAI,uBAAuB,GAAmC,IAAI,CAAC;IACnE,IAAI,CAAC,YAAY,IAAI,gBAAgB,EAAE,CAAC;QACtC,uBAAuB,GAAG,IAAI,uBAAuB,CAAC;YACpD,SAAS;YACT,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,MAAM,CAAC,GAAG;SACnB,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,0FAA0F;IAC1F,gGAAgG;IAChG,qGAAqG;IACrG,IAAI,cAAc,GAAuB,IAAI,CAAC;IAC9C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QACrE,IAAI,eAAe,EAAE,CAAC;YACpB,WAAW,CAAC,MAAM,CAAC,eAAe,EAAE;gBAClC,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,CAAC,OAAO,CAAC;gBACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;YACH,6BAA6B,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;YAC5D,iCAAiC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1C,2EAA2E;QAC3E,iBAAiB,GAAG,IAAI,CAAC;QACzB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YACpE,WAAW,GAAG,MAAM,CAAC;YACrB,cAAc,GAAG,MAAM,CAAC;YACxB,mBAAmB,GAAG,OAAO,CAAC;YAC9B,iBAAiB,GAAG,KAAK,CAAC;QAC5B,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3D,iBAAiB,GAAG,KAAK,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChD,gEAAgE;QAChE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClH,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACjC,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;QAEpC,wFAAwF;QACxF,0FAA0F;QAC1F,mBAAmB,CAAC;YAClB,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,eAAe;YAClD,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,cAAc,EAAE,cAAc;gBAC5B,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,cAAe,CAAC,IAAI,CAAC;oBACzC,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACkB,CAAC;gBAC1D,CAAC,CAAC,SAAS;SACd,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,6CAA6C,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,sFAAsF;QACtF,MAAM,YAAY,GAAG,IAAI,0BAA0B,CAAC;YAClD,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,cAAc,EAAE,cAAc;gBAC5B,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,cAAe,CAAC,IAAI,CAAC;oBACzC,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACkB,CAAC;gBAC1D,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;QACH,MAAM,mBAAmB,GAAG,YAAY,CAAC,wBAAwB,EAAE,CAAC;QACpE,IAAI,mBAAmB,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YAC5E,YAAY,CAAC,0BAA0B,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACtD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,8BAA8B,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kFAAkF;IAClF,IAAI,mBAAmB,GAA+B,IAAI,CAAC;IAC3D,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7E,mBAAmB,GAAG,MAAM,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACzF,CAAC;IAED,+CAA+C;IAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,YAAY,EAAE,CAAC;YACjB,8EAA8E;YAC9E,MAAM,iBAAiB,CAAC,MAAM,EAAE;gBAC9B,MAAM,EAAE;oBACN,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;oBACxB,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;oBAC/C,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;iBAC1D;gBACD,OAAO,EAAE;oBACP,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE;oBACtB,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW;iBACzC;gBACD,UAAU,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE;aAC/C,CAAC,CAAC;YACH,MAAM,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,wBAAwB;YACxB,MAAM,aAAa,GAAG,IAAI,qBAAqB,EAAE,CAAC;YAClD,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;YAE3D,MAAM,UAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;YAC5C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,MAAM,mBAAmB,GAAG,IAAI,2BAA2B,EAAE,CAAC;YAC9D,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;gBACxC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU;aAC5C,CAAC,CAAC;YAEH,MAAM,cAAc,CAAC,MAAM,EAAE;gBAC3B,eAAe;gBACf,YAAY;gBACZ,aAAa;gBACb,mBAAmB;gBACnB,cAAc;gBACd,kBAAkB,EAAE;oBAClB,OAAO,EAAE;wBACP,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE;wBACtB,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW;qBACzC;oBACD,UAAU,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE;iBAC/C;aACF,CAAC,CAAC;YAEH,sEAAsE;YACtE,sEAAsE;YACtE,8EAA8E;YAC9E,MAAM,gBAAgB,GAAG,mBAAmB,IAAI,wBAAwB,CAAC;YACzE,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;oBAC3C,uEAAuE;oBACvE,0CAA0C;oBAC1C,YAAY,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;oBACzD,YAAY,CAAC,oBAAoB,CAC/B,kBAAkB,EAClB,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;wBACnB,IAAI,CAAC;4BACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC,CAAC;4BACxC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC1C,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,IAAI,CAAC,GAAY,EAAE,SAAS,CAAC,CAAC;wBAChC,CAAC;oBACH,CAAC,CACF,CAAC;oBAEF,IAAI,mBAAmB,EAAE,CAAC;wBACxB,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CACrD,CAAC;wBACF,MAAM,kBAAkB,CAAC,YAAY,EAAE;4BACrC,cAAc,EAAE,mBAAmB;4BACnC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa;4BAC3C,YAAY;4BACZ,qBAAqB;yBACtB,CAAC,CAAC;oBACL,CAAC;oBAED,IAAI,wBAAwB,EAAE,CAAC;wBAC7B,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CACrD,CAAC;wBACF,MAAM,oBAAoB,CAAC,YAAY,EAAE;4BACvC,cAAc,EAAE,wBAAwB;4BACxC,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;4BAC7C,YAAY;4BACZ,qBAAqB;yBACtB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,yDAAyD;YACzD,IAAI,mBAAmB,EAAE,CAAC;gBACxB,MAAM,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;YAC7D,CAAC;YAED,+FAA+F;YAC/F,MAAM,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;YAE5D,iCAAiC;YACjC,MAAM,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAEhD,8EAA8E;QAChF,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACnC,IAAI,YAAY,EAAE,CAAC;YACjB,0EAA0E;YAC1E,IAAI,iBAAiB,EAAE,CAAC;gBACtB,iBAAiB,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC1C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,6DAA6D,CAAC,CAAC;gBACjG,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,gBAAgB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACvC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,0BAA0B,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,iEAAiE;YACjE,IAAI,mBAAmB,EAAE,CAAC;gBACxB,mBAAmB,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACjD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,wBAAwB,EAAE,CAAC;gBAC7B,wBAAwB,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACtD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,oCAAoC,CAAC,CAAC;gBACzE,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACnC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,uBAAuB,EAAE,CAAC;gBAC5B,uBAAuB,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;YAED,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC1D,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;gBAC1F,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC9F,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,sBAAsB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACL,CAAC;YAED,oEAAoE;YACpE,mEAAmE;YACnE,IAAI,WAAW,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACtC,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAClC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sDAAsD;IACtD,qBAAqB,CAAC,MAAM,EAAE;QAC5B,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC3D,MAAM,EAAE;YACN,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YACnC,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC;SAC7D;QACD,OAAO,EAAE;YACP,KAAK,IAAI,EAAE;gBACT,IAAI,YAAY,EAAE,CAAC;oBACjB,2DAA2D;oBAC3D,IAAI,gBAAgB,EAAE,CAAC;wBACrB,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;oBAChC,CAAC;oBACD,IAAI,iBAAiB,EAAE,CAAC;wBACtB,MAAM,iBAAiB,CAAC,UAAU,EAAE,CAAC;oBACvC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,4DAA4D;oBAC5D,IAAI,mBAAmB,EAAE,CAAC;wBACxB,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC;oBACnC,CAAC;oBACD,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;oBAC3B,CAAC;oBACD,IAAI,YAAY,EAAE,CAAC;wBACjB,YAAY,CAAC,IAAI,EAAE,CAAC;oBACtB,CAAC;oBACD,IAAI,mBAAmB,EAAE,CAAC;wBACxB,mBAAmB,CAAC,WAAW,EAAE,CAAC;oBACpC,CAAC;oBACD,IAAI,wBAAwB,EAAE,CAAC;wBAC7B,wBAAwB,CAAC,WAAW,EAAE,CAAC;oBACzC,CAAC;oBACD,IAAI,uBAAuB,EAAE,CAAC;wBAC5B,MAAM,uBAAuB,CAAC,IAAI,EAAE,CAAC;oBACvC,CAAC;oBACD,sBAAsB,EAAE,CAAC;gBAC3B,CAAC;gBACD,sCAAsC;gBACtC,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC;SACF;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAuB;IACvD,MAAM,MAAM,GAAI,MAA2D,CAAC,MAAM,CAAC;IAEnF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;QACxB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;KACzB,CAAC,CAAC;IAEH,kDAAkD;IAClD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QACvF,MAAM,aAAa,GAAG,MAAM,CAAC;QAC7B,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,cAAc,EAAE,OAAO,EAAE,EAAE,CAAC;YAC1D,KAAK,GAAG,MAAM,uBAAuB,EAAE,CAAC;YACxC,IAAI,KAAK;gBAAE,MAAM;YACjB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,4CAA4C,cAAc,GAAG,CAAC;YAC7E,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEzB,gFAAgF;YAChF,oEAAoE;YACpE,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBACrE,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,8CAA8C;oBAC9C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;YAED,4DAA4D;YAC5D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,aAAa,GAAG,IAAI,+BAA+B,CAAC,CAAC;YACjF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,kBAA+C,EAAE;IAEjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACjD,OAAO,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,oBAAoB,CACjC,MAA0B,EAC1B,MAAuB,EACvB,WAAgC,EAChC,aAAyG,EACzG,cAAgF;IAEhF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAClE,IAAI,cAAkC,CAAC;IACvC,IAAI,iBAAiB,IAAI,IAAI,IAAI,iBAAiB,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC5C,cAAc,GAAG,MAAM,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,6BAA6B,iBAAiB,uCAAuC,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC;QACtC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ;QACpC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW;QAC1C,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,eAAe;QAClD,MAAM,EAAE,MAAM,CAAC,GAAuC;QACtD,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAC;IAChE,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QACvD,yEAAyE;QACzE,0EAA0E;QAC1E,oEAAoE;QACpE,qEAAqE;QACrE,wEAAwE;QACxE,oDAAoD;QACpD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ;aACvC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;aAC1B,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;aACxB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,QAAQ;cAC5B,cAAc,kBAAkB,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACnC,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAE/C,IAAI,gBAAgB,GAAyD,IAAI,CAAC;IAClF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;QAC1F,gBAAgB,GAAG,MAAM,CAAC;QAC1B,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,MAAM,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAE7F,aAAa,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAEhD,4DAA4D;IAC5D,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,iFAAiF;IACjF,0FAA0F;IAC1F,mBAAmB,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,eAAe;QAClD,MAAM,EAAE,MAAM,CAAC,GAAG;QAClB,cAAc,EAAE,gBAAgB;YAC9B,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,gBAAiB,CAAC,IAAI,CAAC;gBAC3C,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACkB,CAAC;YAC1D,CAAC,CAAC,SAAS;KACd,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,6CAA6C,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,uFAAuF;IACvF,sEAAsE;IACtE,MAAM,YAAY,GAAG,IAAI,0BAA0B,CAAC;QAClD,MAAM,EAAE,MAAM,CAAC,GAAG;QAClB,cAAc,EAAE,gBAAgB;YAC9B,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,gBAAiB,CAAC,IAAI,CAAC;gBAC3C,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACkB,CAAC;YAC1D,CAAC,CAAC,SAAS;KACd,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,YAAY,CAAC,wBAAwB,EAAE,CAAC;IACpE,IAAI,mBAAmB,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QACzF,YAAY,CAAC,0BAA0B,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACtD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,8BAA8B,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAClC,MAA0B,EAC1B,MAAuB,EACvB,WAAgC,EAChC,cAAgF;IAEhF,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,0CAA0C,CAAC;IAClH,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAE9E,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IACzC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAE3F,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7C,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACnC,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,CAAC,OAAO,CAAC;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,8CAA8C,CAAC;QAElH,8GAA8G;QAC9G,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;YACtC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC3B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;YAC/B,eAAe,EAAE,oBAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YACzD,kBAAkB,EAAE,gBAAgB;YACpC,MAAM,EAAE;gBACN;oBACE,MAAM,EAAE,gBAAgB;oBACxB,MAAM,EAAE,UAAU,kBAAkB,EAAE;iBACvC;gBACD;oBACE,MAAM,EAAE,cAAc;oBACtB,MAAM,EAAE,UAAU,gBAAgB,EAAE;iBACrC;aACF;SACF,CAA6D,CAAC;QAE/D,sFAAsF;QACtF,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;QAED,0EAA0E;QAC1E,oEAAoE;QACpE,wEAAwE;QACxE,gCAAgC;QAChC,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAE9C,WAAW,GAAG,IAAI,WAAW,CAAC;YAC5B,MAAM,EAAE,WAAW;YACnB,MAAM;YACN,UAAU,EAAE,yBAAyB,EAAE;YACvC,MAAM,EAAE,MAAM,CAAC,GAAG;YAClB,MAAM,EAAE,MAAM,CAAC,KAAK;YACpB,OAAO,EAAE;gBACP,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE;gBACtB,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW;aACzC;YACD,YAAY;SACb,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrF,WAAW,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;QAElD,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;QACjD,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,IAAI,aAAa,CACrC,EAAE,IAAI,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAA8C,CAAC,EAAE,EAC5F,iBAAiB,CAClB,CAAC;YACF,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAE5C,gGAAgG;YAChG,MAAM,MAAM,GAAG,WAAW,CAAC;YAC3B,iBAAiB,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,WAAW,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAE9C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,6BAA6B,CAC1C,MAA0B,EAC1B,MAAuB,EACvB,WAA+B;IAE/B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,uCAAuC,CAAC;IAC5G,MAAM,oBAAoB,GAAG,UAAU,CAAC,cAAc,CAAC;QACrD,CAAC,CAAC,IAAI,oBAAoB,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;QAC1D,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,aAAa,GAAG,mBAAmB,CAAC;QACxC,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,0BAA0B;KACxC,EAAE,oBAAoB,CAAC,CAAC;IACzB,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CACjD,aAAa,EACb,MAAM,CAAC,aAAa,CAAC,qBAAqB,EAC1C,MAAM,CAAC,MAAM,CAAC,cAAc,CAC7B,CAAC;IACF,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CACjD,MAAM,CAAC,aAAa,EACpB,mBAAmB,EACnB,MAAM,CAAC,GAAG,CACX,CAAC;IAEF,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,EAC5D,iCAAiC,CAClC,CAAC;IAEF,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { CredentialDescriptor } from '../types/github-auth.js';
2
+ import type { GitHubAuthHealthService } from './github-auth-health.js';
3
+ interface Logger {
4
+ info(obj: Record<string, unknown>, msg: string): void;
5
+ warn(obj: Record<string, unknown>, msg: string): void;
6
+ debug(obj: Record<string, unknown>, msg: string): void;
7
+ }
8
+ export interface CredentialExpiryWatcherOptions {
9
+ agencyDir: string;
10
+ health: GitHubAuthHealthService;
11
+ logger: Logger;
12
+ tickIntervalMs?: number;
13
+ nearExpiryWindowMs?: number;
14
+ now?: () => number;
15
+ }
16
+ /**
17
+ * Periodic watcher that reads `<agencyDir>/credentials.yaml` on a fixed cadence,
18
+ * forwards the credential map to `GitHubAuthHealthService` on mtime changes, and
19
+ * asks the service to request a refresh for any credential within the near-expiry
20
+ * window.
21
+ *
22
+ * All filesystem and parse errors are caught and logged at `warn`; the timer
23
+ * never throws so a single bad tick can't kill the watcher (D9).
24
+ */
25
+ export declare class CredentialExpiryWatcher {
26
+ private readonly agencyDir;
27
+ private readonly health;
28
+ private readonly logger;
29
+ private readonly tickIntervalMs;
30
+ private readonly nearExpiryWindowMs;
31
+ private readonly now;
32
+ private intervalHandle;
33
+ private inflightTick;
34
+ private lastMtimeMs;
35
+ private cachedDescriptors;
36
+ private fileMissingWarned;
37
+ constructor(options: CredentialExpiryWatcherOptions);
38
+ start(): void;
39
+ stop(): Promise<void>;
40
+ /** Exposed for tests. */
41
+ tick(): Promise<void>;
42
+ }
43
+ /**
44
+ * Read `<agencyDir>/credentials.yaml` once and return descriptors. Used at
45
+ * orchestrator startup to resolve the github-app `credentialId` for monitor
46
+ * services before the watcher has run its first tick.
47
+ */
48
+ export declare function readCredentialDescriptors(agencyDir: string): Promise<CredentialDescriptor[]>;
49
+ export {};
50
+ //# sourceMappingURL=credential-expiry-watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-expiry-watcher.d.ts","sourceRoot":"","sources":["../../src/services/credential-expiry-watcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,UAAU,MAAM;IACd,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,uBAAuB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AASD;;;;;;;;GAQG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,OAAO,EAAE,8BAA8B;IASnD,KAAK,IAAI,IAAI;IAeP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,yBAAyB;IACnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAuD5B;AAgBD;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CASjC"}
@@ -0,0 +1,137 @@
1
+ import { stat, readFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import YAML from 'yaml';
4
+ const DEFAULT_TICK_INTERVAL_MS = 60_000;
5
+ const DEFAULT_NEAR_EXPIRY_WINDOW_MS = 5 * 60_000;
6
+ /**
7
+ * Periodic watcher that reads `<agencyDir>/credentials.yaml` on a fixed cadence,
8
+ * forwards the credential map to `GitHubAuthHealthService` on mtime changes, and
9
+ * asks the service to request a refresh for any credential within the near-expiry
10
+ * window.
11
+ *
12
+ * All filesystem and parse errors are caught and logged at `warn`; the timer
13
+ * never throws so a single bad tick can't kill the watcher (D9).
14
+ */
15
+ export class CredentialExpiryWatcher {
16
+ agencyDir;
17
+ health;
18
+ logger;
19
+ tickIntervalMs;
20
+ nearExpiryWindowMs;
21
+ now;
22
+ intervalHandle = null;
23
+ inflightTick = null;
24
+ lastMtimeMs = null;
25
+ cachedDescriptors = [];
26
+ fileMissingWarned = false;
27
+ constructor(options) {
28
+ this.agencyDir = options.agencyDir;
29
+ this.health = options.health;
30
+ this.logger = options.logger;
31
+ this.tickIntervalMs = options.tickIntervalMs ?? DEFAULT_TICK_INTERVAL_MS;
32
+ this.nearExpiryWindowMs = options.nearExpiryWindowMs ?? DEFAULT_NEAR_EXPIRY_WINDOW_MS;
33
+ this.now = options.now ?? Date.now;
34
+ }
35
+ start() {
36
+ if (this.intervalHandle)
37
+ return;
38
+ this.intervalHandle = setInterval(() => {
39
+ this.inflightTick = this.tick().catch((err) => {
40
+ this.logger.warn({ err: err instanceof Error ? err.message : String(err) }, 'Credential expiry tick failed');
41
+ });
42
+ }, this.tickIntervalMs);
43
+ if (typeof this.intervalHandle.unref === 'function') {
44
+ this.intervalHandle.unref();
45
+ }
46
+ }
47
+ async stop() {
48
+ if (this.intervalHandle) {
49
+ clearInterval(this.intervalHandle);
50
+ this.intervalHandle = null;
51
+ }
52
+ if (this.inflightTick) {
53
+ await this.inflightTick;
54
+ this.inflightTick = null;
55
+ }
56
+ }
57
+ /** Exposed for tests. */
58
+ async tick() {
59
+ const yamlPath = path.join(this.agencyDir, 'credentials.yaml');
60
+ let mtimeMs;
61
+ try {
62
+ const st = await stat(yamlPath);
63
+ mtimeMs = st.mtimeMs;
64
+ }
65
+ catch (err) {
66
+ if (err.code === 'ENOENT') {
67
+ if (!this.fileMissingWarned) {
68
+ this.logger.warn({ yamlPath }, 'credentials.yaml not present — expiry watcher idle until written');
69
+ this.fileMissingWarned = true;
70
+ }
71
+ return;
72
+ }
73
+ this.logger.warn({ yamlPath, err: err instanceof Error ? err.message : String(err) }, 'Failed to stat credentials.yaml');
74
+ return;
75
+ }
76
+ this.fileMissingWarned = false;
77
+ if (mtimeMs !== this.lastMtimeMs) {
78
+ try {
79
+ const raw = await readFile(yamlPath, 'utf8');
80
+ const parsed = YAML.parse(raw);
81
+ const descriptors = parseDescriptors(parsed);
82
+ this.cachedDescriptors = descriptors;
83
+ this.health.setCredentials(descriptors);
84
+ this.lastMtimeMs = mtimeMs;
85
+ }
86
+ catch (err) {
87
+ this.logger.warn({ yamlPath, err: err instanceof Error ? err.message : String(err) }, 'Failed to parse credentials.yaml');
88
+ return;
89
+ }
90
+ }
91
+ const now = this.now();
92
+ for (const desc of this.cachedDescriptors) {
93
+ if (desc.type !== 'github-app')
94
+ continue;
95
+ if (!desc.expiresAt)
96
+ continue;
97
+ const expiresAtMs = Date.parse(desc.expiresAt);
98
+ if (!Number.isFinite(expiresAtMs))
99
+ continue;
100
+ const remainingMs = expiresAtMs - now;
101
+ if (remainingMs <= this.nearExpiryWindowMs) {
102
+ this.health.maybeRequestRefresh(desc.credentialId, 'near-expiry');
103
+ }
104
+ }
105
+ }
106
+ }
107
+ function parseDescriptors(parsed) {
108
+ if (!parsed?.credentials || typeof parsed.credentials !== 'object') {
109
+ return [];
110
+ }
111
+ const descriptors = [];
112
+ for (const [id, entry] of Object.entries(parsed.credentials)) {
113
+ if (!entry || typeof entry !== 'object')
114
+ continue;
115
+ const type = typeof entry.type === 'string' ? entry.type : 'unknown';
116
+ const expiresAt = typeof entry.expiresAt === 'string' ? entry.expiresAt : undefined;
117
+ descriptors.push({ credentialId: id, type, expiresAt });
118
+ }
119
+ return descriptors;
120
+ }
121
+ /**
122
+ * Read `<agencyDir>/credentials.yaml` once and return descriptors. Used at
123
+ * orchestrator startup to resolve the github-app `credentialId` for monitor
124
+ * services before the watcher has run its first tick.
125
+ */
126
+ export async function readCredentialDescriptors(agencyDir) {
127
+ const yamlPath = path.join(agencyDir, 'credentials.yaml');
128
+ try {
129
+ const raw = await readFile(yamlPath, 'utf8');
130
+ const parsed = YAML.parse(raw);
131
+ return parseDescriptors(parsed);
132
+ }
133
+ catch {
134
+ return [];
135
+ }
136
+ }
137
+ //# sourceMappingURL=credential-expiry-watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-expiry-watcher.js","sourceRoot":"","sources":["../../src/services/credential-expiry-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAmBxB,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC,MAAM,6BAA6B,GAAG,CAAC,GAAG,MAAM,CAAC;AAMjD;;;;;;;;GAQG;AACH,MAAM,OAAO,uBAAuB;IACjB,SAAS,CAAS;IAClB,MAAM,CAA0B;IAChC,MAAM,CAAS;IACf,cAAc,CAAS;IACvB,kBAAkB,CAAS;IAC3B,GAAG,CAAe;IAE3B,cAAc,GAA0B,IAAI,CAAC;IAC7C,YAAY,GAAyB,IAAI,CAAC;IAC1C,WAAW,GAAkB,IAAI,CAAC;IAClC,iBAAiB,GAA2B,EAAE,CAAC;IAC/C,iBAAiB,GAAG,KAAK,CAAC;IAElC,YAAY,OAAuC;QACjD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,wBAAwB,CAAC;QACzE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,6BAA6B,CAAC;QACtF,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACrC,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO;QAChC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACzD,+BAA+B,CAChC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACxB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACpD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,YAAY,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAE/D,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,QAAQ,EAAE,EACZ,kEAAkE,CACnE,CAAC;oBACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAChC,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACnE,iCAAiC,CAClC,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAE/B,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiC,CAAC;gBAC/D,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC7C,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;gBACxC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;YAC7B,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACnE,kCAAkC,CACnC,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;gBAAE,SAAS;YACzC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,SAAS;YAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,SAAS;YAC5C,MAAM,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC;YACtC,IAAI,WAAW,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,MAAoC;IAC5D,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiC,CAAC;QAC/D,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { CredentialDescriptor, CredentialsEventPayload, GitHubAuthSnapshot } from '../types/github-auth.js';
2
+ import type { AuthHealthSink } from './label-monitor-service.js';
3
+ interface Logger {
4
+ info(obj: Record<string, unknown>, msg: string): void;
5
+ warn(obj: Record<string, unknown>, msg: string): void;
6
+ debug(obj: Record<string, unknown>, msg: string): void;
7
+ }
8
+ export interface GitHubAuthHealthServiceOptions {
9
+ emitEvent: (payload: CredentialsEventPayload) => void;
10
+ logger: Logger;
11
+ now?: () => number;
12
+ minRefreshIntervalMs?: number;
13
+ }
14
+ export type RecordResult = {
15
+ ok: true;
16
+ } | {
17
+ ok: false;
18
+ statusCode?: number;
19
+ error?: unknown;
20
+ };
21
+ /**
22
+ * In-memory per-credential GitHub auth state machine.
23
+ *
24
+ * Owns the `githubAuth` field surfaced on `/health` and emits state-transition
25
+ * events on `cluster.credentials`. Rate-limits refresh requests per credential.
26
+ */
27
+ export declare class GitHubAuthHealthService implements AuthHealthSink {
28
+ private readonly emitEvent;
29
+ private readonly logger;
30
+ private readonly now;
31
+ private readonly minRefreshIntervalMs;
32
+ private readonly entries;
33
+ constructor(options: GitHubAuthHealthServiceOptions);
34
+ setCredentials(credentials: CredentialDescriptor[]): void;
35
+ recordResult(credentialId: string, result: RecordResult): void;
36
+ maybeRequestRefresh(credentialId: string, reason: 'near-expiry' | 'auth-401' | string): boolean;
37
+ snapshot(): GitHubAuthSnapshot;
38
+ private getOrCreate;
39
+ private selectSurfaceCredential;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=github-auth-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-auth-health.d.ts","sourceRoot":"","sources":["../../src/services/github-auth-health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAGnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,UAAU,MAAM;IACd,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAIxD;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,cAAc;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6C;IACvE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;gBAE1D,OAAO,EAAE,8BAA8B;IAOnD,cAAc,CAAC,WAAW,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAwBzD,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAkD9D,mBAAmB,CACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,aAAa,GAAG,UAAU,GAAG,MAAM,GAC1C,OAAO;IAsCV,QAAQ,IAAI,kBAAkB;IAsB9B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,uBAAuB;CAehC"}