can1357/oh-my-pi · error · Error

Cannot find package fastembed@${FASTEMBED_SPEC}; resolved ${

Error message

Cannot find package fastembed@${FASTEMBED_SPEC}; resolved ${String(manifest.version)}

What it means

loadFastembedOnce resolves the locally installed fastembed package and requires that its installed version exactly equals the pinned spec from mnemopi's peerDependencies (FASTEMBED_SPEC). If the resolved package.json reports any other version, it throws this error; only recoverable resolve/load errors fall back to the on-demand runtime install — an explicit version mismatch is treated as fatal.

Source

Thrown at packages/mnemopi/src/core/fastembed-runtime.ts:126

	if (!alreadyPresent) env.PATH = currentPath ? `${dllDir}${path.delimiter}${currentPath}` : dllDir;
	return { ortEntry, ortPackageDir, dllDir };
}

export function loadFastembed(): Promise<FastembedModule> {
	fastembedLoad ??= loadFastembedOnce().catch(error => {
		fastembedLoad = null;
		throw error;
	});
	return fastembedLoad;
}

async function loadFastembedOnce(): Promise<FastembedModule> {
	try {
		const requireDirect = createRequire(import.meta.url);
		const manifestPath = requireDirect.resolve("fastembed/package.json");
		const manifest: { version?: unknown } = requireDirect(manifestPath);
		if (manifest.version !== FASTEMBED_SPEC) {
			throw new Error(`Cannot find package fastembed@${FASTEMBED_SPEC}; resolved ${String(manifest.version)}`);
		}
		return await loadResolvedFastembed(requireDirect.resolve("fastembed"), path.dirname(manifestPath));
	} catch (error) {
		if (!isRecoverableFastembedLoadError(error)) throw error;
		logger.debug("mnemopi: fastembed not loadable, using on-demand runtime install", {
			error: String(error),
		});
		return loadFromRuntimeInstall();
	}
}

async function loadResolvedFastembed(entry: string, fastembedPackageDir: string): Promise<FastembedModule> {
	const requireFastembed = createRequire(entry);
	if (process.platform === "win32") {
		const { ortEntry } = await prepareWindowsFastembedRuntime({ fastembedEntry: entry, fastembedPackageDir });
		requireFastembed(ortEntry);
	}
	const loaded: FastembedModule = requireFastembed(entry);

View on GitHub (pinned to 9690622007)

Solutions

  1. Install the exact pinned version: bun add fastembed@<FASTEMBED_SPEC from mnemopi peerDependencies>
  2. Remove any hoisted/stray fastembed copy (e.g. rm -rf node_modules/fastembed; reinstall) so the pinned one resolves
  3. Update the lockfile (bun install) after upgrading mnemopi so the peer pin is satisfied
  4. Check the resolved version with node -p "require('fastembed/package.json').version" and align it with the pin

Example fix

// before
"dependencies": { "fastembed": "^1.0.0" }
// after (match mnemopi's exact peer pin)
"dependencies": { "fastembed": "1.0.0" }
Defensive patterns

Strategy: validation

Validate before calling

import { createRequire } from "node:module";
import pkg from "@oh-my-pi/mnemopi/package.json" with { type: "json" };
const requireDirect = createRequire(import.meta.url);
try {
  const v = requireDirect("fastembed/package.json").version;
  if (v !== pkg.peerDependencies.fastembed) {
    throw new Error(`fastembed ${v} installed; mnemopi pins ${pkg.peerDependencies.fastembed}`);
  }
} catch (e) { /* reinstall before starting the app */ }

Type guard

function hasMatchingFastembed(v: unknown, spec: string): v is string {
  return typeof v === "string" && v === spec;
}

Try / catch

try {
  await loadFastembed();
} catch (err) {
  if (String(err).includes("Cannot find package fastembed@")) {
    logger.error("fastembed version mismatch; reinstall with the exact pinned version");
  } else throw err;
}

Prevention

When it happens

Trigger: A fastembed package is resolvable from mnemopi (requireDirect.resolve('fastembed/package.json') succeeds) but manifest.version !== FASTEMBED_SPEC — i.e. a hoisted or workspace fastembed at a different version than the exact peer pin, or a stale lockfile after mnemopi bumped its fastembed pin.

Common situations: Upgrading mnemopi (new FASTEMBED_SPEC) while the app keeps an older hoisted fastembed; a monorepo where another package's fastembed version wins resolution; manually installing fastembed@latest instead of the exact pinned version.

Related errors


AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31). Data as JSON: /api/errors/c47ce9a499a594ba. Report an issue: GitHub.