fix(anthropic-auto-compact): use OpenCode's official compaction mechanism and proper retry

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
This commit is contained in:
YeonGyu-Kim
2025-12-16 21:02:38 +09:00
parent 13a47c5608
commit 407eeb3274
2 changed files with 25 additions and 3 deletions

View File

@@ -15,9 +15,13 @@ type Client = {
body: { messageID: string; partID?: string }
query: { directory: string }
}) => Promise<unknown>
prompt_async: (opts: {
path: { sessionID: string }
body: { parts: Array<{ type: string; text: string }> }
query: { directory: string }
}) => Promise<unknown>
}
tui: {
submitPrompt: (opts: { query: { directory: string } }) => Promise<unknown>
showToast: (opts: {
body: { title: string; message: string; variant: string; duration: number }
}) => Promise<unknown>
@@ -190,7 +194,11 @@ export async function executeCompact(
setTimeout(async () => {
try {
await (client as Client).tui.submitPrompt({ query: { directory } })
await (client as Client).session.prompt_async({
path: { sessionID },
body: { parts: [{ type: "text", text: "Continue" }] },
query: { directory },
})
} catch {}
}, 500)
return
@@ -230,7 +238,11 @@ export async function executeCompact(
setTimeout(async () => {
try {
await (client as Client).tui.submitPrompt({ query: { directory } })
await (client as Client).session.prompt_async({
path: { sessionID },
body: { parts: [{ type: "text", text: "Continue" }] },
query: { directory },
})
} catch {}
}, 500)
return

View File

@@ -21,6 +21,11 @@ interface StoredToolPart {
input: Record<string, unknown>
output?: string
error?: string
time?: {
start: number
end?: number
compacted?: number
}
}
truncated?: boolean
originalSize?: number
@@ -124,6 +129,11 @@ export function truncateToolResult(partPath: string): {
part.originalSize = originalSize
part.state.output = TRUNCATION_MESSAGE
if (!part.state.time) {
part.state.time = { start: Date.now() }
}
part.state.time.compacted = Date.now()
writeFileSync(partPath, JSON.stringify(part, null, 2))
return { success: true, toolName, originalSize }