AkurAI Build
Menu

popagent

public

Latest change 5f3336a97ad971230462d4a65cf417942a3647ab - Deduplicate model catalog IDs by AkurAI Build

import { describe, expect, test } from "bun:test";
import { agentRuntimeSettings } from "./agent-runtime-settings";
import { listModelCatalog, normalizeChatRequest, resolveModel } from "./models";

describe("resolveModel", () => {
  test("requires an explicit model id", () => {
    expect(resolveModel("test/model").modelId).toBe("test/model");
  });

  test("resolves an explicit model id", () => {
    expect(resolveModel("cc/claude-sonnet-5").modelId).toBe("cc/claude-sonnet-5");
  });
});

describe("normalizeChatRequest", () => {
  test("merges leading system messages for the local Ornith chat template", () => {
    const body = {
      model: "titan/ornith-1.0-9b-mtp-q4_k_m",
      messages: [
        { role: "system", content: "Agent instructions" },
        { role: "system", content: "Workspace instructions" },
        { role: "user", content: "hi" },
      ],
    };

    expect(normalizeChatRequest(body)).toEqual({
      model: "titan/ornith-1.0-9b-mtp-q4_k_m",
      messages: [
        { role: "system", content: "Agent instructions\n\nWorkspace instructions" },
        { role: "user", content: "hi" },
      ],
    });
  });

  test("preserves multi-system requests for compatible models", () => {
    const body = { model: "cx/gpt-5.6-sol", messages: [
      { role: "system", content: "One" },
      { role: "system", content: "Two" },
    ] };
    expect(normalizeChatRequest(body)).toBe(body);
  });
});

describe("listModelCatalog", () => {
  test("returns context windows for the configured default model", async () => {
    const configured = await agentRuntimeSettings.get();
    const catalog = await listModelCatalog();
    expect(catalog.models).toContain(configured.defaultModel);
    expect(catalog.contextWindows[configured.defaultModel]).toBeGreaterThan(0);
    expect(catalog.models).toEqual([...new Set(catalog.models)]);
  });
});