@jamesaphoenix/tx-cli 0.5.2 → 0.5.9
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/cli.d.ts +1 -1
- package/dist/cli.js +20 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/claim.d.ts +2 -2
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +20 -1
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/cycle.d.ts.map +1 -1
- package/dist/commands/cycle.js +14 -3
- package/dist/commands/cycle.js.map +1 -1
- package/dist/commands/daemon.d.ts +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +95 -28
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/doc.d.ts +3 -2
- package/dist/commands/doc.d.ts.map +1 -1
- package/dist/commands/doc.js +190 -4
- package/dist/commands/doc.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/graph.d.ts +1 -1
- package/dist/commands/group-context.d.ts +6 -0
- package/dist/commands/group-context.d.ts.map +1 -0
- package/dist/commands/group-context.js +42 -0
- package/dist/commands/group-context.js.map +1 -0
- package/dist/commands/scaffold.d.ts +24 -2
- package/dist/commands/scaffold.d.ts.map +1 -1
- package/dist/commands/scaffold.js +173 -7
- package/dist/commands/scaffold.js.map +1 -1
- package/dist/commands/trace.d.ts +15 -2
- package/dist/commands/trace.d.ts.map +1 -1
- package/dist/commands/trace.js +138 -18
- package/dist/commands/trace.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +129 -8
- package/dist/help.js.map +1 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +5 -1
- package/dist/output.js.map +1 -1
- package/package.json +8 -2
- package/dist/commands/orchestrator.d.ts +0 -11
- package/dist/commands/orchestrator.d.ts.map +0 -1
- package/dist/commands/orchestrator.js +0 -129
- package/dist/commands/orchestrator.js.map +0 -1
- package/dist/tx +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Scaffold Claude Code or Codex integration files into the current project.
|
|
3
3
|
*
|
|
4
|
-
* Copies template files (CLAUDE.md / AGENTS.md, skills, scripts) into the
|
|
4
|
+
* Copies template files (CLAUDE.md / AGENTS.md, skills, scripts, codex rules) into the
|
|
5
5
|
* user's project, skipping any files that already exist.
|
|
6
6
|
*/
|
|
7
|
-
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, statSync, chmodSync } from "node:fs";
|
|
8
|
-
import { resolve, join, dirname, relative } from "node:path";
|
|
7
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, statSync, chmodSync, accessSync, constants as fsConstants } from "node:fs";
|
|
8
|
+
import { resolve, join, dirname, relative, delimiter } from "node:path";
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
10
|
import * as p from "@clack/prompts";
|
|
11
11
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -66,6 +66,110 @@ function copyTree(src, dest, baseDir) {
|
|
|
66
66
|
}
|
|
67
67
|
return { copied, skipped };
|
|
68
68
|
}
|
|
69
|
+
const WATCHDOG_RUNTIME_MODES = ["auto", "codex", "claude", "both"];
|
|
70
|
+
export function parseWatchdogRuntimeMode(value) {
|
|
71
|
+
if (value === undefined) {
|
|
72
|
+
return "auto";
|
|
73
|
+
}
|
|
74
|
+
if (value === true) {
|
|
75
|
+
throw new Error("Flag --watchdog-runtime requires a value: auto|codex|claude|both.");
|
|
76
|
+
}
|
|
77
|
+
if (typeof value !== "string") {
|
|
78
|
+
throw new Error("Flag --watchdog-runtime must be one of: auto|codex|claude|both.");
|
|
79
|
+
}
|
|
80
|
+
if (WATCHDOG_RUNTIME_MODES.includes(value)) {
|
|
81
|
+
return value;
|
|
82
|
+
}
|
|
83
|
+
throw new Error(`Invalid --watchdog-runtime value: ${value} (expected: auto|codex|claude|both)`);
|
|
84
|
+
}
|
|
85
|
+
function commandAvailable(commandName, pathEnv) {
|
|
86
|
+
if (!pathEnv) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
const pathEntries = pathEnv.split(delimiter).filter(Boolean);
|
|
90
|
+
const isWindows = process.platform === "win32";
|
|
91
|
+
const extensions = isWindows
|
|
92
|
+
? (process.env.PATHEXT ?? ".EXE;.CMD;.BAT;.COM").split(";")
|
|
93
|
+
: [""];
|
|
94
|
+
for (const entry of pathEntries) {
|
|
95
|
+
for (const ext of extensions) {
|
|
96
|
+
const candidate = join(entry, isWindows ? `${commandName}${ext}` : commandName);
|
|
97
|
+
try {
|
|
98
|
+
accessSync(candidate, fsConstants.X_OK);
|
|
99
|
+
if (statSync(candidate).isFile()) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
function resolveWatchdogRuntime(mode, pathEnv) {
|
|
111
|
+
const codexAvailable = commandAvailable("codex", pathEnv);
|
|
112
|
+
const claudeAvailable = commandAvailable("claude", pathEnv);
|
|
113
|
+
if (mode === "codex") {
|
|
114
|
+
if (!codexAvailable) {
|
|
115
|
+
throw new Error("Watchdog runtime 'codex' unavailable: codex CLI not found in PATH. Install codex or use --watchdog-runtime auto|claude.");
|
|
116
|
+
}
|
|
117
|
+
return { warnings: [], watchdogEnabled: true, codexEnabled: true, claudeEnabled: false };
|
|
118
|
+
}
|
|
119
|
+
if (mode === "claude") {
|
|
120
|
+
if (!claudeAvailable) {
|
|
121
|
+
throw new Error("Watchdog runtime 'claude' unavailable: claude CLI not found in PATH. Install claude or use --watchdog-runtime auto|codex.");
|
|
122
|
+
}
|
|
123
|
+
return { warnings: [], watchdogEnabled: true, codexEnabled: false, claudeEnabled: true };
|
|
124
|
+
}
|
|
125
|
+
if (mode === "both") {
|
|
126
|
+
const missing = [];
|
|
127
|
+
if (!codexAvailable)
|
|
128
|
+
missing.push("codex");
|
|
129
|
+
if (!claudeAvailable)
|
|
130
|
+
missing.push("claude");
|
|
131
|
+
if (missing.length > 0) {
|
|
132
|
+
throw new Error(`Watchdog runtime 'both' requires codex and claude; missing: ${missing.join(", ")}.`);
|
|
133
|
+
}
|
|
134
|
+
return { warnings: [], watchdogEnabled: true, codexEnabled: true, claudeEnabled: true };
|
|
135
|
+
}
|
|
136
|
+
const codexEnabled = codexAvailable;
|
|
137
|
+
const claudeEnabled = claudeAvailable;
|
|
138
|
+
const watchdogEnabled = codexEnabled || claudeEnabled;
|
|
139
|
+
const warnings = watchdogEnabled
|
|
140
|
+
? []
|
|
141
|
+
: [
|
|
142
|
+
"Watchdog runtime auto-detect found no codex/claude CLI in PATH. Assets were scaffolded with WATCHDOG_ENABLED=0.",
|
|
143
|
+
"Install a runtime and update .tx/watchdog.env to enable watchdog supervision.",
|
|
144
|
+
];
|
|
145
|
+
return {
|
|
146
|
+
warnings,
|
|
147
|
+
watchdogEnabled,
|
|
148
|
+
codexEnabled,
|
|
149
|
+
claudeEnabled,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function renderWatchdogEnv(mode, runtime, detached) {
|
|
153
|
+
const as01 = (value) => (value ? "1" : "0");
|
|
154
|
+
const lines = [
|
|
155
|
+
`WATCHDOG_ENABLED=${as01(runtime.watchdogEnabled)}`,
|
|
156
|
+
`WATCHDOG_RUNTIME_MODE=${mode}`,
|
|
157
|
+
`WATCHDOG_CODEX_ENABLED=${as01(runtime.codexEnabled)}`,
|
|
158
|
+
`WATCHDOG_CLAUDE_ENABLED=${as01(runtime.claudeEnabled)}`,
|
|
159
|
+
"WATCHDOG_POLL_SECONDS=300",
|
|
160
|
+
"WATCHDOG_TRANSCRIPT_IDLE_SECONDS=600",
|
|
161
|
+
"WATCHDOG_CLAUDE_STALL_GRACE_SECONDS=900",
|
|
162
|
+
"WATCHDOG_HEARTBEAT_LAG_SECONDS=180",
|
|
163
|
+
"WATCHDOG_RUN_STALE_SECONDS=5400",
|
|
164
|
+
"WATCHDOG_IDLE_ROUNDS=300",
|
|
165
|
+
"WATCHDOG_ERROR_BURST_WINDOW_MINUTES=20",
|
|
166
|
+
"WATCHDOG_ERROR_BURST_THRESHOLD=4",
|
|
167
|
+
"WATCHDOG_ERROR_BURST_GRACE_SECONDS=600",
|
|
168
|
+
"WATCHDOG_RESTART_COOLDOWN_SECONDS=900",
|
|
169
|
+
`WATCHDOG_DETACHED=${detached ? "1" : "0"}`,
|
|
170
|
+
];
|
|
171
|
+
return `${lines.join("\n")}\n`;
|
|
172
|
+
}
|
|
69
173
|
/**
|
|
70
174
|
* Scaffold Claude Code integration into the current project.
|
|
71
175
|
*/
|
|
@@ -131,6 +235,12 @@ export function scaffoldCodex(projectDir) {
|
|
|
131
235
|
const agentsResult = copyTree(codexAgentsSrc, codexAgentsDest);
|
|
132
236
|
allCopied.push(...agentsResult.copied.map(p => `.codex/agents/${p}`));
|
|
133
237
|
allSkipped.push(...agentsResult.skipped.map(p => `.codex/agents/${p}`));
|
|
238
|
+
// Copy codex command policy rules
|
|
239
|
+
const codexRulesSrc = join(templates, "codex", "rules");
|
|
240
|
+
const codexRulesDest = join(projectDir, ".codex", "rules");
|
|
241
|
+
const rulesResult = copyTree(codexRulesSrc, codexRulesDest);
|
|
242
|
+
allCopied.push(...rulesResult.copied.map(p => `.codex/rules/${p}`));
|
|
243
|
+
allSkipped.push(...rulesResult.skipped.map(p => `.codex/rules/${p}`));
|
|
134
244
|
const agentsMdSrc = join(templates, "codex", "AGENTS.md");
|
|
135
245
|
const agentsMdDest = join(projectDir, "AGENTS.md");
|
|
136
246
|
if (existsSync(agentsMdDest)) {
|
|
@@ -150,6 +260,46 @@ export function scaffoldCodex(projectDir) {
|
|
|
150
260
|
}
|
|
151
261
|
return { copied: allCopied, skipped: allSkipped };
|
|
152
262
|
}
|
|
263
|
+
/**
|
|
264
|
+
* Scaffold watchdog supervision scripts/config into the current project.
|
|
265
|
+
* Runtime-specific toggles are persisted in .tx/watchdog.env.
|
|
266
|
+
*/
|
|
267
|
+
export function scaffoldWatchdog(projectDir, options) {
|
|
268
|
+
const allCopied = [];
|
|
269
|
+
const allSkipped = [];
|
|
270
|
+
const mode = options?.runtimeMode ?? "auto";
|
|
271
|
+
const runtime = resolveWatchdogRuntime(mode, options?.pathEnv ?? (process.env.PATH ?? ""));
|
|
272
|
+
const detached = options?.detached !== false;
|
|
273
|
+
const templates = templatesDir();
|
|
274
|
+
const scriptsSrc = join(templates, "watchdog", "scripts");
|
|
275
|
+
const scriptsDest = join(projectDir, "scripts");
|
|
276
|
+
const scriptsResult = copyTree(scriptsSrc, scriptsDest);
|
|
277
|
+
allCopied.push(...scriptsResult.copied.map(p => `scripts/${p}`));
|
|
278
|
+
allSkipped.push(...scriptsResult.skipped.map(p => `scripts/${p}`));
|
|
279
|
+
const opsSrc = join(templates, "watchdog", "ops");
|
|
280
|
+
const opsDest = join(projectDir, "ops");
|
|
281
|
+
const opsResult = copyTree(opsSrc, opsDest);
|
|
282
|
+
allCopied.push(...opsResult.copied.map(p => `ops/${p}`));
|
|
283
|
+
allSkipped.push(...opsResult.skipped.map(p => `ops/${p}`));
|
|
284
|
+
const envPath = join(projectDir, ".tx", "watchdog.env");
|
|
285
|
+
if (existsSync(envPath)) {
|
|
286
|
+
allSkipped.push(".tx/watchdog.env");
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
mkdirSync(dirname(envPath), { recursive: true });
|
|
290
|
+
writeFileSync(envPath, renderWatchdogEnv(mode, runtime, detached));
|
|
291
|
+
allCopied.push(".tx/watchdog.env");
|
|
292
|
+
}
|
|
293
|
+
return {
|
|
294
|
+
copied: allCopied,
|
|
295
|
+
skipped: allSkipped,
|
|
296
|
+
warnings: runtime.warnings,
|
|
297
|
+
runtimeMode: mode,
|
|
298
|
+
watchdogEnabled: runtime.watchdogEnabled,
|
|
299
|
+
codexEnabled: runtime.codexEnabled,
|
|
300
|
+
claudeEnabled: runtime.claudeEnabled,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
153
303
|
/** Format scaffold results for clack note */
|
|
154
304
|
function formatResults(results) {
|
|
155
305
|
const lines = [];
|
|
@@ -165,7 +315,8 @@ function formatResults(results) {
|
|
|
165
315
|
* Interactive scaffold using @clack/prompts.
|
|
166
316
|
* Asks the user what they want step by step.
|
|
167
317
|
*/
|
|
168
|
-
export async function interactiveScaffold(projectDir) {
|
|
318
|
+
export async function interactiveScaffold(projectDir, options) {
|
|
319
|
+
const watchdogRuntimeMode = options?.watchdogRuntimeMode ?? "auto";
|
|
169
320
|
const wantsClaude = await p.confirm({
|
|
170
321
|
message: "Add Claude Code integration? (CLAUDE.md + skills)",
|
|
171
322
|
initialValue: true,
|
|
@@ -201,7 +352,7 @@ export async function interactiveScaffold(projectDir) {
|
|
|
201
352
|
results.push(result);
|
|
202
353
|
}
|
|
203
354
|
const wantsCodex = await p.confirm({
|
|
204
|
-
message: "Add Codex integration? (AGENTS.md + .codex/agents)",
|
|
355
|
+
message: "Add Codex integration? (AGENTS.md + .codex/agents + .codex/rules)",
|
|
205
356
|
initialValue: true,
|
|
206
357
|
});
|
|
207
358
|
if (p.isCancel(wantsCodex)) {
|
|
@@ -211,12 +362,27 @@ export async function interactiveScaffold(projectDir) {
|
|
|
211
362
|
if (wantsCodex) {
|
|
212
363
|
results.push(scaffoldCodex(projectDir));
|
|
213
364
|
}
|
|
365
|
+
const wantsWatchdog = await p.confirm({
|
|
366
|
+
message: "Enable watchdog supervision for detached RALPH loops? (default: No)",
|
|
367
|
+
initialValue: false,
|
|
368
|
+
});
|
|
369
|
+
if (p.isCancel(wantsWatchdog)) {
|
|
370
|
+
p.cancel("Setup cancelled.");
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
if (wantsWatchdog) {
|
|
374
|
+
const watchdogResult = scaffoldWatchdog(projectDir, { runtimeMode: watchdogRuntimeMode });
|
|
375
|
+
for (const warning of watchdogResult.warnings) {
|
|
376
|
+
p.log.warn(warning);
|
|
377
|
+
}
|
|
378
|
+
results.push(watchdogResult);
|
|
379
|
+
}
|
|
214
380
|
const output = formatResults(results);
|
|
215
381
|
if (output) {
|
|
216
382
|
p.note(output, "Files");
|
|
217
383
|
}
|
|
218
|
-
if (!wantsClaude && !wantsCodex) {
|
|
219
|
-
p.log.info("Skipped
|
|
384
|
+
if (!wantsClaude && !wantsCodex && !wantsWatchdog) {
|
|
385
|
+
p.log.info("Skipped integrations. Run tx init --claude, --codex, or --watchdog later.");
|
|
220
386
|
}
|
|
221
387
|
}
|
|
222
388
|
//# sourceMappingURL=scaffold.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC9G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAA;AAEnC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAEzD,mEAAmE;AACnE,SAAS,YAAY;IACnB,OAAO,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;AAC9C,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,iEAAiE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACxF,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CACf,GAAW,EACX,IAAY,EACZ,OAAgB;IAEhB,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,IAAI,GAAG,OAAO,IAAI,IAAI,CAAA;IAE5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAEhD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAE9B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;YAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBACnD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,GAAG,GAAG,KAA8B,CAAA;oBAC1C,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC3B,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,4EAA4E,CAAC,CAAA;oBAC1H,CAAC;oBACD,MAAM,KAAK,CAAA;gBACb,CAAC;gBACD,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;gBAC9C,4BAA4B;gBAC5B,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;gBAC5B,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC;AAcD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,OAAuB;IACxE,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAA;IACtG,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAEhC,0CAA0C;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IACxD,MAAM,eAAe,GAAa,EAAE,CAAA;IACpC,IAAI,IAAI,CAAC,aAAa;QAAE,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC3D,IAAI,IAAI,CAAC,UAAU;QAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAErD,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAClC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACzE,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;QAChD,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;QACzD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;QAElD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;YACpD,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;YAC3D,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;gBACpD,aAAa,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC,CAAA;gBAC1D,SAAS,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;YACnD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;YAC/D,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAEhC,4BAA4B;IAC5B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IACzD,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC5D,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC,CAAA;IAC9D,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAA;IACrE,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAA;IAEvE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;IAElD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QACpD,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;YACpD,aAAa,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC,CAAA;YAC1D,SAAS,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;QAC/D,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;AACnD,CAAC;AAED,6CAA6C;AAC7C,SAAS,aAAa,CAAC,OAAyB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAChD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;QAClC,OAAO,EAAE,mDAAmD;QAC5D,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;IACF,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAErE,MAAM,OAAO,GAAqB,EAAE,CAAA;IAEpC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;YACjC,OAAO,EAAE,4DAA4D;YACrE,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;QACF,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QAEpE,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;YACjC,OAAO,EAAE,8CAA8C;YACvD,YAAY,EAAE,KAAK;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE;YACxC,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,WAAW,EAAE,CAAC,CAAC,UAAU;SAC1B,CAAC,CAAA;QACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;QACjC,OAAO,EAAE,oDAAoD;QAC7D,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;IACF,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAEpE,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IACrC,IAAI,MAAM,EAAE,CAAC;QACX,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAA;IACzF,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/trace.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* CLI commands for execution tracing (PRD-019).
|
|
5
5
|
*/
|
|
6
6
|
import { Effect } from "effect";
|
|
7
|
-
import { RunRepository, SqliteClient, type DatabaseError } from "@jamesaphoenix/tx-core";
|
|
7
|
+
import { RunRepository, RunHeartbeatService, SqliteClient, type DatabaseError } from "@jamesaphoenix/tx-core";
|
|
8
8
|
import { type Flags } from "../utils/parse.js";
|
|
9
9
|
/**
|
|
10
10
|
* tx trace list - Show recent runs with event counts.
|
|
@@ -28,6 +28,19 @@ export declare const traceStderr: (pos: string[], _flags: Flags) => Effect.Effec
|
|
|
28
28
|
* tx trace show <run-id> - Show metrics events for a run.
|
|
29
29
|
*/
|
|
30
30
|
export declare const traceShow: (pos: string[], flags: Flags) => Effect.Effect<void, DatabaseError, RunRepository | SqliteClient>;
|
|
31
|
+
/**
|
|
32
|
+
* tx trace heartbeat <run-id> - Update run heartbeat state.
|
|
33
|
+
*
|
|
34
|
+
* Primitive used by orchestration loops to record transcript/log progress.
|
|
35
|
+
*/
|
|
36
|
+
export declare const traceHeartbeat: (pos: string[], flags: Flags) => Effect.Effect<void, DatabaseError, RunHeartbeatService>;
|
|
37
|
+
/**
|
|
38
|
+
* tx trace stalled - Find or reap stalled running runs.
|
|
39
|
+
*
|
|
40
|
+
* A run is considered stalled when transcript activity has not moved
|
|
41
|
+
* for longer than --transcript-idle-seconds.
|
|
42
|
+
*/
|
|
43
|
+
export declare const traceStalled: (pos: string[], flags: Flags) => Effect.Effect<void, DatabaseError, RunHeartbeatService>;
|
|
31
44
|
/**
|
|
32
45
|
* tx trace errors - Show recent errors across all runs.
|
|
33
46
|
*/
|
|
@@ -35,5 +48,5 @@ export declare const traceErrors: (_pos: string[], flags: Flags) => Effect.Effec
|
|
|
35
48
|
/**
|
|
36
49
|
* Main trace command dispatcher.
|
|
37
50
|
*/
|
|
38
|
-
export declare const trace: (pos: string[], flags: Flags) => Effect.Effect<void, DatabaseError, RunRepository | SqliteClient>;
|
|
51
|
+
export declare const trace: (pos: string[], flags: Flags) => Effect.Effect<void, DatabaseError, RunRepository | RunHeartbeatService | SqliteClient>;
|
|
39
52
|
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/commands/trace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,KAAK,aAAa,EAGnB,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EAAE,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/commands/trace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,KAAK,aAAa,EAGnB,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EAAE,KAAK,KAAK,EAA0B,MAAM,mBAAmB,CAAA;AAmDtE;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,EAAE,OAAO,KAAK,KA6D9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,GAAG,YAAY,CAAC,CAAA;AAiIxE;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,EAAE,EAAE,QAAQ,KAAK,KA4CpD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,EAAE,QAAQ,KAAK,KA4ChD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;AAEzD;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,EAAE,EAAE,OAAO,KAAK,KA0L7C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,GAAG,YAAY,CAAC,CAAA;AAgDxE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,EAAE,OAAO,KAAK,KAsDlD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAA;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,EAAE,OAAO,KAAK,KA0DhD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,EAAE,OAAO,KAAK,KAuIhD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,CAAC,CAAA;AAExD;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,EAAE,EAAE,OAAO,KAAK,KAsDzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,GAAG,mBAAmB,GAAG,YAAY,CAAC,CAAA"}
|
package/dist/commands/trace.js
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
import { Effect } from "effect";
|
|
7
7
|
import { existsSync, readFileSync } from "node:fs";
|
|
8
8
|
import { join, resolve } from "node:path";
|
|
9
|
-
import { RunRepository, SqliteClient, getAdapter } from "@jamesaphoenix/tx-core";
|
|
9
|
+
import { RunRepository, RunHeartbeatService, SqliteClient, getAdapter } from "@jamesaphoenix/tx-core";
|
|
10
10
|
import { toJson, truncate } from "../output.js";
|
|
11
11
|
import { commandHelp } from "../help.js";
|
|
12
|
-
import { flag, parseIntOpt } from "../utils/parse.js";
|
|
12
|
+
import { flag, opt, parseIntOpt } from "../utils/parse.js";
|
|
13
13
|
/**
|
|
14
14
|
* Calculate relative time string (e.g., "2h ago", "3d ago").
|
|
15
15
|
*/
|
|
@@ -38,7 +38,7 @@ const getSpanCountsForRuns = (db, runIds) => {
|
|
|
38
38
|
const rows = db.prepare(`
|
|
39
39
|
SELECT run_id, COUNT(*) as count
|
|
40
40
|
FROM events
|
|
41
|
-
WHERE run_id IN (${placeholders})
|
|
41
|
+
WHERE event_type = 'span' AND run_id IN (${placeholders})
|
|
42
42
|
GROUP BY run_id
|
|
43
43
|
`).all(...runIds);
|
|
44
44
|
const counts = new Map();
|
|
@@ -56,14 +56,9 @@ export const traceList = (_pos, flags) => Effect.gen(function* () {
|
|
|
56
56
|
// Parse options
|
|
57
57
|
const limit = parseIntOpt(flags, "limit", "limit", "n") ?? 20;
|
|
58
58
|
const hours = parseIntOpt(flags, "hours", "hours") ?? 24;
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
// Filter to runs within the specified hours
|
|
63
|
-
const cutoff = Date.now() - hours * 60 * 60 * 1000;
|
|
64
|
-
const recentRuns = allRuns
|
|
65
|
-
.filter(r => r.startedAt.getTime() >= cutoff)
|
|
66
|
-
.slice(0, limit);
|
|
59
|
+
// Push time-window filtering into SQL to avoid overfetching runs in memory.
|
|
60
|
+
const cutoff = new Date(Date.now() - hours * 60 * 60 * 1000);
|
|
61
|
+
const recentRuns = yield* runRepo.findRecentSince(cutoff, limit);
|
|
67
62
|
// Get span counts for all runs
|
|
68
63
|
const runIds = recentRuns.map(r => r.id);
|
|
69
64
|
const spanCounts = getSpanCountsForRuns(db, runIds);
|
|
@@ -440,6 +435,123 @@ export const traceShow = (pos, flags) => Effect.gen(function* () {
|
|
|
440
435
|
console.log("");
|
|
441
436
|
console.log(`${metricsEvents.length} event(s)`);
|
|
442
437
|
});
|
|
438
|
+
const parseRunId = (raw) => {
|
|
439
|
+
if (!/^run-.+$/.test(raw)) {
|
|
440
|
+
console.error(`Invalid run ID: "${raw}". Expected format: run-<id>`);
|
|
441
|
+
process.exit(1);
|
|
442
|
+
}
|
|
443
|
+
return raw;
|
|
444
|
+
};
|
|
445
|
+
/**
|
|
446
|
+
* tx trace heartbeat <run-id> - Update run heartbeat state.
|
|
447
|
+
*
|
|
448
|
+
* Primitive used by orchestration loops to record transcript/log progress.
|
|
449
|
+
*/
|
|
450
|
+
export const traceHeartbeat = (pos, flags) => Effect.gen(function* () {
|
|
451
|
+
const raw = pos[0];
|
|
452
|
+
if (!raw) {
|
|
453
|
+
console.error("Error: run-id is required");
|
|
454
|
+
console.error("Usage: tx trace heartbeat <run-id> [--stdout-bytes <n>] [--stderr-bytes <n>] [--transcript-bytes <n>] [--delta-bytes <n>] [--check-at <iso>] [--activity-at <iso>]");
|
|
455
|
+
process.exit(1);
|
|
456
|
+
}
|
|
457
|
+
const runId = parseRunId(raw);
|
|
458
|
+
const svc = yield* RunHeartbeatService;
|
|
459
|
+
const stdoutBytes = parseIntOpt(flags, "stdout-bytes", "stdout-bytes") ?? 0;
|
|
460
|
+
const stderrBytes = parseIntOpt(flags, "stderr-bytes", "stderr-bytes") ?? 0;
|
|
461
|
+
const transcriptBytes = parseIntOpt(flags, "transcript-bytes", "transcript-bytes") ?? 0;
|
|
462
|
+
const deltaBytes = parseIntOpt(flags, "delta-bytes", "delta-bytes") ?? 0;
|
|
463
|
+
const parseDateFlag = (name) => {
|
|
464
|
+
const rawValue = opt(flags, name);
|
|
465
|
+
if (!rawValue)
|
|
466
|
+
return undefined;
|
|
467
|
+
const parsed = new Date(rawValue);
|
|
468
|
+
if (Number.isNaN(parsed.getTime())) {
|
|
469
|
+
console.error(`Invalid value for --${name}: "${rawValue}" is not a valid ISO timestamp`);
|
|
470
|
+
process.exit(1);
|
|
471
|
+
}
|
|
472
|
+
return parsed;
|
|
473
|
+
};
|
|
474
|
+
const checkAt = parseDateFlag("check-at");
|
|
475
|
+
const activityAt = parseDateFlag("activity-at");
|
|
476
|
+
yield* svc.heartbeat({
|
|
477
|
+
runId,
|
|
478
|
+
checkAt,
|
|
479
|
+
activityAt,
|
|
480
|
+
stdoutBytes,
|
|
481
|
+
stderrBytes,
|
|
482
|
+
transcriptBytes,
|
|
483
|
+
deltaBytes,
|
|
484
|
+
});
|
|
485
|
+
if (flag(flags, "json")) {
|
|
486
|
+
console.log(toJson({
|
|
487
|
+
runId,
|
|
488
|
+
checkAt: (checkAt ?? new Date()).toISOString(),
|
|
489
|
+
activityAt: activityAt?.toISOString() ?? null,
|
|
490
|
+
stdoutBytes,
|
|
491
|
+
stderrBytes,
|
|
492
|
+
transcriptBytes,
|
|
493
|
+
deltaBytes,
|
|
494
|
+
}));
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
console.log(`Heartbeat updated: ${runId}`);
|
|
498
|
+
}
|
|
499
|
+
});
|
|
500
|
+
/**
|
|
501
|
+
* tx trace stalled - Find or reap stalled running runs.
|
|
502
|
+
*
|
|
503
|
+
* A run is considered stalled when transcript activity has not moved
|
|
504
|
+
* for longer than --transcript-idle-seconds.
|
|
505
|
+
*/
|
|
506
|
+
export const traceStalled = (pos, flags) => Effect.gen(function* () {
|
|
507
|
+
const _ = pos; // reserved for future positional args
|
|
508
|
+
void _;
|
|
509
|
+
const svc = yield* RunHeartbeatService;
|
|
510
|
+
const transcriptIdleSeconds = parseIntOpt(flags, "transcript-idle-seconds", "transcript-idle-seconds") ?? 300;
|
|
511
|
+
const heartbeatLagSeconds = parseIntOpt(flags, "heartbeat-lag-seconds", "heartbeat-lag-seconds");
|
|
512
|
+
const reap = flag(flags, "reap", "kill");
|
|
513
|
+
const dryRun = flag(flags, "dry-run");
|
|
514
|
+
const noResetTask = flag(flags, "no-reset-task");
|
|
515
|
+
if (reap) {
|
|
516
|
+
const results = yield* svc.reapStalled({
|
|
517
|
+
transcriptIdleSeconds,
|
|
518
|
+
heartbeatLagSeconds,
|
|
519
|
+
dryRun,
|
|
520
|
+
resetTask: !noResetTask,
|
|
521
|
+
});
|
|
522
|
+
if (flag(flags, "json")) {
|
|
523
|
+
console.log(toJson(results));
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
if (results.length === 0) {
|
|
527
|
+
console.log("No stalled running runs found.");
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
console.log(`Reaped stalled runs (${results.length}):`);
|
|
531
|
+
for (const row of results) {
|
|
532
|
+
console.log(` ${row.id} [${row.reason}] pid=${row.pid ?? "-"} task=${row.taskId ?? "-"}`);
|
|
533
|
+
console.log(` processTerminated=${row.processTerminated} taskReset=${row.taskReset}`);
|
|
534
|
+
}
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
const results = yield* svc.listStalled({
|
|
538
|
+
transcriptIdleSeconds,
|
|
539
|
+
heartbeatLagSeconds,
|
|
540
|
+
});
|
|
541
|
+
if (flag(flags, "json")) {
|
|
542
|
+
console.log(toJson(results));
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
if (results.length === 0) {
|
|
546
|
+
console.log("No stalled running runs found.");
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
console.log(`Stalled running runs (${results.length}):`);
|
|
550
|
+
for (const row of results) {
|
|
551
|
+
console.log(` ${row.run.id} [${row.reason}] pid=${row.run.pid ?? "-"} task=${row.run.taskId ?? "-"}`);
|
|
552
|
+
console.log(` transcriptIdleSeconds=${row.transcriptIdleSeconds ?? "-"} heartbeatLagSeconds=${row.heartbeatLagSeconds ?? "-"}`);
|
|
553
|
+
}
|
|
554
|
+
});
|
|
443
555
|
/**
|
|
444
556
|
* tx trace errors - Show recent errors across all runs.
|
|
445
557
|
*/
|
|
@@ -454,10 +566,10 @@ export const traceErrors = (_pos, flags) => Effect.gen(function* () {
|
|
|
454
566
|
const failedRuns = db.prepare(`
|
|
455
567
|
SELECT id, task_id, agent, ended_at, error_message
|
|
456
568
|
FROM runs
|
|
457
|
-
WHERE status =
|
|
569
|
+
WHERE status = ? AND ended_at >= ?
|
|
458
570
|
ORDER BY ended_at DESC
|
|
459
571
|
LIMIT ?
|
|
460
|
-
`).all(cutoff, limit);
|
|
572
|
+
`).all("failed", cutoff, limit);
|
|
461
573
|
for (const run of failedRuns) {
|
|
462
574
|
errors.push({
|
|
463
575
|
timestamp: run.ended_at ? new Date(run.ended_at) : new Date(),
|
|
@@ -474,12 +586,12 @@ export const traceErrors = (_pos, flags) => Effect.gen(function* () {
|
|
|
474
586
|
const errorSpans = db.prepare(`
|
|
475
587
|
SELECT timestamp, run_id, task_id, agent, content, metadata, duration_ms
|
|
476
588
|
FROM events
|
|
477
|
-
WHERE event_type =
|
|
589
|
+
WHERE event_type = ?
|
|
590
|
+
AND json_extract(metadata, '$.status') = ?
|
|
478
591
|
AND timestamp >= ?
|
|
479
|
-
AND json_extract(metadata, '$.status') = 'error'
|
|
480
592
|
ORDER BY timestamp DESC
|
|
481
593
|
LIMIT ?
|
|
482
|
-
`).all(cutoff, limit);
|
|
594
|
+
`).all("span", "error", cutoff, limit);
|
|
483
595
|
for (const span of errorSpans) {
|
|
484
596
|
let errorMessage = "Unknown error";
|
|
485
597
|
try {
|
|
@@ -506,10 +618,10 @@ export const traceErrors = (_pos, flags) => Effect.gen(function* () {
|
|
|
506
618
|
const errorEvents = db.prepare(`
|
|
507
619
|
SELECT timestamp, run_id, task_id, agent, content, metadata, duration_ms
|
|
508
620
|
FROM events
|
|
509
|
-
WHERE event_type =
|
|
621
|
+
WHERE event_type = ? AND timestamp >= ?
|
|
510
622
|
ORDER BY timestamp DESC
|
|
511
623
|
LIMIT ?
|
|
512
|
-
`).all(cutoff, limit);
|
|
624
|
+
`).all("error", cutoff, limit);
|
|
513
625
|
for (const event of errorEvents) {
|
|
514
626
|
errors.push({
|
|
515
627
|
timestamp: new Date(event.timestamp),
|
|
@@ -578,6 +690,8 @@ Subcommands:
|
|
|
578
690
|
show <run-id> Show metrics events for a run
|
|
579
691
|
transcript <run-id> Display raw transcript content
|
|
580
692
|
stderr <run-id> Display stderr content
|
|
693
|
+
heartbeat <run-id> Update heartbeat state for a run
|
|
694
|
+
stalled List or reap stalled running runs
|
|
581
695
|
errors Show recent errors across all runs
|
|
582
696
|
|
|
583
697
|
Options:
|
|
@@ -608,6 +722,12 @@ Options:
|
|
|
608
722
|
else if (subcommand === "stderr") {
|
|
609
723
|
yield* traceStderr(pos.slice(1), flags);
|
|
610
724
|
}
|
|
725
|
+
else if (subcommand === "heartbeat") {
|
|
726
|
+
yield* traceHeartbeat(pos.slice(1), flags);
|
|
727
|
+
}
|
|
728
|
+
else if (subcommand === "stalled") {
|
|
729
|
+
yield* traceStalled(pos.slice(1), flags);
|
|
730
|
+
}
|
|
611
731
|
else if (subcommand === "errors") {
|
|
612
732
|
yield* traceErrors(pos.slice(1), flags);
|
|
613
733
|
}
|