multica/src/console/app.module.ts
yushen dcca9333ab Add Hub Console with agent management and message routing
Implement Hub that auto-connects to Gateway, manages agents via REST API,
and routes WebSocket messages to agents by payload.agentId with echo responses
sent back to the original sender.

- Add Hub with GatewayClient auto-connect, agent CRUD, and message routing
- Add Console (NestJS) with REST API and static pages (management + demo client)
- Switch Gateway registration from explicit event to query-based on connect
- Remove deprecated types (RegisterPayload, metadata, SendMessagePayload)
- Add @nestjs/serve-static for serving console UI

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 16:14:29 +08:00

48 lines
1.2 KiB
TypeScript

import { Module } from "@nestjs/common";
import { ServeStaticModule } from "@nestjs/serve-static";
import { LoggerModule } from "nestjs-pino";
import { join } from "node:path";
import { fileURLToPath } from "node:url";
import { AppController } from "./app.controller.js";
import { Hub } from "../hub/hub.js";
const __dirname = fileURLToPath(new URL(".", import.meta.url));
const isDev = process.env["NODE_ENV"] !== "production";
@Module({
imports: [
ServeStaticModule.forRoot({
rootPath: join(__dirname, "public"),
serveRoot: "/",
exclude: ["/api/(.*)"],
}),
LoggerModule.forRoot({
pinoHttp: isDev
? {
transport: {
target: "pino-pretty",
options: {
colorize: true,
singleLine: true,
},
},
level: process.env["LOG_LEVEL"] ?? "debug",
}
: {
level: process.env["LOG_LEVEL"] ?? "info",
},
}),
],
controllers: [AppController],
providers: [
{
provide: "HUB",
useFactory: () => {
const gatewayUrl =
process.env["GATEWAY_URL"] ?? "http://localhost:3000";
return new Hub(gatewayUrl);
},
},
],
})
export class AppModule {}