// retoor <retoor@molodetz.nl>
#ifndef R_AGENT_H
#define R_AGENT_H
#include "messages.h"
#include "r_error.h"
#include <stdbool.h>
#define AGENT_MAX_ITERATIONS 300
#define AGENT_MAX_TOOL_RETRIES 3
typedef enum {
AGENT_STATE_IDLE,
AGENT_STATE_RUNNING,
AGENT_STATE_EXECUTING_TOOLS,
AGENT_STATE_COMPLETED,
AGENT_STATE_MAX_ITERATIONS,
AGENT_STATE_ERROR
} agent_state_t;
typedef struct agent_t *agent_handle;
agent_handle agent_create(const char *goal, messages_handle messages);
void agent_destroy(agent_handle agent);
void agent_set_max_iterations(agent_handle agent, int max);
void agent_set_verbose(agent_handle agent, bool verbose);
agent_state_t agent_get_state(agent_handle agent);
const char *agent_get_error(agent_handle agent);
int agent_get_iteration_count(agent_handle agent);
char *agent_run(agent_handle agent, const char *user_message);
char *agent_chat(const char *user_message, messages_handle messages);
char *agent_chat_with_limit(const char *user_message, int max_iterations, messages_handle messages);
#endif