mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-19 23:05:51 +00:00
49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import { Hono } from "hono";
|
|
import { sessionIngressAuth, acceptCliHeaders } from "../../auth/middleware";
|
|
import { publishSessionEvent } from "../../services/transport";
|
|
import { getSession, updateSessionStatus } from "../../services/session";
|
|
|
|
const app = new Hono();
|
|
|
|
/** POST /v1/code/sessions/:id/worker/events — Write events */
|
|
app.post("/:id/worker/events", acceptCliHeaders, sessionIngressAuth, async (c) => {
|
|
const sessionId = c.req.param("id")!;
|
|
const body = await c.req.json();
|
|
|
|
const events = Array.isArray(body) ? body : [body];
|
|
const published = [];
|
|
for (const evt of events) {
|
|
const result = publishSessionEvent(sessionId, evt.type || "message", evt, "inbound");
|
|
published.push(result);
|
|
}
|
|
|
|
return c.json({ status: "ok", count: published.length }, 200);
|
|
});
|
|
|
|
/** PUT /v1/code/sessions/:id/worker/state — Report worker state */
|
|
app.put("/:id/worker/state", acceptCliHeaders, sessionIngressAuth, async (c) => {
|
|
const sessionId = c.req.param("id")!;
|
|
const body = await c.req.json();
|
|
|
|
if (body.status) {
|
|
updateSessionStatus(sessionId, body.status);
|
|
}
|
|
|
|
return c.json({ status: "ok" }, 200);
|
|
});
|
|
|
|
/** PUT /v1/code/sessions/:id/worker/external_metadata — Report worker metadata (no-op) */
|
|
app.put("/:id/worker/external_metadata", acceptCliHeaders, sessionIngressAuth, async (c) => {
|
|
// TUI's CCRClient calls this for metadata reporting. Accept and discard.
|
|
return c.json({ status: "ok" }, 200);
|
|
});
|
|
|
|
/** POST /v1/code/sessions/:id/worker/events/:eventId/delivery — Delivery tracking (no-op) */
|
|
app.post("/:id/worker/events/:eventId/delivery", acceptCliHeaders, sessionIngressAuth, async (c) => {
|
|
// TUI's CCRClient reports event delivery status (received/processing/processed).
|
|
// Accept and discard — event bus doesn't track per-event delivery.
|
|
return c.json({ status: "ok" }, 200);
|
|
});
|
|
|
|
export default app;
|