jackwener/OpenCLI · error · CommandExecutionError

Barchart greeks request failed: ${data.message || 'unknown e

Error message

Barchart greeks request failed: ${data.message || 'unknown error'}

What it means

When the in-browser evaluation itself threw an exception, the wrapper catches it and returns { ok:false, reason:'exception', message }, and the CLI re-raises it as this CommandExecutionError. The message carries the underlying exception text (or 'unknown error'), so it reflects whatever failed inside the browser context — navigation failure, blocked fetch, script error, etc.

Source

Thrown at clis/barchart/greeks.js:166

                openInterest: r.openInterest,
                expiration: r.expirationDate,
              };
            })
          };
        } catch(e) {
          return { ok: false, reason: 'exception', message: e?.message || String(e) };
        }
      })()
    `));
        if (!data || data.ok !== true) {
            if (data?.reason === 'http') {
                throw new CommandExecutionError(`Barchart greeks request failed: HTTP ${data.status}${data.statusText ? ` ${data.statusText}` : ''}`);
            }
            if (data?.reason === 'malformed') {
                throw new CommandExecutionError(`Barchart greeks returned an unreadable options payload${data.message ? `: ${data.message}` : ''}`);
            }
            if (data?.reason === 'exception') {
                throw new CommandExecutionError(`Barchart greeks request failed: ${data.message || 'unknown error'}`);
            }
            throw new CommandExecutionError(`Failed to fetch Barchart greeks for ${symbol}`);
        }
        if (!Array.isArray(data.rows)) {
            throw new CommandExecutionError('Barchart greeks returned an unreadable options payload');
        }
        if (data.rows.length === 0) {
            throw new EmptyResultError('barchart greeks', `No option greeks were returned for ${symbol}. Confirm the symbol, expiration, and Barchart login state.`);
        }
        return data.rows.map(r => {
            if (!r || typeof r !== 'object' || Array.isArray(r)) {
                throw new CommandExecutionError('Barchart greeks returned a malformed option row');
            }
            const type = String(r.type || '').trim();
            const expirationValue = String(r.expiration || '').trim();
            if (!/^(call|put)$/i.test(type) || r.strike === undefined || r.strike === null || r.strike === '' || !expirationValue) {
                throw new CommandExecutionError('Barchart greeks returned a malformed option row identity');
            }

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Read data.message in the error text to identify the underlying exception, then fix that root cause.
  2. Verify general network connectivity and that barchart.com is reachable.
  3. Ensure the browser/session the CLI drives is running and logged in, then retry.
  4. If the message indicates a script error on Barchart's page, retry later or update the extraction script for the new page structure.

Example fix

// before
const data = await unwrapBrowserResult(await browserEval(script));
// after
let data;
try {
  data = await unwrapBrowserResult(await browserEval(script));
} catch (e) {
  throw new CommandExecutionError(`Barchart greeks request failed: ${e.message}`);
}
Defensive patterns

Strategy: try-catch

Validate before calling

// Check browser context health before evaluation
if (!browser || !browser.isConnected()) {
  await launchBrowser();
}
await page.goto('https://www.barchart.com', { waitUntil: 'domcontentloaded', timeout: 30000 });

Type guard

function isExceptionFailure(data) {
  return data !== null && typeof data === 'object' && data.ok === false && data.reason === 'exception';
}

Try / catch

try {
  const rows = await greeks({ symbol });
} catch (e) {
  if (e.message.startsWith('Barchart greeks request failed:') && !e.message.includes('HTTP')) {
    console.error(`Browser evaluation threw: ${e.message}`);
    await restartBrowser();
    return greeks({ symbol });
  }
  throw e;
}

Prevention

When it happens

Trigger: The evaluation script threw: fetch() rejected (network down, DNS failure, TLS error), page navigation failed, the target element was missing and code dereferenced undefined, or any other uncaught error inside the browser sandbox.

Common situations: No internet connection or DNS problems; Barchart blocking the automated context; headless browser not started or crashed; timeout on slow networks; a Barchart page change causing a null reference inside the extraction script.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/7f588cda2fa0d107. Report an issue: GitHub.