diff --git a/package.json b/package.json index 731d02b..62d2847 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "paperclip-adapter-claude-k8s", - "version": "0.1.54", + "version": "0.1.55", "description": "Paperclip adapter plugin that runs Claude Code agents as Kubernetes Jobs", "license": "MIT", "repository": { diff --git a/src/index.ts b/src/index.ts index 0580420..e101622 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,8 @@ export const type = "claude_k8s"; export const label = "Claude (Kubernetes)"; -export const models: undefined = undefined; +import { DIRECT_MODELS, BEDROCK_MODELS, isBedrockEnv } from "./server/models.js"; +export const models = isBedrockEnv() ? BEDROCK_MODELS : DIRECT_MODELS; export const agentConfigurationDoc = `# claude_k8s agent configuration diff --git a/src/server/models.test.ts b/src/server/models.test.ts index 86f7a22..4df6636 100644 --- a/src/server/models.test.ts +++ b/src/server/models.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect, beforeEach, afterEach } from "vitest"; -import { listK8sModels } from "./models.js"; +import { listK8sModels, DIRECT_MODELS, BEDROCK_MODELS } from "./models.js"; describe("listK8sModels", () => { const savedEnv: Record = {}; @@ -50,3 +50,22 @@ describe("listK8sModels", () => { expect(models.some((m) => m.id === "claude-opus-4-7")).toBe(true); }); }); + +describe("static model lists", () => { + it("DIRECT_MODELS is non-empty and has valid ids", () => { + expect(DIRECT_MODELS.length).toBeGreaterThan(0); + for (const m of DIRECT_MODELS) { + expect(typeof m.id).toBe("string"); + expect(m.id.length).toBeGreaterThan(0); + expect(typeof m.label).toBe("string"); + } + }); + + it("BEDROCK_MODELS is non-empty and all ids contain 'anthropic.'", () => { + expect(BEDROCK_MODELS.length).toBeGreaterThan(0); + for (const m of BEDROCK_MODELS) { + expect(m.id).toContain("anthropic."); + expect(typeof m.label).toBe("string"); + } + }); +}); diff --git a/src/server/models.ts b/src/server/models.ts index a153e11..953013b 100644 --- a/src/server/models.ts +++ b/src/server/models.ts @@ -1,6 +1,6 @@ import type { AdapterModel } from "@paperclipai/adapter-utils"; -const DIRECT_MODELS: AdapterModel[] = [ +export const DIRECT_MODELS: AdapterModel[] = [ { id: "claude-opus-4-7", label: "Claude Opus 4.7" }, { id: "claude-opus-4-6", label: "Claude Opus 4.6" }, { id: "claude-sonnet-4-6", label: "Claude Sonnet 4.6" }, @@ -9,7 +9,7 @@ const DIRECT_MODELS: AdapterModel[] = [ { id: "claude-haiku-4-5-20251001", label: "Claude Haiku 4.5" }, ]; -const BEDROCK_MODELS: AdapterModel[] = [ +export const BEDROCK_MODELS: AdapterModel[] = [ { id: "us.anthropic.claude-opus-4-7", label: "Bedrock Opus 4.7" }, { id: "us.anthropic.claude-opus-4-6-v1", label: "Bedrock Opus 4.6" }, { id: "us.anthropic.claude-sonnet-4-6", label: "Bedrock Sonnet 4.6" }, @@ -17,7 +17,7 @@ const BEDROCK_MODELS: AdapterModel[] = [ { id: "us.anthropic.claude-haiku-4-5-20251001-v1:0", label: "Bedrock Haiku 4.5" }, ]; -function isBedrockEnv(): boolean { +export function isBedrockEnv(): boolean { return ( process.env.CLAUDE_CODE_USE_BEDROCK === "1" || process.env.CLAUDE_CODE_USE_BEDROCK === "true" ||