package engine // events.go - 引擎事件类型(pkg/flyto 的完整类型别名). // // 升华改进(ELEVATED): 早期方案 engine.events.go 与 pkg/flyto/events.go 完全重复-- // 每次模型输出事件都要在 provider 层创建对象,再在 engine 层复制一次(共两次分配). // 改为类型别名后: // 1. 零额外分配:provider 输出的 flyto.Event 直接传递给消费层,无需包装 // 2. 类型统一:engine.TextDeltaEvent IS flyto.TextDeltaEvent,消费层用哪个都等价 // 3. 引擎外部事件(SubAgentEvent/PlanProgressEvent)直接实现 flyto.Event,因为 EventType() // 是导出方法,任何包的类型都能实现(彻底解除"密封接口"限制) // // 历史包袱(LEGACY): 原 Event 接口用 unexported eventType() 密封-- // 只有 flyto 包内的类型才能实现该接口,外部 provider 无法创建合法的 flyto.Event. // 这个限制在 SSE 重构后已无意义(provider 就应该产出 flyto.Event), // 改为 exported EventType() 解除密封,同时保持接口名称不变(向后兼容 type switch). // 替代方案:<保留 unexported eventType,所有 engine 专有类型移入 flyto> // - 否决:PlanProgressEvent 依赖 PlanProgressSnapshot/StepProgress 等重型内部类型, // 强行移入 flyto 会让 flyto 包承载过多引擎内部细节,违反包职责分离. import "git.flytoex.net/yuanwei/flyto-agent/pkg/flyto" // --- 基础接口 --- // Event 是所有引擎事件的接口(flyto.Event 的别名). // Run() 返回 <-chan Event,消费层通过 type switch 处理具体事件类型. type Event = flyto.Event // --- 文本输出事件 --- type TextDeltaEvent = flyto.TextDeltaEvent type TextEvent = flyto.TextEvent // --- 思考事件(仅 extended thinking 的 provider 发出)--- type ThinkingDeltaEvent = flyto.ThinkingDeltaEvent type ThinkingEvent = flyto.ThinkingEvent // --- 工具事件 --- type ToolUseEvent = flyto.ToolUseEvent type ToolResultEvent = flyto.ToolResultEvent type ToolProgressEvent = flyto.ToolProgressEvent // --- 权限事件 --- type PermissionRequestEvent = flyto.PermissionRequestEvent // --- 会话事件 --- type TurnStartEvent = flyto.TurnStartEvent type TurnEndEvent = flyto.TurnEndEvent type CompactEvent = flyto.CompactEvent // --- 终止事件 --- type DoneEvent = flyto.DoneEvent type ErrorEvent = flyto.ErrorEvent // --- 会话信息事件 --- type SessionInfoEvent = flyto.SessionInfoEvent // --- 权限学习事件 --- type PermissionLearnEvent = flyto.PermissionLearnEvent type PermissionLearnRule = flyto.PermissionLearnRule // --- 警告事件 --- type WarningEvent = flyto.WarningEvent const ( WarnTokenUsageHigh = flyto.WarnTokenUsageHigh WarnBudgetNearLimit = flyto.WarnBudgetNearLimit WarnSessionExpiring = flyto.WarnSessionExpiring ) // --- 工具摘要事件 --- type ToolSummaryEvent = flyto.ToolSummaryEvent // --- 斜杠命令事件 --- type SlashCommandEvent = flyto.SlashCommandEvent // --- Checkpoint 事件 --- type CheckpointEvent = flyto.CheckpointEvent // CheckpointSuggestedEvent 引擎静态分析高风险操作时推送的建议事件(不阻塞执行). // 详见 flyto.CheckpointSuggestedEvent 文档. type CheckpointSuggestedEvent = flyto.CheckpointSuggestedEvent // --- UDS Inbox 事件 --- type InboxMessageEvent = flyto.InboxMessageEvent