From 9c4493dd6ce26f95d755754146b5ee1c19b2f2d3 Mon Sep 17 00:00:00 2001 From: Aluzed Date: Wed, 10 Jun 2026 11:04:54 +0200 Subject: [PATCH] fix: don't emit invalid "embedding" output modality OpenCode's model schema validation (tightened in recent releases, e.g. 1.16.x) only accepts text/audio/image/video/pdf as modality values. Emitting `output: ["embedding"]` for embedding models triggers a schema rejection (`config.get: Expected "text" | "audio" | "image" | "video" | "pdf", got "embedding"`) that crashes the TUI on startup ("tui bootstrap failed"). Register embedding models without an explicit `modalities` field so OpenCode applies its defaults instead of rejecting the config. Chat models are unaffected. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/plugin/enhance-config.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugin/enhance-config.ts b/src/plugin/enhance-config.ts index 3f1ad10..da1945c 100644 --- a/src/plugin/enhance-config.ts +++ b/src/plugin/enhance-config.ts @@ -91,10 +91,10 @@ export async function enhanceConfig( // Add additional metadata based on model type if (modelType === 'embedding') { embeddingModelsCount++ - modelConfig.modalities = { - input: ["text"], - output: ["embedding"] - } + // NOTE: OpenCode's model schema only accepts text/audio/image/video/pdf + // as modality values. Emitting "embedding" causes a schema rejection that + // crashes the server on startup, so embedding models are registered without + // an explicit `modalities` field (OpenCode applies its defaults). } else if (modelType === 'chat') { chatModelsCount++ modelConfig.modalities = {