MCPcopy Create free account
hub / github.com/anomalyco/opencode / defaultModelFromConfig

Function defaultModelFromConfig

packages/opencode/src/acp/service.ts:777–794  ·  view source on GitHub ↗
(
  configuredModel: string | undefined,
  providers: Record<ProviderV2.ID, Provider.Info>,
)

Source from the content-addressed store, hash-verified

775}
776
777function defaultModelFromConfig(
778 configuredModel: string | undefined,
779 providers: Record<ProviderV2.ID, Provider.Info>,
780): Directory.DefaultModel | undefined {
781 const configured = configuredModel ? Provider.parseModel(configuredModel) : undefined
782 if (configured && providers[configured.providerID]?.models[configured.modelID]) return configured
783
784 // First-session ACP startup must not scan historical sessions just to infer
785 // a default. Configured model, opencode provider, then sorted best model keep
786 // the protocol response deterministic without extra session/message reads.
787 const opencodeProvider = providers[ProviderV2.ID.make("opencode")]
788 const opencodeModel = opencodeProvider ? Provider.sort(Object.values(opencodeProvider.models))[0] : undefined
789 if (opencodeProvider && opencodeModel) return { providerID: opencodeProvider.id, modelID: opencodeModel.id }
790
791 const best = Provider.sort(Object.values(providers).flatMap((provider) => Object.values(provider.models)))[0]
792 if (best) return { providerID: best.providerID, modelID: best.id }
793 if (configured) return configured
794}
795
796function selectDefaultModel(snapshot: Directory.Snapshot) {
797 if (snapshot.defaultModel) return snapshot.defaultModel

Callers 1

loadDirectorySnapshotFunction · 0.85

Calls 2

makeMethod · 0.45
valuesMethod · 0.45

Tested by

no test coverage detected