summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorfranlol <[email protected]>2025-12-08 02:44:04 +0100
committerGitHub <[email protected]>2025-12-07 19:44:04 -0600
commit81ee8541abd20e67ed1f87a53b8475dd9395b8fa (patch)
tree2dcd18b4eab62a288e088bd7641a4ae3a05fa538
parent5b3550ab9fadb12d4a935eb10bcd4daf797aa2f1 (diff)
downloadopencode-81ee8541abd20e67ed1f87a53b8475dd9395b8fa.tar.gz
opencode-81ee8541abd20e67ed1f87a53b8475dd9395b8fa.zip
feat: add experimental.text.complete plugin hook (#4962)
-rw-r--r--packages/opencode/src/session/processor.ts11
-rw-r--r--packages/plugin/src/index.ts4
2 files changed, 15 insertions, 0 deletions
diff --git a/packages/opencode/src/session/processor.ts b/packages/opencode/src/session/processor.ts
index bf994755c..f1f7dd096 100644
--- a/packages/opencode/src/session/processor.ts
+++ b/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(),
diff --git a/packages/plugin/src/index.ts b/packages/plugin/src/index.ts
index 291d68b79..f00e90482 100644
--- a/packages/plugin/src/index.ts
+++ b/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>
}