2025-03-16 17:17:01 +08:00
|
|
|
#include "agent/manus.h"
|
|
|
|
#include "logger.h"
|
2025-03-17 01:58:37 +08:00
|
|
|
#include "prompt.h"
|
2025-03-16 17:17:01 +08:00
|
|
|
|
2025-03-16 22:56:03 +08:00
|
|
|
#if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__))
|
|
|
|
#include <signal.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#elif defined (_WIN32)
|
|
|
|
#define WIN32_LEAN_AND_MEAN
|
|
|
|
#ifndef NOMINMAX
|
|
|
|
#define NOMINMAX
|
|
|
|
#endif
|
|
|
|
#include <windows.h>
|
|
|
|
#include <signal.h>
|
|
|
|
#endif
|
|
|
|
|
2025-03-16 17:17:01 +08:00
|
|
|
using namespace humanus;
|
|
|
|
|
2025-03-16 22:56:03 +08:00
|
|
|
#if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__)) || defined (_WIN32)
|
|
|
|
static void sigint_handler(int signo) {
|
|
|
|
if (signo == SIGINT) {
|
2025-03-17 01:58:37 +08:00
|
|
|
logger->info("Received SIGINT, exiting...");
|
2025-03-16 22:56:03 +08:00
|
|
|
exit(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2025-03-16 17:17:01 +08:00
|
|
|
int main() {
|
2025-03-16 22:56:03 +08:00
|
|
|
|
|
|
|
// ctrl+C handling
|
|
|
|
{
|
|
|
|
#if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__))
|
|
|
|
struct sigaction sigint_action;
|
|
|
|
sigint_action.sa_handler = sigint_handler;
|
|
|
|
sigemptyset (&sigint_action.sa_mask);
|
|
|
|
sigint_action.sa_flags = 0;
|
|
|
|
sigaction(SIGINT, &sigint_action, NULL);
|
|
|
|
#elif defined (_WIN32)
|
|
|
|
auto console_ctrl_handler = +[](DWORD ctrl_type) -> BOOL {
|
|
|
|
return (ctrl_type == CTRL_C_EVENT) ? (sigint_handler(SIGINT), true) : false;
|
|
|
|
};
|
|
|
|
SetConsoleCtrlHandler(reinterpret_cast<PHANDLER_ROUTINE>(console_ctrl_handler), true);
|
|
|
|
#endif
|
|
|
|
}
|
2025-03-16 17:17:01 +08:00
|
|
|
Manus agent = Manus();
|
|
|
|
while (true) {
|
|
|
|
std::string prompt;
|
|
|
|
std::cout << "Enter your prompt (or 'exit' to quit): ";
|
|
|
|
std::getline(std::cin, prompt);
|
|
|
|
if (prompt == "exit") {
|
|
|
|
logger->info("Goodbye!");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
logger->info("Processing your request...");
|
|
|
|
agent.run(prompt);
|
|
|
|
}
|
|
|
|
}
|