{"record":{"id":"782036e09cd0d79b","repo":"NousResearch/hermes-agent","slug":"stage-native-deps-get-windows-has-no-win32-prebu","errorCode":null,"errorMessage":"[stage-native-deps] get-windows has no win32 prebuilt binding under lib/binding. Recover from the checkout root with:\n  npm install-scripts approve get-windows\n  npm rebuild get-windows","messagePattern":"\\[stage-native-deps\\] get-windows has no win32 prebuilt binding under lib/binding\\. Recover from the checkout root with:\n  npm install-scripts approve get-windows\n  npm rebuild get-windows","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"apps/desktop/scripts/stage-native-deps.mjs","lineNumber":501,"sourceCode":"            (dir) =>\n              dir.includes(`-${platform}-`) &&\n              existsSync(join(bindingRoot, dir, 'node-get-windows.node'))\n          )\n        : []\n    let bindingDirs = scanBindingDirs()\n    if (bindingDirs.length === 0 && typeof rebuild === 'function') {\n      // A plain `npm install` won't re-run an install script for a package\n      // that is already on disk, so every checkout that installed while\n      // get-windows was missing from allowScripts stays bricked even after\n      // the allowlist is fixed. `npm rebuild` re-runs it.\n      console.log(\n        '[stage-native-deps] get-windows has no win32 binding; running `npm rebuild get-windows`...'\n      )\n      rebuild()\n      bindingDirs = scanBindingDirs()\n    }\n    if (bindingDirs.length === 0) {\n      throw new Error(\n        '[stage-native-deps] get-windows has no win32 prebuilt binding under lib/binding. ' +\n          'Recover from the checkout root with:\\n' +\n          '  npm install-scripts approve get-windows\\n' +\n          '  npm rebuild get-windows'\n      )\n    }\n    for (const dir of bindingDirs) {\n      const dest = join(destRoot, 'lib', 'binding', dir)\n      mkdirSync(dest, { recursive: true })\n      const destFile = join(dest, 'node-get-windows.node')\n      cpSync(join(bindingRoot, dir, 'node-get-windows.node'), destFile)\n      const classified = classifyNativeBinary(destFile)\n      if (classified !== platform) {\n        throw new Error(\n          `[stage-native-deps] get-windows binding ${dir}/node-get-windows.node: ` +\n            `expected ${platform}, got ${classified ?? 'unknown'}. ` +\n            'Refusing to stage a binary compiled for the wrong platform.'\n        )","sourceCodeStart":483,"sourceCodeEnd":519,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/apps/desktop/scripts/stage-native-deps.mjs#L483-L519","documentation":"Error \"[stage-native-deps] get-windows has no win32 prebuilt binding under lib/binding. Recover from the checkout root with:\n  npm install-scripts approve get-windows\n  npm rebuild get-windows\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at apps/desktop/scripts/stage-native-deps.mjs:501 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["From the checkout root run `npm install-scripts approve get-windows` then `npm rebuild get-windows`.","Verify the package's postinstall produced lib/binding for win32 before staging."],"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"}