/** * 根路由器 - 平台事件统一调度入口 * * 职责: * - 接收来自各平台适配器的事件 * - 根据事件类型路由到对应处理器 * - 保持 Feishu 现有行为不变(pass-through 模式) * * 设计原则: * - 仅编排,不包含业务逻辑 * - 通过回调注入实现业务逻辑委托 * - 现阶段保持 legacy 兼容行为 */ import type { FeishuMessageEvent, FeishuCardActionEvent } from '../feishu/client.js'; import type { PlatformMessageEvent, PlatformActionEvent } from '../platform/types.js'; /** * 卡片动作处理结果 */ export interface CardActionResponse { toast?: { type: 'success' | 'error'; content: string; i18n_content?: { zh_cn: string; en_us: string; }; }; msg?: string; } /** * Timeline 回调接口(由 index.ts 注入) */ export interface TimelineCallbacks { upsertTimelineNote: (bufferKey: string, noteKey: string, text: string, variant?: 'retry' | 'compaction' | 'question' | 'error' | 'permission') => void; } /** * 权限动作回调接口(由 index.ts 注入) */ export interface PermissionActionCallbacks { /** * 处理权限确认动作(卡片按钮点击) * @returns 处理结果,包含 toast 信息 */ handlePermissionAction: (actionValue: Record, action: 'permission_allow' | 'permission_deny') => Promise; /** * 处理群聊文本消息中的待确认权限 * @returns 是否已处理(已处理则跳过后续消息处理) */ tryHandlePendingPermissionByText: (event: FeishuMessageEvent) => Promise; } /** * 问题动作回调接口(由 index.ts 注入) */ export interface QuestionActionCallbacks { /** * 处理问题跳过动作 * @returns 处理结果,包含 toast 信息 */ handleQuestionSkipAction: (event: FeishuCardActionEvent, actionValue: Record) => Promise; } /** * 根路由器类 */ export declare class RootRouter { private permissionCallbacks; private questionCallbacks; private shouldSkipGroupMessage; /** * 设置权限动作回调(由 index.ts 注入) */ setPermissionCallbacks(callbacks: PermissionActionCallbacks): void; /** * 设置问题动作回调(由 index.ts 注入) */ setQuestionCallbacks(callbacks: QuestionActionCallbacks): void; /** * 处理平台消息事件(入站消息) */ onMessage(event: FeishuMessageEvent | PlatformMessageEvent): Promise; /** * 处理平台动作事件(卡片/按钮交互) */ onAction(event: FeishuCardActionEvent | PlatformActionEvent): Promise; /** * 处理 OpenCode 事件(内部事件) */ onOpenCodeEvent(event: { type: string; payload: unknown; }): Promise; private handleFeishuCardAction; } export declare const rootRouter: RootRouter; //# sourceMappingURL=root-router.d.ts.map