fix(plugins): suppress mirrored provider env warnings

This commit is contained in:
Vincent Koc
2026-05-02 14:31:32 -07:00
parent d68ca425bd
commit 0fbf4636f5
3 changed files with 50 additions and 1 deletions

View File

@@ -6,6 +6,15 @@
"providerAuthEnvVars": {
"brave": ["BRAVE_API_KEY"]
},
"setup": {
"providers": [
{
"id": "brave",
"authMethods": ["api-key"],
"envVars": ["BRAVE_API_KEY"]
}
]
},
"uiHints": {
"webSearch.apiKey": {
"label": "Brave Search API Key",

View File

@@ -923,6 +923,35 @@ describe("loadPluginManifestRegistry", () => {
);
});
it("does not report deprecated providerAuthEnvVars when setup providers mirror env vars", () => {
const dir = makeTempDir();
writeManifest(dir, {
id: "external-openai",
providers: ["openai"],
setup: {
providers: [{ id: "openai", envVars: ["OPENAI_API_KEY"] }],
},
providerAuthEnvVars: {
openai: ["OPENAI_API_KEY"],
},
configSchema: { type: "object" },
});
const registry = loadSingleCandidateRegistry({
idHint: "external-openai",
rootDir: dir,
origin: "global",
});
expect(registry.diagnostics).not.toContainEqual(
expect.objectContaining({
message: expect.stringContaining(
"providerAuthEnvVars is deprecated compatibility metadata",
),
}),
);
});
it("sanitizes manifest-controlled fields in provider auth compatibility diagnostics", () => {
const dir = makeTempDir();
const lineBreak = String.fromCharCode(10);

View File

@@ -425,8 +425,19 @@ function pushProviderAuthEnvVarsCompatDiagnostic(params: {
if (params.record.origin === "bundled" || !params.record.providerAuthEnvVars) {
return;
}
const setupProviderEnvVars = new Map(
(params.record.setup?.providers ?? []).map(
(provider) => [provider.id, new Set(provider.envVars ?? [])] as const,
),
);
const providerIds = Object.entries(params.record.providerAuthEnvVars)
.filter(([providerId, envVars]) => providerId.trim() && envVars.length > 0)
.filter(([providerId, envVars]) => {
if (!providerId.trim() || envVars.length === 0) {
return false;
}
const mirroredEnvVars = setupProviderEnvVars.get(providerId);
return !mirroredEnvVars || envVars.some((envVar) => !mirroredEnvVars.has(envVar));
})
.map(([providerId]) => providerId)
.toSorted((left, right) => left.localeCompare(right));
if (providerIds.length === 0) {