{"record":{"id":"29428de5449fd67e","repo":"paperclipai/paperclip","slug":"configured-opencode-model-is-unavailable-model","errorCode":null,"errorMessage":"Configured OpenCode model is unavailable: ${model}. Available models: ${sample}${models.length > 12 ? \", ...\" : \"\"}","messagePattern":"Configured OpenCode model is unavailable: (.+?)\\. Available models: (.+?)(.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/adapters/opencode-local/src/server/models.ts","lineNumber":348,"sourceCode":"        env: input.env,\n      });\n      if (refreshedModels.some((entry) => entry.id === model)) {\n        return refreshedModels;\n      }\n      if (refreshedModels.length > 0) models = refreshedModels;\n    } catch (err) {\n      console.warn(\n        `[opencode-local] Model availability refresh failed for \"${model}\" (${\n          err instanceof Error ? err.message : String(err)\n        }); preserving the cached availability rejection.`,\n      );\n    }\n\n    const sample = models\n      .slice(0, 12)\n      .map((entry) => entry.id)\n      .join(\", \");\n    throw new Error(\n      `Configured OpenCode model is unavailable: ${model}. Available models: ${sample}${models.length > 12 ? \", ...\" : \"\"}`,\n    );\n  }\n\n  return models;\n}\n\nexport async function listOpenCodeModels(): Promise<AdapterModel[]> {\n  try {\n    return await discoverOpenCodeModelsCached();\n  } catch {\n    return [];\n  }\n}\n\nexport function resetOpenCodeModelsCacheForTests() {\n  discoveryCache.clear();\n}","sourceCodeStart":330,"sourceCodeEnd":366,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/packages/adapters/opencode-local/src/server/models.ts#L330-L366","documentation":"Thrown by ensureOpenCodeModelConfiguredAndAvailable: the model configured in adapterConfig passes format validation and even survives an availability refresh attempt, but it is not in the provider's discovered model list. The error enumerates up to 12 available model ids so the operator can pick a valid one; it means the configured model id is not offered by the connected OpenCode provider (wrong provider prefix, deprecated/renamed model, or stale config).","triggerScenarios":"Thrown at packages/adapters/opencode-local/src/server/models.ts:254 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Choose one of the listed available models for adapterConfig.model."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-09-10T03:14:50.855Z","contentChangedAt":"2026-09-10T03:14:50.855Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}