diff --git a/packages/provider-opencode/src/server/adapter.test.ts b/packages/provider-opencode/src/server/adapter.test.ts index 2ef7f2c5bbd02..5313eb72a9d8f 100644 --- a/packages/provider-opencode/src/server/adapter.test.ts +++ b/packages/provider-opencode/src/server/adapter.test.ts @@ -2507,7 +2507,14 @@ describe("OpenCodeAdapterV2", () => { method: "session.prompt", payload: { prompt: secret, nested: { token: secret } }, }); + yield* logProtocolEvent({ + direction: "incoming", + messageKind: "notification", + method: "message.part.delta", + payload: { type: "message.part.delta", properties: { delta: secret } }, + }); + assert.lengthOf(records, 1); const serialized = encodeUnknownJson(records); assert.notInclude(serialized, secret); assert.include(serialized, '"protocol":"opencode-sdk.sse"'); diff --git a/packages/provider-opencode/src/server/adapter.ts b/packages/provider-opencode/src/server/adapter.ts index 271259631ea4c..b32528257944f 100644 --- a/packages/provider-opencode/src/server/adapter.ts +++ b/packages/provider-opencode/src/server/adapter.ts @@ -446,7 +446,8 @@ export function makeOpenCodeProtocolLogger(input: { }): (event: OpenCodeProtocolLogEvent) => Effect.Effect { return (event) => Effect.gen(function* () { - if (!input.nativeEventLogger) return; + // Per-token deltas; the part's final message.part.updated is still logged. + if (!input.nativeEventLogger || event.method === "message.part.delta") return; const observedAt = DateTime.formatIso(yield* DateTime.now); const method = structuralProtocolMethod(event.method); yield* input.nativeEventLogger.write(