mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-18 06:15:51 +00:00
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { Hono } from "hono";
|
|
import { createCodeSession, getSession, incrementEpoch } from "../../services/session";
|
|
import { apiKeyAuth, acceptCliHeaders } from "../../auth/middleware";
|
|
import { generateWorkerJwt } from "../../auth/jwt";
|
|
import { getBaseUrl, config } from "../../config";
|
|
|
|
const app = new Hono();
|
|
|
|
/** POST /v1/code/sessions — Create code session (wrapped response for TUI compat) */
|
|
app.post("/", acceptCliHeaders, apiKeyAuth, async (c) => {
|
|
const body = await c.req.json();
|
|
const session = createCodeSession(body);
|
|
return c.json({ session }, 200);
|
|
});
|
|
|
|
/** POST /v1/code/sessions/:id/bridge — Get connection info + worker JWT */
|
|
app.post("/:id/bridge", acceptCliHeaders, apiKeyAuth, async (c) => {
|
|
const sessionId = c.req.param("id")!;
|
|
const session = getSession(sessionId);
|
|
if (!session) {
|
|
return c.json({ error: { type: "not_found", message: "Session not found" } }, 404);
|
|
}
|
|
|
|
const epoch = incrementEpoch(sessionId);
|
|
const expiresInSeconds = config.jwtExpiresIn;
|
|
const workerJwt = generateWorkerJwt(sessionId, expiresInSeconds);
|
|
|
|
return c.json({
|
|
api_base_url: getBaseUrl(),
|
|
worker_epoch: epoch,
|
|
worker_jwt: workerJwt,
|
|
expires_in: expiresInSeconds,
|
|
}, 200);
|
|
});
|
|
|
|
export default app;
|