load static method

AiConfig? load({
  1. String? path,
  2. String? home,
  3. Map<String, String>? environment,
})

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,
  );
}