ModelRolesConfig.fromYaml constructor

ModelRolesConfig.fromYaml(
  1. YamlMap map
)

Parses the roles: / modelOverrides: / retry: sections of the CLI config. Strict: any schema problem throws ConfigException (a corrupt roles section must surface, never silently reset to defaults).

Implementation

factory ModelRolesConfig.fromYaml(YamlMap map) {
  final rolesNode = map['roles'];
  if (rolesNode == null) {
    throw const ConfigException('no "roles" section in config');
  }
  final roles = parseRoleChains(rolesNode);

  final overridesNode = map['modelOverrides'];
  final overrides = <PathRoleOverride>[];
  if (overridesNode != null) {
    if (overridesNode is! YamlList) {
      throw const ConfigException('"modelOverrides" must be a list');
    }
    for (final entry in overridesNode) {
      overrides.add(PathRoleOverride.fromYaml(entry));
    }
  }

  final retryNode = map['retry'];
  if (retryNode != null && retryNode is! YamlMap) {
    throw const ConfigException('"retry" must be a map of retry settings');
  }
  final retry = retryNode == null
      ? const ModelRolesRetryPolicy()
      : ModelRolesRetryPolicy.fromYaml(retryNode);

  return ModelRolesConfig(
    roles: roles,
    pathOverrides: overrides,
    retry: retry,
  );
}