4runr-os 2.10.54 → 2.10.55
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/apps/gateway/dist/apps/gateway/src/index.js +17 -0
- package/apps/gateway/dist/apps/gateway/src/index.js.map +1 -1
- package/apps/gateway/dist/apps/gateway/src/runs/run-retention.d.ts +17 -0
- package/apps/gateway/dist/apps/gateway/src/runs/run-retention.d.ts.map +1 -0
- package/apps/gateway/dist/apps/gateway/src/runs/run-retention.js +124 -0
- package/apps/gateway/dist/apps/gateway/src/runs/run-retention.js.map +1 -0
- package/apps/gateway/package-lock.json +24 -24
- package/apps/gateway/src/__tests__/run-retention.test.ts +95 -0
- package/apps/gateway/src/index.ts +19 -0
- package/apps/gateway/src/runs/run-retention.ts +175 -0
- package/mk3-tui/src/app.rs +1 -0
- package/mk3-tui/src/main.rs +1 -0
- package/mk3-tui/src/ui/run_manager.rs +8 -0
- package/package.json +2 -2
- package/scripts/os-tools-smoke.cjs +5 -1
|
@@ -438,6 +438,8 @@ fastify.post('/api/runs', {
|
|
|
438
438
|
runsCreated.inc({ status: run.status });
|
|
439
439
|
runsActive.inc();
|
|
440
440
|
logger.info('Run created', { runId: run.id, name: run.name });
|
|
441
|
+
const { scheduleRunRetentionEnforcement } = await import('./runs/run-retention.js');
|
|
442
|
+
scheduleRunRetentionEnforcement();
|
|
441
443
|
const eventStream = new GatewayEventStream();
|
|
442
444
|
sentinelEventStreams.set(run.id, eventStream);
|
|
443
445
|
eventStream.emitCreated(run.id);
|
|
@@ -1061,6 +1063,21 @@ const start = async () => {
|
|
|
1061
1063
|
baseLogger.info(`Gateway server listening on ${HOST}:${PORT}`);
|
|
1062
1064
|
baseLogger.info(`Persistence mode: ${persistenceMode}`);
|
|
1063
1065
|
baseLogger.info(`Authentication: ${env.AUTH_ENABLED ? 'enabled' : 'disabled'}`);
|
|
1066
|
+
if (persistenceMode !== 'memory') {
|
|
1067
|
+
const { enforceRunRetention, getRunRetentionConfig } = await import('./runs/run-retention.js');
|
|
1068
|
+
const retentionCfg = getRunRetentionConfig();
|
|
1069
|
+
if (retentionCfg.enabled) {
|
|
1070
|
+
baseLogger.info('Run retention enabled', {
|
|
1071
|
+
maxCount: retentionCfg.maxCount,
|
|
1072
|
+
maxAgeDays: retentionCfg.maxAgeDays,
|
|
1073
|
+
});
|
|
1074
|
+
enforceRunRetention(retentionCfg).catch((err) => {
|
|
1075
|
+
baseLogger.warn('Startup run retention failed', {
|
|
1076
|
+
error: err instanceof Error ? err.message : String(err),
|
|
1077
|
+
});
|
|
1078
|
+
});
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1064
1081
|
if (persistenceMode === 'memory') {
|
|
1065
1082
|
baseLogger.warn('[Gateway] Running in NO-PERSISTENCE / MEMORY mode. All state is ephemeral.');
|
|
1066
1083
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Run, RunStatus } from './types.js';
|
|
2
|
+
export interface RunRetentionConfig {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
maxCount: number;
|
|
5
|
+
maxAgeDays: number;
|
|
6
|
+
}
|
|
7
|
+
export interface RunRetentionResult {
|
|
8
|
+
deletedByCount: number;
|
|
9
|
+
deletedByAge: number;
|
|
10
|
+
totalAfter: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function getRunRetentionConfig(): RunRetentionConfig;
|
|
13
|
+
export declare function isTerminalRunForRetention(status: RunStatus): boolean;
|
|
14
|
+
export declare function scheduleRunRetentionEnforcement(): void;
|
|
15
|
+
export declare function enforceRunRetention(config?: RunRetentionConfig): Promise<RunRetentionResult>;
|
|
16
|
+
export declare function sortRunsOldestFirst(runs: Run[]): Run[];
|
|
17
|
+
//# sourceMappingURL=run-retention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-retention.d.ts","sourceRoot":"","sources":["../../../../../src/runs/run-retention.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMjD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IAEjB,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAY1D;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAEpE;AAGD,wBAAgB,+BAA+B,IAAI,IAAI,CAOtD;AAED,wBAAsB,mBAAmB,CACvC,MAAM,GAAE,kBAA4C,GACnD,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAqGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAItD"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { createLogger } from '@4runr/shared';
|
|
2
|
+
import { getPersistenceMode } from '../config/persistence.js';
|
|
3
|
+
import { getPrismaClient } from '../db/prisma.js';
|
|
4
|
+
import { getRunStore } from './index.js';
|
|
5
|
+
const logger = createLogger('Gateway:RunRetention');
|
|
6
|
+
const TERMINAL_STATUSES = ['completed', 'failed', 'killed'];
|
|
7
|
+
export function getRunRetentionConfig() {
|
|
8
|
+
const maxCountRaw = process.env['RUN_RETENTION_MAX_COUNT'] ??
|
|
9
|
+
(process.env['NODE_ENV'] === 'production' ? '500' : '100');
|
|
10
|
+
const maxAgeRaw = parseInt(process.env['RUN_RETENTION_MAX_AGE_DAYS'] ?? '0', 10);
|
|
11
|
+
const maxCountParsed = parseInt(maxCountRaw, 10);
|
|
12
|
+
return {
|
|
13
|
+
enabled: process.env['RUN_RETENTION_ENABLED'] !== 'false',
|
|
14
|
+
maxCount: Number.isFinite(maxCountParsed) && maxCountParsed >= 0 ? maxCountParsed : 100,
|
|
15
|
+
maxAgeDays: Number.isFinite(maxAgeRaw) && maxAgeRaw >= 0 ? maxAgeRaw : 0,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function isTerminalRunForRetention(status) {
|
|
19
|
+
return TERMINAL_STATUSES.includes(status);
|
|
20
|
+
}
|
|
21
|
+
export function scheduleRunRetentionEnforcement() {
|
|
22
|
+
setImmediate(() => {
|
|
23
|
+
enforceRunRetention().catch((err) => {
|
|
24
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
25
|
+
logger.warn('Run retention enforcement failed', { error: msg });
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export async function enforceRunRetention(config = getRunRetentionConfig()) {
|
|
30
|
+
if (!config.enabled) {
|
|
31
|
+
return { deletedByCount: 0, deletedByAge: 0, totalAfter: 0 };
|
|
32
|
+
}
|
|
33
|
+
const mode = getPersistenceMode();
|
|
34
|
+
if (mode === 'memory') {
|
|
35
|
+
return enforceMemoryRetention(config);
|
|
36
|
+
}
|
|
37
|
+
return enforcePostgresRetention(config);
|
|
38
|
+
}
|
|
39
|
+
async function enforceMemoryRetention(config) {
|
|
40
|
+
const store = getRunStore();
|
|
41
|
+
const all = await store.listRuns();
|
|
42
|
+
let deletedByAge = 0;
|
|
43
|
+
let deletedByCount = 0;
|
|
44
|
+
if (config.maxAgeDays > 0) {
|
|
45
|
+
const cutoff = Date.now() - config.maxAgeDays * 24 * 60 * 60 * 1000;
|
|
46
|
+
for (const run of all) {
|
|
47
|
+
if (!isTerminalRunForRetention(run.status))
|
|
48
|
+
continue;
|
|
49
|
+
if (new Date(run.createdAt).getTime() < cutoff) {
|
|
50
|
+
await store.deleteRun(run.id);
|
|
51
|
+
deletedByAge++;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const remaining = await store.listRuns();
|
|
56
|
+
if (config.maxCount > 0 && remaining.length > config.maxCount) {
|
|
57
|
+
const terminal = remaining
|
|
58
|
+
.filter((r) => isTerminalRunForRetention(r.status))
|
|
59
|
+
.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
|
|
60
|
+
const excess = remaining.length - config.maxCount;
|
|
61
|
+
const toDelete = terminal.slice(0, excess);
|
|
62
|
+
for (const run of toDelete) {
|
|
63
|
+
await store.deleteRun(run.id);
|
|
64
|
+
deletedByCount++;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const totalAfter = (await store.listRuns()).length;
|
|
68
|
+
logIfDeleted(deletedByCount, deletedByAge, totalAfter, config);
|
|
69
|
+
return { deletedByCount, deletedByAge, totalAfter };
|
|
70
|
+
}
|
|
71
|
+
async function enforcePostgresRetention(config) {
|
|
72
|
+
const prisma = await getPrismaClient();
|
|
73
|
+
let deletedByAge = 0;
|
|
74
|
+
let deletedByCount = 0;
|
|
75
|
+
const terminalWhere = {
|
|
76
|
+
status: { in: ['COMPLETED', 'FAILED', 'KILLED'] },
|
|
77
|
+
};
|
|
78
|
+
if (config.maxAgeDays > 0) {
|
|
79
|
+
const cutoff = new Date(Date.now() - config.maxAgeDays * 24 * 60 * 60 * 1000);
|
|
80
|
+
const ageResult = await prisma.run.deleteMany({
|
|
81
|
+
where: {
|
|
82
|
+
...terminalWhere,
|
|
83
|
+
createdAt: { lt: cutoff },
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
deletedByAge = ageResult.count;
|
|
87
|
+
}
|
|
88
|
+
if (config.maxCount > 0) {
|
|
89
|
+
const total = await prisma.run.count();
|
|
90
|
+
if (total > config.maxCount) {
|
|
91
|
+
const excess = total - config.maxCount;
|
|
92
|
+
const oldest = await prisma.run.findMany({
|
|
93
|
+
where: terminalWhere,
|
|
94
|
+
orderBy: { createdAt: 'asc' },
|
|
95
|
+
take: excess,
|
|
96
|
+
select: { id: true },
|
|
97
|
+
});
|
|
98
|
+
if (oldest.length > 0) {
|
|
99
|
+
const countResult = await prisma.run.deleteMany({
|
|
100
|
+
where: { id: { in: oldest.map((r) => r.id) } },
|
|
101
|
+
});
|
|
102
|
+
deletedByCount = countResult.count;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const totalAfter = await prisma.run.count();
|
|
107
|
+
logIfDeleted(deletedByCount, deletedByAge, totalAfter, config);
|
|
108
|
+
return { deletedByCount, deletedByAge, totalAfter };
|
|
109
|
+
}
|
|
110
|
+
function logIfDeleted(deletedByCount, deletedByAge, totalAfter, config) {
|
|
111
|
+
if (deletedByCount > 0 || deletedByAge > 0) {
|
|
112
|
+
logger.info('Run retention applied', {
|
|
113
|
+
deletedByCount,
|
|
114
|
+
deletedByAge,
|
|
115
|
+
totalAfter,
|
|
116
|
+
maxCount: config.maxCount,
|
|
117
|
+
maxAgeDays: config.maxAgeDays,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export function sortRunsOldestFirst(runs) {
|
|
122
|
+
return [...runs].sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=run-retention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-retention.js","sourceRoot":"","sources":["../../../../../src/runs/run-retention.ts"],"names":[],"mappings":"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"}
|
|
@@ -199,15 +199,15 @@
|
|
|
199
199
|
}
|
|
200
200
|
},
|
|
201
201
|
"node_modules/@aws-sdk/client-kms": {
|
|
202
|
-
"version": "3.
|
|
203
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/client-kms/-/client-kms-3.
|
|
204
|
-
"integrity": "sha512-
|
|
202
|
+
"version": "3.1057.0",
|
|
203
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/client-kms/-/client-kms-3.1057.0.tgz",
|
|
204
|
+
"integrity": "sha512-S0LA7ks4eo2JpyG7UkpcNNgckYygi8H9URhG56tcD/ffYmydLPkXZeTl/Aj/BwMRe3dklMwrXTSRyknDmY2mXg==",
|
|
205
205
|
"license": "Apache-2.0",
|
|
206
206
|
"dependencies": {
|
|
207
207
|
"@aws-crypto/sha256-browser": "5.2.0",
|
|
208
208
|
"@aws-crypto/sha256-js": "5.2.0",
|
|
209
209
|
"@aws-sdk/core": "^3.974.15",
|
|
210
|
-
"@aws-sdk/credential-provider-node": "^3.972.
|
|
210
|
+
"@aws-sdk/credential-provider-node": "^3.972.47",
|
|
211
211
|
"@aws-sdk/types": "^3.973.9",
|
|
212
212
|
"@smithy/core": "^3.24.5",
|
|
213
213
|
"@smithy/fetch-http-handler": "^5.4.5",
|
|
@@ -220,15 +220,15 @@
|
|
|
220
220
|
}
|
|
221
221
|
},
|
|
222
222
|
"node_modules/@aws-sdk/client-secrets-manager": {
|
|
223
|
-
"version": "3.
|
|
224
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.
|
|
225
|
-
"integrity": "sha512-
|
|
223
|
+
"version": "3.1057.0",
|
|
224
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.1057.0.tgz",
|
|
225
|
+
"integrity": "sha512-2AsQ+7SChrQamIe68nMvMpZfXpHWnjwkcaFPFWf9E21+iTnEdIXRqC5v1P2NATrKn0BI6MaG/KlNrOhPOknk8w==",
|
|
226
226
|
"license": "Apache-2.0",
|
|
227
227
|
"dependencies": {
|
|
228
228
|
"@aws-crypto/sha256-browser": "5.2.0",
|
|
229
229
|
"@aws-crypto/sha256-js": "5.2.0",
|
|
230
230
|
"@aws-sdk/core": "^3.974.15",
|
|
231
|
-
"@aws-sdk/credential-provider-node": "^3.972.
|
|
231
|
+
"@aws-sdk/credential-provider-node": "^3.972.47",
|
|
232
232
|
"@aws-sdk/types": "^3.973.9",
|
|
233
233
|
"@smithy/core": "^3.24.5",
|
|
234
234
|
"@smithy/fetch-http-handler": "^5.4.5",
|
|
@@ -241,15 +241,15 @@
|
|
|
241
241
|
}
|
|
242
242
|
},
|
|
243
243
|
"node_modules/@aws-sdk/client-ssm": {
|
|
244
|
-
"version": "3.
|
|
245
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.
|
|
246
|
-
"integrity": "sha512-
|
|
244
|
+
"version": "3.1057.0",
|
|
245
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.1057.0.tgz",
|
|
246
|
+
"integrity": "sha512-h+uTW2MTycbCqqBVJ6tGUuvehRX9gpvu+pL260pNd5nv0sQBDC1a9a/Ihz4rD/8KwmBrcd4ifeDV3gEoXpmnew==",
|
|
247
247
|
"license": "Apache-2.0",
|
|
248
248
|
"dependencies": {
|
|
249
249
|
"@aws-crypto/sha256-browser": "5.2.0",
|
|
250
250
|
"@aws-crypto/sha256-js": "5.2.0",
|
|
251
251
|
"@aws-sdk/core": "^3.974.15",
|
|
252
|
-
"@aws-sdk/credential-provider-node": "^3.972.
|
|
252
|
+
"@aws-sdk/credential-provider-node": "^3.972.47",
|
|
253
253
|
"@aws-sdk/types": "^3.973.9",
|
|
254
254
|
"@smithy/core": "^3.24.5",
|
|
255
255
|
"@smithy/fetch-http-handler": "^5.4.5",
|
|
@@ -315,9 +315,9 @@
|
|
|
315
315
|
}
|
|
316
316
|
},
|
|
317
317
|
"node_modules/@aws-sdk/credential-provider-ini": {
|
|
318
|
-
"version": "3.972.
|
|
319
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.
|
|
320
|
-
"integrity": "sha512-
|
|
318
|
+
"version": "3.972.46",
|
|
319
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.46.tgz",
|
|
320
|
+
"integrity": "sha512-hvcgcwOiS0nb2XFb5Op1Pz/vYaWz5K8kKullziGpdNRuG0NwzRXseuPt2CoBqknHGaSPVesu1aOn2OcctEYdCA==",
|
|
321
321
|
"license": "Apache-2.0",
|
|
322
322
|
"dependencies": {
|
|
323
323
|
"@aws-sdk/core": "^3.974.15",
|
|
@@ -330,7 +330,7 @@
|
|
|
330
330
|
"@aws-sdk/nested-clients": "^3.997.13",
|
|
331
331
|
"@aws-sdk/types": "^3.973.9",
|
|
332
332
|
"@smithy/core": "^3.24.5",
|
|
333
|
-
"@smithy/credential-provider-imds": "^4.3.
|
|
333
|
+
"@smithy/credential-provider-imds": "^4.3.6",
|
|
334
334
|
"@smithy/types": "^4.14.2",
|
|
335
335
|
"tslib": "^2.6.2"
|
|
336
336
|
},
|
|
@@ -356,20 +356,20 @@
|
|
|
356
356
|
}
|
|
357
357
|
},
|
|
358
358
|
"node_modules/@aws-sdk/credential-provider-node": {
|
|
359
|
-
"version": "3.972.
|
|
360
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.
|
|
361
|
-
"integrity": "sha512-
|
|
359
|
+
"version": "3.972.47",
|
|
360
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.47.tgz",
|
|
361
|
+
"integrity": "sha512-HrId+C0DWA5qDIyLG64/kjUB2RNtPypxmABnIctK+TA1P1kHlOYoE/Wf5T5tKOMKgb08P7k/zNyhvfJ3lh5Oag==",
|
|
362
362
|
"license": "Apache-2.0",
|
|
363
363
|
"dependencies": {
|
|
364
364
|
"@aws-sdk/credential-provider-env": "^3.972.41",
|
|
365
365
|
"@aws-sdk/credential-provider-http": "^3.972.43",
|
|
366
|
-
"@aws-sdk/credential-provider-ini": "^3.972.
|
|
366
|
+
"@aws-sdk/credential-provider-ini": "^3.972.46",
|
|
367
367
|
"@aws-sdk/credential-provider-process": "^3.972.41",
|
|
368
368
|
"@aws-sdk/credential-provider-sso": "^3.972.45",
|
|
369
369
|
"@aws-sdk/credential-provider-web-identity": "^3.972.45",
|
|
370
370
|
"@aws-sdk/types": "^3.973.9",
|
|
371
371
|
"@smithy/core": "^3.24.5",
|
|
372
|
-
"@smithy/credential-provider-imds": "^4.3.
|
|
372
|
+
"@smithy/credential-provider-imds": "^4.3.6",
|
|
373
373
|
"@smithy/types": "^4.14.2",
|
|
374
374
|
"tslib": "^2.6.2"
|
|
375
375
|
},
|
|
@@ -2709,9 +2709,9 @@
|
|
|
2709
2709
|
}
|
|
2710
2710
|
},
|
|
2711
2711
|
"node_modules/@smithy/credential-provider-imds": {
|
|
2712
|
-
"version": "4.3.
|
|
2713
|
-
"resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.
|
|
2714
|
-
"integrity": "sha512-
|
|
2712
|
+
"version": "4.3.6",
|
|
2713
|
+
"resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.6.tgz",
|
|
2714
|
+
"integrity": "sha512-tHhdiWZfG1ZIh2YcRfPJmY2gHcBmqbAzqm3ER4TIDFYsSEqTD5tICT7cgQ/kI8LRakxp12myOYyK68XPn7MnHw==",
|
|
2715
2715
|
"license": "Apache-2.0",
|
|
2716
2716
|
"dependencies": {
|
|
2717
2717
|
"@smithy/core": "^3.24.5",
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import {
|
|
2
|
+
enforceRunRetention,
|
|
3
|
+
getRunRetentionConfig,
|
|
4
|
+
isTerminalRunForRetention,
|
|
5
|
+
sortRunsOldestFirst,
|
|
6
|
+
} from '../runs/run-retention.js';
|
|
7
|
+
import { MemoryRunStore } from '../runs/memoryRunStore.js';
|
|
8
|
+
|
|
9
|
+
jest.mock('../runs/index.js', () => ({
|
|
10
|
+
getRunStore: jest.fn(),
|
|
11
|
+
}));
|
|
12
|
+
|
|
13
|
+
jest.mock('../config/persistence.js', () => ({
|
|
14
|
+
getPersistenceMode: jest.fn(() => 'memory'),
|
|
15
|
+
}));
|
|
16
|
+
|
|
17
|
+
jest.mock('../db/prisma.js', () => ({
|
|
18
|
+
getPrismaClient: jest.fn(),
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
import { getRunStore } from '../runs/index.js';
|
|
22
|
+
|
|
23
|
+
describe('run-retention', () => {
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
jest.clearAllMocks();
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('getRunRetentionConfig defaults', () => {
|
|
29
|
+
delete process.env.RUN_RETENTION_ENABLED;
|
|
30
|
+
delete process.env.RUN_RETENTION_MAX_COUNT;
|
|
31
|
+
delete process.env.RUN_RETENTION_MAX_AGE_DAYS;
|
|
32
|
+
const c = getRunRetentionConfig();
|
|
33
|
+
expect(c.enabled).toBe(true);
|
|
34
|
+
expect(c.maxCount).toBe(100);
|
|
35
|
+
expect(c.maxAgeDays).toBe(0);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('isTerminalRunForRetention', () => {
|
|
39
|
+
expect(isTerminalRunForRetention('completed')).toBe(true);
|
|
40
|
+
expect(isTerminalRunForRetention('failed')).toBe(true);
|
|
41
|
+
expect(isTerminalRunForRetention('killed')).toBe(true);
|
|
42
|
+
expect(isTerminalRunForRetention('running')).toBe(false);
|
|
43
|
+
expect(isTerminalRunForRetention('queued')).toBe(false);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('deletes oldest terminal runs when over maxCount', async () => {
|
|
47
|
+
const store = new MemoryRunStore();
|
|
48
|
+
(getRunStore as jest.Mock).mockReturnValue(store);
|
|
49
|
+
|
|
50
|
+
for (let i = 0; i < 5; i++) {
|
|
51
|
+
const run = await store.createRun({ name: `run-${i}` });
|
|
52
|
+
await store.updateRunStatus(run.id, i < 3 ? 'completed' : 'running');
|
|
53
|
+
// Stagger createdAt via direct map hack — memory store sets createdAt at create
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const result = await enforceRunRetention({
|
|
57
|
+
enabled: true,
|
|
58
|
+
maxCount: 3,
|
|
59
|
+
maxAgeDays: 0,
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
expect(result.deletedByCount).toBeGreaterThanOrEqual(1);
|
|
63
|
+
const left = await store.listRuns();
|
|
64
|
+
expect(left.length).toBeLessThanOrEqual(3);
|
|
65
|
+
expect(left.some((r) => r.status === 'running')).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('sortRunsOldestFirst orders by createdAt', () => {
|
|
69
|
+
const sorted = sortRunsOldestFirst([
|
|
70
|
+
{
|
|
71
|
+
id: '2',
|
|
72
|
+
name: 'b',
|
|
73
|
+
status: 'completed',
|
|
74
|
+
createdAt: '2026-01-02T00:00:00.000Z',
|
|
75
|
+
updatedAt: '2026-01-02T00:00:00.000Z',
|
|
76
|
+
logs: [],
|
|
77
|
+
tags: [],
|
|
78
|
+
startedAt: null,
|
|
79
|
+
completedAt: null,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: '1',
|
|
83
|
+
name: 'a',
|
|
84
|
+
status: 'completed',
|
|
85
|
+
createdAt: '2026-01-01T00:00:00.000Z',
|
|
86
|
+
updatedAt: '2026-01-01T00:00:00.000Z',
|
|
87
|
+
logs: [],
|
|
88
|
+
tags: [],
|
|
89
|
+
startedAt: null,
|
|
90
|
+
completedAt: null,
|
|
91
|
+
},
|
|
92
|
+
]);
|
|
93
|
+
expect(sorted[0].id).toBe('1');
|
|
94
|
+
});
|
|
95
|
+
});
|
|
@@ -623,6 +623,9 @@ fastify.post('/api/runs', {
|
|
|
623
623
|
runsActive.inc();
|
|
624
624
|
logger.info('Run created', { runId: run.id, name: run.name });
|
|
625
625
|
|
|
626
|
+
const { scheduleRunRetentionEnforcement } = await import('./runs/run-retention.js');
|
|
627
|
+
scheduleRunRetentionEnforcement();
|
|
628
|
+
|
|
626
629
|
// Create Sentinel event stream for this run
|
|
627
630
|
const eventStream = new GatewayEventStream();
|
|
628
631
|
sentinelEventStreams.set(run.id, eventStream);
|
|
@@ -1422,6 +1425,22 @@ const start = async () => {
|
|
|
1422
1425
|
baseLogger.info(`Gateway server listening on ${HOST}:${PORT}`);
|
|
1423
1426
|
baseLogger.info(`Persistence mode: ${persistenceMode}`);
|
|
1424
1427
|
baseLogger.info(`Authentication: ${env.AUTH_ENABLED ? 'enabled' : 'disabled'}`);
|
|
1428
|
+
|
|
1429
|
+
if (persistenceMode !== 'memory') {
|
|
1430
|
+
const { enforceRunRetention, getRunRetentionConfig } = await import('./runs/run-retention.js');
|
|
1431
|
+
const retentionCfg = getRunRetentionConfig();
|
|
1432
|
+
if (retentionCfg.enabled) {
|
|
1433
|
+
baseLogger.info('Run retention enabled', {
|
|
1434
|
+
maxCount: retentionCfg.maxCount,
|
|
1435
|
+
maxAgeDays: retentionCfg.maxAgeDays,
|
|
1436
|
+
});
|
|
1437
|
+
enforceRunRetention(retentionCfg).catch((err: unknown) => {
|
|
1438
|
+
baseLogger.warn('Startup run retention failed', {
|
|
1439
|
+
error: err instanceof Error ? err.message : String(err),
|
|
1440
|
+
});
|
|
1441
|
+
});
|
|
1442
|
+
}
|
|
1443
|
+
}
|
|
1425
1444
|
|
|
1426
1445
|
if (persistenceMode === 'memory') {
|
|
1427
1446
|
baseLogger.warn('[Gateway] Running in NO-PERSISTENCE / MEMORY mode. All state is ephemeral.');
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automatic run retention — cap total rows and optional max age.
|
|
3
|
+
* Deletes oldest **terminal** runs only (completed / failed / killed); never active runs.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { createLogger } from '@4runr/shared';
|
|
7
|
+
import { getPersistenceMode } from '../config/persistence.js';
|
|
8
|
+
import { getPrismaClient } from '../db/prisma.js';
|
|
9
|
+
import { getRunStore } from './index.js';
|
|
10
|
+
import type { Run, RunStatus } from './types.js';
|
|
11
|
+
|
|
12
|
+
const logger = createLogger('Gateway:RunRetention');
|
|
13
|
+
|
|
14
|
+
const TERMINAL_STATUSES: RunStatus[] = ['completed', 'failed', 'killed'];
|
|
15
|
+
|
|
16
|
+
export interface RunRetentionConfig {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
/** Keep at most this many runs (0 = disable count-based trim). Default 200. */
|
|
19
|
+
maxCount: number;
|
|
20
|
+
/** Delete terminal runs older than this many days (0 = disabled). Default 0. */
|
|
21
|
+
maxAgeDays: number;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface RunRetentionResult {
|
|
25
|
+
deletedByCount: number;
|
|
26
|
+
deletedByAge: number;
|
|
27
|
+
totalAfter: number;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function getRunRetentionConfig(): RunRetentionConfig {
|
|
31
|
+
const maxCountRaw =
|
|
32
|
+
process.env['RUN_RETENTION_MAX_COUNT'] ??
|
|
33
|
+
(process.env['NODE_ENV'] === 'production' ? '500' : '100');
|
|
34
|
+
const maxAgeRaw = parseInt(process.env['RUN_RETENTION_MAX_AGE_DAYS'] ?? '0', 10);
|
|
35
|
+
const maxCountParsed = parseInt(maxCountRaw, 10);
|
|
36
|
+
return {
|
|
37
|
+
enabled: process.env['RUN_RETENTION_ENABLED'] !== 'false',
|
|
38
|
+
maxCount:
|
|
39
|
+
Number.isFinite(maxCountParsed) && maxCountParsed >= 0 ? maxCountParsed : 100,
|
|
40
|
+
maxAgeDays: Number.isFinite(maxAgeRaw) && maxAgeRaw >= 0 ? maxAgeRaw : 0,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function isTerminalRunForRetention(status: RunStatus): boolean {
|
|
45
|
+
return TERMINAL_STATUSES.includes(status);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Non-blocking hook after POST /api/runs */
|
|
49
|
+
export function scheduleRunRetentionEnforcement(): void {
|
|
50
|
+
setImmediate(() => {
|
|
51
|
+
enforceRunRetention().catch((err: unknown) => {
|
|
52
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
53
|
+
logger.warn('Run retention enforcement failed', { error: msg });
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export async function enforceRunRetention(
|
|
59
|
+
config: RunRetentionConfig = getRunRetentionConfig(),
|
|
60
|
+
): Promise<RunRetentionResult> {
|
|
61
|
+
if (!config.enabled) {
|
|
62
|
+
return { deletedByCount: 0, deletedByAge: 0, totalAfter: 0 };
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const mode = getPersistenceMode();
|
|
66
|
+
if (mode === 'memory') {
|
|
67
|
+
return enforceMemoryRetention(config);
|
|
68
|
+
}
|
|
69
|
+
return enforcePostgresRetention(config);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async function enforceMemoryRetention(config: RunRetentionConfig): Promise<RunRetentionResult> {
|
|
73
|
+
const store = getRunStore();
|
|
74
|
+
const all = await store.listRuns();
|
|
75
|
+
let deletedByAge = 0;
|
|
76
|
+
let deletedByCount = 0;
|
|
77
|
+
|
|
78
|
+
if (config.maxAgeDays > 0) {
|
|
79
|
+
const cutoff = Date.now() - config.maxAgeDays * 24 * 60 * 60 * 1000;
|
|
80
|
+
for (const run of all) {
|
|
81
|
+
if (!isTerminalRunForRetention(run.status)) continue;
|
|
82
|
+
if (new Date(run.createdAt).getTime() < cutoff) {
|
|
83
|
+
await store.deleteRun(run.id);
|
|
84
|
+
deletedByAge++;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const remaining = await store.listRuns();
|
|
90
|
+
if (config.maxCount > 0 && remaining.length > config.maxCount) {
|
|
91
|
+
const terminal = remaining
|
|
92
|
+
.filter((r) => isTerminalRunForRetention(r.status))
|
|
93
|
+
.sort(
|
|
94
|
+
(a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime(),
|
|
95
|
+
);
|
|
96
|
+
const excess = remaining.length - config.maxCount;
|
|
97
|
+
const toDelete = terminal.slice(0, excess);
|
|
98
|
+
for (const run of toDelete) {
|
|
99
|
+
await store.deleteRun(run.id);
|
|
100
|
+
deletedByCount++;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const totalAfter = (await store.listRuns()).length;
|
|
105
|
+
logIfDeleted(deletedByCount, deletedByAge, totalAfter, config);
|
|
106
|
+
return { deletedByCount, deletedByAge, totalAfter };
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
async function enforcePostgresRetention(config: RunRetentionConfig): Promise<RunRetentionResult> {
|
|
110
|
+
const prisma = await getPrismaClient();
|
|
111
|
+
let deletedByAge = 0;
|
|
112
|
+
let deletedByCount = 0;
|
|
113
|
+
|
|
114
|
+
const terminalWhere = {
|
|
115
|
+
status: { in: ['COMPLETED', 'FAILED', 'KILLED'] as const },
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
if (config.maxAgeDays > 0) {
|
|
119
|
+
const cutoff = new Date(Date.now() - config.maxAgeDays * 24 * 60 * 60 * 1000);
|
|
120
|
+
const ageResult = await prisma.run.deleteMany({
|
|
121
|
+
where: {
|
|
122
|
+
...terminalWhere,
|
|
123
|
+
createdAt: { lt: cutoff },
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
deletedByAge = ageResult.count;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (config.maxCount > 0) {
|
|
130
|
+
const total: number = await prisma.run.count();
|
|
131
|
+
if (total > config.maxCount) {
|
|
132
|
+
const excess = total - config.maxCount;
|
|
133
|
+
const oldest = await prisma.run.findMany({
|
|
134
|
+
where: terminalWhere,
|
|
135
|
+
orderBy: { createdAt: 'asc' },
|
|
136
|
+
take: excess,
|
|
137
|
+
select: { id: true },
|
|
138
|
+
});
|
|
139
|
+
if (oldest.length > 0) {
|
|
140
|
+
const countResult = await prisma.run.deleteMany({
|
|
141
|
+
where: { id: { in: oldest.map((r: { id: string }) => r.id) } },
|
|
142
|
+
});
|
|
143
|
+
deletedByCount = countResult.count;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const totalAfter: number = await prisma.run.count();
|
|
149
|
+
logIfDeleted(deletedByCount, deletedByAge, totalAfter, config);
|
|
150
|
+
return { deletedByCount, deletedByAge, totalAfter };
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function logIfDeleted(
|
|
154
|
+
deletedByCount: number,
|
|
155
|
+
deletedByAge: number,
|
|
156
|
+
totalAfter: number,
|
|
157
|
+
config: RunRetentionConfig,
|
|
158
|
+
): void {
|
|
159
|
+
if (deletedByCount > 0 || deletedByAge > 0) {
|
|
160
|
+
logger.info('Run retention applied', {
|
|
161
|
+
deletedByCount,
|
|
162
|
+
deletedByAge,
|
|
163
|
+
totalAfter,
|
|
164
|
+
maxCount: config.maxCount,
|
|
165
|
+
maxAgeDays: config.maxAgeDays,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/** @internal test helper */
|
|
171
|
+
export function sortRunsOldestFirst(runs: Run[]): Run[] {
|
|
172
|
+
return [...runs].sort(
|
|
173
|
+
(a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime(),
|
|
174
|
+
);
|
|
175
|
+
}
|
package/mk3-tui/src/app.rs
CHANGED
|
@@ -1005,6 +1005,7 @@ impl App {
|
|
|
1005
1005
|
self.state.connection_portal.finish_connecting();
|
|
1006
1006
|
self.state.connection_portal.connection_success = false;
|
|
1007
1007
|
self.state.connection_portal.connecting = false;
|
|
1008
|
+
self.state.run_manager.clear_runs();
|
|
1008
1009
|
|
|
1009
1010
|
let screen = self.state.navigation.current_screen();
|
|
1010
1011
|
if matches!(
|
package/mk3-tui/src/main.rs
CHANGED
|
@@ -1111,6 +1111,7 @@ fn main() -> Result<()> {
|
|
|
1111
1111
|
app.state.connection_portal.finish_connecting();
|
|
1112
1112
|
app.state.connection_portal.connection_success = false;
|
|
1113
1113
|
app.state.connection_portal.error = None;
|
|
1114
|
+
app.state.run_manager.clear_runs();
|
|
1114
1115
|
if let Some(ref ws) = ws_client {
|
|
1115
1116
|
let _ = ws.send_command("system.status", None);
|
|
1116
1117
|
}
|
|
@@ -282,6 +282,14 @@ impl RunManagerState {
|
|
|
282
282
|
self.last_refresh = Some(std::time::Instant::now());
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
+
pub fn clear_runs(&mut self) {
|
|
286
|
+
self.runs.clear();
|
|
287
|
+
self.selected_index = 0;
|
|
288
|
+
self.detail_view = None;
|
|
289
|
+
self.loading = false;
|
|
290
|
+
self.last_refresh = None;
|
|
291
|
+
}
|
|
292
|
+
|
|
285
293
|
pub fn merge_run_detail(&mut self, info: RunInfo) {
|
|
286
294
|
if let Some(i) = self.runs.iter().position(|r| r.id == info.id) {
|
|
287
295
|
self.runs[i] = info;
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "4runr-os",
|
|
3
|
-
"version": "2.10.
|
|
3
|
+
"version": "2.10.55",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.10.
|
|
5
|
+
"description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.10.55: Gateway auto run retention (cap terminal runs); Run Manager clears on disconnect + local API key; smoke tags; 4Runr Tools bundle.",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
8
|
"4runr": "dist/index.js",
|
|
@@ -60,11 +60,15 @@ function sleep(ms) {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
async function createRun(base, apiKey, payload) {
|
|
63
|
+
const withTags = {
|
|
64
|
+
...payload,
|
|
65
|
+
tags: [...new Set([...(payload.tags || []), 'smoke', 'os-tools-smoke'])],
|
|
66
|
+
};
|
|
63
67
|
for (let attempt = 0; attempt < 3; attempt++) {
|
|
64
68
|
const { res, body } = await fetchJson(`${base}/api/runs`, {
|
|
65
69
|
method: 'POST',
|
|
66
70
|
headers: authHeaders(apiKey),
|
|
67
|
-
body: JSON.stringify(
|
|
71
|
+
body: JSON.stringify(withTags),
|
|
68
72
|
});
|
|
69
73
|
if (res.status === 201) return { ok: true, body };
|
|
70
74
|
if (res.status === 429 && attempt < 2) {
|