abf2060328
Сессионный флаг standby-mode + управляющий UserPromptSubmit-хук рукопожатия + SessionStart-сброс. Страж if standbyActive в 12 блокирующих хуках; рельсы floor/snapshot/verify-gate не тронуты. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
29 lines
1.2 KiB
JavaScript
29 lines
1.2 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* standby-session-reset — SessionStart-хук штатного режима.
|
|
* При старте КАЖДОЙ сессии снимает часовой standby-mode и метку standby-pending данной сессии —
|
|
* гарантирует, что новая сессия всегда стартует со стеной (не полагается на уникальность sessionId).
|
|
* Fail-quiet: ошибка не ломает старт.
|
|
*/
|
|
import { fileURLToPath } from 'url';
|
|
import { readStdin, parseEventJson, removeSentinel } from './enforce-hook-helpers.mjs';
|
|
|
|
/** Чистая: чистит флаг+pending данной сессии через инъектируемый remove. */
|
|
export function resetSession(sess, remove) {
|
|
remove('standby-mode', sess);
|
|
remove('standby-pending', sess);
|
|
return { reset: true };
|
|
}
|
|
|
|
async function main() {
|
|
try {
|
|
const event = parseEventJson(await readStdin());
|
|
const sess = event.session_id || 'unknown';
|
|
resetSession(sess, removeSentinel);
|
|
} catch { /* fail-quiet — сброс best-effort */ }
|
|
process.stdout.write('{}'); process.exit(0);
|
|
}
|
|
|
|
const isCli = process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1];
|
|
if (isCli) main();
|