autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
115 lines (114 loc) • 3.59 kB
TypeScript
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;