#!/usr/bin/env node // SessionEnd:釋放人格鎖與所有 guest 租約,人格才能被下一個程序載入。 import { readEvent, respond } from "./_hook.mjs"; import * as pl from "../scripts/persona-lib.mjs"; const event = readEvent(); if (!event) process.exit(0); const sessionId = event.session_id || "unknown"; const data = pl.loadSession(sessionId); const host = data.host; if (host && pl.personaExists(host)) { const state = pl.decayEmotion(pl.loadEmotion(host)); pl.writeJson(pl.emotionPath(host), state); pl.appendJsonl(pl.journalPath(host), { ts: pl.nowIso(), kind: "session-end", session: sessionId.slice(0, 8), mood: pl.mood(state), }); } const released = pl.unbindSession(sessionId); pl.gcRuntime(); const out = { suppressOutput: true }; if (released.host) { out.systemMessage = `[jsc-persona] 已釋放 \`${released.host}\` 的載入鎖` + (released.guests.length ? `,guest:${released.guests.join(", ")}` : ""); } respond(out);