From 26d27eba8046a4e22192cc8de289c2fcdcae04e1 Mon Sep 17 00:00:00 2001 From: Manas Hejmadi Date: Sun, 22 Jun 2025 23:12:40 +0530 Subject: [PATCH] AIRequestModel & AIResponseModel Created --- .../genai/lib/models/ai_request_model.dart | 61 +++ .../lib/models/ai_request_model.freezed.dart | 246 +++++++++++ .../genai/lib/models/ai_request_model.g.dart | 22 + .../genai/lib/models/ai_response_model.dart | 62 +++ .../lib/models/ai_response_model.freezed.dart | 392 ++++++++++++++++++ .../genai/lib/models/ai_response_model.g.dart | 38 ++ 6 files changed, 821 insertions(+) create mode 100644 packages/genai/lib/models/ai_request_model.dart create mode 100644 packages/genai/lib/models/ai_request_model.freezed.dart create mode 100644 packages/genai/lib/models/ai_request_model.g.dart create mode 100644 packages/genai/lib/models/ai_response_model.dart create mode 100644 packages/genai/lib/models/ai_response_model.freezed.dart create mode 100644 packages/genai/lib/models/ai_response_model.g.dart diff --git a/packages/genai/lib/models/ai_request_model.dart b/packages/genai/lib/models/ai_request_model.dart new file mode 100644 index 00000000..e18ee25a --- /dev/null +++ b/packages/genai/lib/models/ai_request_model.dart @@ -0,0 +1,61 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import '../llm_saveobject.dart'; +import '../llm_input_payload.dart'; +import '../llm_request.dart'; +import '../providers/common.dart'; +import '../providers/gemini.dart'; +import '../providers/providers.dart'; +part 'ai_request_model.freezed.dart'; +part 'ai_request_model.g.dart'; + +@freezed +class AIRequestModel with _$AIRequestModel { + const AIRequestModel._(); + + @JsonSerializable(explicitToJson: true, anyMap: true) + factory AIRequestModel({ + @JsonKey(fromJson: LLMInputPayload.fromJSON, toJson: LLMInputPayload.toJSON) + required LLMInputPayload payload, + @JsonKey(fromJson: LLMModel.fromJson, toJson: LLMModel.toJson) + required LLMModel model, + @JsonKey(fromJson: LLMProvider.fromJSON, toJson: LLMProvider.toJSON) + required LLMProvider provider, + }) = _AIRequestModel; + + factory AIRequestModel.fromJson(Map json) => + _$AIRequestModelFromJson(json); + + AIRequestModel updatePayload(LLMInputPayload p) { + return AIRequestModel(payload: p, model: model, provider: provider); + } + + LLMRequestDetails createRequest() { + final controller = model.provider.modelController; + return controller.createRequest(model, payload); + } + + factory AIRequestModel.fromDefaultSaveObject(LLMSaveObject? defaultLLMSO) { + final gmC = GeminiModelController.instance; + return AIRequestModel( + model: + defaultLLMSO?.selectedLLM ?? + LLMProvider.gemini.getLLMByIdentifier('gemini-2.0-flash'), + provider: defaultLLMSO?.provider ?? LLMProvider.gemini, + payload: LLMInputPayload( + endpoint: defaultLLMSO?.endpoint ?? gmC.inputPayload.endpoint, + credential: defaultLLMSO?.credential ?? '', + systemPrompt: '', + userPrompt: '', + configMap: defaultLLMSO?.configMap ?? gmC.inputPayload.configMap, + ), + ); + } + + AIRequestModel clone() { + return AIRequestModel( + model: model, + payload: payload.clone(), + provider: provider, + ); + } +} diff --git a/packages/genai/lib/models/ai_request_model.freezed.dart b/packages/genai/lib/models/ai_request_model.freezed.dart new file mode 100644 index 00000000..84890f0a --- /dev/null +++ b/packages/genai/lib/models/ai_request_model.freezed.dart @@ -0,0 +1,246 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'ai_request_model.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +AIRequestModel _$AIRequestModelFromJson(Map json) { + return _AIRequestModel.fromJson(json); +} + +/// @nodoc +mixin _$AIRequestModel { + @JsonKey(fromJson: LLMInputPayload.fromJSON, toJson: LLMInputPayload.toJSON) + LLMInputPayload get payload => throw _privateConstructorUsedError; + @JsonKey(fromJson: LLMModel.fromJson, toJson: LLMModel.toJson) + LLMModel get model => throw _privateConstructorUsedError; + @JsonKey(fromJson: LLMProvider.fromJSON, toJson: LLMProvider.toJSON) + LLMProvider get provider => throw _privateConstructorUsedError; + + /// Serializes this AIRequestModel to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of AIRequestModel + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $AIRequestModelCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AIRequestModelCopyWith<$Res> { + factory $AIRequestModelCopyWith( + AIRequestModel value, + $Res Function(AIRequestModel) then, + ) = _$AIRequestModelCopyWithImpl<$Res, AIRequestModel>; + @useResult + $Res call({ + @JsonKey(fromJson: LLMInputPayload.fromJSON, toJson: LLMInputPayload.toJSON) + LLMInputPayload payload, + @JsonKey(fromJson: LLMModel.fromJson, toJson: LLMModel.toJson) + LLMModel model, + @JsonKey(fromJson: LLMProvider.fromJSON, toJson: LLMProvider.toJSON) + LLMProvider provider, + }); +} + +/// @nodoc +class _$AIRequestModelCopyWithImpl<$Res, $Val extends AIRequestModel> + implements $AIRequestModelCopyWith<$Res> { + _$AIRequestModelCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of AIRequestModel + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? payload = null, + Object? model = null, + Object? provider = null, + }) { + return _then( + _value.copyWith( + payload: null == payload + ? _value.payload + : payload // ignore: cast_nullable_to_non_nullable + as LLMInputPayload, + model: null == model + ? _value.model + : model // ignore: cast_nullable_to_non_nullable + as LLMModel, + provider: null == provider + ? _value.provider + : provider // ignore: cast_nullable_to_non_nullable + as LLMProvider, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$AIRequestModelImplCopyWith<$Res> + implements $AIRequestModelCopyWith<$Res> { + factory _$$AIRequestModelImplCopyWith( + _$AIRequestModelImpl value, + $Res Function(_$AIRequestModelImpl) then, + ) = __$$AIRequestModelImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + @JsonKey(fromJson: LLMInputPayload.fromJSON, toJson: LLMInputPayload.toJSON) + LLMInputPayload payload, + @JsonKey(fromJson: LLMModel.fromJson, toJson: LLMModel.toJson) + LLMModel model, + @JsonKey(fromJson: LLMProvider.fromJSON, toJson: LLMProvider.toJSON) + LLMProvider provider, + }); +} + +/// @nodoc +class __$$AIRequestModelImplCopyWithImpl<$Res> + extends _$AIRequestModelCopyWithImpl<$Res, _$AIRequestModelImpl> + implements _$$AIRequestModelImplCopyWith<$Res> { + __$$AIRequestModelImplCopyWithImpl( + _$AIRequestModelImpl _value, + $Res Function(_$AIRequestModelImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AIRequestModel + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? payload = null, + Object? model = null, + Object? provider = null, + }) { + return _then( + _$AIRequestModelImpl( + payload: null == payload + ? _value.payload + : payload // ignore: cast_nullable_to_non_nullable + as LLMInputPayload, + model: null == model + ? _value.model + : model // ignore: cast_nullable_to_non_nullable + as LLMModel, + provider: null == provider + ? _value.provider + : provider // ignore: cast_nullable_to_non_nullable + as LLMProvider, + ), + ); + } +} + +/// @nodoc + +@JsonSerializable(explicitToJson: true, anyMap: true) +class _$AIRequestModelImpl extends _AIRequestModel { + _$AIRequestModelImpl({ + @JsonKey(fromJson: LLMInputPayload.fromJSON, toJson: LLMInputPayload.toJSON) + required this.payload, + @JsonKey(fromJson: LLMModel.fromJson, toJson: LLMModel.toJson) + required this.model, + @JsonKey(fromJson: LLMProvider.fromJSON, toJson: LLMProvider.toJSON) + required this.provider, + }) : super._(); + + factory _$AIRequestModelImpl.fromJson(Map json) => + _$$AIRequestModelImplFromJson(json); + + @override + @JsonKey(fromJson: LLMInputPayload.fromJSON, toJson: LLMInputPayload.toJSON) + final LLMInputPayload payload; + @override + @JsonKey(fromJson: LLMModel.fromJson, toJson: LLMModel.toJson) + final LLMModel model; + @override + @JsonKey(fromJson: LLMProvider.fromJSON, toJson: LLMProvider.toJSON) + final LLMProvider provider; + + @override + String toString() { + return 'AIRequestModel(payload: $payload, model: $model, provider: $provider)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$AIRequestModelImpl && + (identical(other.payload, payload) || other.payload == payload) && + (identical(other.model, model) || other.model == model) && + (identical(other.provider, provider) || + other.provider == provider)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, payload, model, provider); + + /// Create a copy of AIRequestModel + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$AIRequestModelImplCopyWith<_$AIRequestModelImpl> get copyWith => + __$$AIRequestModelImplCopyWithImpl<_$AIRequestModelImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$AIRequestModelImplToJson(this); + } +} + +abstract class _AIRequestModel extends AIRequestModel { + factory _AIRequestModel({ + @JsonKey(fromJson: LLMInputPayload.fromJSON, toJson: LLMInputPayload.toJSON) + required final LLMInputPayload payload, + @JsonKey(fromJson: LLMModel.fromJson, toJson: LLMModel.toJson) + required final LLMModel model, + @JsonKey(fromJson: LLMProvider.fromJSON, toJson: LLMProvider.toJSON) + required final LLMProvider provider, + }) = _$AIRequestModelImpl; + _AIRequestModel._() : super._(); + + factory _AIRequestModel.fromJson(Map json) = + _$AIRequestModelImpl.fromJson; + + @override + @JsonKey(fromJson: LLMInputPayload.fromJSON, toJson: LLMInputPayload.toJSON) + LLMInputPayload get payload; + @override + @JsonKey(fromJson: LLMModel.fromJson, toJson: LLMModel.toJson) + LLMModel get model; + @override + @JsonKey(fromJson: LLMProvider.fromJSON, toJson: LLMProvider.toJSON) + LLMProvider get provider; + + /// Create a copy of AIRequestModel + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$AIRequestModelImplCopyWith<_$AIRequestModelImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/packages/genai/lib/models/ai_request_model.g.dart b/packages/genai/lib/models/ai_request_model.g.dart new file mode 100644 index 00000000..df256f43 --- /dev/null +++ b/packages/genai/lib/models/ai_request_model.g.dart @@ -0,0 +1,22 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'ai_request_model.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$AIRequestModelImpl _$$AIRequestModelImplFromJson(Map json) => + _$AIRequestModelImpl( + payload: LLMInputPayload.fromJSON(json['payload'] as Map), + model: LLMModel.fromJson(json['model'] as Map), + provider: LLMProvider.fromJSON(json['provider'] as Map), + ); + +Map _$$AIRequestModelImplToJson( + _$AIRequestModelImpl instance, +) => { + 'payload': LLMInputPayload.toJSON(instance.payload), + 'model': LLMModel.toJson(instance.model), + 'provider': LLMProvider.toJSON(instance.provider), +}; diff --git a/packages/genai/lib/models/ai_response_model.dart b/packages/genai/lib/models/ai_response_model.dart new file mode 100644 index 00000000..dc88936b --- /dev/null +++ b/packages/genai/lib/models/ai_response_model.dart @@ -0,0 +1,62 @@ +import 'dart:convert'; +import 'dart:io'; +import 'dart:typed_data'; +import 'package:better_networking/better_networking.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:collection/collection.dart' show mergeMaps; +import '../providers/providers.dart'; +part 'ai_response_model.freezed.dart'; +part 'ai_response_model.g.dart'; + +@freezed +class AIResponseModel with _$AIResponseModel { + const AIResponseModel._(); + + @JsonSerializable(explicitToJson: true, anyMap: true, createToJson: true) + const factory AIResponseModel({ + int? statusCode, + Map? headers, + Map? requestHeaders, + String? body, + String? formattedBody, + @JsonKey( + fromJson: LLMProvider.fromJSONNullable, + toJson: LLMProvider.toJSONNullable, + ) + LLMProvider? llmProvider, + @Uint8ListConverter() Uint8List? bodyBytes, + @DurationConverter() Duration? time, + }) = _AIResponseModel; + + factory AIResponseModel.fromJson(Map json) => + _$AIResponseModelFromJson(json); + + AIResponseModel fromResponse({ + required Response response, + required LLMProvider provider, + Duration? time, + }) { + final responseHeaders = mergeMaps({ + HttpHeaders.contentLengthHeader: response.contentLength.toString(), + }, response.headers); + MediaType? mediaType = getMediaTypeFromHeaders(responseHeaders); + final body = (mediaType?.subtype == kSubTypeJson) + ? utf8.decode(response.bodyBytes) + : response.body; + return AIResponseModel( + statusCode: response.statusCode, + headers: responseHeaders, + requestHeaders: response.request?.headers, + body: body, + formattedBody: response.statusCode == 200 + ? provider.modelController.outputFormatter(jsonDecode(body)) + : formatBody(body, mediaType), + bodyBytes: response.bodyBytes, + time: time, + llmProvider: provider, + ); + } + + String? get contentType => headers?.getValueContentType(); + MediaType? get mediaType => getMediaTypeFromHeaders(headers); +} diff --git a/packages/genai/lib/models/ai_response_model.freezed.dart b/packages/genai/lib/models/ai_response_model.freezed.dart new file mode 100644 index 00000000..c7322bc9 --- /dev/null +++ b/packages/genai/lib/models/ai_response_model.freezed.dart @@ -0,0 +1,392 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'ai_response_model.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +AIResponseModel _$AIResponseModelFromJson(Map json) { + return _AIResponseModel.fromJson(json); +} + +/// @nodoc +mixin _$AIResponseModel { + int? get statusCode => throw _privateConstructorUsedError; + Map? get headers => throw _privateConstructorUsedError; + Map? get requestHeaders => throw _privateConstructorUsedError; + String? get body => throw _privateConstructorUsedError; + String? get formattedBody => throw _privateConstructorUsedError; + @JsonKey( + fromJson: LLMProvider.fromJSONNullable, + toJson: LLMProvider.toJSONNullable, + ) + LLMProvider? get llmProvider => throw _privateConstructorUsedError; + @Uint8ListConverter() + Uint8List? get bodyBytes => throw _privateConstructorUsedError; + @DurationConverter() + Duration? get time => throw _privateConstructorUsedError; + + /// Serializes this AIResponseModel to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of AIResponseModel + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $AIResponseModelCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AIResponseModelCopyWith<$Res> { + factory $AIResponseModelCopyWith( + AIResponseModel value, + $Res Function(AIResponseModel) then, + ) = _$AIResponseModelCopyWithImpl<$Res, AIResponseModel>; + @useResult + $Res call({ + int? statusCode, + Map? headers, + Map? requestHeaders, + String? body, + String? formattedBody, + @JsonKey( + fromJson: LLMProvider.fromJSONNullable, + toJson: LLMProvider.toJSONNullable, + ) + LLMProvider? llmProvider, + @Uint8ListConverter() Uint8List? bodyBytes, + @DurationConverter() Duration? time, + }); +} + +/// @nodoc +class _$AIResponseModelCopyWithImpl<$Res, $Val extends AIResponseModel> + implements $AIResponseModelCopyWith<$Res> { + _$AIResponseModelCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of AIResponseModel + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? statusCode = freezed, + Object? headers = freezed, + Object? requestHeaders = freezed, + Object? body = freezed, + Object? formattedBody = freezed, + Object? llmProvider = freezed, + Object? bodyBytes = freezed, + Object? time = freezed, + }) { + return _then( + _value.copyWith( + statusCode: freezed == statusCode + ? _value.statusCode + : statusCode // ignore: cast_nullable_to_non_nullable + as int?, + headers: freezed == headers + ? _value.headers + : headers // ignore: cast_nullable_to_non_nullable + as Map?, + requestHeaders: freezed == requestHeaders + ? _value.requestHeaders + : requestHeaders // ignore: cast_nullable_to_non_nullable + as Map?, + body: freezed == body + ? _value.body + : body // ignore: cast_nullable_to_non_nullable + as String?, + formattedBody: freezed == formattedBody + ? _value.formattedBody + : formattedBody // ignore: cast_nullable_to_non_nullable + as String?, + llmProvider: freezed == llmProvider + ? _value.llmProvider + : llmProvider // ignore: cast_nullable_to_non_nullable + as LLMProvider?, + bodyBytes: freezed == bodyBytes + ? _value.bodyBytes + : bodyBytes // ignore: cast_nullable_to_non_nullable + as Uint8List?, + time: freezed == time + ? _value.time + : time // ignore: cast_nullable_to_non_nullable + as Duration?, + ) + as $Val, + ); + } +} + +/// @nodoc +abstract class _$$AIResponseModelImplCopyWith<$Res> + implements $AIResponseModelCopyWith<$Res> { + factory _$$AIResponseModelImplCopyWith( + _$AIResponseModelImpl value, + $Res Function(_$AIResponseModelImpl) then, + ) = __$$AIResponseModelImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({ + int? statusCode, + Map? headers, + Map? requestHeaders, + String? body, + String? formattedBody, + @JsonKey( + fromJson: LLMProvider.fromJSONNullable, + toJson: LLMProvider.toJSONNullable, + ) + LLMProvider? llmProvider, + @Uint8ListConverter() Uint8List? bodyBytes, + @DurationConverter() Duration? time, + }); +} + +/// @nodoc +class __$$AIResponseModelImplCopyWithImpl<$Res> + extends _$AIResponseModelCopyWithImpl<$Res, _$AIResponseModelImpl> + implements _$$AIResponseModelImplCopyWith<$Res> { + __$$AIResponseModelImplCopyWithImpl( + _$AIResponseModelImpl _value, + $Res Function(_$AIResponseModelImpl) _then, + ) : super(_value, _then); + + /// Create a copy of AIResponseModel + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? statusCode = freezed, + Object? headers = freezed, + Object? requestHeaders = freezed, + Object? body = freezed, + Object? formattedBody = freezed, + Object? llmProvider = freezed, + Object? bodyBytes = freezed, + Object? time = freezed, + }) { + return _then( + _$AIResponseModelImpl( + statusCode: freezed == statusCode + ? _value.statusCode + : statusCode // ignore: cast_nullable_to_non_nullable + as int?, + headers: freezed == headers + ? _value._headers + : headers // ignore: cast_nullable_to_non_nullable + as Map?, + requestHeaders: freezed == requestHeaders + ? _value._requestHeaders + : requestHeaders // ignore: cast_nullable_to_non_nullable + as Map?, + body: freezed == body + ? _value.body + : body // ignore: cast_nullable_to_non_nullable + as String?, + formattedBody: freezed == formattedBody + ? _value.formattedBody + : formattedBody // ignore: cast_nullable_to_non_nullable + as String?, + llmProvider: freezed == llmProvider + ? _value.llmProvider + : llmProvider // ignore: cast_nullable_to_non_nullable + as LLMProvider?, + bodyBytes: freezed == bodyBytes + ? _value.bodyBytes + : bodyBytes // ignore: cast_nullable_to_non_nullable + as Uint8List?, + time: freezed == time + ? _value.time + : time // ignore: cast_nullable_to_non_nullable + as Duration?, + ), + ); + } +} + +/// @nodoc + +@JsonSerializable(explicitToJson: true, anyMap: true, createToJson: true) +class _$AIResponseModelImpl extends _AIResponseModel { + const _$AIResponseModelImpl({ + this.statusCode, + final Map? headers, + final Map? requestHeaders, + this.body, + this.formattedBody, + @JsonKey( + fromJson: LLMProvider.fromJSONNullable, + toJson: LLMProvider.toJSONNullable, + ) + this.llmProvider, + @Uint8ListConverter() this.bodyBytes, + @DurationConverter() this.time, + }) : _headers = headers, + _requestHeaders = requestHeaders, + super._(); + + factory _$AIResponseModelImpl.fromJson(Map json) => + _$$AIResponseModelImplFromJson(json); + + @override + final int? statusCode; + final Map? _headers; + @override + Map? get headers { + final value = _headers; + if (value == null) return null; + if (_headers is EqualUnmodifiableMapView) return _headers; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + final Map? _requestHeaders; + @override + Map? get requestHeaders { + final value = _requestHeaders; + if (value == null) return null; + if (_requestHeaders is EqualUnmodifiableMapView) return _requestHeaders; + // ignore: implicit_dynamic_type + return EqualUnmodifiableMapView(value); + } + + @override + final String? body; + @override + final String? formattedBody; + @override + @JsonKey( + fromJson: LLMProvider.fromJSONNullable, + toJson: LLMProvider.toJSONNullable, + ) + final LLMProvider? llmProvider; + @override + @Uint8ListConverter() + final Uint8List? bodyBytes; + @override + @DurationConverter() + final Duration? time; + + @override + String toString() { + return 'AIResponseModel(statusCode: $statusCode, headers: $headers, requestHeaders: $requestHeaders, body: $body, formattedBody: $formattedBody, llmProvider: $llmProvider, bodyBytes: $bodyBytes, time: $time)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$AIResponseModelImpl && + (identical(other.statusCode, statusCode) || + other.statusCode == statusCode) && + const DeepCollectionEquality().equals(other._headers, _headers) && + const DeepCollectionEquality().equals( + other._requestHeaders, + _requestHeaders, + ) && + (identical(other.body, body) || other.body == body) && + (identical(other.formattedBody, formattedBody) || + other.formattedBody == formattedBody) && + (identical(other.llmProvider, llmProvider) || + other.llmProvider == llmProvider) && + const DeepCollectionEquality().equals(other.bodyBytes, bodyBytes) && + (identical(other.time, time) || other.time == time)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + statusCode, + const DeepCollectionEquality().hash(_headers), + const DeepCollectionEquality().hash(_requestHeaders), + body, + formattedBody, + llmProvider, + const DeepCollectionEquality().hash(bodyBytes), + time, + ); + + /// Create a copy of AIResponseModel + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$AIResponseModelImplCopyWith<_$AIResponseModelImpl> get copyWith => + __$$AIResponseModelImplCopyWithImpl<_$AIResponseModelImpl>( + this, + _$identity, + ); + + @override + Map toJson() { + return _$$AIResponseModelImplToJson(this); + } +} + +abstract class _AIResponseModel extends AIResponseModel { + const factory _AIResponseModel({ + final int? statusCode, + final Map? headers, + final Map? requestHeaders, + final String? body, + final String? formattedBody, + @JsonKey( + fromJson: LLMProvider.fromJSONNullable, + toJson: LLMProvider.toJSONNullable, + ) + final LLMProvider? llmProvider, + @Uint8ListConverter() final Uint8List? bodyBytes, + @DurationConverter() final Duration? time, + }) = _$AIResponseModelImpl; + const _AIResponseModel._() : super._(); + + factory _AIResponseModel.fromJson(Map json) = + _$AIResponseModelImpl.fromJson; + + @override + int? get statusCode; + @override + Map? get headers; + @override + Map? get requestHeaders; + @override + String? get body; + @override + String? get formattedBody; + @override + @JsonKey( + fromJson: LLMProvider.fromJSONNullable, + toJson: LLMProvider.toJSONNullable, + ) + LLMProvider? get llmProvider; + @override + @Uint8ListConverter() + Uint8List? get bodyBytes; + @override + @DurationConverter() + Duration? get time; + + /// Create a copy of AIResponseModel + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$AIResponseModelImplCopyWith<_$AIResponseModelImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/packages/genai/lib/models/ai_response_model.g.dart b/packages/genai/lib/models/ai_response_model.g.dart new file mode 100644 index 00000000..f1029f70 --- /dev/null +++ b/packages/genai/lib/models/ai_response_model.g.dart @@ -0,0 +1,38 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'ai_response_model.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$AIResponseModelImpl _$$AIResponseModelImplFromJson(Map json) => + _$AIResponseModelImpl( + statusCode: (json['statusCode'] as num?)?.toInt(), + headers: (json['headers'] as Map?)?.map( + (k, e) => MapEntry(k as String, e as String), + ), + requestHeaders: (json['requestHeaders'] as Map?)?.map( + (k, e) => MapEntry(k as String, e as String), + ), + body: json['body'] as String?, + formattedBody: json['formattedBody'] as String?, + llmProvider: LLMProvider.fromJSONNullable(json['llmProvider'] as Map?), + bodyBytes: const Uint8ListConverter().fromJson( + json['bodyBytes'] as List?, + ), + time: const DurationConverter().fromJson((json['time'] as num?)?.toInt()), + ); + +Map _$$AIResponseModelImplToJson( + _$AIResponseModelImpl instance, +) => { + 'statusCode': instance.statusCode, + 'headers': instance.headers, + 'requestHeaders': instance.requestHeaders, + 'body': instance.body, + 'formattedBody': instance.formattedBody, + 'llmProvider': LLMProvider.toJSONNullable(instance.llmProvider), + 'bodyBytes': const Uint8ListConverter().toJson(instance.bodyBytes), + 'time': const DurationConverter().toJson(instance.time), +};