mirror of
https://github.com/saltbo/agent-kanban.git
synced 2026-09-19 09:01:47 +08:00
47 lines
2.2 KiB
TypeScript
47 lines
2.2 KiB
TypeScript
import { authMiddleware } from "@server/auth/middleware";
|
|
import type { Env } from "@server/env";
|
|
import { registerAgentRoutes } from "@server/http/agents/routes";
|
|
import { registerAuthRoutes } from "@server/http/auth/routes";
|
|
import { registerBoardRoutes } from "@server/http/boards/routes";
|
|
import { registerGithubApplicationRoutes, registerGithubWebhookRoutes } from "@server/http/github/routes";
|
|
import { registerMachineRoutes } from "@server/http/machines/routes";
|
|
import { createAccessLogMiddleware } from "@server/http/middleware/accessLog";
|
|
import { idempotencyMiddleware, resourceServerErrorHandler } from "@server/http/middleware/idempotency";
|
|
import { requestContextMiddleware } from "@server/http/middleware/requestContext";
|
|
import { isPublishedV2Operation, v2ApiVersionMiddleware } from "@server/http/middleware/v2Contract";
|
|
import { registerPublicRoutes } from "@server/http/public/routes";
|
|
import { registerRepositoryRoutes } from "@server/http/repositories/routes";
|
|
import { registerResourceServerRoutes } from "@server/http/resource-server/routes";
|
|
import { registerTaskResourceRoutes } from "@server/http/tasks/resourceRoutes";
|
|
import { registerTaskWorkflowRoutes } from "@server/http/tasks/routes";
|
|
import { createLogger } from "@server/observability/logger";
|
|
import { Hono } from "hono";
|
|
|
|
const api = new Hono<{ Bindings: Env }>();
|
|
const logger = createLogger("api");
|
|
|
|
api.use("*", requestContextMiddleware);
|
|
api.use("*", createAccessLogMiddleware(logger));
|
|
api.onError(resourceServerErrorHandler);
|
|
|
|
// Public routes must be registered before the protected /api middleware.
|
|
registerAuthRoutes(api);
|
|
registerResourceServerRoutes(api);
|
|
registerGithubWebhookRoutes(api);
|
|
registerPublicRoutes(api);
|
|
api.get("/api/ping", (c) => c.json({ pong: true }));
|
|
|
|
api.use("/api/*", (c, next) => (isPublishedV2Operation(c.req.method, c.req.path) ? v2ApiVersionMiddleware(c, next) : next()));
|
|
api.use("/api/*", (c, next) => (c.req.path.startsWith("/api/auth/") ? next() : authMiddleware(c, next)));
|
|
api.use("/api/*", idempotencyMiddleware);
|
|
|
|
registerTaskWorkflowRoutes(api);
|
|
registerTaskResourceRoutes(api);
|
|
registerBoardRoutes(api);
|
|
registerAgentRoutes(api);
|
|
registerMachineRoutes(api);
|
|
registerGithubApplicationRoutes(api);
|
|
registerRepositoryRoutes(api);
|
|
|
|
export { api };
|