From d8a368a820f06292c6c54f207c4d5d6956bcda60 Mon Sep 17 00:00:00 2001 From: xbjpku <2000012953@stu.pku.edu.cn> Date: Mon, 20 Apr 2026 16:57:12 +0800 Subject: [PATCH] feat: add session.turn.completed bus event for plugin hooks --- packages/opencode/src/session/prompt.ts | 3 +++ packages/opencode/src/session/session.ts | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 431189d19cc0..d86d45860794 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1527,6 +1527,9 @@ NOTE: At any point in time through this workflow you should feel free to ask the continue } + // Notify plugins that the turn is complete + yield* bus.publish(Session.Event.TurnCompleted, { sessionID }) + yield* compaction.prune({ sessionID }).pipe(Effect.ignore, Effect.forkIn(scope)) return yield* lastAssistant(sessionID) }, diff --git a/packages/opencode/src/session/session.ts b/packages/opencode/src/session/session.ts index ba144da9f030..cb9e60cd8f53 100644 --- a/packages/opencode/src/session/session.ts +++ b/packages/opencode/src/session/session.ts @@ -250,6 +250,12 @@ export const Event = { error: z.lazy(() => MessageV2.Assistant.shape.error), }), ), + TurnCompleted: BusEvent.define( + "session.turn.completed", + z.object({ + sessionID: SessionID.zod, + }), + ), } export function plan(input: { slug: string; time: { created: number } }) {