fromJson static method

SyniModelOption fromJson(
  1. Map<String, dynamic> json
)

Parse one /v1/models manifest entry.

Implementation

static SyniModelOption fromJson(Map<String, dynamic> json) {
  final id = json['id'] as String;
  final displayName = json['display_name'] as String? ?? id;
  final description = json['description'] as String? ?? '';
  final optimizedFor = _strSet(json['optimized_for']);
  final requires = _strSet(json['requires']);
  final isDefault = json['default'] == true;

  switch (json['kind']) {
    case 'local':
      return SyniLocalModel(
        id: id,
        displayName: displayName,
        description: description,
        optimizedFor: optimizedFor,
        requires: requires,
        isDefault: isDefault,
        spec: SyniModelSpec.fromManifest(
          id,
          json['local'] as Map<String, dynamic>,
        ),
      );
    case 'cloud':
      final cloud = json['cloud'] as Map<String, dynamic>? ?? const {};
      return SyniCloudModel(
        id: id,
        displayName: displayName,
        description: description,
        optimizedFor: optimizedFor,
        requires: requires,
        isDefault: isDefault,
        serviceModelId: cloud['service_model_id'] as String? ?? 'default',
      );
    default:
      throw FormatException('unknown model kind: ${json['kind']}');
  }
}