UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

82 lines (81 loc) 2.64 kB
/** * AgentEventBus — Agent 间事件通信总线 * * 借鉴 AutoGen Core Event-Driven 架构 + RxJS Observable 模式: * - Agent 间松耦合通信(publish/subscribe) * - 支持同步和异步事件处理 * - 内置事件过滤、优先级、TTL * - 支持 request/reply 模式(Agent 间 RPC) * * @module AgentEventBus */ import { EventEmitter } from 'node:events'; /** 标准事件类型 */ export declare const AgentEvents: Readonly<{ AGENT_CREATED: "agent:created"; AGENT_STARTED: "agent:started"; AGENT_COMPLETED: "agent:completed"; AGENT_FAILED: "agent:failed"; AGENT_ABORTED: "agent:aborted"; TOOL_CALL_START: "tool:call:start"; TOOL_CALL_END: "tool:call:end"; LLM_CALL_START: "llm:call:start"; LLM_CALL_END: "llm:call:end"; STEP_COMPLETED: "step:completed"; HANDOFF_REQUEST: "handoff:request"; HANDOFF_ACCEPT: "handoff:accept"; HANDOFF_RESULT: "handoff:result"; PROGRESS: "progress"; THINKING: "thinking"; STREAM_DELTA: "stream:delta"; USER_INPUT: "user:input"; LARK_MESSAGE: "lark:message"; SCAN_REQUEST: "scan:request"; }>; export declare class AgentEventBus extends EventEmitter { #private; constructor(); /** 获取全局单例 */ static getInstance(): AgentEventBus; /** 重置单例(测试用) */ static resetInstance(): void; /** * 发布事件(广播) * @param type 事件类型 * @param payload 事件数据 * @param [opts.source] 发送者 agentId * @param [opts.target] 目标 agentId * @param [opts.correlationId] 关联 ID */ publish(type: string, payload?: Record<string, unknown>, opts?: { source?: string; target?: string; correlationId?: string; }): void; /** * 订阅事件 * @param type 事件类型 * @param handler 处理函数 (event) => void * @returns 取消订阅函数 */ subscribe(type: string, handler: (event: Record<string, unknown>) => void): () => void; /** * Request/Reply 模式 — 发送请求并等待响应 * @param requestType 请求事件类型 * @param payload 请求数据 * @param [opts.timeout=30000] 超时毫秒 * @param [opts.source] 发送者 * @returns 响应事件 */ request(requestType: string, payload?: Record<string, unknown>, opts?: { timeout?: number; source?: string; }): Promise<unknown>; /** 获取事件统计 */ getStats(): { totalEvents: number; subscriptionTopics: number; pendingReplies: number; }; } export default AgentEventBus;