Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

g1t.sh
46 linesCodeBlameRaw
1import assert from "node:assert/strict";
2import { test } from "node:test";
3
4import { autoOffered, defaultModel, modelLabel, modelOptions } from "./ask-model.ts";
5
6const anthropic = {
7 id: "con_1",
8 provider: "anthropic" as const,
9 models: ["claude-haiku-5-5", "claude-opus-5-5", "claude-sonnet-5-5"],
10 config: {},
11};
12
13test("Auto is the picker's first option and its default", () => {
14 assert.deepEqual(
15 modelOptions(anthropic).map((option) => option.value),
16 ["auto", "claude-haiku-5-5", "claude-opus-5-5", "claude-sonnet-5-5"],
17 );
18 assert.equal(modelOptions(anthropic)[0]!.label, "Auto");
19 // Nothing chosen yet, or another connection than Ask's: Auto.
20 assert.equal(defaultModel(anthropic, null), "auto");
21 assert.equal(defaultModel(anthropic, { connection_id: "con_2", model: "gpt-5", auto: false }), "auto");
22 // Ask's own connection on Auto, as every route that never picked is.
23 assert.equal(defaultModel(anthropic, { connection_id: "con_1", model: null, auto: true }), "auto");
24});
25
26test("an explicit pick stays picked", () => {
27 assert.equal(defaultModel(anthropic, { connection_id: "con_1", model: "claude-opus-5-5", auto: false }), "claude-opus-5-5");
28 // A pick the provider no longer lists falls back to Auto.
29 assert.equal(defaultModel(anthropic, { connection_id: "con_1", model: "claude-2", auto: false }), "auto");
30});
31
32test("a connection that lists no models, or an Azure deployment, has no Auto", () => {
33 const endpoint = { id: "con_3", provider: "openai_endpoint" as const, models: [], config: { model: "qwen3-coder" } };
34 assert.equal(autoOffered(endpoint), false);
35 assert.deepEqual(modelOptions(endpoint), []);
36 assert.equal(defaultModel(endpoint, null), "qwen3-coder");
37 const azure = { id: "con_4", provider: "azure_openai" as const, models: ["gpt-5"], config: { model: "prod-gpt" } };
38 assert.equal(autoOffered(azure), false);
39 assert.equal(defaultModel(azure, { connection_id: "con_4", model: "prod-gpt", auto: false }), "prod-gpt");
40});
41
42test("the chosen model reads as Auto, or by its name", () => {
43 assert.equal(modelLabel({ model: null, auto: true }), "Auto");
44 assert.equal(modelLabel({ model: "claude-sonnet-5-5", auto: false }), "claude-sonnet-5-5");
45 assert.equal(modelLabel(null), "");
46});