From 989cdad5140c0e699bce06d1bb9235bc82cd7878 Mon Sep 17 00:00:00 2001 From: svemagie <869694+svemagie@users.noreply.github.com> Date: Fri, 27 Mar 2026 21:20:04 +0100 Subject: [PATCH] feat: add fetchModels to ClaudeClient Co-Authored-By: Claude Sonnet 4.6 --- src/ClaudeClient.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/ClaudeClient.ts b/src/ClaudeClient.ts index b7c0587..7cfe89e 100644 --- a/src/ClaudeClient.ts +++ b/src/ClaudeClient.ts @@ -83,4 +83,28 @@ export class ClaudeClient { return response.json.content?.[0]?.text ?? ""; } + + /** Fetch the 3 newest Claude models from the Anthropic Models API. */ + async fetchModels(apiKey: string): Promise<{ id: string; name: string }[]> { + const response = await requestUrl({ + url: "https://api.anthropic.com/v1/models", + method: "GET", + headers: this.headers(apiKey), + throw: false, + }); + + if (response.status >= 400) { + throw new Error(`API Error ${response.status}: ${response.text}`); + } + + const data: { id: string; created: number }[] = response.json.data ?? []; + if (data.length === 0) { + throw new Error("No models returned"); + } + + return data + .sort((a, b) => b.created - a.created) + .slice(0, 3) + .map((m) => ({ id: m.id, name: m.id })); + } }