(model: OpencodeGoModel)
| 55 | * @returns Normalised model metadata suitable for the model picker. |
| 56 | */ |
| 57 | export const parseOpencodeGoModel = (model: OpencodeGoModel): ModelInfo => { |
| 58 | const native = getOpencodeGoModelInfo(model.id) |
| 59 | |
| 60 | // Live endpoint values take precedence over the registry for volatile fields. |
| 61 | const liveContextWindow = model.context_window ?? model.context_length |
| 62 | const liveMaxTokens = model.max_output_tokens ?? model.max_tokens |
| 63 | const liveSupportsImages = model.supports_images |
| 64 | |
| 65 | if (native) { |
| 66 | return { |
| 67 | ...native, |
| 68 | ...(liveContextWindow !== undefined && { contextWindow: liveContextWindow }), |
| 69 | ...(liveMaxTokens !== undefined && { maxTokens: liveMaxTokens }), |
| 70 | ...(liveSupportsImages !== undefined && { supportsImages: liveSupportsImages }), |
| 71 | description: model.description ?? model.name ?? native.description, |
| 72 | } |
| 73 | } |
| 74 | |
| 75 | return { |
| 76 | maxTokens: liveMaxTokens ?? opencodeGoDefaultModelInfo.maxTokens, |
| 77 | contextWindow: liveContextWindow ?? opencodeGoDefaultModelInfo.contextWindow, |
| 78 | supportsImages: liveSupportsImages ?? false, |
| 79 | supportsPromptCache: false, |
| 80 | description: model.description ?? model.name, |
| 81 | } |
| 82 | } |
| 83 | |
| 84 | /** |
| 85 | * Fetches the list of available models from the Opencode Go `/models` endpoint. |
no test coverage detected