NousResearch/hermes-agent · error · Error

[stage-native-deps] get-windows is missing its macOS helper

Error message

[stage-native-deps] get-windows is missing its macOS helper binary (main)

What it means

Error "[stage-native-deps] get-windows is missing its macOS helper binary (main)" thrown in NousResearch/hermes-agent.

Source

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

  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')) {
      cpSync(join(srcRoot, 'lib', entry.name), join(destRoot, 'lib', entry.name))
    }
  }

  writeFileSync(join(destRoot, 'lib', 'windows.js'), STAGED_WINDOWS_JS)

  if (platform === 'darwin') {
    const helper = join(srcRoot, 'main')
    if (!existsSync(helper)) {
      throw new Error('[stage-native-deps] get-windows is missing its macOS helper binary (main)')
    }
    cpSync(helper, join(destRoot, 'main'))
    makeExecutable(join(destRoot, 'main'))
  }

  if (platform === 'win32') {
    // The published tarball bundles a darwin binding dir on EVERY platform
    // (its `files` includes lib/), so a Windows host's lib/binding holds both
    // that and the win32 dir node-pre-gyp downloaded. Stage only dirs naming
    // the target platform; the classify gate below still catches a dir that
    // claims win32 but holds a foreign binary.
    const bindingRoot = join(srcRoot, 'lib', 'binding')
    const scanBindingDirs = () =>
      existsSync(bindingRoot)
        ? readdirSync(bindingRoot).filter(
            (dir) =>
              dir.includes(`-${platform}-`) &&
              existsSync(join(bindingRoot, dir, 'node-get-windows.node'))

View on GitHub (pinned to c896c09c42)

Solutions

  1. Reinstall get-windows so its macOS helper binary is present.
  2. Approve its install scripts and rebuild the package from the checkout root.

When it happens

Trigger: Thrown at apps/desktop/scripts/stage-native-deps.mjs:467 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/d662646714c8da4b. Report an issue: GitHub.