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:
35
src/plugin/tool-execute-after.test.ts
Normal file
35
src/plugin/tool-execute-after.test.ts
Normal 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")
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -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.toolOutputTruncator?.["tool.execute.after"]?.(input, output)
|
||||||
|
await hooks.claudeCodeHooks?.["tool.execute.after"]?.(input, output)
|
||||||
await hooks.preemptiveCompaction?.["tool.execute.after"]?.(input, output)
|
await hooks.preemptiveCompaction?.["tool.execute.after"]?.(input, output)
|
||||||
await hooks.contextWindowMonitor?.["tool.execute.after"]?.(input, output)
|
await hooks.contextWindowMonitor?.["tool.execute.after"]?.(input, output)
|
||||||
await hooks.commentChecker?.["tool.execute.after"]?.(input, output)
|
await hooks.commentChecker?.["tool.execute.after"]?.(input, output)
|
||||||
|
|||||||
Reference in New Issue
Block a user