harness uniformization
This commit is contained in:
+7
-29
@@ -3,22 +3,21 @@ import { cors } from 'hono/cors';
|
||||
import { createRouter } from './create-router';
|
||||
import type { HonoVariables } from './create-router';
|
||||
import { authRouter } from './api/auth';
|
||||
import { serverSettingsRouter, settingsPath } from './api/server-settings/server-settings';
|
||||
import { serverSettingsRouter } from './api/server-settings/server-settings';
|
||||
import { landingPageDataRouter } from './api/landing-page-data/landing-page-data';
|
||||
import { updateUserHandler } from './api/users/update-user';
|
||||
import { plansRouter } from './api/plans/plans';
|
||||
import { skillsRouter } from './api/skills/skills';
|
||||
import { tasksRouter } from './api/tasks/tasks';
|
||||
import { processesRouter } from './api/processes/processes';
|
||||
import { sessionsRouter } from './api/claude/sessions';
|
||||
import { opencodeSessionsRouter } from './api/opencode/sessions';
|
||||
import { claudeModelsRouter } from './api/claude/sessions';
|
||||
import { opencodeModelsRouter } from './api/opencode/sessions';
|
||||
import { sessionsRouter } from './api/sessions/sessions';
|
||||
import { scrapeRouter } from './api/scrape/scrape';
|
||||
import { uploadRouter } from './api/upload/upload';
|
||||
import { settingsRouter } from './api/settings/settings';
|
||||
import { taskLogsRouter } from './api/task-logs/task-logs';
|
||||
import { router as fileBrowserRouter } from './api/file-browser/router';
|
||||
import { readdirSync, existsSync } from 'node:fs';
|
||||
import { join } from 'node:path';
|
||||
import { CustomError } from './custom-errors';
|
||||
import { userMiddleware, bodyParser } from './_middlewares';
|
||||
|
||||
@@ -51,36 +50,15 @@ protectedRouter.route('/skills', skillsRouter);
|
||||
protectedRouter.route('/tasks', tasksRouter);
|
||||
protectedRouter.route('/processes', processesRouter);
|
||||
protectedRouter.route('/', sessionsRouter);
|
||||
protectedRouter.route('/opencode', opencodeSessionsRouter);
|
||||
protectedRouter.route('/', claudeModelsRouter);
|
||||
protectedRouter.route('/', opencodeModelsRouter);
|
||||
protectedRouter.route('/scrape', scrapeRouter);
|
||||
protectedRouter.route('/upload', uploadRouter);
|
||||
protectedRouter.route('/user', settingsRouter);
|
||||
protectedRouter.route('/task-logs', taskLogsRouter);
|
||||
protectedRouter.route('/file-browser', fileBrowserRouter);
|
||||
|
||||
// Auto-discover and mount plugin routers, then mount the protected router.
|
||||
// Hono's .route() copies routes at call time, so plugins must be loaded first.
|
||||
export async function loadPlugins() {
|
||||
const pluginsDir = join(import.meta.dir, '../workspaces/plugins');
|
||||
const pluginDirs = readdirSync(pluginsDir, { withFileTypes: true }).filter((d) => d.isDirectory());
|
||||
const settings = await Bun.file(settingsPath)
|
||||
.json()
|
||||
.catch(() => ({}));
|
||||
const pluginSettings: Record<string, boolean> = settings.plugins ?? {};
|
||||
|
||||
for (const dir of pluginDirs) {
|
||||
if (pluginSettings[dir.name] === false) continue;
|
||||
|
||||
const serverIndex = join(pluginsDir, dir.name, 'server', 'index.ts');
|
||||
if (!existsSync(serverIndex)) continue;
|
||||
const mod = await import(serverIndex);
|
||||
if (mod.router && mod.apiPath) {
|
||||
protectedRouter.route(mod.apiPath, mod.router);
|
||||
}
|
||||
}
|
||||
|
||||
honoServer.route('/api', protectedRouter);
|
||||
}
|
||||
honoServer.route('/api', protectedRouter);
|
||||
|
||||
honoServer.onError((error, ctx) => {
|
||||
if (error instanceof CustomError) {
|
||||
|
||||
Reference in New Issue
Block a user