continuedev/continue · error · Error

No workspace directories found. Make sure you've opened a fo

Error message

No workspace directories found. Make sure you've opened a folder in your IDE.

What it means

The model string could not be mapped to any known Vertex publisher (gemini, anthropic, mistral) in the non-streaming chat path, so no endpoint URL exists to call. determineVertexProvider returned a value with no matching switch case.

Source

Thrown at core/config/workspace/workspaceBlocks.ts:164

    const suffix = counter === 0 ? "" : `-${counter}`;
    fileUri = joinPathsToUri(
      baseDirUri,
      `${baseFilename}${suffix}.${fileExtension}`,
    );
    counter++;
  } while (await fileExists(fileUri));

  return fileUri;
}

export async function createNewWorkspaceBlockFile(
  ide: IDE,
  blockType: BlockType,
  baseFilename?: string,
): Promise<void> {
  const workspaceDirs = await ide.getWorkspaceDirs();
  if (workspaceDirs.length === 0) {
    throw new Error(
      "No workspace directories found. Make sure you've opened a folder in your IDE.",
    );
  }

  const baseDirUri = joinPathsToUri(workspaceDirs[0], `.continue/${blockType}`);

  const fileUri = await findAvailableFilename(
    baseDirUri,
    blockType,
    ide.fileExists.bind(ide),
    undefined,
    false,
    baseFilename,
  );

  const fileContent = getFileContent(blockType);

  await ide.writeFile(fileUri, fileContent);

View on GitHub (pinned to 5522c6f44c)

Solutions

  1. Use a supported model id with the naming the adapter expects (gemini-*, claude-*@*, mistral/codestral)
  2. Update the openai-adapters package — newer versions add provider mappings
  3. Check determineVertexProvider's accepted prefixes and match them exactly

Example fix

// before
await api.chatCompletionNonStream({ model: 'gpt-4o', messages }, signal);

// after
await api.chatCompletionNonStream({ model: 'gemini-1.5-pro', messages }, signal);
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED = [/^gemini/, /^claude/, /^mistral/, /codestral/];
const isSupportedModel = (m: string) => SUPPORTED.some(r => r.test(m));
if (!isSupportedModel(body.model)) throw new Error(`model ${body.model} not routable on Vertex adapter`);

Type guard

const isVertexModel = (m: string): boolean => /^(gemini|claude|mistral|codestral)/.test(m);

Try / catch

try { ... } catch (e) { if ((e as Error).message.startsWith('Unsupported model')) { /* fix model id or update package */ } throw e; }

Prevention

When it happens

Trigger: body.model is misspelled, lacks the expected prefix/extension (e.g. missing @version or publish prefix), or uses a model family the adapter doesn't route (e.g. 'llama3-' or 'jamba-').

Common situations: Copying model names from other providers (OpenAI 'gpt-4o', Anthropic direct 'claude-3-5') into a Vertex adapter; typos; new Vertex model not yet supported by the installed adapter version.

Related errors


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