garrytan/gstack · error · Error
Failed to fetch ${url}: ${res.status} ${res.statusText}
Error message
Failed to fetch ${url}: ${res.status} ${res.statusText} What it means
Error "Failed to fetch ${url}: ${res.status} ${res.statusText}" thrown in garrytan/gstack.
Source
Thrown at browse/src/security-classifier.ts:141
'off';
const transcript = haikuAvailableCache === null ? 'off' :
haikuAvailableCache ? 'ok' : 'degraded';
const status: ClassifierStatus = { testsavant, transcript };
if (isDebertaEnabled()) {
status.deberta =
debertaState === 'loaded' ? 'ok' :
debertaState === 'failed' ? 'degraded' :
'off';
}
return status;
}
// ─── Model download + staging ────────────────────────────────
export async function downloadFile(url: string, dest: string): Promise<void> {
const res = await fetch(url);
if (!res.ok || !res.body) {
throw new Error(`Failed to fetch ${url}: ${res.status} ${res.statusText}`);
}
const tmp = `${dest}.tmp.${process.pid}`;
const writer = fs.createWriteStream(tmp);
// @ts-ignore — Node stream compat
const reader = res.body.getReader();
try {
let done = false;
while (!done) {
const chunk = await reader.read();
if (chunk.done) { done = true; break; }
writer.write(chunk.value);
}
await new Promise<void>((resolve, reject) => {
writer.end((err?: Error | null) => (err ? reject(err) : resolve()));
});
fs.renameSync(tmp, dest);
} catch (err) {
// Drop the half-written tmp so we don't ship a truncated model file toView on GitHub (pinned to 94993f7401)
When it happens
Trigger: Thrown at browse/src/security-classifier.ts:141 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of garrytan/gstack@94993f7401 (2026-08-12).
Data as JSON: /api/errors/ac96384b2a5545fc.
Report an issue: GitHub.