@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.
- package/dist/activation/index.d.ts.map +1 -1
- package/dist/activation/index.js +46 -0
- package/dist/activation/index.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +14 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +38 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +12 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/conversation/types.d.ts +2 -2
- package/dist/routes/health.d.ts +16 -0
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +33 -0
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/internal-relay-events.d.ts +3 -3
- package/dist/routes/internal-relay-events.d.ts.map +1 -1
- package/dist/routes/internal-relay-events.js +1 -0
- package/dist/routes/internal-relay-events.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +109 -3
- package/dist/server.js.map +1 -1
- package/dist/services/credential-expiry-watcher.d.ts +50 -0
- package/dist/services/credential-expiry-watcher.d.ts.map +1 -0
- package/dist/services/credential-expiry-watcher.js +137 -0
- package/dist/services/credential-expiry-watcher.js.map +1 -0
- package/dist/services/github-auth-health.d.ts +42 -0
- package/dist/services/github-auth-health.d.ts.map +1 -0
- package/dist/services/github-auth-health.js +163 -0
- package/dist/services/github-auth-health.js.map +1 -0
- package/dist/services/identity-split-detector.d.ts +42 -0
- package/dist/services/identity-split-detector.d.ts.map +1 -0
- package/dist/services/identity-split-detector.js +55 -0
- package/dist/services/identity-split-detector.js.map +1 -0
- package/dist/services/identity.d.ts.map +1 -1
- package/dist/services/identity.js +15 -2
- package/dist/services/identity.js.map +1 -1
- package/dist/services/label-monitor-service.d.ts +16 -1
- package/dist/services/label-monitor-service.d.ts.map +1 -1
- package/dist/services/label-monitor-service.js +17 -2
- package/dist/services/label-monitor-service.js.map +1 -1
- package/dist/services/pr-feedback-monitor-service.d.ts +5 -2
- package/dist/services/pr-feedback-monitor-service.d.ts.map +1 -1
- package/dist/services/pr-feedback-monitor-service.js +25 -1
- package/dist/services/pr-feedback-monitor-service.js.map +1 -1
- package/dist/services/relay-bridge.d.ts +1 -0
- package/dist/services/relay-bridge.d.ts.map +1 -1
- package/dist/services/relay-bridge.js +8 -0
- package/dist/services/relay-bridge.js.map +1 -1
- package/dist/types/api.d.ts +44 -5
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/api.js +4 -0
- package/dist/types/api.js.map +1 -1
- package/dist/types/github-auth.d.ts +159 -0
- package/dist/types/github-auth.d.ts.map +1 -0
- package/dist/types/github-auth.js +35 -0
- package/dist/types/github-auth.js.map +1 -0
- package/dist/types/relay.d.ts +12 -0
- package/dist/types/relay.d.ts.map +1 -1
- 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
|
-
|
|
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);
|
package/dist/server.js.map
CHANGED
|
@@ -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":"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"}
|
|
@@ -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"}
|