resolvedRef static method
Parses a {"ref": name} entry: fields resolve through the saved
custom providers; inline provider_config overrides win (UT-ref).
resolveRef returns the referenced provider's fields, or null when
dangling (the caller turns that into a boot error with candidates).
Implementation
static ProviderQueueEntry resolvedRef({
required String name,
required int position,
required ({String kind, String? baseUrl, String model, String? keyName})?
Function(String name)
resolveRef,
Map<Object?, Object?>? overrides,
}) {
final where = 'queue entry #$position';
final resolved = resolveRef(name);
if (resolved == null) {
throw ConfigException(
'$where: ref "$name" matches no customProviders entry',
);
}
final model = overrides?['model'] as String?;
final baseUrl = overrides?['baseUrl'] as String?;
final apiKeyEnv = overrides?['apiKeyEnv'] as String?;
final contextWindow = _optionalInt(
overrides ?? const {},
'contextWindow',
where,
);
final maxTokens = _optionalInt(overrides ?? const {}, 'maxTokens', where);
return ProviderQueueEntry(
providerType: resolved.kind,
model: (model != null && model.trim().isNotEmpty)
? model.trim()
: resolved.model,
baseUrl: (baseUrl != null && baseUrl.trim().isNotEmpty)
? baseUrl.trim()
: resolved.baseUrl,
apiKeyEnv: (apiKeyEnv != null && apiKeyEnv.trim().isNotEmpty)
? apiKeyEnv.trim()
: resolved.keyName,
contextWindow: contextWindow,
maxTokens: maxTokens,
ref: name,
);
}