Ensure custom OpenAI Responses providers resolve configured models without requiring registry entries. - update global settings model resolution to preserve custom provider model configuration - adjust engine custom-provider and fn-agent creation paths to avoid false 'model not found' failures - add regression tests for OpenAI Responses custom providers and pi create-fn-agent flows - document the custom provider model behavior and add a changeset for @runfusion/fusion Files changed: .../FN-5833-custom-provider-responses-fix.md | 10 ++++ docs/settings-reference.md | 2 +- packages/core/src/global-settings.ts | 56 +++++++++---------- packages/core/src/index.ts | 2 +- .../custom-providers-openai-responses.test.ts | 64 ++++++++++++++++++++++ .../engine/src/__tests__/custom-providers.test.ts | 33 ++++++++++- .../src/__tests__/pi-create-fn-agent.test.ts | 11 +++- packages/engine/src/custom-providers.ts | 4 +- packages/engine/src/pi.ts | 21 +++++-- 9 files changed, 162 insertions(+), 41 deletions(-) Fusion-Task-Id: FN-5833 Fusion-Task-Lineage: a59481cf-faf5-42b8-97ce-7b3eca27b4fb
16 lines
598 B
TypeScript
16 lines
598 B
TypeScript
import { readFileSync } from "node:fs";
|
|
import { homedir } from "node:os";
|
|
import { join } from "node:path";
|
|
import { resolveGlobalDirForHome, type CustomProvider } from "@fusion/core";
|
|
|
|
export function readCustomProviders(homeDir = homedir()): CustomProvider[] {
|
|
try {
|
|
const settingsPath = join(resolveGlobalDirForHome(homeDir), "settings.json");
|
|
const raw = readFileSync(settingsPath, "utf-8");
|
|
const parsed = JSON.parse(raw) as { customProviders?: CustomProvider[] };
|
|
return Array.isArray(parsed.customProviders) ? parsed.customProviders : [];
|
|
} catch {
|
|
return [];
|
|
}
|
|
}
|