1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import { Hono } from "hono";
import { cors } from "hono/cors";
import { AgentManager } from "./agent-manager.js";
export const agentManager = new AgentManager();
export const app = new Hono();
app.use(
"*",
cors({
origin: "http://localhost:5173",
credentials: true,
allowHeaders: ["Content-Type", "Authorization"],
allowMethods: ["GET", "POST", "OPTIONS"],
}),
);
app.get("/health", (c) => {
return c.json({ ok: true });
});
app.get("/status", (c) => {
return c.json({
status: agentManager.getStatus(),
messageCount: agentManager.getMessageCount(),
});
});
app.post("/chat", async (c) => {
const body = await c.req.json<{ message?: unknown }>();
const message = body.message;
if (typeof message !== "string" || message.trim() === "") {
return c.json({ error: "message must be a non-empty string" }, 400);
}
if (agentManager.getStatus() === "running") {
return c.json({ error: "agent is already running" }, 409);
}
// Non-blocking — let the agent run in the background
agentManager.processMessage(message).catch(console.error);
return c.json({ status: "ok" });
});
|