{"record":{"id":"aa085da2f1d211f6","repo":"diegosouzapw/OmniRoute","slug":"no-vision-capable-provider-connected-cannot-proce","errorCode":null,"errorMessage":"No vision-capable provider connected, cannot process image request","messagePattern":"No vision-capable provider connected, cannot process image request","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lib/guardrails/visionBridgeHelpers.ts","lineNumber":402,"sourceCode":"  if (config.signal?.aborted) {\n    throw new Error(\"Vision model call aborted\");\n  }\n\n  // Auto-select the best vision model. `deps` is the router's existing\n  // injectable credential-check seam — without forwarding it, tests (and any\n  // embedder) cannot keep model selection away from the live connections DB.\n  const modelToUse = await getBestVisionModel(\n    {\n      fixedModel: config.model,\n      ...routerConfig,\n    },\n    deps\n  );\n  // (#8430) When no vision-capable provider has usable credentials on this\n  // instance, surface a clear error instead of attempting a describe call that\n  // would fail with an opaque auth/serde error upstream.\n  if (!modelToUse) {\n    throw new Error(\"No vision-capable provider connected, cannot process image request\");\n  }\n  let lastError: Error | null = null;\n\n  // Try primary model + fallbacks\n  const modelsToTry = [modelToUse, ...(await getFallbackModels(modelToUse, routerConfig, deps))];\n  const maxAttempts = Math.min(modelsToTry.length, routerConfig?.maxFallbackAttempts ?? 3);\n\n  for (let attempt = 0; attempt < maxAttempts; attempt++) {\n    if (config.signal?.aborted) {\n      throw lastError ?? new Error(\"Vision model call aborted\");\n    }\n    const currentModel = modelsToTry[attempt];\n    const attemptStart = Date.now();\n    try {\n      const result = await callVisionModelSingle(\n        imageDataUri,\n        { ...config, model: currentModel },\n        apiKey","sourceCodeStart":384,"sourceCodeEnd":420,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/src/lib/guardrails/visionBridgeHelpers.ts#L384-L420","documentation":"Error \"No vision-capable provider connected, cannot process image request\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at src/lib/guardrails/visionBridgeHelpers.ts:402 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}