stablyai/orca · error
[verify-skills-cli-runtime] missing entry ${entry}
Error message
[verify-skills-cli-runtime] missing entry ${entry} What it means
collectRuntimeClosure() computes the entry as resolve(outDir, 'cli', 'index.js') and throws if it doesn't existSync. The runtime closure walk has to start somewhere; if the expected cli/index.js entry isn't present, the build either didn't run, emitted a different entry path, or outDir is wrong.
Source
Thrown at config/scripts/verify-skills-cli-runtime.cjs:115
}
if (isOutsideRoot(artifactRoot, resolved)) {
throw new Error(
`[verify-skills-cli-runtime] import "${specifier}" from ` +
`${artifactPath(outDir, importer)} resolved outside ${artifactRoot}: ${resolved}`
)
}
return resolved
}
function collectRuntimeClosure(outDir, artifactRoot = dirname(outDir)) {
outDir = realpathSync(outDir)
artifactRoot = realpathSync(artifactRoot)
if (isOutsideRoot(artifactRoot, outDir)) {
throw new Error(`[verify-skills-cli-runtime] ${outDir} is outside ${artifactRoot}`)
}
const entry = resolve(outDir, 'cli', 'index.js')
if (!existsSync(entry)) {
throw new Error(`[verify-skills-cli-runtime] missing entry ${entry}`)
}
const pending = [entry]
const visited = new Set()
while (pending.length > 0) {
const file = pending.pop()
if (!file || visited.has(file)) {
continue
}
visited.add(file)
const source = readFileSync(file, 'utf8')
for (const specifier of runtimeImportSpecifiers(source, file)) {
const resolved = resolveRuntimeImport(outDir, artifactRoot, file, specifier)
if (resolved && !isOutsideRoot(artifactRoot, resolved) && /\.(?:c|m)?js$/.test(resolved)) {
pending.push(resolved)
}
}
}View on GitHub (pinned to 1136503c6a)
Solutions
- Confirm outDir/cli/index.js actually exists (ls the path from the error message).
- If the build emits a different entry name, update the verifier's entry path or fix the build to emit cli/index.js.
- Ensure the build step ran successfully before the verify step.
- Re-check outDir passed to collectRuntimeClosure matches the real build output directory.
Defensive patterns
Strategy: validation
Validate before calling
// Before the closure walk, confirm the entry exists:
import { existsSync } from 'node:fs'
import path from 'node:path'
const entry = path.join(outDir, 'cli', 'index.js')
if (!existsSync(entry)) {
throw new Error(`Build did not produce expected entry ${entry}; run the build first`)
} Prevention
- Order the workflow so the CLI build step completes before the runtime verifier runs.
- If the build emits a different entry name, update the verifier or fix the build config to emit cli/index.js.
- Fail the build step on non-zero exit so the verifier never runs against partial output.
When it happens
Trigger: The CLI build wasn't run before verification; the build emits index.cjs or dist/cli/index.js instead of cli/index.js; outDir points at the wrong directory; the build failed silently and produced partial output.
Common situations: Build step skipped or failing in CI; bundler output config changed the entry filename; monorepo where the package's dist is at a different relative path; verification step running before the build step.
Related errors
- [verify-skills-cli-runtime] ${outDir} is outside ${artifactR
- [verify-skills-cli-runtime] missing runtime import "${specif
- [verify-skills-cli-runtime] import "${specifier}" from ${art
- Missing ${entryPath}; run pnpm exec electron-vite build firs
- Built watchdog does not implement the requested ${options.bo
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/2aaca70714037eb5.
Report an issue: GitHub.