fix(runtime): tokenize context compaction budget

This commit is contained in:
ZacharyZhang-NY committed 2026-04-22 16:00:12 -04:00
1 parent 3aaa64ddfd
commit fb6d2a0d77
5 files changed
+55 -19

No files matched your search

@@ -30,6 +30,38 @@ function makeLongTranscript(olderFacts: AgentMessage[]): AgentMessage[] {
}
describe("context compactor tool result facts", () => {
it("uses tokenizer counts so long CJK transcripts compact before provider overflow", () => {
const messages: AgentMessage[] = [
{
role: "user",
content: [{ type: "text", text: "Start the Chinese market launch review." }],
timestamp: 1,
} as AgentMessage,
{
role: "assistant",
content: [{ type: "text", text: "I will keep the plan concise." }],
timestamp: 2,
} as AgentMessage,
{
role: "user",
content: [{ type: "text", text: "请完成市场复盘,保留所有客户反馈与行动项。 ".repeat(8_000) }],
timestamp: 3,
} as AgentMessage,
];
for (let i = 0; i < 42; i += 1) {
messages.push({
role: i % 2 === 0 ? "user" : "assistant",
content: [{ type: "text", text: `recent ${i}` }],
timestamp: 100 + i,
} as AgentMessage);
}
const outcome = compactMessagesIfNeeded(messages);
expect(outcome.changed).toBe(true);
expect(outcome.telemetry?.estimatedTokens).toBeGreaterThanOrEqual(120_000);
});
it("preserves task, approval, message, status, decision, and error facts from tool results", () => {
const messages = makeLongTranscript([
{