{"record":{"id":"76ab7c43ba57d940","repo":"garrytan/gstack","slug":"usage-download-url-ref-path-base64-na","errorCode":null,"errorMessage":"Usage: download <url|@ref> [path] [--base64] [--navigate]","messagePattern":"Usage: download <url\\|@ref> \\[path\\] \\[--base64\\] \\[--navigate\\]","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"browse/src/write-commands.ts","lineNumber":1146,"sourceCode":"      // Guard against Anthropic vision API >2000px brick (#1214). Only\n      // applies to fullPage captures; scrollTo viewport-bound shots are\n      // already capped by the viewport size.\n      if (!scrollTo) await guardScreenshotPath(outputPath);\n\n      // Restore viewport\n      if (viewportWidth && originalViewport) {\n        await page.setViewportSize(originalViewport);\n      }\n\n      const parts = ['Screenshot saved'];\n      if (doCleanup) parts.push('(cleaned)');\n      if (scrollTo) parts.push(`(scrolled to: ${scrollTo})`);\n      parts.push(`: ${outputPath}`);\n      return parts.join(' ');\n    }\n\n    case 'download': {\n      if (args.length === 0) throw new Error('Usage: download <url|@ref> [path] [--base64] [--navigate]');\n      const isBase64 = args.includes('--base64');\n      const useNavigate = args.includes('--navigate');\n      const filteredArgs = args.filter(a => a !== '--base64' && a !== '--navigate');\n      let url = filteredArgs[0];\n      const outputPath = filteredArgs[1];\n\n      // Resolve @ref to element src\n      if (url.startsWith('@')) {\n        const resolved = await bm.resolveRef(url);\n        if (!('locator' in resolved)) throw new Error(`Expected @ref, got CSS selector: ${url}`);\n        const locator = resolved.locator;\n        const tagName = await locator.evaluate(el => el.tagName.toLowerCase());\n        if (tagName === 'img') {\n          url = await locator.evaluate(el => {\n            const img = el as HTMLImageElement;\n            return img.currentSrc || img.src || img.getAttribute('data-src') || '';\n          });\n        } else if (tagName === 'video') {","sourceCodeStart":1128,"sourceCodeEnd":1164,"githubUrl":"https://github.com/garrytan/gstack/blob/94993f74012782fd94416dd44b8314f6363a13a4/browse/src/write-commands.ts#L1128-L1164","documentation":"Error \"Usage: download <url|@ref> [path] [--base64] [--navigate]\" thrown in garrytan/gstack.","triggerScenarios":"Thrown at browse/src/write-commands.ts:1146 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"94993f74012782fd94416dd44b8314f6363a13a4","analyzedAt":"2026-08-12T04:06:23.140Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}