73 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:freezed_annotation/freezed_annotation.dart';
 | |
| import 'package:island/models/file.dart';
 | |
| 
 | |
| part 'thought.freezed.dart';
 | |
| part 'thought.g.dart';
 | |
| 
 | |
| enum ThinkingThoughtRole {
 | |
|   assistant(0),
 | |
|   user(1);
 | |
| 
 | |
|   const ThinkingThoughtRole(this.value);
 | |
|   final int value;
 | |
| 
 | |
|   static ThinkingThoughtRole fromValue(int value) {
 | |
|     return values.firstWhere((e) => e.value == value);
 | |
|   }
 | |
| }
 | |
| 
 | |
| class ThinkingThoughtRoleConverter
 | |
|     implements JsonConverter<ThinkingThoughtRole, int> {
 | |
|   const ThinkingThoughtRoleConverter();
 | |
| 
 | |
|   @override
 | |
|   ThinkingThoughtRole fromJson(int json) => ThinkingThoughtRole.fromValue(json);
 | |
| 
 | |
|   @override
 | |
|   int toJson(ThinkingThoughtRole object) => object.value;
 | |
| }
 | |
| 
 | |
| @freezed
 | |
| sealed class StreamThinkingRequest with _$StreamThinkingRequest {
 | |
|   const factory StreamThinkingRequest({
 | |
|     required String userMessage,
 | |
|     String? sequenceId,
 | |
|   }) = _StreamThinkingRequest;
 | |
| 
 | |
|   factory StreamThinkingRequest.fromJson(Map<String, dynamic> json) =>
 | |
|       _$StreamThinkingRequestFromJson(json);
 | |
| }
 | |
| 
 | |
| @freezed
 | |
| sealed class SnThinkingSequence with _$SnThinkingSequence {
 | |
|   const factory SnThinkingSequence({
 | |
|     required String id,
 | |
|     String? topic,
 | |
|     required String accountId,
 | |
|     required DateTime createdAt,
 | |
|     required DateTime updatedAt,
 | |
|     DateTime? deletedAt,
 | |
|   }) = _SnThinkingSequence;
 | |
| 
 | |
|   factory SnThinkingSequence.fromJson(Map<String, dynamic> json) =>
 | |
|       _$SnThinkingSequenceFromJson(json);
 | |
| }
 | |
| 
 | |
| @freezed
 | |
| sealed class SnThinkingThought with _$SnThinkingThought {
 | |
|   const factory SnThinkingThought({
 | |
|     required String id,
 | |
|     String? content,
 | |
|     @Default([]) List<SnCloudFile> files,
 | |
|     @ThinkingThoughtRoleConverter() required ThinkingThoughtRole role,
 | |
|     required String sequenceId,
 | |
|     SnThinkingSequence? sequence,
 | |
|     required DateTime createdAt,
 | |
|     required DateTime updatedAt,
 | |
|     DateTime? deletedAt,
 | |
|   }) = _SnThinkingThought;
 | |
| 
 | |
|   factory SnThinkingThought.fromJson(Map<String, dynamic> json) =>
 | |
|       _$SnThinkingThoughtFromJson(json);
 | |
| }
 |