|
# Refactor Suggestion for `agent_run` Function in `src/agent.c`
|
|
|
|
## Current State:
|
|
The `agent_run` function is lengthy and handles multiple responsibilities, including request building, response processing, tool execution, and completion logic.
|
|
|
|
## Proposed Refactor:
|
|
Break down `agent_run` into smaller, focused functions:
|
|
|
|
1. **build_request_json**: Handles request JSON creation.
|
|
2. **process_response_choice**: Handles parsing and processing of the response choice.
|
|
3. **check_incomplete_response**: Checks if the response indicates incomplete work.
|
|
4. **execute_tools**: Executes tools when called.
|
|
5. **handle_completion**: Checks for completion conditions.
|
|
|
|
## Benefits:
|
|
- Improved readability and maintainability.
|
|
- Easier testing and debugging.
|
|
- Clear separation of concerns.
|
|
|
|
## Implementation:
|
|
- Extract code segments into dedicated functions.
|
|
- Replace inline code in `agent_run` with calls to these functions.
|
|
|
|
## Example:
|
|
```c
|
|
// Inside agent.c
|
|
static struct json_object *build_request_json(agent_handle agent, const char *role, const char *message) {
|
|
// Implementation
|
|
}
|
|
|
|
static struct json_object *process_response_choice(agent_handle agent, struct json_object *choice) {
|
|
// Implementation
|
|
}
|
|
|
|
// ... other helper functions ...
|
|
|
|
char *agent_run(agent_handle agent, const char *user_message) {
|
|
// Main loop
|
|
// Use helper functions for each responsibility
|
|
}
|
|
```
|
|
|
|
## Conclusion:
|
|
This refactor will make the `agent_run` function more modular, easier to understand, and maintainable.
|
|
|
|
Further detailed code snippets and refactoring steps are documented here for implementation. |