refactor(plugins): lazy load provider runtime shims
This commit is contained in:
parent
b54e37c71f
commit
74a57ace10
@ -6,7 +6,6 @@ import type { ModelProviderAuthMode, ModelProviderConfig } from "../config/types
|
||||
import { coerceSecretRef } from "../config/types.secrets.js";
|
||||
import { getShellEnvAppliedKeys } from "../infra/shell-env.js";
|
||||
import { createSubsystemLogger } from "../logging/subsystem.js";
|
||||
import { buildProviderMissingAuthMessageWithPlugin } from "../plugins/provider-runtime.js";
|
||||
import {
|
||||
normalizeOptionalSecretInput,
|
||||
normalizeSecretInput,
|
||||
@ -36,6 +35,14 @@ const AWS_BEARER_ENV = "AWS_BEARER_TOKEN_BEDROCK";
|
||||
const AWS_ACCESS_KEY_ENV = "AWS_ACCESS_KEY_ID";
|
||||
const AWS_SECRET_KEY_ENV = "AWS_SECRET_ACCESS_KEY";
|
||||
const AWS_PROFILE_ENV = "AWS_PROFILE";
|
||||
let providerRuntimePromise:
|
||||
| Promise<typeof import("../plugins/provider-runtime.runtime.js")>
|
||||
| undefined;
|
||||
|
||||
function loadProviderRuntime() {
|
||||
providerRuntimePromise ??= import("../plugins/provider-runtime.runtime.js");
|
||||
return providerRuntimePromise;
|
||||
}
|
||||
|
||||
function resolveProviderConfig(
|
||||
cfg: OpenClawConfig | undefined,
|
||||
@ -359,6 +366,7 @@ export async function resolveApiKeyForProvider(params: {
|
||||
return resolveAwsSdkAuthInfo();
|
||||
}
|
||||
|
||||
const { buildProviderMissingAuthMessageWithPlugin } = await loadProviderRuntime();
|
||||
const pluginMissingAuthMessage = buildProviderMissingAuthMessageWithPlugin({
|
||||
provider,
|
||||
config: cfg,
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
import { type OpenClawConfig, loadConfig } from "../config/config.js";
|
||||
import { createSubsystemLogger } from "../logging/subsystem.js";
|
||||
import { augmentModelCatalogWithProviderPlugins } from "../plugins/provider-runtime.js";
|
||||
import { resolveOpenClawAgentDir } from "./agent-paths.js";
|
||||
import { shouldSuppressBuiltInModel } from "./model-suppression.js";
|
||||
import { ensureOpenClawModelsJson } from "./models-config.js";
|
||||
|
||||
const log = createSubsystemLogger("model-catalog");
|
||||
@ -33,9 +31,23 @@ let modelCatalogPromise: Promise<ModelCatalogEntry[]> | null = null;
|
||||
let hasLoggedModelCatalogError = false;
|
||||
const defaultImportPiSdk = () => import("./pi-model-discovery-runtime.js");
|
||||
let importPiSdk = defaultImportPiSdk;
|
||||
let providerRuntimePromise:
|
||||
| Promise<typeof import("../plugins/provider-runtime.runtime.js")>
|
||||
| undefined;
|
||||
let modelSuppressionPromise: Promise<typeof import("./model-suppression.runtime.js")> | undefined;
|
||||
|
||||
const NON_PI_NATIVE_MODEL_PROVIDERS = new Set(["kilocode"]);
|
||||
|
||||
function loadProviderRuntime() {
|
||||
providerRuntimePromise ??= import("../plugins/provider-runtime.runtime.js");
|
||||
return providerRuntimePromise;
|
||||
}
|
||||
|
||||
function loadModelSuppression() {
|
||||
modelSuppressionPromise ??= import("./model-suppression.runtime.js");
|
||||
return modelSuppressionPromise;
|
||||
}
|
||||
|
||||
function normalizeConfiguredModelInput(input: unknown): ModelInputType[] | undefined {
|
||||
if (!Array.isArray(input)) {
|
||||
return undefined;
|
||||
@ -160,6 +172,8 @@ export async function loadModelCatalog(params?: {
|
||||
// will keep failing until restart).
|
||||
const piSdk = await importPiSdk();
|
||||
const agentDir = resolveOpenClawAgentDir();
|
||||
const [{ shouldSuppressBuiltInModel }, { augmentModelCatalogWithProviderPlugins }] =
|
||||
await Promise.all([loadModelSuppression(), loadProviderRuntime()]);
|
||||
const { join } = await import("node:path");
|
||||
const authStorage = piSdk.discoverAuthStorage(agentDir);
|
||||
const registry = new (piSdk.ModelRegistry as unknown as {
|
||||
|
||||
1
src/agents/model-suppression.runtime.ts
Normal file
1
src/agents/model-suppression.runtime.ts
Normal file
@ -0,0 +1 @@
|
||||
export { shouldSuppressBuiltInModel } from "./model-suppression.js";
|
||||
4
src/plugins/provider-runtime.runtime.ts
Normal file
4
src/plugins/provider-runtime.runtime.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export {
|
||||
augmentModelCatalogWithProviderPlugins,
|
||||
buildProviderMissingAuthMessageWithPlugin,
|
||||
} from "./provider-runtime.js";
|
||||
@ -81,8 +81,9 @@ describe("provider-runtime", () => {
|
||||
displayName: "Demo",
|
||||
windows: [{ label: "Day", usedPercent: 25 }],
|
||||
}));
|
||||
resolvePluginProvidersMock.mockImplementation((params?: { onlyPluginIds?: string[] }) => {
|
||||
if (params?.onlyPluginIds?.includes("openai")) {
|
||||
resolvePluginProvidersMock.mockImplementation((params: unknown) => {
|
||||
const scopedParams = params as { onlyPluginIds?: string[] } | undefined;
|
||||
if (scopedParams?.onlyPluginIds?.includes("openai")) {
|
||||
return [
|
||||
{
|
||||
id: "openai",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user