/** * OpenCode 2.x 事件桥接 * * v1 的事件形状是 `{ type, properties: {...} }`(或部分分支直接放 properties), * v2 统一成 `{ type, id, created, data: {...} }`。`src/index.ts` 里的事件处理 * 逻辑已经围绕 v1 形状写了大量的防御性提取(`extractSessionIdFromEvent` 等), * 这里把它需要的字段重新塑形,而不是让业务代码分叉出两套事件解析。 */ /** v2 事件的最小形状 */ export interface V2Event { type?: string; data?: Record; properties?: Record; } /** * 把 v2 事件还原成 v1 处理逻辑能够消费的 `{ type, properties }`。 * * 映射规则: * - `session.idle` / `session.deleted` 等:v2 的 `data.sessionID` → v1 的 `properties.sessionID` * - 工具 part 更新:v2 的 `data` 里已经是完整 part 结构,直接透传为 `properties.part` * - 其余事件:`data` 整体作为 properties(字段名一致的直接可用) */ export declare function toV1Event(event: V2Event): { type: string; properties?: Record; }; /** * v2 事件名 → v1 业务逻辑使用的语义类型。 * * 下面是**实测**(OpenCode 2.2.5 真实会话)里出现的事件名,映射原则: * - 只映射 `src/index.ts` 事件处理分支真正消费的语义,其余返回 undefined 直接跳过; * - v2 的 `session.idle` 与 v1 同名,直接透传; * - 子任务失败/取消在 v2 由 `session.execution.failed` / `.interrupted` 表达; * - v2 没有 `message.part.updated` 的同名事件,工具结局改由 `session.tool.*` 表达, * 因此不再映射该类型(v1 分支拿不到 part 也不会误判)。 */ export declare function mapEventType(type: string): string | undefined; //# sourceMappingURL=events.d.ts.map