fix: enqueue system event on model switch

This commit is contained in:
Peter Steinberger
2025-12-27 01:17:03 +00:00
parent acd3f7dba7
commit 96911d7790
3 changed files with 50 additions and 0 deletions

View File

@@ -28,6 +28,7 @@ import {
extractVerboseDirective,
getReplyFromConfig,
} from "./reply.js";
import { drainSystemEvents } from "../infra/system-events.js";
async function withTempHome<T>(fn: (home: string) => Promise<T>): Promise<T> {
const base = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-reply-"));
@@ -425,6 +426,36 @@ describe("directive parsing", () => {
});
});
it("queues a system event when switching models", async () => {
await withTempHome(async (home) => {
drainSystemEvents();
vi.mocked(runEmbeddedPiAgent).mockReset();
const storePath = path.join(home, "sessions.json");
await getReplyFromConfig(
{ Body: "/model Opus", From: "+1222", To: "+1222" },
{},
{
agent: {
model: "openai/gpt-4.1-mini",
workspace: path.join(home, "clawd"),
allowedModels: ["openai/gpt-4.1-mini", "anthropic/claude-opus-4-5"],
modelAliases: {
Opus: "anthropic/claude-opus-4-5",
},
},
session: { store: storePath },
},
);
const events = drainSystemEvents();
expect(events).toContain(
"Model switched to Opus (anthropic/claude-opus-4-5).",
);
expect(runEmbeddedPiAgent).not.toHaveBeenCalled();
});
});
it("uses model override for inline /model", async () => {
await withTempHome(async (home) => {
const storePath = path.join(home, "sessions.json");