From 291b1f7b3c30ec1c248c0061268c0e8bf6d6e8f2 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Fri, 15 May 2026 22:59:58 +0900 Subject: [PATCH] test(reminder-hooks): clean up compaction regressions --- src/hooks/agent-usage-reminder/hook.ts | 1 - src/hooks/agent-usage-reminder/index.test.ts | 7 ++++++- src/hooks/category-skill-reminder/hook.ts | 1 - 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/hooks/agent-usage-reminder/hook.ts b/src/hooks/agent-usage-reminder/hook.ts index c7dcbef34..aa8c2525b 100644 --- a/src/hooks/agent-usage-reminder/hook.ts +++ b/src/hooks/agent-usage-reminder/hook.ts @@ -120,7 +120,6 @@ export function createAgentUsageReminderHook(_ctx: PluginInput) { resetState(sessionID); } } - }; return { diff --git a/src/hooks/agent-usage-reminder/index.test.ts b/src/hooks/agent-usage-reminder/index.test.ts index 9548f63ee..5fb4530bc 100644 --- a/src/hooks/agent-usage-reminder/index.test.ts +++ b/src/hooks/agent-usage-reminder/index.test.ts @@ -2,6 +2,7 @@ import type { PluginInput } from "@opencode-ai/plugin"; import { afterEach, beforeEach, describe, expect, mock, spyOn, test } from "bun:test"; import { createAgentUsageReminderHook } from "./index"; import { clearSessionAgent, updateSessionAgent, _resetForTesting } from "../../features/claude-code-session-state"; +import { unsafeTestValue } from "../../../test-support/unsafe-test-value"; import * as storage from "./storage"; describe("agent-usage-reminder hook", () => { @@ -23,7 +24,7 @@ describe("agent-usage-reminder hook", () => { }); function createHook() { - return createAgentUsageReminderHook({} as PluginInput); + return createAgentUsageReminderHook(unsafeTestValue({})); } test("caps reminders and does not re-arm after session.compacted", async () => { @@ -89,6 +90,7 @@ describe("agent-usage-reminder hook", () => { }); test("does not re-arm after session.compacted when task delegation already happened", async () => { + // given - an orchestrator session already delegated through task const hook = createHook(); const sessionID = "agent-usage-delegated-session"; updateSessionAgent(sessionID, "Sisyphus"); @@ -96,9 +98,12 @@ describe("agent-usage-reminder hook", () => { const output = { title: "", output: "result", metadata: {} }; await hook["tool.execute.after"]({ tool: "task", sessionID, callID: "1" }, output); + + // when - compaction happens and another target tool runs await hook.event({ event: { type: "session.compacted", properties: { sessionID } } }); await hook["tool.execute.after"]({ tool: "grep", sessionID, callID: "2" }, output); + // then - compaction does not clear delegated state expect(output.output).not.toContain("[Agent Usage Reminder]"); clearSessionAgent(sessionID); diff --git a/src/hooks/category-skill-reminder/hook.ts b/src/hooks/category-skill-reminder/hook.ts index ef5f9cf65..08006ae32 100644 --- a/src/hooks/category-skill-reminder/hook.ts +++ b/src/hooks/category-skill-reminder/hook.ts @@ -126,7 +126,6 @@ export function createCategorySkillReminderHook( sessionStates.delete(sessionID) } } - } return {