diegosouzapw/OmniRoute · error · Error

Volcano plan model discovery ( ) failed ` : ""}

Error message

Volcano ${kind} plan model discovery (${cfg.action}) failed${result.error ? `: ${result.error}` : ""}

What it means

Thrown by fetchVolcPlanModels when the direct Volcano console API call for the plan's model-discovery action returns not-ok, with the console error appended when available. The plan itself is active (detectPlan passed) and credentials/AccountId were valid, so this is a per-action failure: console API error, permission change, or Volcano-side outage. Throwing (instead of returning []) protects the user's synced model catalog from being erased by a bad response.

Solutions

  1. Inspect the appended result.error (and callConsoleApiDirect logs) for the console's error code; auth errors → re-bind, 5xx → retry later.
  2. Verify the plan's discovery action/payload config in PLAN_DISCOVERY_CONFIG is still current with Volcano's console API.
  3. Retry the model sync after the console recovers; models are preserved because discovery aborts on error.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/lib/providers/volcenginePlanModelDiscovery.ts:383 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25). Data as JSON: /api/errors/54ddcc40ee47aacd. Report an issue: GitHub.

Appendix: source

Thrown at src/lib/providers/volcenginePlanModelDiscovery.ts:383

  const payload: JsonRecord = { ...cfg.payload };
  if (cfg.requiresAccountId) {
    const accountId = extractAccountId(cookieHeader);
    if (accountId === null) {
      throw new Error(
        `Volcano ${kind} plan discovery requires AccountId, but none found in console cookie — re-bind the plan`
      );
    }
    payload.AccountId = accountId;
  }
  const result = await callConsoleApiDirect(
    cfg.action,
    payload,
    cookieHeader,
    csrfToken,
    cfg.referer
  );
  if (!result.ok) {
    throw new Error(
      `Volcano ${kind} plan model discovery (${cfg.action}) failed${result.error ? `: ${result.error}` : ""}`
    );
  }

  const discovered = parseLatestModelList(result.json);
  if (discovered.length === 0) {
    throw new Error(`Volcano ${kind} plan returned no usable models`);
  }
  return discovered.map(enrichModel);
}

export function providerToVolcPlanKind(providerId: string): VolcPlanKind | null {
  const id = providerId.trim().toLowerCase();
  if (id === "volcengine-agent-plan") return "agent";
  if (id === "volcengine-coding-plan") return "coding";
  return null;
}

View on GitHub (pinned to a179ffed5b)