Builds out locode's Claude Code plugin parity: MCP servers, slash commands, sub-agents, hooks (12 lifecycle events), and skills, all loadable from a local path or git URL. Also adds image support (read_file, /import), @-mention file autocomplete, a /dashboard stats view, /export with an editable filename prompt, an expanded git tool (reset/stash/merge/rebase/delete_branch), and a redesigned status bar. On top of that, a review pass found and fixed 10 correctness/stability bugs: argument-injection in git reset/merge/rebase (a ref like "--hard" was parsed as a flag), tool-call image results interleaving with native tool_call_id messages and breaking OpenAI-compatible message ordering, backgrounded bash jobs still being silently killed by their original timeout with the kill masked as a clean exit, a SubagentStart hook's block being ignored, the sub-agent timeout clock starting before the hook it should exclude, a template-expansion bug that could re-substitute $1..$9 placeholders, unbounded background-job output buffers, a missing directory-target fallback in /export, and image size caps checked after reading the whole file instead of before. Session saves and exports now go through a shared atomic write-then-rename helper so a crash can't leave a truncated file. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
18 lines
540 B
TypeScript
18 lines
540 B
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import { shouldAutoCompact } from "./loop.js";
|
|
import type { Session } from "./session.js";
|
|
|
|
describe("shouldAutoCompact", () => {
|
|
it("triggers at the session's configured threshold", () => {
|
|
const session = {
|
|
lastContextTokens: 90,
|
|
contextWindow: 100,
|
|
autoCompactThreshold: 0.85,
|
|
} as unknown as Session;
|
|
expect(shouldAutoCompact(session)).toBe(true);
|
|
|
|
session.autoCompactThreshold = 0.95;
|
|
expect(shouldAutoCompact(session)).toBe(false);
|
|
});
|
|
});
|