continuedev/continue · error · Error
Block ${packageIdentifierToShorthandSlug(id)} not found
Error message
Block ${packageIdentifierToShorthandSlug(id)} not found What it means
resolveBlock fetched content for the block identifier from the registry and got undefined, meaning no content exists for that id. The shorthand slug (owner/package or file path) is included in the message.
Source
Thrown at packages/config-yaml/src/load/unroll.ts:728
});
}
// For other block types, we can directly inject the source file
return blocks.map((block) => ({
...block,
sourceFile: source,
}));
}
export async function resolveBlock(
id: PackageIdentifier,
inputs: Record<string, string | undefined> | undefined,
registry: Registry,
): Promise<AssistantUnrolled> {
// Retrieve block raw yaml
const rawYaml = await registry.getContent(id);
if (rawYaml === undefined) {
throw new Error(`Block ${packageIdentifierToShorthandSlug(id)} not found`);
}
// Convert any input secrets to FQSNs (they get FQSNs as if they are in the block. This is so that we know when to use models add-on / free trial secrets)
const renderedInputs = inputsToFQSNs(inputs || {}, id);
// Render template variables
const templatedYaml = renderTemplateData(rawYaml, {
inputs: renderedInputs,
secrets: extractFQSNMap(rawYaml, [id]),
});
// Check for unresolved input template variables (missing required inputs)
const unresolvedInputs = getTemplateVariables(templatedYaml).filter((v) =>
v.startsWith("inputs."),
);
if (unresolvedInputs.length > 0) {
const missingInputNames = unresolvedInputs.map((v) =>
v.replace("inputs.", ""),View on GitHub (pinned to 5522c6f44c)
Solutions
- Verify the block exists: check the slug spelling and the registry contents
- If it's a file URI, confirm the file exists at the resolved path
- Ensure you're pointed at the correct registry/environment
Example fix
// before blocks: - some-block: my-owner/typo-block # after blocks: - some-block: my-owner/real-block
Defensive patterns
Strategy: validation
Validate before calling
const content = await registry.getContent(id);
if (content === undefined) throw new Error(`Unknown block ${encodePackageIdentifier(id)}`); Try / catch
try { await resolveBlock(id, inputs, registry); } catch (e) { if (e.message.includes('not found')) { /* prompt user to fix slug/path */ } } Prevention
- Verify slugs against the registry before referencing
- For file URIs, check existence with fs.existsSync first
When it happens
Trigger: resolveBlock(id, ...) where registry.getContent(id) returns undefined — unknown owner/package slug, or a file URI pointing at a nonexistent file with a registry that returns undefined instead of throwing.
Common situations: Typo in block slug, block deleted/renamed upstream in the registry, wrong registry configured, or a relative file path that doesn't resolve.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- '${modelName}' not found in the Ollama registry!
- FindAndReplaceOldStringNotFound
- Failed to parse block: ${formatZodError(e)}
- Missing required input(s) for block "${blockName}": ${missin
- Slug-based package resolution is not supported
AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27).
Data as JSON: /api/errors/3c8151cbbaa831e7.
Report an issue: GitHub.