{"record":{"id":"d662646714c8da4b","repo":"NousResearch/hermes-agent","slug":"stage-native-deps-get-windows-is-missing-its-mac","errorCode":null,"errorMessage":"[stage-native-deps] get-windows is missing its macOS helper binary (main)","messagePattern":"\\[stage-native-deps\\] get-windows is missing its macOS helper binary \\(main\\)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"apps/desktop/scripts/stage-native-deps.mjs","lineNumber":467,"sourceCode":"  cpSync(join(srcRoot, 'package.json'), join(destRoot, 'package.json'))\n  cpSync(join(srcRoot, 'index.js'), join(destRoot, 'index.js'))\n\n  // lib/*.js only — NOT copyGlobByExt, which recurses into lib/binding and\n  // stages empty dirs for every prebuilt slot (including the darwin one the\n  // tarball bundles on all platforms). Bindings are staged explicitly below.\n  mkdirSync(join(destRoot, 'lib'), { recursive: true })\n  for (const entry of readdirSync(join(srcRoot, 'lib'), { withFileTypes: true })) {\n    if (entry.isFile() && entry.name.endsWith('.js')) {\n      cpSync(join(srcRoot, 'lib', entry.name), join(destRoot, 'lib', entry.name))\n    }\n  }\n\n  writeFileSync(join(destRoot, 'lib', 'windows.js'), STAGED_WINDOWS_JS)\n\n  if (platform === 'darwin') {\n    const helper = join(srcRoot, 'main')\n    if (!existsSync(helper)) {\n      throw new Error('[stage-native-deps] get-windows is missing its macOS helper binary (main)')\n    }\n    cpSync(helper, join(destRoot, 'main'))\n    makeExecutable(join(destRoot, 'main'))\n  }\n\n  if (platform === 'win32') {\n    // The published tarball bundles a darwin binding dir on EVERY platform\n    // (its `files` includes lib/), so a Windows host's lib/binding holds both\n    // that and the win32 dir node-pre-gyp downloaded. Stage only dirs naming\n    // the target platform; the classify gate below still catches a dir that\n    // claims win32 but holds a foreign binary.\n    const bindingRoot = join(srcRoot, 'lib', 'binding')\n    const scanBindingDirs = () =>\n      existsSync(bindingRoot)\n        ? readdirSync(bindingRoot).filter(\n            (dir) =>\n              dir.includes(`-${platform}-`) &&\n              existsSync(join(bindingRoot, dir, 'node-get-windows.node'))","sourceCodeStart":449,"sourceCodeEnd":485,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/apps/desktop/scripts/stage-native-deps.mjs#L449-L485","documentation":"Error \"[stage-native-deps] get-windows is missing its macOS helper binary (main)\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at apps/desktop/scripts/stage-native-deps.mjs:467 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Reinstall get-windows so its macOS helper binary is present.","Approve its install scripts and rebuild the package from the checkout root."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}