steroids-cli 0.6.5 → 0.8.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/cleanup/invocation-logs.d.ts +30 -0
- package/dist/cleanup/invocation-logs.d.ts.map +1 -0
- package/dist/cleanup/invocation-logs.js +69 -0
- package/dist/cleanup/invocation-logs.js.map +1 -0
- package/dist/commands/cleanup.d.ts +3 -0
- package/dist/commands/cleanup.d.ts.map +1 -0
- package/dist/commands/cleanup.js +116 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +6 -1
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/health-stuck.d.ts +5 -0
- package/dist/commands/health-stuck.d.ts.map +1 -0
- package/dist/commands/health-stuck.js +312 -0
- package/dist/commands/health-stuck.js.map +1 -0
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +14 -1
- package/dist/commands/health.js.map +1 -1
- package/dist/config/loader.d.ts +8 -0
- 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.map +1 -1
- package/dist/config/schema.js +40 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/database/queries.d.ts +2 -0
- package/dist/database/queries.d.ts.map +1 -1
- package/dist/database/queries.js +15 -1
- package/dist/database/queries.js.map +1 -1
- package/dist/database/schema.d.ts +2 -2
- package/dist/database/schema.d.ts.map +1 -1
- package/dist/database/schema.js +26 -0
- package/dist/database/schema.js.map +1 -1
- package/dist/health/stuck-task-detector.d.ts +131 -0
- package/dist/health/stuck-task-detector.d.ts.map +1 -0
- package/dist/health/stuck-task-detector.js +238 -0
- package/dist/health/stuck-task-detector.js.map +1 -0
- package/dist/health/stuck-task-recovery.d.ts +45 -0
- package/dist/health/stuck-task-recovery.d.ts.map +1 -0
- package/dist/health/stuck-task-recovery.js +312 -0
- package/dist/health/stuck-task-recovery.js.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/migrations/manifest.d.ts.map +1 -1
- package/dist/migrations/manifest.js +2 -1
- package/dist/migrations/manifest.js.map +1 -1
- package/dist/orchestrator/coder.d.ts.map +1 -1
- package/dist/orchestrator/coder.js +11 -11
- package/dist/orchestrator/coder.js.map +1 -1
- package/dist/orchestrator/coordinator.d.ts.map +1 -1
- package/dist/orchestrator/coordinator.js +3 -4
- package/dist/orchestrator/coordinator.js.map +1 -1
- package/dist/orchestrator/invoke.js +11 -11
- package/dist/orchestrator/invoke.js.map +1 -1
- package/dist/orchestrator/reviewer.d.ts.map +1 -1
- package/dist/orchestrator/reviewer.js +11 -11
- package/dist/orchestrator/reviewer.js.map +1 -1
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +5 -2
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/codex.d.ts.map +1 -1
- package/dist/providers/codex.js +44 -2
- package/dist/providers/codex.js.map +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +5 -2
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/interface.d.ts +12 -0
- package/dist/providers/interface.d.ts.map +1 -1
- package/dist/providers/interface.js.map +1 -1
- package/dist/providers/invocation-logger.d.ts +7 -24
- package/dist/providers/invocation-logger.d.ts.map +1 -1
- package/dist/providers/invocation-logger.js +132 -44
- package/dist/providers/invocation-logger.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +5 -2
- package/dist/providers/openai.js.map +1 -1
- package/dist/runners/wakeup.d.ts +3 -0
- package/dist/runners/wakeup.d.ts.map +1 -1
- package/dist/runners/wakeup.js +163 -93
- package/dist/runners/wakeup.js.map +1 -1
- package/migrations/009_add_incidents_and_failure_tracking.sql +35 -0
- package/migrations/010_add_lifecycle_timestamps.sql +27 -0
- package/migrations/manifest.json +17 -1
- package/package.json +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retention cleanup for invocation activity logs.
|
|
3
|
+
*
|
|
4
|
+
* These are JSONL files created at:
|
|
5
|
+
* .steroids/invocations/<invocationId>.log
|
|
6
|
+
*/
|
|
7
|
+
export interface CleanupInvocationLogsOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Keep logs within this retention window.
|
|
10
|
+
* If <= 0, no files will be deleted.
|
|
11
|
+
*/
|
|
12
|
+
retentionDays?: number;
|
|
13
|
+
/** Preview without deleting files. */
|
|
14
|
+
dryRun?: boolean;
|
|
15
|
+
/** Inject current time for deterministic tests. */
|
|
16
|
+
nowMs?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface CleanupInvocationLogsResult {
|
|
19
|
+
scannedFiles: number;
|
|
20
|
+
deletedFiles: number;
|
|
21
|
+
freedBytes: number;
|
|
22
|
+
cutoffMs: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Delete old `.steroids/invocations/*.log` files based on mtime.
|
|
26
|
+
*
|
|
27
|
+
* Best-effort: errors are swallowed and reflected as zero deletions.
|
|
28
|
+
*/
|
|
29
|
+
export declare function cleanupInvocationLogs(projectPath: string, options?: CleanupInvocationLogsOptions): CleanupInvocationLogsResult;
|
|
30
|
+
//# sourceMappingURL=invocation-logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation-logs.d.ts","sourceRoot":"","sources":["../../src/cleanup/invocation-logs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,4BAAiC,GACzC,2BAA2B,CAqD7B"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Retention cleanup for invocation activity logs.
|
|
4
|
+
*
|
|
5
|
+
* These are JSONL files created at:
|
|
6
|
+
* .steroids/invocations/<invocationId>.log
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.cleanupInvocationLogs = cleanupInvocationLogs;
|
|
10
|
+
const node_fs_1 = require("node:fs");
|
|
11
|
+
const node_path_1 = require("node:path");
|
|
12
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
13
|
+
/**
|
|
14
|
+
* Delete old `.steroids/invocations/*.log` files based on mtime.
|
|
15
|
+
*
|
|
16
|
+
* Best-effort: errors are swallowed and reflected as zero deletions.
|
|
17
|
+
*/
|
|
18
|
+
function cleanupInvocationLogs(projectPath, options = {}) {
|
|
19
|
+
const retentionDays = options.retentionDays ?? 7;
|
|
20
|
+
const nowMs = options.nowMs ?? Date.now();
|
|
21
|
+
const retentionMs = retentionDays * DAY_MS;
|
|
22
|
+
const cutoffMs = nowMs - retentionMs;
|
|
23
|
+
if (retentionDays <= 0) {
|
|
24
|
+
return { scannedFiles: 0, deletedFiles: 0, freedBytes: 0, cutoffMs };
|
|
25
|
+
}
|
|
26
|
+
const logsDir = (0, node_path_1.join)(projectPath, '.steroids', 'invocations');
|
|
27
|
+
if (!(0, node_fs_1.existsSync)(logsDir)) {
|
|
28
|
+
return { scannedFiles: 0, deletedFiles: 0, freedBytes: 0, cutoffMs };
|
|
29
|
+
}
|
|
30
|
+
let scannedFiles = 0;
|
|
31
|
+
let deletedFiles = 0;
|
|
32
|
+
let freedBytes = 0;
|
|
33
|
+
try {
|
|
34
|
+
const entries = (0, node_fs_1.readdirSync)(logsDir, { withFileTypes: true });
|
|
35
|
+
for (const entry of entries) {
|
|
36
|
+
if (!entry.isFile())
|
|
37
|
+
continue;
|
|
38
|
+
if (!entry.name.endsWith('.log'))
|
|
39
|
+
continue;
|
|
40
|
+
scannedFiles++;
|
|
41
|
+
const filePath = (0, node_path_1.join)(logsDir, entry.name);
|
|
42
|
+
let st;
|
|
43
|
+
try {
|
|
44
|
+
st = (0, node_fs_1.statSync)(filePath);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (st.mtimeMs >= cutoffMs)
|
|
50
|
+
continue;
|
|
51
|
+
deletedFiles++;
|
|
52
|
+
freedBytes += st.size;
|
|
53
|
+
if (!options.dryRun) {
|
|
54
|
+
try {
|
|
55
|
+
(0, node_fs_1.unlinkSync)(filePath);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// If deletion fails, keep counts as best-effort; this is cleanup code.
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Directory read error; treat as no-op.
|
|
65
|
+
return { scannedFiles: 0, deletedFiles: 0, freedBytes: 0, cutoffMs };
|
|
66
|
+
}
|
|
67
|
+
return { scannedFiles, deletedFiles, freedBytes, cutoffMs };
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=invocation-logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation-logs.js","sourceRoot":"","sources":["../../src/cleanup/invocation-logs.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA+BH,sDAwDC;AArFD,qCAAwE;AACxE,yCAAiC;AAEjC,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAqBnC;;;;GAIG;AACH,SAAgB,qBAAqB,CACnC,WAAmB,EACnB,UAAwC,EAAE;IAE1C,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,GAAG,WAAW,CAAC;IAErC,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,qBAAW,EAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAAE,SAAS;YAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAE3C,YAAY,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,EAAE,CAAC;YACP,IAAI,CAAC;gBACH,EAAE,GAAG,IAAA,kBAAQ,EAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,IAAI,EAAE,CAAC,OAAO,IAAI,QAAQ;gBAAE,SAAS;YAErC,YAAY,EAAE,CAAC;YACf,UAAU,IAAI,EAAE,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,IAAA,oBAAU,EAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;gBAAC,MAAM,CAAC;oBACP,uEAAuE;gBACzE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;QACxC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvE,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAsCnD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBtF"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cleanupCommand = cleanupCommand;
|
|
4
|
+
/**
|
|
5
|
+
* steroids cleanup - Cleanup utilities (non-destructive retention)
|
|
6
|
+
*
|
|
7
|
+
* Subcommands:
|
|
8
|
+
* - logs: Clean up old invocation activity logs (.steroids/invocations/*.log)
|
|
9
|
+
*/
|
|
10
|
+
const node_util_1 = require("node:util");
|
|
11
|
+
const connection_js_1 = require("../database/connection.js");
|
|
12
|
+
const help_js_1 = require("../cli/help.js");
|
|
13
|
+
const invocation_logs_js_1 = require("../cleanup/invocation-logs.js");
|
|
14
|
+
const HELP = (0, help_js_1.generateHelp)({
|
|
15
|
+
command: 'cleanup',
|
|
16
|
+
description: 'Cleanup utilities',
|
|
17
|
+
details: `Cleanup operations that are safe to run regularly (retention-based).`,
|
|
18
|
+
usage: [
|
|
19
|
+
'steroids cleanup <subcommand> [options]',
|
|
20
|
+
],
|
|
21
|
+
subcommands: [
|
|
22
|
+
{ name: 'logs', description: 'Clean up old invocation activity logs' },
|
|
23
|
+
],
|
|
24
|
+
options: [
|
|
25
|
+
{ long: 'retention-days', description: 'Days to keep invocation activity logs (logs)', values: '<n>', default: '7' },
|
|
26
|
+
],
|
|
27
|
+
examples: [
|
|
28
|
+
{ command: 'steroids cleanup logs', description: 'Delete invocation activity logs older than 7 days' },
|
|
29
|
+
{ command: 'steroids cleanup logs --retention-days 30', description: 'Keep 30 days of invocation activity logs' },
|
|
30
|
+
{ command: 'steroids cleanup logs --dry-run', description: 'Preview what would be deleted' },
|
|
31
|
+
],
|
|
32
|
+
related: [
|
|
33
|
+
{ command: 'steroids logs', description: 'View invocation logs' },
|
|
34
|
+
{ command: 'steroids gc', description: 'Garbage collection' },
|
|
35
|
+
{ command: 'steroids purge', description: 'Purge old data' },
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
async function cleanupCommand(args, flags) {
|
|
39
|
+
// Check global help flag
|
|
40
|
+
if (flags.help || args.length === 0 || args[0] === '-h' || args[0] === '--help') {
|
|
41
|
+
console.log(HELP);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const subcommand = args[0];
|
|
45
|
+
const subArgs = args.slice(1);
|
|
46
|
+
switch (subcommand) {
|
|
47
|
+
case 'logs':
|
|
48
|
+
await cleanupLogs(subArgs, flags);
|
|
49
|
+
break;
|
|
50
|
+
default:
|
|
51
|
+
console.error(`Unknown subcommand: ${subcommand}`);
|
|
52
|
+
console.log(HELP);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function cleanupLogs(args, flags) {
|
|
57
|
+
const { values } = (0, node_util_1.parseArgs)({
|
|
58
|
+
args,
|
|
59
|
+
options: {
|
|
60
|
+
help: { type: 'boolean', short: 'h', default: false },
|
|
61
|
+
'retention-days': { type: 'string', default: '7' },
|
|
62
|
+
},
|
|
63
|
+
allowPositionals: false,
|
|
64
|
+
});
|
|
65
|
+
if (values.help) {
|
|
66
|
+
console.log(`
|
|
67
|
+
steroids cleanup logs - Clean up old invocation activity logs
|
|
68
|
+
|
|
69
|
+
USAGE:
|
|
70
|
+
steroids cleanup logs [options]
|
|
71
|
+
|
|
72
|
+
OPTIONS:
|
|
73
|
+
--retention-days <n> Days to keep invocation activity logs (default: 7)
|
|
74
|
+
--dry-run Preview without deleting files (global)
|
|
75
|
+
-j, --json Output as JSON (global)
|
|
76
|
+
-h, --help Show help
|
|
77
|
+
`);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const projectPath = process.cwd();
|
|
81
|
+
if (!(0, connection_js_1.isInitialized)(projectPath)) {
|
|
82
|
+
console.error('Steroids not initialized. Run "steroids init" first.');
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
const retentionDays = parseInt(values['retention-days'] ?? '7', 10);
|
|
86
|
+
if (!Number.isFinite(retentionDays) || retentionDays < 0) {
|
|
87
|
+
console.error(`Invalid --retention-days value: ${values['retention-days']}. Must be >= 0.`);
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
const result = (0, invocation_logs_js_1.cleanupInvocationLogs)(projectPath, { retentionDays, dryRun: flags.dryRun });
|
|
91
|
+
if (flags.json) {
|
|
92
|
+
console.log(JSON.stringify({
|
|
93
|
+
success: true,
|
|
94
|
+
command: 'cleanup logs',
|
|
95
|
+
dryRun: flags.dryRun,
|
|
96
|
+
data: {
|
|
97
|
+
retentionDays,
|
|
98
|
+
scannedFiles: result.scannedFiles,
|
|
99
|
+
deletedFiles: result.deletedFiles,
|
|
100
|
+
freedBytes: result.freedBytes,
|
|
101
|
+
},
|
|
102
|
+
error: null,
|
|
103
|
+
}, null, 2));
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const prefix = flags.dryRun ? 'Would delete' : 'Deleted';
|
|
107
|
+
console.log(`${prefix} ${result.deletedFiles} invocation activity log file(s) (scanned ${result.scannedFiles}, freed ${formatSize(result.freedBytes)}).`);
|
|
108
|
+
}
|
|
109
|
+
function formatSize(bytes) {
|
|
110
|
+
if (bytes < 1024)
|
|
111
|
+
return `${bytes}B`;
|
|
112
|
+
if (bytes < 1024 * 1024)
|
|
113
|
+
return `${(bytes / 1024).toFixed(1)}KB`;
|
|
114
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiFnD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BzF"}
|
|
@@ -41,10 +41,11 @@ const COMMANDS = {
|
|
|
41
41
|
loop: [],
|
|
42
42
|
runners: ['list', 'start', 'stop', 'status', 'logs', 'wakeup', 'cron'],
|
|
43
43
|
config: ['init', 'show', 'get', 'set', 'validate', 'path', 'edit', 'browse'],
|
|
44
|
-
health: [],
|
|
44
|
+
health: ['check', 'incidents'],
|
|
45
45
|
scan: [],
|
|
46
46
|
backup: ['create', 'restore', 'list', 'clean'],
|
|
47
47
|
logs: ['show', 'list', 'tail', 'purge'],
|
|
48
|
+
cleanup: ['logs'],
|
|
48
49
|
gc: [],
|
|
49
50
|
disputes: ['create', 'list', 'show', 'resolve', 'log'],
|
|
50
51
|
purge: ['tasks', 'ids', 'logs', 'all'],
|
|
@@ -323,6 +324,10 @@ function getSubcommandDescription(cmd, sub) {
|
|
|
323
324
|
wakeup: 'Check and start runners for projects with work',
|
|
324
325
|
cron: 'Manage cron job for auto-wakeup',
|
|
325
326
|
},
|
|
327
|
+
health: {
|
|
328
|
+
check: 'Detect and recover stuck tasks/runners',
|
|
329
|
+
incidents: 'View and manage stuck-task incident history',
|
|
330
|
+
},
|
|
326
331
|
config: {
|
|
327
332
|
init: 'Create configuration file',
|
|
328
333
|
show: 'Show configuration',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GlobalFlags } from '../cli/flags.js';
|
|
2
|
+
type HealthSubcommand = 'check' | 'incidents';
|
|
3
|
+
export declare function runHealthSubcommand(subcommand: HealthSubcommand, args: string[], flags: GlobalFlags): Promise<void>;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=health-stuck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-stuck.d.ts","sourceRoot":"","sources":["../../src/commands/health-stuck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAgBnD,KAAK,gBAAgB,GAAG,OAAO,GAAG,WAAW,CAAC;AA+H9C,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,gBAAgB,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runHealthSubcommand = runHealthSubcommand;
|
|
4
|
+
/**
|
|
5
|
+
* steroids health check|incidents - Stuck task detection & incident management
|
|
6
|
+
*
|
|
7
|
+
* Routed from src/commands/health.ts to avoid bloating the health scoring command.
|
|
8
|
+
*/
|
|
9
|
+
const node_util_1 = require("node:util");
|
|
10
|
+
const flags_js_1 = require("../cli/flags.js");
|
|
11
|
+
const help_js_1 = require("../cli/help.js");
|
|
12
|
+
const output_js_1 = require("../cli/output.js");
|
|
13
|
+
const connection_js_1 = require("../database/connection.js");
|
|
14
|
+
const loader_js_1 = require("../config/loader.js");
|
|
15
|
+
const global_db_js_1 = require("../runners/global-db.js");
|
|
16
|
+
const stuck_task_recovery_js_1 = require("../health/stuck-task-recovery.js");
|
|
17
|
+
const HELP_CHECK = (0, help_js_1.generateHelp)({
|
|
18
|
+
command: 'health check',
|
|
19
|
+
description: 'Detect and (optionally) recover stuck tasks/runners',
|
|
20
|
+
details: `Runs stuck-task detection (orphaned tasks, hanging invocations, zombie/dead runners).
|
|
21
|
+
If auto-recovery is enabled in config (health.autoRecover), it will attempt safe recovery actions.
|
|
22
|
+
Use --dry-run to preview actions without mutating any databases.`,
|
|
23
|
+
usage: ['steroids health check [options]'],
|
|
24
|
+
options: [
|
|
25
|
+
{ long: 'watch', description: 'Continuously run health check (Ctrl+C to stop)' },
|
|
26
|
+
{ long: 'watch-interval', description: 'Watch interval', values: '<duration> (e.g., 5s, 1m)', default: '5s' },
|
|
27
|
+
],
|
|
28
|
+
examples: [
|
|
29
|
+
{ command: 'steroids health check', description: 'Run stuck-task health check once' },
|
|
30
|
+
{ command: 'steroids health check --watch', description: 'Watch for stuck tasks continuously' },
|
|
31
|
+
{ command: 'steroids health check --dry-run', description: 'Preview recovery actions without changes' },
|
|
32
|
+
{ command: 'steroids health check --json', description: 'Machine-readable output' },
|
|
33
|
+
],
|
|
34
|
+
related: [
|
|
35
|
+
{ command: 'steroids health incidents', description: 'View incident history' },
|
|
36
|
+
{ command: 'steroids runners wakeup', description: 'Wake and recover stale runners across projects' },
|
|
37
|
+
],
|
|
38
|
+
showExitCodes: true,
|
|
39
|
+
});
|
|
40
|
+
const HELP_INCIDENTS = (0, help_js_1.generateHelp)({
|
|
41
|
+
command: 'health incidents',
|
|
42
|
+
description: 'View and manage stuck-task incident history',
|
|
43
|
+
details: `Incidents are logged when stuck-task recovery detects and handles problems.
|
|
44
|
+
Use --task to filter incidents for a specific task.
|
|
45
|
+
Use --clear to delete resolved incidents older than 7 days.`,
|
|
46
|
+
usage: ['steroids health incidents [options]'],
|
|
47
|
+
options: [
|
|
48
|
+
{ long: 'task', description: 'Filter incidents for a task ID/prefix', values: '<taskId>' },
|
|
49
|
+
{ long: 'limit', description: 'Max rows to show', values: '<n>', default: '50' },
|
|
50
|
+
{ long: 'clear', description: 'Delete resolved incidents older than 7 days' },
|
|
51
|
+
],
|
|
52
|
+
examples: [
|
|
53
|
+
{ command: 'steroids health incidents', description: 'Show recent incidents' },
|
|
54
|
+
{ command: 'steroids health incidents --task abc123', description: 'Filter incidents for a task' },
|
|
55
|
+
{ command: 'steroids health incidents --clear', description: 'Clear old resolved incidents' },
|
|
56
|
+
],
|
|
57
|
+
related: [{ command: 'steroids health check', description: 'Run stuck-task health check' }],
|
|
58
|
+
showExitCodes: true,
|
|
59
|
+
});
|
|
60
|
+
function formatTimestampLocal(d) {
|
|
61
|
+
return d.toLocaleString();
|
|
62
|
+
}
|
|
63
|
+
function padRight(s, width) {
|
|
64
|
+
if (s.length >= width)
|
|
65
|
+
return s;
|
|
66
|
+
return s + ' '.repeat(width - s.length);
|
|
67
|
+
}
|
|
68
|
+
function drawBox(lines, width) {
|
|
69
|
+
const w = Math.max(20, width);
|
|
70
|
+
const top = `\u250c${'\u2500'.repeat(w - 2)}\u2510`;
|
|
71
|
+
const mid = `\u251c${'\u2500'.repeat(w - 2)}\u2524`;
|
|
72
|
+
const bot = `\u2514${'\u2500'.repeat(w - 2)}\u2518`;
|
|
73
|
+
const body = lines.map((l) => `\u2502${padRight(` ${l}`, w - 2)}\u2502`);
|
|
74
|
+
return [top, body[0] ?? `\u2502${padRight(' ', w - 2)}\u2502`, mid, ...body.slice(1), bot].join('\n');
|
|
75
|
+
}
|
|
76
|
+
function yesNoMark(ok) {
|
|
77
|
+
return ok ? '\u2713' : '\u2717';
|
|
78
|
+
}
|
|
79
|
+
function describeSignals(result) {
|
|
80
|
+
const report = result.report;
|
|
81
|
+
const orphaned = report.orphanedTasks.length;
|
|
82
|
+
const hanging = report.hangingInvocations.length;
|
|
83
|
+
const zombie = report.zombieRunners.length;
|
|
84
|
+
const dead = report.deadRunners.length;
|
|
85
|
+
const incidentCount = orphaned + hanging + zombie + dead;
|
|
86
|
+
const lines = [];
|
|
87
|
+
lines.push('HEALTH CHECK REPORT');
|
|
88
|
+
lines.push(`Timestamp: ${formatTimestampLocal(report.timestamp)}`);
|
|
89
|
+
lines.push('');
|
|
90
|
+
lines.push(`Orphaned Tasks: ${orphaned} ${yesNoMark(orphaned === 0)}`);
|
|
91
|
+
lines.push(`Hanging Invocations: ${hanging} ${yesNoMark(hanging === 0)}`);
|
|
92
|
+
lines.push(`Zombie Runners: ${zombie} ${yesNoMark(zombie === 0)}`);
|
|
93
|
+
lines.push(`Dead Runners: ${dead} ${yesNoMark(dead === 0)}`);
|
|
94
|
+
if (report.dbInconsistencies.length > 0) {
|
|
95
|
+
lines.push(`DB Inconsistencies: ${report.dbInconsistencies.length} ${yesNoMark(false)}`);
|
|
96
|
+
}
|
|
97
|
+
lines.push('');
|
|
98
|
+
lines.push(`Incidents Found: ${incidentCount}`);
|
|
99
|
+
if (incidentCount > 0) {
|
|
100
|
+
for (const t of report.orphanedTasks) {
|
|
101
|
+
const mins = Math.round(t.secondsSinceUpdate / 60);
|
|
102
|
+
lines.push(` - orphaned_task: ${t.taskId} (${mins}min inactive)`);
|
|
103
|
+
}
|
|
104
|
+
for (const h of report.hangingInvocations) {
|
|
105
|
+
const mins = Math.round(h.secondsSinceUpdate / 60);
|
|
106
|
+
lines.push(` - hanging_invocation: ${h.taskId} (${h.phase}, ${mins}min)`);
|
|
107
|
+
}
|
|
108
|
+
for (const r of report.zombieRunners) {
|
|
109
|
+
const mins = Math.round(r.secondsSinceHeartbeat / 60);
|
|
110
|
+
lines.push(` - zombie_runner: ${r.runnerId} (${mins}min no heartbeat)`);
|
|
111
|
+
}
|
|
112
|
+
for (const r of report.deadRunners) {
|
|
113
|
+
const mins = Math.round(r.secondsSinceHeartbeat / 60);
|
|
114
|
+
lines.push(` - dead_runner: ${r.runnerId} (${mins}min since heartbeat)`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
lines.push('');
|
|
118
|
+
lines.push(`Actions Taken: ${result.actions.length}`);
|
|
119
|
+
for (const a of result.actions) {
|
|
120
|
+
lines.push(` - ${a.resolution}: ${a.reason}`);
|
|
121
|
+
}
|
|
122
|
+
if (result.skippedDueToSafetyLimit) {
|
|
123
|
+
lines.push('');
|
|
124
|
+
lines.push('Warning: Skipped recovery due to maxIncidentsPerHour safety limit.');
|
|
125
|
+
}
|
|
126
|
+
return lines;
|
|
127
|
+
}
|
|
128
|
+
async function runHealthSubcommand(subcommand, args, flags) {
|
|
129
|
+
switch (subcommand) {
|
|
130
|
+
case 'check':
|
|
131
|
+
await runHealthCheck(args, flags);
|
|
132
|
+
return;
|
|
133
|
+
case 'incidents':
|
|
134
|
+
await runHealthIncidents(args, flags);
|
|
135
|
+
return;
|
|
136
|
+
default: {
|
|
137
|
+
const _exhaustive = subcommand;
|
|
138
|
+
throw new Error(`Unknown health subcommand: ${_exhaustive}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async function runHealthCheck(args, flags) {
|
|
143
|
+
const out = (0, output_js_1.createOutput)({ command: 'health', subcommand: 'check', flags });
|
|
144
|
+
const { values } = (0, node_util_1.parseArgs)({
|
|
145
|
+
args,
|
|
146
|
+
options: {
|
|
147
|
+
help: { type: 'boolean', short: 'h', default: false },
|
|
148
|
+
watch: { type: 'boolean', default: false },
|
|
149
|
+
'watch-interval': { type: 'string' },
|
|
150
|
+
},
|
|
151
|
+
allowPositionals: false,
|
|
152
|
+
});
|
|
153
|
+
if (values.help || flags.help) {
|
|
154
|
+
out.log(HELP_CHECK);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const projectPath = process.cwd();
|
|
158
|
+
const config = (0, loader_js_1.loadConfig)(projectPath);
|
|
159
|
+
const { db: projectDb, close: closeProject } = (0, connection_js_1.openDatabase)(projectPath);
|
|
160
|
+
const global = (0, global_db_js_1.openGlobalDatabase)();
|
|
161
|
+
const runOnce = async () => {
|
|
162
|
+
const result = await (0, stuck_task_recovery_js_1.recoverStuckTasks)({
|
|
163
|
+
projectPath,
|
|
164
|
+
projectDb,
|
|
165
|
+
globalDb: global.db,
|
|
166
|
+
config,
|
|
167
|
+
dryRun: flags.dryRun,
|
|
168
|
+
});
|
|
169
|
+
if (out.isJson()) {
|
|
170
|
+
out.success({
|
|
171
|
+
timestamp: result.report.timestamp.toISOString(),
|
|
172
|
+
counts: {
|
|
173
|
+
orphanedTasks: result.report.orphanedTasks.length,
|
|
174
|
+
hangingInvocations: result.report.hangingInvocations.length,
|
|
175
|
+
zombieRunners: result.report.zombieRunners.length,
|
|
176
|
+
deadRunners: result.report.deadRunners.length,
|
|
177
|
+
dbInconsistencies: result.report.dbInconsistencies.length,
|
|
178
|
+
},
|
|
179
|
+
report: result.report,
|
|
180
|
+
actions: result.actions,
|
|
181
|
+
dryRun: flags.dryRun,
|
|
182
|
+
skippedDueToSafetyLimit: result.skippedDueToSafetyLimit,
|
|
183
|
+
});
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
if (values.watch) {
|
|
187
|
+
process.stdout.write('\x1B[2J\x1B[0f');
|
|
188
|
+
}
|
|
189
|
+
out.log(drawBox(describeSignals(result), 61));
|
|
190
|
+
};
|
|
191
|
+
try {
|
|
192
|
+
if (values.watch) {
|
|
193
|
+
const intervalStr = values['watch-interval'] ?? '5s';
|
|
194
|
+
const intervalMs = (0, flags_js_1.parseDuration)(intervalStr);
|
|
195
|
+
await runOnce();
|
|
196
|
+
const intervalId = setInterval(() => {
|
|
197
|
+
runOnce().catch((err) => {
|
|
198
|
+
if (!out.isJson()) {
|
|
199
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
200
|
+
console.error(`Health check failed: ${msg}`);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}, intervalMs);
|
|
204
|
+
process.on('SIGINT', () => {
|
|
205
|
+
clearInterval(intervalId);
|
|
206
|
+
closeProject();
|
|
207
|
+
global.close();
|
|
208
|
+
if (!out.isJson())
|
|
209
|
+
console.log('\nStopped watching.');
|
|
210
|
+
process.exit(0);
|
|
211
|
+
});
|
|
212
|
+
await new Promise(() => { });
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
await runOnce();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
finally {
|
|
219
|
+
if (!values.watch) {
|
|
220
|
+
closeProject();
|
|
221
|
+
global.close();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function normalizeTaskPrefix(input) {
|
|
226
|
+
return input.trim();
|
|
227
|
+
}
|
|
228
|
+
async function runHealthIncidents(args, flags) {
|
|
229
|
+
const out = (0, output_js_1.createOutput)({ command: 'health', subcommand: 'incidents', flags });
|
|
230
|
+
const { values } = (0, node_util_1.parseArgs)({
|
|
231
|
+
args,
|
|
232
|
+
options: {
|
|
233
|
+
help: { type: 'boolean', short: 'h', default: false },
|
|
234
|
+
task: { type: 'string' },
|
|
235
|
+
limit: { type: 'string' },
|
|
236
|
+
clear: { type: 'boolean', default: false },
|
|
237
|
+
},
|
|
238
|
+
allowPositionals: false,
|
|
239
|
+
});
|
|
240
|
+
if (values.help || flags.help) {
|
|
241
|
+
out.log(HELP_INCIDENTS);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
const projectPath = process.cwd();
|
|
245
|
+
const { db, close } = (0, connection_js_1.openDatabase)(projectPath);
|
|
246
|
+
try {
|
|
247
|
+
const limit = (() => {
|
|
248
|
+
const raw = values.limit ?? '50';
|
|
249
|
+
const n = parseInt(raw, 10);
|
|
250
|
+
return Number.isFinite(n) && n > 0 ? n : 50;
|
|
251
|
+
})();
|
|
252
|
+
if (values.clear) {
|
|
253
|
+
const countRow = db
|
|
254
|
+
.prepare(`SELECT COUNT(*) as c
|
|
255
|
+
FROM incidents
|
|
256
|
+
WHERE resolved_at IS NOT NULL
|
|
257
|
+
AND resolved_at < datetime('now', '-7 days')`)
|
|
258
|
+
.get();
|
|
259
|
+
const toDelete = countRow?.c ?? 0;
|
|
260
|
+
if (!flags.dryRun) {
|
|
261
|
+
db.prepare(`DELETE FROM incidents
|
|
262
|
+
WHERE resolved_at IS NOT NULL
|
|
263
|
+
AND resolved_at < datetime('now', '-7 days')`).run();
|
|
264
|
+
}
|
|
265
|
+
if (out.isJson()) {
|
|
266
|
+
out.success({ deleted: flags.dryRun ? 0 : toDelete, wouldDelete: flags.dryRun ? toDelete : 0 });
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
out.log(flags.dryRun ? `Would delete ${toDelete} incident(s).` : `Deleted ${toDelete} incident(s).`);
|
|
270
|
+
}
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
const taskPrefix = values.task ? normalizeTaskPrefix(values.task) : null;
|
|
274
|
+
const incidents = (() => {
|
|
275
|
+
if (taskPrefix) {
|
|
276
|
+
return db
|
|
277
|
+
.prepare(`SELECT id, task_id, runner_id, failure_mode, detected_at, resolved_at, resolution, details, created_at
|
|
278
|
+
FROM incidents
|
|
279
|
+
WHERE task_id LIKE ?
|
|
280
|
+
ORDER BY detected_at DESC
|
|
281
|
+
LIMIT ?`)
|
|
282
|
+
.all(`${taskPrefix}%`, limit);
|
|
283
|
+
}
|
|
284
|
+
return db
|
|
285
|
+
.prepare(`SELECT id, task_id, runner_id, failure_mode, detected_at, resolved_at, resolution, details, created_at
|
|
286
|
+
FROM incidents
|
|
287
|
+
ORDER BY detected_at DESC
|
|
288
|
+
LIMIT ?`)
|
|
289
|
+
.all(limit);
|
|
290
|
+
})();
|
|
291
|
+
if (out.isJson()) {
|
|
292
|
+
out.success({ total: incidents.length, incidents });
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
if (incidents.length === 0) {
|
|
296
|
+
out.log('No incidents found.');
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
const rows = incidents.map((i) => {
|
|
300
|
+
const resolved = i.resolved_at ? 'yes' : 'no';
|
|
301
|
+
const task = i.task_id ?? '-';
|
|
302
|
+
const runner = i.runner_id ?? '-';
|
|
303
|
+
const resolution = i.resolution ?? '-';
|
|
304
|
+
return [i.detected_at, i.failure_mode, task, runner, resolved, resolution];
|
|
305
|
+
});
|
|
306
|
+
out.table(['detected_at', 'failure_mode', 'task', 'runner', 'resolved', 'resolution'], rows);
|
|
307
|
+
}
|
|
308
|
+
finally {
|
|
309
|
+
close();
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=health-stuck.js.map
|