runspec-node 0.21.0 → 0.22.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/loader.js +5 -0
- package/dist/loader.js.map +1 -1
- package/dist/logging_setup.d.ts.map +1 -1
- package/dist/logging_setup.js +50 -4
- package/dist/logging_setup.js.map +1 -1
- package/dist/models.d.ts +3 -0
- package/dist/models.d.ts.map +1 -1
- package/package.json +8 -2
- package/src/loader.ts +5 -0
- package/src/logging_setup.ts +51 -3
- package/src/models.ts +3 -0
- package/tests/test_loader.test.ts +30 -2
- package/tests/test_logging_setup.test.ts +64 -6
package/dist/loader.js
CHANGED
|
@@ -71,10 +71,15 @@ function normaliseLogging(raw) {
|
|
|
71
71
|
// or `RUNSPEC_NO_SUMMARY=1`.
|
|
72
72
|
if (raw === undefined)
|
|
73
73
|
return undefined;
|
|
74
|
+
// `store` selects the file layout: 'single' = one rotating {runnable}.log;
|
|
75
|
+
// 'per-run' = one file per invocation. Unknown values fall back to 'single'
|
|
76
|
+
// — the schema check flags typos; runtime stays lenient.
|
|
77
|
+
const store = String(raw['store'] ?? 'single');
|
|
74
78
|
return {
|
|
75
79
|
rotate: String(raw['rotate'] ?? 'midnight'),
|
|
76
80
|
keep: Number(raw['keep'] ?? 7),
|
|
77
81
|
summary: raw['summary'] !== undefined ? Boolean(raw['summary']) : true,
|
|
82
|
+
store: store === 'per-run' ? 'per-run' : 'single',
|
|
78
83
|
};
|
|
79
84
|
}
|
|
80
85
|
function normaliseRunnables(raw) {
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,0BAeC;AAnBD,uCAAyB;AACzB,yCAA+C;AAG/C,SAAgB,OAAO,CAAC,UAAkB;IACxC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAA,iBAAS,EAAC,OAAO,CAA4B,CAAC;IAE1D,MAAM,YAAY,GAA4C,EAAE,CAAC;IACjE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7F,YAAY,CAAC,GAAG,CAAC,GAAG,KAAgC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;QACzE,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,GAA4B;IACnD,OAAO;QACL,eAAe,EAAG,GAAG,CAAC,kBAAkB,CAAwB,IAAI,SAAS;QAC7E,IAAI,EAAE,GAAG,CAAC,MAAM,CAAuB;QACvC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC;QACtC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAwC,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAwC;IAChE,wEAAwE;IACxE,2EAA2E;IAC3E,qEAAqE;IACrE,0EAA0E;IAC1E,+BAA+B;IAC/B,EAAE;IACF,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,6BAA6B;IAC7B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC;QAC3C,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging_setup.d.ts","sourceRoot":"","sources":["../src/logging_setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"logging_setup.d.ts","sourceRoot":"","sources":["../src/logging_setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAa9C,QAAA,MAAM,kBAAkB,uBAAuB,CAAC;AAIhD,QAAA,MAAM,gBAAgB,sBAAsB,CAAC;AAc7C,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAwED,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM;IAEzC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC1D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IACzD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC5D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IACzD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAC1D,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAE7D,OAAO,CAAC,KAAK;CASd;AAeD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO9C;AAoJD,iBAAS,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAU9E;AAkKD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAiCrC;AAqBD,+EAA+E;AAC/E,iBAAS,kBAAkB,CAAC,GAAG,EAAE,KAAK,GAAG,aAAa,CAKrD;AAED;;;;GAIG;AACH,iBAAS,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAUlE;AAsBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAqBhD;AAkCD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CA2DpE;AAID,wBAAgB,aAAa,IAAI,IAAI,CASpC;AAED,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
|
package/dist/logging_setup.js
CHANGED
|
@@ -50,10 +50,15 @@ exports.formatCompactTrace = formatCompactTrace;
|
|
|
50
50
|
const fs = __importStar(require("fs"));
|
|
51
51
|
const path = __importStar(require("path"));
|
|
52
52
|
const os = __importStar(require("os"));
|
|
53
|
+
const crypto_1 = require("crypto");
|
|
53
54
|
// ── internal state ────────────────────────────────────────────────────────────
|
|
54
55
|
let _configured = false;
|
|
55
56
|
const _loggers = new Map();
|
|
56
57
|
const _handlers = [];
|
|
58
|
+
// UUID4 assigned at configureLogging() time, injected into every file record as
|
|
59
|
+
// extra.run_id (SPEC §run_id). Separates interleaved runs in a shared log, and
|
|
60
|
+
// matches the run_id token in a per-run filename.
|
|
61
|
+
let _runId = null;
|
|
57
62
|
const RUN_SUMMARY_LOGGER = 'runspec.runsummary';
|
|
58
63
|
exports.RUN_SUMMARY_LOGGER = RUN_SUMMARY_LOGGER;
|
|
59
64
|
// Uncaught exceptions are emitted on this dedicated logger so the file handler
|
|
@@ -154,8 +159,11 @@ function formatJson(record) {
|
|
|
154
159
|
obj['exc'] = record.error.stack ?? record.error.message;
|
|
155
160
|
if (record.excStructured)
|
|
156
161
|
obj['exc_structured'] = record.excStructured;
|
|
157
|
-
|
|
158
|
-
|
|
162
|
+
// run_id rides in extra on every file record (console output omits it — that
|
|
163
|
+
// handler uses formatConsole). Mirrors Python's _RunIdFilter.
|
|
164
|
+
if (record.extra || _runId !== null) {
|
|
165
|
+
obj['extra'] = { ...(record.extra ?? {}), ...(_runId !== null ? { run_id: _runId } : {}) };
|
|
166
|
+
}
|
|
159
167
|
return JSON.stringify(obj);
|
|
160
168
|
}
|
|
161
169
|
function formatConsole(record, showTracebacks) {
|
|
@@ -349,6 +357,32 @@ class TimedRotatingFileHandler {
|
|
|
349
357
|
doRotate(this.logPath, this.keep);
|
|
350
358
|
}
|
|
351
359
|
}
|
|
360
|
+
/**
|
|
361
|
+
* Plain append-only handler for `store = "per-run"` — one file per invocation,
|
|
362
|
+
* so there is nothing to rotate (and no rotation race across writers). The file
|
|
363
|
+
* is created lazily on first append, so a run that logs nothing leaves no empty
|
|
364
|
+
* file behind.
|
|
365
|
+
*/
|
|
366
|
+
class PlainFileHandler {
|
|
367
|
+
logPath;
|
|
368
|
+
level;
|
|
369
|
+
constructor(logPath, level) {
|
|
370
|
+
this.logPath = logPath;
|
|
371
|
+
this.level = level;
|
|
372
|
+
}
|
|
373
|
+
emit(record) {
|
|
374
|
+
try {
|
|
375
|
+
fs.appendFileSync(this.logPath, formatJson(record) + '\n', 'utf-8');
|
|
376
|
+
}
|
|
377
|
+
catch {
|
|
378
|
+
// never disrupt
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
/** Compact UTC stamp for per-run filenames: `YYYYMMDDThhmmssZ`. */
|
|
383
|
+
function _perRunStamp(d) {
|
|
384
|
+
return d.toISOString().replace(/[-:]/g, '').replace(/\.\d{3}Z$/, 'Z');
|
|
385
|
+
}
|
|
352
386
|
// ── size/rotate parser ────────────────────────────────────────────────────────
|
|
353
387
|
const SIZE_RE = /^(\d+(?:\.\d+)?)\s*(KB|MB|GB)$/i;
|
|
354
388
|
const SIZE_MULT = { KB: 1024, MB: 1024 ** 2, GB: 1024 ** 3 };
|
|
@@ -635,11 +669,22 @@ function configureLogging(opts) {
|
|
|
635
669
|
const debug = opts.debug ?? false;
|
|
636
670
|
_debug = debug;
|
|
637
671
|
const floor = debug ? LEVEL_NUM['debug'] : LEVEL_NUM['info'];
|
|
672
|
+
// Unique ID for this invocation — injected into every file record (formatJson)
|
|
673
|
+
// and reused as the per-run filename token so file run_id == record run_id.
|
|
674
|
+
_runId = (0, crypto_1.randomUUID)();
|
|
638
675
|
_handlers.push(new StdoutHandler(floor, debug));
|
|
639
676
|
_handlers.push(new StderrHandler(debug));
|
|
640
677
|
const logDir = resolveLogDir(opts.configPath);
|
|
641
|
-
|
|
642
|
-
|
|
678
|
+
if (opts.logCfg.store === 'per-run') {
|
|
679
|
+
// One file per invocation — multi-writer safe (no shared file, so no
|
|
680
|
+
// rotation race). rotate/keep are inert; retention is `runspec logs`.
|
|
681
|
+
const logPath = path.join(logDir, `${opts.runnableName}.${_perRunStamp(new Date())}.${_runId}.log`);
|
|
682
|
+
_handlers.push(new PlainFileHandler(logPath, floor));
|
|
683
|
+
}
|
|
684
|
+
else {
|
|
685
|
+
const logPath = path.join(logDir, `${opts.runnableName}.log`);
|
|
686
|
+
_handlers.push(makeFileHandler(logPath, opts.logCfg.rotate, opts.logCfg.keep, floor));
|
|
687
|
+
}
|
|
643
688
|
// Always attach the counter — cost is one dict increment per log call.
|
|
644
689
|
// Only the exit hook + state population are conditional on summary mode.
|
|
645
690
|
const counter = new RunSummaryCounter();
|
|
@@ -674,6 +719,7 @@ function configureLogging(opts) {
|
|
|
674
719
|
function _resetForTest() {
|
|
675
720
|
_configured = false;
|
|
676
721
|
_debug = false;
|
|
722
|
+
_runId = null;
|
|
677
723
|
_loggers.clear();
|
|
678
724
|
_handlers.length = 0;
|
|
679
725
|
_summaryState = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging_setup.js","sourceRoot":"","sources":["../src/logging_setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logging_setup.js","sourceRoot":"","sources":["../src/logging_setup.ts"],"names":[],"mappings":"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"}
|
package/dist/models.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ export interface LoggingConfig {
|
|
|
2
2
|
rotate: string;
|
|
3
3
|
keep: number;
|
|
4
4
|
summary: boolean;
|
|
5
|
+
/** Log file layout: 'single' (default, one rotating {runnable}.log) or
|
|
6
|
+
* 'per-run' (one {runnable}.{utc-ts}.{run_id}.log per invocation). */
|
|
7
|
+
store?: string;
|
|
5
8
|
}
|
|
6
9
|
export interface RawConfig {
|
|
7
10
|
autonomyDefault: string;
|
package/dist/models.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "runspec-node",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Node/TypeScript language pack for runspec",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -13,7 +13,13 @@
|
|
|
13
13
|
"typecheck": "tsc --noEmit",
|
|
14
14
|
"clean": "rm -rf dist"
|
|
15
15
|
},
|
|
16
|
-
"keywords": [
|
|
16
|
+
"keywords": [
|
|
17
|
+
"runspec",
|
|
18
|
+
"cli",
|
|
19
|
+
"arguments",
|
|
20
|
+
"agents",
|
|
21
|
+
"mcp"
|
|
22
|
+
],
|
|
17
23
|
"author": "Jason Finestone",
|
|
18
24
|
"license": "MIT",
|
|
19
25
|
"repository": {
|
package/src/loader.ts
CHANGED
|
@@ -40,10 +40,15 @@ function normaliseLogging(raw: Record<string, unknown> | undefined): LoggingConf
|
|
|
40
40
|
// log-event counts by level. Suppress per-invocation with `--no-summary`
|
|
41
41
|
// or `RUNSPEC_NO_SUMMARY=1`.
|
|
42
42
|
if (raw === undefined) return undefined;
|
|
43
|
+
// `store` selects the file layout: 'single' = one rotating {runnable}.log;
|
|
44
|
+
// 'per-run' = one file per invocation. Unknown values fall back to 'single'
|
|
45
|
+
// — the schema check flags typos; runtime stays lenient.
|
|
46
|
+
const store = String(raw['store'] ?? 'single');
|
|
43
47
|
return {
|
|
44
48
|
rotate: String(raw['rotate'] ?? 'midnight'),
|
|
45
49
|
keep: Number(raw['keep'] ?? 7),
|
|
46
50
|
summary: raw['summary'] !== undefined ? Boolean(raw['summary']) : true,
|
|
51
|
+
store: store === 'per-run' ? 'per-run' : 'single',
|
|
47
52
|
};
|
|
48
53
|
}
|
|
49
54
|
|
package/src/logging_setup.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import * as fs from 'fs';
|
|
8
8
|
import * as path from 'path';
|
|
9
9
|
import * as os from 'os';
|
|
10
|
+
import { randomUUID } from 'crypto';
|
|
10
11
|
import type { LoggingConfig } from './models';
|
|
11
12
|
|
|
12
13
|
// ── internal state ────────────────────────────────────────────────────────────
|
|
@@ -15,6 +16,11 @@ let _configured = false;
|
|
|
15
16
|
const _loggers = new Map<string, Logger>();
|
|
16
17
|
const _handlers: Handler[] = [];
|
|
17
18
|
|
|
19
|
+
// UUID4 assigned at configureLogging() time, injected into every file record as
|
|
20
|
+
// extra.run_id (SPEC §run_id). Separates interleaved runs in a shared log, and
|
|
21
|
+
// matches the run_id token in a per-run filename.
|
|
22
|
+
let _runId: string | null = null;
|
|
23
|
+
|
|
18
24
|
const RUN_SUMMARY_LOGGER = 'runspec.runsummary';
|
|
19
25
|
// Uncaught exceptions are emitted on this dedicated logger so the file handler
|
|
20
26
|
// records them while the console handlers drop them by name — console display is
|
|
@@ -171,7 +177,11 @@ function formatJson(record: LogRecord): string {
|
|
|
171
177
|
};
|
|
172
178
|
if (record.error) obj['exc'] = record.error.stack ?? record.error.message;
|
|
173
179
|
if (record.excStructured) obj['exc_structured'] = record.excStructured;
|
|
174
|
-
|
|
180
|
+
// run_id rides in extra on every file record (console output omits it — that
|
|
181
|
+
// handler uses formatConsole). Mirrors Python's _RunIdFilter.
|
|
182
|
+
if (record.extra || _runId !== null) {
|
|
183
|
+
obj['extra'] = { ...(record.extra ?? {}), ...(_runId !== null ? { run_id: _runId } : {}) };
|
|
184
|
+
}
|
|
175
185
|
return JSON.stringify(obj);
|
|
176
186
|
}
|
|
177
187
|
|
|
@@ -343,6 +353,32 @@ class TimedRotatingFileHandler implements Handler {
|
|
|
343
353
|
}
|
|
344
354
|
}
|
|
345
355
|
|
|
356
|
+
/**
|
|
357
|
+
* Plain append-only handler for `store = "per-run"` — one file per invocation,
|
|
358
|
+
* so there is nothing to rotate (and no rotation race across writers). The file
|
|
359
|
+
* is created lazily on first append, so a run that logs nothing leaves no empty
|
|
360
|
+
* file behind.
|
|
361
|
+
*/
|
|
362
|
+
class PlainFileHandler implements Handler {
|
|
363
|
+
constructor(
|
|
364
|
+
private readonly logPath: string,
|
|
365
|
+
readonly level: number,
|
|
366
|
+
) {}
|
|
367
|
+
|
|
368
|
+
emit(record: LogRecord): void {
|
|
369
|
+
try {
|
|
370
|
+
fs.appendFileSync(this.logPath, formatJson(record) + '\n', 'utf-8');
|
|
371
|
+
} catch {
|
|
372
|
+
// never disrupt
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/** Compact UTC stamp for per-run filenames: `YYYYMMDDThhmmssZ`. */
|
|
378
|
+
function _perRunStamp(d: Date): string {
|
|
379
|
+
return d.toISOString().replace(/[-:]/g, '').replace(/\.\d{3}Z$/, 'Z');
|
|
380
|
+
}
|
|
381
|
+
|
|
346
382
|
// ── size/rotate parser ────────────────────────────────────────────────────────
|
|
347
383
|
|
|
348
384
|
const SIZE_RE = /^(\d+(?:\.\d+)?)\s*(KB|MB|GB)$/i;
|
|
@@ -658,12 +694,23 @@ export function configureLogging(opts: ConfigureLoggingOptions): void {
|
|
|
658
694
|
_debug = debug;
|
|
659
695
|
const floor = debug ? LEVEL_NUM['debug'] : LEVEL_NUM['info'];
|
|
660
696
|
|
|
697
|
+
// Unique ID for this invocation — injected into every file record (formatJson)
|
|
698
|
+
// and reused as the per-run filename token so file run_id == record run_id.
|
|
699
|
+
_runId = randomUUID();
|
|
700
|
+
|
|
661
701
|
_handlers.push(new StdoutHandler(floor, debug));
|
|
662
702
|
_handlers.push(new StderrHandler(debug));
|
|
663
703
|
|
|
664
704
|
const logDir = resolveLogDir(opts.configPath);
|
|
665
|
-
|
|
666
|
-
|
|
705
|
+
if (opts.logCfg.store === 'per-run') {
|
|
706
|
+
// One file per invocation — multi-writer safe (no shared file, so no
|
|
707
|
+
// rotation race). rotate/keep are inert; retention is `runspec logs`.
|
|
708
|
+
const logPath = path.join(logDir, `${opts.runnableName}.${_perRunStamp(new Date())}.${_runId}.log`);
|
|
709
|
+
_handlers.push(new PlainFileHandler(logPath, floor));
|
|
710
|
+
} else {
|
|
711
|
+
const logPath = path.join(logDir, `${opts.runnableName}.log`);
|
|
712
|
+
_handlers.push(makeFileHandler(logPath, opts.logCfg.rotate, opts.logCfg.keep, floor));
|
|
713
|
+
}
|
|
667
714
|
|
|
668
715
|
// Always attach the counter — cost is one dict increment per log call.
|
|
669
716
|
// Only the exit hook + state population are conditional on summary mode.
|
|
@@ -706,6 +753,7 @@ export function configureLogging(opts: ConfigureLoggingOptions): void {
|
|
|
706
753
|
export function _resetForTest(): void {
|
|
707
754
|
_configured = false;
|
|
708
755
|
_debug = false;
|
|
756
|
+
_runId = null;
|
|
709
757
|
_loggers.clear();
|
|
710
758
|
_handlers.length = 0;
|
|
711
759
|
_summaryState = null;
|
package/src/models.ts
CHANGED
|
@@ -2,6 +2,9 @@ export interface LoggingConfig {
|
|
|
2
2
|
rotate: string;
|
|
3
3
|
keep: number;
|
|
4
4
|
summary: boolean;
|
|
5
|
+
/** Log file layout: 'single' (default, one rotating {runnable}.log) or
|
|
6
|
+
* 'per-run' (one {runnable}.{utc-ts}.{run_id}.log per invocation). */
|
|
7
|
+
store?: string;
|
|
5
8
|
}
|
|
6
9
|
|
|
7
10
|
export interface RawConfig {
|
|
@@ -178,7 +178,35 @@ test('normalises [config.logging] with defaults', () => {
|
|
|
178
178
|
description = "hi"
|
|
179
179
|
`);
|
|
180
180
|
const raw = loadRaw(file);
|
|
181
|
-
expect(raw.config.logging).toEqual({ rotate: 'midnight', keep: 7, summary: true });
|
|
181
|
+
expect(raw.config.logging).toEqual({ rotate: 'midnight', keep: 7, summary: true, store: 'single' });
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
test('normalises [config.logging] store = per-run', () => {
|
|
185
|
+
const dir = tmpDir();
|
|
186
|
+
const file = path.join(dir, 'runspec.toml');
|
|
187
|
+
fs.writeFileSync(file, `
|
|
188
|
+
[config.logging]
|
|
189
|
+
store = "per-run"
|
|
190
|
+
|
|
191
|
+
[greet]
|
|
192
|
+
description = "hi"
|
|
193
|
+
`);
|
|
194
|
+
const raw = loadRaw(file);
|
|
195
|
+
expect(raw.config.logging?.store).toBe('per-run');
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
test('normalises [config.logging] unknown store falls back to single', () => {
|
|
199
|
+
const dir = tmpDir();
|
|
200
|
+
const file = path.join(dir, 'runspec.toml');
|
|
201
|
+
fs.writeFileSync(file, `
|
|
202
|
+
[config.logging]
|
|
203
|
+
store = "bogus"
|
|
204
|
+
|
|
205
|
+
[greet]
|
|
206
|
+
description = "hi"
|
|
207
|
+
`);
|
|
208
|
+
const raw = loadRaw(file);
|
|
209
|
+
expect(raw.config.logging?.store).toBe('single');
|
|
182
210
|
});
|
|
183
211
|
|
|
184
212
|
test('normalises [config.logging] all fields', () => {
|
|
@@ -194,7 +222,7 @@ summary = false
|
|
|
194
222
|
description = "hi"
|
|
195
223
|
`);
|
|
196
224
|
const raw = loadRaw(file);
|
|
197
|
-
expect(raw.config.logging).toEqual({ rotate: '10 MB', keep: 3, summary: false });
|
|
225
|
+
expect(raw.config.logging).toEqual({ rotate: '10 MB', keep: 3, summary: false, store: 'single' });
|
|
198
226
|
});
|
|
199
227
|
|
|
200
228
|
test('[config.logging] summary defaults to true when omitted', () => {
|
|
@@ -407,17 +407,20 @@ test('extra fields appear under "extra" key in JSON', () => {
|
|
|
407
407
|
getLogger('test').info('connected', { user_id: '42', region: 'eu-west' });
|
|
408
408
|
const content = fs.readFileSync(path.join(dir, 'logs', 'myscript.log'), 'utf-8').trim();
|
|
409
409
|
const record = JSON.parse(content);
|
|
410
|
-
|
|
410
|
+
// run_id is always present on file records (SPEC §run_id); user fields ride alongside.
|
|
411
|
+
expect(record.extra).toMatchObject({ user_id: '42', region: 'eu-west' });
|
|
412
|
+
expect(typeof record.extra.run_id).toBe('string');
|
|
411
413
|
expect(record.message).toBe('connected');
|
|
412
414
|
});
|
|
413
415
|
|
|
414
|
-
test('
|
|
416
|
+
test('run_id is the only extra field when none supplied', () => {
|
|
415
417
|
const dir = tmpDir();
|
|
416
418
|
configureLogging(makeCfg(dir));
|
|
417
419
|
getLogger('test').info('plain message');
|
|
418
420
|
const content = fs.readFileSync(path.join(dir, 'logs', 'myscript.log'), 'utf-8').trim();
|
|
419
421
|
const record = JSON.parse(content);
|
|
420
|
-
expect(record.extra).
|
|
422
|
+
expect(Object.keys(record.extra)).toEqual(['run_id']);
|
|
423
|
+
expect(typeof record.extra.run_id).toBe('string');
|
|
421
424
|
});
|
|
422
425
|
|
|
423
426
|
test('error key extracted from fields, not placed in extra', () => {
|
|
@@ -428,17 +431,17 @@ test('error key extracted from fields, not placed in extra', () => {
|
|
|
428
431
|
const record = JSON.parse(content);
|
|
429
432
|
expect(typeof record.exc).toBe('string');
|
|
430
433
|
expect(record.exc).toContain('oops');
|
|
431
|
-
expect(record.extra).
|
|
434
|
+
expect(record.extra).toMatchObject({ user_id: '42' });
|
|
432
435
|
expect(record.extra?.error).toBeUndefined();
|
|
433
436
|
});
|
|
434
437
|
|
|
435
|
-
test('error-only fields:
|
|
438
|
+
test('error-only fields: extra holds just run_id', () => {
|
|
436
439
|
const dir = tmpDir();
|
|
437
440
|
configureLogging(makeCfg(dir));
|
|
438
441
|
getLogger('test').error('boom', { error: new Error('oops') });
|
|
439
442
|
const content = fs.readFileSync(path.join(dir, 'logs', 'myscript.log'), 'utf-8').trim();
|
|
440
443
|
const record = JSON.parse(content);
|
|
441
|
-
expect(record.extra).
|
|
444
|
+
expect(Object.keys(record.extra)).toEqual(['run_id']);
|
|
442
445
|
expect(typeof record.exc).toBe('string');
|
|
443
446
|
});
|
|
444
447
|
|
|
@@ -473,3 +476,58 @@ test('extra fields appear in console output', () => {
|
|
|
473
476
|
expect(lines.some(l => l.includes('user_id=42'))).toBe(true);
|
|
474
477
|
stdoutWrite.mockRestore();
|
|
475
478
|
});
|
|
479
|
+
|
|
480
|
+
// ── store = "per-run" ───────────────────────────────────────────────────────────
|
|
481
|
+
|
|
482
|
+
const PER_RUN_RE = /^myscript\.\d{8}T\d{6}Z\.[0-9a-fA-F-]{8,}\.log$/;
|
|
483
|
+
|
|
484
|
+
function perRunFile(dir: string): string | undefined {
|
|
485
|
+
return fs.readdirSync(path.join(dir, 'logs')).find(f => PER_RUN_RE.test(f));
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
test('per-run: writes {runnable}.{ts}.{run_id}.log, not {runnable}.log', () => {
|
|
489
|
+
const dir = tmpDir();
|
|
490
|
+
configureLogging(makeCfg(dir, { store: 'per-run' }));
|
|
491
|
+
getLogger('test').info('hi');
|
|
492
|
+
const files = fs.readdirSync(path.join(dir, 'logs'));
|
|
493
|
+
expect(files.some(f => PER_RUN_RE.test(f))).toBe(true);
|
|
494
|
+
expect(files).not.toContain('myscript.log');
|
|
495
|
+
});
|
|
496
|
+
|
|
497
|
+
test('per-run: run_id in filename matches extra.run_id in records', () => {
|
|
498
|
+
const dir = tmpDir();
|
|
499
|
+
configureLogging(makeCfg(dir, { store: 'per-run' }));
|
|
500
|
+
getLogger('test').info('hi');
|
|
501
|
+
const fname = perRunFile(dir)!;
|
|
502
|
+
const fileRunId = fname.replace(/\.log$/, '').split('.').pop();
|
|
503
|
+
const record = JSON.parse(fs.readFileSync(path.join(dir, 'logs', fname), 'utf-8').trim());
|
|
504
|
+
expect(record.extra.run_id).toBe(fileRunId);
|
|
505
|
+
});
|
|
506
|
+
|
|
507
|
+
test('per-run: no rotation even when rotate is set', () => {
|
|
508
|
+
const dir = tmpDir();
|
|
509
|
+
// a tiny size threshold would rotate a single file immediately; per-run must not.
|
|
510
|
+
configureLogging(makeCfg(dir, { store: 'per-run', rotate: '1 KB' }));
|
|
511
|
+
const log = getLogger('test');
|
|
512
|
+
// ~30 × ~60 bytes well exceeds the 1 KB threshold a rotating handler would act on.
|
|
513
|
+
for (let i = 0; i < 30; i++) log.info(`line ${i} ${'x'.repeat(50)}`);
|
|
514
|
+
const files = fs.readdirSync(path.join(dir, 'logs'));
|
|
515
|
+
// exactly one per-run file, and no rotated backups (.log.1 etc.)
|
|
516
|
+
expect(files.filter(f => PER_RUN_RE.test(f))).toHaveLength(1);
|
|
517
|
+
expect(files.some(f => /\.log\.\d+$/.test(f))).toBe(false);
|
|
518
|
+
});
|
|
519
|
+
|
|
520
|
+
test('per-run: no empty file when nothing is logged', () => {
|
|
521
|
+
const dir = tmpDir();
|
|
522
|
+
configureLogging(makeCfg(dir, { store: 'per-run' }));
|
|
523
|
+
// summary is off in makeCfg and we log nothing → lazy append means no file.
|
|
524
|
+
expect(perRunFile(dir)).toBeUndefined();
|
|
525
|
+
});
|
|
526
|
+
|
|
527
|
+
test('default store is single ({runnable}.log)', () => {
|
|
528
|
+
const dir = tmpDir();
|
|
529
|
+
configureLogging(makeCfg(dir)); // no store override
|
|
530
|
+
getLogger('test').info('hi');
|
|
531
|
+
expect(fs.existsSync(path.join(dir, 'logs', 'myscript.log'))).toBe(true);
|
|
532
|
+
expect(perRunFile(dir)).toBeUndefined();
|
|
533
|
+
});
|