Просмотр исходного кода

feat: add experimental.text.complete plugin hook (#4962)

franlol 2 месяцев назад
Родитель
Сommit
81ee8541ab
2 измененных файлов с 15 добавлено и 0 удалено
  1. 11 0
      packages/opencode/src/session/processor.ts
  2. 4 0
      packages/plugin/src/index.ts

+ 11 - 0
packages/opencode/src/session/processor.ts

@@ -10,6 +10,7 @@ import { SessionSummary } from "./summary"
 import { Bus } from "@/bus"
 import { SessionRetry } from "./retry"
 import { SessionStatus } from "./status"
+import { Plugin } from "@/plugin"
 import type { Provider } from "@/provider/provider"
 
 export namespace SessionProcessor {
@@ -316,6 +317,16 @@ export namespace SessionProcessor {
                 case "text-end":
                   if (currentText) {
                     currentText.text = currentText.text.trimEnd()
+                    const textOutput = await Plugin.trigger(
+                      "experimental.text.complete",
+                      {
+                        sessionID: input.sessionID,
+                        messageID: input.assistantMessage.id,
+                        partID: currentText.id,
+                      },
+                      { text: currentText.text },
+                    )
+                    currentText.text = textOutput.text
                     currentText.time = {
                       start: Date.now(),
                       end: Date.now(),

+ 4 - 0
packages/plugin/src/index.ts

@@ -175,4 +175,8 @@ export interface Hooks {
       metadata: any
     },
   ) => Promise<void>
+  "experimental.text.complete"?: (
+    input: { sessionID: string; messageID: string; partID: string },
+    output: { text: string },
+  ) => Promise<void>
 }