MCPcopy
hub / github.com/stephengpope/thepopebot / cleanExpiredAgentJobKeys

Function cleanExpiredAgentJobKeys

lib/maintenance.js:9–59  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

7const ONE_HOUR = 60 * 60 * 1000;
8
9async function cleanExpiredAgentJobKeys() {
10 try {
11 const db = getDb();
12 const rows = db
13 .select({ id: settings.id, key: settings.key, lastUsedAt: settings.lastUsedAt, createdAt: settings.createdAt })
14 .from(settings)
15 .where(eq(settings.type, 'agent_job_api_key'))
16 .all();
17
18 // Split into SDK keys (no container) vs container-backed keys
19 const sdkRows = rows.filter(r => r.key.includes('sdk'));
20 const containerRows = rows.filter(r => !r.key.includes('sdk'));
21
22 let deleted = 0;
23
24 // SDK keys: delete any older than 1 hour (no container to inspect)
25 const sdkCutoff = Date.now() - ONE_HOUR;
26 for (const r of sdkRows) {
27 const age = r.lastUsedAt !== null ? r.lastUsedAt : r.createdAt;
28 if (age < sdkCutoff) {
29 db.delete(settings).where(eq(settings.id, r.id)).run();
30 deleted++;
31 }
32 }
33
34 // Container-backed keys: existing logic — 24h expiry + container inspect
35 const containerCutoff = Date.now() - TWENTY_FOUR_HOURS;
36 const candidates = containerRows.filter(r =>
37 (r.lastUsedAt !== null ? r.lastUsedAt : r.createdAt) < containerCutoff
38 );
39
40 if (candidates.length > 0) {
41 const { inspectContainer } = await import('./tools/docker.js');
42 for (const r of candidates) {
43 const info = await inspectContainer(r.key);
44 if (!info) {
45 db.delete(settings).where(eq(settings.id, r.id)).run();
46 deleted++;
47 }
48 }
49 }
50
51 if (deleted > 0) {
52 console.log(`[maintenance] Deleted ${deleted} expired agent job key(s)`);
53 } else {
54 console.log(`[maintenance] No expired agent job keys (${rows.length} active)`);
55 }
56 } catch (err) {
57 console.error('[maintenance] cleanExpiredAgentJobKeys failed:', err);
58 }
59}
60
61async function runMaintenance() {
62 console.log('[maintenance] Running maintenance...');

Callers 1

runMaintenanceFunction · 0.85

Calls 2

getDbFunction · 0.90
inspectContainerFunction · 0.85

Tested by

no test coverage detected