63 lines
2.2 KiB
Dart
63 lines
2.2 KiB
Dart
/// `Artifact` class represents an artifact either created by or submitted to the agent.
|
|
///
|
|
/// Each artifact object contains an ID, a flag indicating if it was created by the agent,
|
|
/// a file name, and a relative path of the artifact in the agent's workspace.
|
|
class Artifact {
|
|
// ID of the artifact.
|
|
final String artifactId;
|
|
|
|
// Whether the artifact has been created by the agent.
|
|
final bool agentCreated;
|
|
|
|
// Filename of the artifact.
|
|
final String fileName;
|
|
|
|
// Relative path of the artifact in the agent's workspace.
|
|
final String? relativePath;
|
|
|
|
/// Creates an `Artifact` instance.
|
|
///
|
|
/// - `artifactId`: ID of the artifact. This is a required field.
|
|
/// - `agentCreated`: Indicates whether the artifact was created by the agent. This is a required field.
|
|
/// - `fileName`: The file name of the artifact. This is a required field.
|
|
/// - `relativePath`: The relative path of the artifact in the agent's workspace. This field can be null.
|
|
Artifact({
|
|
required this.artifactId,
|
|
required this.agentCreated,
|
|
required this.fileName,
|
|
this.relativePath,
|
|
});
|
|
|
|
/// Creates an `Artifact` instance from a map.
|
|
///
|
|
/// This constructor is used for deserializing a JSON object into an `Artifact` instance.
|
|
/// It expects all the required fields to be present; otherwise, an error will be thrown.
|
|
///
|
|
/// - `map`: The map from which the `Artifact` instance will be created.
|
|
factory Artifact.fromJson(Map<String, dynamic> map) {
|
|
if (map['artifact_id'] == null ||
|
|
map['agent_created'] == null ||
|
|
map['file_name'] == null) {
|
|
throw const FormatException(
|
|
'Invalid JSON: Missing one of the required fields.');
|
|
}
|
|
|
|
return Artifact(
|
|
artifactId: map['artifact_id'],
|
|
agentCreated: map['agent_created'],
|
|
fileName: map['file_name'],
|
|
relativePath: map['relative_path'],
|
|
);
|
|
}
|
|
|
|
/// Converts the `Artifact` instance into a JSON object.
|
|
///
|
|
/// This can be useful for encoding the `Artifact` object into a JSON string.
|
|
Map<String, dynamic> toJson() => {
|
|
'artifact_id': artifactId,
|
|
'agent_created': agentCreated,
|
|
'file_name': fileName,
|
|
'relative_path': relativePath,
|
|
};
|
|
}
|