UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

115 lines (114 loc) 3.59 kB
import EventEmitter from 'node:events'; export interface GatewayConfig { [key: string]: unknown; } export interface GatewayRequest { actor: string; action: string; resource?: string; data?: Record<string, unknown>; session?: string; confirmed?: boolean; } export interface GatewayContext { requestId: string; actor: string; action: string; resource: string | undefined; data: Record<string, unknown>; session: string | undefined; startTime: number; } export interface GatewayResult { success: boolean; requestId: string; data?: unknown; error?: { message: string; code: string; statusCode: number; }; duration?: number; } interface AuditLogger { log(entry: Record<string, unknown>): Promise<void>; } interface EventBus { emit(event: string, data: Record<string, unknown>): void; } interface ConstitutionLike { getRules?(): unknown[]; rules?: unknown[]; } interface ConstitutionValidatorLike { enforce(request: Record<string, unknown>): Promise<unknown>; } interface PermissionManagerLike { enforce(actor: string, action: string, resource: string | undefined): void; } export interface GatewayDependencies { constitution?: ConstitutionLike | null; constitutionValidator?: ConstitutionValidatorLike | null; permissionManager?: PermissionManagerLike | null; auditLogger?: AuditLogger | null; } /** * Gateway - 统一网关 * 所有操作的唯一入口。 * * Pipeline (4 步): * validate → guard → route → audit */ export declare class Gateway extends EventEmitter { auditLogger: AuditLogger | null; config: GatewayConfig | undefined; constitution: ConstitutionLike | null; constitutionValidator: ConstitutionValidatorLike | null; eventBus: EventBus | null; logger: import("winston").Logger; permissionManager: PermissionManagerLike | null; routes: Map<string, (ctx: GatewayContext) => Promise<unknown>>; constructor(config?: GatewayConfig); /** 设置依赖 */ setDependencies({ constitution, constitutionValidator, permissionManager, auditLogger, }: GatewayDependencies): void; /** 注册路由处理器 */ register(action: string, handler: (ctx: GatewayContext) => Promise<unknown>): void; /** 获取已注册的 action 列表 */ getRegisteredActions(): string[]; /** 执行操作(主入口) */ execute(request: GatewayRequest): Promise<GatewayResult>; /** * 仅检查权限与宪法(不执行业务逻辑) * 用于 MCP Gateway gating */ checkOnly(request: GatewayRequest): Promise<{ success: boolean; requestId: string; error?: undefined; } | { success: boolean; requestId: string; error: { message: string; code: string; statusCode: number; }; }>; /** validate — 验证请求格式 */ validateRequest(request: GatewayRequest): void; /** guard — 权限检查 + 宪法验证 */ guard(context: GatewayContext): Promise<void>; /** route — 路由到处理器 */ routeToHandler(context: GatewayContext): Promise<unknown>; /** audit — 记录成功 */ auditSuccess(context: GatewayContext, result: unknown): Promise<void>; /** audit — 记录失败 */ auditFailure(context: GatewayContext, error: { message: string; code?: string; statusCode?: number; }): Promise<void>; /** 获取所有注册的路由 */ getRoutes(): string[]; } export default Gateway;