load static method
Implementation
static AiConfig? load({
String? path,
String? home,
Map<String, String>? environment,
}) {
final env = environment ?? Platform.environment;
final yaml = _readYaml(path ?? defaultPath(home: home));
final provider =
AiProviderKind.tryParse(env['OMNYSHELL_AI_PROVIDER']) ??
AiProviderKind.tryParse(yaml['provider'] as String?) ??
_inferProviderFromEnv(env);
if (provider == null) return null;
final apiKey = env[_envKeys[provider]!]?.trim().isNotEmpty == true
? env[_envKeys[provider]!]!.trim()
: (yaml['apiKey'] as String?)?.trim();
if (apiKey == null || apiKey.isEmpty) return null;
return AiConfig(
provider: provider,
model: _resolveModel(env, yaml, provider),
apiKey: apiKey,
plannerModel: _str(yaml['plannerModel']) ?? _plannerDefaults[provider]!,
executorModel: _str(yaml['executorModel']),
explainerModel: _str(yaml['explainerModel']),
baseUrl: _str(yaml['baseUrl']),
defaultMode:
AgentMode.tryParse(yaml['mode'] as String?) ?? AgentMode.plan,
language: _str(yaml['language']),
maxSteps: _int(yaml['maxSteps']) ?? 24,
);
}