Files
gemini-nexus/src/ipc/router.ts
T
2026-01-10 01:07:09 +08:00

57 lines
1.6 KiB
TypeScript

import { app } from './app';
import { theme } from './theme';
import { window } from './window';
import { databaseRouter } from './database/router';
import { accountRouter } from './account/router';
import { cloudRouter } from './cloud/router';
import { configRouter } from './config/router';
import { gatewayRouter } from './gateway/router';
import { os } from '@orpc/server';
import { z } from 'zod';
import { isProcessRunning, closeAntigravity, startAntigravity } from './process/handler';
import { systemHandler } from './system/handler';
// Log middleware setup
const logMiddleware = os.middleware(async (opts: any) => {
const { next, path, meta } = opts;
const requestPath = path || meta?.path || 'unknown';
try {
const result = await next({});
return result;
} catch (err) {
console.error(`[ORPC] Error in handler for ${JSON.stringify(requestPath)}:`, err);
throw err;
}
});
// Explicit Router Definition
export const router = os.use(logMiddleware).router({
ping: os.output(z.string()).handler(async () => 'pong'),
theme,
window,
app,
database: databaseRouter,
// Inline process router to ensure structure
proc: os.router({
isProcessRunning: os.output(z.boolean()).handler(async () => {
return await isProcessRunning();
}),
closeAntigravity: os.output(z.void()).handler(async () => {
await closeAntigravity();
}),
startAntigravity: os.output(z.void()).handler(async () => {
await startAntigravity();
}),
}),
account: accountRouter,
cloud: cloudRouter,
config: configRouter,
gateway: gatewayRouter,
system: systemHandler,
});