#!/usr/bin/env node // SubagentStop:guest sub agent 結束時解除它的 pin(下次啟動要重新 first-touch),並續租。 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 agentId = event.agent_id; const agentType = String(event.agent_type || ""); const isGuest = agentType.includes("persona-guest"); const isSleeper = agentType.includes("persona-sleeper"); if (!agentId || (!isGuest && !isSleeper)) process.exit(0); const data = pl.loadSession(sessionId); const pins = data.pins || {}; const slug = pl.pinOf(data, agentId)?.persona; if (slug !== undefined) { delete pins[agentId]; data.pins = pins; pl.saveSession(sessionId, data); if (isSleeper) { // 睡眠 sub agent 收工:把短期寫入權還掉(就算它中途掛掉,租約 5 分鐘也會自己過期) if (pl.personaExists(slug)) pl.dropSleepLease(slug, sessionId, agentId); } else { const info = (data.guests || {})[slug]; if (info?.room) pl.addGuestLease(slug, sessionId, info.room, data.host || ""); } } respond({ suppressOutput: true });