Files
Auto-GPT/lib/services/chat_service.dart
hunteraraujo bda3b8b649 Refactor service classes to use api.get and handle structured responses
This commit updates the ChatService and TaskService classes to use the api.get method instead of the previous api.getList. This change allows us to handle structured API responses more effectively, particularly those containing pagination information and detailed task and step data.

- Update ChatService methods to use api.get
- Update TaskService methods to use api.get
- Handle structured TaskResponse in TaskService.listAllTasks
2023-09-02 15:21:52 -07:00

71 lines
2.2 KiB
Dart

import 'dart:io';
import 'package:auto_gpt_flutter_client/models/step_request_body.dart';
import 'package:auto_gpt_flutter_client/utils/rest_api_utility.dart';
/// Service class for performing chat-related operations.
class ChatService {
final RestApiUtility api;
ChatService(this.api);
/// Executes a step in a specific task.
///
/// [taskId] is the ID of the task.
/// [stepRequestBody] is a Map representing the request body for executing a step.
Future<Map<String, dynamic>> executeStep(
String taskId, StepRequestBody stepRequestBody) async {
try {
return await api.post(
'agent/tasks/$taskId/steps', stepRequestBody.toJson());
} catch (e) {
throw Exception('Failed to execute step: $e');
}
}
/// Gets details about a specific task step.
///
/// [taskId] is the ID of the task.
/// [stepId] is the ID of the step.
Future<Map<String, dynamic>> getStepDetails(
String taskId, String stepId) async {
try {
return await api.get('agent/tasks/$taskId/steps/$stepId');
} catch (e) {
throw Exception('Failed to get step details: $e');
}
}
/// Lists all steps for a specific task.
///
/// [taskId] is the ID of the task.
/// [currentPage] and [pageSize] are optional pagination parameters.
Future<Map<String, dynamic>> listTaskSteps(String taskId,
{int currentPage = 1, int pageSize = 10}) async {
try {
return await api.get(
'agent/tasks/$taskId/steps?current_page=$currentPage&page_size=$pageSize');
} catch (e) {
throw Exception('Failed to list task steps: $e');
}
}
/// Uploads an artifact for a specific task.
///
/// [taskId] is the ID of the task.
/// [artifactFile] is the File to be uploaded.
/// [uri] is the URI of the artifact.
Future<Map<String, dynamic>> uploadArtifact(
String taskId, File artifactFile, String uri) async {
return Future.value({'status': 'Not implemented yet'});
}
/// Downloads a specific artifact.
///
/// [taskId] is the ID of the task.
/// [artifactId] is the ID of the artifact.
Future<Map<String, dynamic>> downloadArtifact(
String taskId, String artifactId) async {
return Future.value({'status': 'Not implemented yet'});
}
}