garrytan/gstack · error

File too large (>200MB).

Error message

File too large (>200MB).

What it means

Error "File too large (>200MB)." thrown in garrytan/gstack.

Source

Thrown at browse/src/write-commands.ts:1262

            };
            contentType = mimeMap[extLower] || 'application/octet-stream';
          }
        }
        // Clean up temp file if we're going to write elsewhere
        if (outputPath || isBase64) {
          try { fs.unlinkSync(tempPath); } catch { /* ignore */ }
        } else {
          // No explicit output path — rename temp file with inferred extension.
          const ext = contentType.split(';')[0].includes('/')
            ? mimeToExt(contentType.split(';')[0].trim())
            : '.bin';
          const finalPath = path.join(TEMP_DIR, `browse-download-${Date.now()}${ext}`);
          fs.renameSync(tempPath, finalPath);
          const sizeKB = Math.round(buffer.length / 1024);
          return `Downloaded: ${finalPath} (${sizeKB}KB, ${contentType.split(';')[0].trim()})${suggested ? ` [${suggested}]` : ''}`;
        }
        if (buffer.length > 200 * 1024 * 1024) {
          throw new Error('File too large (>200MB).');
        }
      } else {
        // Strategy 1: Direct URL via page.request.fetch().
        // Gate the URL through the same validator `goto` uses. Without
        // this check, download + scrape bypass the navigation
        // blocklist and a caller with write scope can read
        // http://169.254.169.254/latest/meta-data/ (AWS IMDSv1), the
        // GCP/Azure metadata equivalents, or any internal IPv4/IPv6
        // the server happens to route to. The response body is then
        // returned to the caller (base64) or written to disk where
        // GET /file serves it back.
        await validateNavigationUrl(url);
        const response = await page.request.fetch(url, { timeout: 30000 });
        const status = response.status();
        if (status >= 400) {
          throw new Error(`Download failed: HTTP ${status} ${response.statusText()}`);
        }
        contentType = response.headers()['content-type'] || 'application/octet-stream';

View on GitHub (pinned to 94993f7401)

When it happens

Trigger: Thrown at browse/src/write-commands.ts:1262 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/c5107fcb2d08b485. Report an issue: GitHub.