Skip to content

Commit 0eb8702

Browse files
authored
fix: resolve env vars in retrieval rerank config (#414)
1 parent 84240b7 commit 0eb8702

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

index.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3929,7 +3929,25 @@ export function parsePluginConfig(value: unknown): PluginConfig {
39293929
? cfg.autoRecallExcludeAgents.filter((id: unknown): id is string => typeof id === "string" && id.trim() !== "")
39303930
: undefined,
39313931
captureAssistant: cfg.captureAssistant === true,
3932-
retrieval: typeof cfg.retrieval === "object" && cfg.retrieval !== null ? cfg.retrieval as any : undefined,
3932+
retrieval:
3933+
typeof cfg.retrieval === "object" && cfg.retrieval !== null
3934+
? (() => {
3935+
const retrieval = { ...(cfg.retrieval as Record<string, unknown>) } as Record<string, unknown>;
3936+
if (typeof retrieval.rerankApiKey === "string") {
3937+
retrieval.rerankApiKey = resolveEnvVars(retrieval.rerankApiKey);
3938+
}
3939+
if (typeof retrieval.rerankEndpoint === "string") {
3940+
retrieval.rerankEndpoint = resolveEnvVars(retrieval.rerankEndpoint);
3941+
}
3942+
if (typeof retrieval.rerankModel === "string") {
3943+
retrieval.rerankModel = resolveEnvVars(retrieval.rerankModel);
3944+
}
3945+
if (typeof retrieval.rerankProvider === "string") {
3946+
retrieval.rerankProvider = resolveEnvVars(retrieval.rerankProvider);
3947+
}
3948+
return retrieval as any;
3949+
})()
3950+
: undefined,
39333951
decay: typeof cfg.decay === "object" && cfg.decay !== null ? cfg.decay as any : undefined,
39343952
tier: typeof cfg.tier === "object" && cfg.tier !== null ? cfg.tier as any : undefined,
39353953
// Smart extraction config (Phase 1)

test/resolve-env-vars-array.test.mjs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,3 +179,34 @@ test("parsePluginConfig rejects empty array apiKey", () => {
179179
/apiKey/,
180180
);
181181
});
182+
183+
test("parsePluginConfig resolves env vars in retrieval rerank config", () => {
184+
process.env.__TEST_RERANK_KEY = "rerank-key-from-env";
185+
process.env.__TEST_RERANK_ENDPOINT = "https://api.jina.ai/v1/rerank";
186+
process.env.__TEST_RERANK_MODEL = "jina-reranker-v2-base-multilingual";
187+
process.env.__TEST_RERANK_PROVIDER = "jina";
188+
try {
189+
const config = parsePluginConfig({
190+
embedding: {
191+
apiKey: "embed-key",
192+
model: "text-embedding-3-small",
193+
},
194+
retrieval: {
195+
rerank: "cross-encoder",
196+
rerankApiKey: "${__TEST_RERANK_KEY}",
197+
rerankEndpoint: "${__TEST_RERANK_ENDPOINT}",
198+
rerankModel: "${__TEST_RERANK_MODEL}",
199+
rerankProvider: "${__TEST_RERANK_PROVIDER}",
200+
},
201+
});
202+
assert.equal(config.retrieval.rerankApiKey, "rerank-key-from-env");
203+
assert.equal(config.retrieval.rerankEndpoint, "https://api.jina.ai/v1/rerank");
204+
assert.equal(config.retrieval.rerankModel, "jina-reranker-v2-base-multilingual");
205+
assert.equal(config.retrieval.rerankProvider, "jina");
206+
} finally {
207+
delete process.env.__TEST_RERANK_KEY;
208+
delete process.env.__TEST_RERANK_ENDPOINT;
209+
delete process.env.__TEST_RERANK_MODEL;
210+
delete process.env.__TEST_RERANK_PROVIDER;
211+
}
212+
});

0 commit comments

Comments
 (0)