mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2025-12-27 19:04:25 +01:00
This commit updates the Task model to include optional fields for 'additionalInput' and 'artifacts'. The 'fromMap' factory method is also adapted to populate these fields if they exist in the JSON response. This change aligns the Task model with the expected server responses, making it more flexible and robust.
62 lines
1.5 KiB
Dart
62 lines
1.5 KiB
Dart
/// Represents a task or topic the user wants to discuss with the agent.
|
|
class Task {
|
|
final String id;
|
|
final Map<String, dynamic>? additionalInput;
|
|
final List<String>? artifacts;
|
|
|
|
String _title;
|
|
|
|
Task({
|
|
required this.id,
|
|
this.additionalInput,
|
|
this.artifacts,
|
|
required String title,
|
|
}) : assert(title.isNotEmpty, 'Title cannot be empty'),
|
|
_title = title;
|
|
|
|
String get title => _title;
|
|
|
|
set title(String newTitle) {
|
|
if (newTitle.isNotEmpty) {
|
|
_title = newTitle;
|
|
} else {
|
|
throw ArgumentError('Title cannot be empty.');
|
|
}
|
|
}
|
|
|
|
// Convert a Map (usually from JSON) to a Task object
|
|
factory Task.fromMap(Map<String, dynamic> map) {
|
|
Map<String, dynamic>? additionalInput;
|
|
List<String>? artifacts;
|
|
|
|
if (map['additional_input'] != null) {
|
|
additionalInput = Map<String, dynamic>.from(map['additional_input']);
|
|
}
|
|
|
|
if (map['artifacts'] != null) {
|
|
artifacts = List<String>.from(map['artifacts'].map((e) => e.toString()));
|
|
}
|
|
|
|
return Task(
|
|
id: map['task_id'],
|
|
additionalInput: additionalInput,
|
|
artifacts: artifacts,
|
|
title: map['input'],
|
|
);
|
|
}
|
|
|
|
@override
|
|
bool operator ==(Object other) =>
|
|
identical(this, other) ||
|
|
other is Task &&
|
|
runtimeType == other.runtimeType &&
|
|
id == other.id &&
|
|
title == other.title;
|
|
|
|
@override
|
|
int get hashCode => id.hashCode ^ title.hashCode;
|
|
|
|
@override
|
|
String toString() => 'Task(id: $id, title: $title)';
|
|
}
|