NousResearch/hermes-agent · error · Error

[stage-native-deps] get-windows is ${srcVersion} but the sta

Error message

[stage-native-deps] get-windows is ${srcVersion} but the staged lib/windows.js rewrite was verified against ${GET_WINDOWS_VERSION}. Re-verify the rewrite (STAGED_WINDOWS_JS) against the new version, then update GET_WINDOWS_VERSION.

What it means

Error "[stage-native-deps] get-windows is ${srcVersion} but the staged lib/windows.js rewrite was verified against ${GET_WINDOWS_VERSION}. Re-verify the rewrite (STAGED_WINDOWS_JS) against the new version, then update GET_WINDOWS_VERSION." thrown in NousResearch/hermes-agent.

Source

Thrown at apps/desktop/scripts/stage-native-deps.mjs:439

 * Per-platform native payload: macOS ships the `main` Swift helper binary
 * (universal, present in every published tarball), Windows the node-pre-gyp
 * prebuilt under lib/binding (downloaded by the package's install script on
 * a Windows host — cross-platform packs already can't happen, see
 * stageNodePtyInto), Linux nothing (it shells out to xprop at runtime).
 */
const GET_WINDOWS_VERSION = '9.3.0'

export function stageGetWindowsInto(
  srcRoot,
  destRoot,
  { platform = process.platform, rebuild } = {}
) {
  // The STAGED_WINDOWS_JS rewrite mirrors this exact version's export surface.
  // A version bump must fail the build here until the rewrite is re-verified —
  // otherwise it ships stale and fails soft as a generic "unavailable".
  const srcVersion = JSON.parse(readFileSync(join(srcRoot, 'package.json'), 'utf8')).version
  if (srcVersion !== GET_WINDOWS_VERSION) {
    throw new Error(
      `[stage-native-deps] get-windows is ${srcVersion} but the staged lib/windows.js ` +
        `rewrite was verified against ${GET_WINDOWS_VERSION}. Re-verify the rewrite ` +
        `(STAGED_WINDOWS_JS) against the new version, then update GET_WINDOWS_VERSION.`
    )
  }

  rmSync(destRoot, { recursive: true, force: true })
  mkdirSync(destRoot, { recursive: true })

  cpSync(join(srcRoot, 'package.json'), join(destRoot, 'package.json'))
  cpSync(join(srcRoot, 'index.js'), join(destRoot, 'index.js'))

  // lib/*.js only — NOT copyGlobByExt, which recurses into lib/binding and
  // stages empty dirs for every prebuilt slot (including the darwin one the
  // tarball bundles on all platforms). Bindings are staged explicitly below.
  mkdirSync(join(destRoot, 'lib'), { recursive: true })
  for (const entry of readdirSync(join(srcRoot, 'lib'), { withFileTypes: true })) {
    if (entry.isFile() && entry.name.endsWith('.js')) {

View on GitHub (pinned to c896c09c42)

Solutions

  1. Re-verify the staged lib/windows.js rewrite against the new get-windows version and update GET_WINDOWS_VERSION.
  2. Pin get-windows back to the verified version if the rewrite has not been reviewed yet.

When it happens

Trigger: Thrown at apps/desktop/scripts/stage-native-deps.mjs:439 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of NousResearch/hermes-agent@c896c09c42 (2026-08-14). Data as JSON: /api/errors/d1119ba4da4bf696. Report an issue: GitHub.