@cyanautomation/kaseki-agent 1.24.5 → 1.25.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-output-filter.d.ts","sourceRoot":"","sources":["../src/validation-output-filter.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"validation-output-filter.d.ts","sourceRoot":"","sources":["../src/validation-output-filter.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAiLH;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkB5D"}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { createInterface } from 'readline';
|
|
19
19
|
import { basename } from 'path';
|
|
20
|
+
import { appendFileSync } from 'fs';
|
|
20
21
|
function createInitialState() {
|
|
21
22
|
return {
|
|
22
23
|
inCommand: false,
|
|
@@ -183,6 +184,30 @@ export function filterValidationOutput(input) {
|
|
|
183
184
|
* Main: read from stdin and process
|
|
184
185
|
*/
|
|
185
186
|
function main() {
|
|
187
|
+
// Get diagnostics log file from environment
|
|
188
|
+
const diagnosticsLogFile = process.env.FILTER_DIAGNOSTICS_LOG || '/dev/null';
|
|
189
|
+
let linesProcessed = 0;
|
|
190
|
+
let linesOutput = 0;
|
|
191
|
+
let errorsEncountered = [];
|
|
192
|
+
function logDiagnostic(message) {
|
|
193
|
+
try {
|
|
194
|
+
appendFileSync(diagnosticsLogFile, `[${new Date().toISOString()}] ${message}\n`);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
// Silent fail if diagnostics log is unavailable
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Log startup
|
|
201
|
+
logDiagnostic('filter-startup: process started');
|
|
202
|
+
logDiagnostic(`filter-startup: pid=${process.pid}`);
|
|
203
|
+
logDiagnostic(`filter-startup: node_version=${process.version}`);
|
|
204
|
+
logDiagnostic(`filter-startup: argv=${process.argv.join(' ')}`);
|
|
205
|
+
logDiagnostic(`filter-startup: diagnostics_log_file=${diagnosticsLogFile}`);
|
|
206
|
+
logDiagnostic(`filter-startup: stdin_is_tty=${process.stdin.isTTY || false}`);
|
|
207
|
+
// Set exit code to 0 IMMEDIATELY as default.
|
|
208
|
+
// This ensures we always exit with 0, even if something crashes before 'close' fires.
|
|
209
|
+
// This is critical for avoiding SIGPIPE failures in pipelines.
|
|
210
|
+
process.exitCode = 0;
|
|
186
211
|
const state = createInitialState();
|
|
187
212
|
const rl = createInterface({
|
|
188
213
|
input: process.stdin,
|
|
@@ -191,19 +216,34 @@ function main() {
|
|
|
191
216
|
});
|
|
192
217
|
// Handle readline errors (e.g., stdin closed prematurely, encoding issues)
|
|
193
218
|
rl.on('error', (err) => {
|
|
219
|
+
const msg = `readline_error: ${err.message}`;
|
|
194
220
|
// Log to stderr but don't crash - allow graceful shutdown
|
|
195
|
-
console.error(`[validation-output-filter]
|
|
221
|
+
console.error(`[validation-output-filter] ${msg}`);
|
|
222
|
+
logDiagnostic(`filter-error: ${msg}`);
|
|
223
|
+
errorsEncountered.push(msg);
|
|
224
|
+
// Ensure exit code stays at 0
|
|
225
|
+
process.exitCode = 0;
|
|
196
226
|
});
|
|
197
227
|
// Handle stdin close event
|
|
198
228
|
rl.on('close', () => {
|
|
199
|
-
|
|
229
|
+
logDiagnostic(`filter-close: stdin_closed`);
|
|
230
|
+
logDiagnostic(`filter-close: lines_processed=${linesProcessed}`);
|
|
231
|
+
logDiagnostic(`filter-close: lines_output=${linesOutput}`);
|
|
232
|
+
logDiagnostic(`filter-close: errors_encountered=${errorsEncountered.length}`);
|
|
233
|
+
if (errorsEncountered.length > 0) {
|
|
234
|
+
logDiagnostic(`filter-close: errors=${errorsEncountered.join('; ')}`);
|
|
235
|
+
}
|
|
236
|
+
logDiagnostic(`filter-close: exit_code=${process.exitCode}`);
|
|
237
|
+
// Confirm exit with 0 (filter is diagnostic tool, not part of command logic).
|
|
200
238
|
// Internal errors are logged to stderr but don't block the pipeline.
|
|
201
239
|
process.exitCode = 0;
|
|
202
240
|
});
|
|
203
241
|
rl.on('line', (line) => {
|
|
242
|
+
linesProcessed++;
|
|
204
243
|
try {
|
|
205
244
|
const outputLine = processLine(line, state);
|
|
206
245
|
if (outputLine !== null) {
|
|
246
|
+
linesOutput++;
|
|
207
247
|
// Catch any write errors to stdout (e.g., broken pipe from downstream process)
|
|
208
248
|
try {
|
|
209
249
|
console.log(outputLine);
|
|
@@ -215,7 +255,10 @@ function main() {
|
|
|
215
255
|
}
|
|
216
256
|
}
|
|
217
257
|
catch (lineErr) {
|
|
218
|
-
|
|
258
|
+
const errMsg = lineErr instanceof Error ? lineErr.message : String(lineErr);
|
|
259
|
+
console.error(`[validation-output-filter] Error processing line: ${errMsg}`);
|
|
260
|
+
logDiagnostic(`filter-error: line_processing_error: ${errMsg}`);
|
|
261
|
+
errorsEncountered.push(`line_processing_error: ${errMsg}`);
|
|
219
262
|
}
|
|
220
263
|
});
|
|
221
264
|
// Handle stdout/stderr errors (e.g., broken pipe from downstream process)
|
|
@@ -225,8 +268,14 @@ function main() {
|
|
|
225
268
|
stdout.on('error', (err) => {
|
|
226
269
|
// EPIPE is expected when downstream closes; don't treat as error
|
|
227
270
|
if (err.code !== 'EPIPE') {
|
|
271
|
+
const errMsg = `stdout_error: ${err.message}`;
|
|
228
272
|
// Log error but continue; we always exit 0 anyway
|
|
229
|
-
console.error(`[validation-output-filter]
|
|
273
|
+
console.error(`[validation-output-filter] ${errMsg}`);
|
|
274
|
+
logDiagnostic(`filter-error: ${errMsg}`);
|
|
275
|
+
errorsEncountered.push(errMsg);
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
logDiagnostic(`filter-event: stdout_epipe`);
|
|
230
279
|
}
|
|
231
280
|
});
|
|
232
281
|
}
|
|
@@ -234,24 +283,56 @@ function main() {
|
|
|
234
283
|
stderr.on('error', (err) => {
|
|
235
284
|
// Ignore stderr errors; we're already reporting issues
|
|
236
285
|
if (err.code !== 'EPIPE') {
|
|
237
|
-
|
|
286
|
+
const errMsg = `stderr_error: ${err.message}`;
|
|
287
|
+
logDiagnostic(`filter-error: ${errMsg}`);
|
|
288
|
+
errorsEncountered.push(errMsg);
|
|
238
289
|
}
|
|
239
290
|
});
|
|
240
291
|
}
|
|
241
292
|
// Handle process-level errors (uncaught exceptions, unhandled rejections)
|
|
242
293
|
process.on('error', (err) => {
|
|
243
|
-
|
|
244
|
-
|
|
294
|
+
const errMsg = `process_error: ${err.message}`;
|
|
295
|
+
console.error(`[validation-output-filter] ${errMsg}`);
|
|
296
|
+
logDiagnostic(`filter-error: ${errMsg}`);
|
|
297
|
+
errorsEncountered.push(errMsg);
|
|
298
|
+
// Ensure we exit with 0 (filter is diagnostic, errors don't block pipeline)
|
|
299
|
+
process.exitCode = 0;
|
|
245
300
|
});
|
|
246
301
|
process.on('uncaughtException', (err) => {
|
|
247
|
-
|
|
248
|
-
|
|
302
|
+
const errMsg = `uncaught_exception: ${err instanceof Error ? err.message : String(err)}`;
|
|
303
|
+
console.error(`[validation-output-filter] ${errMsg}`);
|
|
304
|
+
logDiagnostic(`filter-error: ${errMsg}`);
|
|
305
|
+
errorsEncountered.push(errMsg);
|
|
306
|
+
// Ensure we exit with 0
|
|
307
|
+
process.exitCode = 0;
|
|
249
308
|
});
|
|
250
309
|
// Handle unhandled promise rejections
|
|
251
310
|
process.on('unhandledRejection', (reason) => {
|
|
252
|
-
|
|
253
|
-
|
|
311
|
+
const errMsg = `unhandled_rejection: ${reason instanceof Error ? reason.message : String(reason)}`;
|
|
312
|
+
console.error(`[validation-output-filter] ${errMsg}`);
|
|
313
|
+
logDiagnostic(`filter-error: ${errMsg}`);
|
|
314
|
+
errorsEncountered.push(errMsg);
|
|
315
|
+
// Ensure we exit with 0
|
|
316
|
+
process.exitCode = 0;
|
|
254
317
|
});
|
|
318
|
+
// Fallback timeout: ensure we exit with 0 after 30 seconds even if something hangs
|
|
319
|
+
// This prevents the filter from hanging indefinitely in edge cases
|
|
320
|
+
const fallbackTimeout = setTimeout(() => {
|
|
321
|
+
const msg = 'fallback_timeout_triggered (30s), forcing exit with code 0';
|
|
322
|
+
console.error(`[validation-output-filter] WARNING: ${msg}`);
|
|
323
|
+
logDiagnostic(`filter-warning: ${msg}`);
|
|
324
|
+
logDiagnostic(`filter-warning: lines_processed_at_timeout=${linesProcessed}`);
|
|
325
|
+
logDiagnostic(`filter-warning: lines_output_at_timeout=${linesOutput}`);
|
|
326
|
+
process.exitCode = 0;
|
|
327
|
+
process.exit(0);
|
|
328
|
+
}, 30000);
|
|
329
|
+
// Clear fallback timeout once readline closes (normal path)
|
|
330
|
+
const originalClose = rl.close.bind(rl);
|
|
331
|
+
rl.close = function () {
|
|
332
|
+
logDiagnostic(`filter-event: closing_readline`);
|
|
333
|
+
clearTimeout(fallbackTimeout);
|
|
334
|
+
return originalClose();
|
|
335
|
+
};
|
|
255
336
|
}
|
|
256
337
|
const entrypoint = process.argv[1] ? basename(process.argv[1]) : '';
|
|
257
338
|
if (entrypoint === 'validation-output-filter.js' || entrypoint === 'validation-output-filter.ts') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-output-filter.js","sourceRoot":"","sources":["../src/validation-output-filter.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"validation-output-filter.js","sourceRoot":"","sources":["../src/validation-output-filter.ts"],"names":[],"mappings":"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"}
|
package/kaseki-agent.sh
CHANGED
|
@@ -49,6 +49,9 @@ VALIDATION_STOPPED_EARLY=false
|
|
|
49
49
|
VALIDATION_COMMANDS_ATTEMPTED=0
|
|
50
50
|
FILTER_STDERR_TAIL=""
|
|
51
51
|
FILTER_STDERR_FILE="/tmp/kaseki-filter-stderr.log"
|
|
52
|
+
VALIDATION_RAW_LOG="/results/validation-raw.log"
|
|
53
|
+
FILTER_DIAGNOSTICS_LOG="/results/filter-diagnostics.log"
|
|
54
|
+
VALIDATION_ENV_LOG="/results/validation-env.log"
|
|
52
55
|
DIFF_NONEMPTY=false
|
|
53
56
|
QUALITY_EXIT=0
|
|
54
57
|
QUALITY_FAILURE_REASON=""
|
|
@@ -2206,6 +2209,24 @@ if [ -f package.json ] && node -e "const p=require('./package.json'); process.ex
|
|
|
2206
2209
|
fi
|
|
2207
2210
|
record_stage_timing "quality checks" "$QUALITY_EXIT" "$(($(date +%s) - stage_start))" "diff_size_bytes=$diff_size"
|
|
2208
2211
|
|
|
2212
|
+
printf '\n==> validation environment\n'
|
|
2213
|
+
log_validation_environment() {
|
|
2214
|
+
{
|
|
2215
|
+
printf '[validation environment] timestamp=%s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
2216
|
+
printf '[validation environment] working_directory=%s\n' "$(pwd 2>&1 || echo '<pwd failed>')"
|
|
2217
|
+
printf '[validation environment] node_version=%s\n' "$(node --version 2>&1 || echo '<node not found>')"
|
|
2218
|
+
printf '[validation environment] npm_version=%s\n' "$(npm --version 2>&1 || echo '<npm not found>')"
|
|
2219
|
+
printf '[validation environment] npm_config_registry=%s\n' "$(npm config get registry 2>/dev/null || echo '<not set>')"
|
|
2220
|
+
printf '[validation environment] npm_config_cache=%s\n' "$(npm config get cache 2>/dev/null || echo '<not set>')"
|
|
2221
|
+
printf '[validation environment] PATH=%s\n' "$PATH"
|
|
2222
|
+
printf '[validation environment] NODE_OPTIONS=%s\n' "${NODE_OPTIONS:-<not set>}"
|
|
2223
|
+
printf '[validation environment] NODE_PATH=%s\n' "${NODE_PATH:-<not set>}"
|
|
2224
|
+
printf '[validation environment] disk_space_available=%s\n' "$(df -h /results 2>/dev/null | tail -1 | awk '{print $4}' || echo '<df failed>')"
|
|
2225
|
+
printf '[validation environment] disk_space_used=%s\n' "$(du -sh /results 2>/dev/null | cut -f1 || echo '<du failed>')"
|
|
2226
|
+
} | tee -a /results/validation.log /results/validation-env.log
|
|
2227
|
+
}
|
|
2228
|
+
log_validation_environment
|
|
2229
|
+
|
|
2209
2230
|
printf '\n==> validation\n'
|
|
2210
2231
|
set_current_stage "validation"
|
|
2211
2232
|
emit_progress "validation" "started"
|
|
@@ -2259,6 +2280,14 @@ else
|
|
|
2259
2280
|
fi
|
|
2260
2281
|
((VALIDATION_COMMANDS_ATTEMPTED++))
|
|
2261
2282
|
emit_event "validation_command_started" "command=$trimmed"
|
|
2283
|
+
# Log command environment state before execution
|
|
2284
|
+
{
|
|
2285
|
+
printf '[validation command] command=%s\n' "$trimmed"
|
|
2286
|
+
printf '[validation command] working_directory=%s\n' "$(pwd 2>&1 || echo '<pwd failed>')"
|
|
2287
|
+
printf '[validation command] node_version=%s\n' "$(node --version 2>&1 || echo '<node not found>')"
|
|
2288
|
+
printf '[validation command] npm_version=%s\n' "$(npm --version 2>&1 || echo '<npm not found>')"
|
|
2289
|
+
printf '[validation command] disk_available=%s\n' "$(df -h /results 2>/dev/null | tail -1 | awk '{print $4}' || echo '<df failed>')"
|
|
2290
|
+
} | tee -a /results/validation-env.log
|
|
2262
2291
|
# Use pipefail to catch errors in any stage of the pipe
|
|
2263
2292
|
set -o pipefail
|
|
2264
2293
|
{
|
|
@@ -2271,7 +2300,7 @@ else
|
|
|
2271
2300
|
command_exit=$?
|
|
2272
2301
|
printf 'exit_code=%s\n' "$command_exit"
|
|
2273
2302
|
exit "$command_exit"
|
|
2274
|
-
} 2>&1 | tee -a /results/validation.log | validation-output-filter 2>>"$FILTER_STDERR_FILE"
|
|
2303
|
+
} 2>&1 | tee -a /results/validation.log /results/validation-raw.log | FILTER_DIAGNOSTICS_LOG="$FILTER_DIAGNOSTICS_LOG" validation-output-filter 2>>"$FILTER_STDERR_FILE"
|
|
2275
2304
|
pipe_statuses=("${PIPESTATUS[@]}")
|
|
2276
2305
|
set +o pipefail
|
|
2277
2306
|
# pipe_statuses[0] = bash command exit code
|
package/package.json
CHANGED