runspec-node 0.10.0 → 0.11.1
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 -7
- package/dist/loader.js.map +1 -1
- package/dist/logging_setup.d.ts +21 -2
- package/dist/logging_setup.d.ts.map +1 -1
- package/dist/logging_setup.js +79 -23
- package/dist/logging_setup.js.map +1 -1
- package/dist/models.d.ts +0 -1
- package/dist/models.d.ts.map +1 -1
- package/dist/parser.js +14 -14
- package/dist/parser.js.map +1 -1
- package/package.json +1 -1
- package/src/loader.ts +5 -8
- package/src/logging_setup.ts +71 -25
- package/src/models.ts +0 -1
- package/src/parser.ts +14 -14
- package/tests/test_loader.test.ts +2 -17
- package/tests/test_logging_setup.test.ts +128 -48
package/dist/loader.js
CHANGED
|
@@ -64,17 +64,15 @@ function normaliseConfig(raw) {
|
|
|
64
64
|
logging: normaliseLogging(raw['logging']),
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
-
const VALID_LOG_LEVELS = new Set(['debug', 'info', 'warning', 'error', 'critical']);
|
|
68
67
|
function normaliseLogging(raw) {
|
|
68
|
+
// Console routing is fixed: INFO+ → stdout, WARNING+ → stderr. DEBUG is
|
|
69
|
+
// file-only unless the caller passes `--debug`. There is no `level` knob —
|
|
70
|
+
// silencing INFO would break agent responses (stdout is the MCP tool
|
|
71
|
+
// response body), and verbosity for debugging is handled by the `--debug`
|
|
72
|
+
// flag injected at parse time.
|
|
69
73
|
if (raw === undefined)
|
|
70
74
|
return undefined;
|
|
71
|
-
const level = String(raw['level'] ?? 'info').toLowerCase();
|
|
72
|
-
if (!VALID_LOG_LEVELS.has(level)) {
|
|
73
|
-
const sorted = [...VALID_LOG_LEVELS].sort().join(', ');
|
|
74
|
-
throw new Error(`✗ [config.logging] level must be one of: ${sorted}. Got: ${JSON.stringify(level)}`);
|
|
75
|
-
}
|
|
76
75
|
return {
|
|
77
|
-
level,
|
|
78
76
|
rotate: String(raw['rotate'] ?? 'midnight'),
|
|
79
77
|
keep: Number(raw['keep'] ?? 7),
|
|
80
78
|
};
|
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,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAA4C,CAAC;IACtF,MAAM,SAAS,GAAmC,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,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,SAAS;QACT,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAwC,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/logging_setup.d.ts
CHANGED
|
@@ -19,11 +19,30 @@ export declare function getLogger(name: string): Logger;
|
|
|
19
19
|
declare function _periodForDate(d: Date, when: 'daily' | 'midnight' | 'weekly'): string;
|
|
20
20
|
export interface ConfigureLoggingOptions {
|
|
21
21
|
logCfg: LoggingConfig | undefined;
|
|
22
|
-
agent: boolean;
|
|
23
22
|
runnableName: string;
|
|
24
23
|
configPath: string;
|
|
25
|
-
|
|
24
|
+
debug?: boolean;
|
|
26
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Configure handlers from normalised [config.logging]. No-op when logCfg is
|
|
28
|
+
* undefined. Idempotent — second call is silently ignored.
|
|
29
|
+
*
|
|
30
|
+
* Console routing follows Unix stream conventions so a single `logger.X` call
|
|
31
|
+
* works in both CLI mode (terminal output) and agent mode (captured by
|
|
32
|
+
* `runspec serve` as the MCP tool response):
|
|
33
|
+
*
|
|
34
|
+
* INFO → stdout (plain message — reads like a print() call)
|
|
35
|
+
* WARNING+ → stderr (prefixed with the level name)
|
|
36
|
+
*
|
|
37
|
+
* DEBUG is suppressed by default on both stdout and the file. Pass
|
|
38
|
+
* `debug: true` (set by the auto-added `--debug` flag / RUNSPEC_DEBUG env
|
|
39
|
+
* var) to include DEBUG records (and tracebacks on stdout) everywhere.
|
|
40
|
+
* One knob — stdout and file move together. Stderr stays pinned at
|
|
41
|
+
* WARNING regardless.
|
|
42
|
+
*
|
|
43
|
+
* File handler is always JSON; level follows the same `--debug` toggle as
|
|
44
|
+
* stdout (defaults to INFO — keeps third-party DEBUG noise out of the audit log).
|
|
45
|
+
*/
|
|
27
46
|
export declare function configureLogging(opts: ConfigureLoggingOptions): void;
|
|
28
47
|
export declare function _resetForTest(): void;
|
|
29
48
|
export { _periodForDate };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging_setup.d.ts","sourceRoot":"","sources":["../src/logging_setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA4D9C,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;
|
|
1
|
+
{"version":3,"file":"logging_setup.d.ts","sourceRoot":"","sources":["../src/logging_setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA4D9C,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;AAoHD,iBAAS,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAU9E;AAwED,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;CACjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAcpE;AAID,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/logging_setup.js
CHANGED
|
@@ -139,13 +139,19 @@ function formatJson(record) {
|
|
|
139
139
|
obj['extra'] = record.extra;
|
|
140
140
|
return JSON.stringify(obj);
|
|
141
141
|
}
|
|
142
|
-
function
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
142
|
+
function formatConsole(record, showTracebacks) {
|
|
143
|
+
// INFO is plain print; higher levels get a prefix so they stand out.
|
|
144
|
+
// DEBUG (when shown) prepends "DEBUG" so the level is unambiguous on stdout.
|
|
145
|
+
let line;
|
|
146
|
+
if (record.levelNum <= 10) {
|
|
147
|
+
line = `DEBUG ${record.loggerName}: ${record.message}`;
|
|
148
|
+
}
|
|
149
|
+
else if (record.levelNum <= 20) {
|
|
150
|
+
line = record.message;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
line = `${LEVEL_LABEL[record.levelNum] ?? String(record.levelNum)}: ${record.message}`;
|
|
154
|
+
}
|
|
149
155
|
if (record.extra) {
|
|
150
156
|
const pairs = Object.entries(record.extra).map(([k, v]) => `${k}=${v}`).join(' ');
|
|
151
157
|
line += ` {${pairs}}`;
|
|
@@ -154,8 +160,13 @@ function formatHuman(record, showTracebacks) {
|
|
|
154
160
|
line += `\n${record.error.stack ?? record.error.message}`;
|
|
155
161
|
return line;
|
|
156
162
|
}
|
|
157
|
-
// ── console
|
|
158
|
-
|
|
163
|
+
// ── console handlers ──────────────────────────────────────────────────────────
|
|
164
|
+
/**
|
|
165
|
+
* Routes DEBUG/INFO records (i.e. below WARNING) to stdout.
|
|
166
|
+
* Treated as the runnable's primary output — captured as the response body
|
|
167
|
+
* when `runspec serve` invokes the runnable as a subprocess.
|
|
168
|
+
*/
|
|
169
|
+
class StdoutHandler {
|
|
159
170
|
level;
|
|
160
171
|
showTracebacks;
|
|
161
172
|
constructor(level, showTracebacks) {
|
|
@@ -163,8 +174,32 @@ class ConsoleHandler {
|
|
|
163
174
|
this.showTracebacks = showTracebacks;
|
|
164
175
|
}
|
|
165
176
|
emit(record) {
|
|
177
|
+
if (record.levelNum >= 30)
|
|
178
|
+
return; // WARNING+ belongs on stderr
|
|
179
|
+
try {
|
|
180
|
+
process.stdout.write(formatConsole(record, this.showTracebacks) + '\n');
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// never disrupt
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Routes WARNING+ records to stderr (Unix convention for diagnostics).
|
|
189
|
+
* Floor is always WARNING regardless of the configured level — warnings and
|
|
190
|
+
* errors must not be silenced even if the runnable raises the threshold above.
|
|
191
|
+
*/
|
|
192
|
+
class StderrHandler {
|
|
193
|
+
showTracebacks;
|
|
194
|
+
level = 30; // WARNING
|
|
195
|
+
constructor(showTracebacks) {
|
|
196
|
+
this.showTracebacks = showTracebacks;
|
|
197
|
+
}
|
|
198
|
+
emit(record) {
|
|
199
|
+
if (record.levelNum < 30)
|
|
200
|
+
return;
|
|
166
201
|
try {
|
|
167
|
-
process.stderr.write(
|
|
202
|
+
process.stderr.write(formatConsole(record, this.showTracebacks) + '\n');
|
|
168
203
|
}
|
|
169
204
|
catch {
|
|
170
205
|
// never disrupt
|
|
@@ -197,11 +232,12 @@ class SizeRotatingFileHandler {
|
|
|
197
232
|
logPath;
|
|
198
233
|
maxBytes;
|
|
199
234
|
keep;
|
|
200
|
-
level
|
|
201
|
-
constructor(logPath, maxBytes, keep) {
|
|
235
|
+
level;
|
|
236
|
+
constructor(logPath, maxBytes, keep, level) {
|
|
202
237
|
this.logPath = logPath;
|
|
203
238
|
this.maxBytes = maxBytes;
|
|
204
239
|
this.keep = keep;
|
|
240
|
+
this.level = level;
|
|
205
241
|
}
|
|
206
242
|
emit(record) {
|
|
207
243
|
try {
|
|
@@ -238,11 +274,12 @@ class TimedRotatingFileHandler {
|
|
|
238
274
|
logPath;
|
|
239
275
|
when;
|
|
240
276
|
keep;
|
|
241
|
-
level
|
|
242
|
-
constructor(logPath, when, keep) {
|
|
277
|
+
level;
|
|
278
|
+
constructor(logPath, when, keep, level) {
|
|
243
279
|
this.logPath = logPath;
|
|
244
280
|
this.when = when;
|
|
245
281
|
this.keep = keep;
|
|
282
|
+
this.level = level;
|
|
246
283
|
}
|
|
247
284
|
emit(record) {
|
|
248
285
|
try {
|
|
@@ -270,15 +307,15 @@ class TimedRotatingFileHandler {
|
|
|
270
307
|
const SIZE_RE = /^(\d+(?:\.\d+)?)\s*(KB|MB|GB)$/i;
|
|
271
308
|
const SIZE_MULT = { KB: 1024, MB: 1024 ** 2, GB: 1024 ** 3 };
|
|
272
309
|
const TIMED_KEYS = new Set(['daily', 'midnight', 'weekly']);
|
|
273
|
-
function makeFileHandler(logPath, rotate, keep) {
|
|
310
|
+
function makeFileHandler(logPath, rotate, keep, level) {
|
|
274
311
|
const sizeMatch = SIZE_RE.exec(rotate);
|
|
275
312
|
if (sizeMatch) {
|
|
276
313
|
const maxBytes = Math.round(parseFloat(sizeMatch[1]) * SIZE_MULT[sizeMatch[2].toUpperCase()]);
|
|
277
|
-
return new SizeRotatingFileHandler(logPath, maxBytes, keep);
|
|
314
|
+
return new SizeRotatingFileHandler(logPath, maxBytes, keep, level);
|
|
278
315
|
}
|
|
279
316
|
const when = rotate.toLowerCase();
|
|
280
317
|
if (TIMED_KEYS.has(when)) {
|
|
281
|
-
return new TimedRotatingFileHandler(logPath, when, keep);
|
|
318
|
+
return new TimedRotatingFileHandler(logPath, when, keep, level);
|
|
282
319
|
}
|
|
283
320
|
throw new Error(`✗ [config.logging] rotate ${JSON.stringify(rotate)} not recognised.\n` +
|
|
284
321
|
` Valid: '10 MB', '100 KB', '1 GB', 'daily', 'midnight', 'weekly'`);
|
|
@@ -299,17 +336,36 @@ function resolveLogDir(configPath) {
|
|
|
299
336
|
return fallback;
|
|
300
337
|
}
|
|
301
338
|
}
|
|
339
|
+
/**
|
|
340
|
+
* Configure handlers from normalised [config.logging]. No-op when logCfg is
|
|
341
|
+
* undefined. Idempotent — second call is silently ignored.
|
|
342
|
+
*
|
|
343
|
+
* Console routing follows Unix stream conventions so a single `logger.X` call
|
|
344
|
+
* works in both CLI mode (terminal output) and agent mode (captured by
|
|
345
|
+
* `runspec serve` as the MCP tool response):
|
|
346
|
+
*
|
|
347
|
+
* INFO → stdout (plain message — reads like a print() call)
|
|
348
|
+
* WARNING+ → stderr (prefixed with the level name)
|
|
349
|
+
*
|
|
350
|
+
* DEBUG is suppressed by default on both stdout and the file. Pass
|
|
351
|
+
* `debug: true` (set by the auto-added `--debug` flag / RUNSPEC_DEBUG env
|
|
352
|
+
* var) to include DEBUG records (and tracebacks on stdout) everywhere.
|
|
353
|
+
* One knob — stdout and file move together. Stderr stays pinned at
|
|
354
|
+
* WARNING regardless.
|
|
355
|
+
*
|
|
356
|
+
* File handler is always JSON; level follows the same `--debug` toggle as
|
|
357
|
+
* stdout (defaults to INFO — keeps third-party DEBUG noise out of the audit log).
|
|
358
|
+
*/
|
|
302
359
|
function configureLogging(opts) {
|
|
303
360
|
if (!opts.logCfg || _configured)
|
|
304
361
|
return;
|
|
305
|
-
const
|
|
306
|
-
const
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
}
|
|
362
|
+
const debug = opts.debug ?? false;
|
|
363
|
+
const floor = debug ? LEVEL_NUM['debug'] : LEVEL_NUM['info'];
|
|
364
|
+
_handlers.push(new StdoutHandler(floor, debug));
|
|
365
|
+
_handlers.push(new StderrHandler(debug));
|
|
310
366
|
const logDir = resolveLogDir(opts.configPath);
|
|
311
367
|
const logPath = path.join(logDir, `${opts.runnableName}.log`);
|
|
312
|
-
_handlers.push(makeFileHandler(logPath, opts.logCfg.rotate, opts.logCfg.keep));
|
|
368
|
+
_handlers.push(makeFileHandler(logPath, opts.logCfg.rotate, opts.logCfg.keep, floor));
|
|
313
369
|
_configured = true;
|
|
314
370
|
}
|
|
315
371
|
// ── test helper ───────────────────────────────────────────────────────────────
|
|
@@ -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
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,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.js
CHANGED
|
@@ -59,21 +59,22 @@ function parse(opts = {}) {
|
|
|
59
59
|
throw new errors_1.RunSpecError(`✗ Runnable '${name}' not found.\n Available: ${available}\n Config: ${configPath}`);
|
|
60
60
|
}
|
|
61
61
|
let rawScript = (0, inference_1.inferScript)(raw.runnables[name], config.autonomyDefault);
|
|
62
|
-
// Auto-inject --
|
|
63
|
-
|
|
62
|
+
// Auto-inject --debug flag when [config.logging] is present.
|
|
63
|
+
// Without --debug: stdout = INFO+, stderr = WARNING+ (file always = DEBUG).
|
|
64
|
+
// With --debug: stdout also includes DEBUG records and tracebacks.
|
|
65
|
+
if (config.logging && !('debug' in rawScript.args)) {
|
|
64
66
|
rawScript = {
|
|
65
67
|
...rawScript,
|
|
66
68
|
args: {
|
|
67
69
|
...rawScript.args,
|
|
68
|
-
'
|
|
69
|
-
name: '
|
|
70
|
-
type: '
|
|
71
|
-
|
|
72
|
-
default: config.logging.level,
|
|
70
|
+
'debug': {
|
|
71
|
+
name: 'debug',
|
|
72
|
+
type: 'flag',
|
|
73
|
+
default: false,
|
|
73
74
|
required: false,
|
|
74
|
-
description: '
|
|
75
|
+
description: 'Show DEBUG records and tracebacks on stdout.',
|
|
75
76
|
multiple: false,
|
|
76
|
-
env: '
|
|
77
|
+
env: 'RUNSPEC_DEBUG',
|
|
77
78
|
},
|
|
78
79
|
},
|
|
79
80
|
};
|
|
@@ -99,16 +100,15 @@ function parse(opts = {}) {
|
|
|
99
100
|
const coercedValues = coerceValues(parsedValues, activeScript.args ?? {});
|
|
100
101
|
const autonomy = (0, inference_1.effectiveAutonomy)(activeScript.autonomy ?? config.autonomyDefault, parsedValues, activeScript.args ?? {});
|
|
101
102
|
const agent = ['1', 'true', 'yes'].includes((process.env['RUNSPEC_AGENT'] ?? '').toLowerCase());
|
|
102
|
-
const
|
|
103
|
-
? coercedValues['
|
|
104
|
-
:
|
|
103
|
+
const debug = config.logging
|
|
104
|
+
? Boolean(coercedValues['debug'] ?? false)
|
|
105
|
+
: false;
|
|
105
106
|
try {
|
|
106
107
|
(0, logging_setup_1.configureLogging)({
|
|
107
108
|
logCfg: config.logging,
|
|
108
|
-
agent,
|
|
109
109
|
runnableName: name,
|
|
110
110
|
configPath,
|
|
111
|
-
|
|
111
|
+
debug,
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
114
|
catch (e) {
|
package/dist/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,sBAmGC;AAED,4BAEC;AA0ID,8BAyCC;AA3SD,2CAA6B;AAC7B,qCAAsC;AACtC,qCAAmC;AACnC,2CAA6D;AAC7D,mCAAiC;AACjC,2CAA0E;AAC1E,qCAAwC;AACxC,mDAAmD;AAUnD,SAAgB,KAAK,CAAC,OAAqB,EAAE;IAC3C,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IAErF,MAAM,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;IACjG,MAAM,GAAG,GAAG,IAAA,gBAAO,EAAC,UAAU,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAE1B,MAAM,IAAI,GAAG,UAAU,IAAI,aAAa,EAAE,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,qBAAY,CAAC,+DAA+D,CAAC,CAAC;IACnG,IAAI,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,qBAAY,CAAC,sEAAsE,CAAC,CAAC;IAEtH,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;QACpE,MAAM,IAAI,qBAAY,CAAC,gBAAgB,IAAI,+BAA+B,SAAS,gBAAgB,UAAU,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,IAAI,SAAS,GAAG,IAAA,uBAAW,EAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAEzE,2DAA2D;IAC3D,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,SAAS,GAAG;YACV,GAAG,SAAS;YACZ,IAAI,EAAE;gBACJ,GAAG,SAAS,CAAC,IAAI;gBACjB,WAAW,EAAE;oBACX,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;oBAC1D,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;oBAC7B,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,qDAAqD;oBAClE,QAAQ,EAAE,KAAK;oBACf,GAAG,EAAE,mBAAmB;iBACzB;aACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,GAAG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,YAAY,GAAG,SAAS,CAAC;IAC7B,IAAI,WAAW,GAAa,EAAE,CAAC;IAE/B,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC/E,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5D,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC/D,YAAY,GAAG,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAEpE,IAAA,yBAAa,EAAC,IAAA,wBAAY,EAAC,YAAY,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,IAAA,yBAAa,EAAC,IAAA,0BAAc,EAAC,YAAY,EAAE,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IAEvE,MAAM,aAAa,GAAG,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,IAAA,6BAAiB,EAChC,YAAY,CAAC,QAAQ,IAAI,MAAM,CAAC,eAAe,EAC/C,YAAY,EACZ,YAAY,CAAC,IAAI,IAAI,EAAE,CACxB,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAEhG,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO;QACrC,CAAC,CAAE,aAAa,CAAC,WAAW,CAAwB,IAAI,SAAS;QACjE,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,CAAC;QACH,IAAA,gCAAgB,EAAC;YACf,MAAM,EAAE,MAAM,CAAC,OAAO;YACtB,KAAK;YACL,YAAY,EAAE,IAAI;YAClB,UAAU;YACV,gBAAgB;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,qBAAY,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,GAAG,aAAa;QAChB,iBAAiB,EAAE,KAAK;QACxB,kBAAkB,EAAE,IAAI;QACxB,wBAAwB,EAAE,WAAW;QACrC,oBAAoB,EAAE,QAAQ;QAC9B,kBAAkB,EAAE,UAAU;QAC9B,gBAAgB,EAAE,YAAY;QAC9B,IAAI,eAAe,KAAK,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1G,IAAI,oBAAoB,KAAK,OAAO,WAAW,CAAC,CAAC,CAAC;QAClD,IAAI,cAAc,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC5C,CAAC;AAClB,CAAC;AAED,SAAgB,QAAQ,CAAC,OAAqB,EAAE;IAC9C,OAAO,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,IAAc,EAAE,QAAiC;IAClE,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC5B,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC9C,CAAC;IAED,6FAA6F;IAC7F,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC;SAC3C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEzG,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9C,CAAC;IAED,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtB,sDAAsD;QACtD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,WAAW,KAAK,SAAS;gBAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,MAAM;QACR,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxD,CAAC;YACD,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;YAEnC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACpB,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBACjC,MAAM,MAAM,GAAsB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACvD,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACpB,CAAC,EAAE,CAAC;YACN,CAAC;YACD,SAAS;QACX,CAAC;QAED,6DAA6D;QAC7D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,eAAe,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;YACtE,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,KAAK,CAAC;YAChD,eAAe,EAAE,CAAC;QACpB,CAAC;QAED,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB,EAAE,KAAc,EAAE,IAAa;IAClE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAE,OAAqB,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAE,OAAqB,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,MAA+B,EAAE,QAAiC;IAClF,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACtE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,MAA+B,EAAE,QAAiC;IACvF,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACjH,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,MAA+B,EAAE,QAAiC;IACtF,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,cAAM,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,qBAAY,CAAC,MAAO,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,SAAS,CAAC,IAAY,EAAE,MAAkB,EAAE,OAAgB;IAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAE/D,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,OAAO,OAAO,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;gBACxC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACrC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACrG,IAAI,IAAI,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACrC,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC,CAAC;;gBAChF,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,cAAc;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;AAC9D,CAAC"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,sBAmGC;AAED,4BAEC;AA0ID,8BAyCC;AA3SD,2CAA6B;AAC7B,qCAAsC;AACtC,qCAAmC;AACnC,2CAA6D;AAC7D,mCAAiC;AACjC,2CAA0E;AAC1E,qCAAwC;AACxC,mDAAmD;AAUnD,SAAgB,KAAK,CAAC,OAAqB,EAAE;IAC3C,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IAErF,MAAM,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;IACjG,MAAM,GAAG,GAAG,IAAA,gBAAO,EAAC,UAAU,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAE1B,MAAM,IAAI,GAAG,UAAU,IAAI,aAAa,EAAE,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,qBAAY,CAAC,+DAA+D,CAAC,CAAC;IACnG,IAAI,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,qBAAY,CAAC,sEAAsE,CAAC,CAAC;IAEtH,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;QACpE,MAAM,IAAI,qBAAY,CAAC,gBAAgB,IAAI,+BAA+B,SAAS,gBAAgB,UAAU,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,IAAI,SAAS,GAAG,IAAA,uBAAW,EAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAEzE,6DAA6D;IAC7D,4EAA4E;IAC5E,sEAAsE;IACtE,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,SAAS,GAAG;YACV,GAAG,SAAS;YACZ,IAAI,EAAE;gBACJ,GAAG,SAAS,CAAC,IAAI;gBACjB,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,8CAA8C;oBAC3D,QAAQ,EAAE,KAAK;oBACf,GAAG,EAAE,eAAe;iBACrB;aACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,GAAG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,YAAY,GAAG,SAAS,CAAC;IAC7B,IAAI,WAAW,GAAa,EAAE,CAAC;IAE/B,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC/E,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5D,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC/D,YAAY,GAAG,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAEpE,IAAA,yBAAa,EAAC,IAAA,wBAAY,EAAC,YAAY,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,IAAA,yBAAa,EAAC,IAAA,0BAAc,EAAC,YAAY,EAAE,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IAEvE,MAAM,aAAa,GAAG,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,IAAA,6BAAiB,EAChC,YAAY,CAAC,QAAQ,IAAI,MAAM,CAAC,eAAe,EAC/C,YAAY,EACZ,YAAY,CAAC,IAAI,IAAI,EAAE,CACxB,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAEhG,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO;QAC1B,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;QAC1C,CAAC,CAAC,KAAK,CAAC;IAEV,IAAI,CAAC;QACH,IAAA,gCAAgB,EAAC;YACf,MAAM,EAAE,MAAM,CAAC,OAAO;YACtB,YAAY,EAAE,IAAI;YAClB,UAAU;YACV,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,qBAAY,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,GAAG,aAAa;QAChB,iBAAiB,EAAE,KAAK;QACxB,kBAAkB,EAAE,IAAI;QACxB,wBAAwB,EAAE,WAAW;QACrC,oBAAoB,EAAE,QAAQ;QAC9B,kBAAkB,EAAE,UAAU;QAC9B,gBAAgB,EAAE,YAAY;QAC9B,IAAI,eAAe,KAAK,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1G,IAAI,oBAAoB,KAAK,OAAO,WAAW,CAAC,CAAC,CAAC;QAClD,IAAI,cAAc,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC5C,CAAC;AAClB,CAAC;AAED,SAAgB,QAAQ,CAAC,OAAqB,EAAE;IAC9C,OAAO,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,IAAc,EAAE,QAAiC;IAClE,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC5B,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC9C,CAAC;IAED,6FAA6F;IAC7F,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC;SAC3C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEzG,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9C,CAAC;IAED,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtB,sDAAsD;QACtD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,WAAW,KAAK,SAAS;gBAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,MAAM;QACR,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxD,CAAC;YACD,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;YAEnC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACpB,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBACjC,MAAM,MAAM,GAAsB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACvD,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACpB,CAAC,EAAE,CAAC;YACN,CAAC;YACD,SAAS;QACX,CAAC;QAED,6DAA6D;QAC7D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,eAAe,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;YACtE,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,KAAK,CAAC;YAChD,eAAe,EAAE,CAAC;QACpB,CAAC;QAED,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB,EAAE,KAAc,EAAE,IAAa;IAClE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAE,OAAqB,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAE,OAAqB,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,MAA+B,EAAE,QAAiC;IAClF,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACtE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,MAA+B,EAAE,QAAiC;IACvF,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACjH,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,MAA+B,EAAE,QAAiC;IACtF,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,cAAM,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,qBAAY,CAAC,MAAO,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,SAAS,CAAC,IAAY,EAAE,MAAkB,EAAE,OAAgB;IAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAE/B,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAE/D,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,OAAO,OAAO,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;gBACxC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACrC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACrG,IAAI,IAAI,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACrC,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC,CAAC;;gBAChF,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,cAAc;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;AAC9D,CAAC"}
|
package/package.json
CHANGED
package/src/loader.ts
CHANGED
|
@@ -34,17 +34,14 @@ function normaliseConfig(raw: Record<string, unknown>): RawConfig {
|
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
const VALID_LOG_LEVELS = new Set(['debug', 'info', 'warning', 'error', 'critical']);
|
|
38
|
-
|
|
39
37
|
function normaliseLogging(raw: Record<string, unknown> | undefined): LoggingConfig | undefined {
|
|
38
|
+
// Console routing is fixed: INFO+ → stdout, WARNING+ → stderr. DEBUG is
|
|
39
|
+
// file-only unless the caller passes `--debug`. There is no `level` knob —
|
|
40
|
+
// silencing INFO would break agent responses (stdout is the MCP tool
|
|
41
|
+
// response body), and verbosity for debugging is handled by the `--debug`
|
|
42
|
+
// flag injected at parse time.
|
|
40
43
|
if (raw === undefined) return undefined;
|
|
41
|
-
const level = String(raw['level'] ?? 'info').toLowerCase();
|
|
42
|
-
if (!VALID_LOG_LEVELS.has(level)) {
|
|
43
|
-
const sorted = [...VALID_LOG_LEVELS].sort().join(', ');
|
|
44
|
-
throw new Error(`✗ [config.logging] level must be one of: ${sorted}. Got: ${JSON.stringify(level)}`);
|
|
45
|
-
}
|
|
46
44
|
return {
|
|
47
|
-
level,
|
|
48
45
|
rotate: String(raw['rotate'] ?? 'midnight'),
|
|
49
46
|
keep: Number(raw['keep'] ?? 7),
|
|
50
47
|
};
|
package/src/logging_setup.ts
CHANGED
|
@@ -124,13 +124,17 @@ function formatJson(record: LogRecord): string {
|
|
|
124
124
|
return JSON.stringify(obj);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
function
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
function formatConsole(record: LogRecord, showTracebacks: boolean): string {
|
|
128
|
+
// INFO is plain print; higher levels get a prefix so they stand out.
|
|
129
|
+
// DEBUG (when shown) prepends "DEBUG" so the level is unambiguous on stdout.
|
|
130
|
+
let line: string;
|
|
131
|
+
if (record.levelNum <= 10) {
|
|
132
|
+
line = `DEBUG ${record.loggerName}: ${record.message}`;
|
|
133
|
+
} else if (record.levelNum <= 20) {
|
|
134
|
+
line = record.message;
|
|
135
|
+
} else {
|
|
136
|
+
line = `${LEVEL_LABEL[record.levelNum] ?? String(record.levelNum)}: ${record.message}`;
|
|
137
|
+
}
|
|
134
138
|
if (record.extra) {
|
|
135
139
|
const pairs = Object.entries(record.extra).map(([k, v]) => `${k}=${v}`).join(' ');
|
|
136
140
|
line += ` {${pairs}}`;
|
|
@@ -139,14 +143,40 @@ function formatHuman(record: LogRecord, showTracebacks: boolean): string {
|
|
|
139
143
|
return line;
|
|
140
144
|
}
|
|
141
145
|
|
|
142
|
-
// ── console
|
|
146
|
+
// ── console handlers ──────────────────────────────────────────────────────────
|
|
143
147
|
|
|
144
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Routes DEBUG/INFO records (i.e. below WARNING) to stdout.
|
|
150
|
+
* Treated as the runnable's primary output — captured as the response body
|
|
151
|
+
* when `runspec serve` invokes the runnable as a subprocess.
|
|
152
|
+
*/
|
|
153
|
+
class StdoutHandler implements Handler {
|
|
145
154
|
constructor(public readonly level: number, private readonly showTracebacks: boolean) {}
|
|
146
155
|
|
|
147
156
|
emit(record: LogRecord): void {
|
|
157
|
+
if (record.levelNum >= 30) return; // WARNING+ belongs on stderr
|
|
158
|
+
try {
|
|
159
|
+
process.stdout.write(formatConsole(record, this.showTracebacks) + '\n');
|
|
160
|
+
} catch {
|
|
161
|
+
// never disrupt
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Routes WARNING+ records to stderr (Unix convention for diagnostics).
|
|
168
|
+
* Floor is always WARNING regardless of the configured level — warnings and
|
|
169
|
+
* errors must not be silenced even if the runnable raises the threshold above.
|
|
170
|
+
*/
|
|
171
|
+
class StderrHandler implements Handler {
|
|
172
|
+
readonly level = 30; // WARNING
|
|
173
|
+
|
|
174
|
+
constructor(private readonly showTracebacks: boolean) {}
|
|
175
|
+
|
|
176
|
+
emit(record: LogRecord): void {
|
|
177
|
+
if (record.levelNum < 30) return;
|
|
148
178
|
try {
|
|
149
|
-
process.stderr.write(
|
|
179
|
+
process.stderr.write(formatConsole(record, this.showTracebacks) + '\n');
|
|
150
180
|
} catch {
|
|
151
181
|
// never disrupt
|
|
152
182
|
}
|
|
@@ -168,12 +198,11 @@ function doRotate(logPath: string, keep: number): void {
|
|
|
168
198
|
}
|
|
169
199
|
|
|
170
200
|
class SizeRotatingFileHandler implements Handler {
|
|
171
|
-
readonly level = 10; // always DEBUG
|
|
172
|
-
|
|
173
201
|
constructor(
|
|
174
202
|
private readonly logPath: string,
|
|
175
203
|
private readonly maxBytes: number,
|
|
176
204
|
private readonly keep: number,
|
|
205
|
+
readonly level: number,
|
|
177
206
|
) {}
|
|
178
207
|
|
|
179
208
|
emit(record: LogRecord): void {
|
|
@@ -208,12 +237,11 @@ function _periodForDate(d: Date, when: 'daily' | 'midnight' | 'weekly'): string
|
|
|
208
237
|
}
|
|
209
238
|
|
|
210
239
|
class TimedRotatingFileHandler implements Handler {
|
|
211
|
-
readonly level = 10;
|
|
212
|
-
|
|
213
240
|
constructor(
|
|
214
241
|
private readonly logPath: string,
|
|
215
242
|
private readonly when: 'daily' | 'midnight' | 'weekly',
|
|
216
243
|
private readonly keep: number,
|
|
244
|
+
readonly level: number,
|
|
217
245
|
) {}
|
|
218
246
|
|
|
219
247
|
emit(record: LogRecord): void {
|
|
@@ -243,15 +271,15 @@ const SIZE_RE = /^(\d+(?:\.\d+)?)\s*(KB|MB|GB)$/i;
|
|
|
243
271
|
const SIZE_MULT: Record<string, number> = { KB: 1024, MB: 1024 ** 2, GB: 1024 ** 3 };
|
|
244
272
|
const TIMED_KEYS = new Set(['daily', 'midnight', 'weekly']);
|
|
245
273
|
|
|
246
|
-
function makeFileHandler(logPath: string, rotate: string, keep: number): Handler {
|
|
274
|
+
function makeFileHandler(logPath: string, rotate: string, keep: number, level: number): Handler {
|
|
247
275
|
const sizeMatch = SIZE_RE.exec(rotate);
|
|
248
276
|
if (sizeMatch) {
|
|
249
277
|
const maxBytes = Math.round(parseFloat(sizeMatch[1]) * SIZE_MULT[sizeMatch[2].toUpperCase()]);
|
|
250
|
-
return new SizeRotatingFileHandler(logPath, maxBytes, keep);
|
|
278
|
+
return new SizeRotatingFileHandler(logPath, maxBytes, keep, level);
|
|
251
279
|
}
|
|
252
280
|
const when = rotate.toLowerCase();
|
|
253
281
|
if (TIMED_KEYS.has(when)) {
|
|
254
|
-
return new TimedRotatingFileHandler(logPath, when as 'daily' | 'midnight' | 'weekly', keep);
|
|
282
|
+
return new TimedRotatingFileHandler(logPath, when as 'daily' | 'midnight' | 'weekly', keep, level);
|
|
255
283
|
}
|
|
256
284
|
throw new Error(
|
|
257
285
|
`✗ [config.logging] rotate ${JSON.stringify(rotate)} not recognised.\n` +
|
|
@@ -280,25 +308,43 @@ function resolveLogDir(configPath: string): string {
|
|
|
280
308
|
|
|
281
309
|
export interface ConfigureLoggingOptions {
|
|
282
310
|
logCfg: LoggingConfig | undefined;
|
|
283
|
-
agent: boolean;
|
|
284
311
|
runnableName: string;
|
|
285
312
|
configPath: string;
|
|
286
|
-
|
|
313
|
+
debug?: boolean;
|
|
287
314
|
}
|
|
288
315
|
|
|
316
|
+
/**
|
|
317
|
+
* Configure handlers from normalised [config.logging]. No-op when logCfg is
|
|
318
|
+
* undefined. Idempotent — second call is silently ignored.
|
|
319
|
+
*
|
|
320
|
+
* Console routing follows Unix stream conventions so a single `logger.X` call
|
|
321
|
+
* works in both CLI mode (terminal output) and agent mode (captured by
|
|
322
|
+
* `runspec serve` as the MCP tool response):
|
|
323
|
+
*
|
|
324
|
+
* INFO → stdout (plain message — reads like a print() call)
|
|
325
|
+
* WARNING+ → stderr (prefixed with the level name)
|
|
326
|
+
*
|
|
327
|
+
* DEBUG is suppressed by default on both stdout and the file. Pass
|
|
328
|
+
* `debug: true` (set by the auto-added `--debug` flag / RUNSPEC_DEBUG env
|
|
329
|
+
* var) to include DEBUG records (and tracebacks on stdout) everywhere.
|
|
330
|
+
* One knob — stdout and file move together. Stderr stays pinned at
|
|
331
|
+
* WARNING regardless.
|
|
332
|
+
*
|
|
333
|
+
* File handler is always JSON; level follows the same `--debug` toggle as
|
|
334
|
+
* stdout (defaults to INFO — keeps third-party DEBUG noise out of the audit log).
|
|
335
|
+
*/
|
|
289
336
|
export function configureLogging(opts: ConfigureLoggingOptions): void {
|
|
290
337
|
if (!opts.logCfg || _configured) return;
|
|
291
338
|
|
|
292
|
-
const
|
|
293
|
-
const
|
|
339
|
+
const debug = opts.debug ?? false;
|
|
340
|
+
const floor = debug ? LEVEL_NUM['debug'] : LEVEL_NUM['info'];
|
|
294
341
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
}
|
|
342
|
+
_handlers.push(new StdoutHandler(floor, debug));
|
|
343
|
+
_handlers.push(new StderrHandler(debug));
|
|
298
344
|
|
|
299
345
|
const logDir = resolveLogDir(opts.configPath);
|
|
300
346
|
const logPath = path.join(logDir, `${opts.runnableName}.log`);
|
|
301
|
-
_handlers.push(makeFileHandler(logPath, opts.logCfg.rotate, opts.logCfg.keep));
|
|
347
|
+
_handlers.push(makeFileHandler(logPath, opts.logCfg.rotate, opts.logCfg.keep, floor));
|
|
302
348
|
|
|
303
349
|
_configured = true;
|
|
304
350
|
}
|
package/src/models.ts
CHANGED
package/src/parser.ts
CHANGED
|
@@ -33,21 +33,22 @@ export function parse(opts: ParseOptions = {}): ParsedArgs {
|
|
|
33
33
|
|
|
34
34
|
let rawScript = inferScript(raw.runnables[name], config.autonomyDefault);
|
|
35
35
|
|
|
36
|
-
// Auto-inject --
|
|
37
|
-
|
|
36
|
+
// Auto-inject --debug flag when [config.logging] is present.
|
|
37
|
+
// Without --debug: stdout = INFO+, stderr = WARNING+ (file always = DEBUG).
|
|
38
|
+
// With --debug: stdout also includes DEBUG records and tracebacks.
|
|
39
|
+
if (config.logging && !('debug' in rawScript.args)) {
|
|
38
40
|
rawScript = {
|
|
39
41
|
...rawScript,
|
|
40
42
|
args: {
|
|
41
43
|
...rawScript.args,
|
|
42
|
-
'
|
|
43
|
-
name: '
|
|
44
|
-
type: '
|
|
45
|
-
|
|
46
|
-
default: config.logging.level,
|
|
44
|
+
'debug': {
|
|
45
|
+
name: 'debug',
|
|
46
|
+
type: 'flag',
|
|
47
|
+
default: false,
|
|
47
48
|
required: false,
|
|
48
|
-
description: '
|
|
49
|
+
description: 'Show DEBUG records and tracebacks on stdout.',
|
|
49
50
|
multiple: false,
|
|
50
|
-
env: '
|
|
51
|
+
env: 'RUNSPEC_DEBUG',
|
|
51
52
|
},
|
|
52
53
|
},
|
|
53
54
|
};
|
|
@@ -86,17 +87,16 @@ export function parse(opts: ParseOptions = {}): ParsedArgs {
|
|
|
86
87
|
|
|
87
88
|
const agent = ['1', 'true', 'yes'].includes((process.env['RUNSPEC_AGENT'] ?? '').toLowerCase());
|
|
88
89
|
|
|
89
|
-
const
|
|
90
|
-
? (coercedValues['
|
|
91
|
-
:
|
|
90
|
+
const debug = config.logging
|
|
91
|
+
? Boolean(coercedValues['debug'] ?? false)
|
|
92
|
+
: false;
|
|
92
93
|
|
|
93
94
|
try {
|
|
94
95
|
configureLogging({
|
|
95
96
|
logCfg: config.logging,
|
|
96
|
-
agent,
|
|
97
97
|
runnableName: name,
|
|
98
98
|
configPath,
|
|
99
|
-
|
|
99
|
+
debug,
|
|
100
100
|
});
|
|
101
101
|
} catch (e) {
|
|
102
102
|
throw new RunSpecError((e as Error).message);
|
|
@@ -140,13 +140,12 @@ test('normalises [config.logging] with defaults', () => {
|
|
|
140
140
|
const file = path.join(dir, 'runspec.toml');
|
|
141
141
|
fs.writeFileSync(file, `
|
|
142
142
|
[config.logging]
|
|
143
|
-
level = "info"
|
|
144
143
|
|
|
145
144
|
[greet]
|
|
146
145
|
description = "hi"
|
|
147
146
|
`);
|
|
148
147
|
const raw = loadRaw(file);
|
|
149
|
-
expect(raw.config.logging).toEqual({
|
|
148
|
+
expect(raw.config.logging).toEqual({ rotate: 'midnight', keep: 7 });
|
|
150
149
|
});
|
|
151
150
|
|
|
152
151
|
test('normalises [config.logging] all fields', () => {
|
|
@@ -154,7 +153,6 @@ test('normalises [config.logging] all fields', () => {
|
|
|
154
153
|
const file = path.join(dir, 'runspec.toml');
|
|
155
154
|
fs.writeFileSync(file, `
|
|
156
155
|
[config.logging]
|
|
157
|
-
level = "debug"
|
|
158
156
|
rotate = "10 MB"
|
|
159
157
|
keep = 3
|
|
160
158
|
|
|
@@ -162,7 +160,7 @@ keep = 3
|
|
|
162
160
|
description = "hi"
|
|
163
161
|
`);
|
|
164
162
|
const raw = loadRaw(file);
|
|
165
|
-
expect(raw.config.logging).toEqual({
|
|
163
|
+
expect(raw.config.logging).toEqual({ rotate: '10 MB', keep: 3 });
|
|
166
164
|
});
|
|
167
165
|
|
|
168
166
|
test('logging is undefined when section absent', () => {
|
|
@@ -172,16 +170,3 @@ test('logging is undefined when section absent', () => {
|
|
|
172
170
|
const raw = loadRaw(file);
|
|
173
171
|
expect(raw.config.logging).toBeUndefined();
|
|
174
172
|
});
|
|
175
|
-
|
|
176
|
-
test('throws on invalid log level', () => {
|
|
177
|
-
const dir = tmpDir();
|
|
178
|
-
const file = path.join(dir, 'runspec.toml');
|
|
179
|
-
fs.writeFileSync(file, `
|
|
180
|
-
[config.logging]
|
|
181
|
-
level = "verbose"
|
|
182
|
-
|
|
183
|
-
[greet]
|
|
184
|
-
description = "hi"
|
|
185
|
-
`);
|
|
186
|
-
expect(() => loadRaw(file)).toThrow('[config.logging]');
|
|
187
|
-
});
|
|
@@ -14,11 +14,12 @@ function tmpDir(): string {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
function makeCfg(dir: string, overrides: Record<string, unknown> = {}): Parameters<typeof configureLogging>[0] {
|
|
17
|
+
const { debug, ...logOverrides } = overrides as { debug?: boolean } & Record<string, unknown>;
|
|
17
18
|
return {
|
|
18
|
-
logCfg: {
|
|
19
|
-
agent: false,
|
|
19
|
+
logCfg: { rotate: 'midnight', keep: 7, ...logOverrides },
|
|
20
20
|
runnableName: 'myscript',
|
|
21
21
|
configPath: path.join(dir, 'runspec.toml'),
|
|
22
|
+
debug,
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
25
|
|
|
@@ -44,7 +45,7 @@ test('getLogger returns different instances for different names', () => {
|
|
|
44
45
|
|
|
45
46
|
test('no-op when logCfg is undefined', () => {
|
|
46
47
|
const dir = tmpDir();
|
|
47
|
-
configureLogging({ logCfg: undefined,
|
|
48
|
+
configureLogging({ logCfg: undefined, runnableName: 'x', configPath: path.join(dir, 'runspec.toml') });
|
|
48
49
|
// no log file created
|
|
49
50
|
expect(fs.existsSync(path.join(dir, 'logs', 'x.log'))).toBe(false);
|
|
50
51
|
});
|
|
@@ -88,18 +89,30 @@ test('log file contains JSON lines', () => {
|
|
|
88
89
|
expect(typeof parsed.ts).toBe('string');
|
|
89
90
|
});
|
|
90
91
|
|
|
91
|
-
test('file handler
|
|
92
|
+
test('file handler omits DEBUG without the debug flag', () => {
|
|
92
93
|
const dir = tmpDir();
|
|
93
|
-
configureLogging(makeCfg(dir
|
|
94
|
+
configureLogging(makeCfg(dir));
|
|
95
|
+
const log = getLogger('test');
|
|
96
|
+
log.debug('low level detail');
|
|
97
|
+
log.info('info detail');
|
|
98
|
+
const lines = fs.readFileSync(path.join(dir, 'logs', 'myscript.log'), 'utf-8').trim().split('\n');
|
|
99
|
+
expect(lines.some(l => JSON.parse(l).level === 'DEBUG')).toBe(false);
|
|
100
|
+
expect(lines.some(l => JSON.parse(l).level === 'INFO')).toBe(true);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
test('file handler captures DEBUG when debug flag is set', () => {
|
|
104
|
+
const dir = tmpDir();
|
|
105
|
+
configureLogging(makeCfg(dir, { debug: true }));
|
|
94
106
|
getLogger('test').debug('low level detail');
|
|
95
107
|
const content = fs.readFileSync(path.join(dir, 'logs', 'myscript.log'), 'utf-8').trim();
|
|
96
108
|
const parsed = JSON.parse(content);
|
|
97
109
|
expect(parsed.level).toBe('DEBUG');
|
|
110
|
+
expect(parsed.message).toBe('low level detail');
|
|
98
111
|
});
|
|
99
112
|
|
|
100
|
-
test('log file captures all levels', () => {
|
|
113
|
+
test('log file captures all levels when debug flag is set', () => {
|
|
101
114
|
const dir = tmpDir();
|
|
102
|
-
configureLogging(makeCfg(dir));
|
|
115
|
+
configureLogging(makeCfg(dir, { debug: true }));
|
|
103
116
|
const log = getLogger('test');
|
|
104
117
|
log.debug('a');
|
|
105
118
|
log.info('b');
|
|
@@ -112,6 +125,21 @@ test('log file captures all levels', () => {
|
|
|
112
125
|
expect(JSON.parse(lines[4]).level).toBe('CRITICAL');
|
|
113
126
|
});
|
|
114
127
|
|
|
128
|
+
test('log file captures INFO and above without debug flag', () => {
|
|
129
|
+
const dir = tmpDir();
|
|
130
|
+
configureLogging(makeCfg(dir));
|
|
131
|
+
const log = getLogger('test');
|
|
132
|
+
log.debug('a');
|
|
133
|
+
log.info('b');
|
|
134
|
+
log.warning('c');
|
|
135
|
+
log.error('d');
|
|
136
|
+
log.critical('e');
|
|
137
|
+
const lines = fs.readFileSync(path.join(dir, 'logs', 'myscript.log'), 'utf-8').trim().split('\n');
|
|
138
|
+
expect(lines).toHaveLength(4);
|
|
139
|
+
expect(JSON.parse(lines[0]).level).toBe('INFO');
|
|
140
|
+
expect(JSON.parse(lines[3]).level).toBe('CRITICAL');
|
|
141
|
+
});
|
|
142
|
+
|
|
115
143
|
test('error field included when Error passed', () => {
|
|
116
144
|
const dir = tmpDir();
|
|
117
145
|
configureLogging(makeCfg(dir));
|
|
@@ -122,57 +150,109 @@ test('error field included when Error passed', () => {
|
|
|
122
150
|
expect(parsed.exc).toContain('something broke');
|
|
123
151
|
});
|
|
124
152
|
|
|
125
|
-
// ──
|
|
153
|
+
// ── stdout/stderr routing ─────────────────────────────────────────────────────
|
|
154
|
+
|
|
155
|
+
function captureStreams() {
|
|
156
|
+
const stdoutLines: string[] = [];
|
|
157
|
+
const stderrLines: string[] = [];
|
|
158
|
+
const stdoutSpy = jest.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
|
|
159
|
+
stdoutLines.push(String(chunk));
|
|
160
|
+
return true;
|
|
161
|
+
});
|
|
162
|
+
const stderrSpy = jest.spyOn(process.stderr, 'write').mockImplementation((chunk) => {
|
|
163
|
+
stderrLines.push(String(chunk));
|
|
164
|
+
return true;
|
|
165
|
+
});
|
|
166
|
+
return {
|
|
167
|
+
stdoutLines, stderrLines,
|
|
168
|
+
restore() { stdoutSpy.mockRestore(); stderrSpy.mockRestore(); },
|
|
169
|
+
};
|
|
170
|
+
}
|
|
126
171
|
|
|
127
|
-
test('
|
|
172
|
+
test('info routes to stdout (plain print, no prefix)', () => {
|
|
128
173
|
const dir = tmpDir();
|
|
129
|
-
const
|
|
130
|
-
configureLogging(
|
|
131
|
-
getLogger('test').info('
|
|
132
|
-
expect(
|
|
133
|
-
|
|
174
|
+
const cap = captureStreams();
|
|
175
|
+
configureLogging(makeCfg(dir));
|
|
176
|
+
getLogger('test').info('hello from info');
|
|
177
|
+
expect(cap.stdoutLines.some(l => l.includes('hello from info'))).toBe(true);
|
|
178
|
+
expect(cap.stderrLines.some(l => l.includes('hello from info'))).toBe(false);
|
|
179
|
+
// INFO format is a plain print — message only, no level prefix, no timestamp
|
|
180
|
+
const line = cap.stdoutLines.find(l => l.includes('hello from info'))!;
|
|
181
|
+
expect(line.trim()).toBe('hello from info');
|
|
182
|
+
cap.restore();
|
|
134
183
|
});
|
|
135
184
|
|
|
136
|
-
test('
|
|
185
|
+
test('warning routes to stderr with WARNING prefix', () => {
|
|
137
186
|
const dir = tmpDir();
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
expect(lines.some(l => l.includes('visible'))).toBe(true);
|
|
146
|
-
stderrWrite.mockRestore();
|
|
187
|
+
const cap = captureStreams();
|
|
188
|
+
configureLogging(makeCfg(dir));
|
|
189
|
+
getLogger('test').warning('heads up');
|
|
190
|
+
expect(cap.stderrLines.some(l => l.includes('heads up'))).toBe(true);
|
|
191
|
+
expect(cap.stdoutLines.some(l => l.includes('heads up'))).toBe(false);
|
|
192
|
+
expect(cap.stderrLines.find(l => l.includes('heads up'))!.trim()).toBe('WARNING: heads up');
|
|
193
|
+
cap.restore();
|
|
147
194
|
});
|
|
148
195
|
|
|
149
|
-
test('
|
|
196
|
+
test('error routes to stderr with ERROR prefix', () => {
|
|
150
197
|
const dir = tmpDir();
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
getLogger('test').info('also below');
|
|
159
|
-
expect(lines).toHaveLength(0);
|
|
160
|
-
stderrWrite.mockRestore();
|
|
198
|
+
const cap = captureStreams();
|
|
199
|
+
configureLogging(makeCfg(dir));
|
|
200
|
+
getLogger('test').error('broke');
|
|
201
|
+
expect(cap.stderrLines.some(l => l.includes('broke'))).toBe(true);
|
|
202
|
+
expect(cap.stdoutLines.some(l => l.includes('broke'))).toBe(false);
|
|
203
|
+
expect(cap.stderrLines.find(l => l.includes('broke'))!.trim()).toBe('ERROR: broke');
|
|
204
|
+
cap.restore();
|
|
161
205
|
});
|
|
162
206
|
|
|
163
|
-
|
|
207
|
+
test('critical routes to stderr with CRITICAL prefix', () => {
|
|
208
|
+
const dir = tmpDir();
|
|
209
|
+
const cap = captureStreams();
|
|
210
|
+
configureLogging(makeCfg(dir));
|
|
211
|
+
getLogger('test').critical('dead');
|
|
212
|
+
expect(cap.stderrLines.find(l => l.includes('dead'))!.trim()).toBe('CRITICAL: dead');
|
|
213
|
+
cap.restore();
|
|
214
|
+
});
|
|
164
215
|
|
|
165
|
-
test('
|
|
216
|
+
test('debug records are silent on both streams by default', () => {
|
|
166
217
|
const dir = tmpDir();
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
218
|
+
const cap = captureStreams();
|
|
219
|
+
configureLogging(makeCfg(dir));
|
|
220
|
+
getLogger('test').debug('not shown');
|
|
221
|
+
expect(cap.stdoutLines).toHaveLength(0);
|
|
222
|
+
expect(cap.stderrLines).toHaveLength(0);
|
|
223
|
+
cap.restore();
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
test('warnings still reach stderr (warnings cannot be silenced)', () => {
|
|
227
|
+
const dir = tmpDir();
|
|
228
|
+
const cap = captureStreams();
|
|
229
|
+
configureLogging(makeCfg(dir));
|
|
230
|
+
getLogger('test').warning('audible');
|
|
231
|
+
expect(cap.stderrLines.some(l => l.includes('audible'))).toBe(true);
|
|
232
|
+
cap.restore();
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
// ── --debug flag ──────────────────────────────────────────────────────────────
|
|
236
|
+
|
|
237
|
+
test('debug flag lowers stdout threshold to DEBUG', () => {
|
|
238
|
+
const dir = tmpDir();
|
|
239
|
+
const cap = captureStreams();
|
|
240
|
+
configureLogging(makeCfg(dir, { debug: true }));
|
|
173
241
|
getLogger('test').debug('now visible');
|
|
174
|
-
expect(
|
|
175
|
-
|
|
242
|
+
expect(cap.stdoutLines.some(l => l.includes('now visible'))).toBe(true);
|
|
243
|
+
// DEBUG records get a prefix so they're distinguishable from plain INFO output
|
|
244
|
+
expect(cap.stdoutLines.find(l => l.includes('now visible'))!).toMatch(/DEBUG/);
|
|
245
|
+
cap.restore();
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
test('debug flag does not lower the stderr floor below WARNING', () => {
|
|
249
|
+
const dir = tmpDir();
|
|
250
|
+
const cap = captureStreams();
|
|
251
|
+
configureLogging(makeCfg(dir, { debug: true }));
|
|
252
|
+
getLogger('test').info('still on stdout');
|
|
253
|
+
expect(cap.stdoutLines.some(l => l.includes('still on stdout'))).toBe(true);
|
|
254
|
+
expect(cap.stderrLines).toHaveLength(0);
|
|
255
|
+
cap.restore();
|
|
176
256
|
});
|
|
177
257
|
|
|
178
258
|
// ── sensitive data redaction ──────────────────────────────────────────────────
|
|
@@ -377,12 +457,12 @@ test('extra integer fields pass through unredacted', () => {
|
|
|
377
457
|
test('extra fields appear in console output', () => {
|
|
378
458
|
const dir = tmpDir();
|
|
379
459
|
const lines: string[] = [];
|
|
380
|
-
const
|
|
460
|
+
const stdoutWrite = jest.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
|
|
381
461
|
lines.push(String(chunk));
|
|
382
462
|
return true;
|
|
383
463
|
});
|
|
384
|
-
configureLogging(makeCfg(dir
|
|
464
|
+
configureLogging(makeCfg(dir));
|
|
385
465
|
getLogger('test').info('connected', { user_id: '42' });
|
|
386
466
|
expect(lines.some(l => l.includes('user_id=42'))).toBe(true);
|
|
387
|
-
|
|
467
|
+
stdoutWrite.mockRestore();
|
|
388
468
|
});
|