Files
ECC/scripts/lib/hook-session.js

26 lines
917 B
JavaScript

'use strict';
/**
* Resolve a raw hook session ID from stdin before legacy environment fallbacks.
* Callers must retain their own filename sanitization at the storage boundary.
* @param {string} rawInput - Hook stdin JSON.
* @param {object} env - Environment variables; defaults to the current process.
* @returns {string} A nonblank session ID, or an empty string when unavailable.
*/
function resolveHookSessionId(rawInput, env = process.env) {
let sessionId;
try {
const input = JSON.parse(rawInput);
if (input && typeof input === 'object' && !Array.isArray(input)) {
sessionId = input.session_id;
}
} catch {
// Empty or malformed hook input can still use an environment session ID.
}
return [sessionId, env.ECC_SESSION_ID, env.CLAUDE_SESSION_ID]
.find(value => typeof value === 'string' && value.trim().length > 0) || '';
}
module.exports = { resolveHookSessionId };