test(plugin): run tool output truncation before claude transcript hooks

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-03-09 11:27:58 +09:00
parent 0aae45c95f
commit 4f088c7ab8
2 changed files with 36 additions and 1 deletions

View File

@@ -0,0 +1,35 @@
import { describe, expect, it } from "bun:test"
import { createToolExecuteAfterHandler } from "./tool-execute-after"
describe("createToolExecuteAfterHandler", () => {
it("#given truncator changes output #when tool.execute.after runs #then claudeCodeHooks receives truncated output", async () => {
const callOrder: string[] = []
let claudeSawOutput = ""
const handler = createToolExecuteAfterHandler({
ctx: { directory: "/repo" } as never,
hooks: {
toolOutputTruncator: {
"tool.execute.after": async (_input, output) => {
callOrder.push("truncator")
output.output = "truncated output"
},
},
claudeCodeHooks: {
"tool.execute.after": async (_input, output) => {
callOrder.push("claude")
claudeSawOutput = output.output
},
},
} as never,
})
await handler(
{ tool: "hashline_edit", sessionID: "ses_test", callID: "call_test" },
{ title: "result", output: "original output", metadata: {} }
)
expect(callOrder).toEqual(["truncator", "claude"])
expect(claudeSawOutput).toBe("truncated output")
})
})

View File

@@ -56,8 +56,8 @@ export function createToolExecuteAfterHandler(args: {
}
}
await hooks.claudeCodeHooks?.["tool.execute.after"]?.(input, output)
await hooks.toolOutputTruncator?.["tool.execute.after"]?.(input, output)
await hooks.claudeCodeHooks?.["tool.execute.after"]?.(input, output)
await hooks.preemptiveCompaction?.["tool.execute.after"]?.(input, output)
await hooks.contextWindowMonitor?.["tool.execute.after"]?.(input, output)
await hooks.commentChecker?.["tool.execute.after"]?.(input, output)