Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer


Bilddatei

models-config.plan.ts


products/Sources/formale Sprachen/JAVA/Openclaw/src/agents/models-config.plan.ts

import type { OpenClawConfig } from "../config/types.openclaw.js"; import { isRecord } from "../utils.js"; import { mergeProviders, mergeWithExistingProviderSecrets, type ExistingProviderConfig, } from "./models-config.merge.js"; import { applyNativeStreamingUsageCompat, enforceSourceManagedProviderSecrets, normalizeProviders, resolveImplicitProviders, type ProviderConfig, } from "./models-config.providers.js"; type ModelsConfig = NonNullable; export type ResolveImplicitProvidersForModelsJson = (params: { agentDir: string; config: OpenClawConfig; env: NodeJS.ProcessEnv; explicitProviders: Record; }) => Promise>; export type ModelsJsonPlan = | { action: "skip"; } | { action: "noop"; } | { action: "write"; contents: string; }; export async function resolveProvidersForModelsJsonWithDeps( params: { cfg: OpenClawConfig; agentDir: string; env: NodeJS.ProcessEnv; }, deps?: { resolveImplicitProviders?: ResolveImplicitProvidersForModelsJson; }, ): Promise> { const { cfg, agentDir, env } = params; const explicitProviders = cfg.models?.providers ?? {}; const resolveImplicitProvidersImpl = deps?.resolveImplicitProviders ?? resolveImplicitProviders; const implicitProviders = await resolveImplicitProvidersImpl({ agentDir, config: cfg, env, explicitProviders, }); return mergeProviders({ implicit: implicitProviders, explicit: explicitProviders, }); } function resolveProvidersForMode(params: { mode: NonNullable; existingParsed: unknown; providers: Record; secretRefManagedProviders: ReadonlySet; }): Record { if (params.mode !== "merge") { return params.providers; } const existing = params.existingParsed; if (!isRecord(existing) || !isRecord(existing.providers)) { return params.providers; } const existingProviders = existing.providers as Record< string, NonNullable[string] >; return mergeWithExistingProviderSecrets({ nextProviders: params.providers, existingProviders: existingProviders as Record, secretRefManagedProviders: params.secretRefManagedProviders, }); } export async function planOpenClawModelsJsonWithDeps( params: { cfg: OpenClawConfig; sourceConfigForSecrets?: OpenClawConfig; agentDir: string; env: NodeJS.ProcessEnv; existingRaw: string; existingParsed: unknown; }, deps?: { resolveImplicitProviders?: ResolveImplicitProvidersForModelsJson; }, ): Promise { const { cfg, agentDir, env } = params; const providers = await resolveProvidersForModelsJsonWithDeps({ cfg, agentDir, env }, deps); if (Object.keys(providers).length === 0) { return { action: "skip" }; } const mode = cfg.models?.mode ?? "merge"; const secretRefManagedProviders = new Set(); const normalizedProviders = normalizeProviders({ providers, agentDir, env, secretDefaults: cfg.secrets?.defaults, sourceProviders: params.sourceConfigForSecrets?.models?.providers, sourceSecretDefaults: params.sourceConfigForSecrets?.secrets?.defaults, secretRefManagedProviders, }) ?? providers; const mergedProviders = resolveProvidersForMode({ mode, existingParsed: params.existingParsed, providers: normalizedProviders, secretRefManagedProviders, }); const secretEnforcedProviders = enforceSourceManagedProviderSecrets({ providers: mergedProviders, sourceProviders: params.sourceConfigForSecrets?.models?.providers, sourceSecretDefaults: params.sourceConfigForSecrets?.secrets?.defaults, secretRefManagedProviders, }) ?? mergedProviders; const finalProviders = applyNativeStreamingUsageCompat(secretEnforcedProviders); const nextContents = `${JSON.stringify({ providers: finalProviders }, null, 2)}\n`; if (params.existingRaw === nextContents) { return { action: "noop" }; } return { action: "write", contents: nextContents, }; } export async function planOpenClawModelsJson( params: Parameters[0], ): Promise { return planOpenClawModelsJsonWithDeps(params); }

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126864
#Domains=1897691