continuedev/continue · error · Error

no url found

Error message

no url found

What it means

The gemini streaming branch requires this.genAI (a GoogleGenAI instance), which is only constructed when apiKey/express mode is configured. Reaching this case with genAI unset means the adapter state is inconsistent with the routing decision.

Source

Thrown at core/context/mcp/MCPOauth.ts:37

interface MCPOauthContext {
  serverId: string;
  ide: IDE;
  state?: string;
}
const authenticatingContexts = new Map<string, MCPOauthContext>();

// Map state parameters to server URLs for OAuth callback matching
const stateToServerUrl = new Map<string, string>();

const PORT = 3000;

let serverInstance: http.Server | null = null;

const createServerForOAuth = () =>
  http.createServer((req, res) => {
    try {
      if (!req.url) {
        throw new Error("no url found");
      }

      const parsedUrl = url.parse(req.url, true);
      if (!parsedUrl.query["code"]) {
        throw new Error("no query params found");
      }

      const code = parsedUrl.query["code"] as string;
      const state = parsedUrl.query["state"] as string | undefined;

      void handleMCPOauthCode(code, state);

      const html = `
<!DOCTYPE html>
<html>
<head><title>Authentication Complete</title></head>
<body>Authentication Complete. You can close this page now.</body>
</html>`;

View on GitHub (pinned to 5522c6f44c)

Solutions

  1. Provide apiKey for gemini streaming via the GenAI path, or ensure the OAuth path routes gemini correctly
  2. Construct a fresh adapter with a complete, immutable config rather than mutating one
  3. Update the adapter — init/routing coupling may be fixed in newer versions

Example fix

// before
new VertexAIApi({ keyJson: SA }); // then gemini stream hits missing genAI

// after
new VertexAIApi({ apiKey: process.env.GEMINI_API_KEY }); // express mode initializes genAI
Defensive patterns

Strategy: validation

Validate before calling

if (provider === 'vertexai' && /gemini/i.test(body.model) && !apiConfig.apiKey) throw new Error('gemini GenAI path requires apiKey config');

Try / catch

try { ... } catch (e) { if ((e as Error).message.includes('GoogleGenAI not initialized')) { /* reconstruct adapter with apiKey */ } throw e; }

Prevention

When it happens

Trigger: Internal state mismatch: determineVertexProvider returned 'gemini' but config.apiKey was absent so the GoogleGenAI client was never initialized — typically from a misconfigured or programmatically mutated config object.

Common situations: Constructing the adapter without apiKey then calling gemini streaming that expects the GenAI SDK path; partial config objects; config mutation after construction.

Related errors


AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27). Data as JSON: /api/errors/7f4f96dbb00fc4c5. Report an issue: GitHub.