fix: improve claude cli live discovery

This commit is contained in:
Peter Steinberger
2026-04-06 18:48:59 +01:00
parent 226e1afa4d
commit 7ae8a10087
6 changed files with 261 additions and 8 deletions

View File

@@ -12,6 +12,8 @@ function makeProvider(params: {
label?: string;
order?: ProviderDiscoveryOrder;
mode?: "catalog" | "discovery";
aliases?: string[];
hookAliases?: string[];
}): ProviderPlugin {
const hook = {
...(params.order ? { order: params.order } : {}),
@@ -21,6 +23,8 @@ function makeProvider(params: {
id: params.id,
label: params.label ?? params.id,
auth: [],
...(params.aliases ? { aliases: params.aliases } : {}),
...(params.hookAliases ? { hookAliases: params.hookAliases } : {}),
...(params.mode === "discovery" ? { discovery: hook } : { catalog: hook }),
};
}
@@ -154,6 +158,37 @@ describe("normalizePluginDiscoveryResult", () => {
},
},
},
{
name: "maps a single provider result to aliases and hook aliases",
provider: makeProvider({
id: "Anthropic",
aliases: ["anthropic-api"],
hookAliases: ["claude-cli"],
}),
result: {
provider: makeModelProviderConfig({
baseUrl: "https://api.anthropic.com",
api: "anthropic-messages",
}),
},
expected: {
anthropic: {
baseUrl: "https://api.anthropic.com",
api: "anthropic-messages",
models: [],
},
"anthropic-api": {
baseUrl: "https://api.anthropic.com",
api: "anthropic-messages",
models: [],
},
"claude-cli": {
baseUrl: "https://api.anthropic.com",
api: "anthropic-messages",
models: [],
},
},
},
{
name: "normalizes keys for multi-provider discovery results",
provider: makeProvider({ id: "ignored" }),

View File

@@ -62,7 +62,19 @@ export function normalizePluginDiscoveryResult(params: {
}
if ("provider" in result) {
return { [normalizeProviderId(params.provider.id)]: result.provider };
const normalized: Record<string, ModelProviderConfig> = {};
for (const providerId of [
params.provider.id,
...(params.provider.aliases ?? []),
...(params.provider.hookAliases ?? []),
]) {
const normalizedKey = normalizeProviderId(providerId);
if (!normalizedKey) {
continue;
}
normalized[normalizedKey] = result.provider;
}
return normalized;
}
const normalized: Record<string, ModelProviderConfig> = {};