Commit Graph

114 Commits

Author SHA1 Message Date
SwiftyOS
e5cef441e2 Re-Organised project and added benchmark code 2023-09-04 16:21:09 +02:00
hunteraraujo
bc211827ad Add local persistence for deleted tasks
- Extended TaskService to manage a list of deleted tasks using shared_preferences.
- Modified TaskViewModel to filter out tasks that have been marked as deleted locally.
- Loaded the list of deleted tasks during app initialization in main.dart.
2023-09-03 20:35:39 -07:00
hunteraraujo
f3f7fdf381 Add 'gui/' from commit '1b314a5782c42d4c1d2e55e1792e5ed240522b74'
git-subtree-dir: gui
git-subtree-mainline: 9cebc85193
git-subtree-split: 1b314a5782
2023-09-03 13:02:46 -07:00
hunteraraujo
9cebc85193 Remove GUI subdirectory 2023-09-03 13:02:11 -07:00
hunteraraujo
1b314a5782 Helpful TODOs 2023-09-03 12:54:00 -07:00
hunteraraujo
aa26cad9e7 Refactor Dependency Injection in main.dart Using ProxyProvider
- Replaced direct service initialization with Provider and ProxyProvider in main.dart.
- Introduced a ChangeNotifierProxyProvider for ApiSettingsViewModel to include a reference to RestApiUtility.
- Refactored MyApp class to fetch services from providers instead of direct instantiation.

This commit enhances the dependency injection pattern to support dynamic updates to the API base URL. The use of ProxyProvider allows for more flexible and efficient management of dependencies, particularly between RestApiUtility and other services.
2023-09-02 20:45:18 -07:00
hunteraraujo
bf60feaa7e Refactor TaskView to Include API Base URL Field
- Added ApiBaseUrlField widget to the TaskView.
- Included a TextEditingController to manage the API base URL value.
- Initialized the text field with the current base URL value from ApiSettingsViewModel.
- Modified the layout to place the API base URL field and associated buttons below the task list.

The commit introduces a user interface enhancement that allows the user to update the API base URL directly from the TaskView. This ensures better configurability and user experience.
2023-09-02 20:34:40 -07:00
hunteraraujo
c9bde250b1 Integrate RestApiUtility with ApiSettingsViewModel for Dynamic URL Updates
- Added a reference to RestApiUtility within ApiSettingsViewModel.
- Modified _loadBaseURL and updateBaseURL methods to update the base URL in RestApiUtility whenever a change is made.
- This ensures that changes to the base URL in the settings are propagated to the utility responsible for making API calls.

This integration allows the application to dynamically update the base URL for API calls through the user interface, enhancing flexibility and configurability.
2023-09-02 20:27:16 -07:00
hunteraraujo
eaa4825e6b Refactor ApiBaseUrlField into a Separate Widget
- Extracted the API Base URL field and associated buttons into a new ApiBaseUrlField widget.
- Utilized Consumer to listen for changes in ApiSettingsViewModel.
- Maintained the look and feel consistent with the application's existing UI elements.

This refactor enhances code modularity and readability by isolating the API settings UI in its own widget.
2023-09-02 20:22:43 -07:00
hunteraraujo
e69e683f70 Integrate ApiSettingsViewModel into main.dart
Updated main.dart to provide ApiSettingsViewModel at the top-level using MultiProvider. This ensures that the ViewModel is accessible throughout the app, allowing for dynamic updates to the API's base URL.
2023-09-02 17:42:58 -07:00
hunteraraujo
b0bd42a57e Update RestApiUtility to allow dynamic baseURL
Modified RestApiUtility to include a method for updating the base URL dynamically. This allows the application to adapt to changes in the API's base URL without requiring a restart.
2023-09-02 17:42:35 -07:00
hunteraraujo
1049a4d868 Add ApiSettingsViewModel for managing API base URL
Created a new ViewModel called ApiSettingsViewModel that is responsible for getting and setting the API's base URL. Utilized the shared_preferences package for persistent storage of the base URL.
2023-09-02 17:42:14 -07:00
hunteraraujo
32c977f7f1 Add shared_preferences dependency 2023-09-02 17:20:16 -07:00
hunteraraujo
7966b81e96 Update ViewModel classes for Chat and Task to handle structured responses
This commit updates the ViewModel classes for both Chat and Task to accommodate the new structured responses received from the API. These changes are essential for the correct functioning of the application as they deal with the new TaskResponse and Step objects.

Updates in ChatViewModel:
- Modified `fetchChatsForTask` to handle structured step data
- Updated how steps are retrieved and processed

Updates in TaskViewModel:
- Updated `fetchTasks` to use the new TaskResponse object
- Refactored task fetching and selection logic

These updates ensure that the ViewModel classes are aligned with the new structured API responses, improving data handling and UI updates.
2023-09-02 15:42:54 -07:00
hunteraraujo
7a817f4989 Remove getList implementation 2023-09-02 15:22:08 -07:00
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
hunteraraujo
3b710b3c7c Add TaskResponse model to encapsulate tasks and pagination data
This commit introduces a new class called TaskResponse, which holds both the tasks and pagination information returned from the API. The class includes a factory constructor to create an instance from JSON data, ensuring that the API response is neatly packaged into an easily manageable object. This enhances code readability and maintainability.

- Create a TaskResponse class with tasks and pagination fields
- Add a factory constructor for JSON to TaskResponse conversion
2023-09-02 15:06:23 -07:00
hunteraraujo
855c7fe8ea Update Task model to include optional fields and adapt factory method
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.
2023-09-02 15:04:00 -07:00
hunteraraujo
e3200d87ba Add Pagination Model for API Responses
Added a new Pagination class to model the pagination data that comes with API responses. This will help in handling paginated data more effectively and transparently.

The Pagination class includes fields for total items, total pages, current page, and page size. It also includes a factory constructor for creating an instance from a JSON object.
2023-09-02 14:58:49 -07:00
hunteraraujo
d7b2a952da Update baseURL to point at forge 2023-09-02 14:47:55 -07:00
hunteraraujo
291f7f2b85 Add CORS Middleware to Resolve XMLHttpRequest Error (#26) 2023-09-02 14:19:45 -07:00
hunteraraujo
ecb9580a13 Integrate Services into main.dart and Update Providers
This commit refactors the main.dart file to include service initialization and dependency injection:

- RestApiUtility Initialization: Initialize the RestApiUtility with a mock API endpoint.
- Service Initialization: Initialize ChatService and TaskService with the created RestApiUtility.
- Dependency Injection: Pass the initialized services to MyApp constructor.
- Provider Update: Replace the ChangeNotifierProvider creation in MultiProvider to use the new ChatViewModel and TaskViewModel initialized with the respective services.

This setup allows for better separation of concerns and easier testing, as the services are now decoupled from the view models.
2023-08-31 15:55:44 -07:00
hunteraraujo
ff7667108f Implement User Interactions in TaskView
This commit adds functionality to handle user interactions in the TaskView class by implementing the onPressed, onTap, and onDelete methods:

- onPressed: Triggered when the "New Task" button is pressed. It clears the current task ID and chat history in the ChatViewModel.
- onTap: Triggered when a task list tile is tapped. It selects the task in TaskViewModel and updates the current task ID in ChatViewModel.
- onDelete: Triggered when the delete button on a task list tile is pressed. It deletes the task from TaskViewModel and clears the current task ID and chat history in ChatViewModel if the deleted task was the current task.

These implementations provide a seamless user experience for managing tasks and associated chats.
2023-08-31 15:50:10 -07:00
hunteraraujo
2df6c5e334 Implement onSendPressed Functionality in ChatView
This commit enhances the ChatView class by implementing the onSendPressed functionality, which is triggered when the user sends a message through the ChatInputField:

- When onSendPressed is triggered, it checks if a task ID is currently selected (currentTaskId in ChatViewModel).
- If a task ID is selected, the message is sent as a chat message for that task using sendChatMessage from ChatViewModel.
- If no task ID is selected, a new task is created using createTask from TaskViewModel, and then the message is sent for that new task.

This change provides a complete workflow for sending chat messages, either within an existing task or by creating a new task.
2023-08-31 15:45:55 -07:00
hunteraraujo
5d865a36d9 Refactor ChatInputField to Use Callback for Sending Messages
This commit brings a key update to the ChatInputField widget, making it more flexible and decoupled:

- The onSendPressed callback now takes a string parameter. This string represents the message that the user wishes to send.
- The onPressed of the send button (IconButton) is now implemented within the ChatInputField widget. It checks if the TextField has any text before calling onSendPressed.
- Added a TextEditingController to manage the TextField's content.
2023-08-31 15:42:33 -07:00
hunteraraujo
deb84cc804 Remove mock data 2023-08-31 15:15:40 -07:00
hunteraraujo
5ae17d009b Update TaskViewModel to Use TaskService and Task API Integration
This commit includes a significant overhaul of the TaskViewModel to use the newly created TaskService and integrate it with the task API. Specifically:

- Removed dependency on mock data for tasks.
- Added real API calls through the TaskService for task operations like creating and fetching tasks.
- Updated createTask to return the ID of the newly created task.
- Updated fetchTasks method to fetch tasks from the API and update the local list.
- Updated selectTask to handle selection based on string IDs.

These changes make the TaskViewModel ready for real-world usage and remove dependencies on mock data.
2023-08-31 15:15:24 -07:00
hunteraraujo
651e112e3d Update ChatViewModel to Use ChatService and Step Model
This commit refactors the ChatViewModel to use the newly created ChatService and Step model for chat-related functionalities. The changes include:

- Replaced mock data source with real API calls via ChatService.
- Introduced _currentTaskId to keep track of the current task ID.
- Added fetchChatsForTask method to fetch steps related to the current task and populate the chat list.
- Implemented sendChatMessage to execute a step and add both user and agent messages to the chat list.

By making these changes, the ChatViewModel is now fully integrated with the backend services and models, thus enabling a more realistic and dynamic chat experience.
2023-08-31 15:11:03 -07:00
hunteraraujo
ae5799fc6a Introduce TaskService Class for Task Operations
This commit adds a new TaskService class to handle all task-related operations, including task creation, listing, and artifacts management.

- Implemented methods for creating a new task (createTask).
- Added functionality to retrieve details for a specific task (getTaskDetails).
- Enabled listing all tasks with optional pagination (listAllTasks).
- Enabled listing all artifacts for a specific task with optional pagination (listTaskArtifacts).

By encapsulating these operations within the TaskService class, this commit provides a clean and centralized way to interact with the backend for task functionalities, making the application more maintainable and easier to extend.
2023-08-31 15:07:05 -07:00
hunteraraujo
078db3105c Introduce ChatService Class for Chat Operations
This commit adds a new ChatService class to handle all chat-related operations, including steps and artifacts.

- Implemented methods for executing a step within a task (executeStep).
- Added functionality to retrieve details for a specific step (getStepDetails).
- Enabled listing all steps for a specific task with optional pagination (listTaskSteps).
- Laid groundwork for artifact uploading (uploadArtifact) and downloading (downloadArtifact), though these are not implemented yet.

By encapsulating these operations within the ChatService class, this commit provides a clean and centralized way to interact with the backend for chat functionalities, making the application more maintainable and easier to extend.
2023-08-31 15:04:57 -07:00
hunteraraujo
ed03a32bc3 Create Step Class to Model Step Information
This commit introduces the Step class to the codebase, designed to model the steps related to tasks.

- Implemented Step class with both required and optional fields.
- Provided a fromMap factory method for easy deserialization from API responses.
- Ensured that optional fields are handled gracefully, providing default values where necessary.

The addition of the Step class lays the foundation for more complex interactions with tasks, including the ability to handle steps with varying levels of information. This makes the application more flexible and robust when interfacing with the backend.
2023-08-31 14:56:32 -07:00
hunteraraujo
0dcdaaf641 Add RestApiUtility Class for HTTP Requests
This commit introduces a new utility class, RestApiUtility, designed to encapsulate all the HTTP request operations.

- Created RestApiUtility class with a constructor that accepts a base URL.
- Added get method to perform GET requests and return data as a Map.
- Added getList method to perform GET requests and return data as a List.
- Added post method to perform POST requests with payload and return data as a Map.

The class uses the http package for making network calls and dart:convert for JSON serialization and deserialization. This centralized approach makes it easier to manage API calls and handle errors across the application.
2023-08-31 14:46:01 -07:00
hunteraraujo
ac692d50e6 Add http dependency 2023-08-31 14:44:03 -07:00
hunteraraujo
1c862be18a Update Task Model to Use String IDs
This commit updates the Task model to use string-based identifiers (id) instead of integers. The change aligns the model with the backend service, which uses string-based UUIDs for task identification.
2023-08-31 14:43:01 -07:00
hunteraraujo
43593d849d Update Chat Model to Use String IDs
This commit updates the Chat model to use string-based identifiers (id and taskId) instead of integers. This change aligns the model with the backend service, which uses string-based UUIDs for task and chat identification.
2023-08-31 14:41:20 -07:00
hunteraraujo
8950ab44be Implement and Test TaskRequestBody Model
This commit adds the TaskRequestBody class, which is designed to encapsulate the request body when creating a new task. The class includes a toJson method for easy serialization to JSON format.

Additionally, unit tests have been written to ensure that the TaskRequestBody object is created with the correct values and that it serializes to the expected JSON structure.

- Added TaskRequestBody class with input and optional additionalInput fields.
- Implemented toJson method for converting an instance of the class to JSON.
- Added unit tests to verify both object creation and JSON serialization.

These changes provide a standardized way to manage the request body when creating new tasks, improving the overall code quality and maintainability.
2023-08-31 14:39:03 -07:00
hunteraraujo
c4d08aefb9 Implement and Test StepRequestBody Model
This commit introduces the StepRequestBody class, designed to encapsulate the request body for sending a chat message in the form of a step. The class includes a toJson method for easy serialization to JSON format.

Additionally, unit tests have been added to ensure that the StepRequestBody object is created with the correct values and that it serializes to the expected JSON format.

- Added StepRequestBody class with input and optional additionalInput fields.
- Implemented toJson method for converting an instance of the class to JSON.
- Added unit tests to verify both object creation and JSON serialization.

These changes provide a robust way to manage the request body for step-based chat messages.
2023-08-31 14:36:35 -07:00
Swifty
bc731e0125 📝 Added template based prompting (#25) 2023-08-31 17:13:00 +02:00
Swifty
edb50d8445 Agent (#24) 2023-08-31 14:45:17 +02:00
SwiftyOS
1c93114a99 Added code to pass the write file test 2023-08-31 14:23:35 +02:00
SwiftyOS
f0f290b0ae removed tracing and monitoring 2023-08-31 11:46:24 +02:00
SwiftyOS
7a933cacb7 Exporting class from the sdk 2023-08-30 12:56:05 +02:00
SwiftyOS
87c6874a54 Added in agent explination 2023-08-30 12:47:29 +02:00
SwiftyOS
80a8b95b8c updated doc string 2023-08-30 11:44:33 +02:00
SwiftyOS
6ae60371f0 Removed test scripts 2023-08-30 11:39:12 +02:00
Swifty
77a726dd79 Updated Artifact Handling to schema 0.4 (#23) 2023-08-30 11:36:57 +02:00
SwiftyOS
13c53b650d Refactored forge to a cleaner layout 2023-08-28 16:25:53 +02:00
SwiftyOS
372c73fb33 fixed page size field 2023-08-28 15:48:37 +02:00
merwanehamadi
d3e86622b7 Fix Forge (#22)
Signed-off-by: Merwane Hamadi <merwanehamadi@gmail.com>
2023-08-26 08:20:12 -07:00
hunteraraujo
803e3f6ef9 Fix various splash radius for icon buttons 2023-08-25 08:12:35 -07:00