diff --git a/frontend/lib/main.dart b/frontend/lib/main.dart index 19888bf6a..97db9a02b 100644 --- a/frontend/lib/main.dart +++ b/frontend/lib/main.dart @@ -1,4 +1,4 @@ -import 'package:auto_gpt_flutter_client/services/auth_service.dart'; +import 'package:auto_gpt_flutter_client/services/leaderboard_service.dart'; import 'package:auto_gpt_flutter_client/views/auth/firebase_auth_view.dart'; import 'package:flutter/material.dart'; import 'views/main_layout.dart'; @@ -47,9 +47,13 @@ void main() async { TaskService(restApiUtility), ), ProxyProvider( - update: (context, restApiUtility, taskService) => + update: (context, restApiUtility, benchmarkService) => BenchmarkService(restApiUtility), ), + ProxyProvider( + update: (context, restApiUtility, leaderboardService) => + LeaderboardService(restApiUtility), + ), ChangeNotifierProxyProvider( create: (context) => ApiSettingsViewModel( Provider.of(context, listen: false)), @@ -90,7 +94,8 @@ class MyApp extends StatelessWidget { Provider.of(context, listen: false))), ChangeNotifierProvider( create: (context) => SkillTreeViewModel( - Provider.of(context, listen: false)), + Provider.of(context, listen: false), + Provider.of(context, listen: false)), ), ], child: MainLayout(), diff --git a/frontend/lib/viewmodels/skill_tree_viewmodel.dart b/frontend/lib/viewmodels/skill_tree_viewmodel.dart index 804b13e61..8704ec2ea 100644 --- a/frontend/lib/viewmodels/skill_tree_viewmodel.dart +++ b/frontend/lib/viewmodels/skill_tree_viewmodel.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'package:auto_gpt_flutter_client/models/benchmark/benchmark_run.dart'; import 'package:auto_gpt_flutter_client/models/benchmark/benchmark_step_request_body.dart'; import 'package:auto_gpt_flutter_client/models/benchmark/benchmark_task_request_body.dart'; import 'package:auto_gpt_flutter_client/models/benchmark/benchmark_task_status.dart'; @@ -8,6 +9,7 @@ import 'package:auto_gpt_flutter_client/models/step.dart'; import 'package:auto_gpt_flutter_client/models/task.dart'; import 'package:auto_gpt_flutter_client/models/test_suite.dart'; import 'package:auto_gpt_flutter_client/services/benchmark_service.dart'; +import 'package:auto_gpt_flutter_client/services/leaderboard_service.dart'; import 'package:auto_gpt_flutter_client/viewmodels/chat_viewmodel.dart'; import 'package:auto_gpt_flutter_client/viewmodels/task_viewmodel.dart'; import 'package:collection/collection.dart'; @@ -19,6 +21,8 @@ class SkillTreeViewModel extends ChangeNotifier { // TODO: Potentially move to task queue view model when we create one final BenchmarkService benchmarkService; // TODO: Potentially move to task queue view model when we create one + final LeaderboardService leaderboardService; + // TODO: Potentially move to task queue view model when we create one bool isBenchmarkRunning = false; // TODO: Potentially move to task queue view model when we create one Map benchmarkStatusMap = {}; @@ -37,7 +41,7 @@ class SkillTreeViewModel extends ChangeNotifier { final Graph graph = Graph()..isTree = true; BuchheimWalkerConfiguration builder = BuchheimWalkerConfiguration(); - SkillTreeViewModel(this.benchmarkService); + SkillTreeViewModel(this.benchmarkService, this.leaderboardService); Future initializeSkillTree() async { try { @@ -206,6 +210,13 @@ class SkillTreeViewModel extends ChangeNotifier { await benchmarkService.triggerEvaluation(task.id); print("Evaluation response: $evaluationResponse"); + // Decode the evaluationResponse into a BenchmarkRun object + BenchmarkRun benchmarkRun = BenchmarkRun.fromJson(evaluationResponse); + + // TODO: We should only trigger this if the user has designated they want to submit + // Submit the BenchmarkRun object to the leaderboard + await leaderboardService.submitReport(benchmarkRun); + // Update the benchmarkStatusList based on the evaluation response bool successStatus = evaluationResponse['metrics']['success']; benchmarkStatusMap[node] = successStatus