Gateway: per-watch notification switches, model list for new threads, and Ask before acting
Gateway / check (push) Successful in 9s
Gateway / image (push) Successful in 21s

This commit is contained in:
gib committed 2026-11-02 12:02:53 -05:00
1 parent a5222e14e8
commit 3cc7e40852
14 files changed
+472 -20

No files matched your search

+35 -1
View File
@@ -2,7 +2,7 @@ import { describe, expect, it } from "bun:test";
import type { BoundedThread, ThreadShell } from "../src/t3/types.ts";
import type { T3Host } from "../src/t3/host.ts";
import { buildFeed, buildSummary, routeKind, summarize, SummaryCache, trimText } from "../src/views.ts";
import { agentProviders, buildFeed, buildSummary, routeKind, summarize, SummaryCache, trimText } from "../src/views.ts";
const thread = (overrides: Partial<ThreadShell> = {}): ThreadShell => ({
id: "thread-1",
@@ -197,3 +197,37 @@ describe("buildFeed", () => {
expect(feed.recentTotal).toBe(11);
});
});
describe("agentProviders", () => {
const provider = (overrides: object) => ({
instanceId: "claudeAgent",
driver: "claudeAgent",
displayName: "Claude",
enabled: true,
installed: true,
status: "ready",
models: [
{ slug: "claude-opus-5-5", name: "Claude Opus 5.5" },
{ slug: "claude-opus-4", name: "Claude Opus 4", isLegacy: true },
],
...overrides,
});
it("offers ready providers without their legacy models, and says which cannot ask first", () => {
const host = {
serverConfig: {
providers: [
provider({}),
provider({ instanceId: "codex", displayName: undefined, driver: "codex", supportedRuntimeModes: ["full-access"] }),
provider({ instanceId: "off", enabled: false }),
provider({ instanceId: "broken", status: "error" }),
provider({ instanceId: "away", availability: "unavailable" }),
],
},
} as unknown as T3Host;
expect(agentProviders(host)).toEqual([
{ instanceId: "claudeAgent", name: "Claude", canAskFirst: true, models: [{ slug: "claude-opus-5-5", name: "Claude Opus 5.5" }] },
{ instanceId: "codex", name: "codex", canAskFirst: false, models: [{ slug: "claude-opus-5-5", name: "Claude Opus 5.5" }] },
]);
});
});