fix(release): repair v3.8.50 base-red tail after latest root lift (#10964)

Merged after conflict triage: the six base-red repair files (vi.json, opencode.ts JSDoc, context-manager test, the three webhook dispatcher tests, the uncloseai orphan-test rename) were already drained on the tip by today's #11130/#11157/#11160/#11113 — those hunks resolved to the tip shape. What lands is the production-fix set: GLM transport-aware Anthropic headers, Claude Code-compatible model-listing rejection, combo live-test single-probe, zero-cost Auto-Combo interval normalization, recovery-clearing union handling, LLMLingua real-path compare, macOS netstat PID discovery, AI Horde R2 strict public-host validation. Sweep of every touched test file: 243/243 green; typecheck + file-size clean. (guide-settings-route's 4 reds reproduce on the pure tip — pre-existing drift from #11079, not from here.) Thank you @backryun!
This commit is contained in:
backryun
2026-08-23 11:09:16 +09:00
committed by GitHub
parent 2dd20331a7
commit 79c5bdf681
35 changed files with 328 additions and 120 deletions

View File

@@ -47,7 +47,7 @@
* fail-open, so this never throws into the install.
*/
import { cpSync, existsSync, mkdirSync, readFileSync } from "node:fs";
import { cpSync, existsSync, mkdirSync, readFileSync, realpathSync } from "node:fs";
import { createRequire } from "node:module";
import { dirname, join, sep } from "node:path";
@@ -119,7 +119,9 @@ function isPackageIntact(targetNodeModulesDir, name) {
const resolved = probe.resolve(name);
// A resolution that walked past the target into an ancestor tree does not
// prove the target copy is usable.
return resolved.startsWith(targetNodeModulesDir + sep);
const realTarget = realpathSync(targetNodeModulesDir);
const realResolved = realpathSync(resolved);
return realResolved.startsWith(realTarget + sep);
} catch {
return false;
}